J».
i a SS
LeoRITMA
EM ROC PASCAL Jan alDaftar Isi
Apakak Algoritma dan Pemrograman Itu? ...
Masalah
12 Algoritm:
1.3 Sejarah Algoritma
4.4. Program dan Pemrograman ..
15 Belajar Memprogram dan Belajar Bahasa Pemrograman
1.6 Notasi Algoritmik
1.7 Pemrograman Prosedural .
2
24
22
3. Notasi Algoritmik emeeene
31 Pseudo-code .. .
32 Struktur Teks Algoritma..
324 Bagian Judul .. :
3.2.2 Bagian Deklarasi
3.2.3 Bagian Algoritma ..
Daftarist
25
25
26
26
28
31
asrees33
34
4
4a
42
43
44
45
46
5
5a
52
53
6.
61
62
63
65
66
67
68
69
Translasi Notasi Algoritmik ke Bahasa Pascal dan C....
Kompilator Bahasa Pascal dan C...
Tipe, Operator, dan Ekspresi.
4aa
412
413
414
415
Pengisian Nilai ke dalam Nama Peubah
4.5.11 Pengisian Nilai Secara Langsung ..
45.12, Pembacaau.
45.2 Ekspresi
4.5.2.1 Ekspresi Aritmetik.
4.5.2.2 Ekspresi Relasional..
45.2.3 Ekspresi String
4.5.3 Menuliskan Nilai ke Piranti Keluaran.
‘Tabel Trauslasi Notasi Algoritmik Pengisian Nilai, Pembacaan,
dan Penulisan ke dalam Notasi Bahasa Pascal dan C
Pemilihan.....-.
Menganalisis Kasus.
86
mt
2
113
6
47
123,
125,
130
ay — Agora dan Pemrograman6.10 Tabel Translasi Notasi Algoritmik Struktur Pemilihan
ke dalam Notasi Pascal dan C.
7 Pengulangan .......
74 Struktur Pengulangan..
7.2 Pernyataan FOR.
7-3 Pernyataan WHILE.
7-4 Pernyataan REPEAT.
7-5 WHILE atau REPEAT?.
7.6 Tabel Translasi Notasi Algoritmik Struktur
ke Notasi Pascal dan C
7-7 Membaca/Menulis dari/ke Arsip ......
8. Contoh-contoh Pemecahan Masalah I.
9. Pengantar Pemrograman Modular.
9.1 Contoh Pemrograman Modular..
9.2 Keuntungan Pemrograman Modular...
10. Prosedur. oe
10.1 Pendefinisian Prosedur.
10.2 Pemanggilan Prosedur..
10.3 Nama Global, Nama Lokal, dan Lingkup .
10.4 Parameter.
10.4.
10.4.2
10.4.3 Parameter Masukan/Keluaran..
10.4.4 Program dengan Prosedur atau Tanpa Prosedur?
10.4.5 Prosedur dengan Parameter atau Tanpa Parameter..
10.4.6 Parameter Masukan atau Parameter Kelvaran
10.5 Translasi Notasi Algoritmik Prosedur ke dalam Notasi
Bahasa Paseal dan C.. -
a1, Fuugsi
at
m2
413 Pemanggilan Fungs
314 Prosedur atau Fungsi?
415 Contoh-coutoh Tambahan.
1.6 Translasi Notasi Algoritmik untuk Fungsi ke dalam Notasi
Bahasa Pascal dan Bahasa C.
155
156
157
163
168
172
178
387
195
236
239
242.
249
249
249
250
267
267
268
274
280
282
28512,
wa
122
123
12.4
125
12.6
12.7
12.8
14.
14.
14.2
14.3
144
145
15.
151
15.2
153
15.4
15.6
15.7
Larik
Apakah Larik Itu?
Mendeklarasikan Larik..
Cara Mengacu Elemen Lari
Pemrosesan Larik. ,
12.4.1 Ukuran Efektif Larik.
12.4.2 Menginisialisasi Larik.
12.4.3 Mengisi Elemen Larik dengan Pembacaan. 303
12.4.4 Mencetak Elemen-elemen Larik.. 305
12.4.5 Menghitung Nilai Rata-rata.. 305
12.4.6 Kapan Menggunakan Larik? 306
12.4.7 Mencari Nilai Maksimum Larik... 308
12.4.8 Mencari Nilai Minimum Larik. 313
12.4.9 Menyalin Latik sone nnnnnene 315
12.4.10 Menguji Kesamaan Dua Buah Larik
Larik Bertipe Terstruktur
Bekerja dengan Dua Buah Larik..
‘Translasi Notasi Algoritmik Larik ke dalam Notasi
Bahasa Pascal dan Bahasa C. 322
String sebagai Larik Karakter.. 333
Contoh-contoh Pemecahan Masalah Il... 341
Matriks.. sees
Definisi Matriks..
Pendeklarasian Matriks.
Pemrosesan Matriks
‘Translasi Notasi Algoritmik Matriks ke dalam Bahasa
PASCAL dan Bahasa C.. 372
Contoh-contoh Tambahan. ~ 376
Algoritma Penearian .. 395
Spesifikasi Masalah Pencarian 396
Algoritma Pencarian Beruntun 397
Algoritma Pencarian Bagidua.. senna 410
Pencarian pada Larik Terstruktur. 416
Pakai yang Mana? Algoritma Pencarian Beruntun
atau Pencarian Bagidua? 419
Pencarian pada Larik yang’ a9
Algoritma Pencarian Beruntun dan Pencarian
‘Bagidua dalam Bahasa PASCAL dan Bahasa C 420
Tigra Pmograrion16. Algoritma Pengurutan, 427
16.1 Masalah Pengurutan.. 428
16.2 Algoritma Pengurutan .. 429
16.3 Algoritma Pengurutan Apung..... 431
16.4 Algoritma Pengurutan Seleksi 436
16.5 Algoritma Pengurutan Sisip.. 447
16.6 Algoritma Pengurutan Shell... 451
16.7 Penggabungan Dua Buah Lark Terurut 454
16.8 Pengurutan pada Larik Terstruktur 457
16.9 Algoritma Pengurutan dalam Bahasa PASCAL dan 458
17. Pemrosesan Arsip Beruntun 467
17.1 Definisi Arsip Beruntun.. 468
172. Pendeklarasian Arsip didalam Algoritma 469
17.3 Fungsi Pustaka untuk Arsip Beruntun 47.
17.4 Membuat Arsip Beruntun, 475
17.5 Membaca Arsip Beruntun. 476
17.6 Contoh Kasus Pengelolaan Data Mahasiswa 481
17.7 Menyalin Arsip . 487
17.8 Menggabung Dua Buah Arsip .. 489
17.9 Pemutakhiran Arsip 493,
17.10 Arsip Beruntun dalam 497
47.11 Arsip sebagai Parameter Prosedur 505
17.12 Arsip Teks. —
18.
18.1
38.2 Definisi Rekursif.
183
18.4. Rekursif dengan List Berkait = 543,
18.5 Bagaimanakah Program Rekursif Bekerja? 551
38.6 Kapan Tidak Menggunakan Rekursif? 559
18.7. Menghilangkan Rekursifitas. 561
18.8. Rekursif dalam Bahasa PASCAL dan C. 569
49. Contoh-contoh Pemeeahan Masala IT sss
Daftar Pustaka ee 501a
Apakah Algoritma dan
Pemrograman Itu?
Pemrograman sudah menjadi kegiatan yang sanget penting di era eknologi
informasi. Program yang berjalan di komputer desktop, laptop, telepon
genggam, PDA, dan sebagainya, tidak tercipta begitu saja, tetapi ditulis
melalui proses analisis dan perancangan yang cermat. Sebuah program
komputer pada dasarnya mengimplementasikan suatu algoritma. Dengan
kata lain, algoritma adalah ide dibalik program komputer apa pun, Tetapi,
tahukah Anda apakah algoritma itu? Apakah program? Bab awal ini akan
mengantarkan pembaca kepada pemahaman yang baik mengenai algoritma
dan pemrograman. Beberapa ilustrasi dalam kehidupan schari-hari
diberikan untuk lebih memperjelas pemahaman kedua istilah ini ini, Pada
bab-bab selanjutnya pembaca akan mempelajari lebih mendalam dasar-
dasar menulis algoritma dan pemrograman.
1.1 Masalah
Manusia. hidup dengan segala masalah yang melingkupinya. Hidup pada
@asarnya adalah serangkaian aktivitas menyelesaikan masala. ‘Dalam
Bahasa Indonesia, istiah lain yang sepadan pengertiannya dengan kata
“masalah” adalah “persoalan” (problem). Di dalam buku kita tidak
membedakan makna kedua istilah ini, oleh Karena itu’ kita akan
menggunakan kedua istilah ini secara bergantian, kadang-kadang kita sebut
‘masalah kadang-kadang kita namakan persoalan, Menurut [NEAQ6],
masalah adalah pertanyaan atau tugas yang kita cari jawabannya.
“Bab 1—Apakah Aigorima dan Pemrograman tii? zgContoh beberapa masalah dalam kehidupan sehari-hari misalnya:
1. Diberikan setumpuk kartu pasien di sebuah tempat praktek dokter yang
tersusun acak. Setiap kartu mempunyai nomor registrasi pasien.
Bagaimana mengurutkan kartu-kartu tadi berdasarkan nomor urut
pasien sehingga tersusun dengan nomor kecil di atas dan nomor besar di
bawah (Gambar 1.1)? Jawaban dari masalah ini adalah barisan kartu
pasien yang sudah terurut dari kecil ke besar.
2. Diberikan sebuah daftar yang berisi nama-nama mahasiswa baru yang
diterima di sebuah perguruan tinggi. Daftar tersebut hanya berisi nomor
peserta ujian yang diterima. Carilah apakah seorang calon mahasiswa
‘baru yang nomor peserta ujiannya diketahui terdapat di dalam daftar
tersebut? Jawaban dari masalah ini adalah “ya” jika nomor tersebut
ditemukan di dalam daftar, atau “tidak’ jika tidak terdapat di dalamnya,
3. Diberikan daftar nama pejabat baru beserta jumlah kekayaannya.
Tentukan pejabat mana yang mempunyai kekayaan paling besar?
Jawaban dari masalah ini adalah nama pejabat yang mempunyai
kekayaan paling besar.
‘Tentu masih banyak lagi masalah yang muncul di bidang pekerjaan
seseorang. Seorang pustakawan mempunyai masalah dalam mengelola
daftar buku yang dipinjam, seorang statistikawan mempunyai masalah
‘mengolah hasil jajak pendapat, seorang mahasiswa tingkat akhir mempunyai
masalah dalam menganalisis hasil eksperimen, dan sebagainya.
Gambar 4.1. Mengurutkan kartu, masalah seharihad yang banyak kita temui (Sumber:
www Infodesign.com.au).
Beberapa masalah yang muncul di dalam dunia nyata banyak memiliki
kemiripan substansi. Misalnya masalah mengurutkan tumpukan kartu yang
tersusun acak secara substansi sama dengan masalah mengurutkan
sekumpulan nilai ujian agar terurut menaik atau menurun. Begitu pula
masalah meneari nama pejabat yang mempunyai kekayaan terbesar secara
substansi sama dengan masalah mencari nama siswa yang meraih nilai wjian
nasional tertinggi. Oleh karena itu, secara generik kita sering
aay igri a Perro granmendeksripsikan masalah-masalah yang muncul di dunia nyata dengan
‘menggunakan beberapa ukuran (parameter), misalnya sebagai berikut:
1. [Masalah pengurutan] Diberikan sebuah senarai (list) S yang terdiri dari
nbuab nilai bilangan bulat. Bagaimana mengurutkan n buah nilai
tersebut sehingga terurut secara menaik?
2, (Masala pencarian} Tentukan apakah suatu nilai x terdapat di dalam
sebuah senarai S yang beririn buah bilangan bulat!
3. (Masalah mencari elemen terbesar] Diberikan senarai (list) S yang
terdiri dari n buah nilai bilangan bulat. Carilah elemen terbesar di
dalam senarai tersebut,
Setiap masalah umumnya mengandung satu atau lebih parameter yang
dinyatakan di dalam masalah tersebut. Misalnya pada contoh masalah
pengurutan di atas, $ dan n adalah parameter masalah. Parameter ini di
dalam peruyataan masalah belum diberi nilai spesifik, dan semua nilai
paramete? merupakan masukan (input) untuk masalah tersebut. Setiap
pemberian nilai untuk semua parameter masalah dinamakan instansiasi
masalah (instance of a problem). Jawaban tethadap instansiasi masalah
disebut solusi [NEA96].
Sebagai contoh, instansiasi masalah untuk masalah pengurutan adalah
S=[15,4,8,11,2,10,19, 9 n=7
dan solusinya adalah barisan nilai terurut S = [2, 4, 8, 10, 11, 15, 19]. Gambar
1.2 memperiihatkan keadaan awal S dan keadaan akhir S sesudah diurutkan.
Sebelum terurut:
s]2]4]e}i}i] 15] 19
yong belum torurut(stas) dan yang sudah terurut menaik(bawah).
1.2. Algoritma
Untuk masalah dengan instansiasi yang kecil, kita dapat menemukan
solusinya dengan mudah dan cepat. Bagaimana kalau instansiasi masalah
berukuran besar? Misalnya pada masalah pengurutan, jika n = 1000 jelas,
tidak mudah mengurutkan data sebanyak itu. Oleh Karena itu, kita perlu
Bab 1 ~ Apakah Aigoritma dan Pemrograman iu?menuliskan prosedur yang berisi langkah-langkah pengurutan sehingga
prosedur tersebut dapat ‘dijalankan’ oleh sebuah pemroses (komputer,
manusia, robot, dan sebagainya) untuk menghasilkan solusi setiap
instansiasi masalah pengurutan. Kita katakan langkah-langkah pengurutan
itu untuk memecehkan’masalah. Prosedur yang berisi langkah-langkah
penyelesaian masalah disebut algoritma.
Algoritma adalah urutan Jangkab-langkah untuk memecahkan suatu
masalah,
‘Terdapat beberapa definisi lain dari algoritma - tetapi pada prinsipnya
senada dengan definisi yang diungkapkan di atas ~ yang kita kutip dari
berbagai literatur, antara lain:
Algoritma adalah deretan langkah-langkah komputasi yang
mentransformasikan data masukan menjadi keluaran [COR92].
Algoritma adalah deretan instruksi yang jelas untuk memecabkan
masalah, yaitu untuk memperoleh keluaran yang diinginkan dari suatu
masukan dalam jumlah waktu yang terbatas. (LEVo3].
Algoritma adalah prosedur komputasi yang terdefinisi dengan baik
yang menggunakan beberapa nilai sebagai masukan dan menghasilkan
beberapa nilai yang disebut keluaran. Jadi, algoritma adalah deretan
Jangkah komputasi yang mentransformasikan masukan menjadi keluran
{CORS9].
Mari kita tinjau kembali masalah mengurutkan Kartu. Jika kita mempunyai
setumpuk kartu yang berjumlah n = 50 buah, maka secara tradisional
Tangkah-langkah yang biasa dilakukan orang kalau mengurutkan Kartu
adalah dengan mencari kartu bernomor terkecil lebih dabulu, lalu letakkan
pada posisi pertama (atas). Selanjutnya, cari kartu dengan nomor terkecil
berikutnya, alu letakkan di bawah kartu pertama. Begitnlah, kita mencari
Kartu dengan nomor terkecil ketiga, keempat, dan seterusnya, sampai hanya
tersisa satu kartu (kalau sudah tersisa satn kartu maka tidak perlu diurutkan
lagi), dan kita memperoleh tumpukan kartu yang seluruh kartunya sudah
terurut dari nomor kecil ke besar. Langkah-langkah pengurutan 50 buah
kartu dapat kita tuliskan sebagai berikut (setiap langkah diberi nomor urut 1,
2, 3, dan seterusnya):
1. Cari kartu dengan nomor terkecil
2. Tempatkan kartu tersebut pada posisi paling atas
3. Cari kartu dengan nomor terkecil berikutnya
|. Tempatkau karrtu tersebut di bawah kartu pertama
5. Cari kartu dengau uomor terkecil berikutnya
6. Tempatkan kartu tersebut di bawah kartu kedua
aa ‘Aigoriima dan Pemrogramanxx, Cari kartu dengan nomor terkecil berikutnya
xxx.Tempatkan kartu tersebut di bawah kartu ke-48,
(tersisa satu kartu lagi, tetapi tidak perln diurutkan lagi)
Perhatikanlah bahwa sebenaruya di dalam rangkaian langkah-langkah di
atas terjadi pengulangan dua langkah penting, yaitu (i) cari kartu dengan
nomor terkecil, dan (ii) tempatkan kartu tersebut pada posisi yang tepat.
Kedua langkah utama ini diulang berkali-kali sampai hanya tersisa sebanyak
1 Kartu saja (berarti jumlah pengulangan adalah sebanyak n = 50 - 1 = 49
kali). Maka, secara garis besar kita dapat menuliskan langkah-langkah
mengurutkan n buah kartu sebagai berikut:
1. Cari Kartu dengan nomor terkecil di antara kartu yang tersisa.
2, Tempatkan kartu tersebut pada posisi yaug tepat.
3. Ulangi kembali dari langkah 1 sebanyak n ~ 1 kali.
Langkah-langkah yang kita tuliskan di atas itulah yang disebut algoritma,
Dikatakan bahwa kita telah menspesifikasikan algoritma pengurutan.
Perhatikan bahwa langkah 1 dan 2 masih perlu lebih dirinci lagi. Bagaimana
langkah-langkah mencari nomor terkecil? Bagaimana menempatkan nilai
terkecil pada posisi yang scharusnya, apakah memerlukan proses pertukaran’
tempat dengan kartu yang lain? Hal ini akan kita bahasa di dalam Bab 2 nanti
Dalam kebidupan sehari-hari kita banyak menemukan langkah-langkab
pengerjaan sesuatu meskipun kita tidak menyebutnya sebagai algoritma:
“Itu bukan algoritma, tapi cara melakukan sesuatu’. Contohnya resep
membuat masakan (terdapat di dalam tabloid, majalah, atau buku resep
masakan), panduan praktikum (terdapat di dalam buku modul praktikum),
cara menggunting pola pakaian (terdapat di dalam majalah wanita),
langkah-langkah mengaktifkan voucher pulsa ponsel (terdapat di belakang
kartu prabayar), cara mencari saluran (ditulis di buku panduan TV), cara
merakit barang elektronik, dan sebagainya.
Contoh langkah-langkah pengerjaan di dalam resep masakan:
1. Tuangkan satu gelas santan ke dalam wajan.
2. Masukkan bumbu-bumbu yang sudah dihaluskan, aduk hingga merata.
3. Tambahkan garam, merica, dan kecap asin.
4. Masak dengan api sedang sambil diaduk.
Contoh langkah-langkah pengerjaan di dalam praktikum kimia:
1. Siapkan tabung reaksi ukuran 100 ce
2. Teteskan 50 cc larutan H.So, ke dalam tabung.
3. Campurkan 20 ce larutan NaOH ke dalamnya, aduk hingga tereampur
merata.
Contoh langkah-langkah pengisian pulsa kartu prabayar:
1. Tekan #888 lalu tombol ( Pr
Parograman Wu?2, Tekan “2” untuk mulai memasukkan pulsa.
3. Masukkan 14 digit kartu prabayar
4. Akhiri dengan menekan tombol, #
Meskipun kita tidak menyebntkan langkah-langkah pengerjaan itu sebagai
algoritma, tetapi dalam konteks ini semua di atas adalah algoritma.
Sekarang Anda sudah mulai mengerti bahwa sebuah algoritma mengerjakan
sebuah proses. Secara umum, benda yang mengerjakan proses disebut
pemroses (processor). Pemroses tersebut dapat berupa manusia, komputer,
robot, atau alat-alat mekanik/elektronik lainnya. Pemroses melakukan suatu
proses dengan melaksanakan atau mengeksekusi algoritma yang
menjabarkan proses tersebut. Melaksanakan algoritma berarti mengerjakan
langkah- langkah di dalam algoritma tersebut. Ibu-ibu yang mencoba resep
suatu masakan akan membaca satu per satu langkah pembuatannya, lalu ia
mengerjakan proses sesuai yang ia baca. >
Setiap masalah mempunyai algoritma pemecahannya. Tugas kita sebagai
pemecah masalah (problem solver) untuk mendeskripsikan Iangkah-langkah
penyelesaiannya, Di bawah ini diberikan contoh masalah sederhana dalam
kehidupan sehari-hari dan algoritma pemecahanuya.
1) Misalkan ada dua buah ember atau bejana yang berisi air (larutan) yang
berwarna, sebut ember A dan B. Ember A berisi air yang berwarna merah,
sedangkan ember B berisi air berwarna birn (Gambar 1.3). Volume air di
dalam kedua ember sama. Bagaimana mempertukarkan isi kedua ember
itu sedemikian sehingga nantinya ember A akan berisi air berwarna biru
dan ember B berisi air berwarna merah.
Ember A
Kita tidak bisa langsung mempertukarkan air di dalam kedua ember tadi
begitu saja sebab cara seperti itu menyebabkan terjadinya percampuran,
Agar bisa dipertukarkan, kita memerlukan sebuah ember tambahan sebagai
tempat -penampungan sementara. Misalkan tambahan tersebut adalah
ember C. Dengan menggunakan ember C ini, algoritma mempertukarkan isi
kedua buah ember adalah seperti algoritma berikut ini: