pseude code algoritma

155
Berikut ini adalah versi HTML dari berkas http://elista.akprind.ac.id/staff/bukualgo_ebook_suwanto.pdf . G o o g l e membuat versi HTML dari dokumen tersebut secara otomatis pada saat menelusuri web. Page 1 1 Page 2 2 LOGIKA INFORMATIKA TIFS 1604 3 SKS Suwanto Raharjo,S.Si.,M.Kom Teknik Informatika Teknologi Industri IST AKPRIND Yogyakarta Page 3 3 Kata Pengantar Logika proposisional merupakan ilmu dasar untuk mempelajari algoritma dan logika yang terkait di dalamnya berperanan sangat penting dalam pemrograman. Proses kerja komputer tidak dapat dilepaskan dari program-program, di mana komputer akan menerjemahkan program-program tersebut dengan sistem logika. Dengan alasan di atas maka belajar logika proporsisional sebagai dasar logika algoritma sangat diperlukan dalam belajar pemrograman maupun belajar bahasa pemrograman. Algoritma mempunyai peranan yang sangat penting dalam bidang teknik informatika pada umumnya dan bidang pemrograman pada khususnya. Algoritma membantu mahasiswa mengembangkan daya

Upload: xedy-pasaribu

Post on 02-Jul-2015

2.298 views

Category:

Documents


8 download

TRANSCRIPT

Page 1: Pseude Code Algoritma

Berikut ini adalah versi HTML dari berkas http://elista.akprind.ac.id/staff/bukualgo_ebook_suwanto.pdf.G o o g l e membuat versi HTML dari dokumen tersebut secara otomatis pada saat menelusuri web.

Page 11

Page 22

LOGIKA INFORMATIKATIFS 1604 3 SKSSuwanto Raharjo,S.Si.,M.KomTeknik InformatikaTeknologi IndustriIST AKPRIND Yogyakarta

Page 33

Kata Pengantar Logika proposisional merupakan ilmu dasaruntuk mempelajari algoritma dan logika yang terkait didalamnya berperanan sangat penting dalampemrograman. Proses kerja komputer tidak dapatdilepaskan dari program-program, di mana komputerakan menerjemahkan program-program tersebut dengansistem logika. Dengan alasan di atas maka belajar logikaproporsisional sebagai dasar logika algoritma sangatdiperlukan dalam belajar pemrograman maupun belajarbahasa pemrograman.Algoritma mempunyai peranan yangsangat penting dalam bidang teknik informatika padaumumnya dan bidang pemrograman pada khususnya.Algoritma membantu mahasiswa mengembangkan dayapenalaran atau kerangka berpikir yang sistematis dalammemahami masalah dan membuat perencanaan ataukonsep pemecahan masalah yang lebih baik sehinggadapat menghasilkan yang tepat pula.Pada buku ini banyak diberikan contohkasus disertai alternatif solusi penyelesaiannya denganharapan pembaca dapat mengembangkan sesuai dengan

Page 2: Pseude Code Algoritma

kreatifitas masing-masing. Demikian pula dengan contoh-

Page 44contoh latihan diharapkan dapat membantu pembacauntuk lebih memahami algoritma.Pada kesempatan ini penulis menghaturkanberibu-ribu terima kasih yang tak terkira kepada ALLAHSWT yang telah memberikan Rahmat dan Hidayah-Nyasehingga penulis mampu menyelesaikan buku ini. Penulisjuga mengucapkan banyak terima kasih kepada civitasakademika IST AKPRIND Yogyakarta yang telahberkenan menerbitkan buku ini, untuk istri tercinta EmaUtami, S.Si, M.Kom atas ide-ide yang kreatifnya sertauntuk putra-putri tercinta Naufal Rasendriya AptaRaharema dan Najwa Rashika Az-Zahra Raharema yangtelah memberikan semangat untuk selalu berkarya. Akhir kata semoga buku ini dapatmemberikan manfaat dan menambah wawasan bagipembaca yang ingin mempelajari konsep logikainformatika. Saran dan kritik yang ditujukan untukmembangun buku ini dengan lebih baik dapat ditujukanke alamat email [email protected]. Yogyakarta, Desember 2007Penulis Suwanto Raharjo,S.Si,M.Kom

Page 55

Page 66

Daftar Isi Kata PengantarDaftar Gambar Daftar Tabel1 Logika Proposisional1.1 Proposisi1.2 Relasi Proposisional1.3 Interpretasi1.4 Sifat-Sifat Kalimat Logika1.5 Kalimat Berkuantor1.5.1 Ingkaran Kalimat Berkuantor1.6 Pembuatan Kesimpulan Berdasarkan Implikasi 1.7 Latihan2 Algoritma

Page 3: Pseude Code Algoritma

2.1 Algoritma2.2 Penyajian Algoritma2.3 Tahap-Tahap Pemrograman2.4 Struktur Algoritma 2.5 Latihan

Page 773 Struktur Runtunan3.1 Runtunan3.2 Contoh-Contoh Kasus Runtunan 3.3 Latihan 4 Struktur Pemilihan4.1 Instruksi IF5.1.1 Instruksi IF Sederhana5.1.1.1 Instruksi IF dengan Syarat Tunggal5.1.1.2 Instruksi IF dengan Syarat Majemuk5.1.2 Instruksi IF - ELSE4.2 Contoh-Contoh Kasus IF dan IF – ELSE4.3 Instruksi IF Bertingkat 4.4 Contoh-Contoh Kasus Instruksi IF Bertingkat4.5 Instruksi SWITCH4.6 Contoh-Contoh Kasus Instruksi SWITCH4.7 Latihan 5 Struktur Perulangan5.1 Instruksi FOR 5.2 Contoh-Contoh Kasus FOR 5.3 Instruksi WHILE – DO5.4 Contoh-Contoh Kasus Instruksi WHILE - DO5.5 Latihan

Page 886 Subprogram 6.1 Subprogram6.2 Contoh-Contoh Kasus Subprogram 6.3 Rekursi 6.4 Contoh-Contoh Kasus Rekursi 6.5 Latihan 7 Array 7.1 Array 7.2 Contoh-Contoh Kasus Array7.3 Latihan 8 Sorting 8.1 Metode Selection Sort 8.1.1 Pengurutan Naik (Ascending)

Page 4: Pseude Code Algoritma

8.1.2 Pengurutan Turun (Descending) 8.2 Metode Bubble Sort 8.2.1 Pengurutan Naik (Ascending) 8.2.2 Pengurutan Turun (Descending) 8.3 Metode Insertion Sort 8.3.1 Pengurutan Naik (Ascending) 8.3.2 Pengurutan Turun (Descending) 8.4 Metode Merge Sort

Page 998.4.1 Pengurutan Naik (Ascending)8.4.2 Pengurutan Turun (Descending) 8.5 Latihan 9 Searching 9.1 Metode Sequential Search 9.1.1 Pencarian Pada Array Belum Terurut 9.1.2 Pencarian Pada Array Terurut 10.1.2.1 Pencarian Pada Array Terurut Naik10.1.2.2 Pencarian Pada Array Terurut Turun9.2 Metode Binary Search 10.2.1 Pencarian Pada Array Terurut Naik10.2.2 Pencarian Pada Array Terurut Turun9.3 Latihan Daftar PustakaProfil Penulis

Page 1010

Daftar Gambar 2.1 Flowchart Hitung Rata-Rata2.2 Flowchart Cetak Tiket Parkir2.3 Tahapan Pemrograman3.1 Flowchart Runtunan3.2 Flowchart Hitung Luas Persegi Panjang3.3 Flowchart Hitung Luas dan Keliling Lingkaran3.4 Flowchart Konversi Detik3.5 Ilustrasi Pertukaran Data4.1 Flowchart Instruksi IF4.2 Flowchart Instruksi IF – ELSE4.3 Flowchart Instruksi SWITCH5.1 Flowchart Instruksi FOR Format Naik5.2 Flowchart Instruksi FOR Format Turun5.3 Flowchart Instruksi WHILE – DO6.1 Gambaran Umum Subprogram6.2 Ilustrasi Hitung Faktorial

Page 5: Pseude Code Algoritma

6.3 Ilustrasi Bilangan Fibonacci

Page 11116.4 Ilustrasi Hitung Perkalian6.5 Ilustrasi Hitung Perpangkatan

Page 1212

Daftar Tabel 1.1 Aturan NOT1.2 Aturan AND 1.3 Aturan OR1.4 Aturan IF – THEN1.5 Aturan IF AND ONLY IF1.6 Aturan IF – THEN - ELSE

Page 1313

Bab 1Logika ProposisionalTujuan pembelajaran umum:1. memahami logika proposisi2. memahami relasi proposisi3. memahami sifat-sifat logika4. memahami interpretasi dari proposisi5. memahami kalimat berkuantor6. membuat kesimpulan berdasarkan implikasiLogika proposisional merupakan ilmu dasar untukmempelajari algoritma dan logika yang terkait didalamnya berperanan sangat penting dalampemrograman. Proses kerja komputer tidak dapatdilepaskan dari program-program, di mana komputerakan menerjemahkan program-program tersebut dengansistem logika. Dengan alasan di atas maka belajar logikaproporsisional sebagai dasar logika algoritma sangatdiperlukan dalam belajar pemrograman maupun belajarbahasa pemrograman.

Page 1414

1.1 ProposisiProposisi atau pernyataan merupakan komponen

Page 6: Pseude Code Algoritma

penyusun logika dasar yang dilambangkan dengan hurufkecil (p, q, r, ...). Proposisi hanya dapat diiwakili olehkalimat deklaratif. Kalimat deklaratif adalah kalimat yangmengandung nilai kebenaran yaitu dapat bernilai benaratau salah tetapi tidak mungkin memiliki kedua nilaitersebut.Contoh:p : 9 adalah bilangan ganjil.q : 10 x 8 = 88Lawan kalimat deklaratif adalah kalimat terbuka, artinyakalimat yang nilai kebenarannya tidak bisa ditentukan.Contoh:1.Ke mana anda akan pergi ?2.Kerjakan latihan soal ini !3.Jam berapakah saat ini ?Contoh di atas tidak berfungsi sebagai proposisi karenakalimat tersebut tidak benar atau tidak salah (tidakmempunyai nilai benar atau salah).

Page 15151.2 Relasi ProposisionalUntuk mengkombinasikan dua buah proposisi atau lebihdiperlukan connective atau penghubung.Propositions + Propositional Connectives → SentencesUntuk menggabungkan proposisi-proposisi danpenghubungnya diperlukan Syntactics Rules yaitu suatuaturan yang diperlukan untuk mengkombinasikan antarapropositions dan propositional connectives untukmenghasilkan sentences (kalimat logika).1.Setiap propositions adalah sentence tanpa adapropositional connectives.2.Jika p suatu sentence maka negasinya not p juga sentence. Negasi atau ingkaran adalah proposisi yangnilai kebenarannya berlawanan dengan proposisisemula. Suatu proposisi yang disertai dengan kata-kata'tidak', 'bukan' dan sebagainya. Misalkan terdapatproposisi p maka negasinya adalalah - p atau ~p.Contoh:p : Semua mahasiswa adalah pelajar

Page 1616~p : Tidak semua mahasiswa adalah pelajar3.Jika p dan q sentences maka conjunction-nya yaitu 'pand q' juga sentences. Conjunction yaitu dua

Page 7: Pseude Code Algoritma

proposisi atau lebih yang dihubungkan dengan kata'dan' atau 'and'. Lambang yang digunakan adalah ^, &. Contoh :p : 2 adalah bilangan prima.q : 2 > 3p&q : 2 adalah bilangan prima dan 2 > 3.4.Jika p dan q sentences maka disjunction-nya yaitu 'por q' juga sentences. Disjunction yaitu duaproposisi atau lebih yang dihubungkan dengan kata'atau' atau 'or'. Lambang yang digunakan adalah v, +. Contoh :p : 2 adalah bilangan prima.q : 2 > 3pvq : 2 adalah bilangan prima atau 2 > 3.5.Jika p dan q sentences maka implication-nya yaitu 'ifp then q' juga sentences. Implication adalahpenggabungan dua proposisi dengan bentuk 'jika pmaka q'. Lambang yang digunakan adalah →.

Page 1717Proposisi pertama (p) disebut anteseden sedangkanproposisi kedua (q) disebut konsekuen. Contoh :p : 2 adalah bilangan prima.q : 2 > 3p•q : Jika 2 adalah bilangan prima maka 2 > 3.6.Jika p dan q sentences maka equivalence-nya yaitu 'pif and only if q' juga sentences. Equivalenceatau biimplikasi adalah penggabungan dua proposisidengan bentuk 'p jika dan hanya jika q'.Kata penghubung yang lain adalah iof, iff, bila danhanya bila (bhb). Lambang yang digunakan adalah ↔. Contoh :p : 4 adalah bilangan genap.q : 4 habis dibagi 2.p↔q : 4 adalah bilangan genap jhj 4 habis dibagi 2.7.Jika p, q dan r sentences maka conditional-nya yaitu'if p then q else r' juga sentences. Contoh :if x=5 then y= x else y=2x

1.3 Interpretasi

Page 1818Interpretasi adalah pemberian nilai kebenaran (benar atau

Page 8: Pseude Code Algoritma

salah) pada setiap simbol proposisi dari suatu kalimatlogika. Semantic Rules adalah suatu aturan yangdigunakan untuk menentukan truth value (nilaikebenaran) dari suatu sentence. Untuk mempermudahpenyajiannya dibuatlah tabel kebenaran.1.Negation Rule (Aturan NOT)Negasi bernilai benar jika proposisi mula-mula bernilaisalah dan sebaliknya apabila proposisi mula-mulabernilai benar maka negasinya mempunyai nilaikebenaran salah.pnot pTrueFalseFalseTrueTabel 1.1 Aturan NOT 2.Conjunction Rule (Aturan AND)Konjungsi bernilai benar jika setiap proposisipenyusunnya benar.pqp and q

Page 1919TrueTrueTrueTrueFalseFalseFalseTrueFalseFalseFalseFalseTabel 1.2 Aturan AND3.Disjunction Rule (Aturan OR)Minimal satu proposisi penyusunnya benar makadisjungsi bernilai benar.pqp or qTrue

Page 9: Pseude Code Algoritma

TrueTrueTrueFalseTrueFalseTrueTrueFalseFalseFalseTabel 1.3 Aturan OR Untuk relasi konjungsi dan disjungsi berlaku sifat-sifataljabar logika sebagai berikut :a.Hukum Idempotenpvp = pp∧p = p

Page 2020b.Hukum Komutatifpvq = qvpp∧q = q∧pc.Hukum Assosiatifpvq)v r = pv(qvr)p∧q)∧r = p∧(q∧r)d.Hukum Distributifpv(q∧r) = (pvq) ∧ (pvr)p∧(qvr) = (p∧q) v (p∧r)e.Hukum Identitasp v False= pp ∧ True= pp v True= Truep ∧ False = Falsef.Hukum Komplemenp v not p = Truep ∧ not p = Falsenot(not p)= pg.Hukum De MorganNegasi dari konjungsi dan disjungsi:

Page 21

Page 10: Pseude Code Algoritma

21~ (pvq) = ~p ∧ ~q~ (p∧q) = ~p v ~q4.Implication Rule (Aturan IF-THEN)Implikasi bernilai salah bila anteseden benar dankonsekuen salah.pqif p then qTrueTrueTRUETrueFalseFalseFalseTrueTrueFalseFalseTrueTabel 1.4 Aturan IF – THENTerdapat beberapa definisi:a)Jika (p→q) adalah implikasi maka (q→p) adalahkonversb)Jika (p→q) adalah implikasi maka (~p → ∼q)adalah inversc)Jika (p→q) adalah implikasi maka (~q→ ∼p)adalah kontraposisid)Jika (p→q) bernilai benar maka (q→p), (~p →~q), dan (~q → ~p) belum tentu bernilai benar.

Page 22225.Equivalence Rule (Aturan IF AND ONLY IF)Jika penyusun proposisi mempunyai nilai yang samamaka biimplikasi bernilai benar, pqp if and only if qTrueTrueTrueTrueFalseFalse

Page 11: Pseude Code Algoritma

FalseTrueFalseFalseFalseTrueTabel 1.5 Aturan IF AND ONLY IF6.Conditional Rule (Aturan IF - THEN - ELSE)Jika p bernilai benar maka q berlaku.Jika p bernilai salah maka r berlakupqrif p then q else rTrueTrueTrueTrueTrueTrueFalseTrueTrueFalseTrueFalseTrueFalseFalseFalseFalseTrueTrueTrueFalseTrueFalseFalseFalseFalseTrueTrueFalseFalseFalseFalse

Page 12: Pseude Code Algoritma

Page 2323Tabel 1.6 Aturan IF-THEN-ELSE 1.4 Sifat-Sifat Kalimat Logika1.ValidSuatu sentence f disebut valid, jika untuk setiapinterpretation I for f maka f true.Contoh:a. (p and q) if and only if (q and p)b. p or not pc. (p and (if r then s)) if and onlyif ((if r then s) and p)d. (p or q) or not (p or q)e. (if p then not q) if and only ifnot (p and q)2.SatisfiableSuatu sentence f disebut satisfiable, jika untuk suatuinterpretation I for f maka f true.Contoh:a. if (if p then q) then qb. (if p then q) or (r and s)c. (if p then q) or r

Page 24243.KontradiksiSuatu sentence f disebut kontradiksi, jika untuk setiapinterpretation I for f maka f false.Contoh:a. p and not pb. ((p or q) and not r) if and only if ((if p then r) and (if q then r)1.5 Kalimat BerkuantorKalimat berkuantor adalah pernyataan yang memuatekspresi kuantitas obyek yang terlibat. Misalnya: semua,ada, beberapa, tidak semua, dan lain-lain. Ada duamacam kuantor yaitu:1.Universal Quantifier (for all ...)Kuantor universal mempunyai makna umum ataumenyeluruh. Notasi yang digunakan adalah ∀ yangdibaca sebagai semua, seluruh atau setiap.Penulisannya: ∀x ∈ S → p(x), dibaca semua x dalamsemesta S mempunyai sifat p.

Page 13: Pseude Code Algoritma

Contoh: 1. Tiap-tiap orang yang hidup di dunia akan mati 2. Seluruh pelajar pasti pandai

Page 25252.Existential Quantifier (for some ...)Kuantor eksistensial mempunyai makna khusus atausebagian. Notasi yang digunakan adalah ∃ yang dibacaterdapat, ada, atau beberapa. Penulisannya ∃y ∈S →q(y), dibaca terdapat y dalam semesta S mempunyai sifat q.Contoh: Beberapa mahasiswa yang menempuh mata kuliahLogika dan Algoritma mendapat nilai A.1.5.1 Ingkaran Kalimat BerkuantorTerdapat dua ketentuan yaitu:1.Apabila kalimatnya memuat kuantor universal makaingkarannya menjadi kuantor eksistensial dan sifatnyadiingkari.~((∀x) p(x)) = (∃ x) (~p(x))Contoh:p : Semua mahasiswa Informatika harus kreatif.~p : Ada mahasiswa Informatika yang tidak kreatif.2.Apabila kalimatnya memuat kuantor eksistensial makaingkarannya menjadi kuantor universal dan sifatnyadiingkari.

Page 2626~((∃y) q(y)) = (∀y) (~q(y)) Contoh:q : Ada pejabat yang korupsi.~p : Semua pejabat tidak korupsi.1.6Pembuatan Kesimpulan BerdasarkanImplikasi1.Modus Ponensp → qpqContoh:Jika seseorang itu adalah mahasiswa maka ia pastipandaiNaufal adalah seorang mahasiswaNaufal pasti pandai2. Modus Tollens

Page 14: Pseude Code Algoritma

p → q~q ~p

Page 2727Contoh:Jika seseorang itu adalah pejabat yang baik makaia pasti tidak korupsiBapak X korupsiBapak X bukan pejabat yang baik3.Prinsip Syllogismep → qq → r p → rContoh:Jika ia rajin maka ia pasti pandaiJika ia pandai maka ia pasti suksesJika ia rajin maka ia pasti sukses

1.7Latihan1.Buktikan jika implikasi bernilai benar maka konvers,invers, dan kontraposisinya belum tentu bernilaibenar.2.Apabila terdapat n buah proposisi penyusun makasentence yang dihasilkan akan mempunyai berapa

Page 2828kemungkinan nilai kebenaran ?3.Tentukan nilai kebenaran dari kalimat logika berikutmenggunakan tabel kebenaran:a. (p and q) if and only if (p and q)b. if (if p then q) then qc. ((p or q) and not r) if and only if(if p then r) and (if q then r)d. ((if p then q) and (if q then p) ifand only if (q or not p)e. (p and (if r then s)) if and only if((if r then s) and p)f. (if (p and q) then (not r or not s)else not (r and s)) if and only if(if r then not s)g. if (if q then not p) or not q) then(p if and only if q) else not r4.Diketahui suatu kalimat logika sebagai berikut :if(p and q) then (r and not p) else

Page 15: Pseude Code Algoritma

(r and not q)a. Jika diketahui interpretasi p, q, r semua falsemaka tentukan kebenaran kalimat tersebut.b)Tentukan suatu interpretasi (selain p, q, r semuafalse) sedemikian kalimat tersebut bernilai true.

