Materi Kuliah Algoritma dan Pemrograman I

MATERI KULIAH

  

ALGORITMA DAN PEMROGRAMAN I (2 SKS)

  JURUSAN TEKNIK INFORMATIKA UNIKOM

PERTEMUAN 1

  PENGANTAR ALGORITMA Algoritma dan Pemrograman I Teknik Informatika

Sistem Komputer

  • Sebuah sistem komputer terdiri dari

  Hardware (perangkat keras) , Software (perangkat lunak) dan Brainware, sedangkan Software dapat dikelompokkan menjadi Operating System Software, Programming Language Software dan Application Program Software.

  Bagan Sistem Komputer

Cara mendeskripsikan masalah dengan komputer :

  • menjabarkan masalah
  • merinci langkah untuk menyelesaikan masalah
  • membuat sarana interaksi manusia-

  komputer

  

Tranformasi masalah menjadi program

komputer diperlukan:

  • bentuk urutan masalah
  • bahasa yang dipakai
  • konsep mesin computer
algoritma

Program

komputer

solusi masalah

Apakah Algoritma itu?

  • Algorism algorithm
  • nama penulis buku Arab yaitu Abu Ja‟far Muhammad ibnu Musa Al-Khuwarizmi
  • Algoritma adalah:
    • – penyusunaan aspek proses logika dari suatu pemecahan masalah tanpa melihat karakteristik bahasa pemrograman yang akan digunakan
    • – urutan notasi logika yang merupakan hasil analisis dan rancangan sistematik dari strategi pemecahan masalah, untuk menggambarkan urutan langkah kerja yang jika dikerjakan akan membawa ke tujuannya.
    • – urutan logika langkah kerja untuk menyelesaikan suatu masalah.
    Notasi Algoritma untaian kalimat deskriptif

  • Notasi I :

  diagram alir (flow chart)

  • Notasi II :

  pseudo-code

  • Notasi III :
    •  Contoh masalah : menghitung luas

      persegipanjang.

  Notasi I : Algoritma Luas_Persegipanjang

  Menghitung luas persegipanjang

dengan memasukkan nilai lebar dan

panjang persegipanjang

  Deklarasi luas,panjang,lebar : bil. bulat Deskripsi

  1. Masukkan nilai lebar dan panjang

  

2. Hitung luas sama dengan panjang kali

lebar

  3. Tampilkan luas

Notasi II :

  

mulai Input

panjang,

lebar

luas  panjang * lebar

Output

luas Notasi III : Algoritma Luas_Persegipanjang { Menghitung luas persegipanjang dengan memasukkan nilai lebar dan panjang persegipanjang}

  Kamus: luas, panjang, lebar : integer

Algoritma:

  input(panjang,lebar) luas  panjang * lebar output(luas)

Definisi Program/Pemrograman

  • Adalah kumpulan instruksi-instruksi tersendiri yang biasanya disebut source code yang dibuat oleh programmer (pembuat program)
  • Program adalah kumpulan instruksi atau perintah yang disusun sedemikian rupa sehingga mempunyai urutan nalar yang tepat untuk menyelesaikan suatu persoalan. (Menurut P. Insap Santosa)
  • Instruksi (statement) yang dimaksud adalah syntax (cara penulisan) sesuai dengan bahasa pemrograman yang digunakan yang mempunyai komponen-komponen : Input, Output, Proses, Percabangan dan Perulangan.
Belajar Memrogram Vs Belajar Bahasa Pemrograman adalah belajar tentang

  • Belajar memprogram

  metodologi pemecahan masalah, kemudian menuangkannya dalam suatu notasi tertentu yang mudah dibaca dan dipahami. berarti belajar

  • Belajar bahasa pemrograman

  memakai suatu bahasa, aturan-aturan tata bahasanya, instruksi-instruksinya, tata cara pengoperasian compiler-nya, dan

memanfaatkan instruksi-instruksi tersebut untuk

membuat program yang ditulis hanya dalam bahasa itu saja.

Belajar Memprogram

  • belajar bahasa pemrograman
  • belajar tentang strategi pemecahan masalah, metodologi dan sistematika pemecahan masalah kemudian

    menuliskannya dalam notasi yang

    disepakati bersama
  • bersifat pemahaman persoalan, analisis dan sintesis
  • titik berat : designer program

  Belajar Bahasa Pemrograman

  • belajar memakai suatu bahasa

  pemrograman, aturan sintaks, tatacara untuk

memanfaatkan instruksi yang spesifik untuk

setiap bahasa coder

  • titik berat :

  Bahasa Pemrograman

  • Adalah alat untuk membuat program
  • Contoh: C, C++, C#, Pascal, Basic, Perl, PHP, ASP, JHP, Java, dll.
  • • Perbedaan: cara memberikan instruksi

  • Persamaan: bertujuan menghasilkan

  output yang sama

Syarat-syarat sebuah Program yang baik:

  1. benar 2. berlaku umum untuk beragam data (valid) 3. mudah dibaca

4. mudah dimodifikasi dan dikembangkan

5. efisiensi dalam penggunaan ruang dan

waktu (kompleksitas rendah)

  

Bahasa pemrogram dibedakan berdasarkan

tujuan dan fungsinya diantaranya :

  

Beberapa Paradigma dalam Pemrograman

  • Prosedural / Terstruktur
  • Paradigma FungsionalParadigma Deklaratif / Logika
  • Paradigma Object-Oriented
  • Paradigma Konkruen  sarana object-oriented

   event- programming.

Paradigma Pemrograman

  • Pemrograman Prosedural – Berdasarkan urutan-urutan, sekuensial
    • – Program adalah suatu rangkaian prosedur untuk memanipulasi data. Prosedur merupakan kumpulan instruksi yang dikerjakan secara berurutan.
    • – Harus mengingat prosedur mana yang sudah dipanggil dan apa yang sudah diubah.

  • Pemrograman Fungsional – Berdasarkan teori fungsi matematika
    • – Fungsi merupakan dasar utama program.

  • Pemrograman Terstruktur – Secara berurutan dan terstrukrtur.
    • – Program dapat dibagai-bagi menjadi prosedur dan fungsi.
    • – Contoh: PASCAL dan C • Pemrograman Modular –

      Pemrograman ini membentuk banyak modul.

    • – Modul merupakan kumpulan dari prosedur dan fungsi yang berdiri sendiri
    • – Sebuah program dapat merupakan kumpulan modul- modul.

  

Paradigma Pemrograman (lanjutan)

  • Pemrograman Berorientasi Obyek
    • – Pemrograman berdasarkan prinsip obyek, dimana obyek memiliki data/variabel/property dan

      method/event/prosedur yang dapat dimanipulasi

    • – Contoh: C++, Object Pascal, dan Java.

  • Pemrograman Berorientasi Fungsi
    • – Pemrograman ini berfokus pada suatu fungsi tertentu

      saja. Sangat tergantung pada tujuan pembuatan

      bahasa pemrograman ini.
    • – Contoh: SQL (Structured Query Language), HTML, XML dan lain-lain.

  • Pemrograman Deklaratif
    • – Pemrograman ini mendeskripsikan suatu masalah dengan pernyataan daripada memecahkan masalah dengan implementasi algoritma.
    • – Contoh: PROLOG
    Pemrograman Prosedural

  • Algoritma berisi urutan langkah-langkah penyelesaian masalah  proses yang prosedural.
  • • Definisi Prosedural menurut Kamus Besar

    Bahasa Indonesia:

  

1. Tahap-tahap kegiatan untuk menyelesaikan

suatu aktivitas.

  

2. Metode langkah demi langkah secara eksak

dalam memecahkan suatu masalah.

  • program dibedakan antara bagian data dengan bagian instruksi.

  instruksi terdiri atas runtutan

  • – Bagian

    (sequence) instruksi yang dilaksanakan

    satu per satu secara berurutan oleh pemroses. Alur pelaksanaan instruksi dapat berubah karena adanya pencabangan kondisional.

  yang disimpan di dalam memori

  • – Data

  dimanipulasi oleh instruksi secara beruntun atau prosedural.

Paradigma Object-Oriented

  • • mengkonstruksi program dari objek-objek dalam

    ruang lingkup masalahnya.
  • sekumpulan objek yang mempunyai sifat yang sama. Dapat menjadi sebuah kelas. Sebuah kelas mempunyai attribute (sekumpulan sifat/ciri).
  • menawarkan konsep modularitas, penggunaan ulang, dan kemudahan modifikasi.

  

Pemrograman Berorientasi Objek (PBO)

  • • Kerangka berpikir PBO berbeda dengan

    pemrograman tradisional.

  :

  • – Pemrograman tradisional

  memisahkan antara data, dan prosedur yang mengolah data tersebut.

  : data dan prosedur ini

  • – PBO dipadukan sebagai sebuah obyek.

PERTEMUAN 2 NOTASI ALGORITMIK

  

Algoritma dan Pemrograman I

Teknik Informatika

UNIKOM

Algoritma disusun berdasarkan 3 bagian, antara lain :

  1. Judul Algoritma

  2. Kamus / Deklarasi

  3. Algoritma / Deskripsi

  Format Syntax Algoritma JUDUL

  Nama Algoritma ALGORITMA

  

Type namatipe : tipe [subrange]

DEKLARASI/

  Type namatipe : array [min..maks] of tipe KAMUS

  Namavar : tipe {Lokal / Umum}

  Namavar : array [ min..maks] of tipe ALGORITMA

  Const nama = nilai Procedure namaproc(daftar_nama_parameter:tipe) TUBUH

  Notasi Assigment ALGORITMA/

  Notasi Kondisional/Pemilihan DESKRIPSI

  Notasi Pengulangan Notasi Pemanggilan Kumpulan algoritma masing-masing Procedure

  URAIAN ataupun Function yang dipanggil dari Tubuh

  ALGORITMA

  

Algoritma untuk menulis Hello world:

Algoritma Hello_world { program untuk mencetak “Hello world”} Kamus:

  {tidak ada} Algoritma:

  Output (“Hello world”) Algoritma untuk menghitung luas segitiga:

LuasSegi3

  {algoritma untuk menghitung luas segitiga dengan diketahui alas dan tingginya}

KAMUS:

  panjang,lebar : integer luas : real

ALGORITMA:

  panjang  10 lebar  5 luas  0.5*alas * tinggi output

  (“Luas Segitiga : “,luas) Translasi Teks Algoritma ke dalam Teks Program Bahasa C++ No Algoritma

  C++

  1 #include <nama_unit>

  Translasi

  Notasi namaconst = nilai

  Kamus

  3 TYPE namatipe : Typedef tipedata namatipe; tipedata

4 namavar : tipedata tipedata namavar;

