bukualgo ebook suwanto
TRANSCRIPT
![Page 1: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/1.jpg)
1
![Page 2: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/2.jpg)
2
LOGIKA INFORMATIKA
TIFS 1604
3 SKS
Suwanto Raharjo,S.Si.,M.Kom
Teknik Informatika
Teknologi Industri
IST AKPRIND Yogyakarta
![Page 3: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/3.jpg)
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
penalaran atau kerangka berpikir yang sistematis dalam
memahami masalah dan membuat perencanaan atau
konsep pemecahan masalah yang lebih baik sehingga
dapat menghasilkan yang tepat pula.
Pada buku ini banyak diberikan contoh
kasus disertai alternatif solusi penyelesaiannya dengan
harapan pembaca dapat mengembangkan sesuai dengan
kreatifitas masing-masing. Demikian pula dengan contoh-
![Page 4: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/4.jpg)
4
contoh latihan diharapkan dapat membantu pembaca
untuk lebih memahami algoritma.
Pada kesempatan ini penulis menghaturkan
beribu-ribu terima kasih yang tak terkira kepada ALLAH
SWT yang telah memberikan Rahmat dan Hidayah-Nya
sehingga penulis mampu menyelesaikan buku ini. Penulis
juga mengucapkan banyak terima kasih kepada civitas
akademika IST AKPRIND Yogyakarta yang telah
berkenan menerbitkan buku ini, untuk istri tercinta Ema
Utami, S.Si, M.Kom atas ide-ide yang kreatifnya serta
untuk putra-putri tercinta Naufal Rasendriya Apta
Raharema dan Najwa Rashika Az-Zahra Raharema yang
telah memberikan semangat untuk selalu berkarya.
Akhir kata semoga buku ini dapat
memberikan manfaat dan menambah wawasan bagi
pembaca yang ingin mempelajari konsep logika
informatika. Saran dan kritik yang ditujukan untuk
membangun buku ini dengan lebih baik dapat ditujukan
ke alamat email [email protected].
Yogyakarta, Desember 2007
Penulis
Suwanto Raharjo,S.Si,M.Kom
![Page 5: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/5.jpg)
5
![Page 6: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/6.jpg)
6
Daftar Isi
Kata Pengantar
Daftar Gambar
Daftar Tabel
1 Logika Proposisional
1.1 Proposisi
1.2 Relasi Proposisional
1.3 Interpretasi
1.4 Sifat-Sifat Kalimat Logika
1.5 Kalimat Berkuantor
1.5.1 Ingkaran Kalimat Berkuantor
1.6 Pembuatan Kesimpulan Berdasarkan Implikasi
1.7 Latihan
2 Algoritma
2.1 Algoritma
2.2 Penyajian Algoritma
2.3 Tahap-Tahap Pemrograman
2.4 Struktur Algoritma
2.5 Latihan
![Page 7: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/7.jpg)
7
3 Struktur Runtunan
3.1 Runtunan
3.2 Contoh-Contoh Kasus Runtunan
3.3 Latihan
4 Struktur Pemilihan
4.1 Instruksi IF
5.1.1 Instruksi IF Sederhana
5.1.1.1 Instruksi IF dengan Syarat Tunggal
5.1.1.2 Instruksi IF dengan Syarat Majemuk
5.1.2 Instruksi IF - ELSE
4.2 Contoh-Contoh Kasus IF dan IF – ELSE
4.3 Instruksi IF Bertingkat
4.4 Contoh-Contoh Kasus Instruksi IF Bertingkat
4.5 Instruksi SWITCH
4.6 Contoh-Contoh Kasus Instruksi SWITCH
4.7 Latihan
5 Struktur Perulangan
5.1 Instruksi FOR
5.2 Contoh-Contoh Kasus FOR
5.3 Instruksi WHILE – DO
5.4 Contoh-Contoh Kasus Instruksi WHILE - DO
5.5 Latihan
![Page 8: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/8.jpg)
8
6 Subprogram
6.1 Subprogram
6.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 Array
7.3 Latihan
8 Sorting
8.1 Metode Selection Sort
8.1.1 Pengurutan Naik (Ascending)
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 9: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/9.jpg)
9
8.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 Naik
10.1.2.2 Pencarian Pada Array Terurut Turun
9.2 Metode Binary Search
10.2.1 Pencarian Pada Array Terurut Naik
10.2.2 Pencarian Pada Array Terurut Turun
9.3 Latihan
Daftar Pustaka
Profil Penulis
![Page 10: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/10.jpg)
10
Daftar Gambar
2.1 Flowchart Hitung Rata-Rata
2.2 Flowchart Cetak Tiket Parkir
2.3 Tahapan Pemrograman
3.1 Flowchart Runtunan
3.2 Flowchart Hitung Luas Persegi Panjang
3.3 Flowchart Hitung Luas dan Keliling Lingkaran
3.4 Flowchart Konversi Detik
3.5 Ilustrasi Pertukaran Data
4.1 Flowchart Instruksi IF
4.2 Flowchart Instruksi IF – ELSE
4.3 Flowchart Instruksi SWITCH
5.1 Flowchart Instruksi FOR Format Naik
5.2 Flowchart Instruksi FOR Format Turun
5.3 Flowchart Instruksi WHILE – DO
6.1 Gambaran Umum Subprogram
6.2 Ilustrasi Hitung Faktorial
6.3 Ilustrasi Bilangan Fibonacci
![Page 11: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/11.jpg)
11
6.4 Ilustrasi Hitung Perkalian
6.5 Ilustrasi Hitung Perpangkatan
![Page 12: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/12.jpg)
12
Daftar Tabel
1.1 Aturan NOT
1.2 Aturan AND
1.3 Aturan OR
1.4 Aturan IF – THEN
1.5 Aturan IF AND ONLY IF
1.6 Aturan IF – THEN - ELSE
![Page 13: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/13.jpg)
13
Bab 1
Logika Proposisional
Tujuan pembelajaran umum:
1. memahami logika proposisi
2. memahami relasi proposisi
3. memahami sifat-sifat logika
4. memahami interpretasi dari proposisi
5. memahami kalimat berkuantor
6. membuat kesimpulan berdasarkan implikasi
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.
![Page 14: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/14.jpg)
14
1.1 Proposisi Proposisi atau pernyataan merupakan komponen
penyusun logika dasar yang dilambangkan dengan huruf
kecil (p, q, r, ...). Proposisi hanya dapat diiwakili oleh
kalimat deklaratif. Kalimat deklaratif adalah kalimat yang
mengandung nilai kebenaran yaitu dapat bernilai benar
atau salah tetapi tidak mungkin memiliki kedua nilai
tersebut.
Contoh:
p : 9 adalah bilangan ganjil.
q : 10 x 8 = 88
Lawan kalimat deklaratif adalah kalimat terbuka, artinya
kalimat 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 karena
kalimat tersebut tidak benar atau tidak salah (tidak
mempunyai nilai benar atau salah).
![Page 15: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/15.jpg)
15
1.2 Relasi Proposisional Untuk mengkombinasikan dua buah proposisi atau lebih
diperlukan connective atau penghubung.
Propositions + Propositional Connectives → Sentences
Untuk menggabungkan proposisi-proposisi dan
penghubungnya diperlukan Syntactics Rules yaitu suatu
aturan yang diperlukan untuk mengkombinasikan antara
propositions dan propositional connectives untuk
menghasilkan sentences (kalimat logika).
1.Setiap propositions adalah sentence tanpa ada
propositional connectives.
2.Jika p suatu sentence maka negasinya not p juga
sentence. Negasi atau ingkaran adalah proposisi yang
nilai kebenarannya berlawanan dengan proposisi
semula. Suatu proposisi yang disertai dengan kata-kata
'tidak', 'bukan' dan sebagainya. Misalkan terdapat
proposisi p maka negasinya adalalah - p atau ~p.
Contoh:
p : Semua mahasiswa adalah pelajar
![Page 16: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/16.jpg)
16
~p : Tidak semua mahasiswa adalah pelajar
3.Jika p dan q sentences maka conjunction-nya yaitu 'p
and q' juga sentences. Conjunction yaitu dua
proposisi atau lebih yang dihubungkan dengan kata
'dan' atau 'and'. Lambang yang digunakan adalah ^, &.
Contoh :
p : 2 adalah bilangan prima.
q : 2 > 3
p&q : 2 adalah bilangan prima dan 2 > 3.
4.Jika p dan q sentences maka disjunction-nya yaitu 'p
or q' juga sentences. Disjunction yaitu dua
proposisi atau lebih yang dihubungkan dengan kata
'atau' atau 'or'. Lambang yang digunakan adalah v, +.
Contoh :
p : 2 adalah bilangan prima.
q : 2 > 3
pvq : 2 adalah bilangan prima atau 2 > 3.
5.Jika p dan q sentences maka implication-nya yaitu 'if
p then q' juga sentences. Implication adalah
penggabungan dua proposisi dengan bentuk 'jika p
maka q'. Lambang yang digunakan adalah →.
![Page 17: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/17.jpg)
17
Proposisi pertama (p) disebut anteseden sedangkan
proposisi kedua (q) disebut konsekuen.
Contoh :
p : 2 adalah bilangan prima.
q : 2 > 3
p•q : Jika 2 adalah bilangan prima maka 2 > 3.
6.Jika p dan q sentences maka equivalence-nya yaitu 'p
if and only if q' juga sentences. Equivalence
atau biimplikasi adalah penggabungan dua proposisi
dengan bentuk 'p jika dan hanya jika q'.
Kata penghubung yang lain adalah iof, iff, bila dan
hanya 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 18: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/18.jpg)
18
Interpretasi adalah pemberian nilai kebenaran (benar atau
salah) pada setiap simbol proposisi dari suatu kalimat
logika. Semantic Rules adalah suatu aturan yang
digunakan untuk menentukan truth value (nilai
kebenaran) dari suatu sentence. Untuk mempermudah
penyajiannya dibuatlah tabel kebenaran.
1.Negation Rule (Aturan NOT)
Negasi bernilai benar jika proposisi mula-mula bernilai
salah dan sebaliknya apabila proposisi mula-mula
bernilai benar maka negasinya mempunyai nilai
kebenaran salah.
p not p
True False
False True
Tabel 1.1 Aturan NOT
2.Conjunction Rule (Aturan AND)
Konjungsi bernilai benar jika setiap proposisi
penyusunnya benar.
p q p and q
![Page 19: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/19.jpg)
19
True True True
True False False
False True False
False False False
Tabel 1.2 Aturan AND
3.Disjunction Rule (Aturan OR)
Minimal satu proposisi penyusunnya benar maka
disjungsi bernilai benar.
p q p or q
True True True
True False True
False True True
False False False
Tabel 1.3 Aturan OR
Untuk relasi konjungsi dan disjungsi berlaku sifat-sifat
aljabar logika sebagai berikut :
a.Hukum Idempoten pvp = p
p∧p = p
![Page 20: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/20.jpg)
20
b.Hukum Komutatif pvq = qvp
p∧q = q∧p
c.Hukum Assosiatif pvq)v r = pv(qvr)
p∧q)∧r = p∧(q∧r)
d.Hukum Distributif
pv(q∧r) = (pvq) ∧ (pvr)
p∧(qvr) = (p∧q) v (p∧r)
e.Hukum Identitas p v False = p
p ∧ True = p
p v True = True
p ∧ False = False
f.Hukum Komplemen p v not p = True
p ∧ not p = False
not(not p)= p
g.Hukum De Morgan
Negasi dari konjungsi dan disjungsi:
![Page 21: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/21.jpg)
21
~ (pvq) = ~p ∧ ~q
~ (p∧q) = ~p v ~q
4.Implication Rule (Aturan IF-THEN)
Implikasi bernilai salah bila anteseden benar dan
konsekuen salah.
p q if p then q
True True TRUE
True False False
False True True
False False True
Tabel 1.4 Aturan IF – THEN
Terdapat beberapa definisi:
a)Jika (p→q) adalah implikasi maka (q→p) adalah
konvers
b)Jika (p→q) adalah implikasi maka (~p → ∼q)
adalah invers
c)Jika (p→q) adalah implikasi maka (~q→ ∼p)
adalah kontraposisi
d)Jika (p→q) bernilai benar maka (q→p), (~p →
~q), dan (~q → ~p) belum tentu bernilai benar.
![Page 22: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/22.jpg)
22
5.Equivalence Rule (Aturan IF AND ONLY IF)
Jika penyusun proposisi mempunyai nilai yang sama
maka biimplikasi bernilai benar,
p q p if and only if q
True True True
True False False
False True False
False False True
Tabel 1.5 Aturan IF AND ONLY IF
6.Conditional Rule (Aturan IF - THEN - ELSE)
Jika p bernilai benar maka q berlaku.
Jika p bernilai salah maka r berlaku
p q r if p then q else r
True True True True
True True False True
True False True False
True False False False
False True True True
False True False False
False False True True
False False False False
![Page 23: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/23.jpg)
23
Tabel 1.6 Aturan IF-THEN-ELSE
1.4 Sifat-Sifat Kalimat Logika 1.Valid
Suatu sentence f disebut valid, jika untuk setiap
interpretation I for f maka f true.
Contoh:
a. (p and q) if and only if (q and p)
b. p or not p
c. (p and (if r then s)) if and only if
((if r then s) and p)
d. (p or q) or not (p or q)
e. (if p then not q) if and only if not
(p and q)
2.Satisfiable Suatu sentence f disebut satisfiable, jika untuk suatu
interpretation I for f maka f true.
Contoh:
a. if (if p then q) then q
b. (if p then q) or (r and s)
c. (if p then q) or r
![Page 24: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/24.jpg)
24
3.Kontradiksi Suatu sentence f disebut kontradiksi, jika untuk setiap
interpretation I for f maka f false.
Contoh:
a. p and not p
b. ((p or q) and not r) if and only if ((if p then r) and (if q then r)
1.5 Kalimat Berkuantor Kalimat berkuantor adalah pernyataan yang memuat
ekspresi kuantitas obyek yang terlibat. Misalnya: semua,
ada, beberapa, tidak semua, dan lain-lain. Ada dua
macam kuantor yaitu:
1.Universal Quantifier (for all ...)
Kuantor universal mempunyai makna umum atau
menyeluruh. Notasi yang digunakan adalah ∀ yang
dibaca sebagai semua, seluruh atau setiap.
Penulisannya: ∀x ∈ S → p(x), dibaca semua x dalam
semesta S mempunyai sifat p.
Contoh:
1. Tiap-tiap orang yang hidup di dunia akan mati
2. Seluruh pelajar pasti pandai
![Page 25: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/25.jpg)
25
2.Existential Quantifier (for some ...)
Kuantor eksistensial mempunyai makna khusus atau
sebagian. Notasi yang digunakan adalah ∃ yang dibaca
terdapat, ada, atau beberapa. Penulisannya ∃y ∈S →
q(y), dibaca terdapat y dalam semesta S mempunyai
sifat q.
Contoh:
Beberapa mahasiswa yang menempuh mata kuliah
Logika dan Algoritma mendapat nilai A.
1.5.1 Ingkaran Kalimat Berkuantor Terdapat dua ketentuan yaitu:
1.Apabila kalimatnya memuat kuantor universal maka
ingkarannya menjadi kuantor eksistensial dan sifatnya
diingkari.
~((∀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 maka
ingkarannya menjadi kuantor universal dan sifatnya
diingkari.
![Page 26: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/26.jpg)
26
~((∃y) q(y)) = (∀y) (~q(y))
Contoh:
q : Ada pejabat yang korupsi.
~p : Semua pejabat tidak korupsi.
1.6Pembuatan Kesimpulan Berdasarkan
Implikasi 1.Modus Ponens
p → q
p
q
Contoh:
Jika seseorang itu adalah mahasiswa maka ia pasti
pandai
Naufal adalah seorang mahasiswa
Naufal pasti pandai
2. Modus Tollens
p → q
~q
~p
![Page 27: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/27.jpg)
27
Contoh:
Jika seseorang itu adalah pejabat yang baik maka
ia pasti tidak korupsi
Bapak X korupsi
Bapak X bukan pejabat yang baik
3.Prinsip Syllogisme
p → q
q → r
p → r
Contoh:
Jika ia rajin maka ia pasti pandai
Jika ia pandai maka ia pasti sukses
Jika ia rajin maka ia pasti sukses
1.7Latihan
1.Buktikan jika implikasi bernilai benar maka konvers,
invers, dan kontraposisinya belum tentu bernilai
benar.
2.Apabila terdapat n buah proposisi penyusun maka
sentence yang dihasilkan akan mempunyai berapa
![Page 28: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/28.jpg)
28
kemungkinan nilai kebenaran ?
3.Tentukan nilai kebenaran dari kalimat logika berikut
menggunakan tabel kebenaran:
a. (p and q) if and only if (p and q) b. if (if p then q) then q c. ((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) if and 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 r
4.Diketahui suatu kalimat logika sebagai berikut : if(p and q) then (r and not p) else
(r and not q)
a. Jika diketahui interpretasi p, q, r semua false
maka tentukan kebenaran kalimat tersebut.
b)Tentukan suatu interpretasi (selain p, q, r semua
false) sedemikian kalimat tersebut bernilai true.
![Page 29: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/29.jpg)
29
5.Diketahui suatu kalimat logika sebagai berikut : if(p and q) then (if r then s) if
and only if if p then (q or not r
or s)
a. Tentukan nilai kebenaran kalimat tersebut jika p=true, q=false, r=true, s=true.
b. Tentukan suatu interpretasi sedemikian kalimat
tersebut bernilai false.
6.Jika kalimat 'if p then q' bernilai false maka
tentukan kebenaran kalimat berikut: if (not p or not q) then q
7.Jika kalimat 'if p then q' bernilai true maka
tentukan kebenaran kalimat berikut: not p or (if p 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 turut
adalah True, False, dan True. Tentukan truth value
dari sentence berikut:
![Page 30: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/30.jpg)
30
a. if ((if q then not p) or not q) then (p if and only if q) else not r
b. if (if p then (if q then r)) then (if(if p then q) else (if p then
r))
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 (g
and f) then ( p and not p)
Tentukan kesimpulannya dengan menggunakan
prinsip Syllogisme, serta berikan truth value-nya
dengan menggunakan truth table.
11.Dengan menggunakan sifat-sifat aljabar logika,
tentukan validitas dari kalimat logika berikut ini:
a. if (if r then (if q then p)) then (if (if r then q) then (if r then
p))
b. if (if not q then not p) then (if p then q)
c. if (if p then (if q then r)) then (if (if p then q) then (if p then
![Page 31: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/31.jpg)
31
r))
d. (if ((p and q) or (p and r)) then s) if and only if (not p or (not q
and not r) or s)
12.Diberikan kalimat logika sebagai berikut: ((p or q) or q) if and only if (if p
then (p and r))
Tentukan semua interpretasi untuk p, q, dan r yang
akan mengakibatkan kalimat di atas bernilai benar.
13.Berikan suatu interpretasi untuk setiap proposisi
penyusunnya supaya kalimat logika berikut bernilai
false. if (p and q) then (r or s)
14.Interpretasi p, q dan r berturut-turut adalah true, false
dan true. Tentukan nilai kebenaran dari kalimat
berikut: if ((q then not p) or not q) then (p
if and only if q) else r
15.Dengan menggunakan sifat-sifat aljabar logika,
tentukan sifat dari kalimat berikut: ((p or q) and not r) if and only if
![Page 32: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/32.jpg)
32
((if p then r) and (if q then r))
16.Dapatkah saudara menentukan suatu interpretasi untuk
p, q, r, s agar kalimat-kalimat di bawah ini
bernilai false?
a. if (p and q) then (not r or not s) else ((not r and not s) if and only
if (if r then not s)
b. (if ((p and q) or (p and r)) then s) if and only if (not p or (not q
and not r)) or s)
17.Dapatkah saudara menentukan suatu interpretasi untuk
p, q, r agar kalimat di bawah ini bernilai true? (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 dan
Prinsip Syllogism merupakan kalimat yang valid.
![Page 33: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/33.jpg)
33
Bab 2
Algoritma
Tujuan pembelajaran umum:
1. memahami penggunaan algoritma dalam
menyelesaikan permasalahan
2. memahami alur dan syarat pembuatan algoritma
yang baik
3. membuat algoritma untuk menyelesaikan suatu
permasalahan.
Pada saat kita dihadapkan dengan suatu masalah maka
tindakan kita selanjutnya adalah mencari
penyelesaiannya. Sekarang kita tidak langsung
memecahkan masalah dengan langsung menuliskan
solusinya berupa program dalam suatu bahasa
pemrograman, namun suatu cara penyelesaian masalah
yang akan diprogram dengan menekankan pada desain
atau rancangan yang mewakili pemecahan masalah.
![Page 34: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/34.jpg)
34
Masalah --------------> Algoritma --------------> Penyelesaian
Pemecahan Masalah Tahap Implementasi
(Fase Problem Solving) (Fase Implementasi)
Algoritma mempunyai peranan yang sangat penting
dalam bidang teknik informatika pada umumnya dan
bidang pemrograman pada khususnya. Algoritma
membantu mahasiswa mengembangkan daya penalaran
atau kerangka berpikir yang sistematis dalam memahami
masalah dan membuat perencanaan atau konsep
pemecahan masalah yang lebih baik sehingga dapat
menghasilkan yang tepat pula.
2.1 Algoritma Algoritma merupakan urutan atau deskripsi langkah-
langkah penyelesaian masalah yang tersusun secara logis,
ditulis dengan notasi yang mudah dimengerti sedemikian
hingga langkah-langkah tersebut dapat dilaksanakan oleh
pemroses. Algoritma mencerminkan cara berpikir
pemrogram dalam menyelesaikan masalah dalam hal ini
konsep logika menyelesaikan suatu masalah, sedangkan
program merupakan realisasi algoritma dalam bahasa
pemrograman, dengan kata lain program adalah
implementasi algoritma dalam bahasa pemrograman
![Page 35: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/35.jpg)
35
tertentu. Dengan membuat algoritma akan
mempermudah pemrogram dalam mengkonversikan suatu
permasalahan ke dalam bahasa pemrograman karena
dalam algoritma tersebut telah tertuang langkah-langkah,
konsep-konsep maupun dasar dalam scripting program
yang akan dibuat. Algoritma yang ditulis merupakan
sketsa program atau desain pemecahan masalah yang
akan direalisasikan menjadi suatu program. Jika
algoritmanya benar dan dapat dipertanggungjawabkan
maka sudah pasti scripting program tersebut dalam
operasi logikanya juga benar.
Pembuatan algoritma mempunyai banyak keuntungan
diantaranya:
1.Pembuatan atau penulisan algoritma tidak tergantung
pada bahasa pemrograman manapun, artinya
penulisan algoritma independen dari bahasa
pemrograman dan komputer yang mengeksekusinya.
2.Notasi algoritmik dapat diterjemahkan ke dalam
berbagai bahasa pemrograman.
3.Apapun bahasa pemrogramannya, output yang akan
dikeluarkan sama karena algoritmanya sama.
Beberapa hal yang perlu dalam membuat algoritma
![Page 36: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/36.jpg)
36
diperhatikan:
1.Teks algoritma berisi deskripsi langkah-langkah
penyelesaian masalah. Deskripsi tersebut dapat ditulis
dalam notasi apapun asalkan mudah dimengerti dan
dipahami.
2.Tidak ada notasi yang baku dalam penulisan teks
algoritma seperti pada notasi bahasa pemrograman.
Notasi yang digunakan dalam menulis algoritma
disebut notasi algoritmik.
3.Tiap orang dapat membuat aturan penulisan dan notasi
algoritmik sendiri. Hal ini karena teks algoritma tidak
sama dengan teks program. Namun supaya notasi
algoritmik mudah ditranslasikan ke dalam notasi
bahasa pemrograman tertentu, maka sebaiknya notasi
algoritmik tersebut berkorespondensi dengan notasi
bahasa pemrograman secara umum.
4.Notasi algoritmik bukan notasi bahasa pemrograman,
karena itu pseudocode dalam notasi algoritmik tidak
dapat dijalankan oleh komputer. Agar dapat dijalankan
oleh komputer, pseudocode dalam notasi algoritmik
harus ditranslasikan atau diterjemahkan ke dalam
notasi bahasa pemrograman yang dipilih. Perlu diingat
bahwa orang yang menulis program sangat terikat
dalam aturan tata bahasanya dan spesifikasi mesin
![Page 37: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/37.jpg)
37
yang menjalankannya.
5.Algoritma sebenarnya digunakan untuk membantu kita
dalam mengkonversikan suatu permasalahan ke dalam
bahasa pemrograman.
6.Algoritma merupakan hasil pemikiran konseptual,
supaya dapat dilaksanakan oleh komputer, algoritma
harus ditranslasi ke dalam notasi bahasa
pemrograman. Ada beberapa hal yang harus
diperhatikan ketika translasi tersebut yaitu:
a)Pendeklarasian variabel.
Apakah bahasa pemrograman yang akan digunakan
membutuhkan pendeklarasian variabel karena tidak
semua bahasa pemrograman membutuhkannya.
b)Pemilihan tipe data.
Apabila bahasa pemrograman yang akan digunakan
membutuhkan pendeklarasian variabel maka perlu
dipertimbangkan pada saat pemilihan tipe data.
c)Pemakaian instruksi-instruksi.
Beberapa instruksi mempunyai kegunaan yang
sama tetapi masing-masing memiliki kelebihan dan
kekurangan yang berbeda.
d)Aturan sintaks.
Pada saat menulis program kita terikat dengan
![Page 38: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/38.jpg)
38
aturan sintaks dari bahasa pemrograman yang akan
digunakan.
e)Tampilan hasil.
Pada saat membuat algoritma kita tidak
memikirkan tampilan hasil yang akan disajikan.
Hal-hal teknis ini kita perhatikan ketika
mengkonversikannya menjadi program.
f)Cara pengopersian compiler atau interpreter.
Bahasa pemrograman yang digunakan termasuk
kelompok compiler atau interpreter.
2.2 Penyajian Algoritma Penyajian algoritma secara garis besar bisa dalam 2
bentuk penyajian yaitu tulisan dan gambar.
Algoritma yang disajikan dengan tulisan yaitu dengan
struktur bahasa tertentu (misalnya bahasa Indonesia atau
bahasa Inggris) dan pseudocode. Pseudocode adalah kode
yang mirip dengan kode pemrograman yang sebenarnya.
Pseudocode ditulis berbasis pada bahasa pemrograman
tertentu misalnya Pascal, C atau Python, sehingga lebih
tepat digunakan untuk menggambarkan algoritma yang
akan dikomunikasikan kepada pemrogram. Pseudocode
lebih rinci daripada struktur bahasa Inggris, misalnya
![Page 39: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/39.jpg)
39
dalam menyatakan sintaks, tipe data yang digunakan dan
lain-lain. Sedangkan algoritma yang disajikan dengan
gambar, misalnya dengan flowchart. Flowchart bukan
satu-satunya cara untuk menjelaskan atau menerangkan
algoritma. Cara yang lain diantaranya :
1.Structure chart
2.DFD (Data Flow Diagram)
3.Warnier diagram
4.IPO (Input Process Output)
5.HIPO (Hierarchical Input Process Output)
Flowchart (bagan alir) merupakan representasi secara
grafik dari suatu algoritma atau prosedur untuk
menyelesaikan suatu masalah. Dengan menggunakan
flowchart akan memudahkan kita untuk melakukan
pengecekan apakah ada bagian-bagian yang terlupakan
dalam analisis masalah. Di samping itu flowchart juga
berguna sebagai fasilitas untuk berkomunikasi antara
pemrogram yang bekerja dalam tim suatu proyek.
Flowchart ada dua macam :
1.Flowchart Sistem
Yaitu diagram alir yang menggambarkan suatu sistem
peralatan komputer yang digunakan dalam proses
pengolahan data dan hubungan antar peralatan
![Page 40: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/40.jpg)
40
tersebut. Flowchart sistem digunakan untuk
menggambarkan urutan langkah untuk memecahkan
masalah tetapi hanya untuk menggambarkan prosedur
dalam sistem yang dibentuk.
Simbol yang digunakan :
Contoh :
![Page 41: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/41.jpg)
41
2. Flowchart program
Yaitu bagan yang menggambarkan urutan logika dari
suatu prosedur pemecahan masalah.
Simbol yang digunakan adalah American National
Standard Inc.:
![Page 42: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/42.jpg)
42
: (terminal symbol), menunjukkan awal dan
akhir dari program
: (preparation symbol), memberikan niai
awal pada suatu variabel atau counter
: (processing symbol), menunjukkan
pengolahan aritmatika dan pemindahan data
: (input/output symbol), menunjukkan proses
input atau output
: (decision symbol), untuk mewakili operasi
perbandingan logika
: (predefined process symbol), proses yang
ditulis sebagai sub program, yaitu
prosedur/ fungsi
: (connector symbol), penghubung pada
halaman yang sama
: (off page connector symbol), penghubung
pada halaman yang berbeda
: arah proses
Contoh kasus :
1.Menghitung rata-rata tiga buah data
a.Algoritma dengan struktur bahasa Indonesia
![Page 43: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/43.jpg)
43
- Baca bilangan a, b, dan c
- Jumlahkan ketiga bilangan tersebut
- Bagi jumlah tersebut dengan 3
- Tulis hasilnya
b.Algoritma dengan pseudocode input (a,b,c)
Jml = a+b+c
Rerata = Jml/3
output (Rerata)
c. Algoritma dengan flowchart
Gambar 2.1 Flowchart Hitung Rata-Rata
End
Start
Input (a,b,c)
Jml = a+b+c
Output (Rerata)
Rerata = Jml/3
![Page 44: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/44.jpg)
44
2.Algoritma mencetak tiket parkir.
Penyelesaian menggunakan flowchart:
End
Start
Baca waktu masuk, waktu keluar, jenis kendaraan, biaya perjam (sesuai dgn
jenis kendaraan)
Lama parkir = waktu keluar – wWaktu masuk Biaya parkir = lama parkir * biaya perjam
Cetak Tiket (memuat data-data tentang waktu masuk, waktu keluar, jenis kendaraan dan biaya)
![Page 45: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/45.jpg)
45
Gambar 2.2 Flowchart Cetak Tiket Parkir
4.Algoritma konversi suhu dalam derajat Celcius ke
derajat Kalvin.
Penyelesaian menggunakan pseudocode: input (Celcius)
Kalvin = Celcius + 273
output (Kalvin)
2.3Tahap-Tahap Pemrograman Sebelumnya perlu dipahami tiga
pengertian pokok yakni program, bahasa pemrograman
dan pemrograman. Program adalah kata, ekspresi,
pernyataan yang disusun dan dirangkai menjadi satu
kesatuan prosedur yang berupa urutan langkah untuk
menyelesaikan masalah yang diimplementasikan dengan
menggunakan bahasa pemrograman sehingga dapat
dieksekusi oleh komputer. Bahasa pemrograman adalah
prosedur atau tata cara penulisan program. Sedangkan
pemrograman adalah proses mengimplementasikan
urutan langkah untuk menyelesaikan suatu masalah
dengan menggunakan suatu bahasa pemrograman.
![Page 46: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/46.jpg)
46
Pemrograman meliputi dua tahapan yaitu:
1.Fase Problem Solving
2.Fase Implementation
Fase I Fase II
Fase Problem Solving Fase Implementasi
Gambar 2.3 Tahapan Pemrograman
Langkah-langkah untuk dapat menyelesaikan masalah
Analisa Problem
Perancangan Algoritma
Test
Pembuatan Program
Test
Dokumentasi
Dipakai
![Page 47: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/47.jpg)
47
adalah sebagai berikut:
1.Memahami atau menganalisis masalah
Hal-hal yang harus diketahui dalam analisis masalah
supaya kita mengetahui bagaimana permasalahan
tersebut:
a)Kondisi awal, yaitu input yang tersedia.
b)Kondisi akhir, yaitu output yang diinginkan
c)Data lain yang tersedia
d)Operator yang tersedia
e)Syarat atau kendala yang harus dipenuhi
Contoh kasus 1:
Menghitung biaya percakapan telepon di wartel.
a)Input yang tersedia adalah jam mulai bicara dan jam
selesai bicara.
b)Output yang diinginkan adalah biaya percakapan.
c)Data lain yang tersedia adalah besarnya pulsa yang
digunakan dan biaya per pulsa.
d)Operator yang tersedia adalah pengurangan (-),
penambahan (+) dan perkalian (*).
e)Syarat kendala yang harus dipenuhi adalah aturan
jarak dan aturan waktu.
![Page 48: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/48.jpg)
48
Contoh kasus 2:
Menghitung luas dan keliling lingkaran.
a)Input yang tersedia adalah jari-jari lingkaran.
b)Output yang diinginkan adalah luas dan keliling
lingkaran.
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 algoritma
Bila masalahnya kompleks maka kita bagi ke dalam
modul-modul. Tahap penyusunan algoritma seringkali
dimulai dari langkah yang global terlebih dahulu.
Langkah global ini diperhalus sampai menjadi langkah
yang lebih rinci atau detail. Cara pendekatan ini sangat
bermanfaat dalam membuat algoritma untuk masalah
yang kompleks. Penghalusan lanngkah dengan cara
memecah langkah menjadi beberapa langkah. Tiap
langkah diuraikan lagi menjadi beberapa langkah yang
lebih sederhana. Penghalusan langkah ini akan terus
berlanjut sampai setiap langkah sudah cukup rinci dan
tepat untuk dilaksanakan oleh pemroses.
Contoh kasus:
![Page 49: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/49.jpg)
49
Algoritma 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-dm
A4 : Tulis hasil.
Hasil tersebut mudah manakala :
jam mulai bicara = 10:12:30
jam selesai bicara = 10:20:32
Lama bicara : 10:20:32
10:12:30
0: 8: 2
Masalah akan muncul apabila :
jam mulai bicara = 10:50:28
jam selesai bicara = 11:10:15
Lama bicara : 11:10:15
10:50:28
1:-40:-13
Disini memuat negatif, masalah muncul karena
![Page 50: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/50.jpg)
50
ms<mm dan ds<dm. Solusinya semua jam dihitung
total detiknya, total detik jam selesai bicara
dikurangkan total detik jam mulai bicara kemudian
dikonversikan 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 total
detik.
totdetmulai=(jm*3600)+(mm*60)+dm
A3.2 : Konversikan jam selesai bicara ke dalam total
detik.
totdetselesai=(js*3600)+(ms*60)+ds
A3.3 : Hitung selisih jam mulai bicara dan jam selesai
bicara dalam detik.
totdetbicara = totdetselesai – totdetmulai
A3.4 : Konversikan lama bicara ke dalam format jam :
menit : detik
jb = totdetbicara div 3600
sisa = totdetbicara mod 3600
mb = sisa div 60
db = sisa mod 60
A4 : Tulis hasil (jb:mb:db).
![Page 51: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/51.jpg)
51
Masalah baru akan muncul apabila :
jam mulai bicara = 23:58:30
jam selesai bicara = 01:04:12
Muncul masalah karena js<jm sehingga nilai
totdetselesai lebih kecil daripada totdetmulai,
akibatnya totdetbicara bernilai negatif. Sebagai
solusinya 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+24
A3.1 : Konversikan jam mulai bicara ke dalam total
detik.
totdetmulai=(jm*3600)+(mm*60)+dm
A3.2 : Konversikan jam selesai bicara ke dalam total
detik.
totdetselesai=(js*3600)+(ms*60)+ds
A3.3 : Hitung selisih jam mulai bicara dan jam selesai
bicara dalam detik.
totdetbicara = totdetselesai – totdetmulai
A3.4 : Konversikan lama bicara ke dalam format jam :
menit : detik
![Page 52: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/52.jpg)
52
jb = totdetbicara div 3600
sisa = totdetbicara mod 3600
mb = sisa div 60
db = sisa mod 60
A4 : Tulis hasil (jb:mb:db).
Ciri-ciri algoritma yang baik :
a)Precise (tepat, betul, teliti)
Setiap instruksi harus ditulis dengan seksama dan
tidak ada keragu-raguan, dengan demikian setiap
instruksi harus dinyatakan secara eksplisit dan
tidak ada bagian yang dihilangkan karena
pemroses dianggap sudah mengerti. Setiap
langkah harus jelas dan pasti.
Contoh: Tambahkan 1 atau 2 pada x.
Instruksi di atas terdapat keraguan.
b)Jumlah langkah atau instruksi berhingga dan
tertentu.
Artinya untuk kasus yang sama, banyaknya
langkah tetap dan tertentu meskipun datanya
berbeda.
c)Efektif
Tidak boleh ada instruksi yang tidak mungkin
![Page 53: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/53.jpg)
53
dikerjakan oleh pemroses yang akan
menjalankannya.
Contoh: Hitung akar 2 dengan presisi sempurna.
Instruksi di atas tidak efektif, agar efektif instruksi
tersebut diubah. Misal: Hitung akar 2 sampai lima
digit di belakang koma.
d)Harus terminate
Jalannya algoritma harus ada kriteria berhenti.
Pertanyaannya adalah apakah apabila jumlah
instruksinya berhingga maka pasti terminate?
e)Output yang dihasilkan tepat
Jika langkah-langkah algoritmanya logis dan
diikuti dengan seksama maka dihasilkan output
yang diinginkan.
3.Menulis program
Algoritma yang telah dibuat diterjemahkan dalam
bahasa komputer menjadi sebuah program. Perlu
diperhatikan bahwa pemilihan algoritma yang salah
akan menyebabkan program memiki unjuk kerja yang
kurang baik. Program yang baik memiliki standar
penilaian :
a. Standar teknik pemecahan masalah
![Page 54: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/54.jpg)
54
a.Teknik Top-Down
Teknik pemecahan masalah yang paling
umum digunakan. Prinsipnya adalah suatu
masalah yang kompleks dibagi-bagi ke
dalam beberapa kelompok masalah yang
lebih kecil. Dari masalah yang kecil
tersebut dilakukan analisis. Jika
dimungkinkan maka masalah tersebut
akan dipilah lagi menjadi subbagian-
subbagian dan setelah itu mulai disusun
langkah-langkah untuk penyelesaiannya
secara lebih detail.
b.Teknik Bottom-Up
Prinsip teknik bottom up adalah
pemecahan masalah yang kompleks
dilakukan dengan menggabungkan
prosedur-prosedur yang ada menjadi satu
kesatuan program sebagai penyelesaian
masalah tersebut.
b. Standar penyusunan program
a.Kebenaran logika dan penulisan
b.Waktu minimum untuk penulisan program
c.Kecepatan maksimum eksekusi program
![Page 55: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/55.jpg)
55
d.Ekspresi penggunaan memori
e.Kemudahan merawat dan mengembangkan
program
f.User friendly
g.Portability
h.Pemrograman modular
c. Standar perawatan program
a.Dokumentasi
b.Penulisan instruksi
d. Standar prosedur
4.Uji hasil
Pertama kali harus diuji apakah program dapat
dijalankan. Apabila program tidak dapat dijalankan
maka perlu diperbaiki penulisan sintaksnya tetapi bila
program dapat dijalankan maka harus diuji dengan
menggunakan data-data yang biasa yaitu data yang
diharapkan oleh sistem yang dibuat maupun data-data
yang ekstrem yaitu data yang tidak diharapkan oleh
sistem. Contoh data ekstrem misalnya program
menghendaki masukan jumlah data tetapi user
mengisikan dengan bilangan negatif. Program
sebaiknya diuji menggunakan data yang relatif
banyak.
![Page 56: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/56.jpg)
56
Contoh kasus:
Menghitung luas persegi panjang.
a)Baca panjang dan lebar (P,L)
b)Hitung luas (Luas = P + L)
c)Cetak hasil
Misalkan algoritma di atas dites dengan data panjang
= 2 dan lebar = 2. Luas yang dihasilkan sama dengan
4. Apabila kita menguji hanya dengan data tersebut
maka bisa jadi kita beranggapan bahwa algoritma tadi
sudah benar karena 2 x 2 = 4. Padahal tanpa kita
sadari langkah yang ditulis adalah Luas = P + L dan
bukan Luas = P x L. Hal ini terjadi karena salah
dalam memilih data untuk melakukan test.
5.Membuat dokumentasi
Dokumentasi program ada dua macam yaitu
dokumentasi internal dan dokumentasi eksternal.
Dokumentasi internal adalah dokumentasi yang dibuat
di dalam program yakni setiap kita menuliskan baris
program sebaiknya kita beri komentar atau keterangan
supaya mempermudah kita untuk mengingat logika
yang terdapat dalam instruksi tersebut, hal ini sangat
![Page 57: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/57.jpg)
57
bermanfaat ketika suatu saat program tersebut akan
dikembangkan. Dokumentasi eksternal adalah
dokumentasi program yang dilakukan dari luar
program yaitu membuat user guide atau tbuku
petunjuk aturan atau cara menjalankan program
tersebut.
6.Program dipakai
2.4 Struktur Dasar Algoritma Algoritma berisi langkah-langkah penyelesaian suatu
masalah. Langkah-langkah tersebut dapat berupa
runtunan aksi (sequence), pemilihan aksi (selection),
pengulangan aksi (iteration) atau kombinasi dari
ketiganya. Jadi struktur dasar pembangun algoritma ada
tiga, yaitu :
1.Struktur Runtunan
Digunakan untuk program yang instruksinya
sequential atau urutan.
2.Struktur Pemilihan
Digunakan untuk program yang menggunakan
pemilihan atau penyeleksian kondisi.
![Page 58: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/58.jpg)
58
3.Struktur Perulangan
Digunakan untuk program yang instruksinya akan
dieksekusi berulang-ulang.
2.5 Latihan
1.Belajar memprogram dan belajar bahasa pemrograman
adalah dua hal yang berbeda. Jelaskan.
2.Buatlah pseudocode dan flowchart untuk menghitung
rata-rata dari sepuluh bilangan yang diinputkan oleh
user.
3.Buatlah pseudocode dan flowchart untuk menghitung
volume bola.
4.Buatlah pseudocode dan flowchart untuk menentukan
suatu bilangan bulat positif, ganjil atau genap.
5.Buatlah pseudocode dan flowchart untuk
menenampilkan sepuluh bilangan ganjil pertama.
6.Buatlah pseudocode dan flowchart untuk mengurutkan
tiga buah kartu.
![Page 59: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/59.jpg)
59
Bab 3
Struktur Runtunan
Tujuan Pembelajaran Umum:
1. Memahami struktur dasar algoritma runtunan
2. Membuat algoritma runtunan untuk menyelesaikan
suatu permasalahan mengunakan flowchart
3.1 Runtunan
Suatu masalah yang diselesaikan menggunakan struktur
runtunan mempunyai logika bahwa setiap instruksi akan
dikerjakan satu persatu. Setiap instruksi dilaksanakan
tepat satu kali, tidak ada instruksi yang diulang maupun
tidak dilaksanakan. Urutan instruksi yang dilaksanakan
pemroses sama dengan urutan aksi sebagaimana yang
tertulis di dalam teks algoritmanya. Akhir dari instruksi
terakhir merupakan akhir algoritma. Bila runtunan
instruksi dalam algoritma berturut-turut dilambangkan
dengan A1, A2, A3, A4, dan A5, maka pelaksanaan
instruksi tersebut adalah :
![Page 60: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/60.jpg)
60
Gambar 3.1 Flowchart Runtunan
Perhatikan runtunan instruksi yang dilambangkan dengan
A1, A2, A3, A4 dan A5. Mula-mula pemroses
melaksanakan instruksi A1. Instruksi A2 dilaksanakan
setelah instruksi A1 selesai. Selanjutnya instruksi A3
dilaksanakan setelah instruksi A2 selesai, dan seterusnya
sampai terakhir instruksi A5 dilaksanakan. Setelah
instruksi A5 selesai dilaksanakan, algoritma berhenti.
Urutan penulisan instruksi di dalam algoritma penting
sekali diperhatikan karena urutan instruksi yang berbeda
dalam struktur runtunan dapat menghasilkan keluaran
yang berbeda juga. Urutan langkah di dalam struktur
runtunan mencerminkan cara berpikir penyusun algoritma
![Page 61: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/61.jpg)
61
tersebut dalam menuliskan langkah-langkah penyelesaian
masalah. Output dari aksi sebelumnya menjadi input bagi
aksi berikutnya. Sebagai contoh perhatikan dua algoritma
berikut :
Algoritma pertama
A = 10
A = A2+2
B = A – 5
C = A + B + 3
C = C + 5
Output (A,B,C)
Algoritma pertama menghasilkan keluaran: A = 102
B = 97
C = 207
Algoritma kedua A = 10
B = A – 5
A = A2+2
C = A + B + 3
C = C + 5
Output (A,B,C)
![Page 62: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/62.jpg)
62
Algoritma pertama menghasilkan keluaran: A = 102
B = 5
C = 115
4.2 Contoh-Contoh Kasus Runtunan 1.Menghitung luas persegi panjang dimana besarnya
panjang dan lebar persegi panjang dimasukkan melalui
keyboard.
Jawab :
a.Algoritma dengan struktur bahasa Indonesia
- Masukkan panjang dan lebar
- Kalikan panjang dengan lebar dan simpan
hasilnya sebagai luas.
- Tulis hasilnya
b.Algoritma dengan pseudocode input (P,L)
Luas = P * L
output (Luas)
c.Algoritma dengan flowchart
![Page 63: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/63.jpg)
63
Gambar 3.2 Flowchart Hitung Luas Persegi Panjang
2.Menghitung nilai rata-rata dari dua buah data.
Jawab :
Algoritma menggunakan pseudocode input (x,y) Rerata = (x + y)/2
output (Rerata)
3.Menghitung luas dan keliling lingkaran dengan
besarnya jari-jari lingkaran dimasukkan melalui
keyboard.
![Page 64: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/64.jpg)
64
Jawab :
a. Algoritma dengan struktur bahasa Indonesia
- Tentukan nilai phi sama dengan 3.14
- Masukkan jari-jari lingkaran
- Kalikan phi dengan kuadrat dari jari-jarinya dan
simpan hasilnya sebagai luas.
- Kalikan phi dengan dua kali jari-jarinya dan
simpan hasilnya sebagai keliling.
- Tulis hasilnya
b. Algoritma dengan pseudocode phi = 3.14
input ( R )
L = phi * R * R
K = 2 * phi * R
output (L,K)
c. Algoritma dengan flowchart
Input ( R )
Start
phi = 3.14
![Page 65: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/65.jpg)
65
Gambar 3.3 Flowchart Hitung Luas dan Keliling
Lingkaran
4. Konversi total detik menjadi berapa jam lebih berapa
menit lebih berapa detik.
Jawab :
a. Algoritma dengan struktur bahasa Indonesia
- Baca data atau total detik (misalkan Dt)
- Bagilah Dt dengan 3600 (misalkan hasil sama
dengan J dan sisa hasil bagi sama dengan S)
- Bagilah S dengan 60 (misalkan hasil sama
dengan M dan sisa hasil bagi sama dengan D)
![Page 66: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/66.jpg)
66
- Tulis hasilnya (J, M, D)
b. Algoritma dengan pseudocode input (Dt)
J = Dt div 3600
S = Dt mod 3600
M = S div 60
D = S mod 60
output (J, M, D)
c. Algoritma dengan flowchart
![Page 67: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/67.jpg)
67
Gambar 3.4 Flowchart Konversi Detik
5. Konversi jam, menit dan detik ke dalam total detik.
Jawab :
Algoritma dengan pseudocode: input (J, M, D) D1 = J * 3600
D2 = M * 60
Dtot = D1 + D2 + D
![Page 68: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/68.jpg)
68
output (Dtot)
6. Menghitung sisi miring dan keliling segitiga siku-siku
dengan sisi tegak dan sisi mendatar merupakan input dari
masukkan keyboard.
Jawab :
Algoritma dengan pseudocode input(alas,tinggi) sisimiring= sqrt(alas*alas
+tinggi*tinggi)
keliling = alas + tinggi + sisimiring
output(sisimiring,keliling)
7. Menukarkan 2 buah nilai A dan B
Jawab :
Algoritma dengan pseudocode input (A,B) A = B
B = A
output (A,B)
Algoritma di atas mempunyai logika yang salah.
Hasil dari pseudocode tersebut :
![Page 69: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/69.jpg)
69
Sebelum Pertukaran
Bilangan pertama = 14
Bilangan kedua = 32
Setelah Pertukaran
Bilangan pertama = 32
Bilangan kedua = 32
Supaya salah satu variabel nilainya tidak hilang
karena tertimpa oleh nilai dari variabel yang lain
maka sebelum ditukar nilai tersebut harus
diamankan terlebih dahulu yaitu disimpan di
variabel ketiga sebagai variabel bantu. Logikanya
mirip dengan pertukaran dua buah gelas yang berisi
cairan berwarna berbeda. Misalkan gelas pertama
berisi sirup berwarna biru sedangkan gelas kedua
berisi sirup berwarna kuning. Dua gelas tersebut
akan dipertukarkan isinya sehingga diperlukan gelas
ketiga untuk menampung isi salah satu gelas.
Setelah logika algoritma di atas diperbaiki:
input (A,B) temp = A
A = B
B = temp
![Page 70: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/70.jpg)
70
output (A,B)
Proses mempertukarkan nilai A dan B dengan
menggunakan Temp sebagai tempat menyimpan
sementara nilai A.
Ilustrasi sebelum pertukaran
14 32 A temp B
Ilustrasi proses pertukaran
14 14 32 temp=A
A temp B
32 14 32 A=B
A temp B
32 14 14 B=temp
A temp B
![Page 71: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/71.jpg)
71
Ilustrasi setelah pertukaran
32 14 14 A temp B
Gambar 3.5 Ilustrasi Pertukaran Data
Setelah pertukaran nilai A dan B, nilai temp masih
berisi nilai semula yaitu 14. Hal ini karena pengisian
nilai A ke dalam temp sama dengan menyalin atau
mencopy nilai A ke dalam temp. A sendiri tidak
kehilangan nilai akibat pengisian nilai tersebut.
Sehingga pengisian nilai temp ke dalam B tetap
meninggalkan nilai di dalam temp yaitu 14.
8. Konversi penulisan sebuah huruf kecil menjadi huruf
besar.
Jawab :
Perlu menggunakan tabel ASCII (American Standard
Code for Information Interchange) yang memuat
secara lengkap daftar informasi karakter baku beserta
urutannya. Yang termasuk karakter adalah huruf
![Page 72: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/72.jpg)
72
alfabet ('A' .. 'Z', 'a' .. 'z'), angka bulat ('0' .. '9'),
operator aritmatika ('+', '-', '*', '/'), tanda baca ('.', ';', ',',
'?', '!', ':' dan lain-lain) serta karakter-karakter khusus
('@', '#', '$', ' ', '%', dan lain-lain). Untuk mengetahui
posisi atau urutan suatu karakter yang ada dalam tabel
ASCII digunakan fungsi ordinal. Fungsi ini mencari
angka urutan dalam tabel ASCII yang digunakan untuk
melambangkan karakter tersebut. Fungsi ini tidak
dapat berdiri sendiri instruksinya, berarti
penggunaannya antara lain ditampung nilainya dalam
suatu variabel atau dilibatkan dalam instruksi lain
misalnya assignment, langsung dicetak atau
dimasukkan dalam ekspresi aritmatika. Bentuk umum
fungsi ordinal yaitu :
variabel=ord(argumen)
ord berarti ordinal dan argumen disini adalah karakter
yang akan dicari urutannya di tabel ASCII. Karakter
'A' terdapat pada urutan 65 dan 'Z' terdapat di posisi
90. Sedangkan 'a' pada posisi 97 serta 'z' pada posisi
122. Dengan demikian antara huruf besar dan huruf
kecil terpisah dengan jarak posisi 32. Tiap bilangan
bulat mempunyai sifat keterututan. Ini berarti bila
sebuah nilai bilangan bulat diketahui maka nilai
![Page 73: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/73.jpg)
73
sebelumnya (predecessor) dan nilai sesudahnya
(sucessor) dapat diketahui. Untuk mengetahui karakter
pada urutan tertentu dalam tabel ASCII digunakan
fungsi karakter dengan bentuk umum :
variabel=chr(argumen)
chr berarti character dan argumen disini adalah
informasi urutan atau posisi.
Algoritma dengan pseudocode
input (huruf_kecil) posisi_hurufkecil = ord (huruf_kecil)
posisi_hurufbesar = posisi_hurufkecil – 32
huruf_besar = chr (posisi_hurufbesar)
output (huruf_besar)
Misal : huruf_kecil = a
posisi_hurufkecil = ord ('a') = 97
posisi_hurufbesar = 97 – 32 = 65
huruf_besar = chr (65) = A
9. Buatlah program untuk mengkonversikan penulisan
sebuah huruf besar menjadi huruf kecil.
Jawab :
![Page 74: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/74.jpg)
74
Logikanya sama dengan contoh soal 9.
Algoritma dengan pseudocode
input (huruf_besar) posisi_hurufbesar = ord (huruf_besar)
posisi_hurufkecil = posisi_hurufkecil +
32
huruf_kecil = chr (posisi_hurufkecil)
output (huruf_kecil)
Misal : huruf_besar = A
posisi_hurufbesar = ord ('A') = 65
posisi_hurufkecil = 65 + 32 = 97
huruf_kecil = chr (97) = a
10. Program untuk mengkonversikan penulisan sebuah
karakter angka menjadi bilangan bulat.
Jawab :
Kita berpedoman bahwa karakter angka '0' dalam tabel
ASCII berada pada posisi 48. Disini angka 0 berupa
karakter sedangan nilai 48 adalah sebuah bilangan
bulat. Supaya angka 0 sebagai karakter dapat
ditampilkan sebagai angka 0 tetapi berstatus bilangan
bulat maka 48 harus dikurangi dengan dirinya sendiri
yaitu 48 sehingga menghasilkan bilangan 0.
![Page 75: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/75.jpg)
75
Algoritma dengan pseudocode
input (bil_karakter) posisi_bilkarakter=ord(bil_karakter)
bil_bulat=posisi_bilkarakter–48
output (bil_bulat)
Misal : bil_karakter = 1
posisi_bilkarakter = ord ('1') = 49
bil_bulat = 49 – 48 = 1
bil_bulat = 1
3.3 Latihan
1.Buatlah algoritma untuk menghitung lama pembicaraan
di telepon. Kemudian implementasikan algoritma
tersebut dalam bahasa Python.
2.Buatlah algoritma untuk menukar nilai dari tiga buah
bilangan. Kemudian implementasikan algoritma
tersebut dalam bahasa Python.
3.Buatlah algoritma untuk konversi derajat Celcius ke
derajat Reamur, Kalvin dan Fahrenheit. Kemudian
implementasikan algoritma tersebut dalam bahasa
Python.
![Page 76: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/76.jpg)
76
Bab 4
Struktur Pemilihan
Tujuan Pembelajaran Umum:
1.Memahami penggunaan struktur if dalam
pengambilan keputusan
2. Memahami penggunaan struktur switch dalam
pengambilan keputusan
3.Membuat algoritma program untuk mengambil
keputusan berdasarkan struktur pemilihan if dan
switch.
Penyelesaian masalah dengan struktur pemilihan atau
percabangan adalah suatu cara pemecahan masalah
dengan instruksi-instruksi tertentu yang dapat digunakan
untuk mengambil keputusan berdasarkan suatu kondisi.
Pernyataan percabangan memungkinkan suatu pernyataan
dieksekusi hanya jika suatu kondisi terpenuhi atau tidak
terpenuhi. Artinya tidak setiap baris atau langkah
algoritma akan dikerjakan. Suatu baris algoritma akan
![Page 77: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/77.jpg)
77
dikerjakan jika kondisinya memenuhi syarat. Struktur
pemilihan adalah struktur algoritma yang melakukan
proses pengujian untuk mengambil suatu keputusan atau
tindakan apakah suatu baris instruksi atau blok instruksi
akan diproses atau tidak. Contoh : Jika suatu bilangan
tidak habis dibagi 2 maka bilangan tersebut adalah
bilangan ganjil. Disini keputusan untuk menyatakan suatu
bilangan adalah ganjil berdasarkan kondisi jika bilangan
tersebut tidak habis dibagi 2.
Bentuk instruksi percabangan
1.Instruksi IF
a. Pernyataan IF Sederhana
b. Pernyataan IF-ELSE
c. Pernyataan IF Bertingkat
2.Instruksi SWITCH
4.1 Instruksi IF Secara umum flowchartnya, sebagai berikut:
![Page 78: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/78.jpg)
78
Gambar 4.1 Flowchart Instruksi IF
4.1.1 Pernyataan IF Sederhana
Instruksi ini digunakan untuk memeriksa sebuah kondisi
dan akan mengeksekusi satu instruksi atau blok instruksi,
jika dan hanya jika kondisinya terpenuhi. Test kondisi ini
sering disebut test satu arah.
Bentuk umum pseudocode : pernyataan_A
if <kondisi> then <pernyataan>
pernyataan_B
![Page 79: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/79.jpg)
79
atau
pernyataan_A
if <kondisi> then
<pernyataan1>
<pernyataan2>
...
<pernyataann>
endif
pernyataan_B
4.1.1.1 Instruksi IF dengan Syarat Tunggal Instruksi ini digunakan untuk memeriksa sebuah kondisi
saja.
Contoh :
Untuk menyatakan mahasiswa lulus jika nilai akhir >=65 if (nilai=65) then write ('Lulus')
4.1.1.2 Instruksi IF dengan Syarat Majemuk Instruksi ini adalah pernyataan IF yang menggunakan
pemeriksaan lebih dari satu kondisi. Kondisi-kondisi
tersebut dihubungkan dengan operator-operator logika
yaitu digunakan operator logika AND dan OR.
![Page 80: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/80.jpg)
80
Contoh :
1.Untuk menyatakan apakah mahasiswa dapat mengikuti
tes laboran apabila nilai mata kuliah yang
bersangkutan adalah B atau A. if (nilai = 'A') or (nilai = 'B')
then
write('Dapat mengikuti tes asisten')
endif
2.Untuk menyatakan mahasiswa lulus jika nilai akhir
>=65 dan presensi kehadiran lebih dari 10 kali. if (nilai>=65) and (presensi>=10)
then write('Lulus')
endif
Program merupakan pengimplementasian dari algoritma
yang ditulis dengan bahasa pemrograman, dengan
demikian program juga harus dapat mencabang, meloncat
atau berulang. Untuk melakukan langkah-langkah itu
maka program harus dikendalikan. Dengan menggunakan
perintah-perintah pengendali program maka hal tersebut
dapat dilakukan. Pengendalian program bahasa Python
seperti bahasa pemrograman lainnya dapat menggunakan
instruksi if dan if-else. Pada pengambilan keputusan
biasanya operator logika banyak digunakan.
![Page 81: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/81.jpg)
81
Perintah if digunakan untuk mewujudkan percabangan
bersyarat, di dalam bahasa Python pernyataan if
mempunyai bentuk dasar yaitu :
if kondisi:
pernyataan
4.1.2 Instruksi IF - ELSE
Instruksi ini digunakan untuk menentukan tindakan yang
akan digunakan apabila kondisi bernilai benar dan
tindakan yang akan digunakan apabila kondisi bernilai
salah.
Bentuk umum pseudocode : pernyataan_A
if <kondisi> then <pernyataan1>
else <pernyataan2>
endif
pernyataan_B
Pengujian kondisi ini dilakukan untuk memilih salah satu
dari dua alternatif yang tersedia sehingga sering disebut
test dua arah. Secara flowchart dapat digambarkan seperti
berikut:
![Page 82: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/82.jpg)
82
Gambar 4.2 Flowchart Instruksi IF-ELSE
Instruksi percabangan if dengan else dalam Python
seperti di bawah ini
if kondisi :
pernyataan1
else : pernyataan2
4.2 Contoh-Contoh Kasus IF dan IF-
ELSE
1.Menentukan bilangan genap dan bilangan ganjil.
![Page 83: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/83.jpg)
83
Jawab :
Algoritma dengan pseudocode:
if (x mod 2 = 0) then
write(“x adalah bilangan genap”)
else write(“x adalah bilangan
ganjil”)
endif
2.Menentukan nilai absolut dari bilangan yang
dimasukkan melalui keyboard.
Jawab :
Algoritma dengan pseudocode input (x)
if x>=0 then output (x)
else
x=x*-1
output (x)
atau :
input (x)
if x<0 then x=x*-1
output (x)
![Page 84: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/84.jpg)
84
4.3 Instruksi IF Bertingkat Bentuk umum pseudocode:
if <kondisi_1> then <pernyataan_1>
else if <kondisi_2> then
<pernyataan_2>
else if <kondisi_3> then
<pernyataan_3>
.
.
.
else <pernyataan_m>
endif
endif
endif
4.4 Contoh-Contoh Kasus IF Bertingkat 1.Konversi huruf besar ke huruf kecil dan sebaliknya dari
huruf kecil ke huruf besar. Input adalah sembarang
huruf.
Jawab :
![Page 85: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/85.jpg)
85
Algoritma dengan pseudocode
Algoritma pertama: input (huruf)
kode = ord (huruf)
if kode>=97 then kodebaru = kode –
32
else kodebaru = kode + 32
hurufbaru = chr (kodebaru)
output (hurufbaru)
Algoritma kedua:
input (huruf) kode = ord (huruf)
if kode<=90 then kodebaru = kode +
32
else kodebaru = kode - 32
hurufbaru = chr (kodebaru)
output (hurufbaru)
Algoritma ketiga: input (huruf)
kode = ord (huruf)
if kode>=65 and kode<=90 then
kodebaru = kode + 32
else kodebaru = kode - 32
hurufbaru = chr (kodebaru)
output (hurufbaru)
![Page 86: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/86.jpg)
86
Algoritma keempat: input (huruf)
kode = ord (huruf)
if kode>=97 and kode<=122 then
kodebaru = kode - 32
else kodebaru = kode + 32
hurufbaru = chr (kodebaru)
output (hurufbaru)
2.Mencari data terbesar diantara tiga buah data.
Jawab :
Algoritma dengan pseudocode input (A,B,C)
if A>=B then
if A>=C then output (A)
else output (C)
endif
else if B>=C then output (B)
else output (C)
endif
endif
3.Pengelompokan nilai dengan ketentuan:
![Page 87: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/87.jpg)
87
Jika nilai angka >= 90 maka nilai huruf = A
Jika nilai angka >= 80 maka nilai huruf = B
Jika nilai angka >= 70 maka nilai huruf = C
Jika nilai angka >= 60 maka nilai huruf = D
Jika nilai angka < 60 maka nilai huruf = E
Jawab :
Algoritma dengan pseudocode
input(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 88: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/88.jpg)
88
input (nilaihuruf)
if nilaihuruf='A' then
nilaiangka=4
else if nilaihuruf='B' then
nilaiangka=3
else if nilaihuruf='C' then
nilaiangka=2
else if nilaihuruf='D' then
nilaiangka=1
else if nilaihuruf='E'
then
nilaiangka=0
endif
endif
endif
endif
endif
output (nilaiangka)
5.Buatlah komentar kelulusan untuk teman anda.
Jawab :
Algoritma dengan pseudocode input(na)
if na>=85 then
nh = 'A'
komentar='Anda layak dapat bintang'
else
if na>=70 and na<=84 then
![Page 89: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/89.jpg)
89
nh = 'B'
komentar='Good...Good...Good'
else
if na>=55 and na<= 69 then
nh = 'C'
komentar='Lumayan deh'
else
if na>=30 and na<= 54 then
nh = 'D'
komentar='Don't worry,
next time better'
else
if na<=29 then
nh = 'E'
komentar='Anda tidak lulus'
else
komentar='Nilai tidak dikenal'
endif
endif
endif
endif
endif
output (nh,komentar)
6.Buatlah program untuk mencari akar-akar dari
persamaan kuadrat ax2 + bx + c = 0.
Jawab :
Koefisien a, b, dan c bisa mempunyai sembarang nilai
termsuk nol. Akar-akar persamaan kuadrat bergantung
![Page 90: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/90.jpg)
90
dari nilai-nilai koefisiennya. Berdasarkan nilai-nilai
koefisien tersebut disusun kemungkinan-kemungkinan
sebagai berikut:
Bila koefisien a = 0 maka ax2 + bx + c = 0 bukan
persamaan kuadrat.
Perhitungan determinan D = b2 –4ac.
Jika D negatif (D<0) maka ax2 + bx + c = 0
mempunyai akar imajiner. Dalam perhitungan,
komponen imajiner i akan diabaikan, tetapi akan
dicetak pada keluarannya sebagai status akar.
Jika D nol (D=0) maka ax2 + bx + c = 0 mempunyai
dua akar riil yang kembar yaitu:
x1=x2=-b/2a
Jika D positif (D>0) maka ax2 + bx + c = 0
mempunyai dua akar yang berlainan yaitu:
x1=(-b+sqrt(d))/2a
x2=(-b-sqrt(d))/2a
Algoritma dengan pseudocode
input (a,b,c)
if a=0 then
write ('Bukan persamaan kuadrat')
else
![Page 91: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/91.jpg)
91
D=(b*b)-(4*a*c)
if D<0 then write ('Akar imajiner')
else if D=0 then
x=-b/2*a
output (x)
else
x1=(-b+sqrt(d))/2*a
x2=(-b-sqrt(d))/2*a
output (x1,x2)
endif
endif
endif
7. Mengurutkan tiga huruf yang dimasukkan dari
keyboard dan user disediakan pilihan model penyajian
yaitu ascending atau descending.
Jawab :
Tiga huruf yang dimasukkan bisa huruf besar semua,
huruf kecil semua atau kombinasi huruf besar dan
huruf kecil.
Algoritma dengan pseudocode input (h1,h2,h3)
input (pilihan)
if pilihan=1 then
if h1>h2 then
![Page 92: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/92.jpg)
92
temp=h1
h1=h2
h2=temp
endif
if h1>h3 then
temp=h1
h1=h3
h3=temp
endif
if h2>h3 then
temp=h2
h2=h3
h3=temp
endif
endif
output (h1,h2,h3)
else if pilihan=2 then
if h1<h2 then
temp=h1
h1=h2
h2=temp
endif
if h1<h3 then
temp=h1
h1=h3
h3=temp
endif
if h2<h3 then
![Page 93: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/93.jpg)
93
temp=h2
h2=h3
h3=temp
endif
endif
output (h1,h2,h3)
8. Mencetak nama bulan berdasarkan nomor urutannya.
Jawab :
Algoritma dengan pseudocode if (nobulan=1) then write ('Januari')
else if (nobulan=2) then write
('Februari')
else if (nobulan=3) then write ('Maret')
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 94: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/94.jpg)
94
write ('Desember')
Untuk mempermudah pencarian kesalahan, sebaiknya
penulisan pseudocode tidak dibuat rata kiri.
4.5 Instruksi SWITCH Pemilihan proses menggunakan instruksi IF selalu
didasarkan pada dua pilihan yang bisa terjadi. Dengan
demikian untuk mentest lebih dari dua pilihan harus
digunakan sejumlah instruksi IF seperti terlihat pada
bentuk umum instruksi IF untuk pilihan jamak. Struktur
statemen yang demikian seringkali membuat bingung.
Pemilihan proses untuk sejumlah pilihan kondisi bisa
dilaksanakan dengan instruksi SWITCH. Pernyataan
SWITCH digunakan untuk menyederhanakan instruksi
IF-ELSE yang bertingkat-tingkat. Semua masalah yang
bisa diselesaikan menggunakan instruksi SWITCH pasti
juga bisa ditangani dengan menggunakan instruksi IF,
tetapi tidak berlaku sebaliknya
c.Bentuk umum pseudocode: switch <pilihan>
![Page 95: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/95.jpg)
95
case <pilihan1> : <aksi1>
case <pilihan2> : <aksi2>
...
case <pilihann> : <aksin>
{otherwise aksi}
endcase
pilihan1, pilihan2, ..., pilihann mempunyai nilai
kebenaran. Tiap pilihan diperiksa nilai kebenarannya,
mulai dari pilihan pertama sampai ditemukan pilihan
yang bernilai benar. Jika pilihan ke-i bernilai benar maka
aksi ke-i dilaksanakan. Pilihan berikutnya yakni pilihan
ke-i+1 sampai dengan pilihan ke-n tidak
dipertimbangkan lagi. Aksi yang dipasangkan dengan ke-
i dapat berupa satu baris instruksi atau blok instruksi.
Apabila tidak ada satupun pilihan yang bernilai benar
maka aksi sesudah otherwise dikerjakan. Penulisan
otherwise bersifat optional.
![Page 96: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/96.jpg)
96
Gambar 4.3 Flowchart Instruksi SWITCH
4.6 Contoh-Contoh Kasus SWITCH
1.Konversi nilai huruf menjadi nilai angka.
Jawab:
Algoritma dengan pseudocode input (na)
![Page 97: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/97.jpg)
97
switch (na)
case 'A' : nh=4
case 'B' : nh=3
case 'C' : nh=2
case 'D' : nh=1
case 'E' : nh=0
otherwise write ('Masukkan
A/B/C/D/E')
endcase
2.Pemilihan mobil.
Jawab:
Algoritma dengan pseudocode input (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/d
6')
endcase
3. Menampilkan nama bulan berdasar atas input bilangan
integer 1 s/d 12.
Jawab :
![Page 98: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/98.jpg)
98
Algoritma dengan pseudocode input (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 Latihan
1.Tuliskan algoritma untuk menentukan bilangan yang
dimasukkan antara 0 sampai 10 adalah bilangan prima
atau bukan
2.Tuliskan algoritma untuk menentukan tahun kabisat
3.Tuliskan algoritma untuk menentukan jumlah hari
dalam bulan, yang dimasukkan adalah kode bulan
1..12.
![Page 99: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/99.jpg)
99
4.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 volume
bola ( L = 4.phi.R2, V = 4/3.phi.R3).
6.Tuliskan algoritma untuk menentukan jarak atau titik
tengah dari 2 titik yang diinputkan.
7.Tuliskan pseudocode dari flowchart sebagai berikut ini:
![Page 100: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/100.jpg)
100
8.Tuliskan algoritma untuk menentukan koordinat titik
ada di kuadran I, II, III, atau IV.
9.Tuliskan algoritma untuk menyelesaikan persamaan
linier dari ax + by = c
dx + ey = f
![Page 101: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/101.jpg)
101
9.Tuliskan algoritma untuk menampilkan zodiac
berdasarkan bulan dan tanggalnya.
10.Tuliskan algoritma dimana user diberi pilihan sebagai
berikut:
Menu Pilihan Bidang
A. Jajaran Genjang
B. Persegi Panjang
C. Bujur Sangkar
D. Lingkaran
E. Segitiga
F. Trapesium
Setiap pilihan bidang menghitung luas dan keliling
dari bidang yang dipilih. Ukuran-ukuran yang
berkaitan dimasukkan melalui keyboard.
12.Tuliskan algoritma untuk mengetahui apakah data
kedua bisa digunakan untuk membagi data pertama.
Apabila data pertama tidak bisa dibagi oleh data kedua
maka algoritma akan mengeluarkan pesan. Apabila
data pertama bisa dibagi oleh data kedua maka
algoritma akan menampilkan hasil dari pembagian
tersebut serta seandainya terdapat sisa pembagian
maka algoritma harus dapat menampilkan nilainya
![Page 102: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/102.jpg)
102
![Page 103: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/103.jpg)
103
Bab 5
Struktur Perulangan
Tujuan pembelajaran umum:
1.memahami algoritma perulangan dengan struktur
FOR
2.memahami algoritma perulangan dengan struktur
WHILE
3.memahami algoritma perulangan dengan struktur
DO-WHILE.
Andaikan kita diminta menjumlahkan 10 buah bilangan
yang dimasukkan melalui keyboard dan kita
menyelesaikan masalah di atas menggunakan struktur
sequence atau runtunan maka algoritmanya berupa
pseudocode sebagai berikut :
input(x1)
input(x2)
input(x3)
![Page 104: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/104.jpg)
104
input(x4)
input(x5)
input(x6)
input(x7)
input(x8)
input(x9)
input(x10)
jumlah=x1+x2+x3+x4+x5+x6+x7+x8+x9+x10
output(jumlah)
Pseudocode di atas benar tetapi tidak efisien, bayangkan
saja seandainya data yang harus dijumlahkan relatif besar
misalnya 1000 buah maka berapa banyaknya baris
instruksi untuk membaca data dan panjangnya penulisan
instruksi untuk menjumlahkan datanya. Untuk masalah
ini solusinya kita menggunakan struktur iteration atau
perulangan.
jumlah=0
for i=1 to 1000 do
input(x)
jumlah=jumlah+x
endfor
output(jumlah)
Instruksi perulangan digunakan untuk menjalankan satu
atau beberapa instruksi sebanyak beberapa kali jika suatu
![Page 105: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/105.jpg)
105
kondisi terpenuhi. Dengan instruksi perulangan
memungkinkan kita untuk menjalankan beberapa
instruksi hanya dengan menuliskan intruksi tersebut satu
kali 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 harus
dipenuhi untuk melaksanakan pengulangan. Kondiisi
ini bisa dinyatakan secara eksplisit oleh pemrogram
atau dikelola secara implisit oleh komputer.
2.Badan perulangan, yaitu satu atau lebih instruksi yang
akan diulang.
3.Inisialisasi, yaitu aksi yang dilakukan sebelum
perulangan dilakukan pertama kali.
4.Terminasi, yaitu aksi yang mengakibatkan perulangan
dihentikan.
Di dalam algoritma terdapat beberapa macam struktur
perulangan. Beberapa struktur dapat dipakai untuk
menyelesaikan masalah yang sama tetapi ada struktur
perulangan yang hanya cocok dipakai untuk masalah
![Page 106: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/106.jpg)
106
tertentu. Pemilihan struktur perulangan untuk
penyelesaian suatu masalah dapat mempengaruhi
kebenaran algoritma yang dibuat. Pemilihan struktur
perulangan yang tepat bergantung pada masalah yang
akan diselesaikan.
Macam-macam struktur perulangan :
1.Instruksi FOR
2.Instruksi WHILE-DO
5.1 Instruksi FOR Instruksi perulangan yang paling sering digunakan adalah
instruksi FOR. Instruksi ini digunakan apabila kita tahu
secara pasti banyaknya perulangan yang akan dilakukan.
Bentuk umum pseudocode FOR format naik:
for indeks=nilai_awal to nilai_akhir
do
<instruksi/blok instruksi>
endfor
Bentuk umum flowchart :
![Page 107: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/107.jpg)
107
Gambar 5.1 Flowchart Instruksi FOR Format Naik
Cara kerjanya:
1.Indeks diassign dengan nilai awal.
2.Indeks dibandingkan dengan nilai akhir.
3.Jika indeks <= nilai akhir maka
a. Badan loop dikerjakan.
b. Secara otomatis nilai indeks ditambah 1.
c. Indeks dibandingkan dengan nilai akhir.
4.Jika indeks > nilai akhir maka akan dikerjakan statemen
pertama sesudah “endfor” (badan loop).
![Page 108: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/108.jpg)
108
Bentuk umum pseudocode FOR format turun:
for indeks=nilai_awal downto
nilai_akhir do
<instruksi/blok instruksi>
endfor
Bentuk umum flowchart :
Gambar 5.2 Flowchart Instruksi FOR Format Turun
Cara kerjanya:
1.Indeks diassign dengan nilai awal.
2.Indeks dibandingkan dengan nilai akhir.
![Page 109: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/109.jpg)
109
3.Jika indeks >= nilai akhir maka
a. Badan loop dikerjakan.
b. Secara otomatis nilai indeks dikurangi 1.
c. Indeks dibandingkan dengan nilai akhir.
4.Jika indeks < nilai akhir maka akan dikerjakan statemen
pertama sesudah “endfor” (badan loop).
Contoh :
1.Indeks perulangan menaik for i=1 to 3 do
output (i)
endfor
2.Indeks perulangan menurun for i=1 downto 3 do
output (i)
endfor
Pengembangan instruksi FOR selanjutnya adalah
instruksi FOR bertingkat, dimana urutan instruksi dimulai
dari perulangan yang paling dalam. Syarat-syarat yang
harus dipenuhi dalam penggunaan instruksi ini adalah:
1.Setiap perulangan tidak boleh menggunakan variabel
![Page 110: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/110.jpg)
110
counter atau indeks yang sama.
2.Antara perulangan-perulangan tersebut tidak boleh
saling berpotongan (overlapping).
5.2 Contoh-Contoh Kasus FOR 1.Menuliskan angka 1 s/d 10 dengan masing-masing
output diberi keterangan yang berbeda pada saat 3 dan
8. Output yang dihasilkan misal :
angka = 1
angka = 2
angka = 3 ini angka favoritku
angka = 4
angka = 5
angka = 6
angka = 7
angka = 8 ini angka favorit temenku
angka = 9
angka = 10
Jawab :
Algoritma dengan pseudocode:
for angka=1 to 10 do
![Page 111: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/111.jpg)
111
if angka=3 then
komentar ('ini angka favoritku')
output (angka,komentar)
else if angka=8 then
komentar ('ini angka favorit
temenku')
output (angka,komentar)
endif
else output (angka)
endif
endif
endfor
2.Buatlah program untuk menghitung banyaknya data
bernilai positif, negatif dan nol dari n buah data yang
dimasukkan melalui keyboard.
Jawab :
Algoritma dengan pseudocode
input (n)
cacahpos=0
cacahneg=0
cacahnol=0
for i=1 to n do
input (x)
if x>0 then cacahpos=cacahpos+1
else if x<0 then cacahneg=cacahneg+1
![Page 112: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/112.jpg)
112
else cacahnol=cacahnol+1
endfor
output (cacahpos,cacahneg,cacahnol)
3.Buatlah program untuk menjumlahkan n buah data
kemudian dihitung rata-ratanya.
Jawab :
Algoritma dengan pseudocode:
input (n)
jumlah=0
for i=1 to n do
input (bil)
jumlah=jumlah+bil
endfor
rata=jumlah/n
output (rata)
4.Buatlah program untuk menjumlahkan n buah data
tetapi yang dijumlahkan hanya data ganjil.
Jawab :
![Page 113: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/113.jpg)
113
Algoritma dengan pseudocode:
input (n) jganj=0
for i=1 to n do
input (bil)
if bil mod 2 = 1 then jganj=jganj+bil
endfor
output (jganj)
5.Buatlah program untuk menjumlahkan n buah data
tetapi hanya data bernilai positif saja yang
dijumlahkan.
Jawab :
Algoritma dengan pseudocode:
input (n) jumlah=0
for i=1 to n do
input (bil)
if bil>0 then jumlah=jumlah+bil
endfor
output (jumlah)
6.Buatlah program untuk menjumlahkan bilangan ganjil
![Page 114: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/114.jpg)
114
bernilai negatif yang lebih kecil dari -99 dari n buah
data.
Jawab :
Algoritma dengan pseudocode:
input(n)
jganj=0
for i=1 to n do
input(bil)
if bil<-99 then
if bil%2!=0 then
jganj=jganj+bil
endif
endif
endfor
output (jganj)
7.Buatlah program untuk mencari data terbesar dan data
terkecil dari n buah data.
Jawab :
Cara Pertama:
![Page 115: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/115.jpg)
115
Asumsikan nilai maksimum (max) sementara adalah
bilangan bulat -32768 sedangkan nilai minimum (min)
sementara adalah 32767. Bacalah data bilangan dari
piranti masukan. Setiap kali pemasukan data,
bandingkan data tersebut dengan nilai max dan min
untuk menentukan data terbesar dan data terkecil. Pada
akhir perulangan, max berisi data terbesar dan min
berisi data terkecil.
Cara Kedua :
Nilai maksimum sementara dan nilai minumum
sementara mula-mula diinisialisasikan nilainya sama
dengan nilai data pertama. Langkah ini diambil untuk
mengantisipasi apabila ternyata dari n buah data
tersebut nilainya tidak terdapat pada range -32767 s/d
32768 karena jika tidak dikendalikan dengan baik
maka di akhir pencarian tidak memberikan hasil yang
sesuai dengan kenyataan.
Algoritma dengan pseudocode:
Cara Pertama:
input (n)
max=-32767
min=32768
for i=1 to n do
![Page 116: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/116.jpg)
116
input (bil)
if bil>max then max=bil
if bil<min then min=bil
endfor
output (max,min)
Cara Kedua:
input (n)
input (bil)
max=bil
min=bil
for i=2 to n do
input (bil)
if bil>max then max=bil
if bil<min then min=bil
endfor
output (max,min)
8.Buatlah program untuk mencari data terkecil pertama
dan data terkecil kedua dari n buah data yang
dimasukkan melalui keyboard.
Jawab :
Algoritma dengan pseudocode:
![Page 117: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/117.jpg)
117
input(n)
input(a)
input(b)
if a>b then
min1=b
min2=a
endif
else:
min1=a
min2=b
endif
for i=2 to n do
input(bil)
if bil>min1 and bil<min2 then
min2=bil
endif
else if bil<min1 and bil<min2 then
temp=min1
min1=bil
min2=temp
endif
endfor
output (min1,min2)
![Page 118: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/118.jpg)
118
9.Buatlah program untuk mencari data negatif terbesar
dan data positif terkecil dari n buah data yang
dimasukkan melalui keyboard.
Jawab :
Algoritma dengan pseudocode:
input (n)
maxneg=-32768
minpos=32767
for i=1 to n do
input (bil)
if bil>0 then
if bil<minpos then minpos=bil
endif
else if x<0 then
if x>maxneg then maxneg=bil
endif
endif
endfor
output (maxneg,minpos)
5.3 Instruksi WHILE - DO Instruksi perulangan ini dapat digunakan apabila kita
belum tahu secara pasti berapa kali banyaknya
perulangan yang akan dilakukan. Berakhirnya proses
perulangan ditentukan oleh sutu kondisi. Selama kondisi
![Page 119: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/119.jpg)
119
terpenuhi maka perulangan terus dilakukan dan
sebaliknya bila kondisinya tidak terpenuhi maka
perulangan dihentikan.
Bentuk umum pseudocode:
while <kondisi> do
<instruksi/blok instruksi>
endwhile
Bentuk umum flowchart :
Gambar 5.3 Flowchart Instruksi WHILE - DO
Cara kerjanya:
1.Sebelum masuk ke “while-loop” kondisi yang
merupakan ekspresi boolean harus dudah mempunyai
![Page 120: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/120.jpg)
120
nilai.
2.Jika kondisi bernilai true maka seluruh badan loop
dikerjakan.
3.Dicek kembali apakah kondisi bernilai true atau false.
Jika kondisi bernilai true maka maka tidak ada
perubahan, artinya kembali mengerjakan badan loop.
Jika kondisi bernilai false maka langsung mengerjakan
statemen pertama sesudah “endwhile”.
4.Looping berhenti setelah kondisi bernilai false,
sehingga harus ada statemen yang mengakibatkan
kondisi bernilai false. Tetapi jika kondisi tetap true
maka terjadi infinite true, artinya jika tidak ada
statemen yang mengakibatkan kondisi bernilai false
maka terjadi infinite loop.
5.4 Contoh-Contoh Kasus WHILE_DO
1.Menuliskan angka 1 s/d 10 dengan masing-masing
output diberi keterangan yang berbeda pada saat 3 dan
8. Output yang dihasilkan misal :
angka = 1
angka = 2
angka = 3 ini angka favoritku
angka = 4
![Page 121: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/121.jpg)
121
angka = 5
angka = 6
angka = 7
angka = 8 ini angka favorit temenku
angka = 9
angka = 10
Jawab :
Algoritma dengan pseudocode:
angka=1
while angka<=10 do
if angka=3 then
komentar ('ini angka favoritku')
output (angka,komentar)
endif
else
if angka=8 then
komentar ('ini angka favorit
temenku')
output (angka,komentar)
endif
else output (angka)
endwhile
2. Buatlah algoritma untuk menghitung banyaknya data
![Page 122: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/122.jpg)
122
bernilai positif, negatif dan nol dari n buah data yang
dimasukkan melalui keyboard.
Jawab :
Algoritma dengan pseudocode
input (n)
cacahpos=0
cacahneg=0
cacahnol=0
i=1
while i<=n do
input (x)
if x>0 then cacahpos=cacahpos+1
else if x<0 then
cacahneg=cacahneg+1
else cacahnol=cacahnol+1
endif
endwhile
output (cacahpos,cacahneg,cacahnol)
3.Buatlah program untuk menjumlahkan n buah data
kemudian dihitung rata-ratanya.
Jawab :
![Page 123: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/123.jpg)
123
Algoritma dengan pseudocode
input (n)
jumlah=0
i=1
while i<=n do
input (bil)
jumlah=jumlah+bil
endwhile
rata=jumlah/n
output (rata)
4.Buatlah algoritma untuk menjumlahkan n buah data
tetapi yang dijumlahkan hanya data ganjil.
Jawab :
Algoritma dengan pseudocode
input (n) jganj=0
i=1
while i<=n do
input (bil)
if bil mod 2 = 1 then
jganj=jganj+bil
endwhile
output (jganj)
![Page 124: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/124.jpg)
124
5. Buatlah program untuk menjumlahkan bilangan ganjil
bernilai negatif yang lebih kecil dari -99 dari n buah data.
Jawab :
Algoritma dengan pseudocode:
input(n)
jganj=0
i=1
while i<=n do
input(bil)
if bil<-99 then
if bil%2!=0 then
jganj=jganj+bil
endif
endif
i=i+1
endwhile
output (jganj)
6. Buatlah program untuk mencari data terbesar dan data
terkecil dari n buah data.
Jawab :
![Page 125: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/125.jpg)
125
Algoritma dengan pseudocode:
input (n)
input (bil)
max=bil
min=bil
i=2
while i<=n do
input (bil)
if bil>max then max=bil
if bil<min then min=bil
endwhile
output (max,min)
7.Buatlah algoritma untuk mencari data negatif terbesar
dan data positif terkecil dari n buah data yang
dimasukkan melalui keyboard.
Jawab :
Algoritma dengan pseudocode:
input (n)
maxneg=-1999999999
minpos=1999999999
i=1
while i<=n do
input (bil)
![Page 126: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/126.jpg)
126
if bil>0 then
if bil<minpos then minpos=bil
endif
else if x<0 then
if x>maxneg then maxneg=bil
endif
endif
endwhile
output (maxneg,minpos)
8.Buatlah program untuk mencari rata-rata dimana sejak
awal banyaknya data yang akan dimasukkan belum
ditentukan.
Jawab :
Banyaknya perulangan tidak diketahui secara pasti
tetapi kita tahu kapan perulangan akan berhenti yaitu
ketika sudah tidak ada lagi data yang akan
dimasukkan. Supaya perulangan terjadi walaupun
hanya sekali, perlu diasumsikan bahwa mula-mula
memang ada data yang akan dibaca, untuk selanjutnya
akan disediakan pesan interaktif apakah ada data lagi
yang akan dibaca. Perulangan dihentikan apabila
pesan interaktif tersebut dijawab dengan jawaban
![Page 127: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/127.jpg)
127
bahwa tidak ada data lagi yang akan dibaca.
Algoritma dengan pseudocode: masih='ya'
jumlah=0
cacah=0 {banyaknya data mula-mula}
while masih='ya' do
input (bil)
jumlah=jumlah+bil
cacah=cacah+1
input(masih)
endwhile
rata=jumlah/cacah
output (rata)
9.Buatlah algoritma untuk mencari pembagi bersama
terbesar dari dua buah bilangan bulat positif.
Jawab :
Algoritma dengan pseudocode:
input (x,y)
sisa=x mod y
while sisa <> 0 do
x=y
y=sisa
sisa=x mod y
endwhile
![Page 128: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/128.jpg)
128
output (y)
10.Buatlah algoritma untuk menghitung Indeks Prestasi
Jawab :
Langkah-langkah:
a. Membaca bobot sks bobot sks dan nilai huruf yang
diperoleh setiap mata kuliah.
b. Mengkonversikan nilai huruf ke nilai angka.
c. Menghitung point yang didapat pada setiap mata
kuliah. Besarnya point diperoleh dari perkalian nilai
angka dengan bobot sks.
d. Menjumlahkan point seluruh mata kuliah.
e. Menjumlahkan bobot sks seluruh mata kuliah.
f. Melakukan pembagian jumlah point dengan jumlah
sks untuk mendapatkan Indeks Prestasi seorang
mahasiswa.
Algoritma dengan pseudocode:
masih='y'
jpoint=0
jsks=0
while masih='y'
![Page 129: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/129.jpg)
129
input (sks,nh)
if nh='A' then na=4
else if nh='B' then na=3
else if nh='C' then na=2
else if nh='D' then na=1
else na=0
point=sks*na
jpoint=jpoint+point
jsks=jsks+sks
input (masih)
endwhile
IP=jpoint/jsks
output (IP)
11.Buatlah program untuk mengetahui dari n buah data
yang dimasukkan dari keyboard, berapakah banyaknya
data yang merupakan bilangan prima, semua data yang
berupa bilangan prima dijumlahkan kemudian dihitung
rata-ratanya.
Jawab :
Ada beberapa cara untuk mengecek suatu bilangan
apakah berstatus prima atau bukan.
Cara pertama:
Membagi bilangan yang dicek mulai dari 2 hingga
![Page 130: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/130.jpg)
130
bilangan 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'
else
pembagi=3
st='prima'
batascek=bil-1
while pembagi<=batascek and st='prima'
do
if x mod pembagi=0 then st='bukan
prima'
else pembagi=pembagi+1
endwhile
endif
endif
output (st)
Cara kedua:
Membagi bilangan yang dicek dengan bilangan-
bilangan mulai dari 2 hingga ((bilangan-1)/2). Pada
metode kedua ini semua pembagi bulat yang mungkin
sudah tercakup. Mengapa batas atas pembagi adalah
(bilangan-1)/2 ? Karena:
a. Pembagi-pembagi di atas bilangan/2 sampai dengan
bilangan akan membuahkan hasil yang real dalam
![Page 131: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/131.jpg)
131
interval 1 sampai 2.
b. Pembagian dengan bilangan/2 tentu tidak dibutuhkan
lagi karena telah diwakili oleh pembagian dengan 2.
Oleh karena itu pembagi bulat yang bukan 1 dan 2
yang mungkin terletak di antara 2 dan bilangan adalah
di dalam interval 2 hingga ((bilangan-1)/2).
input (bil)
if x=2 then status='prima'
else if x<=1 or x mod 2 = 0
then st='bukan prima'
else
pembagi=3
st='prima'
batascek=round ((bil-1)/2)
while pembagi<=batascek and st='prima'
do
if x mod pembagi=0 then st='bukan
prima'
else pembagi=pembagi+1
endwhile
endif
endif
output (st)
Cara ketiga:
Membagi bilangan yang dicek dengan bilangan mulai
![Page 132: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/132.jpg)
132
dari 2 hingga akar dari bilangan tersebut. Dasar
pemikirannya adalah bilangan-bilangan yang berada di
atas akar dari bilangan yang akan dicek itu selalu
merupakan kelipatan dari 2, 3, dan bilangan-bilangan
prima di bawah akar bilangan yang akan dicek itu.
Contoh : Cek bilangan 101 prima atau bukan.
Akar dari 101 dibulatkan menjadi 10. Dengan
membagi 101 dengan bilangan-bilangan mulai 2
hingga 10 sama halnya dengan membagi 101 dengan
bilangan-bilangan dari 2 hingga 100 karena hampir
semua bilangan di atas 10 merupakan kelipatan dari
bilangan-bilangan antara 2 hingga 10. Mengapa tidak
membagi dengan 11 atau bilangan-bilangan prima
yang lain? Karena kelipatan dari bilangan prima sudah
pasti bukan bilangan prima.
input (bil)
if x=2 then status='prima'
else if x<=1 or x mod 2 = 0
then st='bukan prima'
else
pembagi=3
st='prima'
batascek=round (sqrt(bil))
while pembagi<=batascek and st='prima'
do
![Page 133: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/133.jpg)
133
if x mod pembagi=0 then st='bukan
prima'
else pembagi=pembagi+1
endwhile
endif
endif
output (st)
Cara keempat:
Membagi bilangan yang dicek dengan bilangan 2, 3, 5
sampai ((bilangan-1)/2). Cara ini merupakan
penyederhanaan dari cara kedua karena:
a. Pada cara kedua kita membagi bilangan yang akan
dicek dengan semua bilangan mulai dari 2 hingga
(bilangan-1)/2.
b. Pada cara keempat ini kita hanya membagi bilangan
yang akan dicek dengan 2 dan bilangan-bilangan
ganjil di atas 2 sampai ((bilangan-1)2).
Dasar pemikirannya adalah bilangan-bilangan genap di
atas 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'
else
pembagi=3
st='prima'
![Page 134: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/134.jpg)
134
batascek=round ((bil-1)/2)
while pembagi<=batascek and st='prima'
do
if x mod pembagi=0 then st='bukan
prima'
else pembagi=pembagi+2
endwhile
endif
endif
output (st)
Cara kelima:
Menggabungkan cara ketiga dan cara keempat. Pada
cara ketiga kita melakukan pembagian mulai dari 2
hingga akar dari bilangan yang akan dicek, jadi
bilangan pembagi tersebut termasuk juga 4, 6, 8, 10
dan bilangan-bilangan genap selanjutnya, padahal
bilangan-bilangan tersebut adalah kelipatan 2. Dengan
membagi bilangan yang akan dicek dengan 2, 3, 5, 7
dan seterusnya hingga akar dari bilangan yang akan
dicek tentu akan diperoleh hasil yang sama, dengan
keuntungan 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'
else
pembagi=3
st='prima'
![Page 135: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/135.jpg)
135
batascek=round (sqrt(bil))
while pembagi<=batascek and st='prima'
do
if x mod pembagi=0 then st='bukan
prima'
else pembagi=pembagi+2
endwhile
endif
endif
output (st)
Algoritma dengan pseudocode:
jumlah=0
cacah=0
input (n)
for i=1 to n do
input (bil)
if x=2 then status='prima'
else
if x<=1 or x mod 2 = 0
then st='bukan prima'
endif
else
pembagi=3
st='prima'
batascek=round (sqrt(bil))
while pembagi<=batascek and st='prima'
do
if x mod pembagi=0 then st='bukan
prima'
else pembagi=pembagi+2
endwhile
![Page 136: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/136.jpg)
136
endif
endif
if st='prima' then
jumlah=jumlah+bil
cacah=cacah+1
endif
endfor
rata=jumlah/cacah
output (rata)
5.5 Latihan
1.Buatlah algoritma untuk mengkonversikan bilangan
desimal ke biner.
2.Buatlah algoritma untuk menjumlahkan data yang
diinputkan tetapi yang dijumlahkan hanya data yang
merupakan bilangan yang habis dibagi oleh variabel
counter-nya saja.
3.Buatlah algoritma untuk menjumlahkan bilangan bulat
positif antara 2 sampai 100 tetapi yang dijumlahkan
hanya 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 137: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/137.jpg)
137
26+63-... dimana banyaknya suku adalah n buah
6.Buatlah algoritma untuk menghitung penjumlahan deret
kuadrat terbesar tetapi masih lebih dari suatu nilai
tertentu. Model deretnya adalah 1+4+9+16+...
Contoh tampilan program setelah dijalankan:
Masukkan batas maksimum = 100
1 4 9 16 25 36
Hasil penjumlahan deret terbesar =
91
Banyaknya suku = 6
7.Diberikan pseudocode sebagai berikut :
sum1=0
for i=20 to 24 do
sum=sum1+(5*i-20)^2
sum1=(sum+20)mod 20
endfor
output(sum1)
Apa hasil akhir dari pseudocode di atas?
8.Diberikan pseudocode sebagai berikut :
a=0
![Page 138: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/138.jpg)
138
b=1
while b<=8 do
input(c)
if c mod b = 0 then
a=a+c
endif
b=b+1
endwhile
output(a)
Apa hasil akhir dari pseudocode di atas?
9.Diberikan pseudocode sebagai berikut :
a=3
b=1
while b<=5 do
input(c)
if c mod b <> 0 then
a=a+c
endif
b=b+1
endwhile
output(a)
![Page 139: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/139.jpg)
139
Apa hasil akhir dari pseudocode di atas?
10.Buatlah algoritma untuk menghitung banyaknya data
yang merupakan kelipatan 3 sekaligus kelipatan 5 dari
3000 s/d 7000.
11.Buatlah algoritma untuk mengecek dari 1000 s/d 4000
mana saja yang merupakan bilangan prima dan berapa
banyaknya.
12.Suatu perusahaan garmen mengadakan rekruitmen
karyawan. Terdapat 500 pelamar. Tahap pertama
adalah seleksi data fisik yaitu untuk jenis kelamin laki-
laki yang dibutuhkan mempunyai tinggi minimal 165
cm dengan berat badan maksimal 80 kg sedangkan
untuk jenis kelamin perempuan mempunyai tinggi
minimal 155 cm dengan berat badan maksimal 65 kg.
Buatlah algoritma untuk menghitung berapa
banyaknya calon karyawan yang lolos pada tahap
pertama.
13.Sebuah warung menjual 9 bahan pokok. Buatlah
algoritma untuk membuat nota penjualan yang memuat
informasi nomor nota, barang-barang yang dibeli
(nama barang, harga satuan, banyak barang yang
dibeli, diskon dan harga total) serta biaya yang harus
![Page 140: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/140.jpg)
140
dibayar.
14.Bagaimana mengkonversikan bilangan sebagai
karakter yang panjangnya lebih dari satu karakter
menjadi bilangan sebagai interger? Buatlah
algoritmanya.
15.Algoritma mengubah kata yang ditulis dengan huruf
kecil menjadi kata yang ditulis dengan huruf kapital.
![Page 141: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/141.jpg)
141
Bab 6
Subprogram
Tujuan pembelajaran umum:
1. memahami algoritma untuk membuat fungsi yang
tidak mengembalikan nilai 2. memahami algoritma untuk membuat fungsi yang mengembalikan nilai
3. membedakan variable local dan variable global
4. memahami algoritma untuk membuat fungsi
rekursi
Terdapat 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 mewakili
pemecahan masalah berupa pseudocode.
![Page 142: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/142.jpg)
142
input (a,b,c,d)
if a > b then
temp = a
a = b
b = temp
endif
if b > c then
temp = a
a = b
b = temp
endif
if c > d then
temp = a
a = b
b = temp
endif
output (a,b,c,d)
Pseudocode di atas tidak efektif karena ada proses yang
sama yaitu menukar nilai data tetapi dituliskan lebih dari
satu kali. Seharusnya proses yang sama tadi cukup
dituliskan satu kali sebagai subpseudocode dan dapat
dipanggil berkali-kali sesuai kebutuhan. Oleh karena itu
untuk menyelesaikan suatu permasalahan yang relatif
besar, algoritma perlu dipecah-pecah menjadi
![Page 143: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/143.jpg)
143
subalgoritma-subalgoritma dan ketika ditranslasikan
menjadi program maka di dalamnya terdapat subprogram-
subprogram. Subprogram merupakan blok dari kode yang
dirancang khusus untuk melaksanakan tugas tertentu.
6.1 Subprogram
Pemrograman terstruktur adalah pemrograman yang
menitikberatkan pada pemecahan masalah yang kompleks
menjadi 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 144: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/144.jpg)
144
Gambar 6.1 Gambaran Umum Subprogram
Bentuk umum pseudocode : function NamaFungsi [(daftar parameter)]
<blok instruksi>
NamaFungsi = Ungkapan
endfunction
Cara 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 Utama
Sub program Sub program
Sub program Sub program
![Page 145: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/145.jpg)
145
if hitung(x)>0 :
cNilai fungsi dijadikan kondisi dalam struktur
perulangan, misal: while hitung(x):
dNilai fungsi dimasukkan dalam suatu ekspresi, misal: a=10
b=hitung(x)+10
2. Ditampung ke dalam nama variabel lain, misal: y=hitung(x)
6.2 Contoh-Contoh Kasus Subprogram 1.Menghitung bilangan faktorial.
Jawab :
Mengapa 0! = 1 sedangkan 1! = 1 pula? Penelusurannya
adalah sebagai berikut: n! = (n-1)! * n
n!/n = (n-1)!
untuk n = 1 maka
1!/1 = (1-1)!
1! = 0!
karena 0! = 1 maka 1! = 1
Faktorial bilangan negatif tidak ada dan faktorial nol
![Page 146: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/146.jpg)
146
sama dengan faktorial satu yaitu sama dengan 1.
Algoritma dengan pseudocode: function Faktorial(n) if n=0 or n=1 then hasil = 1
else
hasil = 1
for i = 2 to n do hasil=hasil * i
endfor
endif
Faktorial=hasil
endfunction
2. Perkalian dua buah bilangan bulat positif.
Jawab:
Algoritma dengan pseudocode: function Kali (m,n)
Hasil=0
for i=1 to n do
Hasil=Kali+m
endfor
Kali=Hasil
endfunction
![Page 147: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/147.jpg)
147
3. Perpangkatan xn. n bernilai nol atau bilangan-bilangan
bulat positif.
Jawab:
Algoritma dengan pseudocode: function Pangkat (x,n)
if n=0 then hasil=1
else
for i=1 to n do
hasil=hasil*x
endfor
Pangkat=hasil
endif
endfunction
4. Menghitung sigma 1+2+3+4+...+n.
Jawab :
Algoritma dengan pseudocode:
function Sigma (n)
S=0
for i=1 to n do
S=S+i
endfor
Sigma=S
![Page 148: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/148.jpg)
148
endfunction
5. Buatlah program untuk menentukan status setiap
bilangan dari n buah data. Status suatu data dibedakan
dalam tiga macam yakni apakah data tersebut bernilai
positif, 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'
endif
endif
endfunction
6. Buatlah program untuk menghitung xn/n!.
Jawab :
Untuk menyelesaikan soal di atas perlu dibuat dua
subprogram. Subprogram pertama untuk menghitung
perpangkatan xn sedangkan subprogram kedua untuk
![Page 149: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/149.jpg)
149
menghitung faktorial n!.
Algoritma dengan pseudocode:
function pangkat(y,m)
if m=0 then pangkat=1
else
pangkat=1
for i=1 to m do
pangkat=pangkat*y
endfor
endif
endfunction
function factorial(h)
if h=0 then facto=1
else
y=1
fakto=1
for i=1 to h do
fakto=y*fakto
y=y+1
endfor
endif
endfunction
input(x)
input(n)
![Page 150: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/150.jpg)
150
g=pangkat(x,n)/factorial(n)
output (g)
7. Dalam Ilmu Statistika terdapat rumus kombinasi yaitu
n!/(x!*(n-x)!). Buatlah program untuk menghitung
kombinasi.
Jawab :
Algoritma dengan pseudocode:
function factorial(h)
if h==0 then fakto=1
else
y=1
fakto=1
for i=1 to h do
fakto=y*fakto
y=y+1
endfor
endif
factorial=fakto
endfunction
input(x)
input(n)
![Page 151: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/151.jpg)
151
g=(factorial(n))/((factorial(x))*fac
torial(n-x))
output (g)
8.Buatlah program untuk menghitung perkalian dua buah
kombinasi (n!/(x!*(n-x)!))*(m!/(z!*(m-z)!)).
Jawab :
Algoritma dengan pseudocode:
function factorial(h)
if h==0 then fakto=1
else
y=1
fakto=1
for i=1 to h do
fakto=y*fakto
y=y+1
endfor
endif
factorial=fakto
endfunction
input(x)
input(n)
input(z)
input(m)
g=((factorial(n))/((factorial(x))*factorial(
![Page 152: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/152.jpg)
152
n-
x)))*((factorial(m))/((factorial(z))*factori
al(m-z)))
output (g)
6.3 Rekursi Rekursi adalah proses yang bisa memanggil dirinya
sendiri. Bentuk rekursi merupakan alternatif dari bentuk
iterasi atau perulangan. Ada beberapa masalah yang lebih
cocok dipecahkan dengan bentuk rekursi. Tetapi secara
umum bentuk rekursi biasanya kurang efisien
dibandingkan bentuk iterasi karena rekursi memanggil
dirinya sendiri sehingga menyebabkan waktu pemrosesan
yang lebih besar dibandingkan bentuk iterasi biasa.
Proses rekursi akan menggunakan memory stack, semakin
lama proses rekursi dikerjakan maka memory stack akan
terus berkurang yang berakibat memory stack habis.
Dalam rekursi sebenarnya terkandung pengertian fungsi,
perbedaannya adalah:
a. Rekursi bisa memanggil dirinya sendiri.
b. Fungsi harus dipanggil lewat pemanggil fungsi (function call).
![Page 153: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/153.jpg)
153
Rekursi mempunyai beberapa kelemehan yaitu :
1.Penggunaan rekursi seringkali harus mengorbankan
efisiensi dan kecepatan.
2.Masalah yang sering muncul di dalam rekursi adalah
eksekusi yang tidak pernah berhenti akibatnya stack
memori akan habis dan komputer hang.
Walaupun rekursi mempunyai kelemahan, mengapa kita
memerlukan rekursi? Karena ada beberapa masalah yang
akan lebih mudah diselesaikan dengan menggunakan
rekursi.
Semua instruksi yang disusun secara rekursi dapat pula
disusun secara non rekursi, demikian juga hampir semua
instruksi non rekursi dapat disusn secara rekursi.
Untuk menyelesaikan suatu kasus menggunakan cara
rekursi perlu diidentifikasikan terlebih dahulu hal-hal
sebagai berikut:
1.Kapankah langkah-langkah rekursi terjadi. Misalnya
dalam kasus perhitungan bilangan faktorial, langkah-
langkah rekursi dilakukan selama suatu bilangan lebih
besar daripada 1.
2.Bagaimana cara untuk menghentikan rekursi.
Suatu fungsi tidak hanya bisa memanggil fungsi lain,
![Page 154: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/154.jpg)
154
melainkan juga bisa memanggil dirinya sendiri.
Pemanggilan kepada dirinya sendiri bisa berarti proses
berulang yang tidak bisa diketahui kapan berakhir
sehingga dalam rekursi harus ada syarat-syarat berikut:
a. Ada titik pemberhentian (stopping state) sebagai
pengendali rekursi.
b. Adanya langkah induksi yang menuju pada titik
pemberhentian.
6.4 Contoh-Contoh Kasus Rekursi 1. Menghitung bilangan faktorial.
Jawab :
Merupakan proses perhitungan deret bilangan dengan
rumus :
n=0, maka n! = 1
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 155: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/155.jpg)
155
Faktorial (4)
= Faktorial (4)
= 4 Faktorial (3)
= 3 Faktorial (2)
= 2 Faktorial (1)
= 1
Jadi 4! = 4*3*2*1 = 24
Hasil dari proses di tiap tingkat merupakan input
untuk proses di tingkat atasnya. Faktorial (n) bisa
dihitung dari Faktorial (n-1), Faktorial (n-1) bisa
dihitung dari Faktorial (n-2), dan seterusnya.
Ilustrasi penelusuran 4! :
![Page 156: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/156.jpg)
156
Gambar 6.2 Ilustrasi Hitung Faktorial
Algoritma dengan pseudocode:
function Faktorial(n)
if n=0 then Fakto = 1
else Fakto = n * Faktorial(n-1)
endif
Faktorial=Fakto
endfunction
Keterangan:
a. Dari fungsi di atas bisa dilihat bahwa factorial(x)
bisa dihitung dari factorial(x-1), dimana
factorial(x-1) bisa dihitung dari
factorial(x-2), dan seterusnya.
![Page 157: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/157.jpg)
157
b. Untuk menghitung factorial(x) maka fungsi
memanggil nilai factorial(x-1) yang telah
diperoleh, demikian juga untuk menghitung nilai
factorial(x-1) maka fungsi harus memanggil
nilai factorial(x-2), dan seterusnya.
c. Notasi factorial(x-1) yang digunakan untuk
memanggil nilai fungsi sebelumnya sering disebut
dengan pemanggil rekursi (recursion call). Rekursi
dijalankan dengan jumlah x yang semakin menurun.
factorial(x-1) artinya rekursi dengan jumlah x
yang semakin menurun.
2. Menghitung bilangan Fibonacci.
Jawab :
Bilangan Fibonacci dapat didefinisikan berdasar deret
integer tak berhingga dengan logika sebagai berikut:
n=1 atau n=2, maka Fibo(n) = 1
n>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 sebelumnya
yang terdekat dengan bilangan ke-n, yaitu bilangan ke-(n-
1) dan bilangan ke-(n-2). Oleh karena itu jika Fibo(n)
![Page 158: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/158.jpg)
158
menunjukkan bilangan Fibonacci ke-n maka Fibo(n) bisa
dihitung berdasarkan hubungan rekurens berikut:
Fibo(n)=Fibo(n-1)+Fibo(n-2)
Karena Fibo(n) ditentukan oleh dua nilai yang berbeda
dengan argumen yang nilainya lebih kecil, maka untuk
mencari bilangan Fibonacci diperlukan dua nilai awal,
yaitu Fibo(1)=1 dan Fibo(2)=1.
Fibo(1)=1
Fibo(2)=1
Fibo(3)=Fibo(2)+Fibo(1)
Fibo(4)=Fibo(3)+Fibo(2)
dan seterusnya.
Implementasi pencarian Fibonacci (4) :
Fibo(4)
![Page 159: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/159.jpg)
159
Fibo(3) Fibo(2)
Fibo(1) Fibo(0)
Fibo(2) Fibo(1)
Fibo(1) Fibo(0)
Gambar 6.3 Ilustrasi Bilangan Fibonacci
Algoritma dengan pseudocode: function Fibonacci(n)
if n=0 or n=2 then Fibo =1
else Fibo = Fibonacci(n-1) +
Fibonacci(n-2)
endif
Fibonacci=Fibo
endfunction
3.Perkalian dua buah bilangan bulat positif.
Jawab :
Misal :
4x3=(4x2)+4
![Page 160: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/160.jpg)
160
=(4x1)+4+4
= 4+4+4
Secara umum dapat dituliskan dalam notasi sebagai
berikut :
mxn=(mx(n-1)+m
Gambar 6.4 Ilustrasi Hitung Perkalian
Algoritma dengan pseudocode:
function Kali (m,n) if n=1 then hasil=m
else hasil=m+Kali(m,n-1)
endif
Kali=hasil
![Page 161: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/161.jpg)
161
endfunction
4. Perpangkatan xn.
Jawab :
Ditentukan bahwa pemangkatnya adalah nol dan
bilangan-bilangan positif. Ilustrasi penelusuran 43 adalah
sebagai berikut:
![Page 162: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/162.jpg)
162
Gambar 6.5 Ilustrasi Hitung Perpangkatan
Algoritma dengan pseudocode:
function Pangkat(x,n)
if n=0 then hasil=1
else hasil=x*Pangkat(x,n-1)
endif
Pangkat=hasil
endfunction
![Page 163: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/163.jpg)
163
5. 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 + 5
Algoritma dengan pseudocode:
Function Sigma (n)
if n=1 then hasil=1
else hasil=Sigma(n-1)+ n
endif
Sigma=hasil
endfunction
6.5 Latihan
![Page 164: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/164.jpg)
164
1. Buatlah sebuah fungsi dengan metode rekursi
untuk menghitung nilai dari deret 125+25+5+1+...
dimana banyaknya suku adalah n buah suku.
2. Buatlah sebuah fungsi dengan metode rekursi
untuk menghitung nilai dari deret 6+11-
18+29+48-... dimana banyaknya suku adalah n
buah suku.
3. Buatlah sebuah fungsi dengan metode rekursi
untuk menghitung nilai dari deret -6+10+16-
26+44-... dimana banyaknya suku adalah n buah
suku.
4. Buatlah sebuah fungsi dengan metode rekursi
untuk menghitung nilai dari deret 100/24-
80/12+60/6-40/3+... dimana banyaknya suku
adalah n buah suku.
5. Buatlah sebuah fungsi dengan metode rekursi
untuk menghitung nilai dari deret 12/5-
15/20+18/80-21/320+... dimana banyaknya suku
adalah n buah suku.
6. Buatlah sebuah fungsi dengan metode rekursi
untuk menghitung nilai dari deret
100+125+150+175+... dimana banyaknya suku
adalah n buah suku.
![Page 165: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/165.jpg)
165
7. Buatlah sebuah fungsi dengan metode rekursi
untuk menghitung nilai dari deret 2-6+18-54+...
dimana banyaknya suku adalah n buah suku.
8. Buatlah sebuah fungsi dengan metode rekursi
untuk menghitung nilai dari deret
4+12+36+108+... dimana banyaknya suku adalah
n buah suku.
Bab 7
Array
![Page 166: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/166.jpg)
166
Tujuan pembelajaran umum:
1. memahami penggunaan array satu dimensi dalam
menyusun algoritma
2. memahami penggunaan array multidimensi
dalam menyusun algoritma
Perhatikan penggalan algoritma pertama berikut: for i=1 to 8 do
input (x)
endfor
for i=1 to 8 do
output (x)
endfor
Misalkan algoritma di atas dijalankan dengan runtunan
nilai x yang dibaca dari keyboard sebagai berikut: 10 20 30 40 50 60 70 80
maka keluaran dari algoritma tersebut adalah: 80
80
80
![Page 167: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/167.jpg)
167
80
80
80
80
80
Mengapa 10, 20, 30, 40, 50, 60 dan 70 tidak tercetak?
Karena variabel x hanya dapat menampung satu buah
nilai dan nilai yang disimpan oleh x adalah nilai yang
terakhir kali dimasukkan (contoh disini adalah 80). Nilai
yang terakhir inilah yang dicetak ke piranti keluaran pada
setiap kali perulangan. Bandingkan dengan algoritma
berikut:
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 168: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/168.jpg)
168
output (x5)
output (x6)
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 harus
disimpan? Apakah harus menggunakan 1000 buah
variabel? Jelas ini tidak praktis, selain itu akan ada 1000
buah perintah input dan output untuk membaca dan
menuliskan nilai-nilai x tersebut.
Variabel dengan tipe data tunggal hanya dapat digunakan
untuk menyimpan satu buah nilai saja. Untuk menyimpan
lebih dari satu nilai data sekaligus dalam sebuah variabel
dengan tipe data array. Sehingga pada kasus di atas
dengan menggunakan array akan menghemat penggunaan
nama-nama variabel yang banyak dan perintah input dan
output seluruh elemen array cukup ditulis satu kali di
struktur loop.
7.1 Array
![Page 169: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/169.jpg)
169
Dalam beberapa literatur array sering diartikan larik.
Array merupakan koleksi data dengan setiap elemen data
menggunakan nama yang sama dan tiap elemen data
bertipe sama. Setiap elemen array dapat diakses melalui
indeks array.
Berdasarkan jumlah dimensi indeks dalam sebuah
variabel array dibedakan menjadi array berdimensi satu
dan array berdimensi banyak. Terdapat beberapa hal yang
perlu diperhatikan apabila akan memasukkan deretan data
dalam variabel array:
1.Mengetahui tipe data yang digunakan dalam variabel
array. Variabel array numerik hanya dapat menerima
data numeric dan variabel array string hanya dapat
menerima data karakter. String merupakan kumpulan
dari karakter, biasanya merupakan kumpulan dari
huruf dalam alphabet. String didefinisikan sebagai
kumpulan dari tipe data char yang diakhiri dengan null
character. Array merupakan kumpulan dari data yang
bertipe sama. String merupakan salah satu kasus
khusus dari array, string merupakan array dengan tipe
data char.
2.Banyaknya data harus lebih kecil atau sama dengan
besarnya ukuran array.
3.Instruksi perulangan digunakan untuk membaca deretan
![Page 170: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/170.jpg)
170
data dalam suatu variabel indeks.
4.Banyaknya indeks yang digunakan menunjukkan
banyaknya ruang memori yang dialokasikan. Supaya
tidak terjadi pemborosan ruang memori maka
banyaknya indeks harus disesuaikan dengan
banyaknya data.
7.2 Contoh-Contoh Kasus Array
1.Konversi kata dalam huruf besar menjadi kata dalam
huruf kecil.
Jawab:
Algoritma dengan pseudocode:
input(besar)
n=len(besar)
for i=1 to n do
posisi=ord(besar[i])
kecil=chr(posisi+32)
output (kecil)
2.Konversi kata dalam huruf kecil menjadi kata dalam
![Page 171: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/171.jpg)
171
huruf besar.
Jawab:
Algoritma dengan pseudocode:
input(kecil)
n=len(kecil)
for i=1 to n do
posisi=ord(kecil[i])
besar=chr(posisi-32)
output (besar)
3.Konversi sembarang penulisan kata
Jawab:
Algoritma dengan pseudocode:
input (kata)
n=len(kata)
for i=1 to n do
posisi=ord(kata[i])
if posisi>=65 and posisi<=90 then
kecil=chr(posisi+32)
output (kecil)
endif
else
![Page 172: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/172.jpg)
172
besar=chr(posisi-32)
output (besar)
endif
endfor
4.Konversi karakter bilangan menjadi bilangan integer.
Jawab:
Algoritma dengan pseudocode:
input (bilkar)
n=len(bilkar)
for i=1 to n do
posisi=ord(bilkar[i])
bilint=posisi-48
output (bilint)
endfor
5.Jumlah dan rata-rata khusus untuk data-data positif dari
n buah data.
Jawab:
Algoritma dengan pseudocode: jumlah=0
cacah=0
![Page 173: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/173.jpg)
173
for i=1 to n do
input (x)
if x>0 then
jumlah=jumlah+x
cacah=cacah+1
endif
endfor
rata=jumlah/cacah
output (rata)
6.Mencari data terbesar dan data terkecil beserta letaknya.
Jawab:
Algoritma dengan pseudocode: input (n)
max=A[1]
indexmax=1
min=A[1]
indexmin=1
for i=2 to n do
if A[i] > max then
max=A[i]
indexmax=i
endif
if A[i] < min then
min=A[i]
![Page 174: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/174.jpg)
174
indexmin=i
endif
endfor
output (max,indexmax,min,indexmin)
7.Mencari data terkecil pertama dan terkecil kedua
beserta letaknya.
Jawab:
Algoritma dengan pseudocode: input (n)
if A[1] > A[2] then
min1=A[2]
imin1=2
min2=A[1]
imin2=1
else
min1=A[1]
imin1=1
min2=A[2]
imin2=2
endif
for i=3 to n do
if (A[i]>min1) and (A[i]<min2)
then
min2=A[i]
![Page 175: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/175.jpg)
175
imin2=i+2
else
if (A[i]<min1) and (A[i]<min2)
then
temp=min1
min1=A[i]
imin1=i+3
min2=temp
imin2=i+2
endif
endif
endfor
output
(min1,indexmin1,min2,indexmin2)
8. Menghitung standar deviasi.
Jawab:
Algoritma dengan pseudocode:
input (n)
jumlah=0
JKR=0
for i=1 to n do
input (x[i])
jumlah=jumlah+x[i]
![Page 176: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/176.jpg)
176
endfor
rata=jumlah/n
for i=1 to n do
KR=sqr(x[i]-rata)
JKR=JKR+KR
endfor
SD=sqrt(JKR/n)
output (SD)
7.3 Latihan
1. Buatlah algoritma untuk mencari bilangan prima
terbesar kedua dan bilangan prima terkecil kedua
disertai posisi atau letaknya dan berapa banyaknya
cacah untuk masing-masing bilangan prima
terbesar kedua dan bilangan prima terkecil kedua
dari n buah data.
2. Buatlah algoritma untuk menjumlahkan dua buah
matriks.
3. Buatlah algoritma untuk melakukan operasi
perkalian dua buah matriks.
4. Buatlah algoritma untuk menentukan matriks
transpose.
![Page 177: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/177.jpg)
177
5. Buatlah algoritma untuk menghitung banyaknya
huruf kecil dan huruf besar dari sebuah kata yang
dimasukkan dari keyboard.
Bab 8
Sorting
Tujuan pembelajaran umum:
1. memahami algoritma selection sort
2. memahami algoritma buble sort
3. memahami algortima insertion sort
4. memahami algoritma merge sort
Pengurutan (sorting) diartikan sebagai proses penyusunan
kembali sekumpulan obyek ke dalam urutan tertentu.
Tujuan pengurutan untuk mendapatkan kemudahan dalam
pencarian anggota dari suatu himpunan disamping dapat
mempercepat mengetahui data terbesar dan data terkecil,
misalkan kita ingin mengetahui perolehan nilai tertinggi
dan nilai terendah dari hasil ujian. Contoh obyek
![Page 178: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/178.jpg)
178
terurutkan seperti daftar isi, daftar pustaka dan lain-lain.
Proses yang terjadi pada pengurutan adalah sebagai
berikut:
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 metode
Selection Sort secara terurut naik adalah sebagai berikut:
1.Mencari data terkecil dari data pertama sampai dengan
data terakhir, kemudian ditukar posisinya dengan data
pertama.
2.Mencari data terkecil dari data kedua sampai dengan
data terakhir, kemudian ditukar posisinya dengan data
![Page 179: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/179.jpg)
179
kedua.
3.Mencari data terkecil dari data ketiga sampai dengan
data terakhir, kemudian ditukar posisinya dengan data
ketiga.
4.dan seterusnya sampai semua data terurut naik. Apabila
terdapat n buah data yang akan diurutkan maka
membutuhkan (n-1) langkah pengurutan, dimana
data terakhir yaitu data ke-n tidak perlu diurutkan
karena hanya tinggal satu-satunya.
Contoh kasus:
Terdapat 8 buah data yang nilainya belum terurut:
44 55 12 42 94 18 6 67
Data-data di atas akan ditampilkan secara terurut naik
menggunakan metode Selection Sort. Proses
pengurutannya adalah sebagai berikut:
Proses 1
indexmin=1
Data ke-2 : A[indexmin] < A[2]
Data ke-3 : A[indexmin] > A[3]
indexmin=3
Data ke-4 : A[indexmin] < A[4]
Data ke-5 : A[indexmin] < A[5]
![Page 180: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/180.jpg)
180
Data ke-6 : A[indexmin] < A[6]
Data ke-7 : A[indexmin] > A[7]
indexmin=7
Data ke-8 : A[indexmin] < A[8]
Karena A[1] <> A[indexmin] maka dilakukan pertukaran
nilai data ke-1 dan data ke-indexmin (data ke-7). Akhir
dari proses 1 adalah:
6 55 12 42 94 18 44 67
Kondisi data pada akhir proses pertama ini digunakan
sebagai masukan pada proses kedua.
Proses 2
indexmin=2
Data ke-3 : A[indexmin] > A[3]
indexmin=3
Data 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 pertukaran
nilai data ke-2 dan data ke-indexmin (data ke-3). Akhir
![Page 181: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/181.jpg)
181
dari proses 2 adalah:
6 12 55 42 94 18 44 67
Kondisi data pada akhir proses kedua ini digunakan
sebagai masukan pada proses ketiga.
Proses 3
indexmin=3
Data ke-4 : A[indexmin] > A[4]
indexmin=4
Data ke-5 : A[indexmin] < A[5]
Data ke-6 : A[indexmin] > A[6]
indexmin=6
Data ke-7 : A[indexmin] < A[7]
Data ke-8 : A[indexmin] < A[8]
Karena A[3] <> A[indexmin] maka dilakukan pertukaran
nilai data ke-3 dan data ke-indexmin (data ke-6). Akhir
dari proses 3 adalah:
6 12 18 42 94 55 44 67
Kondisi data pada akhir proses ketiga ini digunakan
sebagai masukan pada proses keempat.
Proses 4
indexmin=4
![Page 182: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/182.jpg)
182
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[4] = A[indexmin] maka tidak dilakukan
pertukaran nilai. Awal dan akhir dari proses 4 tidak
terjadi perubahan yaitu kondisi datanya tetap:
6 12 18 42 94 55 44 67
Kondisi data pada akhir proses keempat ini digunakan
sebagai masukan pada proses kelima.
Proses 5
indexmin=5
Data ke-6 : A[indexmin] > A[6]
indexmin=6
Data ke-7 : A[indexmin] > A[7]
indexmin=7
Data 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). Akhir
dari proses 5 adalah:
6 12 18 42 44 55 94 67
![Page 183: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/183.jpg)
183
Kondisi data pada akhir proses kelima ini digunakan
sebagai masukan pada proses keenam.
Proses 6
indexmin=6
Data ke-7 : A[indexmin] < A[7]
Data ke-8 : A[indexmin] < A[8]
Karena A[6] = A[indexmin] maka tidak dilakukan
pertukaran nilai. Awal dan akhir dari proses 6 tidak
terjadi perubahan yaitu kondisi datanya tetap:
6 12 18 42 44 55 94 67
Kondisi data pada akhir proses keenam ini digunakan
sebagai masukan pada proses ketujuh.
Proses 7
indexmin=7
Data ke-8 : A[indexmin] > A[8]
indexmin=8
Karena A[7] <> A[indexmin] maka dilakukan pertukaran
nilai data ke-7 dan data ke-indexmin (data ke-8). Akhir
dari proses 7 adalah:
6 12 18 42 44 55 67 94
![Page 184: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/184.jpg)
184
Kondisi data pada akhir proses ketujuh ini merupakan
akhir dari pengurutan secara menaik.
Dengan asumsi sudah terdapat array A yang menyimpan
n buah elemen, algoritma Selection Sort disajikan dengan
metode pseudocode:
for i=1 to (n-1) do
indexmin=i
for j=i+1 to n do
if A[indexmin] > A[j] then
indexmin=j
endif
endfor
if A[i] <> A[indexmin] then
temp=A[i]
A[i]=A[indexmin]
A[indexmin]=temp
endif
endfor
8.1.2 Pengurutan Turun (Descending) Apabila akan mengurutkan menurun menggunakan
metode Selection Sort maka langkah-langkah sebagai
berikut:
![Page 185: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/185.jpg)
185
1.Mencari data terbesar dari data pertama sampai dengan
data terakhir, kemudian ditukar posisinya dengan data
pertama.
2.Mencari data terbesar dari data kedua sampai dengan
data terakhir, kemudian ditukar posisinya dengan data
kedua.
3.Mencari data terbesar dari data ketiga sampai dengan
data terakhir, kemudian ditukar posisinya dengan data
ketiga.
4.dan seterusnya sampai semua data terurut turun.
Apabila terdapat n buah data yang akan diurutkan
maka membutuhkan (n-1) langkah pengurutan,
dimana data terakhir yaitu data ke-n tidak perlu
diurutkan karena hanya tinggal satu-satunya.
Contoh kasus:
Terdapat 8 buah data yang nilainya belum terurut:
44 55 12 42 94 18 6 67
Data-data di atas akan ditampilkan secara terurut turun
menggunakan metode Selection Sort. Proses
pengurutannya adalah sebagai berikut:
Proses 1
indexmax=1
![Page 186: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/186.jpg)
186
Data ke-2 : A[indexmax] < A[2]
indexmax=2
Data ke-3 : A[indexmax] > A[3]
Data ke-4 : A[indexmax] > A[4]
Data ke-5 : A[indexmax] < A[5]
indexmax=5
Data 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 pertukaran
nilai data ke-1 dan data ke-indexmax (data ke-5). Akhir
dari proses 1 adalah:
94 55 12 42 6 18 44 67
Kondisi data pada akhir proses pertama ini digunakan
sebagai masukan pada proses kedua.
Proses 2
indexmax=2
Data 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 187: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/187.jpg)
187
Data ke-8 : A[indexmax] < A[8]
indexmax=8
Karena A[2] <> A[indexmax] maka dilakukan pertukaran
nilai data ke-2 dan data ke-indexmax (data ke-8). Akhir
dari proses 2 adalah:
94 67 12 42 6 18 44 55
Kondisi data pada akhir proses kedua ini digunakan
sebagai masukan pada proses ketiga.
Proses 3
indexmax=3
Data ke-4 : A[indexmax] < A[4]
indexmax=4
Data 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=8
Karena A[3] <> A[indexmax] maka dilakukan pertukaran
nilai data ke-3 dan data ke-indexmax (data ke-8). Akhir
dari proses 3 adalah:
94 67 55 42 6 18 44 12
![Page 188: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/188.jpg)
188
Kondisi data pada akhir proses ketiga ini digunakan
sebagai masukan pada proses keempat.
Proses 4
indexmax=4
Data ke-5 : A[indexmax] > A[5]
Data ke-6 : A[indexmax] > A[6]
Data ke-7 : A[indexmax] < A[7]
indexmax=7
Data ke-8 : A[indexmax] > A[8]
Karena A[4] <> A[indexmax] maka dilakukan pertukaran
nilai data ke-4 dan data ke-indexmax (data ke-7). Akhir
dari proses 4 adalah:
94 67 55 44 6 18 42 12
Kondisi data pada akhir proses keempat ini digunakan
sebagai masukan pada proses kelima.
Proses 5
indexmax=5
Data ke-6 : A[indexmax] < A[6]
indexmax=6
Data ke-7 : A[indexmax] < A[7]
indexmax=7
![Page 189: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/189.jpg)
189
Data ke-8 : A[indexmax] > A[8]
Karena A[5] <> A[indexmax] maka dilakukan pertukaran
nilai data ke-5 dan data ke-indexmax (data ke-7). Akhir
dari proses 4 adalah:
94 67 55 44 42 18 6 12
Kondisi data pada akhir proses kelima ini digunakan
sebagai masukan pada proses keenam.
Proses 6
indexmax=6
Data ke-7 : A[indexmax] > A[7]
Data ke-8 : A[indexmax] > A[8]
Karena A[6] = A[indexmax] maka tidak dilakukan
pertukaran nilai. Awal dan akhir dari proses 6 tidak
terjadi perubahan yaitu kondisi datanya tetap:
94 67 55 44 42 18 6 12
Kondisi data pada akhir proses keenam ini digunakan
sebagai masukan pada proses ketujuh.
Proses 7
indexmax=7
![Page 190: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/190.jpg)
190
Data ke-8 : A[indexmax] < A[8]
indexmax=8
Karena A[7] <> A[indexmax] maka dilakukan pertukaran
nilai data ke-7 dan data ke-indexmin (data ke-8). Akhir
dari proses 7 adalah:
94 67 55 44 42 18 12 6
Kondisi data pada akhir proses ketujuh ini merupakan
akhir dari pengurutan secara menaik.
Algoritma Selection Sort apabila disajikan dengan
metode pseudocode berikut (diasumsikan sudah terdapat
array A yang menyimpan n buah elemen):
for i=1 to (n-1) do
indexmax=i
for j=i+1 to n do
if A[indexmax] < A[j] then
indexmax=j
endif
endfor
if A[i] <> A[indexmax] then
temp=A[i]
A[i]=A[indexmax]
A[indexmax]=temp
endif
![Page 191: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/191.jpg)
191
endfor
8.2 Metode Bubble Sort Proses yang terjadi pada pengurutan dengan metode
Bubble Sort adalah selalu membandingkan dua data yang
berdekatan.
8.2.1 Pengurutan Naik (Ascending) Apabila data yang berada di sebelah kanannya bernilai
lebih kecil maka dipertukarkan sampai semua data terurut
sehingga memunculkan data terbesar di posisi paling
terakhir.
Contoh kasus:
Terdapat 6 buah data yang nilainya belum terurut:
7 5 6 3 4 2
Data-data di atas akan ditampilkan secara terurut naik
menggunakan metode Bubble Sort. Proses pengurutannya
adalah sebagai berikut:
Proses 1
Data 1-2 : A[1] > A[2] → ditukar
5 7 6 3 4 2
![Page 192: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/192.jpg)
192
Data 2-3 : A[2] > A[3] → ditukar
5 6 7 3 4 2
Data 3-4 : A[3] > A[4] → ditukar
5 6 3 7 4 2
Data 4-5 : A[4] > A[5] → ditukar
5 6 3 4 7 2
Data 5-6 : A[5] > A[6] → ditukar
5 6 3 4 2 7
Akhir dari proses pertama adalah menempatkan data
terbesar pertama pada posisi ke-n (posisi ke-6).
Proses 2
Data 1-2 : A[1] < A[2]
Data 2-3 : A[2] > A[3] → ditukar
5 3 6 4 2 7
Data 3-4 : A[3] > A[4] → ditukar
5 3 4 6 2 7
Data 4-5 : A[4] > A[5] → ditukar
5 3 4 2 6 7
Akhir dari proses kedua adalah menempatkan data
terbesar kedua pada posisi ke-n-1 (posisi ke-5).
![Page 193: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/193.jpg)
193
Proses 3
Data 1-2 : A[1] > A[2] → ditukar
3 5 4 2 6 7
Data 2-3 : A[2] > A[3] → ditukar
3 4 5 2 6 7
Data 3-4 : A[3] > A[4] → ditukar
3 4 2 5 6 7
Akhir dari proses ketiga adalah menempatkan data
terbesar ketiga pada posisi ke-n-2 (posisi ke-4).
Proses 4
Data 1-2 : A[1] < A[2]
Data 2-3 : A[2] > A[3] → ditukar
3 2 4 5 6 7
Akhir dari proses keempat adalah menempatkan data
terbesar keempat pada posisi ke-n-3 (posisi ke-3).
Proses 5
Data 1-2 : A[1] > A[2]
Data 2-3 : A[2] > A[3] → ditukar
2 3 4 5 6 7
Akhir dari proses kelima atau terakhir adalah
![Page 194: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/194.jpg)
194
menempatkan data terbesar kelima dan keenam pada
posisi ke-n-4 dan ke-n-5 (posisi ke-2 dan ke-1).
Penyajian pseudocode algoritma Bubble Sort (dengan
asumsi sudah terdapat array A yang menyimpan n buah
elemen):
for i=1 to (n-1) do
for j=1 to (n-i) do
if A[j] > A[j+1] then
temp=A[j]
A[j]=A[j+1]
A[j+1]=temp
endif
endfor
endfor
8.2.2 Pengurutan Turun (Descending) Kebalikan dari pengurutan yang menurun apabila data
yang berada di sebelah kanannya bernilai lebih besar
maka dipertukarkan sampai semua data terurut sehingga
memunculkan data terkecil di posisi paling terakhir.
Contoh kasus:
Terdapat 8 buah data yang nilainya belum terurut:
![Page 195: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/195.jpg)
195
44 55 12 42 94 18 6 67
Data-data di atas akan ditampilkan secara terurut turun
menggunakan metode Bubble Sort. Proses pengurutannya
adalah sebagai berikut:
Proses 1
Data 1-2 : A[1] < A[2] → ditukar
55 44 12 42 94 18 6 67
Data 2-3 : A[2] > A[3]
Data 3-4 : A[3] < A[4] → ditukar
55 44 42 12 94 18 6 67
Data 4-5 : A[4] < A[5] → ditukar
55 44 42 94 12 18 6 67
Data 5-6 : A[5] < A[6] → ditukar
55 44 42 94 18 12 6 67
Data 6-7 : A[6] > A[7]
Data 7-8 : A[7] < A[8] → ditukar
55 44 42 94 18 12 67 6
Akhir dari proses pertama adalah menempatkan data
terkecil pertama pada posisi ke-n (posisi ke-8).
Proses 2
Data 1-2 : A[1] > A[2]
![Page 196: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/196.jpg)
196
Data 2-3 : A[2] > A[3]
Data 3-4 : A[3] < A[4] → ditukar
55 44 94 42 18 12 67 6
Data 4-5 : A[4] > A[5]
Data 5-6 : A[5] > A[6]
Data 6-7 : A[6] < A[7] → ditukar
55 44 94 42 18 67 12 6
Akhir dari proses kedua adalah menempatkan data
terkecil kedua pada posisi ke-n-1 (posisi ke-7).
Proses 3
Data 1-2 : A[1] > A[2]
Data 2-3 : A[2] < A[3] → ditukar
55 94 44 42 18 67 12 6
Data 3-4 : A[3] > A[4]
Data 4-5 : A[4] > A[5]
Data 5-6 : A[5] < A[6] → ditukar
55 94 44 42 67 18 12 6
Akhir dari proses ketiga adalah menempatkan data
terkecil ketiga pada posisi ke-n-2 (posisi ke-6).
Proses 4
![Page 197: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/197.jpg)
197
Data 1-2 : A[1] < A[2] → ditukar
94 55 44 42 67 18 12 6
Data 2-3 : A[2] > A[3]
Data 3-4 : A[3] > A[4]
Data 4-5 : A[4] < A[5] → ditukar
94 55 44 67 42 18 12 6
Akhir dari proses keempat adalah menempatkan data
terkecil keempat pada posisi ke-n-3 (posisi ke-5).
Proses 5
Data 1-2 : A[1] > A[2]
Data 2-3 : A[2] > A[3]
Data 3-4 : A[3] > A[4] → ditukar
94 55 67 44 42 18 12 6
Akhir dari proses kelima adalah menempatkan data
terkecil kelima pada posisi ke-n-4 (posisi ke-4).
Proses 6
Data 1-2 : A[1] > A[2]
Data 2-3 : A[2] < A[3] → ditukar
94 67 55 44 42 18 12 6
![Page 198: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/198.jpg)
198
Akhir dari proses keenam adalah menempatkan data
terkecil keenam pada posisi ke-n-5 (posisi ke-3).
Proses 7
Data 1-2 : A[1] > A[2]
Akhir dari proses ketujuh adalah menempatkan data
terkecil 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 n
buah elemen):
for i=1 to (n-1) do
for j=1 to (n-i) do
if A[j] < A[j+1] then
temp=A[j]
A[j]=A[j+1]
A[j+1]=temp
endif
endfor
endfor
8.3 Metode Insertion Sort Proses yang terjadi pada pengurutan dengan
![Page 199: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/199.jpg)
199
menggunakan metode Insertion Sort adalah dimulai dari
data ke-2 kemudian disisipkan pada tempat yang sesuai.
Data pada posisi pertama diandaikan memang sudah pada
tempatnya.
8.3.1 Pengurutan Naik (Ascending) Mulai dari data ke-2 nilainya dibandingkan dengan data-
data sebelumnya kemudian mencari posisi yang tepat
untuk menyisipkan.
Contoh kasus:
Terdapat 6 buah data yang nilainya belum terurut:
8 5 15 12 7 2
Data-data di atas akan ditampilkan secara terurut naik
menggunakan metode Insertion Sort. Proses
pengurutannya adalah sebagai berikut:
Proses :
i=2
0=temp 1 2 3 4 5 6
5 8 5 15 12 7 2
![Page 200: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/200.jpg)
200
j=2-1=1
A[1] > temp
A[2] ← A[1]
0=temp 1 2 3 4 5 6
5 8 8 15 12 7 2
j=1-1=0
A[0] = temp
A[1] ← temp
0=temp 1 2 3 4 5 6
5 5 8 15 12 7 2
i=3
0=temp 1 2 3 4 5 6
15 5 8 15 12 7 2
j=3-1=2
A[2] < temp
A[3] ← A[2]
![Page 201: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/201.jpg)
201
i=4
0=temp 1 2 3 4 5 6
12 5 8 15 12 7 2
j=4-1=3
A[3] > temp
A[4] ← A[3]
0=temp 1 2 3 4 5 6
12 5 8 15 15 7 2
j=3-1=2
A[2] < temp
A[3] ← temp
0=temp 1 2 3 4 5 6
12 5 8 12 15 7 2
i=5
![Page 202: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/202.jpg)
202
0=temp 1 2 3 4 5 6
7 5 8 12 15 7 2
j=5-1=4
A[4] > temp
A[5] ← A[4]
0=temp 1 2 3 4 5 6
7 5 8 12 15 15 2
j=4-1=3
A[3] > temp
A[4] ← A[3]
0=temp 1 2 3 4 5 6
7 5 8 12 12 15 2
j=3-1=2
A[2] > temp
A[3] ← A[2]
![Page 203: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/203.jpg)
203
0=temp 1 2 3 4 5 6
7 5 8 8 12 15 2
j=2-1=1
A[1] < temp
A[2] ← temp
0=temp 1 2 3 4 5 6
7 5 7 8 12 15 2
i=6
j=6-1=5
A[5] > temp
A[6] ← A[5]
0=temp 1 2 3 4 5 6
2 5 7 8 12 15 15
j=5-1=4
A[5] > temp
A[5] ← A[4]
![Page 204: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/204.jpg)
204
0=temp 1 2 3 4 5 6
2 5 7 8 12 12 15
j=4-1=3
A[3] > temp
A[4] ← A[3]
0=temp 1 2 3 4 5 6
2 5 7 8 8 12 15
j=3-1=2
A[2] > temp
A[3] ← A[2]
0=temp 1 2 3 4 5 6
2 5 7 7 8 12 15
j=2-1=1
A[1] > temp
A[2] ← A[1]
0=temp 1 2 3 4 5 6
2 5 5 7 8 12 15
j=1-1=0
![Page 205: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/205.jpg)
205
A[0] = temp
A[1] ← temp
0=temp 1 2 3 4 5 6
2 2 5 7 8 12 15
Sebelumnya diasumsikan sudah terdapat array A yang
menyimpan n buah elemen, maka algoritma Insertion Sort
disajikan dengan pseudocode berikut:
for i=2 to n do
temp=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 do
A[j+1]=A[j] {pergeseran}
j=j-1
endwhile
A[j+1]=temp {menemukan tempat yang tepat}
endfor
8.3.2 Pengurutan Turun (Descending)
![Page 206: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/206.jpg)
206
Proses akan dimulai dengan membandingkan data ke-2
dengan data-data sebelumnya kemudian mencari posisi
yang tepat untuk menyisipkan.
Contoh kasus:
Terdapat 6 buah data yang nilainya belum terurut:
8 5 15 12 7 2
Data-data di atas akan ditampilkan secara terurut turun
menggunakan metode Insertion Sort. Proses
pengurutannya adalah sebagai berikut:
Proses :
i=2
0=temp 1 2 3 4 5 6
5 8 5 15 12 7 2
j=2-1=1
A[1] > temp
A[2] ← temp
0=temp 1 2 3 4 5 6
5 8 5 15 12 7 2
![Page 207: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/207.jpg)
207
i=3
0=temp 1 2 3 4 5 6
15 8 5 15 12 7 2
j=3-1=2
A[2] < temp
A[3] ← A[2]
0=temp 1 2 3 4 5 6
15 8 5 5 12 7 2
j=2-1=1
A[1] < temp
A[2] ← A[1]
0=temp 1 2 3 4 5 6
15 8 8 5 12 7 2
j=1-1=0
A[0] = temp
![Page 208: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/208.jpg)
208
A[1] ← temp
0=temp 1 2 3 4 5 6
15 15 8 5 12 7 2
i=4
0=temp 1 2 3 4 5 6
12 15 8 5 12 7 2
j=4-1=3
A[3] < temp
A[4] ← A[3]
0=temp 1 2 3 4 5 6
12 15 8 5 5 7 2
j=3-1=2
A[2] < temp
A[3] ← A[2]
![Page 209: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/209.jpg)
209
0=temp 1 2 3 4 5 6
12 15 8 8 5 7 2
j=2-1=1
A[2] > temp
A[2] ← temp
0=temp 1 2 3 4 5 6
12 15 12 8 5 7 2
i=5
j=5-1=4
A[4] < temp
A[5] ← A[4]
0=temp 1 2 3 4 5 6
7 15 12 8 5 5 2
j=4-1=3
A[3] > temp
A[4] ← temp
![Page 210: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/210.jpg)
210
0=temp 1 2 3 4 5 6
7 15 12 8 7 5 2
i=6
j=6-1=5
A[5] > temp
A[6] ← temp
0=temp 1 2 3 4 5 6
2 15 12 8 7 5 2
Sebelumnya diasumsikan sudah terdapat array A yang
menyimpan n buah elemen, maka algoritma Insertion Sort
disajikan dengan pseudocode berikut:
for i=2 to n do
temp=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 do
A[j+1]=A[j] {pergeseran}
j=j-1
![Page 211: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/211.jpg)
211
endwhile
A[j+1]=temp {menemukan tempat yang tepat}
endfor
Dari tiga metode pengurutan di atas, metode Selection
Sort mempunyai unjuk kerja yang lebih baik. Proses
pertukaran data pada setiap langkah hanya dilakukan satu
kali sehingga waktu pengurutan data dapat lebih cepat.
Metode Insertion Sort mempunyai kelemahan pada
jumlah pergeseran yang dilakukan untuk mencari posisi
yang tepat untuk meletakkan data. Pada setiap langkah
pengurutan, misalkan pada langkah ke-i maka proses
pergeseran yang dilakukan paling banyak adalah (i-1)
kali. Sehingga apabila akan mengurutkan data yang
tersimpan dalam array berukuran n, dimana nilai n adalah
besar maka banyaknya proses pergeseran akan meningkat
secara kuadratik. Oleh karena itu metode ini tidak efisien
digunakan seandainya datanya besar. Kelebihan dari
metode Bubble Sort adalah kesederhanannya sehingga
mudah untuk dipahami, tetapi pengurutan data
menggunakan metode Bubble Sort tidak efisien karena
banyaknya proses pertukaran data yang diperlukan pada
setiap langkah mencari data terkecil maupun data
terbesar. Untuk penggurutan array data berukuran besar
![Page 212: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/212.jpg)
212
menggunakan metode ini akan membutuhkan waktu yang
relatif lebih lama.
8.4 Metode Merge Sort Metode Merge Sort adalah menggabungkan dua buah
array yang sudah terurut.
8.4.1 Pengurutan Naik (Ascending) 1.Dua buah array yang masing-masing terurut naik akan
digabungkan menjadi terurut naik.
Contoh kasus:
Array pertama : 5 8 12 15 20 25 29
Array kedua : 4 6 21 22
Proses penggabungan dua buah array di atas menjadi
sebuah array yang terurut naik adalah sebagai berikut:
1 2 3 4 5 6 7 a=1 s/d n
A = 5 8 12 15 20 25 29
1 2 3 4 b=1 s/d m
B = 4 6 21 22
![Page 213: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/213.jpg)
213
C = c=1 s/d n+m
A[1] > B[1]
C[1] ← B[1]
C = 4
b=1+1=2
A[1] < B[2]
C[2] ← A[1]
C = 4 5
a=1+1=2
A[2] > B[2]
C[3] ← B[2]
C = 4 5 6
b=2+1=3
A[2] < B[3]
C[4] ← A[2]
C = 4 5 6 8
a=2+1=3
A[3] < B[3]
![Page 214: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/214.jpg)
214
C[5] ← A[3]
C = 4 5 6 8 12
a=3+1=4
A[4] < B[3]
C[6] ← A[4]
C = 4 5 6 8 12 15
a=4+1=5
A[5] < B[3]
C[7] ← A[5]
C = 4 5 6 8 12 15 20
a=5+1=6
A[6] > B[3]
C[8] ← B[3]
C = 4 5 6 8 12 15 20 21
b=3+1=4
A[6] > B[4]
C[9] ← B[4]
C = 4 5 6 8 12 15 20 21 22
b=4+1=5
![Page 215: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/215.jpg)
215
Array kedua terdiri dari 4 elemen. Pada akhir proses ini
setelah indeks pada array kedua dinaikkan ternyata
indeksnya telah melampaui ukuran array kedua yang
sesungguhnya berarti semua elemen array kedua sudah
habis terlebih dahulu dan masuk ke dalam array
gabungan.
b>4 artinya b>m.
Elemen array pertama yang masih tersisa akan
dimasukkan ke dalam array gabungan satu persatu.
a=5+1=6
C[10] ← A[6]
C = 4 5 6 8 12 15 20 21 22 25
a=6+1=7
C[11] ← A[7]
C = 4 5 6 8 12 15 20 21 22 25 29
Algoritma dengan pseudocode untuk metode Merge Sort
(diasumsikan terdapat dua buah array yang masing-
masing menyimpan sekumpulan data dalam kondisi
terurut naik) :
![Page 216: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/216.jpg)
216
a=1
b=1
c=1
while (a<=n) or (b<=m) do
if A[a]<B[b] then
C[c]=A[a]
a=a+1
else
C[c]=B[b]
b=b+1
endif
c=c+1
endwhile
if b>m then
for p=a to n do
C[c]=A[p]
c=c+1
endfor
endif
if a>n then
for p=b to m do
C[c]=B[p]
c=c+1
endfor
endif
![Page 217: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/217.jpg)
217
2.Dua buah array yang masing-masing terurut turun akan
digabungkan menjadi terurut naik.
Contoh kasus:
Array pertama : 29 25 20 15 12 8 5
Array kedua : 22 21 6 4
Proses penggabungan dua buah array di atas menjadi
sebuah array yang terurut naik adalah sebagai berikut:
1 2 3 4 5 6 7 a=1 s/d n
A = 29 25 20 15 12 8 5
1 2 3 4 b=1 s/d m
B = 22 21 6 4
C = c=1 s/d n+m
A[7] > B[4]
C[1] ← B[4]
C = 4
b=4-1=3
![Page 218: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/218.jpg)
218
A[7] < B[3]
C[2] ← A[7]
C = 4 5
a=7-1=6
A[6] > B[3]
C[3] ← B[3]
C = 4 5 6
b=3-1=2
A[6] < B[2]
C[4] ← A[6]
C = 4 5 6 8
a=6-1=5
A[5] < B[2]
C[5] ← A[5]
C = 4 5 6 8 12
a=5-1=4
A[4] < B[2]
C[6] ← A[4]
C = 4 5 6 8 12 15
a=4-1=3
![Page 219: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/219.jpg)
219
A[3] < B[2]
C[7] ← A[3]
C = 4 5 6 8 12 15 20
a=3-1=2
A[2] > B[2]
C[8] ← B[2]
C = 4 5 6 8 12 15 20 21
b=2-1=1
A[2] > B[1]
C[9] ← B[1]
C = 4 5 6 8 12 15 20 21 22
b=1-1=0
Array kedua terdiri dari 4 elemen. Pada akhir proses ini
setelah indeks pada array kedua diturunkan ternyata
indeksnya menjadi sama dengan nol berarti semua
elemen array kedua sudah habis terlebih dahulu dan
masuk ke dalam array gabungan.
Elemen array pertama yang masih tersisa akan
dimasukkan ke dalam array gabungan satu persatu.
![Page 220: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/220.jpg)
220
a=3-1=2
C[10] ← A[2]
C = 4 5 6 8 12 15 20 21 22 25
a=2-1=1
C[11] ← A[1]
C = 4 5 6 8 12 15 20 21 22 25 29
Dengan mengasumsikan terdapat dua buah array yang
masing-masing menyimpan sekumpulan data dalam
kondisi terurut turun, algoritma Merge Sort dapat
dituliskan dengan pseudocode berikut:
a=n
b=m
c=1
while (a>=1) or (b>=1) do
if A[a]<B[b] then
C[c]=A[a]
a=a-1
else
C[c]=B[b]
b=b-1
endif
![Page 221: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/221.jpg)
221
c=c+1
endwhile
if b<1 then
for p=a downto 1 do
C[c]=A[p]
c=c+1
endfor
endif
if a<1 then
for p=b downto 1 do
C[c]=B[p]
c=c+1
endfor
endif
8.4.2 Pengurutan Turun (Descending) 1.Dua buah array yang masing-masing terurut naik akan
digabungkan menjadi terurut turun.
Contoh kasus:
Array pertama : 5 8 12 15 20 25 29
Array kedua : 4 6 21 22
Proses penggabungan dua buah array di atas menjadi
sebuah array yang terurut turun adalah sebagai berikut:
![Page 222: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/222.jpg)
222
1 2 3 4 5 6 7 a=1 s/d n
A = 5 8 12 15 20 25 29
1 2 3 4 b=1 s/d m
B = 4 6 21 22
C = c=1 s/d n+m
A[7] > B[4]
C[1] ← A[7]
C = 29
a=7-1=6
A[6] > B[4]
C[2] ← A[6]
C = 29 25
a=6-1=5
A[5] < B[4]
C[3] ← B[4]
C = 29 25 22
b=4-1=3
![Page 223: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/223.jpg)
223
A[5] < B[3]
C[4] ← B[3]
C = 29 25 22 21
b=3-1=2
A[5] > B[2]
C[5] ← A[5]
C = 29 25 22 21 20
a=5-1=4
A[4] > B[2]
C[6] ← A[4]
C = 29 25 22 21 20 15
a=4-1=3
A[3] > B[2]
C[7] ← A[3]
C = 29 25 22 21 20 15 12
a=3-1=2
A[2] > B[2]
C[8] ← A[2]
C = 29 25 22 21 20 15 12 8
![Page 224: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/224.jpg)
224
a=2-1=1
A[1] < B[2]
C[9] ← B[2]
C = 29 25 22 21 20 15 12 8 6
b=2-1=1
A[1] > B[1]
C[10] ← A[1]
C = 29 25 22 21 20 15 12 8 6 5
a=1-1=0
Array pertama terdiri dari 7 elemen. Pada akhir proses ini
setelah indeks pada array pertama diturunkan ternyata
indeksnya menjadi sama dengan nol berarti semua
elemen array pertama sudah habis terlebih dahulu dan
masuk ke dalam array gabungan.
Elemen array kedua yang masih tersisa akan dimasukkan
ke dalam array gabungan.
b=2-1=1
C[11] ← B[1]
C = 29 25 22 21 20 15 12 8 6 5 4
![Page 225: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/225.jpg)
225
Dengan mengasumsikan terdapat dua buah array yang
masing-masing menyimpan sekumpulan data dalam
kondisi terurut naik, algoritma Merge Sort dapat
dituliskan dengan pseudocode berikut:
a=n
b=m
c=1
while (a>=1) or (b>=1) do
if A[a]>B[b] then
C[c]=A[a]
a=a+1
else
C[c]=B[b]
b=b+1
endif
c=c+1
endwhile
if b<1 then
for p=a downto 1 do
C[k]=A[p]
c=c+1
endfor
endif
if a<1 then
for p=b downto 1 do
![Page 226: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/226.jpg)
226
C[c]=B[p]
c=c+1
endfor
endif
2.Dua buah array yang masing-masing terurut turun akan
digabungkan menjadi terurut turun.
Contoh kasus:
Array pertama : 29 25 20 15 12 8 5
Array kedua : 22 21 6 4
Proses penggabungan dua buah array di atas menjadi
sebuah array yang terurut turun adalah sebagai berikut:
1 2 3 4 5 6 7 a=1 s/d n
A = 29 25 20 15 12 8 5
1 2 3 4 b=1 s/d m
B = 22 21 6 4
C = c=1 s/d n+m
A[1] > B[1]
![Page 227: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/227.jpg)
227
C[1] ← A[1]
C = 29
a=1+1=2
A[2] > B[1]
C[2] ← A[2]
C = 29 25
a=2+1=3
A[3] < B[1]
C[3] ← B[1]
C = 29 25 22
b=1+1=2
A[3] < B[2]
C[4] ← B[2]
C = 29 25 22 21
b=2+1=3
A[3] > B[3]
C[5] ← A[3]
C = 29 25 22 21 20
a=3+1=4
![Page 228: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/228.jpg)
228
A[4] > B[3]
C[6] ← A[4]
C = 29 25 22 21 20 15
a=4+1=5
A[5] > B[3]
C[7] ← A[5]
C = 29 25 22 21 20 15 12
a=5+1=6
A[6] > B[3]
C[8] ← A[6]
C = 29 25 22 21 20 15 12 8
a=6+1=7
A[7] < B[3]
C[9] ← B[3]
C = 29 25 22 21 20 15 12 8 6
b=3+1=4
A[7] > B[3]
C[9] ← A[7]
C = 29 25 22 21 20 15 12 8 6 5
a=7+1=8
![Page 229: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/229.jpg)
229
Array pertama terdiri dari 7 elemen. Pada akhir proses ini
setelah indeks pada array pertama dinaikkan ternyata
indeksnya telah melampaui ukuran array pertama yang
sesungguhnya berarti semua elemen array pertama sudah
habis terlebih dahulu dan masuk ke dalam array
gabungan.
a>7 artinya a>n
Elemen array kedua yang masih tersisa akan dimasukkan
ke dalam array gabungan.
b=3+1=4
C[11] ← B[4]
C = 29 25 22 21 20 15 12 8 6 5 4
Dengan mengasumsikan terdapat dua buah array yang
masing-masing menyimpan sekumpulan data dalam
kondisi terurut turun, algoritma Merge Sort dapat
dituliskan dengan pseudocode berikut:
a=1
b=1
c=1
![Page 230: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/230.jpg)
230
while (a<=n) or (b<=m) do
if A[a]>B[b] then
C[c]=A[a]
a=a+1
else
C[c]=B[b]
b=b+1
endif
c=c+1
endwhile
if b>m then
for p=a to n do
C[c]=A[p]
c=c+1
endfor
endif
if a>n then
for p=b to m do
C[c]=B[p]
c=c+1
endfor
endif
8.5 Latihan 1.Buatlah program untuk mengurutkan array yang terurut
![Page 231: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/231.jpg)
231
naik menjadi terurut turun dan sebaliknya array yang
terurut turun menjadi terurut naik.
2.Buatlah program untuk mencari median dari n buah
data.
3.Buatlah program menggabungkan dua buah array.
Array pertama adalah satu yang telah terurut secara
menurun sedangkan array kedua adalah dua yang telah
terurut secara menaik menjadi array tiga yang terurut
secara menaik.
Misal:
satu : 55 43 37 23 19 13 7
dua : 3 9 13 22 39 41 47
tiga : 3 7 9 13 13 19 22 23 37 39 41
43 47 55
3.Diberikan sebuah matriks berukuran (n x m). Buatlah
program untuk mengurutkan elemen matriks tersebut.
Program yang dibuat harus dapat menawarkan kepada
pengguna apakah akan mengurutkan secara menaik
atau menurun.
![Page 232: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/232.jpg)
232
Bab 9
Searching
Tujuan pembelajaran umum:
1. memahami algoritma dalam metode sequential
search
2. memahami algoritma dalam metode binary search
Dalam kehidupan sehari-hari kita sering melakukan
pencarian (searching) data dari sejumlah data yang ada
untuk menemukan informasi yang dibutuhkan. Dalam
bab ini akan dibahas metode pencarian data dalam suatu
array, baik pada array yang sudah terurut maupun belum
terurut. Metode pencarian yang akan digunakan adalah:
![Page 233: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/233.jpg)
233
1.Sequential search
2.Binary search
9.1 Metode Sequential Search Metode Sequential Search atau disebut pencarian
beruntun dapat digunakan untuk melakukan pencarian
data baik pada array yang sudah terurut maupun yang
belum terurut. Proses yang terjadi pada metode pencarian
ini 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-masing
data di dalam array.
a. Jika data yang dicari tidak ditemukan maka semua
data atau elemen array dibandingkan sampai selesai.
b. Jika data yang dicari ditemukan maka perbandingan
akan dihentikan.
9.1.1 Pencarian Pada Array Belum Terurut Contoh kasus:
Terdapat 6 buah data yang tersimpan dalam array.
![Page 234: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/234.jpg)
234
8 7 5 6 10 4
a. Dilakukan pencarian apakah dalam array tersebut
terdapat data yang bernilai 5.
1 2 3 4 5 6 i = 1 s/d n
A = 8 7 5 6 10 4
x=5
ketemu ← false
i=1
A[1] <> x {ketemu ← false}
i=1+1=2
A[2] <> x {ketemu ← false}
i=2+1=3
A[3] = x {ketemu ← true}
Hasil dari pencarian data bernilai 5 ditemukan pada posisi
data ke-3.
b. Dilakukan pencarian apakah dalam array tersebut
![Page 235: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/235.jpg)
235
terdapat data yang bernilai 11.
1 2 3 4 5 6 i = 1 s/d n
A = 8 7 5 6 10 4
x=11
ketemu ← false
i=1
A[1] <> x {ketemu ← false}
i=1+1=2
A[2] <> x {ketemu ← false}
i=2+1=3
A[3] <> x {ketemu ← false}
i=3+1=4
A[4] <> x {ketemu ← false}
i=4+1=5
A[5] <> x {ketemu ← false}
i=5+1=6
![Page 236: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/236.jpg)
236
A[6] <> x {ketemu ← false}
i=6+1=7
i > 6 berarti i > n, semua data sudah diperbandingkan
dengan nilai data yang dicari dan hasil dari pencarian data
bernilai 11 tidak ditemukan.
Algoritma metode Sequential Search untuk data yang
belum terurut:
for i=1 to n do
input(A[i])
endfor
input(x)
ketemu=false {inisialisasi belum
ditemukan}
i=1
while (ketemu=false) and (i<=n) do
if A[i]=x then
ketemu=true {menghentikan proses
pencarian}
posisi=i
else i=i+1 {maju ke elemen
berikutnya}
![Page 237: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/237.jpg)
237
endif
endwhile
if ketemu=false then write (“Tidak
ketemu”)
else
write (“Data ditemukan”)
output (posisi)
endif
9.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 terurut
naik.
2 7 11 15 17 18
Dilakukan pencarian apakah terdapat data bernilai 8 pada
array tersebut.
1 2 3 4 5 6 i = 1 s/d n
A = 2 7 11 15 17 18
![Page 238: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/238.jpg)
238
x=8
ketemu ← false
i=1
A[1] <> x {ketemu ← false dan A[1] < x}
i=1+1=2
A[2] <> x {ketemu ← false dan A[2] < x }
i=2+1=3
A[3] <> x {ketemu ← false dan A[3] > x }
Pencarian hanya dilakukan dengan membandingkan nilai
data yang dicari dengan data ke-1 sampai dengan data ke-
3 pada array karena data ke-3 ternyata nilainya sudah
lebih besar daripada nilai data yang dicari, sehingga tidak
perlu dibandingkan dengan data berikutnya dalam array.
Kesimpulannya adalah data 11 tidak terdapat dalam array.
Sebelum dilakukan pencarian, pada algoritma di bawah
ini array diasumsikan sudah diurutkan menaik terlebih
dahulu .
input(x)
![Page 239: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/239.jpg)
239
ketemu=false {inisialisasi belum
ditemukan}
i=1
while (ketemu=false)and(i<=n)and(A[i]<=x)
do
if A[i]=x then
ketemu=true {menghentikan proses
pencarian}
posisi=i
else i=i+1 {maju ke elemen berikutnya}
endif
endwhile
if ketemu=false then write (“Tidak
ketemu”)
else
write (“Data ditemukan”)
output (posisi)
endif
10.1.2.2 Pencarian Pada Array Terurut Turun
Contoh kasus:
Di dalam suatu array tersimpan 6 buah data yang terurut
turun.
18 17 15 11 7 2
Dilakukan pencarian apakah terdapat data bernilai 16
![Page 240: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/240.jpg)
240
pada array tersebut.
1 2 3 4 5 6 i = 1 s/d n
A = 18 17 15 11 7 2
x=16
ketemu ← false
i=1
A[1] <> x {ketemu ← false dan A[1] > x}
i=1+1=2
A[2] <> x {ketemu ← false dan A[2] > x }
i=2+1=3
A[3] <> x {ketemu ← false dan A[3] < x }
Pencarian hanya dilakukan dengan membandingkan nilai
data yang dicari dengan data ke-1 sampai dengan data ke-
3 pada array karena data ke-3 ternyata nilainya sudah
lebih kecil daripada nilai data yang dicari, sehingga tidak
perlu dibandingkan dengan data berikutnya dalam array.
Kesimpulannya adalah data 16 tidak terdapat dalam array.
![Page 241: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/241.jpg)
241
Sebelum dilakukan pencarian, pada algoritma di bawah
ini array diasumsikan sudah diurutkan menurun terlebih
dahulu.
input(x)
ketemu=false {inisialisasi belum
ditemukan}
i=1
while (ketemu=false) and (i<=n) and
(A[i]>=x) do
if A[i]=x then
ketemu=true {menghentikan proses
pencarian}
posisi=i
else i=i+1 {maju ke elemen berikutnya}
endif
endwhile
if ketemu=false then write (“Tidak
ketemu”)
else
write (“Data ditemukan”)
output (posisi)
endif
![Page 242: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/242.jpg)
242
9.2 Metode Binary Search Metode Binary Search atau sering pula dinamakan
pencarian biner, hanya digunakan untuk pencarian data
pada array yang sudah terurut.
9.2.1 Pencarian Pada Array Terurut Naik Proses yang terjadi pada pencarian dengan metode ini
adalah 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 posisi
tengah dapat ditentukan dengan tengah=(n div
2)+1.
5.Jika nilai elemen tengah sama dengan data yang dicari
maka pencarian selesai.
6.Jika nilai elemen tengah tidak sama dengan data yang
dicari maka:
a. Jika nilai elemen tengah lebih besar daripada data
yang dicari maka pencarian dilakukan pada setengah
array pertama.
b. Jika nilai elemen tengah lebih kecil daripada data
yang dicari maka pencarian dilakukan pada setengah
![Page 243: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/243.jpg)
243
array berikutnya.
Contoh menentukan elemen tengah:
1. Di dalam suatu array tersimpan 6 buah data yang
terurut naik.
1 2 3 4 5 6 i = 1 s/d n
A = 2 7 11 17 17 18
tengah=(n div 2)+1=(6 div 2)+1=4
elemen_tengah=A[tengah]=A[4]=17
Untuk array yang banyaknya data adalah genap maka
posisi tengahnya tidak tepat berada di tengah.
2. Di dalam suatu array tersimpan 7 buah data yang
terurut naik.
1 2 3 4 5 6 7 i = 1 s/d n
A = 5 7 8 11 12 14 15
tengah=(n div 2)+1=(7 div 2)+1=4
elemen_tengah=A[tengah]=A[4]=11
Untuk array yang banyaknya data adalah ganjil maka
![Page 244: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/244.jpg)
244
posisi tengahnya dapat tepat berada di tengah.
Contoh kasus:
Di dalam suatu array tersimpan 6 buah data yang terurut
naik.
1 2 3 4 5 6 i = 1 s/d n
A = 2 7 11 17 17 18
Sebelum dilakukan pencarian, pada algoritma Binary
Search di bawah ini, array A diasumsikan sudah
diurutkan menaik terlebih dahulu.
input(x)
t=(n div 2)+1
et=A[t]
ketemu=false
if x=et then
ketemu=true
posisi=t
else
if x<et then
i=1
while
(ketemu=false)and(i<t)and(A[i]<=x) do
if A[i]=x then
![Page 245: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/245.jpg)
245
ketemu=true
posisi=i
else i=i+1
endif
endwhile
else
i=t+1
while
(ketemu=false)and(i<=n)and(A[i]<=x) do
if A[i]=x then
ketemu=true
posisi=i
else i=i+1
endif
endwhile
endif
endif
if ketemu=false then write (“Data tidak
ketemu”)
else
write (“Data ditemukan”)
output (posisi)
endif
9.2.2 Pencarian Pada Array Terurut Turun Proses yang terjadi pada pencarian dengan metode ini
adalah sebagai berikut:
![Page 246: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/246.jpg)
246
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 posisi
tengah dapat ditentukan dengan tengah=(n div
2)+1.
5. Jika nilai elemen tengah sama dengan data yang dicari
maka pencarian selesai.
6. Jika nilai elemen tengah tidak sama dengan data yang
dicari maka:
a. Jika nilai elemen tengah lebih besar daripada data
yang dicari maka pencarian dilakukan pada setengah
array kedua.
b. Jika nilai elemen tengah lebih kecil daripada data
yang dicari maka pencarian dilakukan pada setengah
array pertama.
Sebelum dilakukan pencarian, pada algoritma Binary
Search di bawah ini, array A diasumsikan sudah
diurutkan menurun terlebih dahulu.
input(x)
t=(n div 2)+1
et=A[t]
ketemu=false
![Page 247: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/247.jpg)
247
if x=et then
ketemu=true
posisi=t
else
if x<et then
i=t+1
while (ketemu=false)and(i<n)and(A[i]>=x)
do
if A[i]=x then
ketemu=true
posisi=i
else i=i+1
endif
endwhile
else
i=1
while (ketemu=false)and(i<t)and(A[i]>=x)
do
if A[i]=x then
ketemu=true
posisi=i
else i=i+1
endif
endwhile
endif
endif
if ketemu=false then write (“Data tidak
ketemu”)
else
write (“Data ditemukan”)
output (posisi)
endif
![Page 248: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/248.jpg)
248
9.3 Latihan 1.Misalkan diketahui suatu array dengan nama larik
sebagai berikut: 46 44 42 36 34 25 22 21 20 15 12 8 6 5 4
Tentukan berapa jumlah perbandingan yang diperlukan
untuk mencari data 22 pada array dengan menggunakan
metode:
a. Sequential search
b. Binary search
2.Buatlah algoritma untuk melakukan pencarian data
pada sebuah matriks berukuran (m x n) dengan
menggunakan metode:
a. Sequential search
b. Binary search
![Page 249: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/249.jpg)
249
Daftar Pustaka
1.Andre Dos Santos Lessa; Python Developer's
Handbook; Sams Publishing., 2001
2.David Harel; The Spirit of Computing; Second Edition,
Addison-Wesley Publishing Company, Inc., 1996
3.Manna, Z and Waldinger, R; The Logical Basis for
![Page 250: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/250.jpg)
250
Computer Programming; Addison-Wesley Publishing
Company, Inc., 1985
4.Mano, M.M and Kime, C.R; Logic and Computer
Design Fundamentals; Prentice Hall, Inc., 2000
5.Saara Baase; Computer Algorithms Introduction to
Design and Analysis; Addison-Wesley Publishing
Company, Inc., 1993
6.T.E Bailey; Program Design with Pseudocode; Brooks
Cole Publishing Company, 1983
7.Tim Alton and Mitch Chapman; Programming with
Python; Prima Tech., 1999
8.Thomas A. Reed; An Introduction Algorithm Design
and Structured Programming; Prentice Hall, Inc.,
1988
Profil Penulis
Penulis bernama Suwanto Raharjo, S.Si,
M.Kom. Lahir di Yogyakarta, 19 Juli
1975. Tahun 2000 menyelesaikan studi S-
1 Statistika Fakultas Matematika dan
![Page 251: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/251.jpg)
251
Ilmu Pengetahuan Alam Universitas Gadjah Mada dan
pada tahun 2002 menyelesaikan Program Pascasarjana
Magister Ilmu Komputer Universitas Gadjah Mada. Sejak
tahun 1998 aktif menjadi pembicara di seminar-seminar
nasional dan sebagai konsultan spesialisasi network
security dan open source programming. Mulai tahun 2000
menjadi dosen tidak tetap di STMIK AMIKOM
Yogyakarta, sedangkan sejak tahun 2003 menjadi dosen
tetap di Institut Sains dan Teknologi AKPRIND
Yogyakarta.
Penulis telah dianugerahi dua putera bernama Naufal
Rasendriya Apta Raharema dan Najwa Rashila Az-Zahra
Raharema
Buku-buku yang telah ditulis oleh penulis, yakni:
1.Keamanan Akses ke PostgreSQL melalui PHP
Menggunakan Apache Web Server di GNU/Linux.
2.Teori, Analisa dan Implementasi Jaringan Tanpa Disk
pada GNU/Linux.
3.Belajar C di GNU/Linux.
4.Struktur Data Menggunakan C di GNU/Linux.
5.Logika, Algoritma dan Implementasinya dalam Bahasa
Python di GNU/Linux
![Page 252: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/252.jpg)
252
6.Visual Downloader untuk Microcontroller AT89C2051
7.RDBMS dengan PostgreSQL di GNU/Linux
8.Struktur Data: Konsep dan Implementasinya dalam
bahasa C & Free Pascal di GNU/Linux
Sinopsis
Logika proposisional merupakan ilmu dasar
untuk mempelajari algoritma dan logika yang terkait di
dalamnya berperanan sangat penting dalam
pemrograman. Sedangkan algoritma mempunyai peranan
yang sangat penting juga dalam bidang teknik
![Page 253: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/253.jpg)
253
informatika pada umumnya dan bidang pemrograman
pada khususnya. Dengan Logika Informatika akan
membantu mahasiswa mengembangkan daya penalaran
atau kerangka berpikir yang sistematis dalam memahami
masalah dan membuat perencanaan atau konsep
pemecahan masalah yang lebih baik sehingga dapat
menghasilkan yang tepat pula.
Implementasi Logika dan Algoritma dapat
dituangkan ke dalam beberapa bahasa pemrograman.
Buku ini menjelaskan konsep logika dasar dan
perancangan algoritma yang baik. Pada buku ini
banyak diberikan contoh kasus disertai alternatif solusi
penyelesaiannya dengan harapan pembaca dapat
mengembangkan sesuai dengan kreatifitas masing-
masing. Demikian pula dengan contoh-contoh latihan
diharapkan dapat membantu pembaca untuk lebih
memahami algoritma. Buku ini sangat cocok dan
berguna bagi mahasiswa yang sedang menempuh mata
kuliah Logika Informatika, Logika dan Algoritma,
Algoritma dan Pemrograman, Pemograman Komputer I
serta semua kalangan yang terarik mempelajari bidang
pemrograman.
![Page 254: Bukualgo eBook Suwanto](https://reader034.vdocuments.net/reader034/viewer/2022052315/5571f83549795991698ce415/html5/thumbnails/254.jpg)
254