Page 29295.Diketahui suatu kalimat logika sebagai berikut :if(p and q) then (if r then s) ifand only if if p then (q or not ror s)a. Tentukan nilai kebenaran kalimat tersebut jikap=true, q=false, r=true, s=true.b. Tentukan suatu interpretasi sedemikian kalimattersebut bernilai false.6.Jika kalimat 'if p then q' bernilai false makatentukan kebenaran kalimat berikut: if (not p ornot q) then q7.Jika kalimat 'if p then q' bernilai true makatentukan kebenaran kalimat berikut: not p or (ifp then q)8.Buktikan bahwa sentence berikut memiliki sifat valid(p and (if r then s)) if and only if((if r then s) and p)9.Jika diberikan interpretasi p, q, dan r berturut turutadalah True, False, dan True. Tentukan truth valuedari sentence berikut:

Page 3030a. if ((if q then not p) or not q) then(p if and only if q) else not rb. if (if p then (if q then r)) then(if(if p then q) else (if p thenr))10.Jika diberikan dua implikasi seperti berikut:a. if (p or q) or not (p or q) then((f and g) if and only if (g and f)b. if ((f and g) if and only if (gand f) then ( p and not p)Tentukan kesimpulannya dengan menggunakanprinsip Syllogisme, serta berikan truth value-nyadengan menggunakan truth table.11.Dengan menggunakan sifat-sifat aljabar logika,tentukan validitas dari kalimat logika berikut ini:

Page 16: Pseude Code Algoritma

a. if (if r then (if q then p)) then(if (if r then q) then (if r thenp))b. if (if not q then not p) then (if pthen q)c. if (if p then (if q then r)) then(if (if p then q) then (if p then

Page 3131r))d. (if ((p and q) or (p and r)) thens) if and only if (not p or (not qand not r) or s)12.Diberikan kalimat logika sebagai berikut:((p or q) or q) if and only if (if pthen (p and r))Tentukan semua interpretasi untuk p, q, dan r yangakan mengakibatkan kalimat di atas bernilai benar.13.Berikan suatu interpretasi untuk setiap proposisipenyusunnya supaya kalimat logika berikut bernilaifalse.if (p and q) then (r or s)14.Interpretasi p, q dan r berturut-turut adalah true, falsedan true. Tentukan nilai kebenaran dari kalimatberikut:if ((q then not p) or not q) then (pif and only if q) else r15.Dengan menggunakan sifat-sifat aljabar logika,tentukan sifat dari kalimat berikut:((p or q) and not r) if and only if

Page 3232((if p then r) and (if q then r))16.Dapatkah saudara menentukan suatu interpretasi untukp, q, r, s agar kalimat-kalimat di bawah inibernilai false?a. if (p and q) then (not r or not s)else ((not r and not s) if and onlyif (if r then not s)b. (if ((p and q) or (p and r)) thens) if and only if (not p or (not qand not r)) or s)17.Dapatkah saudara menentukan suatu interpretasi untukp, q, r agar kalimat di bawah ini bernilai true?

Page 17: Pseude Code Algoritma

(if p then q else r) if and only if(if not q then not p else not r)18.Buktikan bahwa Modus Ponnens, Modus Tollens danPrinsip Syllogism merupakan kalimat yang valid.

Page 3333

Bab 2AlgoritmaTujuan pembelajaran umum:1. memahami penggunaan algoritma dalammenyelesaikan permasalahan2. memahami alur dan syarat pembuatan algoritmayang baik3. membuat algoritma untuk menyelesaikan suatupermasalahan.Pada saat kita dihadapkan dengan suatu masalah makatindakankitaselanjutnyaadalahmencaripenyelesaiannya. Sekarang kita tidak langsungmemecahkan masalah dengan langsung menuliskansolusinya berupa program dalam suatu bahasapemrograman, namun suatu cara penyelesaian masalahyang akan diprogram dengan menekankan pada desainatau rancangan yang mewakili pemecahan masalah.

Page 3434Masalah --------------> Algoritma --------------> PenyelesaianPemecahan Masalah Tahap Implementasi(Fase Problem Solving) (Fase Implementasi)Algoritma mempunyai peranan yang sangat pentingdalam bidang teknik informatika pada umumnya danbidang pemrograman pada khususnya. Algoritmamembantu mahasiswa mengembangkan daya penalaranatau kerangka berpikir yang sistematis dalam memahamimasalah dan membuat perencanaan atau konseppemecahan masalah yang lebih baik sehingga dapatmenghasilkan yang tepat pula.2.1 AlgoritmaAlgoritma merupakan urutan atau deskripsi langkah-

Page 18: Pseude Code Algoritma

langkah penyelesaian masalah yang tersusun secara logis,ditulis dengan notasi yang mudah dimengerti sedemikianhingga langkah-langkah tersebut dapat dilaksanakan olehpemroses. Algoritma mencerminkan cara berpikirpemrogram dalam menyelesaikan masalah dalam hal inikonsep logika menyelesaikan suatu masalah, sedangkanprogram merupakan realisasi algoritma dalam bahasapemrograman, dengan kata lain program adalahimplementasi algoritma dalam bahasa pemrograman

Page 3535tertentu. Dengan membuat algoritma akanmempermudah pemrogram dalam mengkonversikan suatupermasalahan ke dalam bahasa pemrograman karenadalam algoritma tersebut telah tertuang langkah-langkah,konsep-konsep maupun dasar dalam scripting programyang akan dibuat. Algoritma yang ditulis merupakansketsa program atau desain pemecahan masalah yangakan direalisasikan menjadi suatu program. Jikaalgoritmanya benar dan dapat dipertanggungjawabkanmaka sudah pasti scripting program tersebut dalamoperasi logikanya juga benar. Pembuatan algoritma mempunyai banyak keuntungandiantaranya:1.Pembuatan atau penulisan algoritma tidak tergantungpada bahasa pemrograman manapun, artinya penulisan algoritma independen dari bahasapemrograman dan komputer yang mengeksekusinya.2.Notasi algoritmik dapat diterjemahkan ke dalamberbagai bahasa pemrograman.3.Apapun bahasa pemrogramannya, output yang akandikeluarkan sama karena algoritmanya sama.Beberapa hal yang perlu dalam membuat algoritma

Page 3636diperhatikan:1.Teks algoritma berisi deskripsi langkah-langkahpenyelesaian masalah. Deskripsi tersebut dapat ditulisdalam notasi apapun asalkan mudah dimengerti dandipahami.2.Tidak ada notasi yang baku dalam penulisan teksalgoritma seperti pada notasi bahasa pemrograman.Notasi yang digunakan dalam menulis algoritmadisebut notasi algoritmik.

Page 19: Pseude Code Algoritma

3.Tiap orang dapat membuat aturan penulisan dan notasialgoritmik sendiri. Hal ini karena teks algoritma tidaksama dengan teks program. Namun supaya notasialgoritmik mudah ditranslasikan ke dalam notasibahasa pemrograman tertentu, maka sebaiknya notasialgoritmik tersebut berkorespondensi dengan notasibahasa pemrograman secara umum.4.Notasi algoritmik bukan notasi bahasa pemrograman,karena itu pseudocode dalam notasi algoritmik tidakdapat dijalankan oleh komputer. Agar dapat dijalankanoleh komputer, pseudocode dalam notasi algoritmikharus ditranslasikan atau diterjemahkan ke dalamnotasi bahasa pemrograman yang dipilih. Perlu diingatbahwa orang yang menulis program sangat terikatdalam aturan tata bahasanya dan spesifikasi mesin

Page 3737yang menjalankannya. 5.Algoritma sebenarnya digunakan untuk membantu kitadalam mengkonversikan suatu permasalahan ke dalambahasa pemrograman.6.Algoritma merupakan hasil pemikiran konseptual,supaya dapat dilaksanakan oleh komputer, algoritmaharus ditranslasi ke dalam notasi bahasapemrograman. Ada beberapa hal yang harusdiperhatikan ketika translasi tersebut yaitu:a)Pendeklarasian variabel.Apakah bahasa pemrograman yang akan digunakanmembutuhkan pendeklarasian variabel karena tidaksemua bahasa pemrograman membutuhkannya.b)Pemilihan tipe data. Apabila bahasa pemrograman yang akan digunakanmembutuhkan pendeklarasian variabel maka perludipertimbangkan pada saat pemilihan tipe data.c)Pemakaian instruksi-instruksi.Beberapa instruksi mempunyai kegunaan yangsama tetapi masing-masing memiliki kelebihan dankekurangan yang berbeda.d)Aturan sintaks.Pada saat menulis program kita terikat dengan

Page 3838aturan sintaks dari bahasa pemrograman yang akandigunakan.

Page 20: Pseude Code Algoritma

e)Tampilan hasil.Pada saat membuat algoritma kita tidakmemikirkan tampilan hasil yang akan disajikan.Hal-hal teknis ini kita perhatikan ketikamengkonversikannya menjadi program.f)Cara pengopersian compiler atau interpreter. Bahasa pemrograman yang digunakan termasukkelompok compiler atau interpreter.

2.2 Penyajian Algoritma Penyajian algoritma secara garis besar bisa dalam 2bentuk penyajian yaitu tulisan dan gambar. Algoritma yang disajikan dengan tulisan yaitu denganstruktur bahasa tertentu (misalnya bahasa Indonesia ataubahasa Inggris) dan pseudocode. Pseudocode adalah kodeyang mirip dengan kode pemrograman yang sebenarnya. Pseudocode ditulis berbasis pada bahasa pemrogramantertentu misalnya Pascal, C atau Python, sehingga lebihtepat digunakan untuk menggambarkan algoritma yangakan dikomunikasikan kepada pemrogram. Pseudocodelebih rinci daripada struktur bahasa Inggris, misalnya

Page 3939dalam menyatakan sintaks, tipe data yang digunakan danlain-lain. Sedangkan algoritma yang disajikan dengangambar, misalnya dengan flowchart. Flowchart bukansatu-satunya cara untuk menjelaskan atau menerangkanalgoritma. Cara yang lain diantaranya :1.Structure chart2.DFD (Data Flow Diagram)3.Warnier diagram4.IPO (Input Process Output)5.HIPO (Hierarchical Input Process Output)Flowchart (bagan alir) merupakan representasi secaragrafik dari suatu algoritma atau prosedur untukmenyelesaikan suatu masalah. Dengan menggunakanflowchart akan memudahkan kita untuk melakukanpengecekan apakah ada bagian-bagian yang terlupakandalam analisis masalah. Di samping itu flowchart jugaberguna sebagai fasilitas untuk berkomunikasi antarapemrogram yang bekerja dalam tim suatu proyek.Flowchart ada dua macam :1.Flowchart SistemYaitu diagram alir yang menggambarkan suatu sistemperalatan komputer yang digunakan dalam prosespengolahan data dan hubungan antar peralatan

Page 21: Pseude Code Algoritma

Page 4040tersebut. Flowchart sistem digunakan untukmenggambarkan urutan langkah untuk memecahkanmasalah tetapi hanya untuk menggambarkan prosedurdalam sistem yang dibentuk.Simbol yang digunakan :Contoh :

Page 41412. Flowchart programYaitu bagan yang menggambarkan urutan logika darisuatu prosedur pemecahan masalah.Simbol yang digunakan adalah American NationalStandard Inc.:

Page 4242: (terminal symbol), menunjukkan awal danakhir dari program: (preparation symbol), memberikan niaiawal pada suatu variabel atau counter: (processing symbol), menunjukkanpengolahan aritmatika dan pemindahan data: (input/output symbol), menunjukkan prosesinput atau output: (decision symbol), untuk mewakili operasiperbandingan logika: (predefined process symbol), proses yangditulis sebagai sub program, yaituprosedur/ fungsi: (connector symbol), penghubung padahalaman yang sama: (off page connector symbol), penghubungpada halaman yang berbeda: arah prosesContoh kasus : 1.Menghitung rata-rata tiga buah dataa.Algoritma dengan struktur bahasa Indonesia

Page 4343- Baca bilangan a, b, dan c- Jumlahkan ketiga bilangan tersebut

Page 22: Pseude Code Algoritma

- Bagi jumlah tersebut dengan 3- Tulis hasilnyab.Algoritma dengan pseudocodeinput (a,b,c)Jml = a+b+cRerata = Jml/3output (Rerata)c. Algoritma dengan flowchartGambar 2.1 Flowchart Hitung Rata-RataEndStartInput (a,b,c)Jml = a+b+cOutput (Rerata)Rerata = Jml/3

Page 44442.Algoritma mencetak tiket parkir.Penyelesaian menggunakan flowchart:EndStartBaca waktu masuk, waktu keluar, jeniskendaraan, biaya perjam (sesuai dgnjenis kendaraan) Lama parkir = waktu keluar – wWaktu masukBiaya parkir = lama parkir * biaya perjamCetak Tiket(memuat data-data tentang waktu masuk,waktu keluar, jenis kendaraan dan biaya)

Page 4545Gambar 2.2 Flowchart Cetak Tiket Parkir4.Algoritma konversi suhu dalam derajat Celcius kederajat Kalvin.Penyelesaian menggunakan pseudocode:input (Celcius)Kalvin = Celcius + 273output (Kalvin)2.3Tahap-Tahap Pemrograman Sebelumnya perlu dipahami tigapengertian pokok yakni program, bahasa pemrogramandan pemrograman. Program adalah kata, ekspresi,pernyataan yang disusun dan dirangkai menjadi satukesatuan prosedur yang berupa urutan langkah untukmenyelesaikan masalah yang diimplementasikan denganmenggunakan bahasa pemrograman sehingga dapatdieksekusi oleh komputer. Bahasa pemrograman adalahprosedur atau tata cara penulisan program. Sedangkanpemrograman adalah proses mengimplementasikanurutan langkah untuk menyelesaikan suatu masalahdengan menggunakan suatu bahasa pemrograman.

Page 23: Pseude Code Algoritma

Page 4646Pemrograman meliputi dua tahapan yaitu:1.Fase Problem Solving2.Fase ImplementationFase I Fase IIFase Problem Solving Fase ImplementasiGambar 2.3 Tahapan PemrogramanLangkah-langkah untuk dapat menyelesaikan masalahAnalisa ProblemPerancanganAlgoritmaTestPembuatan ProgramTest

DokumentasiDipakai

Page 4747adalah sebagai berikut:1.Memahami atau menganalisis masalahHal-hal yang harus diketahui dalam analisis masalahsupaya kita mengetahui bagaimana permasalahantersebut:a)Kondisi awal, yaitu input yang tersedia.b)Kondisi akhir, yaitu output yang diinginkan c)Data lain yang tersediad)Operator yang tersediae)Syarat atau kendala yang harus dipenuhiContoh kasus 1:Menghitung biaya percakapan telepon di wartel.a)Input yang tersedia adalah jam mulai bicara dan jamselesai bicara.b)Output yang diinginkan adalah biaya percakapan.c)Data lain yang tersedia adalah besarnya pulsa yangdigunakan dan biaya per pulsa.d)Operator yang tersedia adalah pengurangan (-), penambahan (+) dan perkalian (*).e)Syarat kendala yang harus dipenuhi adalah aturanjarak dan aturan waktu.

Page 4848

Page 24: Pseude Code Algoritma

Contoh kasus 2:Menghitung luas dan keliling lingkaran.a)Input yang tersedia adalah jari-jari lingkaran.b)Output yang diinginkan adalah luas dan kelilinglingkaran.c)Data lain yang tersedia adalah nilai phi (3.14).d)Operator yang tersedia adalah perkalian (*).e)Syarat kendala yang harus dipenuhi tidak ada.2.Merancang atau merumuskan algoritmaBila masalahnya kompleks maka kita bagi ke dalammodul-modul. Tahap penyusunan algoritma seringkalidimulai dari langkah yang global terlebih dahulu.Langkah global ini diperhalus sampai menjadi langkahyang lebih rinci atau detail. Cara pendekatan ini sangatbermanfaat dalam membuat algoritma untuk masalahyang kompleks. Penghalusan lanngkah dengan caramemecah langkah menjadi beberapa langkah. Tiaplangkah diuraikan lagi menjadi beberapa langkah yanglebih sederhana. Penghalusan langkah ini akan terusberlanjut sampai setiap langkah sudah cukup rinci dantepat untuk dilaksanakan oleh pemroses.Contoh kasus:

Page 4949Algoritma menghitung lama percakapan di wartel.A1 : Baca jam mulai (jm:mm:dm)A2 : Baca jam selesai (js:ms:ds)A3 : Hitung selisih (jm:mm:dm) dengan (js:ms:ds)js-jm : ms-mm : ds-dmA4 : Tulis hasil.Hasil tersebut mudah manakala :jam mulai bicara = 10:12:30jam selesai bicara = 10:20:32Lama bicara : 10:20:3210:12:300: 8: 2Masalah akan muncul apabila :jam mulai bicara = 10:50:28jam selesai bicara = 11:10:15Lama bicara : 11:10:1510:50:281:-40:-13Disini memuat negatif, masalah muncul karena

Page 50

Page 25: Pseude Code Algoritma

50ms<mm dan ds<dm. Solusinya semua jam dihitungtotal detiknya, total detik jam selesai bicaradikurangkan total detik jam mulai bicara kemudiandikonversikan kembali dalam format jam : menit :detik.A1 : Baca jam mulai (jm:mm:dm)A2 : Baca jam selesai (js:ms:ds)A3.1 : Konversikan jam mulai bicara ke dalam totaldetik. totdetmulai=(jm*3600)+(mm*60)+dmA3.2 : Konversikan jam selesai bicara ke dalam total detik. totdetselesai=(js*3600)+(ms*60)+dsA3.3 : Hitung selisih jam mulai bicara dan jam selesai bicara dalam detik. totdetbicara = totdetselesai – totdetmulaiA3.4 : Konversikan lama bicara ke dalam format jam : menit : detikjb = totdetbicara div 3600sisa = totdetbicara mod 3600mb = sisa div 60db = sisa mod 60A4 : Tulis hasil (jb:mb:db).

Page 5151Masalah baru akan muncul apabila :jam mulai bicara = 23:58:30jam selesai bicara = 01:04:12Muncul masalah karena js<jm sehingga nilaitotdetselesai lebih kecil daripada totdetmulai,akibatnya totdetbicara bernilai negatif. Sebagaisolusinya js harus ditambah dengan 24.A1 : Baca jam mulai (jm:mm:dm)A2 : Baca jam selesai (js:ms:ds)A3.0 : Jika js<jm maka js=js+24A3.1 : Konversikan jam mulai bicara ke dalam totaldetik. totdetmulai=(jm*3600)+(mm*60)+dmA3.2 : Konversikan jam selesai bicara ke dalam total detik. totdetselesai=(js*3600)+(ms*60)+dsA3.3 : Hitung selisih jam mulai bicara dan jam selesai bicara dalam detik. totdetbicara = totdetselesai – totdetmulai

Page 26: Pseude Code Algoritma

A3.4 : Konversikan lama bicara ke dalam format jam : menit : detik

Page 5252jb = totdetbicara div 3600sisa = totdetbicara mod 3600mb = sisa div 60db = sisa mod 60A4 : Tulis hasil (jb:mb:db).Ciri-ciri algoritma yang baik :a)Precise (tepat, betul, teliti)Setiap instruksi harus ditulis dengan seksama dantidak ada keragu-raguan, dengan demikian setiapinstruksi harus dinyatakan secara eksplisit dantidak ada bagian yang dihilangkan karenapemroses dianggap sudah mengerti. Setiaplangkah harus jelas dan pasti.Contoh: Tambahkan 1 atau 2 pada x.Instruksi di atas terdapat keraguan.b)Jumlah langkah atau instruksi berhingga dantertentu.Artinya untuk kasus yang sama, banyaknyalangkah tetap dan tertentu meskipun datanyaberbeda.c)EfektifTidak boleh ada instruksi yang tidak mungkin

Page 5353dikerjakan oleh pemroses yang akanmenjalankannya.Contoh: Hitung akar 2 dengan presisi sempurna.Instruksi di atas tidak efektif, agar efektif instruksitersebut diubah. Misal: Hitung akar 2 sampai limadigit di belakang koma.d)Harus terminateJalannya algoritma harus ada kriteria berhenti.Pertanyaannya adalah apakah apabila jumlahinstruksinya berhingga maka pasti terminate?e)Output yang dihasilkan tepatJika langkah-langkah algoritmanya logis dandiikuti dengan seksama maka dihasilkan outputyang diinginkan. 3.Menulis programAlgoritma yang telah dibuat diterjemahkan dalam

Page 27: Pseude Code Algoritma

bahasa komputer menjadi sebuah program. Perludiperhatikan bahwa pemilihan algoritma yang salahakan menyebabkan program memiki unjuk kerja yangkurang baik. Program yang baik memiliki standarpenilaian :a. Standar teknik pemecahan masalah

Page 5454a.Teknik Top-DownTeknik pemecahan masalah yang palingumum digunakan. Prinsipnya adalah suatumasalah yang kompleks dibagi-bagi kedalam beberapa kelompok masalah yanglebih kecil. Dari masalah yang keciltersebut dilakukan analisis. Jikadimungkinkan maka masalah tersebutakan dipilah lagi menjadi subbagian-subbagian dan setelah itu mulai disusunlangkah-langkah untuk penyelesaiannyasecara lebih detail.b.Teknik Bottom-UpPrinsip teknik bottom up adalahpemecahan masalah yang kompleksdilakukan dengan menggabungkanprosedur-prosedur yang ada menjadi satukesatuan program sebagai penyelesaianmasalah tersebut.b. Standar penyusunan programa.Kebenaran logika dan penulisanb.Waktu minimum untuk penulisan programc.Kecepatan maksimum eksekusi program

Page 5555d.Ekspresi penggunaan memorie.Kemudahan merawat dan mengembangkanprogramf.User friendlyg.Portabilityh.Pemrograman modularc. Standar perawatan programa.Dokumentasib.Penulisan instruksid. Standar prosedur4.Uji hasil

Page 28: Pseude Code Algoritma

Pertama kali harus diuji apakah program dapatdijalankan. Apabila program tidak dapat dijalankanmaka perlu diperbaiki penulisan sintaksnya tetapi bilaprogram dapat dijalankan maka harus diuji denganmenggunakan data-data yang biasa yaitu data yangdiharapkan oleh sistem yang dibuat maupun data-datayang ekstrem yaitu data yang tidak diharapkan olehsistem. Contoh data ekstrem misalnya programmenghendaki masukan jumlah data tetapi usermengisikan dengan bilangan negatif. Programsebaiknya diuji menggunakan data yang relatifbanyak.

Page 5656Contoh kasus:Menghitung luas persegi panjang.a)Baca panjang dan lebar (P,L)b)Hitung luas (Luas = P + L)c)Cetak hasilMisalkan algoritma di atas dites dengan data panjang= 2 dan lebar = 2. Luas yang dihasilkan sama dengan4. Apabila kita menguji hanya dengan data tersebutmaka bisa jadi kita beranggapan bahwa algoritma tadisudah benar karena 2 x 2 = 4. Padahal tanpa kitasadari langkah yang ditulis adalah Luas = P + L danbukan Luas = P x L. Hal ini terjadi karena salahdalam memilih data untuk melakukan test. 5.Membuat dokumentasiDokumentasi program ada dua macam yaitudokumentasi internal dan dokumentasi eksternal.Dokumentasi internal adalah dokumentasi yang dibuatdi dalam program yakni setiap kita menuliskan barisprogram sebaiknya kita beri komentar atau keterangansupaya mempermudah kita untuk mengingat logikayang terdapat dalam instruksi tersebut, hal ini sangat

Page 5757bermanfaat ketika suatu saat program tersebut akandikembangkan. Dokumentasi eksternal adalahdokumentasi program yang dilakukan dari luarprogram yaitu membuat user guide atau tbukupetunjuk aturan atau cara menjalankan programtersebut.6.Program dipakai

Page 29: Pseude Code Algoritma

2.4 Struktur Dasar Algoritma Algoritma berisi langkah-langkah penyelesaian suatumasalah. Langkah-langkah tersebut dapat beruparuntunan aksi (sequence), pemilihan aksi (selection),pengulangan aksi (iteration) atau kombinasi dariketiganya. Jadi struktur dasar pembangun algoritma adatiga, yaitu :1.Struktur RuntunanDigunakan untuk program yang instruksinyasequential atau urutan.2.Struktur PemilihanDigunakan untuk program yang menggunakanpemilihan atau penyeleksian kondisi.

Page 58583.Struktur PerulanganDigunakan untuk program yang instruksinya akandieksekusi berulang-ulang.

2.5 Latihan1.Belajar memprogram dan belajar bahasa pemrogramanadalah dua hal yang berbeda. Jelaskan.2.Buatlah pseudocode dan flowchart untuk menghitungrata-rata dari sepuluh bilangan yang diinputkan olehuser.3.Buatlah pseudocode dan flowchart untuk menghitungvolume bola.4.Buatlah pseudocode dan flowchart untuk menentukansuatu bilangan bulat positif, ganjil atau genap.5.Buatlah pseudocodedan flowchart untukmenenampilkan sepuluh bilangan ganjil pertama.6.Buatlah pseudocode dan flowchart untuk mengurutkantiga buah kartu.

Page 5959

Bab 3Struktur RuntunanTujuan Pembelajaran Umum:1. Memahami struktur dasar algoritma runtunan2. Membuat algoritma runtunan untuk menyelesaikansuatu permasalahan mengunakan flowchart

Page 30: Pseude Code Algoritma

3.1 RuntunanSuatu masalah yang diselesaikan menggunakan strukturruntunan mempunyai logika bahwa setiap instruksi akandikerjakan satu persatu. Setiap instruksi dilaksanakantepat satu kali, tidak ada instruksi yang diulang maupuntidak dilaksanakan. Urutan instruksi yang dilaksanakanpemroses sama dengan urutan aksi sebagaimana yangtertulis di dalam teks algoritmanya. Akhir dari instruksiterakhir merupakan akhir algoritma. Bila runtunaninstruksi dalam algoritma berturut-turut dilambangkandengan A1, A2, A3, A4, dan A5, maka pelaksanaaninstruksi tersebut adalah :

Page 6060Gambar 3.1 Flowchart RuntunanPerhatikan runtunan instruksi yang dilambangkan denganA1, A2,

A3, A4

dan A5. Mula-mula pemrosesmelaksanakan instruksi A1. Instruksi A2 dilaksanakansetelah instruksi A1 selesai. Selanjutnya instruksi A3

dilaksanakan setelah instruksi A2 selesai, dan seterusnyasampai terakhir instruksi A5

dilaksanakan. Setelahinstruksi A5 selesai dilaksanakan, algoritma berhenti.Urutan penulisan instruksi di dalam algoritma pentingsekali diperhatikan karena urutan instruksi yang berbedadalam struktur runtunan dapat menghasilkan keluaranyang berbeda juga. Urutan langkah di dalam strukturruntunan mencerminkan cara berpikir penyusun algoritma

Page 6161tersebut dalam menuliskan langkah-langkah penyelesaianmasalah. Output dari aksi sebelumnya menjadi input bagiaksi berikutnya. Sebagai contoh perhatikan dua algoritmaberikut :Algoritma pertamaA = 10A = A2+2B = A – 5C = A + B + 3C = C + 5Output (A,B,C)

Page 31: Pseude Code Algoritma

Algoritma pertama menghasilkan keluaran:A = 102B = 97C = 207Algoritma keduaA = 10B = A – 5A = A2+2C = A + B + 3C = C + 5Output (A,B,C)

Page 6262Algoritma pertama menghasilkan keluaran:A = 102B = 5C = 115

4.2 Contoh-Contoh Kasus Runtunan1.Menghitung luas persegi panjang dimana besarnyapanjang dan lebar persegi panjang dimasukkan melaluikeyboard.Jawab :a.Algoritma dengan struktur bahasa Indonesia- Masukkan panjang dan lebar- Kalikan panjang dengan lebar dan simpanhasilnya sebagai luas.- Tulis hasilnyab.Algoritma dengan pseudocodeinput (P,L)Luas = P * Loutput (Luas)c.Algoritma dengan flowchart

Page 6363Gambar 3.2 Flowchart Hitung Luas Persegi Panjang2.Menghitung nilai rata-rata dari dua buah data.Jawab :Algoritma menggunakan pseudocodeinput (x,y)Rerata = (x + y)/2output (Rerata)3.Menghitung luas dan keliling lingkaran denganbesarnya jari-jari lingkaran dimasukkan melaluikeyboard.

Page 32: Pseude Code Algoritma

Page 6464Jawab :a. Algoritma dengan struktur bahasa Indonesia- Tentukan nilai phi sama dengan 3.14- Masukkan jari-jari lingkaran- Kalikan phi dengan kuadrat dari jari-jarinya dansimpan hasilnya sebagai luas.- Kalikan phi dengan dua kali jari-jarinya dansimpan hasilnya sebagai keliling.- Tulis hasilnyab. Algoritma dengan pseudocodephi = 3.14input ( R )L = phi * R * RK = 2 * phi * Routput (L,K)c. Algoritma dengan flowchartInput ( R )Startphi = 3.14

Page 6565Gambar 3.3 Flowchart Hitung Luas dan KelilingLingkaran4. Konversi total detik menjadi berapa jam lebih berapamenit lebih berapa detik. Jawab :a. Algoritma dengan struktur bahasa Indonesia- Baca data atau total detik (misalkan Dt)- Bagilah Dt dengan 3600 (misalkan hasil samadengan J dan sisa hasil bagi sama dengan S)- Bagilah S dengan 60 (misalkan hasil samadengan M dan sisa hasil bagi sama dengan D)

Page 6666- Tulis hasilnya (J, M, D)b. Algoritma dengan pseudocodeinput (Dt)J = Dt div 3600S = Dt mod 3600M = S div 60D = S mod 60output (J, M, D)

Page 33: Pseude Code Algoritma

c. Algoritma dengan flowchart

Page 6767Gambar 3.4 Flowchart Konversi Detik5. Konversi jam, menit dan detik ke dalam total detik. Jawab :Algoritma dengan pseudocode:input (J, M, D)D1 = J * 3600D2 = M * 60Dtot = D1 + D2 + D

Page 6868output (Dtot)6. Menghitung sisi miring dan keliling segitiga siku-sikudengan sisi tegak dan sisi mendatar merupakan input darimasukkan keyboard.Jawab :Algoritma dengan pseudocodeinput(alas,tinggi)sisimiring= sqrt(alas*alas+tinggi*tinggi)keliling = alas + tinggi + sisimiring output(sisimiring,keliling)7. Menukarkan 2 buah nilai A dan BJawab :Algoritma dengan pseudocodeinput (A,B)A = BB = Aoutput (A,B)Algoritma di atas mempunyai logika yang salah.Hasil dari pseudocode tersebut :

Page 6969Sebelum PertukaranBilangan pertama = 14Bilangan kedua = 32Setelah PertukaranBilangan pertama = 32Bilangan kedua = 32Supaya salah satu variabel nilainya tidak hilangkarena tertimpa oleh nilai dari variabel yang lain

Page 34: Pseude Code Algoritma

maka sebelum ditukar nilai tersebut harusdiamankan terlebih dahulu yaitu disimpan divariabel ketiga sebagai variabel bantu. Logikanyamirip dengan pertukaran dua buah gelas yang berisicairan berwarna berbeda. Misalkan gelas pertamaberisi sirup berwarna biru sedangkan gelas keduaberisi sirup berwarna kuning. Dua gelas tersebutakan dipertukarkan isinya sehingga diperlukan gelasketiga untuk menampung isi salah satu gelas.Setelah logika algoritma di atas diperbaiki:input (A,B)temp = AA = BB = temp

Page 7070output (A,B)Proses mempertukarkan nilai A dan B denganmenggunakan Temp sebagai tempat menyimpansementara nilai A.Ilustrasi sebelum pertukaran1432A tempBIlustrasi proses pertukaran141432temp=AA tempB321432A=BA tempB321414B=tempA temp

Page 35: Pseude Code Algoritma

B

Page 7171Ilustrasi setelah pertukaran321414A tempBGambar 3.5 Ilustrasi Pertukaran DataSetelah pertukaran nilai A dan B, nilai temp masihberisi nilai semula yaitu 14. Hal ini karena pengisiannilai A ke dalam temp sama dengan menyalin ataumencopy nilai A ke dalam temp. A sendiri tidakkehilangan nilai akibat pengisian nilai tersebut.Sehingga pengisian nilai temp ke dalam B tetapmeninggalkan nilai di dalam temp yaitu 14.8. Konversi penulisan sebuah huruf kecil menjadi hurufbesar.Jawab :Perlu menggunakan tabel ASCII (American StandardCode for Information Interchange) yang memuatsecara lengkap daftar informasi karakter baku besertaurutannya. Yang termasuk karakter adalah huruf

Page 7272alfabet ('A' .. 'Z', 'a' .. 'z'), angka bulat ('0' .. '9'),operator aritmatika ('+', '-', '*', '/'), tanda baca ('.', ';', ',','?', '!', ':' dan lain-lain) serta karakter-karakter khusus('@', '#', '$', ' ', '%', dan lain-lain). Untuk mengetahuiposisi atau urutan suatu karakter yang ada dalam tabelASCII digunakan fungsi ordinal. Fungsi ini mencariangka urutan dalam tabel ASCII yang digunakan untukmelambangkan karakter tersebut. Fungsi ini tidakdapat berdiri sendiri instruksinya, berartipenggunaannya antara lain ditampung nilainya dalamsuatu variabel atau dilibatkan dalam instruksi lainmisalnya assignment, langsung dicetak ataudimasukkan dalam ekspresi aritmatika. Bentuk umumfungsi ordinal yaitu :variabel=ord(argumen)

ord berarti ordinal dan argumen disini adalah karakteryang akan dicari urutannya di tabel ASCII. Karakter'A' terdapat pada urutan 65 dan 'Z' terdapat di posisi

Page 36: Pseude Code Algoritma

90. Sedangkan 'a' pada posisi 97 serta 'z' pada posisi122. Dengan demikian antara huruf besar dan hurufkecil terpisah dengan jarak posisi 32. Tiap bilanganbulat mempunyai sifat keterututan. Ini berarti bilasebuah nilai bilangan bulat diketahui maka nilai

Page 7373sebelumnya (predecessor) dan nilai sesudahnya(sucessor) dapat diketahui. Untuk mengetahui karakterpada urutan tertentu dalam tabel ASCII digunakanfungsi karakter dengan bentuk umum :variabel=chr(argumen)

chr berarti character dan argumen disini adalahinformasi urutan atau posisi. Algoritma dengan pseudocodeinput (huruf_kecil)posisi_hurufkecil = ord (huruf_kecil)posisi_hurufbesar = posisi_hurufkecil – 32huruf_besar = chr (posisi_hurufbesar) output (huruf_besar)Misal :huruf_kecil = aposisi_hurufkecil = ord ('a') = 97posisi_hurufbesar = 97 – 32 = 65huruf_besar = chr (65) = A9. Buatlah program untuk mengkonversikan penulisansebuah huruf besar menjadi huruf kecil.Jawab :

Page 7474Logikanya sama dengan contoh soal 9.Algoritma dengan pseudocodeinput (huruf_besar)posisi_hurufbesar = ord (huruf_besar)posisi_hurufkecil = posisi_hurufkecil +32huruf_kecil = chr (posisi_hurufkecil) output (huruf_kecil)Misal :huruf_besar = Aposisi_hurufbesar = ord ('A') = 65posisi_hurufkecil = 65 + 32 = 97huruf_kecil = chr (97) = a10. Program untuk mengkonversikan penulisan sebuahkarakter angka menjadi bilangan bulat.Jawab :Kita berpedoman bahwa karakter angka '0' dalam tabelASCII berada pada posisi 48. Disini angka 0 berupa

Page 37: Pseude Code Algoritma

karakter sedangan nilai 48 adalah sebuah bilanganbulat. Supaya angka 0 sebagai karakter dapatditampilkan sebagai angka 0 tetapi berstatus bilanganbulat maka 48 harus dikurangi dengan dirinya sendiriyaitu 48 sehingga menghasilkan bilangan 0.

Page 7575Algoritma dengan pseudocodeinput (bil_karakter)posisi_bilkarakter=ord(bil_karakter)bil_bulat=posisi_bilkarakter–48output (bil_bulat)Misal :bil_karakter = 1posisi_bilkarakter = ord ('1') = 49bil_bulat = 49 – 48 = 1bil_bulat = 1

3.3 Latihan 1.Buatlah algoritma untuk menghitung lama pembicaraandi telepon. Kemudian implementasikan algoritmatersebut dalam bahasa Python.2.Buatlah algoritma untuk menukar nilai dari tiga buahbilangan. Kemudian implementasikan algoritmatersebut dalam bahasa Python.3.Buatlah algoritma untuk konversi derajat Celcius kederajat Reamur, Kalvin dan Fahrenheit. Kemudianimplementasikan algoritma tersebut dalam bahasaPython.

Page 7676

Bab 4Struktur PemilihanTujuan Pembelajaran Umum:1.Memahami penggunaan struktur if dalampengambilan keputusan2. Memahami penggunaan struktur switch dalampengambilan keputusan3.Membuat algoritma program untuk mengambilkeputusan berdasarkan struktur pemilihan if danswitch.Penyelesaian masalah dengan struktur pemilihan ataupercabangan adalah suatu cara pemecahan masalahdengan instruksi-instruksi tertentu yang dapat digunakan

Page 38: Pseude Code Algoritma

untuk mengambil keputusan berdasarkan suatu kondisi.Pernyataan percabangan memungkinkan suatu pernyataandieksekusi hanya jika suatu kondisi terpenuhi atau tidakterpenuhi. Artinya tidak setiap baris atau langkahalgoritma akan dikerjakan. Suatu baris algoritma akan

Page 7777dikerjakan jika kondisinya memenuhi syarat. Strukturpemilihan adalah struktur algoritma yang melakukanproses pengujian untuk mengambil suatu keputusan atautindakan apakah suatu baris instruksi atau blok instruksiakan diproses atau tidak. Contoh : Jika suatu bilangantidak habis dibagi 2 maka bilangan tersebut adalahbilangan ganjil. Disini keputusan untuk menyatakan suatubilangan adalah ganjil berdasarkan kondisi jika bilangantersebut tidak habis dibagi 2.Bentuk instruksi percabangan1.Instruksi IFa. Pernyataan IF Sederhanab. Pernyataan IF-ELSEc. Pernyataan IF Bertingkat2.Instruksi SWITCH

4.1 Instruksi IFSecara umum flowchartnya, sebagai berikut:

Page 7878Gambar 4.1 Flowchart Instruksi IF

4.1.1 Pernyataan IF SederhanaInstruksi ini digunakan untuk memeriksa sebuah kondisidan akan mengeksekusi satu instruksi atau blok instruksi,jika dan hanya jika kondisinya terpenuhi. Test kondisi inisering disebut test satu arah.Bentuk umum pseudocode :pernyataan_Aif <kondisi> then <pernyataan>pernyataan_B

Page 7979ataupernyataan_Aif <kondisi> then <pernyataan1>

Page 39: Pseude Code Algoritma

<pernyataan2>...<pernyataann>endifpernyataan_B4.1.1.1 Instruksi IF dengan Syarat TunggalInstruksi ini digunakan untuk memeriksa sebuah kondisisaja.Contoh :Untuk menyatakan mahasiswa lulus jika nilai akhir >=65if (nilai=65) then write ('Lulus')4.1.1.2 Instruksi IF dengan Syarat MajemukInstruksi ini adalah pernyataan IF yang menggunakanpemeriksaan lebih dari satu kondisi. Kondisi-kondisitersebut dihubungkan dengan operator-operator logikayaitu digunakan operator logika AND dan OR.

Page 8080Contoh :1.Untuk menyatakan apakah mahasiswa dapat mengikutites laboran apabila nilai mata kuliah yangbersangkutan adalah B atau A.if (nilai = 'A') or (nilai = 'B')then write('Dapat mengikuti tes asisten')endif2.Untuk menyatakan mahasiswa lulus jika nilai akhir>=65 dan presensi kehadiran lebih dari 10 kali.if (nilai>=65) and (presensi>=10)then write('Lulus')endifProgram merupakan pengimplementasian dari algoritmayang ditulis dengan bahasa pemrograman, dengandemikian program juga harus dapat mencabang, meloncatatau berulang. Untuk melakukan langkah-langkah itumaka program harus dikendalikan. Dengan menggunakanperintah-perintah pengendali program maka hal tersebutdapat dilakukan. Pengendalian program bahasa Pythonseperti bahasa pemrograman lainnya dapat menggunakaninstruksi if dan if-else. Pada pengambilan keputusanbiasanya operator logika banyak digunakan.

Page 8181Perintah if digunakan untuk mewujudkan percabangan

Page 40: Pseude Code Algoritma

bersyarat, di dalam bahasa Python pernyataan ifmempunyai bentuk dasar yaitu : if kondisi: pernyataan

4.1.2 Instruksi IF - ELSE Instruksi ini digunakan untuk menentukan tindakan yangakan digunakan apabila kondisi bernilai benar dantindakan yang akan digunakan apabila kondisi bernilaisalah.Bentuk umum pseudocode :pernyataan_Aif <kondisi> then <pernyataan1>else <pernyataan2>endifpernyataan_BPengujian kondisi ini dilakukan untuk memilih salah satudari dua alternatif yang tersedia sehingga sering disebuttest dua arah. Secara flowchart dapat digambarkan sepertiberikut:

Page 8282Gambar 4.2 Flowchart Instruksi IF-ELSEInstruksi percabangan if dengan else dalam Pythonseperti di bawah iniif kondisi :pernyataan1else : pernyataan2

4.2 Contoh-Contoh Kasus IF dan IF-ELSE1.Menentukan bilangan genap dan bilangan ganjil.

Page 8383Jawab :Algoritma dengan pseudocode:if (x mod 2 = 0) then write(“x adalah bilangan genap”)else write(“x adalah bilanganganjil”)endif2.Menentukan nilai absolut dari bilangan yangdimasukkan melalui keyboard.Jawab :Algoritma dengan pseudocode

Page 41: Pseude Code Algoritma

input (x)if x>=0 then output (x)else x=x*-1output (x)atau :input (x)if x<0 then x=x*-1output (x)

Page 8484

4.3 Instruksi IF BertingkatBentuk umum pseudocode:if <kondisi_1> then <pernyataan_1>elseif<kondisi_2>then<pernyataan_2>elseif<kondisi_3>then<pernyataan_3>...else <pernyataan_m>endifendifendif

4.4 Contoh-Contoh Kasus IF Bertingkat1.Konversi huruf besar ke huruf kecil dan sebaliknya darihuruf kecil ke huruf besar. Input adalah sembaranghuruf.Jawab :

Page 8585Algoritma dengan pseudocodeAlgoritma pertama:input (huruf)kode = ord (huruf)if kode>=97 then kodebaru = kode –

Page 42: Pseude Code Algoritma