namavar : namatipe namatipe namavar;

  1 #include <iostream.h>

  Contoh :

  2 CONST #define phi 3.14 phi = 3.14

  3 TYPE Typedef int jumlah; jumlah : integer Translasi Notasi Pengendalian (lanjutan) No Algoritma

  C++

  5 IF (kondisi) THEN If (kondisi) aksi1 aksi1; ELSE else aksi2 aksi2; ENDIF atau If (kondisi) { aksi1; } else { aksi2;

  Translasi Notasi Pengendalian (lanjutan) Algoritma

  C++

  6 DEPEND ON <ekspresi> Switch (ekspresi) <ekspresi 1> : aksi_1 { <ekspresi 2> : aksi_2 case nilai1: : aksi_1; <ekspresi n> : aksi_n break;

  ENDDEPEND case nilai2: atau aksi_2; CASE namavarcase OF break; expkonstan 1 : aksi_1 : expkonstan 2 : aksi_2 case nilain:

  : aksi_n; expkonstan n : aksi_n break;

  ELSE default: aksi_lain; aksi_lain }

  

Translasi Notasi Pengendalian (lanjutan)

Algoritma

  C++ 7 [inisialisasi] WHILE ( kondisi_ulang ) DO daftar_aksi {ada aksi thd var kondisi} ENDWHILE

  [inisialisasi] while ( kondisi_ulang ) { daftar_aksi ; /*ada aksi thd var kondisi*/ }

  8 [inisialisasi] REPEAT daftar_aksi {ada aksi thd var kondisi} UNTIL ( kondisi_stop )

  [inisialisasi] do { daftar_aksi;

  /*ada aksi thd var kondisi*/ }while ( kondisi_ulang ); Translasi Notasi Pengendalian (lanjutan) Algoritma

  9 namavar TRAVERSAL [awal..akhir] daftar_aksi; atau

  FOR var  awal TO/DOWNTO akhir STEP counter DO daftar_aksi

  ENDFOR C++ for(awal;kondisiulang;step) { daftar_aksi;

  }

Contoh Algoritma

  Algoritma Luas_Lingkaran

  {menghitung luas lingkaran diketahui jari-jarinya}

  Kamus:

  Const phi = 3.14 r : integer Luas : real

  Algoritma:

  r  5 Luas  phi * r * r output

  (”Jari –jari = ”,r); output (”Luas lingkaran = ”,Luas);

  Contoh program C++ #include <iostream.h> #define phi 3.14 main () { int r; float Luas; r = 5; Luas = phi * r * r; cout << ”Jari-jari : ” << r; cout << ”\nLuas lingkaran : ” << Luas; }

  

PERTEMUAN 3

  Algoritma dan Pemrograman I Teknik Informatika UNIKOM IDENTIFIER (pengenal)

  • Nama tipe (di bagian deklarasi Type)
  • Tempat penyimpanan suatu data :
    • variable jika isinya dapat berubah dalam kisaran tertentu – konstanta jika isinya selalu tetap.
    • file, penyimpanan data di storage, dan sifatnya menetap.

  • Fungsi dan Prosedur • Judul Algoritma

Penamaan pengenal :

  1. Berupa satu atau beberapa karakter

  • Huruf (A s/d Z, a s/d z)
  • Angka (0 1 2 3 4 5 6 7 8 9 )
  • Garisbawah/underscore (_) diawali huruf dan tidak diawali angka

  2. Menggunakan kata yg berarti dan mudah dibaca dan interpretatif

  3. Tidak boleh ada simbol-simbol khusus kecuali

  underscore

  4. Huruf kecil dan kapital tidak dibedakan dan identifier (operand)

  OPERATOR

  • Operator adalah notasi yang dipakai untuk melaksanakan suatu operasi terhadap data

  Tabel Pengelompokan Operator JENIS OPERATOR NOTASI KEGUNAAN Algoritma Bahasa C++

  

Negasi - - Mengubah data angka menjadi -/+

Aritmatika +

    • / div mod 

  Pengurangan Perkalian Pembagian Pembagian dibulatkan Sisa Pembagian Pemberi nilai

  • / / % = Penjumlahan

  Relasional < > = <= >= <>

  < > == <= >= !=

  Kurang dari Lebih dari Sama dengan Kurang dari atau sama dengan Lebih dari atau sama dengan Tidak sama dengan

  JENIS OPERATOR NOTASI KEGUNAAN Algoritma Bahasa C++ Logika not and or xor

  ! && || tdk ada

  Negasi terhadap nilai Boolean Operasi And thd dua nilai Boolean Operasi Or thd dua nilai Boolean Operasi Xor thd dua nilai Boolean

  Bit shl shr sot and or xor

  << >> ~ & | ^

  Geser satu bit ke kiri Geser satu bit ke kanan Komplemen suatu bit Operasi And terhadap dua bit Operasi Or terhadap dua bit Operasi Xor terhadap dua bit

  Address  & Menunjukkan alamat memori suatu variable yang menyatakan nilai yang ditunjuk oleh pointer

  Tabel Pengelompokan Operator (lanjutan)

  Operator Not Not True : False Not False : True

Operator AND

  Arg 1 Arg 2 Arg 1 AND Arg 2 True True True True False False False True False

  False False False

  1. Tipe Data Dasar

  Integer (bilangan bulat), Real (bilangan pecahan), Boolean (bilangan logik) dan Char (karakter)

  2. Tipe Data Bentukan

  String (kumpulan dari beberapa karakter), Array (larik), Record (rekaman), Pointer (penunjuk alamat), File (Arsip)

  

TABEL PENGELOMPOKAN TIPE DATA DASAR pada ALGORITMA

Tipe Data

  Karakteristik Nama Domain Konstanta Operator yang digunakan Hasil Boolean Boolean True dan false

  True False .T. .F. y n Operasi logic

  (And, Or, Not, Xor, Eq, NEq) Boolean Integer Integer

  (bil. bulat) Semua data yang berisi bilangan bulat

  0,-25,100 Aritmatika (+,-,*,/,Mod, Div) Relasional (=,<>, >=, >=, <, <=)

  Integer Boolean Real Riil (bil. pecahan)

  Semua data yang berisi bilangan pecahan 1, 5.2, 100,

  0.1 Aritmatika (+,-,*,/,^) Relasional (,>,>=,<,<=)

  Riil Boolean

  Tipe Karakteristik Nama Domain Konstanta Operator yang digunakan Hasil

  Char Karakter Semua data berupa karakter “d”, “g”,

  “%”, “!”,”4” Relasional Boolean TABEL PENGELOMPOKAN TIPE DATA DASAR pada ALGORITMA (lanjutan)

PERTEMUAN 4 DAN 5

  

Algoritma dan Pemrograman I

Teknik Informatika

UNIKOM

Pernyataan dan Aksi

  langkah penyelesaian pernyataan (Statement) aksi (action) dieksekusi operasi dikerjakan oleh pemroses

Contoh Pernyataan dan Aksi :

  • Pernyataan pada algoritma : Tulis “Hello, world”
  • menggambarkan aksi menuliskan “Hello, world” ke piranti keluaran (layar).
  • efek dari aksi ini, dilayar akan tertera tulisan Hello, world

Struktur Dasar Algoritma

  1. Runtunan (Sequence)

  2. Pemilihan (Selection)

  

3. Pengulangan (Repetition)

Runtunan (Sequence)

  • Algoritma merupakan runtunan (sequence) satu atau lebih instruksi/pernyataan,
  • setiap pernyataan dikerjakan secara berurutan sesuai dengan urutan penulisannya. Sebuah instruksi dilaksanakan setelah instruksi sebelumnya selesai dilaksanakan.
  • Urutan instruksi menentukan keadaan akhir algoritma

Contoh 1 (Runtunan) :

  Diberikan 2 buah gelas, A dan B; gelas A berisi air berwarna merah, gelas

B berisi air berwarna biru. Pertukarkan isi

kedua gelas itu sedemikian sehingga

gelas A berisi air berwarna biru dan gelas

B berisi air berwarna merah.

  A B A B

ALGORITMA:

  Tuangkan air dari gelas A kedalam gelas B Tuangkan air dari gelas B kedalam gelas A

Caranya :

  Kita siapkan satu buah gelas C untuk menampung sementara air dari gelas A sebelum dipindah ke gelas B

  ilustrasi A C A C B A B A

  ilustrasi C B

  C B A

  Algoritma Tukar_isi

  {Diberikan 2 buah gelas, A dan B; gelas A berisi air

  berwarna merah, gelas B berisi air berwarna biru. Isi

kedua gelas A dan B ditukar sedemikian sehingga

gelas A berisi air berwarna biru dan gelas B berisi air berwarna merah}

  Kamus :

  gelas A,gelas B, gelas C : air

  Algoritma:

  Tuangkan air dari gelas A kedalam gelas C Tuangkan air dari gelas B kedalam gelas A Tuangkan air dari gelas C kedalam gelas B

  Hasil akhir algoritma adalah:

  gelas A berisi air dari gelas B, dan gelas B berisi air dari gelas A semula

  Contoh 2 (runtunan):

Misal nilai A=8, B=5. Tukarkan nilai A dan B, sehingga

menjadi A=5, B=8.

  Algoritma : B  A

A  B

  Algoritma : C  A A  B B  C

Pemilihan (Selection)

  If (kondisi) then aksi endIf If (kondisi) then aksi1 else aksi2 endIf

Contoh (Pemilihan) :

  If (A>B) then Max A endIf

  If (B>A) then Max B endIf

  If (A>B) then Max A else Max B endIf Pengulangan (Repetition)

  for var  awal to akhir do

  aksi

  endfor repeat

  aksi

  until kondisi_stop while kondisi_ulang do

  aksi

  endwhile

Contoh (Pengulangan) :

  For i  1 to 5 do output (“UNIKOM)

  EndFor i1 Repeat output

  (“UNIKOM”) ii+1 Until (i>5)

  i1

  While (i<=5) do output (“UNIKOM”) ii+1

  

PERTEMUAN 5

STATEMENT PEMILIHAN

Algoritma dan Pemrograman I

Teknik Informatika

  

UNIKOM Analisis Satu Kasus

  • • Menggunakan konstruksi IF-THEN (jika-maka)

    dalam bentuk pernyataan : if (kondisi) then

  pernyataan endif

Contoh Masalah satu kasus :

  • Buatlah algoritma untuk menentukan apakah suatu bilangan yang dimasukkan oleh user itu bilangan genap atau bilangan ganjil.
  • Penyelesaian :

    Bilangan genap adalah bilangan yang habis

    dibagi dengan 2 (sisa pembagian = 0). Oleh

    karena itu, kita perlu membagi data masukan

    dengan 2. Jika data masukan habis dibagi 2,

    maka dapat ditulis bahwa bilangan tersebut

    bilangan genap, jika tidak maka akan ditulis

Analisis Dua kasus :

  • Menggunakan konstruksi IF-THEN-ELSE (jika- maka-kalau tidak) dalam bentuk pernyataan : if (kondisi) then

  pernyataan1

  else

  pernyataan2

  endif Contoh masalah analisis dua kasus :

Tulislah algoritma yang membaca sebuah bilangan bulat, lalu

menuliskan pesan “genap” jika bilangan tersebut adalah genap atau “ganjil” jika bilangan tersebut adalah bilangan ganjil, dengan menggunakan analisis dua kasus.

  • Penyelesaian :

  Misalkan bilangan yang dibaca adalah bil. Hanya ada dua kemungkinan jenis untuk bil, yaitu bilangan genap atau

bilangan ganjil. Bilangan genap adalah bilangan yang habis

dibagi dengan 2 (sisa pembagian = 0), sedangkan bilangan ganjil bersisa 1 bila dibagi dengan 2. Contohnya, 4 adalah bilangan genap karena 4 mod 2 = 0, tapi 3 adalah bilangan ganjil karena 3 mod 2 =1.

  Analisis Tiga Kasus atau Lebih : Tiga Kasus : if kondisi1 then

  pernyataan1

  else if kondisi2 then

  pernyataan2

  else if kondisi3 then

  pernyataan3

  endif endif endif

  Empat Kasus : if kondisi 1 then pernyataan

  1 else if kondisi 2 then pernyataan

  2 else if kondisi 3 then pernyataan

  3 else if kondisi 4 then pernyataan

  4 endif endif endif Struktur Depend On Konstruksi Depend On adalah sebagai berikut : Depend On (ekspresi) nilai1 : pernyataan1 nilai2 : pernyataan2 nilai3 : pernyataan3 . . . nilain : pernyataann else : pernyataanx EndDepend

  

Ekspresi adalah sembarang ekspresi (aritmatika

atau boolean) atau variabel yang menghasilkan

  Struktur Case Konstruksi CASE adalah sebagai berikut : case (ekspresi) of nilai1 : pernyataan1 nilai2 : pernyataan2 nilai3 : pernyataan3 . . . nilain : pernyataann else : pernyataanx endcase

  

Ekspresi adalah sembarang ekspresi (aritmatika atau

boolean) atau variabel yang menghasilkan suatu nilai (konstanta). Konstruksi CASE yang ekivalen dengan konstruksi IF-THEN-ELSE if (ekspresi = nilai1) then pernyataan1 else if (ekspresi = nilai2) then pernyataan2 else if (ekspresi = nilai3) then pernyataan3 . . . if (ekspresi = nilain) then pernyataann else { otherwise } pernyataanx endif endif endif

  Contoh Masalah :

  • Buatlah algoritma yang membaca sebuah

    bilangan bulat yang nilainya terletak antara 1

    sampai 4, lalu mencetak teks angka tersebut.

    Misalkan bila dibaca angka 1, maka tercetak

    tulisan “satu”, bila dibaca 2, maka tercetak di

    layar tulisan “dua”, demikian seterusnya. Jika angka yang dimasukkan selain 1 sampai 4, tuliskan pesan bahwa angka yang dimasukkan salah.

Penyelesaian : ALGORITMA KonversiAngkaTeks { Mencetak kata untuk angka 1 sampai 4 } Kamus : angka : integer { angka yang dibaca } Algoritma : input(angka) if angka = 1 then output

  (“satu”) else if angka = 2 then output

  (“dua”) else if angka = 3 then output

  („tiga‟) else if angka = 4 then output

  („empat‟) else output („angka yang dimasukkan salah‟) endif endif Dengan konstruksi CASE, algoritma untuk masalah di atas dapat dibuat menjadi lebih singkat sebagai berikut : ALGORITMA KonversiAngkaTeks

  { Mencetak kata untuk angka 1 sampai 4 }

  Kamus : angka : integer { angka yang dibaca } Algoritma : input(angka) case angka 1 : output

  (“satu”) 2 : output (“dua”) 3 : output (“tiga”) 4 : output (“empat”) else : output

  (“angka yang dimasukkan salah”) endcase

Tugas

  Buatlah Algoritma untuk menu pilihan sebagai berikut : Menu Pilihan

  

1.Menghitung Luas Persegipanjang

  2.Menghitung Luas Segitiga

  0. Keluar

  

KUIS

  

PERTEMUAN 7

STATEMENT PENGULANGAN

Algoritma dan Pemrograman I

Teknik Informatika

  

UNIKOM

  Secara umum struktur pengulangan dibagi dua bagian :

  • Kondisi pengulangan

  Yaitu ekspresi Boolean yang harus dipenuhi untuk melaksanakan pengulangan. Kondisi ini dinyatakan secara

Explisit ( oleh pemrogram ) dan Implisit (

dikelola oleh komputer ).

  • Badan ( body ) pengulangan Yaitu bagian algoritma yang diulang.

  Format Sintaks Algoritma

Stuktur pengulangan biasanya disertai dengan :

  • Inisialisasi

  Aksi yang dilakukan sebelum pengulangan dilakukan pertama kali.

  • Terminasi

  Aksi yang dilakukan setelah pengulangan selesai dilaksanakan. Struktur pengulangan secara umum : awal dan akhir pengulangan

  

<inisialisasi> dinyatakan sebagai kata kunci

yang bergantung pada struktur pengulangan yang dipakai.

  Inisialisasi dan terminasi adalah bagian yang opsional .

  <terminasi> Tiga macam notasi struktur pengulangan :

  • Struktur FOR atau TRAVERSAL ( Pengulangan tanpa kondisi / Unconditional Looping ).

  ( Pengulangan dengan kondisi / Conditional Looping )

  • Struktur WHILE..DO
  • Struktur REPEAT..UNTIL

  FOR

  • Statement for digunakan untuk mengulang eksekusi suatu

    ungkapan dengan jumlah pengulangan yang sudah tertentu.

  • Bentuk sintaksnya dalam algoritma :

  FOR var awal to/downto akhir step counter DO 

  pernyataan

  ENDFOR

  atau

  FOR var  awal to/downto akhir DO

  pernyataan

  ENDFOR

  atau namavar TRAVERSAL [ awal..akhir ]

Contoh dalam algoritma :

  Algoritma Tulisan_10kali { Menampilkan tulisan ”Algoritma” sepuluh kali } Kamus : pencacah : integer Algoritma : for pencacah  1 to 10 do output

  (“Algoritma”) EndFor

Tugas

  1. Buatlah Algoritma untuk menghitung :

  a. S = 1 + 2 + 3 + .. + n

  b. S = 1

  • – 2/3 + 3/5 – 4/7

  2. Buatlah Algoritma untuk menghitung faktorial

  3. Buatlah Algoritma untuk menentukan suku ke-n dari deret fibbonancy

  4. Buatlah Algoritma untuk perkalian m dengan n menggunakan operator +

  5. Buatlah Algoritma untuk menentukan indeks nilai (nilai mutu) dari 10 buah nilai akhir.

  

PERTEMUAN 8

UTS (UJIAN TENGAH SEMESTER)

  

PERTEMUAN 9-10

STATEMENT PENGULANGAN (lanjutan)

Algoritma dan Pemrograman I

Teknik Informatika

  

UNIKOM

  • Bentuk umum struktur WHILE..DO dalam algoritma adalah :

  [inisialisasi] while (kondisi) do

  pernyataan {ada aksi thd var kondisi}

  endwhile [terminasi] Cara kerja loop dengan while..do

  • melakukan inisialisasi, yaitu memberikan nilai awal yang ada kaitannya dengan nilai

  condition (kondisi)

  • memeriksa nilai kondisi.

  1. Bila nilainya true, maka laksanakan loop yaitu mengerjakan instruksi yang ada dalam loop.

  • Loop selesai.

  Perbedaan FOR dengan WHILE..DO

  • FOR digunakan untuk proses pengulangan yang jumlah

  pengulangannya dapat diketahui di awal.

  • WHILE..DO selain dapat berfungsi

    seperti FOR juga dapat digunakan

    untuk proses yang jumlah

  pengulangannya tidak dapat diketahui. Struktur WHILE..DO

  REPEAT…UNTIL

Bentuk umum struktur REPEAT…UNTIL

dalam algoritma :

  [inisialisasi] Repeat

  pernyataan {ada aksi thd var kondisi}

  Until(keadaan) [terminasi]

Contoh dalam algoritma :

  Algoritma Tulisan_10kali { Menampilkan tulisan ”Algoritma” sepuluh kali } Kamus : pencacah : integer Algoritma : pencacah  1 repeat output

  (“Algoritma”) pencacah  pencacah + 1 until (pencacah > 10)

Tugas

  a. S = 1 + 2 + 3 + .. + n

  b. S = 1

  • – 2/3 + 3/5 – 4/7 menggunakan bentuk while_do dan repeat_until.

  2. Buatlah Algoritma untuk menghitung faktorial, menggunakan while_do dan repeat_until.

  3. Buatlah Algoritma untuk perkalian m dengan n menggunakan operator +, menggunakan while_do dan repeat_until.

PERTEMUAN 11 PROSEDUR

  

Algoritma dan Pemrograman I

Teknik Informatika

UNIKOM

Prosedur dan struktur prosedur PROSEDUR :

  

Modul program yang mengerjakan tugas / aktivitas

yang spesifik dan menghasilkan suatu efek netto. Suatu efek netto diketahui dengan membandingkan keadaan awal dan keadaan akhir pada pelaksanaan sebuah prosedur. Mendefinisikan prosedur :

  • Menuliskan nama prosedur
  • Mendeklarasikan nama-nama konstanta, peubah (variabel) dan tipe ( jika ada ).
  • Menjabarkan rangkaian yang dilakukan.

Prosedur dan struktur prosedur (lanjutan)

Struktur Prosedur :

  ◦ Bagian Judul (header)

  Terdiri atas Nama prosedur dan deklarasi parameter ( jika ada ).

  ◦ Bagian deklarasi (kamus) Untuk mengumumkan nama-nama.

  ◦ Bagian deskripsi (badan algoritma) Disebut juga badan prosedur.

  Nama prosedur sebaiknya diawali dengan kata kerja karena prosedur berisi suatu aktivitas, misalnya HitungLuas, Tukar, CariMaks, Inisialisasi, AktifkanMenu, dan lain sebagainya.

Prosedur yang baik adalah

  • Prosedur yang independent dari program pemanggilannya. Prosedur yang tidak menggunakan peubah- peubah global di dalam badan prosedurnya.
  • Jika program utama perlu mengkomunikasikan nilai peubah global ke dalam prosedur, maka ada satu cara untuk melakukannya yaitu dengan menggunakan parameter .

Parameter

  Parameter adalah :Nama- nama peubah yang dideklarasikan pada bagian header prosedur

  1. Parameter aktual ( argument ) adalah : Parameter yang disertakan pada waktu pemanggilan prosedur.

  

Parameter yang dideklarasikan di dalam

bagian header prosedur itu sendiri.

Parameter actual dan Parameter formal

Aturannya :

  • Jumlah parameter aktual pada pemanggilan prosedur harus sama dengan jumlah parameter formal pada deklarasi rosedurnya.
  • Tiap parameter aktual harus bertipe sama

    dengan tipe parameter formal yang bersesuaian.
  • Tiap parameter aktual harus diekspresikan dalam cara yang taat-asas dengan parameter formal yang bersesuaian, bergantung pada jenis parameter formal.

Tiga Jenis Parameter formal 1. Parameter masukan ( Input parameter )

  Parameter yang nilainya berlaku sebagai masukan untuk prosedur.

  Dalam bahasa pemrograman, istilah parameter masukan ini sering dinamakan parameter nilai ( value parameter atau parameter by value ).

  2. Parameter keluaran ( Output parameter).

  Parameter yang menampung keluaran yang dihasilkan oleh prosedur, parameter ini sering juga disebut parameter referensi ( parameter by reference ).

  3. Parameter masukan / keluaran ( Input/Output parameter ).

  Parameter yang berfungsi sebagai masukan sekaligus keluaran bagi prosedur tersebut. Ini pun termasuk ke dalam parameter by reference .

  Program dengan Prosedur atau Tanpa Prosedur? Sangat dianjurkan menulis program yang modular.

  Program yang dipecah menjadi beberapa prosedur ( fungsi ) menunjukan teknik pemrograman yang baik dan terstruktur.

  Prosedur dengan Parameter atau Tanpa Parameter? Sangat dianjurkan menulsikan prosedur dengan parameter.

  Parameter berfungsi sebagai media komunikasi antara modul

dengan program pemanggil. Selain itu, parameter dapat mengurangi

kebutuhan penggunaan peubah global.

  

Parameter Masukan atau Parameter Keluaran?

Tergantung pada kasus yang ada.

Procedure pada Algoritma

  

Prosedur Dengan Parameter Masukan

Prosedur Dengan Parameter Keluaran Prosedur Dengan Parameter Masukan/Keluaran Prosedur Dengan Parameter Masukan Pada Algoritma

  1. Cara memanggil (dari algoritma/program utama)

  Kamus : Procedure namaprosedur(input namaparameter : type) Algoritma : namaprosedur(parameter_aktual)

  2. Cara mendifinisikan:

  

Procedure namaprosedur(input namaparameter : type)

{ I.S.(kondisi awal) : … } { F.S.(kondisi akhir) : … } Kamus :

  {deklarasi/kamus lokal} Algoritma :

  {aksi-aksi dalam satu prosedur} Prosedur Dengan Parameter Keluaran pada Algoritma

  1. Cara memanggil (dari algoritma/program utama)

  Kamus : Procedure namaprosedur(output namaparameter : type) Algoritma : namaprosedur(parameter_aktual)

  2.

  :

  Cara mendifinisikan

  Procedure namaprosedur(output namaparameter : type) { I.S.(kondisi awal) : … } { F.S.(kondisi akhir) : … } Kamus :

  {deklarasi/kamus lokal} Algoritma :

  {aksi-aksi dalam satu prosedur} Prosedur Dengan Parameter Masukan/Keluaran Pada Algoritma

  1. Cara memanggil (dari algoritma/program utama)

  Kamus : Procedure namaprosedur(input/output namaparameter : type) Algoritma : namaprosedur(parameter_aktual)

  2. Cara mendifinisikan:

  Procedure namaprosedur(input/output namaparameter : type) { I.S.(kondisi awal) : … } { F.S.(kondisi akhir) : … } Kamus :

  {deklarasi/kamus lokal} Algoritma :

  {aksi-aksi dalam satu prosedur} procedure HitungLuasSegitiga(input alas, tinggi : real) { I.S. : alas dan tinggi sudah terdefinisi nilainya } { F.S. : menampilkan luas segitiga } Kamus : luas : real { luas segitiga, dalam cm2 } Algoritma : luas  (alas * tinggi)/2 output(luas)

  EndProcedure

  

Algoritma utama yang memanggil prosedur HitungLuasSegitiga

Algoritma

  _Segitiga { Menghitung luas N buah segitiga. } Kamus : i, N : integer a, t : real Procedure HitungLuasSegitiga(input alas, tinggi : real) { Menghitung luas segitiga dengan rumus L =(alas x tinggi)/2 } Algoritma : input (N) { tentukan banyaknya segitiga } for i  1 to N do input (a,t) HitungLuasSegitiga(a,t) endfor EndProcedure

  ALGORITMA : {Algoritma utama} Procedure HitungLuasSegitiga(input alas, tinggi : real, output luas : real) { I.S. : alas dan tinggi sudah terdefinisi nilainya } { F.S. : menghasilkan luas segitiga. } Kamus :

  { tidak ada } Algoritma : luas  (alas * tinggi)/2 EndProcedure

  Algoritma _Segitiga { Menghitung luas N buah segitiga. } Kamus : i, N : integer

  a, t : real L : real { luas segitiga } Procedure HitungLuasSegitiga(input alas, tinggi : real , output luas : real

  ) Algoritma : input (N) { tentukan banyaknya segitiga } for i  1 to N do input (a,t) HitungLuasSegitiga(a,t,L) output (L) endfor

  ALGORITMA : {Algoritma utama}

  

Algoritma utama yang memanggil prosedur HitungLuasSegitiga Procedure Tukar(input/output A,B : integer) { I.S. : nilai A dan B sudah terdefinisi. } { F.S : A berisi nilai B, B berisi nilai A semula. } Kamus : temp : integer { peubah Bantu } Algoritma : temp  A { simpan nilai A ke dalam temp } A  B

  { isikan nilai B ke dalam A } B  temp { isikan nilai temp ke dalam B } EndProcedure

  Algoritma utama yang memanggil prosedur Tukar { Algoritma utama}

  Algoritma _SelisihXY {Prog. untuk menghitung selisih nilai X dan Y,dengan syarat X ≥ Y jika X < Y,ma ka X dan Y dipertukarkan dengan memanggil prosedur Tukar. } Kamus :

  X, Y, Z : integer Procedure Tukar(input/output A,B : integer) { mempertukarkan nilai A dan B } Algoritma : input(X,Y) { baca nilai X dan Y terlebih dahulu } {Jika X < Y, pertukaran nilai X dan Y dengan memanggil prosedur Tukar } If (X < Y) then

  Tukar(X,Y) endif Z  X – Y { hitung selisih x dan Y } output(Z)

  EndProcedure

Tugas

  Buat Algoritma untuk menghitung faktorial dengan menggunakan dua prosedur (prosedur memasukkan harga N dan prosedur menampilkan faktorial dari N) beserta pengendalinya (algoritma utama)

  PERTEMUAN 12

PERTEMUAN 13 FUNCTION

  

Algoritma dan Pemrograman I

Teknik Informatika

UNIKOM

  Definisi Fungsi

  • • Fungsi/function adalah bagian dari

    program yang memiliki nama tertentu, digunakan untuk mengerjakan suatu pekerjaan tertentu, serta letaknya dipisahkan dari bagian program yang menggunakan fungsi tersebut.

Keuntungan menggunakan fungsi

  • Program besar dapat dipisah menjadi program-program kecil.
  • Dapat dikerjakan oleh beberapa orang sehingga koordinasi mudah.
  • Kemudahan dalam mencari kesalahan- kesalahan karena alur logika jelas dan kesalahan dapat dilokalisasi dalam suatu modul tertentu saja.
  • Modifikasi program dapat dilakukan pada suatu modul tertentu saja tanpa mengganggu program keseluruhan.
  • Mempermudah dokumentasi.
  • Reusability: suatu fungsi dapat digunakan kembali oleh program atau fungsi lain

Sifat-sifat modul/fungsi yang baik

  fan-in tinggi, artinya semakin

  • Nilai

    sering suatu modul dipanggil oleh

    pengguna semakin tinggi nilai fan-in rendah, artinya semakin
  • Fan-out

  spesifik fungsi suatu modul akan semakin rendah nilai fan-out tinggi: artinya

  • Self-contained

  kemampuan untuk memenuhi kebutuhannnya sendiri.

  Kategori Function

  • Standard Library Function

  Yaitu fungsi-fungsi yang telah disediakan oleh Compiler dalam file-file header atau library.

  Misalnya: clrscr(), printf(), getch(),writeln(),readln()

  • Programmer-Defined Function

  Adalah function yang dibuat oleh programmer sendiri. Function ini memiliki nama tertentu yang unik dalam program, letaknya terpisah dari program utama, dan bisa dijadikan satu ke dalam suatu library buatan programmer itu sendiri yang kemudian juga di-include-kan untuk penggunaanya.

Bentuk Umum Fungsi

  Function namafungsi(daftar parameter formal) tipehasil {I.S. : ………….} {F.S. : …………} Kamus :

  {deklarasi/kamus lokal} Algoritma :

  {aksi-aksi dalam fungsi tertentu} EndFunction

  Contoh Fungsi untuk memutlakan nilai negatif Function Absolut(Input X : integer) integer /* definisi fungsi */ {I.S. : Harga X sudah terdefinisi} {F.S. : menghasilkan fungsi absolut dari x} Kamus : Algoritma : if (X<0) then Absolut -1 * X { atau return( X ) } EndIf EndFunction {Algoritma utama} Algoritma_Nilai_Absolut {membuat nilai absolut dari X} Kamus : Function Absolut(Input X : integer) integer Nilai : integer Algoritma : Nilai Absolut(-123,45) {memasukkan secara langsung angka -123.45 ke variabel Nilai} output("nilai mutlaknya adalah ", Nilai); }