32else kodebaru = kode + 32hurufbaru = chr (kodebaru)output (hurufbaru)Algoritma kedua:input (huruf)kode = ord (huruf)if kode<=90 then kodebaru = kode +32else kodebaru = kode - 32hurufbaru = chr (kodebaru)output (hurufbaru)Algoritma ketiga:input (huruf)kode = ord (huruf)if kode>=65 and kode<=90 then kodebaru = kode + 32else kodebaru = kode - 32hurufbaru = chr (kodebaru)output (hurufbaru)

Page 8686Algoritma keempat:input (huruf)kode = ord (huruf)if kode>=97 and kode<=122 thenkodebaru = kode - 32else kodebaru = kode + 32hurufbaru = chr (kodebaru)output (hurufbaru)2.Mencari data terbesar diantara tiga buah data.Jawab :Algoritma dengan pseudocodeinput (A,B,C)if A>=B thenif A>=C then output (A)else output (C)endifelse if B>=C then output (B)else output (C)endifendif3.Pengelompokan nilai dengan ketentuan:

Page 87

Page 43: Pseude Code Algoritma

87Jika nilai angka >= 90 maka nilai huruf = AJika nilai angka >= 80 maka nilai huruf = BJika nilai angka >= 70 maka nilai huruf = CJika nilai angka >= 60 maka nilai huruf = DJika nilai angka < 60 maka nilai huruf = EJawab : Algoritma dengan pseudocodeinput(grade) if grade>=90 then write ("Nilai=A")else if grade >= 80 then write ("Nilai=B")else if grade >= 70 then write ("Nilai=C")else if grade >= 60 then write ("Nilai=D")else write("Nilai=E")4.Konversi nilai huruf menjadi nilai angka.Jawab : Algoritma dengan pseudocode

Page 8888input (nilaihuruf)if nilaihuruf='A' then nilaiangka=4else if nilaihuruf='B' then nilaiangka=3else if nilaihuruf='C' thennilaiangka=2else if nilaihuruf='D' thennilaiangka=1else if nilaihuruf='E'thennilaiangka=0endifendifendifendifendifoutput (nilaiangka)5.Buatlah komentar kelulusan untuk teman anda.Jawab : Algoritma dengan pseudocodeinput(na)if na>=85 thennh = 'A'komentar='Anda layak dapat bintang'else

Page 44: Pseude Code Algoritma

if na>=70 and na<=84 then

Page 8989nh = 'B'komentar='Good...Good...Good'else if na>=55 and na<= 69 thennh = 'C'komentar='Lumayan deh'elseif na>=30 and na<= 54 thennh = 'D'komentar='Don't worry,next time better'else if na<=29 thennh = 'E'komentar='Anda tidak lulus'else komentar='Nilai tidak dikenal'endifendifendifendifendifoutput (nh,komentar)6.Buatlah program untuk mencari akar-akar daripersamaan kuadrat ax2

+ bx + c = 0.Jawab : Koefisien a, b, dan c bisa mempunyai sembarang nilaitermsuk nol. Akar-akar persamaan kuadrat bergantung

Page 9090dari nilai-nilai koefisiennya. Berdasarkan nilai-nilaikoefisien tersebut disusun kemungkinan-kemungkinansebagai berikut:Bila koefisien a = 0 maka ax2

+ bx + c = 0 bukanpersamaan kuadrat.Perhitungan determinan D = b2

–4ac.Jika D negatif (D<0) maka ax2

+ bx + c = 0mempunyai akar imajiner. Dalam perhitungan,komponen imajiner i akan diabaikan, tetapi akan

Page 45: Pseude Code Algoritma

dicetak pada keluarannya sebagai status akar.Jika D nol (D=0) maka ax2

+ bx + c = 0 mempunyaidua akar riil yang kembar yaitu:x1=x2=-b/2aJika D positif (D>0) maka ax2

+ bx + c = 0mempunyai dua akar yang berlainan yaitu:x1=(-b+sqrt(d))/2ax2=(-b-sqrt(d))/2aAlgoritma dengan pseudocodeinput (a,b,c)if a=0 then write ('Bukan persamaan kuadrat')else

Page 9191D=(b*b)-(4*a*c)if D<0 then write ('Akar imajiner')else if D=0 thenx=-b/2*aoutput (x)elsex1=(-b+sqrt(d))/2*ax2=(-b-sqrt(d))/2*aoutput (x1,x2)endifendifendif7. Mengurutkan tiga huruf yang dimasukkan darikeyboard dan user disediakan pilihan model penyajianyaitu ascending atau descending.Jawab:Tiga huruf yang dimasukkan bisa huruf besar semua,huruf kecil semua atau kombinasi huruf besar danhuruf kecil. Algoritma dengan pseudocodeinput (h1,h2,h3)input (pilihan)if pilihan=1 thenif h1>h2 then

Page 9292temp=h1

Page 46: Pseude Code Algoritma

h1=h2h2=tempendifif h1>h3 thentemp=h1h1=h3h3=tempendifif h2>h3 thentemp=h2h2=h3h3=tempendifendifoutput (h1,h2,h3)else if pilihan=2 thenif h1<h2 thentemp=h1h1=h2h2=tempendifif h1<h3 thentemp=h1h1=h3h3=tempendifif h2<h3 then

Page 9393temp=h2h2=h3h3=tempendifendifoutput (h1,h2,h3)8. Mencetak nama bulan berdasarkan nomor urutannya.Jawab : Algoritma dengan pseudocodeif (nobulan=1) then write ('Januari')elseif(nobulan=2)thenwrite('Februari')else if (nobulan=3) then write ('Maret')

Page 47: Pseude Code Algoritma

else if (nobulan=4) then write ('April')else if (nobulan=5) then write ('Mei')else if (nobulan=6) then write('Juni')else if (nobulan=7) then write('Juli')else if (nobulan=8) then write ('Agustus')else if (nobulan=9) then write ('September')else if (nobulan=10) then write ('Oktober')else if (nobulan=11) then write ('Nopember')else if (nobulan=12) then

Page 9494write ('Desember')Untuk mempermudah pencarian kesalahan, sebaiknyapenulisan pseudocode tidak dibuat rata kiri.

4.5 Instruksi SWITCHPemilihan proses menggunakan instruksi IF selaludidasarkan pada dua pilihan yang bisa terjadi. Dengandemikian untuk mentest lebih dari dua pilihan harusdigunakan sejumlah instruksi IF seperti terlihat padabentuk umum instruksi IF untuk pilihan jamak. Strukturstatemen yang demikian seringkali membuat bingung.Pemilihan proses untuk sejumlah pilihan kondisi bisadilaksanakan dengan instruksi SWITCH. PernyataanSWITCH digunakan untuk menyederhanakan instruksiIF-ELSE yang bertingkat-tingkat. Semua masalah yangbisa diselesaikan menggunakan instruksi SWITCH pastijuga bisa ditangani dengan menggunakan instruksi IF,tetapi tidak berlaku sebaliknya c.Bentuk umum pseudocode: switch <pilihan>

Page 9595case <pilihan1> : <aksi1>case <pilihan2> : <aksi2>...case <pilihann> : <aksin>{otherwise aksi} endcasepilihan1, pilihan2, ..., pilihann mempunyai nilaikebenaran. Tiap pilihan diperiksa nilai kebenarannya,

Page 48: Pseude Code Algoritma

mulai dari pilihan pertama sampai ditemukan pilihan yang bernilai benar. Jika pilihan ke-i bernilai benar makaaksi ke-i dilaksanakan. Pilihan berikutnya yakni pilihanke-i+1 sampai dengan pilihan ke-n tidakdipertimbangkan lagi. Aksi yang dipasangkan dengan ke-i dapat berupa satu baris instruksi atau blok instruksi.Apabila tidak ada satupun pilihan yang bernilai benarmaka aksi sesudah otherwise dikerjakan. Penulisanotherwise bersifat optional.

Page 9696Gambar 4.3 Flowchart Instruksi SWITCH

4.6 Contoh-Contoh Kasus SWITCH 1.Konversi nilai huruf menjadi nilai angka.Jawab:Algoritma dengan pseudocodeinput (na)

Page 9797switch (na) case 'A' : nh=4case 'B' : nh=3case 'C' : nh=2 case 'D' : nh=1 case 'E' : nh=0otherwise write ('MasukkanA/B/C/D/E')endcase2.Pemilihan mobil.Jawab:Algoritma dengan pseudocodeinput (no)switch (no) case 1 : write ('PEUGEOT')case 2 : write ('BMW')case 3 : write ('AUDI')case 4 : write ('FIAT')case 5 : write ('VW')case 6 : write ('TIMOR')otherwise write ('Masukkan 1 s/d6')endcase3. Menampilkan nama bulan berdasar atas input bilanganinteger 1 s/d 12.Jawab :

Page 98

Page 49: Pseude Code Algoritma

98Algoritma dengan pseudocodeinput (nobulan)switch (nobulan) case 1 : write ('Bulan Januari')case 2 : write ('Bulan Februari') case 3 : write ('Bulan Maret')case 4 : write ('Bulan April')case 5 : write ('Bulan Mei')case 6 : write ('Bulan Juni')case 7 : write ('Bulan Juli')case 8 : write ('Bulan Agustus')case 9 : write ('Bulan September')case 10 : write ('Bulan Oktober')case 11 : write ('Bulan Nopember')case 12 : write ('Bulan Desember')otherwise write ('Nomor bulan salah')end case

4.7 Latihan1.Tuliskan algoritma untuk menentukan bilangan yangdimasukkan antara 0 sampai 10 adalah bilangan primaatau bukan2.Tuliskan algoritma untuk menentukan tahun kabisat3.Tuliskan algoritma untuk menentukan jumlah haridalam bulan, yang dimasukkan adalah kode bulan1..12.

Page 99994.Tuliskan algoritma untuk menentukan wujud air .Jika suhu <=0 maka benda padat.Jika suhu>=100 maka uap/gas.Jika suhu>0 dan suhu<100 maka cair.5.Tuliskan algoritma untuk menentukan luas dan volumebola ( L = 4.phi.R2

, V = 4/3.phi.R3

).6.Tuliskan algoritma untuk menentukan jarak atau titiktengah dari 2 titik yang diinputkan.7.Tuliskan pseudocode dari flowchart sebagai berikut ini:

Page 1001008.Tuliskan algoritma untuk menentukan koordinat titikada di kuadran I, II, III, atau IV.9.Tuliskan algoritma untuk menyelesaikan persamaanlinier dari

Page 50: Pseude Code Algoritma

ax + by = cdx + ey = f

Page 1011019.Tuliskan algoritma untuk menampilkan zodiacberdasarkan bulan dan tanggalnya.10.Tuliskan algoritma dimana user diberi pilihan sebagaiberikut:Menu Pilihan BidangA. Jajaran GenjangB. Persegi PanjangC. Bujur SangkarD. LingkaranE. SegitigaF. TrapesiumSetiap pilihan bidang menghitung luas dan kelilingdari bidang yang dipilih. Ukuran-ukuran yangberkaitan dimasukkan melalui keyboard. 12.Tuliskan algoritma untuk mengetahui apakah datakedua bisa digunakan untuk membagi data pertama.Apabila data pertama tidak bisa dibagi oleh data keduamaka algoritma akan mengeluarkan pesan. Apabiladata pertama bisa dibagi oleh data kedua makaalgoritma akan menampilkan hasil dari pembagiantersebut serta seandainya terdapat sisa pembagianmaka algoritma harus dapat menampilkan nilainya

Page 102102

Page 103103

Bab 5Struktur PerulanganTujuan pembelajaran umum:1.memahami algoritma perulangan dengan strukturFOR2.memahami algoritma perulangan dengan strukturWHILE 3.memahami algoritma perulangan dengan strukturDO-WHILE.Andaikan kita diminta menjumlahkan 10 buah bilanganyang dimasukkan melalui keyboard dan kita

Page 51: Pseude Code Algoritma

menyelesaikan masalah di atas menggunakan struktursequence atau runtunan maka algoritmanya berupapseudocode sebagai berikut : input(x1) input(x2)input(x3)

Page 104104input(x4)input(x5)input(x6) input(x7) input(x8) input(x9) input(x10) jumlah=x1+x2+x3+x4+x5+x6+x7+x8+x9+x10output(jumlah)Pseudocode di atas benar tetapi tidak efisien, bayangkansaja seandainya data yang harus dijumlahkan relatif besarmisalnya 1000 buah maka berapa banyaknya barisinstruksi untuk membaca data dan panjangnya penulisaninstruksi untuk menjumlahkan datanya. Untuk masalahini solusinya kita menggunakan struktur iteration atauperulangan. jumlah=0 for i=1 to 1000 do input(x) jumlah=jumlah+x endfor output(jumlah)Instruksi perulangan digunakan untuk menjalankan satuatau beberapa instruksi sebanyak beberapa kali jika suatu

Page 105105kondisi terpenuhi. Dengan instruksi perulanganmemungkinkan kita untuk menjalankan beberapainstruksi hanya dengan menuliskan intruksi tersebut satukali saja. Proses perulangan biasanya digunakan, untuk :1.Mengulang proses pamasukan data.2.Mengulang proses perhitungan.3.Mengulang proses penampilan hasil pengolahan data.Struktur perulangan terdiri dari empat bagian :1.Kondisi perulangan, yaitu ekspresi boolean yang harusdipenuhi untuk melaksanakan pengulangan. Kondiisi

Page 52: Pseude Code Algoritma

ini bisa dinyatakan secara eksplisit oleh pemrogramatau dikelola secara implisit oleh komputer.2.Badan perulangan, yaitu satu atau lebih instruksi yangakan diulang.3.Inisialisasi, yaitu aksi yang dilakukan sebelumperulangan dilakukan pertama kali.4.Terminasi, yaitu aksi yang mengakibatkan perulangandihentikan.Di dalam algoritma terdapat beberapa macam strukturperulangan. Beberapa struktur dapat dipakai untukmenyelesaikan masalah yang sama tetapi ada strukturperulangan yang hanya cocok dipakai untuk masalah

Page 106106tertentu. Pemilihan struktur perulangan untukpenyelesaian suatu masalah dapat mempengaruhikebenaran algoritma yang dibuat. Pemilihan strukturperulangan yang tepat bergantung pada masalah yangakan diselesaikan.Macam-macam struktur perulangan :1.Instruksi FOR2.Instruksi WHILE-DO

5.1 Instruksi FOR Instruksi perulangan yang paling sering digunakan adalahinstruksi FOR. Instruksi ini digunakan apabila kita tahusecara pasti banyaknya perulangan yang akan dilakukan. Bentuk umum pseudocode FOR format naik:for indeks=nilai_awal to nilai_akhirdo<instruksi/blok instruksi>endforBentuk umum flowchart :

Page 107107Gambar 5.1 Flowchart Instruksi FOR Format NaikCara kerjanya:1.Indeks diassign dengan nilai awal.2.Indeks dibandingkan dengan nilai akhir.3.Jika indeks <= nilai akhir makaa. Badan loop dikerjakan.b. Secara otomatis nilai indeks ditambah 1.c. Indeks dibandingkan dengan nilai akhir.4.Jika indeks > nilai akhir maka akan dikerjakan statemenpertama sesudah “endfor” (badan loop).

Page 53: Pseude Code Algoritma

Page 108108Bentuk umum pseudocode FOR format turun:forindeks=nilai_awaldowntonilai_akhir do<instruksi/blok instruksi>endforBentuk umum flowchart :Gambar 5.2 Flowchart Instruksi FOR Format TurunCara kerjanya:1.Indeks diassign dengan nilai awal.2.Indeks dibandingkan dengan nilai akhir.

Page 1091093.Jika indeks >= nilai akhir makaa. Badan loop dikerjakan.b. Secara otomatis nilai indeks dikurangi 1.c. Indeks dibandingkan dengan nilai akhir.4.Jika indeks < nilai akhir maka akan dikerjakan statemenpertama sesudah “endfor” (badan loop).Contoh :1.Indeks perulangan menaikfor i=1 to 3 dooutput (i)endfor2.Indeks perulangan menurun for i=1 downto 3 dooutput (i)endforPengembangan instruksi FOR selanjutnya adalahinstruksi FOR bertingkat, dimana urutan instruksi dimulaidari perulangan yang paling dalam. Syarat-syarat yangharus dipenuhi dalam penggunaan instruksi ini adalah:1.Setiap perulangan tidak boleh menggunakan variabel

Page 110110counter atau indeks yang sama.2.Antara perulangan-perulangan tersebut tidak bolehsaling berpotongan (overlapping).

5.2 Contoh-Contoh Kasus FOR 1.Menuliskan angka 1 s/d 10 dengan masing-masing

Page 54: Pseude Code Algoritma

output diberi keterangan yang berbeda pada saat 3 dan8. Output yang dihasilkan misal :angka = 1angka = 2 angka = 3 ini angka favoritkuangka = 4angka = 5 angka = 6angka = 7angka = 8 ini angka favorit temenkuangka = 9angka = 10Jawab :Algoritma dengan pseudocode:for angka=1 to 10 do

Page 111111if angka=3 then komentar ('ini angka favoritku')output (angka,komentar)else if angka=8 thenkomentar ('ini angka favorittemenku')output (angka,komentar)endifelse output (angka)endifendifendfor

2.Buatlah program untuk menghitung banyaknya databernilai positif, negatif dan nol dari n buah data yangdimasukkan melalui keyboard.Jawab :Algoritma dengan pseudocodeinput (n)cacahpos=0cacahneg=0cacahnol=0for i=1 to n doinput (x)if x>0 then cacahpos=cacahpos+1else if x<0 then cacahneg=cacahneg+1

Page 112112else cacahnol=cacahnol+1endforoutput (cacahpos,cacahneg,cacahnol)3.Buatlah program untuk menjumlahkan n buah data

Page 55: Pseude Code Algoritma

kemudian dihitung rata-ratanya.Jawab :Algoritma dengan pseudocode:input (n)jumlah=0for i=1 to n doinput (bil)jumlah=jumlah+bilendforrata=jumlah/noutput (rata)4.Buatlah program untuk menjumlahkan n buah datatetapi yang dijumlahkan hanya data ganjil.Jawab :

Page 113113Algoritma dengan pseudocode:input (n)jganj=0for i=1 to n doinput (bil)if bil mod 2 = 1 then jganj=jganj+bilendforoutput (jganj)5.Buatlah program untuk menjumlahkan n buah datatetapi hanya data bernilai positif saja yangdijumlahkan.Jawab :Algoritma dengan pseudocode:input (n)jumlah=0for i=1 to n doinput (bil)if bil>0 then jumlah=jumlah+bilendforoutput (jumlah)6.Buatlah program untuk menjumlahkan bilangan ganjil

Page 114114bernilai negatif yang lebih kecil dari -99 dari n buahdata.Jawab :Algoritma dengan pseudocode:input(n)jganj=0

Page 56: Pseude Code Algoritma

for i=1 to n doinput(bil)if bil<-99 then if bil%2!=0 thenjganj=jganj+bilendifendifendforoutput (jganj)7.Buatlah program untuk mencari data terbesar dan dataterkecil dari n buah data.Jawab :Cara Pertama:

Page 115115Asumsikan nilai maksimum (max) sementara adalahbilangan bulat -32768 sedangkan nilai minimum (min)sementara adalah 32767. Bacalah data bilangan daripiranti masukan. Setiap kali pemasukan data,bandingkan data tersebut dengan nilai max dan minuntuk menentukan data terbesar dan data terkecil. Padaakhir perulangan, max berisi data terbesar dan minberisi data terkecil.Cara Kedua :Nilai maksimum sementara dan nilai minumumsementara mula-mula diinisialisasikan nilainya samadengan nilai data pertama. Langkah ini diambil untukmengantisipasi apabila ternyata dari n buah datatersebut nilainya tidak terdapat pada range -32767 s/d32768 karena jika tidak dikendalikan dengan baikmaka di akhir pencarian tidak memberikan hasil yangsesuai dengan kenyataan. Algoritma dengan pseudocode:Cara Pertama:input (n)max=-32767min=32768for i=1 to n do

Page 116116input (bil)if bil>max then max=bilif bil<min then min=bilendfor

Page 57: Pseude Code Algoritma

output (max,min)Cara Kedua:input (n)input (bil)max=bilmin=bilfor i=2 to n doinput (bil)if bil>max then max=bilif bil<min then min=bilendforoutput (max,min)8.Buatlah program untuk mencari data terkecil pertamadan data terkecil kedua dari n buah data yangdimasukkan melalui keyboard.Jawab :Algoritma dengan pseudocode:

Page 117117input(n)input(a)input(b)if a>b thenmin1=bmin2=aendifelse:min1=amin2=bendiffor i=2 to n doinput(bil)if bil>min1 and bil<min2 thenmin2=bilendifelse if bil<min1 and bil<min2 thentemp=min1min1=bilmin2=tempendifendforoutput (min1,min2)

Page 118118

Page 58: Pseude Code Algoritma

9.Buatlah program untuk mencari data negatif terbesardan data positif terkecil dari n buah data yangdimasukkan melalui keyboard.Jawab :Algoritma dengan pseudocode:input (n)maxneg=-32768minpos=32767for i=1 to n doinput (bil)if bil>0 thenif bil<minpos then minpos=bilendifelse if x<0 thenif x>maxneg then maxneg=bilendifendifendforoutput (maxneg,minpos)

5.3 Instruksi WHILE - DOInstruksi perulangan ini dapat digunakan apabila kitabelum tahu secara pasti berapa kali banyaknyaperulangan yang akan dilakukan. Berakhirnya prosesperulangan ditentukan oleh sutu kondisi. Selama kondisi

Page 119119terpenuhi maka perulangan terus dilakukan dansebaliknya bila kondisinya tidak terpenuhi makaperulangan dihentikan. Bentuk umum pseudocode:while <kondisi> do<instruksi/blok instruksi>endwhileBentuk umum flowchart :Gambar 5.3 Flowchart Instruksi WHILE - DOCara kerjanya:1.Sebelum masuk ke “while-loop” kondisi yangmerupakan ekspresi boolean harus dudah mempunyai

Page 120120nilai.2.Jika kondisi bernilai true maka seluruh badan loopdikerjakan.3.Dicek kembali apakah kondisi bernilai true atau false.Jika kondisi bernilai true maka maka tidak adaperubahan, artinya kembali mengerjakan badan loop.

Page 59: Pseude Code Algoritma

Jika kondisi bernilai false maka langsung mengerjakanstatemen pertama sesudah “endwhile”.4.Looping berhenti setelah kondisi bernilai false,sehingga harus ada statemen yang mengakibatkankondisi bernilai false. Tetapi jika kondisi tetap truemaka terjadi infinite true, artinya jika tidak adastatemen yang mengakibatkan kondisi bernilai falsemaka terjadi infinite loop.

5.4 Contoh-Contoh Kasus WHILE_DO1.Menuliskan angka 1 s/d 10 dengan masing-masingoutput diberi keterangan yang berbeda pada saat 3 dan8. Output yang dihasilkan misal :angka = 1angka = 2 angka = 3 ini angka favoritkuangka = 4

Page 121121angka = 5 angka = 6angka = 7angka = 8 ini angka favorit temenkuangka = 9angka = 10Jawab :Algoritma dengan pseudocode:angka=1while angka<=10 doif angka=3 then komentar ('ini angka favoritku')output (angka,komentar)endifelse if angka=8 thenkomentar ('ini angka favorittemenku')output (angka,komentar)endifelse output (angka)endwhile

2. Buatlah algoritma untuk menghitung banyaknya data

Page 122122bernilai positif, negatif dan nol dari n buah data yangdimasukkan melalui keyboard.Jawab :Algoritma dengan pseudocodeinput (n)

Page 60: Pseude Code Algoritma

cacahpos=0cacahneg=0cacahnol=0i=1while i<=n doinput (x)if x>0 then cacahpos=cacahpos+1else if x<0 thencacahneg=cacahneg+1else cacahnol=cacahnol+1endifendwhileoutput (cacahpos,cacahneg,cacahnol)3.Buatlah program untuk menjumlahkan n buah datakemudian dihitung rata-ratanya.Jawab :

Page 123123Algoritma dengan pseudocodeinput (n)jumlah=0i=1while i<=n doinput (bil)jumlah=jumlah+bilendwhilerata=jumlah/noutput (rata)4.Buatlah algoritma untuk menjumlahkan n buah datatetapi yang dijumlahkan hanya data ganjil.Jawab :Algoritma dengan pseudocodeinput (n)jganj=0i=1while i<=n doinput (bil)if bil mod 2 = 1 thenjganj=jganj+bilendwhileoutput (jganj)

Page 1241245. Buatlah program untuk menjumlahkan bilangan ganjil

Page 61: Pseude Code Algoritma

bernilai negatif yang lebih kecil dari -99 dari n buah data.Jawab :Algoritma dengan pseudocode:input(n)jganj=0i=1while i<=n doinput(bil)if bil<-99 then if bil%2!=0 thenjganj=jganj+bilendifendifi=i+1endwhileoutput (jganj)6. Buatlah program untuk mencari data terbesar dan dataterkecil dari n buah data.Jawab :

Page 125125Algoritma dengan pseudocode:input (n)input (bil)max=bilmin=bili=2 while i<=n doinput (bil)if bil>max then max=bilif bil<min then min=bilendwhileoutput (max,min)7.Buatlah algoritma untuk mencari data negatif terbesardan data positif terkecil dari n buah data yangdimasukkan melalui keyboard.Jawab :Algoritma dengan pseudocode:input (n)maxneg=-1999999999minpos=1999999999i=1while i<=n doinput (bil)

Page 62: Pseude Code Algoritma

Page 126126if bil>0 thenif bil<minpos then minpos=bilendifelse if x<0 thenif x>maxneg then maxneg=bilendifendifendwhileoutput (maxneg,minpos)8.Buatlah program untuk mencari rata-rata dimana sejakawal banyaknya data yang akan dimasukkan belumditentukan.Jawab :Banyaknya perulangan tidak diketahui secara pastitetapi kita tahu kapan perulangan akan berhenti yaituketika sudah tidak ada lagi data yang akandimasukkan. Supaya perulangan terjadi walaupunhanya sekali, perlu diasumsikan bahwa mula-mulamemang ada data yang akan dibaca, untuk selanjutnyaakan disediakan pesan interaktif apakah ada data lagiyang akan dibaca. Perulangan dihentikan apabilapesan interaktif tersebut dijawab dengan jawaban

Page 127127bahwa tidak ada data lagi yang akan dibaca.Algoritma dengan pseudocode:masih='ya'jumlah=0cacah=0 {banyaknya data mula-mula}while masih='ya' doinput (bil)jumlah=jumlah+bilcacah=cacah+1input(masih)endwhilerata=jumlah/cacahoutput (rata)9.Buatlah algoritma untuk mencari pembagi bersamaterbesar dari dua buah bilangan bulat positif.Jawab :Algoritma dengan pseudocode:input (x,y)sisa=x mod y

Page 63: Pseude Code Algoritma

while sisa <> 0 dox=yy=sisasisa=x mod yendwhile

Page 128128output (y)10.Buatlah algoritma untuk menghitung Indeks PrestasiJawab :Langkah-langkah:a. Membaca bobot sks bobot sks dan nilai huruf yangdiperoleh setiap mata kuliah.b. Mengkonversikan nilai huruf ke nilai angka.c. Menghitung point yang didapat pada setiap matakuliah. Besarnya point diperoleh dari perkalian nilaiangka dengan bobot sks.d. Menjumlahkan point seluruh mata kuliah.e. Menjumlahkan bobot sks seluruh mata kuliah.f. Melakukan pembagian jumlah point dengan jumlahsks untuk mendapatkan Indeks Prestasi seorangmahasiswa.Algoritma dengan pseudocode:masih='y'jpoint=0jsks=0while masih='y'

Page 129129input (sks,nh)if nh='A' then na=4else if nh='B' then na=3else if nh='C' then na=2else if nh='D' then na=1else na=0point=sks*najpoint=jpoint+pointjsks=jsks+sksinput (masih)endwhileIP=jpoint/jsksoutput (IP)11.Buatlah program untuk mengetahui dari n buah datayang dimasukkan dari keyboard, berapakah banyaknya

Page 64: Pseude Code Algoritma

data yang merupakan bilangan prima, semua data yangberupa bilangan prima dijumlahkan kemudian dihitungrata-ratanya.Jawab :Ada beberapa cara untuk mengecek suatu bilanganapakah berstatus prima atau bukan.Cara pertama:Membagi bilangan yang dicek mulai dari 2 hingga

Page 130130bilangan yang akan dicek dikurangi 1 (2 s/d bilangan-1)input (bil)if x=2 then status='prima'else if x<=1 or x mod 2 = 0 then st='bukan prima'elsepembagi=3st='prima'batascek=bil-1while pembagi<=batascek and st='prima'doif x mod pembagi=0 then st='bukanprima'else pembagi=pembagi+1endwhileendifendifoutput (st)Cara kedua:Membagi bilangan yang dicek dengan bilangan-bilangan mulai dari 2 hingga ((bilangan-1)/2). Padametode kedua ini semua pembagi bulat yang mungkinsudah tercakup. Mengapa batas atas pembagi adalah(bilangan-1)/2 ? Karena:a. Pembagi-pembagi di atas bilangan/2 sampai denganbilangan akan membuahkan hasil yang real dalam

Page 131131interval 1 sampai 2.b. Pembagian dengan bilangan/2 tentu tidak dibutuhkanlagi karena telah diwakili oleh pembagian dengan 2.Oleh karena itu pembagi bulat yang bukan 1 dan 2yang mungkin terletak di antara 2 dan bilangan adalahdi dalam interval 2 hingga ((bilangan-1)/2).input (bil)if x=2 then status='prima'else if x<=1 or x mod 2 = 0

Page 65: Pseude Code Algoritma

then st='bukan prima'elsepembagi=3st='prima'batascek=round ((bil-1)/2)while pembagi<=batascek and st='prima'doif x mod pembagi=0 then st='bukanprima'else pembagi=pembagi+1endwhileendifendifoutput (st)Cara ketiga:Membagi bilangan yang dicek dengan bilangan mulai

Page 132132dari 2 hingga akar dari bilangan tersebut. Dasarpemikirannya adalah bilangan-bilangan yang berada diatas akar dari bilangan yang akan dicek itu selalumerupakan kelipatan dari 2, 3, dan bilangan-bilanganprima di bawah akar bilangan yang akan dicek itu. Contoh : Cek bilangan 101 prima atau bukan.Akar dari 101 dibulatkan menjadi 10. Denganmembagi 101 dengan bilangan-bilangan mulai 2hingga 10 sama halnya dengan membagi 101 denganbilangan-bilangan dari 2 hingga 100 karena hampirsemua bilangan di atas 10 merupakan kelipatan daribilangan-bilangan antara 2 hingga 10. Mengapa tidakmembagi dengan 11 atau bilangan-bilangan primayang lain? Karena kelipatan dari bilangan prima sudahpasti bukan bilangan prima.input (bil)if x=2 then status='prima'else if x<=1 or x mod 2 = 0 then st='bukan prima'elsepembagi=3st='prima'batascek=round (sqrt(bil))while pembagi<=batascek and st='prima'do

Page 133133if x mod pembagi=0 then st='bukanprima'else pembagi=pembagi+1endwhile

Page 66: Pseude Code Algoritma

endifendifoutput (st)Cara keempat:Membagi bilangan yang dicek dengan bilangan 2, 3, 5sampai ((bilangan-1)/2). Cara ini merupakanpenyederhanaan dari cara kedua karena:a. Pada cara kedua kita membagi bilangan yang akandicek dengan semua bilangan mulai dari 2 hingga(bilangan-1)/2.b. Pada cara keempat ini kita hanya membagi bilanganyang akan dicek dengan 2 dan bilangan-bilanganganjil di atas 2 sampai ((bilangan-1)2).Dasar pemikirannya adalah bilangan-bilangan genap diatas 2 merupakan kelipatan dari 2.input (bil)if x=2 then status='prima'else if x<=1 or x mod 2 = 0 then st='bukan prima'elsepembagi=3st='prima'

Page 134134batascek=round ((bil-1)/2)while pembagi<=batascek and st='prima'doif x mod pembagi=0 then st='bukanprima'else pembagi=pembagi+2endwhileendifendifoutput (st)Cara kelima:Menggabungkan cara ketiga dan cara keempat. Padacara ketiga kita melakukan pembagian mulai dari 2hingga akar dari bilangan yang akan dicek, jadibilangan pembagi tersebut termasuk juga 4, 6, 8, 10dan bilangan-bilangan genap selanjutnya, padahalbilangan-bilangan tersebut adalah kelipatan 2. Denganmembagi bilangan yang akan dicek dengan 2, 3, 5, 7dan seterusnya hingga akar dari bilangan yang akandicek tentu akan diperoleh hasil yang sama, dengankeuntungan penyingkatan waktu yang sangat drastis.input (bil)if x=2 then status='prima'else if x<=1 or x mod 2 = 0 then st='bukan prima'

Page 67: Pseude Code Algoritma

elsepembagi=3st='prima'

Page 135135batascek=round (sqrt(bil))while pembagi<=batascek and st='prima'doif x mod pembagi=0 then st='bukanprima'else pembagi=pembagi+2endwhileendifendifoutput (st)Algoritma dengan pseudocode:jumlah=0cacah=0input (n)for i=1 to n doinput (bil)if x=2 then status='prima'else if x<=1 or x mod 2 = 0 then st='bukan prima'endifelsepembagi=3st='prima'batascek=round (sqrt(bil))while pembagi<=batascek and st='prima'doif x mod pembagi=0 then st='bukanprima'else pembagi=pembagi+2endwhile

Page 136136endifendifif st='prima' thenjumlah=jumlah+bilcacah=cacah+1endifendforrata=jumlah/cacahoutput (rata)

5.5 Latihan1.Buatlah algoritma untuk mengkonversikan bilangandesimal ke biner.2.Buatlah algoritma untuk menjumlahkan data yang

Page 68: Pseude Code Algoritma

diinputkan tetapi yang dijumlahkan hanya data yangmerupakan bilangan yang habis dibagi oleh variabelcounter-nya saja. 3.Buatlah algoritma untuk menjumlahkan bilangan bulatpositif antara 2 sampai 100 tetapi yang dijumlahkanhanya bilangan yang prima saja. 4.Buatlah algoritma untuk menjumlahkan deret 0+0-2+8+22-52+... dimana banyaknya suku adalah n buah.5.Buatlah algoritma untuk menjumlahkan deret 0+7-

Page 13713726+63-... dimana banyaknya suku adalah n buah6.Buatlah algoritma untuk menghitung penjumlahan deretkuadrat terbesar tetapi masih lebih dari suatu nilaitertentu. Model deretnya adalah 1+4+9+16+...Contoh tampilan program setelah dijalankan:Masukkan batas maksimum = 1001 4 9 16 25 36Hasil penjumlahan deret terbesar =91Banyaknya suku = 67.Diberikan pseudocode sebagai berikut : sum1=0for i=20 to 24 dosum=sum1+(5*i-20)^2sum1=(sum+20)mod 20endforoutput(sum1)Apa hasil akhir dari pseudocode di atas? 8.Diberikan pseudocode sebagai berikut : a=0

Page 138138b=1while b<=8 doinput(c)if c mod b = 0 thena=a+cendifb=b+1endwhileoutput(a)Apa hasil akhir dari pseudocode di atas? 9.Diberikan pseudocode sebagai berikut :

Page 69: Pseude Code Algoritma

a=3b=1while b<=5 doinput(c)if c mod b <> 0 thena=a+cendifb=b+1endwhileoutput(a)

Page 139139Apa hasil akhir dari pseudocode di atas? 10.Buatlah algoritma untuk menghitung banyaknya datayang merupakan kelipatan 3 sekaligus kelipatan 5 dari3000 s/d 7000. 11.Buatlah algoritma untuk mengecek dari 1000 s/d 4000mana saja yang merupakan bilangan prima dan berapabanyaknya. 12.Suatu perusahaan garmen mengadakan rekruitmenkaryawan. Terdapat 500 pelamar. Tahap pertamaadalah seleksi data fisik yaitu untuk jenis kelamin laki-laki yang dibutuhkan mempunyai tinggi minimal 165cm dengan berat badan maksimal 80 kg sedangkanuntuk jenis kelamin perempuan mempunyai tinggiminimal 155 cm dengan berat badan maksimal 65 kg.Buatlah algoritma untuk menghitung berapabanyaknya calon karyawan yang lolos pada tahappertama. 13.Sebuah warung menjual 9 bahan pokok. Buatlahalgoritma untuk membuat nota penjualan yang memuatinformasi nomor nota, barang-barang yang dibeli(nama barang, harga satuan, banyak barang yangdibeli, diskon dan harga total) serta biaya yang harus

Page 140140dibayar. 14.Bagaimana mengkonversikan bilangan sebagaikarakter yang panjangnya lebih dari satu karaktermenjadi bilangan sebagai interger? Buatlahalgoritmanya.15.Algoritma mengubah kata yang ditulis dengan hurufkecil menjadi kata yang ditulis dengan huruf kapital.

Page 70: Pseude Code Algoritma

Page 141141

Bab 6SubprogramTujuan pembelajaran umum:1. memahami algoritma untuk membuat fungsi yangtidak mengembalikan nilai2.memahami algoritma untuk membuat fungsi yang mengembalikan nilai

3. membedakan variable local dan variable global4. memahami algoritma untuk membuat fungsirekursiTerdapat 4 buah data yang diwakili oleh a, b, c dan d.Diberikan ketentuan :a. Jika a > b maka nilai datanya ditukar. b. Jika b > c maka nilai datanya ditukar. c. Jika c > d maka nilai datanya ditukar. Kita buat desain atau rancangan yang mewakilipemecahan masalah berupa pseudocode.

Page 142142input (a,b,c,d)if a > b thentemp = aa = bb = tempendifif b > c thentemp = aa = bb = tempendifif c > d thentemp = aa = bb = tempendifoutput (a,b,c,d)Pseudocode di atas tidak efektif karena ada proses yangsama yaitu menukar nilai data tetapi dituliskan lebih darisatu kali. Seharusnya proses yang sama tadi cukupdituliskan satu kali sebagai subpseudocode dan dapatdipanggil berkali-kali sesuai kebutuhan. Oleh karena ituuntuk menyelesaikan suatu permasalahan yang relatif

Page 71: Pseude Code Algoritma

besar, algoritma perlu dipecah-pecah menjadi

Page 143143subalgoritma-subalgoritma dan ketika ditranslasikanmenjadi program maka di dalamnya terdapat subprogram-subprogram. Subprogram merupakan blok dari kode yangdirancang khusus untuk melaksanakan tugas tertentu.

6.1 SubprogramPemrograman terstruktur adalah pemrograman yangmenitikberatkan pada pemecahan masalah yang kompleksmenjadi masalah yang sederhana yang disebut modul.Program yang terdiri dari modul-modul atau subprogram-subprogram disebut dengan program yang modular.Alasan adanya sub program adalah:1.Pemrograman modular.2.Teknik top down design.3.Mempersingkat atau memperpendek panjang program.4.Menghemat kode program.5.Mempermudah cek kesalahan.Gambaran umum sub program :

Page 144144Gambar 6.1 Gambaran Umum SubprogramBentuk umum pseudocode :function NamaFungsi [(daftar parameter)]<blok instruksi>NamaFungsi = UngkapanendfunctionCara pemanggilan fungsi sebagai berikut:1. Langsung dimanipulasi. aNilai fungsi dicetak, misal:print y,"pangkat ",m,"= ",pangkat(y,m)

bNilai fungsi dijadikan kondisi dalam struktur pemilihan,misal:Program UtamaSub programSub programSub programSub program

Page 145145if hitung(x)>0 :

cNilai fungsi dijadikan kondisi dalam strukturperulangan, misal:while hitung(x):

dNilai fungsi dimasukkan dalam suatu ekspresi, misal:

Page 72: Pseude Code Algoritma

a=10b=hitung(x)+10

2. Ditampung ke dalam nama variabel lain, misal:y=hitung(x)

6.2 Contoh-Contoh Kasus Subprogram1.Menghitung bilangan faktorial. Jawab :Mengapa 0! = 1 sedangkan 1! = 1 pula? Penelusurannyaadalah sebagai berikut:n! = (n-1)! * nn!/n = (n-1)!untuk n = 1 maka1!/1 = (1-1)!1! = 0!karena 0! = 1 maka 1! = 1

Faktorial bilangan negatif tidak ada dan faktorial nol

Page 146146sama dengan faktorial satu yaitu sama dengan 1. Algoritma dengan pseudocode:function Faktorial(n)if n=0 or n=1 then hasil = 1elsehasil = 1for i = 2 to n dohasil=hasil * iendforendifFaktorial=hasil endfunction2. Perkalian dua buah bilangan bulat positif.Jawab:Algoritma dengan pseudocode:function Kali (m,n)Hasil=0for i=1 to n doHasil=Kali+mendforKali=Hasilendfunction

Page 1471473. Perpangkatan xn

. n bernilai nol atau bilangan-bilanganbulat positif.

Page 73: Pseude Code Algoritma

Jawab:Algoritma dengan pseudocode:function Pangkat (x,n)if n=0 then hasil=1elsefor i=1 to n dohasil=hasil*xendforPangkat=hasilendifendfunction4. Menghitung sigma 1+2+3+4+...+n.Jawab :Algoritma dengan pseudocode:function Sigma (n)S=0for i=1 to n doS=S+iendforSigma=S

Page 148148endfunction5. Buatlah program untuk menentukan status setiapbilangan dari n buah data. Status suatu data dibedakandalam tiga macam yakni apakah data tersebut bernilaipositif, negatif atau nol.Jawab :Algoritma dengan pseudocode:function Status (x)if x>0 then St='positif'else if n=0 then St='nol'else St='negatif'endifendifendfunction6. Buatlah program untuk menghitung xn

/n!.Jawab :Untuk menyelesaikan soal di atas perlu dibuat duasubprogram. Subprogram pertama untuk menghitungperpangkatan xn

sedangkan subprogram kedua untuk

Page 74: Pseude Code Algoritma

Page 149149menghitung faktorial n!. Algoritma dengan pseudocode:function pangkat(y,m)if m=0 then pangkat=1elsepangkat=1for i=1 to m dopangkat=pangkat*y endforendifendfunctionfunction factorial(h)if h=0 then facto=1elsey=1fakto=1for i=1 to h dofakto=y*faktoy=y+1endforendifendfunctioninput(x)input(n)

Page 150150g=pangkat(x,n)/factorial(n)output (g)7. Dalam Ilmu Statistika terdapat rumus kombinasi yaitun!/(x!*(n-x)!). Buatlah program untuk menghitungkombinasi.Jawab :Algoritma dengan pseudocode:function factorial(h)if h==0 then fakto=1elsey=1fakto=1for i=1 to h dofakto=y*faktoy=y+1endforendiffactorial=fakto