Latihan 1

  • • Sebuah fungsi rumus matematika

    didefinisikan sebagai berikut: F(x)=3*x1+x2 Dimana nilai x1 dan x2 adalah bilangan bulat, buatlah algoritma fungsi dari rumus matematika tersebut
  • Gunakan dalam algoritma utama

Latihan 2

  • Antrian di kasir mempunyai urutan nomor dari 1..10 urutan 10 adalah seorang ibu hamil yang akan melahirkan, Seorang Satpam ingin merubah urutan antrian tersebut menjadi 10..1
  • Buatlah algoritma fungsi untuk satpam tersebut agar dapat merubah urutan posisi antrian beserta algoritma utamanya.

  Latihan 3

  • Sebuah bioskop terdapat antrian penonton berjumlah 10 orang diskon diberikan pada tiap orang berdasarkan urutan nomor (misal nomor 10 mendapat diskon 5% dibagi 10) buatlah fungsi penghitung diskon yang akan mengembalikan total diskon yang diberikan kepada 10 orang tersebut dan penggunaan fungsi pada algoritma utama

Tugas

  • Sebuah fungsi matamatika akan mengembalikan hasil perhitungan dari 5 buah bilangan dengan deret urutan

    sebagai berikut 3,6,7,8,0 rumus dari

    fungsi tersebut adalah
    • – F(x)=nilai terbesar/2