Page 75: Pseude Code Algoritma

endfunctioninput(x)input(n)

Page 151151g=(factorial(n))/((factorial(x))*factorial(n-x))output (g)8.Buatlah program untuk menghitung perkalian dua buahkombinasi (n!/(x!*(n-x)!))*(m!/(z!*(m-z)!)).Jawab :Algoritma dengan pseudocode:function factorial(h)if h==0 then fakto=1elsey=1fakto=1for i=1 to h dofakto=y*faktoy=y+1endforendiffactorial=faktoendfunctioninput(x)input(n)input(z)input(m)g=((factorial(n))/((factorial(x))*factorial(

Page 152152n-x)))*((factorial(m))/((factorial(z))*factorial(m-z)))output (g)

6.3 RekursiRekursi adalah proses yang bisa memanggil dirinyasendiri. Bentuk rekursi merupakan alternatif dari bentukiterasi atau perulangan. Ada beberapa masalah yang lebihcocok dipecahkan dengan bentuk rekursi. Tetapi secaraumum bentuk rekursi biasanya kurang efisiendibandingkan bentuk iterasi karena rekursi memanggildirinya sendiri sehingga menyebabkan waktu pemrosesanyang lebih besar dibandingkan bentuk iterasi biasa.Proses rekursi akan menggunakan memory stack, semakinlama proses rekursi dikerjakan maka memory stack akanterus berkurang yang berakibat memory stack habis. Dalam rekursi sebenarnya terkandung pengertian fungsi,

Page 76: Pseude Code Algoritma

perbedaannya adalah:a. Rekursi bisa memanggil dirinya sendiri. b. Fungsi harus dipanggil lewat pemanggil fungsi(function call).

Page 153153Rekursi mempunyai beberapa kelemehan yaitu :1.Penggunaan rekursi seringkali harus mengorbankanefisiensi dan kecepatan.2.Masalah yang sering muncul di dalam rekursi adalaheksekusi yang tidak pernah berhenti akibatnya stackmemori akan habis dan komputer hang.Walaupun rekursi mempunyai kelemahan, mengapa kitamemerlukan rekursi? Karena ada beberapa masalah yangakan lebih mudah diselesaikan dengan menggunakanrekursi.Semua instruksi yang disusun secara rekursi dapat puladisusun secara non rekursi, demikian juga hampir semuainstruksi non rekursi dapat disusn secara rekursi.Untuk menyelesaikan suatu kasus menggunakan cararekursi perlu diidentifikasikan terlebih dahulu hal-halsebagai berikut:1.Kapankah langkah-langkah rekursi terjadi. Misalnyadalam kasus perhitungan bilangan faktorial, langkah-langkah rekursi dilakukan selama suatu bilangan lebihbesar daripada 1.2.Bagaimana cara untuk menghentikan rekursi. Suatu fungsi tidak hanya bisa memanggil fungsi lain,

Page 154154melainkan juga bisa memanggil dirinya sendiri.Pemanggilan kepada dirinya sendiri bisa berarti prosesberulang yang tidak bisa diketahui kapan berakhirsehingga dalam rekursi harus ada syarat-syarat berikut:a. Ada titik pemberhentian (stopping state) sebagaipengendali rekursi. b. Adanya langkah induksi yang menuju pada titikpemberhentian.

6.4 Contoh-Contoh Kasus Rekursi1. Menghitung bilangan faktorial.Jawab :Merupakan proses perhitungan deret bilangan denganrumus :n=0, maka n! = 1

Page 77: Pseude Code Algoritma

n>0, maka n! = n*(n-1)!1, jika n = 0 (penghentian rekursi)n!n*(n-1)!, jika n > 0 (langkah induksi)Gambaran Proses Rekursi:

Page 155155Faktorial (4)=Faktorial (4)=4Faktorial (3)=3Faktorial (2)=2Faktorial (1)=1Jadi 4! = 4*3*2*1 = 24Hasil dari proses di tiap tingkat merupakan inputuntuk proses di tingkat atasnya. Faktorial (n) bisadihitung dari Faktorial (n-1), Faktorial (n-1) bisadihitung dari Faktorial (n-2), dan seterusnya.Ilustrasi penelusuran 4! :

Page 156156Gambar 6.2 Ilustrasi Hitung FaktorialAlgoritma dengan pseudocode:function Faktorial(n)if n=0 then Fakto = 1else Fakto = n * Faktorial(n-1)endifFaktorial=FaktoendfunctionKeterangan:a. Dari fungsi di atas bisa dilihat bahwa factorial(x)bisa dihitung dari factorial(x-1), dimanafactorial(x-1)bisadihitungdari

Page 78: Pseude Code Algoritma

factorial(x-2), dan seterusnya.

Page 157157b. Untuk menghitung factorial(x) maka fungsimemanggil nilai factorial(x-1) yang telahdiperoleh, demikian juga untuk menghitung nilaifactorial(x-1) maka fungsi harus memanggilnilai factorial(x-2), dan seterusnya. c. Notasi factorial(x-1) yang digunakan untukmemanggil nilai fungsi sebelumnya sering disebutdengan pemanggil rekursi (recursion call). Rekursidijalankan dengan jumlah x yang semakin menurun.factorial(x-1) artinya rekursi dengan jumlah xyang semakin menurun. 2. Menghitung bilangan Fibonacci. Jawab :Bilangan Fibonacci dapat didefinisikan berdasar deretinteger tak berhingga dengan logika sebagai berikut:n=1 atau n=2, maka Fibo(n) = 1n>2, maka Fibo(n) = Fibo(n-1) + Fibo(n-2)1 1 2 3 5 8 13 21 34 55…..Dari deret di atas dapat dilihat bahwa bilangan ke-n (n>2)dalam deret bisa dicari dari dua bilangan sebelumnyayang terdekat dengan bilangan ke-n, yaitu bilangan ke-(n-1) dan bilangan ke-(n-2). Oleh karena itu jika Fibo(n)

Page 158158menunjukkan bilangan Fibonacci ke-n maka Fibo(n) bisadihitung berdasarkan hubungan rekurens berikut:Fibo(n)=Fibo(n-1)+Fibo(n-2)Karena Fibo(n) ditentukan oleh dua nilai yang berbedadengan argumen yang nilainya lebih kecil, maka untukmencari bilangan Fibonacci diperlukan dua nilai awal,yaitu Fibo(1)=1 dan Fibo(2)=1.Fibo(1)=1Fibo(2)=1Fibo(3)=Fibo(2)+Fibo(1)Fibo(4)=Fibo(3)+Fibo(2)dan seterusnya.Implementasi pencarian Fibonacci (4) :Fibo(4)

Page 159159

Page 79: Pseude Code Algoritma

Fibo(3)Fibo(2)Fibo(1)Fibo(0)Fibo(2)Fibo(1) Fibo(1) Fibo(0)Gambar 6.3 Ilustrasi Bilangan FibonacciAlgoritma dengan pseudocode:function Fibonacci(n)if n=0 or n=2 then Fibo =1else Fibo = Fibonacci(n-1) +Fibonacci(n-2)endifFibonacci=Fiboendfunction3.Perkalian dua buah bilangan bulat positif.Jawab :Misal :4x3=(4x2)+4

Page 160160=(4x1)+4+4= 4+4+4Secara umum dapat dituliskan dalam notasi sebagaiberikut :mxn=(mx(n-1)+mGambar 6.4 Ilustrasi Hitung PerkalianAlgoritma dengan pseudocode:function Kali (m,n)if n=1 then hasil=melse hasil=m+Kali(m,n-1)endifKali=hasil

Page 161161endfunction4. Perpangkatan xn

.Jawab :Ditentukan bahwa pemangkatnya adalah nol danbilangan-bilangan positif. Ilustrasi penelusuran 43

Page 80: Pseude Code Algoritma

adalahsebagai berikut:

Page 162162Gambar 6.5 Ilustrasi Hitung PerpangkatanAlgoritma dengan pseudocode:function Pangkat(x,n)if n=0 then hasil=1else hasil=x*Pangkat(x,n-1)endifPangkat=hasilendfunction

Page 1631635. Menghitung sigma 1+2+3+4+...+n.Jawab :Penelusuran Sigma (5) sebagai berikut:Sigma (5) = Sigma (5-1) + 5= Sigma (4) + 5= Sigma (4-1) + 4 + 5= Sigma (3) + 4 + 5= Sigma (3-1) + 3 + 4 + 5= Sigma (2) + 3 + 4 + 5= Sigma (2-1) + 2 + 3 + 4 + 5= Sigma (1) + 2 + 3 + 4 + 5= 1 + 2 + 3 + 4 + 5Algoritma dengan pseudocode:Function Sigma (n)if n=1 then hasil=1else hasil=Sigma(n-1)+ nendifSigma=hasilendfunction

6.5 Latihan

Page 1641641. Buatlah sebuah fungsi dengan metode rekursiuntuk menghitung nilai dari deret 125+25+5+1+...dimana banyaknya suku adalah n buah suku. 2. Buatlah sebuah fungsi dengan metode rekursiuntuk menghitung nilai dari deret 6+11-18+29+48-... dimana banyaknya suku adalah nbuah suku.

Page 81: Pseude Code Algoritma

3. Buatlah sebuah fungsi dengan metode rekursiuntuk menghitung nilai dari deret -6+10+16-26+44-... dimana banyaknya suku adalah n buahsuku. 4. Buatlah sebuah fungsi dengan metode rekursiuntuk menghitung nilai dari deret 100/24-80/12+60/6-40/3+... dimana banyaknya sukuadalah n buah suku. 5. Buatlah sebuah fungsi dengan metode rekursiuntuk menghitung nilai dari deret 12/5-15/20+18/80-21/320+... dimana banyaknya sukuadalah n buah suku. 6. Buatlah sebuah fungsi dengan metode rekursiuntukmenghitungnilaidarideret100+125+150+175+... dimana banyaknya sukuadalah n buah suku.

Page 1651657. Buatlah sebuah fungsi dengan metode rekursiuntuk menghitung nilai dari deret 2-6+18-54+...dimana banyaknya suku adalah n buah suku. 8. Buatlah sebuah fungsi dengan metode rekursiuntukmenghitungnilaidarideret 4+12+36+108+... dimana banyaknya suku adalahn buah suku.

Bab 7Array

Page 166166Tujuan pembelajaran umum:1. memahami penggunaan array satu dimensi dalammenyusun algoritma2. memahami penggunaan array multidimensidalam menyusun algoritma

Page 82: Pseude Code Algoritma

Perhatikan penggalan algoritma pertama berikut:for i=1 to 8 doinput (x)endforfor i=1 to 8 dooutput (x)endforMisalkan algoritma di atas dijalankan dengan runtunannilai x yang dibaca dari keyboard sebagai berikut: 10 20 30 40 50 60 70 80maka keluaran dari algoritma tersebut adalah:808080

Page 1671678080808080Mengapa 10, 20, 30, 40, 50, 60 dan 70 tidak tercetak?Karena variabel x hanya dapat menampung satu buahnilai dan nilai yang disimpan oleh x adalah nilai yangterakhir kali dimasukkan (contoh disini adalah 80). Nilaiyang terakhir inilah yang dicetak ke piranti keluaran padasetiap kali perulangan. Bandingkan dengan algoritmaberikut:input (x1)input (x2)input (x3)input (x4)input (x5)input (x6)input (x7)input (x8)output (x1)output (x2)output (x3)output (x4)

Page 168168output (x5)output (x6)

Page 83: Pseude Code Algoritma

output (x7)output (x8)Algoritma kedua ini memerlukan 8 buah variabel (x1, x2,x3, x4, x5, x6, x7, x8) untuk menyimpan nilai-nilai x.Bagaimana kalau ada 1000 buah elemen x yang harusdisimpan? Apakah harus menggunakan 1000 buahvariabel? Jelas ini tidak praktis, selain itu akan ada 1000buah perintah input dan output untuk membaca danmenuliskan nilai-nilai x tersebut.Variabel dengan tipe data tunggal hanya dapat digunakanuntuk menyimpan satu buah nilai saja. Untuk menyimpanlebih dari satu nilai data sekaligus dalam sebuah variabeldengan tipe data array. Sehingga pada kasus di atasdengan menggunakan array akan menghemat penggunaannama-nama variabel yang banyak dan perintah input danoutput seluruh elemen array cukup ditulis satu kali distruktur loop.

7.1 Array

Page 169169Dalam beberapa literatur array sering diartikan larik.Array merupakan koleksi data dengan setiap elemen datamenggunakan nama yang sama dan tiap elemen databertipe sama. Setiap elemen array dapat diakses melaluiindeks array. Berdasarkan jumlah dimensi indeks dalam sebuahvariabel array dibedakan menjadi array berdimensi satudan array berdimensi banyak. Terdapat beberapa hal yangperlu diperhatikan apabila akan memasukkan deretan datadalam variabel array:1.Mengetahui tipe data yang digunakan dalam variabelarray. Variabel array numerik hanya dapat menerimadata numeric dan variabel array string hanya dapatmenerima data karakter. String merupakan kumpulandari karakter, biasanya merupakan kumpulan darihuruf dalam alphabet. String didefinisikan sebagaikumpulan dari tipe data char yang diakhiri dengan nullcharacter. Array merupakan kumpulan dari data yangbertipe sama. String merupakan salah satu kasuskhusus dari array, string merupakan array dengan tipedata char. 2.Banyaknya data harus lebih kecil atau sama denganbesarnya ukuran array.3.Instruksi perulangan digunakan untuk membaca deretan

Page 84: Pseude Code Algoritma

Page 170170data dalam suatu variabel indeks.4.Banyaknya indeks yang digunakan menunjukkanbanyaknya ruang memori yang dialokasikan. Supayatidak terjadi pemborosan ruang memori makabanyaknya indeks harus disesuaikan denganbanyaknya data.

7.2 Contoh-Contoh Kasus Array1.Konversi kata dalam huruf besar menjadi kata dalamhuruf kecil.Jawab:Algoritma dengan pseudocode:input(besar)n=len(besar)for i=1 to n doposisi=ord(besar[i])kecil=chr(posisi+32)output (kecil)2.Konversi kata dalam huruf kecil menjadi kata dalam

Page 171171huruf besar.Jawab:Algoritma dengan pseudocode:input(kecil)n=len(kecil)for i=1 to n doposisi=ord(kecil[i])besar=chr(posisi-32)output (besar)3.Konversi sembarang penulisan kataJawab:Algoritma dengan pseudocode:input (kata)n=len(kata)for i=1 to n doposisi=ord(kata[i])if posisi>=65 and posisi<=90 thenkecil=chr(posisi+32)output (kecil)endifelse

Page 172

Page 85: Pseude Code Algoritma

172besar=chr(posisi-32)output (besar)endifendfor4.Konversi karakter bilangan menjadi bilangan integer.Jawab:Algoritma dengan pseudocode:input (bilkar)n=len(bilkar)for i=1 to n doposisi=ord(bilkar[i])bilint=posisi-48output (bilint)endfor5.Jumlah dan rata-rata khusus untuk data-data positif darin buah data.Jawab:Algoritma dengan pseudocode:jumlah=0cacah=0

Page 173173for i=1 to n doinput (x)if x>0 thenjumlah=jumlah+xcacah=cacah+1endifendforrata=jumlah/cacahoutput (rata)6.Mencari data terbesar dan data terkecil beserta letaknya.Jawab:Algoritma dengan pseudocode:input (n)max=A[1]indexmax=1min=A[1]indexmin=1for i=2 to n doif A[i] > max thenmax=A[i]indexmax=iendif

Page 86: Pseude Code Algoritma

if A[i] < min thenmin=A[i]

Page 174174indexmin=iendifendforoutput (max,indexmax,min,indexmin)7.Mencari data terkecil pertama dan terkecil keduabeserta letaknya.Jawab:Algoritma dengan pseudocode:input (n)if A[1] > A[2] thenmin1=A[2]imin1=2min2=A[1]imin2=1elsemin1=A[1]imin1=1min2=A[2]imin2=2endiffor i=3 to n doif (A[i]>min1) and (A[i]<min2)thenmin2=A[i]

Page 175175imin2=i+2else if (A[i]<min1) and (A[i]<min2)thentemp=min1min1=A[i]imin1=i+3min2=tempimin2=i+2endifendifendforoutput(min1,indexmin1,min2,indexmin2)

Page 87: Pseude Code Algoritma

8. Menghitung standar deviasi.Jawab:Algoritma dengan pseudocode:input (n)jumlah=0JKR=0for i=1 to n doinput (x[i])jumlah=jumlah+x[i]

Page 176176endforrata=jumlah/nfor i=1 to n doKR=sqr(x[i]-rata)JKR=JKR+KRendforSD=sqrt(JKR/n)output (SD)

7.3 Latihan1. Buatlah algoritma untuk mencari bilangan primaterbesar kedua dan bilangan prima terkecil keduadisertai posisi atau letaknya dan berapa banyaknyacacah untuk masing-masing bilangan primaterbesar kedua dan bilangan prima terkecil keduadari n buah data.2. Buatlah algoritma untuk menjumlahkan dua buahmatriks.3. Buatlah algoritma untuk melakukan operasiperkalian dua buah matriks.4. Buatlah algoritma untuk menentukan matrikstranspose.

Page 1771775. Buatlah algoritma untuk menghitung banyaknyahuruf kecil dan huruf besar dari sebuah kata yangdimasukkan dari keyboard.

Bab 8Sorting Tujuan pembelajaran umum:1. memahami algoritma selection sort2. memahami algoritma buble sort

Page 88: Pseude Code Algoritma

3. memahami algortima insertion sort4. memahami algoritma merge sortPengurutan (sorting) diartikan sebagai proses penyusunankembali sekumpulan obyek ke dalam urutan tertentu.Tujuan pengurutan untuk mendapatkan kemudahan dalampencarian anggota dari suatu himpunan disamping dapatmempercepat mengetahui data terbesar dan data terkecil,misalkan kita ingin mengetahui perolehan nilai tertinggidan nilai terendah dari hasil ujian. Contoh obyek

Page 178178terurutkan seperti daftar isi, daftar pustaka dan lain-lain.Proses yang terjadi pada pengurutan adalah sebagaiberikut: 1.Perbandingan data. 2.Pertukaran data. Terdapat bermacam-macam metode pengurutan,diantaranya adalah: 1.Selection sort.2.Bubble sort.3.Insertion sort. 4.Merge sort.

8.1 Metode Selection Sort 8.1.1 Pengurutan Naik (Ascending) Proses dari pengurutan dengan menggunakan metodeSelection Sort secara terurut naik adalah sebagai berikut: 1.Mencari data terkecil dari data pertama sampai dengandata terakhir, kemudian ditukar posisinya dengan datapertama. 2.Mencari data terkecil dari data kedua sampai dengandata terakhir, kemudian ditukar posisinya dengan data

Page 179179kedua. 3.Mencari data terkecil dari data ketiga sampai dengandata terakhir, kemudian ditukar posisinya dengan dataketiga. 4.dan seterusnya sampai semua data terurut naik. Apabilaterdapat n buah data yang akan diurutkan makamembutuhkan (n-1) langkah pengurutan, dimanadata terakhir yaitu data ke-n tidak perlu diurutkankarena hanya tinggal satu-satunya. Contoh kasus:Terdapat 8 buah data yang nilainya belum terurut:

Page 89: Pseude Code Algoritma

44 55 12 42 94 18 6 67Data-data di atas akan ditampilkan secara terurut naikmenggunakan metode Selection Sort. Prosespengurutannya adalah sebagai berikut:Proses 1indexmin=1Data ke-2 : A[indexmin] < A[2]Data ke-3 : A[indexmin] > A[3]indexmin=3Data ke-4 : A[indexmin] < A[4]Data ke-5 : A[indexmin] < A[5]

Page 180180Data ke-6 : A[indexmin] < A[6]Data ke-7 : A[indexmin] > A[7]indexmin=7Data ke-8 : A[indexmin] < A[8]Karena A[1] <> A[indexmin] maka dilakukan pertukarannilai data ke-1 dan data ke-indexmin (data ke-7). Akhirdari proses 1 adalah:6 55 12 42 94 18 44 67Kondisi data pada akhir proses pertama ini digunakansebagai masukan pada proses kedua.Proses 2indexmin=2Data ke-3 : A[indexmin] > A[3]indexmin=3Data ke-4 : A[indexmin] < A[4] Data ke-5 : A[indexmin] < A[5]Data ke-6 : A[indexmin] < A[6]Data ke-7 : A[indexmin] < A[7]Data ke-8 : A[indexmin] > A[8]Karena A[2] <> A[indexmin] maka dilakukan pertukarannilai data ke-2 dan data ke-indexmin (data ke-3). Akhir

Page 181181dari proses 2 adalah:6 12 55 42 94 18 44 67Kondisi data pada akhir proses kedua ini digunakansebagai masukan pada proses ketiga.Proses 3indexmin=3Data ke-4 : A[indexmin] > A[4]indexmin=4

Page 90: Pseude Code Algoritma

Data ke-5 : A[indexmin] < A[5] Data ke-6 : A[indexmin] > A[6]indexmin=6Data ke-7 : A[indexmin] < A[7]Data ke-8 : A[indexmin] < A[8]Karena A[3] <> A[indexmin] maka dilakukan pertukarannilai data ke-3 dan data ke-indexmin (data ke-6). Akhirdari proses 3 adalah:6 12 18 42 94 55 44 67Kondisi data pada akhir proses ketiga ini digunakansebagai masukan pada proses keempat.Proses 4indexmin=4

Page 182182Data ke-5 : A[indexmin] < A[5]Data ke-6 : A[indexmin] < A[6] Data ke-7 : A[indexmin] < A[7]Data ke-8 : A[indexmin] < A[8]Karena A[4] = A[indexmin] maka tidak dilakukanpertukaran nilai. Awal dan akhir dari proses 4 tidakterjadi perubahan yaitu kondisi datanya tetap:6 12 18 42 94 55 44 67Kondisi data pada akhir proses keempat ini digunakansebagai masukan pada proses kelima.Proses 5indexmin=5Data ke-6 : A[indexmin] > A[6] indexmin=6 Data ke-7 : A[indexmin] > A[7]indexmin=7Data ke-8 : A[indexmin] < A[8]Karena A[5] <> A[indexmin] maka dilakukan pertukaran nilai data ke-5 dan data ke-indexmin (data ke-7). Akhirdari proses 5 adalah:6 12 18 42 44 55 94 67

Page 183183Kondisi data pada akhir proses kelima ini digunakansebagai masukan pada proses keenam.Proses 6indexmin=6Data ke-7 : A[indexmin] < A[7]Data ke-8 : A[indexmin] < A[8]

Page 91: Pseude Code Algoritma

Karena A[6] = A[indexmin] maka tidak dilakukanpertukaran nilai. Awal dan akhir dari proses 6 tidakterjadi perubahan yaitu kondisi datanya tetap:6 12 18 42 44 55 94 67Kondisi data pada akhir proses keenam ini digunakansebagai masukan pada proses ketujuh.Proses 7indexmin=7Data ke-8 : A[indexmin] > A[8]indexmin=8Karena A[7] <> A[indexmin] maka dilakukan pertukaran nilai data ke-7 dan data ke-indexmin (data ke-8). Akhirdari proses 7 adalah:6 12 18 42 44 55 67 94

Page 184184Kondisi data pada akhir proses ketujuh ini merupakanakhir dari pengurutan secara menaik.Dengan asumsi sudah terdapat array A yang menyimpann buah elemen, algoritma Selection Sort disajikan denganmetode pseudocode:for i=1 to (n-1) doindexmin=ifor j=i+1 to n doif A[indexmin] > A[j] thenindexmin=jendifendforif A[i] <> A[indexmin] thentemp=A[i]A[i]=A[indexmin]A[indexmin]=tempendifendfor8.1.2 Pengurutan Turun (Descending) Apabila akan mengurutkan menurun menggunakanmetode Selection Sort maka langkah-langkah sebagaiberikut:

Page 1851851.Mencari data terbesar dari data pertama sampai dengandata terakhir, kemudian ditukar posisinya dengan datapertama. 2.Mencari data terbesar dari data kedua sampai dengan

Page 92: Pseude Code Algoritma

data terakhir, kemudian ditukar posisinya dengan datakedua. 3.Mencari data terbesar dari data ketiga sampai dengandata terakhir, kemudian ditukar posisinya dengan dataketiga. 4.dan seterusnya sampai semua data terurut turun.Apabila terdapat n buah data yang akan diurutkanmaka membutuhkan (n-1) langkah pengurutan,dimana data terakhir yaitu data ke-n tidak perludiurutkan karena hanya tinggal satu-satunya. Contoh kasus:Terdapat 8 buah data yang nilainya belum terurut: 44 55 12 42 94 18 6 67Data-data di atas akan ditampilkan secara terurut turunmenggunakan metode Selection Sort. Prosespengurutannya adalah sebagai berikut:Proses 1indexmax=1

Page 186186Data ke-2 : A[indexmax] < A[2]indexmax=2Data ke-3 : A[indexmax] > A[3]Data ke-4 : A[indexmax] > A[4]Data ke-5 : A[indexmax] < A[5]indexmax=5Data ke-6 : A[indexmax] > A[6]Data ke-7 : A[indexmax] > A[7]Data ke-8 : A[indexmax] > A[8]Karena A[1] <> A[indexmax] maka dilakukan pertukarannilai data ke-1 dan data ke-indexmax (data ke-5). Akhirdari proses 1 adalah:94 55 12 42 6 18 44 67Kondisi data pada akhir proses pertama ini digunakansebagai masukan pada proses kedua.Proses 2indexmax=2Data ke-3 : A[indexmax] > A[3] Data ke-4 : A[indexmax] > A[4]Data ke-5 : A[indexmax] > A[5] Data ke-6 : A[indexmax] > A[6]Data ke-7 : A[indexmax] > A[7]

Page 187187

Page 93: Pseude Code Algoritma

Data ke-8 : A[indexmax] < A[8]indexmax=8Karena A[2] <> A[indexmax] maka dilakukan pertukarannilai data ke-2 dan data ke-indexmax (data ke-8). Akhirdari proses 2 adalah:94 67 12 42 6 18 44 55Kondisi data pada akhir proses kedua ini digunakansebagai masukan pada proses ketiga.Proses 3indexmax=3 Data ke-4 : A[indexmax] < A[4]indexmax=4Data ke-5 : A[indexmax] > A[5] Data ke-6 : A[indexmax] > A[6]Data ke-7 : A[indexmax] > A[7]Data ke-8 : A[indexmax] < A[8]indexmax=8Karena A[3] <> A[indexmax] maka dilakukan pertukarannilai data ke-3 dan data ke-indexmax (data ke-8). Akhirdari proses 3 adalah:94 67 55 42 6 18 44 12

Page 188188Kondisi data pada akhir proses ketiga ini digunakansebagai masukan pada proses keempat.Proses 4indexmax=4 Data ke-5 : A[indexmax] > A[5] Data ke-6 : A[indexmax] > A[6]Data ke-7 : A[indexmax] < A[7]indexmax=7Data ke-8 : A[indexmax] > A[8]Karena A[4] <> A[indexmax] maka dilakukan pertukarannilai data ke-4 dan data ke-indexmax (data ke-7). Akhirdari proses 4 adalah:94 67 55 44 6 18 42 12Kondisi data pada akhir proses keempat ini digunakansebagai masukan pada proses kelima.Proses 5indexmax=5 Data ke-6 : A[indexmax] < A[6]indexmax=6Data ke-7 : A[indexmax] < A[7]indexmax=7

Page 94: Pseude Code Algoritma

Page 189189Data ke-8 : A[indexmax] > A[8]Karena A[5] <> A[indexmax] maka dilakukan pertukarannilai data ke-5 dan data ke-indexmax (data ke-7). Akhirdari proses 4 adalah:94 67 55 44 42 18 6 12Kondisi data pada akhir proses kelima ini digunakansebagai masukan pada proses keenam.Proses 6indexmax=6 Data ke-7 : A[indexmax] > A[7] Data ke-8 : A[indexmax] > A[8]Karena A[6] = A[indexmax] maka tidak dilakukanpertukaran nilai. Awal dan akhir dari proses 6 tidakterjadi perubahan yaitu kondisi datanya tetap:94 67 55 44 42 18 6 12Kondisi data pada akhir proses keenam ini digunakansebagai masukan pada proses ketujuh.Proses 7indexmax=7

Page 190190Data ke-8 : A[indexmax] < A[8]indexmax=8Karena A[7] <> A[indexmax] maka dilakukan pertukaran nilai data ke-7 dan data ke-indexmin (data ke-8). Akhirdari proses 7 adalah:94 67 55 44 42 18 12 6Kondisi data pada akhir proses ketujuh ini merupakanakhir dari pengurutan secara menaik.Algoritma Selection Sort apabila disajikan denganmetode pseudocode berikut (diasumsikan sudah terdapatarray A yang menyimpan n buah elemen):for i=1 to (n-1) doindexmax=ifor j=i+1 to n doif A[indexmax] < A[j] thenindexmax=jendifendforif A[i] <> A[indexmax] thentemp=A[i]A[i]=A[indexmax]A[indexmax]=temp

Page 95: Pseude Code Algoritma

endif

Page 191191endfor

8.2 Metode Bubble Sort Proses yang terjadi pada pengurutan dengan metodeBubble Sort adalah selalu membandingkan dua data yangberdekatan. 8.2.1 Pengurutan Naik (Ascending) Apabila data yang berada di sebelah kanannya bernilailebih kecil maka dipertukarkan sampai semua data terurutsehingga memunculkan data terbesar di posisi palingterakhir. Contoh kasus:Terdapat 6 buah data yang nilainya belum terurut: 7 5 6 3 4 2 Data-data di atas akan ditampilkan secara terurut naikmenggunakan metode Bubble Sort. Proses pengurutannyaadalah sebagai berikut:Proses 1Data 1-2 : A[1] > A[2] → ditukar5 7 6 3 4 2

Page 192192Data 2-3 : A[2] > A[3] → ditukar5 6 7 3 4 2 Data 3-4 : A[3] > A[4] → ditukar5 6 3 7 4 2 Data 4-5 : A[4] > A[5] → ditukar5 6 3 4 7 2 Data 5-6 : A[5] > A[6] → ditukar5 6 3 4 2 7 Akhir dari proses pertama adalah menempatkan dataterbesar pertama pada posisi ke-n (posisi ke-6).Proses 2Data 1-2 : A[1] < A[2] Data 2-3 : A[2] > A[3] → ditukar5 3 6 4 2 7 Data 3-4 : A[3] > A[4] → ditukar5 3 4 6 2 7 Data 4-5 : A[4] > A[5] → ditukar5 3 4 2 6 7 Akhir dari proses kedua adalah menempatkan dataterbesar kedua pada posisi ke-n-1 (posisi ke-5).

Page 96: Pseude Code Algoritma

Page 193193Proses 3Data 1-2 : A[1] > A[2] → ditukar3 5 4 2 6 7 Data 2-3 : A[2] > A[3] → ditukar3 4 5 2 6 7 Data 3-4 : A[3] > A[4] → ditukar3 4 2 5 6 7 Akhir dari proses ketiga adalah menempatkan dataterbesar ketiga pada posisi ke-n-2 (posisi ke-4).Proses 4Data 1-2 : A[1] < A[2] Data 2-3 : A[2] > A[3] → ditukar3 2 4 5 6 7 Akhir dari proses keempat adalah menempatkan dataterbesar keempat pada posisi ke-n-3 (posisi ke-3).Proses 5Data 1-2 : A[1] > A[2] Data 2-3 : A[2] > A[3] → ditukar2 3 4 5 6 7 Akhir dari proses kelima atau terakhir adalah

Page 194194menempatkan data terbesar kelima dan keenam padaposisi ke-n-4 dan ke-n-5 (posisi ke-2 dan ke-1).Penyajian pseudocode algoritma Bubble Sort (denganasumsi sudah terdapat array A yang menyimpan n buahelemen):for i=1 to (n-1) dofor j=1 to (n-i) doif A[j] > A[j+1] thentemp=A[j]A[j]=A[j+1]A[j+1]=tempendifendforendfor8.2.2 Pengurutan Turun (Descending) Kebalikan dari pengurutan yang menurun apabila datayang berada di sebelah kanannya bernilai lebih besarmaka dipertukarkan sampai semua data terurut sehinggamemunculkan data terkecil di posisi paling terakhir. Contoh kasus:

Page 97: Pseude Code Algoritma

Terdapat 8 buah data yang nilainya belum terurut:

Page 19519544 55 12 42 94 18 6 67 Data-data di atas akan ditampilkan secara terurut turunmenggunakan metode Bubble Sort. Proses pengurutannyaadalah sebagai berikut:Proses 1Data 1-2 : A[1] < A[2] → ditukar55 44 12 42 94 18 6 67 Data 2-3 : A[2] > A[3] Data 3-4 : A[3] < A[4] → ditukar55 44 42 12 94 18 6 67 Data 4-5 : A[4] < A[5] → ditukar55 44 42 94 12 18 6 67 Data 5-6 : A[5] < A[6] → ditukar55 44 42 94 18 12 6 67 Data 6-7 : A[6] > A[7] Data 7-8 : A[7] < A[8] → ditukar55 44 42 94 18 12 67 6Akhir dari proses pertama adalah menempatkan dataterkecil pertama pada posisi ke-n (posisi ke-8).Proses 2Data 1-2 : A[1] > A[2]

Page 196196Data 2-3 : A[2] > A[3] Data 3-4 : A[3] < A[4] → ditukar55 44 94 42 18 12 67 6Data 4-5 : A[4] > A[5]Data 5-6 : A[5] > A[6] Data 6-7 : A[6] < A[7] → ditukar55 44 94 42 18 67 12 6Akhir dari proses kedua adalah menempatkan dataterkecil kedua pada posisi ke-n-1 (posisi ke-7).Proses 3Data 1-2 : A[1] > A[2] Data 2-3 : A[2] < A[3] → ditukar55 94 44 42 18 67 12 6Data 3-4 : A[3] > A[4]Data 4-5 : A[4] > A[5]Data 5-6 : A[5] < A[6] → ditukar55 94 44 42 67 18 12 6Akhir dari proses ketiga adalah menempatkan data

Page 98: Pseude Code Algoritma

terkecil ketiga pada posisi ke-n-2 (posisi ke-6).Proses 4

Page 197197Data 1-2 : A[1] < A[2] → ditukar94 55 44 42 67 18 12 6Data 2-3 : A[2] > A[3] Data 3-4 : A[3] > A[4]Data 4-5 : A[4] < A[5] → ditukar94 55 44 67 42 18 12 6Akhir dari proses keempat adalah menempatkan dataterkecil keempat pada posisi ke-n-3 (posisi ke-5).Proses 5Data 1-2 : A[1] > A[2]Data 2-3 : A[2] > A[3] Data 3-4 : A[3] > A[4] → ditukar94 55 67 44 42 18 12 6Akhir dari proses kelima adalah menempatkan dataterkecil kelima pada posisi ke-n-4 (posisi ke-4).Proses 6Data 1-2 : A[1] > A[2]Data 2-3 : A[2] < A[3] → ditukar94 67 55 44 42 18 12 6

Page 198198Akhir dari proses keenam adalah menempatkan dataterkecil keenam pada posisi ke-n-5 (posisi ke-3).Proses 7Data 1-2 : A[1] > A[2]Akhir dari proses ketujuh adalah menempatkan dataterkecil ketujuh dan kedelapan pada posisi ke-n-6 dan ke-n-7 (posisi ke-2 dan ke-1).Penyajian pseudocode algoritma Bubble Sort(diasumsikan sudah terdapat array A yang menyimpan nbuah elemen):for i=1 to (n-1) dofor j=1 to (n-i) doif A[j] < A[j+1] thentemp=A[j]A[j]=A[j+1]A[j+1]=tempendifendforendfor

Page 99: Pseude Code Algoritma

8.3 Metode Insertion Sort Proses yang terjadi pada pengurutan dengan

Page 199199menggunakan metode Insertion Sort adalah dimulai daridata ke-2 kemudian disisipkan pada tempat yang sesuai.Data pada posisi pertama diandaikan memang sudah padatempatnya. 8.3.1 Pengurutan Naik (Ascending) Mulai dari data ke-2 nilainya dibandingkan dengan data-data sebelumnya kemudian mencari posisi yang tepatuntuk menyisipkan. Contoh kasus:Terdapat 6 buah data yang nilainya belum terurut: 8 5 15 12 7 2Data-data di atas akan ditampilkan secara terurut naikmenggunakan metode Insertion Sort. Prosespengurutannya adalah sebagai berikut:Proses :i=20=temp123456585151272

Page 200200j=2-1=1A[1] > tempA[2] ← A[1]0=temp123456

Page 100: Pseude Code Algoritma

588151272j=1-1=0A[0] = tempA[1] ← temp0=temp123456558151272i=30=temp1234561558151272j=3-1=2A[2] < tempA[3] ← A[2]

Page 201201i=40=temp12

Page 101: Pseude Code Algoritma

34561258151272j=4-1=3A[3] > tempA[4] ← A[3]0=temp1234561258151572j=3-1=2A[2] < tempA[3] ← temp0=temp1234561258121572i=5

Page 202202

Page 102: Pseude Code Algoritma

0=temp123456758121572j=5-1=4A[4] > tempA[5] ← A[4]0=temp1234567581215152j=4-1=3A[3] > tempA[4] ← A[3]0=temp1234567581212152j=3-1=2A[2] > temp

Page 103: Pseude Code Algoritma

A[3] ← A[2]

Page 2032030=temp123456758812152j=2-1=1A[1] < tempA[2] ← temp0=temp123456757812152i=6j=6-1=5A[5] > tempA[6] ← A[5]0=temp1234562578

Page 104: Pseude Code Algoritma

121515j=5-1=4A[5] > tempA[5] ← A[4]

Page 2042040=temp1234562578121215j=4-1=3A[3] > tempA[4] ← A[3]0=temp123456257881215j=3-1=2A[2] > tempA[3] ← A[2]0=temp123456

Page 105: Pseude Code Algoritma

257781215j=2-1=1A[1] > tempA[2] ← A[1]0=temp123456255781215j=1-1=0

Page 205205A[0] = tempA[1] ← temp0=temp123456225781215Sebelumnya diasumsikan sudah terdapat array A yangmenyimpan n buah elemen, maka algoritma Insertion Sortdisajikan dengan pseudocode berikut:for i=2 to n dotemp=A[i]

Page 106: Pseude Code Algoritma

{ambil elemen A[i] agar nilainya tidak dihilang karena tertimpa pergeseran}A[0]=temp {sentinel}j=i-1{cari posisi yang tepat untuk A[i] di dalam A[1..i-1] sambil menggeser}while A[j]>temp doA[j+1]=A[j] {pergeseran}j=j-1endwhileA[j+1]=temp {menemukan tempat yang tepat}endfor

8.3.2 Pengurutan Turun (Descending)

Page 206206Proses akan dimulai dengan membandingkan data ke-2dengan data-data sebelumnya kemudian mencari posisiyang tepat untuk menyisipkan. Contoh kasus:Terdapat 6 buah data yang nilainya belum terurut: 8 5 15 12 7 2Data-data di atas akan ditampilkan secara terurut turunmenggunakan metode Insertion Sort. Prosespengurutannya adalah sebagai berikut:Proses :i=20=temp123456585151272j=2-1=1A[1] > tempA[2] ← temp0=temp12345

Page 107: Pseude Code Algoritma

6585151272

Page 207207i=30=temp1234561585151272j=3-1=2A[2] < tempA[3] ← A[2]0=temp123456158551272j=2-1=1A[1] < tempA[2] ← A[1]0=temp12

Page 108: Pseude Code Algoritma

3456158851272j=1-1=0A[0] = temp

Page 208208A[1] ← temp0=temp1234561515851272i=40=temp1234561215851272j=4-1=3A[3] < tempA[4] ← A[3]

Page 109: Pseude Code Algoritma

0=temp123456121585572j=3-1=2A[2] < tempA[3] ← A[2]

Page 2092090=temp123456121588572j=2-1=1A[2] > tempA[2] ← temp0=temp123456121512857

Page 110: Pseude Code Algoritma

2i=5j=5-1=4A[4] < tempA[5] ← A[4]0=temp123456715128552j=4-1=3A[3] > tempA[4] ← temp

Page 2102100=temp123456715128752i=6j=6-1=5A[5] > tempA[6] ← temp0=temp123456

Page 111: Pseude Code Algoritma

215128752Sebelumnya diasumsikan sudah terdapat array A yangmenyimpan n buah elemen, maka algoritma Insertion Sortdisajikan dengan pseudocode berikut:for i=2 to n dotemp=A[i] {ambil elemen A[i] agar nilainya tidak dihilang karena tertimpa pergeseran}A[0]=temp {sentinel}j=i-1{cari posisi yang tepat untuk A[i] di dalam A[1..i-1] sambil menggeser}while A[j]<temp doA[j+1]=A[j] {pergeseran}j=j-1

Page 211211endwhileA[j+1]=temp {menemukan tempat yang tepat}endforDari tiga metode pengurutan di atas, metode SelectionSort mempunyai unjuk kerja yang lebih baik. Prosespertukaran data pada setiap langkah hanya dilakukan satukali sehingga waktu pengurutan data dapat lebih cepat.Metode Insertion Sort mempunyai kelemahan padajumlah pergeseran yang dilakukan untuk mencari posisiyang tepat untuk meletakkan data. Pada setiap langkahpengurutan, misalkan pada langkah ke-i maka prosespergeseran yang dilakukan paling banyak adalah (i-1)kali. Sehingga apabila akan mengurutkan data yangtersimpan dalam array berukuran n, dimana nilai n adalahbesar maka banyaknya proses pergeseran akan meningkatsecara kuadratik. Oleh karena itu metode ini tidak efisiendigunakan seandainya datanya besar. Kelebihan darimetode Bubble Sort adalah kesederhanannya sehinggamudah untuk dipahami, tetapi pengurutan datamenggunakan metode Bubble Sort tidak efisien karenabanyaknya proses pertukaran data yang diperlukan padasetiap langkah mencari data terkecil maupun dataterbesar. Untuk penggurutan array data berukuran besar

Page 212

Page 112: Pseude Code Algoritma

212menggunakan metode ini akan membutuhkan waktu yangrelatif lebih lama.

8.4 Metode Merge Sort Metode Merge Sort adalah menggabungkan dua buaharray yang sudah terurut. 8.4.1 Pengurutan Naik (Ascending) 1.Dua buah array yang masing-masing terurut naik akandigabungkan menjadi terurut naik.Contoh kasus:Array pertama : 5 8 12 15 20 25 29Array kedua : 4 6 21 22Proses penggabungan dua buah array di atas menjadisebuah array yang terurut naik adalah sebagai berikut:1234567 a=1 s/d nA = 58 12 15 20 25 291234b=1 s/d mB = 46 21 22

Page 213213C =c=1 s/d n+mA[1] > B[1] C[1] ← B[1]C = 4b=1+1=2A[1] < B[2] C[2] ← A[1]C = 4 5a=1+1=2A[2] > B[2] C[3] ← B[2]C = 4 5 6b=2+1=3A[2] < B[3]

Page 113: Pseude Code Algoritma

C[4] ← A[2]C = 4 5 6 8a=2+1=3A[3] < B[3]

Page 214214C[5] ← A[3]C = 4 5 6 8 12a=3+1=4A[4] < B[3] C[6] ← A[4]C = 4 5 6 8 12 15a=4+1=5A[5] < B[3] C[7] ← A[5]C = 4 5 6 8 12 15 20a=5+1=6A[6] > B[3] C[8] ← B[3]C = 4 5 6 8 12 15 20 21b=3+1=4A[6] > B[4] C[9] ← B[4]C = 4 5 6 8 12 15 20 21 22b=4+1=5

Page 215215Array kedua terdiri dari 4 elemen. Pada akhir proses inisetelah indeks pada array kedua dinaikkan ternyataindeksnya telah melampaui ukuran array kedua yangsesungguhnya berarti semua elemen array kedua sudahhabis terlebih dahulu dan masuk ke dalam arraygabungan. b>4 artinya b>m.Elemen array pertama yang masih tersisa akandimasukkan ke dalam array gabungan satu persatu.a=5+1=6C[10] ← A[6]C = 4 5 6 8 12 15 20 21 22 25a=6+1=7C[11] ← A[7]C = 4 5 6 8 12 15 20 21 22 25 29Algoritma dengan pseudocode untuk metode Merge Sort(diasumsikan terdapat dua buah array yang masing-

Page 114: Pseude Code Algoritma

masing menyimpan sekumpulan data dalam kondisiterurut naik) :

Page 216216a=1b=1c=1while (a<=n) or (b<=m) doif A[a]<B[b] thenC[c]=A[a]a=a+1elseC[c]=B[b]b=b+1endifc=c+1endwhileif b>m thenfor p=a to n doC[c]=A[p]c=c+1 endforendifif a>n thenfor p=b to m doC[c]=B[p]c=c+1 endforendif

Page 2172172.Dua buah array yang masing-masing terurut turun akandigabungkan menjadi terurut naik.Contoh kasus:Array pertama : 29 25 20 15 12 8 5Array kedua : 22 21 6 4Proses penggabungan dua buah array di atas menjadisebuah array yang terurut naik adalah sebagai berikut:1234567 a=1 s/d n

Page 115: Pseude Code Algoritma

A = 29 25 20 15 12 851234b=1 s/d mB = 22 21 64C =c=1 s/d n+mA[7] > B[4] C[1] ← B[4]C = 4b=4-1=3

Page 218218A[7] < B[3] C[2] ← A[7]C = 4 5a=7-1=6A[6] > B[3] C[3] ← B[3]C = 4 5 6b=3-1=2A[6] < B[2] C[4] ← A[6]C = 4 5 6 8a=6-1=5A[5] < B[2] C[5] ← A[5]C = 4 5 6 8 12a=5-1=4A[4] < B[2] C[6] ← A[4]C = 4 5 6 8 12 15a=4-1=3

Page 219219A[3] < B[2] C[7] ← A[3]C = 4 5 6 8 12 15 20a=3-1=2A[2] > B[2] C[8] ← B[2]

Page 116: Pseude Code Algoritma

C = 4 5 6 8 12 15 20 21b=2-1=1A[2] > B[1] C[9] ← B[1]C = 4 5 6 8 12 15 20 21 22b=1-1=0Array kedua terdiri dari 4 elemen. Pada akhir proses inisetelah indeks pada array kedua diturunkan ternyataindeksnya menjadi sama dengan nol berarti semuaelemen array kedua sudah habis terlebih dahulu danmasuk ke dalam array gabungan. Elemen array pertama yang masih tersisa akandimasukkan ke dalam array gabungan satu persatu.

Page 220220a=3-1=2C[10] ← A[2]C = 4 5 6 8 12 15 20 21 22 25a=2-1=1C[11] ← A[1]C = 4 5 6 8 12 15 20 21 22 25 29Dengan mengasumsikan terdapat dua buah array yangmasing-masing menyimpan sekumpulan data dalamkondisi terurut turun, algoritma Merge Sort dapatdituliskan dengan pseudocode berikut:a=nb=mc=1while (a>=1) or (b>=1) doif A[a]<B[b] thenC[c]=A[a]a=a-1elseC[c]=B[b]b=b-1endif

Page 221221c=c+1endwhileif b<1 thenfor p=a downto 1 doC[c]=A[p]c=c+1

Page 117: Pseude Code Algoritma

endforendifif a<1 thenfor p=b downto 1 doC[c]=B[p]c=c+1 endforendif8.4.2 Pengurutan Turun (Descending) 1.Dua buah array yang masing-masing terurut naik akandigabungkan menjadi terurut turun.Contoh kasus:Array pertama : 5 8 12 15 20 25 29Array kedua : 4 6 21 22Proses penggabungan dua buah array di atas menjadisebuah array yang terurut turun adalah sebagai berikut:

Page 2222221234567 a=1 s/d nA = 58 12 15 20 25 291234b=1 s/d mB = 46 21 22C =c=1 s/d n+mA[7] > B[4] C[1] ← A[7]C = 29a=7-1=6A[6] > B[4] C[2] ← A[6]C = 29 25a=6-1=5A[5] < B[4] C[3] ← B[4]C = 29 25 22b=4-1=3

Page 118: Pseude Code Algoritma

Page 223223A[5] < B[3] C[4] ← B[3]C = 29 25 22 21 b=3-1=2A[5] > B[2] C[5] ← A[5]C = 29 25 22 21 20a=5-1=4A[4] > B[2] C[6] ← A[4]C = 29 25 22 21 20 15a=4-1=3A[3] > B[2] C[7] ← A[3]C = 29 25 22 21 20 15 12a=3-1=2A[2] > B[2] C[8] ← A[2]C = 29 25 22 21 20 15 12 8

Page 224224a=2-1=1A[1] < B[2] C[9] ← B[2]C = 29 25 22 21 20 15 12 8 6b=2-1=1A[1] > B[1] C[10] ← A[1]C = 29 25 22 21 20 15 12 8 6 5a=1-1=0Array pertama terdiri dari 7 elemen. Pada akhir proses inisetelah indeks pada array pertama diturunkan ternyataindeksnya menjadi sama dengan nol berarti semuaelemen array pertama sudah habis terlebih dahulu danmasuk ke dalam array gabungan. Elemen array kedua yang masih tersisa akan dimasukkanke dalam array gabungan.b=2-1=1C[11] ← B[1]C = 29 25 22 21 20 15 12 8 6 5 4

Page 225

Page 119: Pseude Code Algoritma

225Dengan mengasumsikan terdapat dua buah array yangmasing-masing menyimpan sekumpulan data dalamkondisi terurut naik, algoritma Merge Sort dapatdituliskan dengan pseudocode berikut:a=nb=mc=1while (a>=1) or (b>=1) doif A[a]>B[b] thenC[c]=A[a]a=a+1elseC[c]=B[b]b=b+1endifc=c+1endwhileif b<1 thenfor p=a downto 1 doC[k]=A[p]c=c+1 endforendifif a<1 thenfor p=b downto 1 do

Page 226226C[c]=B[p]c=c+1 endforendif2.Dua buah array yang masing-masing terurut turun akandigabungkan menjadi terurut turun.Contoh kasus:Array pertama : 29 25 20 15 12 8 5Array kedua : 22 21 6 4Proses penggabungan dua buah array di atas menjadisebuah array yang terurut turun adalah sebagai berikut:1234567 a=1 s/d n

Page 120: Pseude Code Algoritma

A = 29 25 20 15 12 851234b=1 s/d mB = 22 21 64C =c=1 s/d n+mA[1] > B[1]

Page 227227C[1] ← A[1]C = 29a=1+1=2A[2] > B[1] C[2] ← A[2]C = 29 25a=2+1=3A[3] < B[1] C[3] ← B[1]C = 29 25 22b=1+1=2A[3] < B[2] C[4] ← B[2]C = 29 25 22 21b=2+1=3A[3] > B[3] C[5] ← A[3]C = 29 25 22 21 20a=3+1=4

Page 228228A[4] > B[3] C[6] ← A[4]C = 29 25 22 21 20 15a=4+1=5A[5] > B[3] C[7] ← A[5]C = 29 25 22 21 20 15 12 a=5+1=6A[6] > B[3] C[8] ← A[6]

Page 121: Pseude Code Algoritma

C = 29 25 22 21 20 15 12 8a=6+1=7A[7] < B[3] C[9] ← B[3]C = 29 25 22 21 20 15 12 8 6b=3+1=4A[7] > B[3] C[9] ← A[7]C = 29 25 22 21 20 15 12 8 6 5a=7+1=8

Page 229229Array pertama terdiri dari 7 elemen. Pada akhir proses inisetelah indeks pada array pertama dinaikkan ternyataindeksnya telah melampaui ukuran array pertama yangsesungguhnya berarti semua elemen array pertama sudahhabis terlebih dahulu dan masuk ke dalam arraygabungan. a>7 artinya a>nElemen array kedua yang masih tersisa akan dimasukkanke dalam array gabungan.b=3+1=4C[11] ← B[4]C = 29 25 22 21 20 15 12 8 6 5 4Dengan mengasumsikan terdapat dua buah array yangmasing-masing menyimpan sekumpulan data dalamkondisi terurut turun, algoritma Merge Sort dapatdituliskan dengan pseudocode berikut:a=1b=1c=1

Page 230230while (a<=n) or (b<=m) doif A[a]>B[b] thenC[c]=A[a]a=a+1elseC[c]=B[b]b=b+1endifc=c+1endwhileif b>m then

Page 122: Pseude Code Algoritma

for p=a to n doC[c]=A[p]c=c+1 endforendifif a>n thenfor p=b to m doC[c]=B[p]c=c+1 endforendif

8.5 Latihan 1.Buatlah program untuk mengurutkan array yang terurut

Page 231231naik menjadi terurut turun dan sebaliknya array yangterurut turun menjadi terurut naik.2.Buatlah program untuk mencari median dari n buahdata. 3.Buatlah program menggabungkan dua buah array.Array pertama adalah satu yang telah terurut secaramenurun sedangkan array kedua adalah dua yang telahterurut secara menaik menjadi array tiga yang terurutsecara menaik. Misal: satu : 55 43 37 23 19 13 7dua : 3 9 13 22 39 41 47tiga : 3 7 9 13 13 19 22 23 37 39 4143 47 55 3.Diberikan sebuah matriks berukuran (n x m). Buatlahprogram untuk mengurutkan elemen matriks tersebut.Program yang dibuat harus dapat menawarkan kepadapengguna apakah akan mengurutkan secara menaikatau menurun.

Page 232232

Bab 9Searching Tujuan pembelajaran umum:1. memahami algoritma dalam metode sequentialsearch2. memahami algoritma dalam metode binary search

Page 123: Pseude Code Algoritma

Dalam kehidupan sehari-hari kita sering melakukanpencarian (searching) data dari sejumlah data yang adauntuk menemukan informasi yang dibutuhkan. Dalambab ini akan dibahas metode pencarian data dalam suatuarray, baik pada array yang sudah terurut maupun belumterurut. Metode pencarian yang akan digunakan adalah:

Page 2332331.Sequential search2.Binary search

9.1 Metode Sequential Search Metode Sequential Search atau disebut pencarianberuntun dapat digunakan untuk melakukan pencariandata baik pada array yang sudah terurut maupun yangbelum terurut. Proses yang terjadi pada metode pencarianini adalah sebagai berikut: 1.Membaca array data. 2.Menentukan data yang dicari. 3.Mulai dari data pertama sampai dengan data terakhir,data yang dicari dibandingkan dengan masing-masingdata di dalam array. a. Jika data yang dicari tidak ditemukan maka semuadata atau elemen array dibandingkan sampai selesai. b. Jika data yang dicari ditemukan maka perbandinganakan dihentikan. 9.1.1 Pencarian Pada Array Belum TerurutContoh kasus:Terdapat 6 buah data yang tersimpan dalam array.

Page 2342348 7 5 6 10 4a. Dilakukan pencarian apakah dalam array tersebutterdapat data yang bernilai 5.123456i = 1 s/d nA = 875610 4

Page 124: Pseude Code Algoritma

x=5ketemu ← falsei=1A[1] <> x {ketemu ← false}i=1+1=2A[2] <> x {ketemu ← false}i=2+1=3A[3] = x {ketemu ← true}Hasil dari pencarian data bernilai 5 ditemukan pada posisidata ke-3.b. Dilakukan pencarian apakah dalam array tersebut

Page 235235terdapat data yang bernilai 11.123456i = 1 s/d nA = 875610 4x=11ketemu ← falsei=1A[1] <> x {ketemu ← false}i=1+1=2A[2] <> x {ketemu ← false}i=2+1=3A[3] <> x {ketemu ← false}i=3+1=4A[4] <> x {ketemu ← false}i=4+1=5A[5] <> x {ketemu ← false}i=5+1=6

Page 236236A[6] <> x {ketemu ← false}i=6+1=7i > 6 berarti i > n, semua data sudah diperbandingkandengan nilai data yang dicari dan hasil dari pencarian data

Page 125: Pseude Code Algoritma

bernilai 11 tidak ditemukan.Algoritma metode Sequential Search untuk data yangbelum terurut:for i=1 to n doinput(A[i])endforinput(x)ketemu=false {inisialisasi belumditemukan}i=1while (ketemu=false) and (i<=n) doif A[i]=x thenketemu=true {menghentikan prosespencarian}posisi=ielse i=i+1 {maju ke elemenberikutnya}

Page 237237endifendwhileif ketemu=false then write (“Tidakketemu”)else write (“Data ditemukan”)output (posisi)endif9.1.2 Pencarian Pada Array Terurut 9.1.2.1 Pencarian Pada Array Terurut Naik Contoh kasus:Di dalam suatu array tersimpan 6 buah data yang terurutnaik.2 7 11 15 17 18Dilakukan pencarian apakah terdapat data bernilai 8 padaarray tersebut.123456i = 1 s/d nA = 27 11 15 17 18

Page 238

Page 126: Pseude Code Algoritma

238x=8ketemu ← falsei=1A[1] <> x {ketemu ← false dan A[1] < x}i=1+1=2A[2] <> x {ketemu ← false dan A[2] < x }i=2+1=3A[3] <> x {ketemu ← false dan A[3] > x }Pencarian hanya dilakukan dengan membandingkan nilaidata yang dicari dengan data ke-1 sampai dengan data ke-3 pada array karena data ke-3 ternyata nilainya sudahlebih besar daripada nilai data yang dicari, sehingga tidakperlu dibandingkan dengan data berikutnya dalam array.Kesimpulannya adalah data 11 tidak terdapat dalam array.Sebelum dilakukan pencarian, pada algoritma di bawahini array diasumsikan sudah diurutkan menaik terlebihdahulu . input(x)

Page 239239ketemu=false {inisialisasi belumditemukan}i=1while (ketemu=false)and(i<=n)and(A[i]<=x)doif A[i]=x thenketemu=true {menghentikan prosespencarian}posisi=ielse i=i+1 {maju ke elemen berikutnya}endifendwhileif ketemu=false then write (“Tidakketemu”)else write (“Data ditemukan”)output (posisi)endif10.1.2.2 Pencarian Pada Array Terurut Turun Contoh kasus:Di dalam suatu array tersimpan 6 buah data yang terurutturun.18 17 15 11 7 2Dilakukan pencarian apakah terdapat data bernilai 16

Page 240240

Page 127: Pseude Code Algoritma

pada array tersebut.123456i = 1 s/d nA = 18 17 15 1172x=16ketemu ← falsei=1A[1] <> x {ketemu ← false dan A[1] > x}i=1+1=2A[2] <> x {ketemu ← false dan A[2] > x }i=2+1=3A[3] <> x {ketemu ← false dan A[3] < x }Pencarian hanya dilakukan dengan membandingkan nilaidata yang dicari dengan data ke-1 sampai dengan data ke-3 pada array karena data ke-3 ternyata nilainya sudahlebih kecil daripada nilai data yang dicari, sehingga tidakperlu dibandingkan dengan data berikutnya dalam array.Kesimpulannya adalah data 16 tidak terdapat dalam array.

Page 241241Sebelum dilakukan pencarian, pada algoritma di bawahini array diasumsikan sudah diurutkan menurun terlebihdahulu.input(x)ketemu=false {inisialisasi belumditemukan}i=1while (ketemu=false) and (i<=n) and(A[i]>=x) doif A[i]=x thenketemu=true {menghentikan prosespencarian}posisi=ielse i=i+1 {maju ke elemen berikutnya}endifendwhileif ketemu=false then write (“Tidakketemu”)elsewrite (“Data ditemukan”)output (posisi)endif

Page 128: Pseude Code Algoritma

Page 242242

9.2 Metode Binary Search Metode Binary Search atau sering pula dinamakanpencarian biner, hanya digunakan untuk pencarian datapada array yang sudah terurut. 9.2.1 Pencarian Pada Array Terurut NaikProses yang terjadi pada pencarian dengan metode iniadalah sebagai berikut: 1.Membaca array data. 2.Apabila array belum terurut maka diurutkan dahulu. 3.Menentukan data yang akan dicari. 4.Menentukan elemen tengah dari array. Letak posisitengah dapat ditentukan dengan tengah=(n div2)+1.5.Jika nilai elemen tengah sama dengan data yang dicarimaka pencarian selesai. 6.Jika nilai elemen tengah tidak sama dengan data yangdicari maka: a. Jika nilai elemen tengah lebih besar daripada datayang dicari maka pencarian dilakukan pada setengaharray pertama. b. Jika nilai elemen tengah lebih kecil daripada datayang dicari maka pencarian dilakukan pada setengah

Page 243243array berikutnya. Contoh menentukan elemen tengah:1. Di dalam suatu array tersimpan 6 buah data yangterurut naik.123456i = 1 s/d nA = 27 11 17 17 18 tengah=(n div 2)+1=(6 div 2)+1=4elemen_tengah=A[tengah]=A[4]=17Untuk array yang banyaknya data adalah genap makaposisi tengahnya tidak tepat berada di tengah.2. Di dalam suatu array tersimpan 7 buah data yangterurut naik.

Page 129: Pseude Code Algoritma

1234567 i = 1 s/d nA = 57811 12 14 15tengah=(n div 2)+1=(7 div 2)+1=4elemen_tengah=A[tengah]=A[4]=11Untuk array yang banyaknya data adalah ganjil maka

Page 244244posisi tengahnya dapat tepat berada di tengah.Contoh kasus:Di dalam suatu array tersimpan 6 buah data yang terurutnaik.123456i = 1 s/d nA = 27 11 17 17 18 Sebelum dilakukan pencarian, pada algoritma BinarySearch di bawah ini, array A diasumsikan sudahdiurutkan menaik terlebih dahulu.input(x)t=(n div 2)+1et=A[t]ketemu=falseif x=et thenketemu=trueposisi=telse if x<et theni=1while(ketemu=false)and(i<t)and(A[i]<=x) doif A[i]=x then

Page 245245ketemu=true

Page 130: Pseude Code Algoritma

posisi=ielse i=i+1endifendwhileelsei=t+1while(ketemu=false)and(i<=n)and(A[i]<=x) doif A[i]=x then ketemu=trueposisi=ielse i=i+1endifendwhileendifendifif ketemu=false then write (“Data tidakketemu”)else write (“Data ditemukan”)output (posisi)endif

9.2.2 Pencarian Pada Array Terurut TurunProses yang terjadi pada pencarian dengan metode iniadalah sebagai berikut:

Page 2462461. Membaca array data. 2. Apabila array belum terurut maka diurutkan dahulu. 3. Menentukan data yang akan dicari. 4. Menentukan elemen tengah dari array. Letak posisitengah dapat ditentukan dengan tengah=(n div2)+1.5. Jika nilai elemen tengah sama dengan data yang dicarimaka pencarian selesai. 6. Jika nilai elemen tengah tidak sama dengan data yangdicari maka: a. Jika nilai elemen tengah lebih besar daripada datayang dicari maka pencarian dilakukan pada setengaharray kedua. b. Jika nilai elemen tengah lebih kecil daripada datayang dicari maka pencarian dilakukan pada setengaharray pertama. Sebelum dilakukan pencarian, pada algoritma BinarySearch di bawah ini, array A diasumsikan sudahdiurutkan menurun terlebih dahulu.input(x)t=(n div 2)+1

Page 131: Pseude Code Algoritma

et=A[t]ketemu=false

Page 247247if x=et thenketemu=trueposisi=telse if x<et theni=t+1while (ketemu=false)and(i<n)and(A[i]>=x)doif A[i]=x then ketemu=trueposisi=ielse i=i+1endifendwhileelsei=1while (ketemu=false)and(i<t)and(A[i]>=x)doif A[i]=x then ketemu=trueposisi=ielse i=i+1endifendwhileendifendifif ketemu=false then write (“Data tidakketemu”)else write (“Data ditemukan”)output (posisi)endif

Page 254254