dasar-dasar · diberikan kepada algoritma sebelum algoritma mulai bekerja. 4. algoritma mempunyai...

25
www.mugianet.com - 1 - MULTINET GLOBAL INFORMASI ( M U G I A ) Situs Informasi, Bisnis dan Iklan e-book free for visitor website mugianet.com DASAR-DASAR A L G O R I T M A e-book ver 1.0 Diterbitkan Oleh : MULTINET GLOBAL INFORMASI www.mugianet.com Penulis : FAJAR NUGRAHA, ST. e-mail : [email protected] Copyright © 2009, MULTINET GLOBAL INFORMASI www.mugianet.com - 2 - D A F T A R I S I DAFTAR ISI 1. Konsep Dasar Algoritma 1.1. Pengertian Algoritma 1.2. Dasar-Dasar Algoritma 1.2.1. Proses, Instruksi Dan Aksi 1.2.2. Struktur Dasar Algoritma 1.3. Aturan Penulisan Algoritma 1.3.1. Kepala Algoritma 1.3.2. Deklarasi 1.3.3. Deskripsi 1.4. Tipe Data Algoritma 1.4.1. Tipe 1.4.1.1. Tipe Dasar 1.4.1.2. Tipe Bentukan 1.4.2. Nama 1.4.3. Nilai 1.4.3.1. Pengisian Nilai Ke Dalam Nama Peubah 1.4.3.2. Ekspresi 1.4.3.3. Menulis Nilai Ke Piranti 1.5. Contoh Pembuatan Algoritma 2. Struktur Algoritma 2.1. Runtunan 2.1.1. Pengaruh Urutan Instruksi 2.1.2. Contoh Algoritma Runtunan 2.2. Pemilihan 2.2.1. Satu Kasus 2.2.2. Dua Kasus 2.2.3. Tiga Kasus 2.2.4. Struktur Case 2.3. Pengulangan 2.3.1. Struktur While – Do 2.3.2. Struktur Repeat – Until 2.3.3. Struktur For

Upload: others

Post on 19-Nov-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DASAR-DASAR · diberikan kepada algoritma sebelum algoritma mulai bekerja. 4. Algoritma mempunyai nol atau lebih keluaran (output). Keluaran ialah besaran yang memiliki hubungan dengan

www.mugianet.com - 1 -

MULTINET GLOBAL INFORMASI ( M U G I A )

Situs Informasi, Bisnis dan Iklan

e-book free for visitor website mugianet.com

DASAR-DASAR A L G O R I T M A

e-book ver 1.0

Diterbitkan Oleh : MULTINET GLOBAL INFORMASI

www.mugianet.com

Penulis : FAJAR NUGRAHA, ST.

e-mail : [email protected]

Copyright © 2009, MULTINET GLOBAL INFORMASI

www.mugianet.com - 2 -

D A F T A R I S I

DAFTAR ISI 1. Konsep Dasar Algoritma 1.1. Pengertian Algoritma 1.2. Dasar-Dasar Algoritma 1.2.1. Proses, Instruksi Dan Aksi 1.2.2. Struktur Dasar Algoritma 1.3. Aturan Penulisan Algoritma 1.3.1. Kepala Algoritma 1.3.2. Deklarasi 1.3.3. Deskripsi 1.4. Tipe Data Algoritma 1.4.1. Tipe 1.4.1.1. Tipe Dasar 1.4.1.2. Tipe Bentukan 1.4.2. Nama 1.4.3. Nilai 1.4.3.1. Pengisian Nilai Ke Dalam Nama Peubah 1.4.3.2. Ekspresi 1.4.3.3. Menulis Nilai Ke Piranti 1.5. Contoh Pembuatan Algoritma 2. Struktur Algoritma 2.1. Runtunan 2.1.1. Pengaruh Urutan Instruksi 2.1.2. Contoh Algoritma Runtunan 2.2. Pemilihan 2.2.1. Satu Kasus 2.2.2. Dua Kasus 2.2.3. Tiga Kasus 2.2.4. Struktur Case 2.3. Pengulangan 2.3.1. Struktur While – Do 2.3.2. Struktur Repeat – Until 2.3.3. Struktur For

Page 2: DASAR-DASAR · diberikan kepada algoritma sebelum algoritma mulai bekerja. 4. Algoritma mempunyai nol atau lebih keluaran (output). Keluaran ialah besaran yang memiliki hubungan dengan

www.mugianet.com - 3 -

3. Prosedur Dan Fungsi 3.1. Prosedur 3.1.1. Mendefinisikan Prosedur 3.1.2. Pemanggilan 3.1.3. Nama Global Dan Nama Lokal 3.1.4. Parameter 3.2. Fungsi 3.2.1. Mendefinisikan Fungsi 3.2.2. Pemanggilan Fungsi 4. Pemrosesan Teks 4.1. Susunan Teks 4.2. Tanda Akhir Teks 4.3. Definisi Teks Kosong 4.4. Pembacaan Teks 5. Larik 5.1 Definisi Larik 5.2. Mendefinisikan Larik Dalam Deklarasi 5.3. Cara Mengacu Elemen Larik 5.4. Pemrosesan Larik 5.4.1. Menginisialisasi Larik 5.4.2. Mengisi Elemen Larik Dari Piranti Masukan 5.4.3. Menulis Elemen Larik Dari Piranti Keluaran 5.5. Larik Bertipe Terstruktur

www.mugianet.com - 4 -

KOSEP DASAR ALGORITMA 1.1. PENGERTIAN ALGORITMA Saat ini dengan berkembangnya teknik pemrograman terstruktur dan berorientasi objek, orang tidak lagi memecahkan masalah dengan langsung menulis programnya dalam bahasa pemrograman. Orang mulai memikirkan suatu cara penyelesaian masalah yang akan diprogram dengan menekankan pada desain atau rancangan yang mewakili pemecahan masalah tersebut. Desain menyajikan cara berpikir pemrogram dalam menyelesaikan masalah. Desain berisi urutan langkah-langkah pencapaian solusi yang ditulis dalam notasi-notasi deskriptif. Urutan langkah-langkah yang sistematis untuk menyelesaikan sebuah masalah dinamakan dengan algoritma. Notasi untuk menuliskan algoritma disebut notasi algoritmik. Notasi algoritmik bukan notasi pemrograman, karena itu program dalam notasi algoritmik tidak dapat dijalankan oleh komputer. Agar dapat dijalankan oleh komputer, program dalam notasi algoritmik harus diterjemahkan/ditranslasikan ke dalam notasi bahasa pemrograman yang dipilih. Definisi algoritma adalah urutan langkah-langkah logis dalam penyelesaian masalah yang disusun secara sistematis Atau berdasarkan Kamus Data Bahasa Indonesia terbitan Balai Pustaka 1988 : Algoritma adalah urutan logis pengambilan keputusan untuk pemecahan masalah. Kata logis merupakan kata kunci. Langkah-langkah tersebut harus logis, ini berarti nilai kebenarannya harus dapat ditentukan, benar atau salah. Langkah-langkah yang tidak benar dapat memberikan hasil yang salah. Ciri-ciri penting sebuah algoritma menurut Donald E. Knuth adalah : 1. Algoritma harus berhenti setelah mengerjakan sejumlah langkah terbatas. 2. Setiap langkah harus didefinisikan dengan tepat dan tidak ambiguous (tidak berarti

dua). 3. Algoritma memiliki nol atau lebih masukan (input). Masukan ialah besaran yang

diberikan kepada algoritma sebelum algoritma mulai bekerja. 4. Algoritma mempunyai nol atau lebih keluaran (output). Keluaran ialah besaran

yang memiliki hubungan dengan masukan. 5. Algoritma harus efektif, setiap langkahnya harus sederhana sehingga dapat

dikerjakan dalam sejumlah waktu yang masuk akal. 1.2. DASAR-DASAR ALGORITMA Pada dasarnya, sebuah algoritma merupakan deskripsi pelaksanaan suatu proses. Sebuah proses dikerjakan oleh pemroses menurut algoritma yang sudah ditulis.

Page 3: DASAR-DASAR · diberikan kepada algoritma sebelum algoritma mulai bekerja. 4. Algoritma mempunyai nol atau lebih keluaran (output). Keluaran ialah besaran yang memiliki hubungan dengan

www.mugianet.com - 5 -

1.2.1. Proses, Instruksi dan Aksi Berdasarkan definisinya, algoritma disusun oleh sederetan langkah instruksi yang logis. Tiap langkah instruksi tersebut mengerjakan suatu tindakan (aksi). Bila suatu aksi dilaksanakan, maka sejumlah operasi yang bersesuaian dengan aksi itu dikerjakan oleh pemroses. Efek pengerjaan suatu aksi dapat diamati dengan membandingkan keadaan pada saat aksi belum dimulai (t0), dan keadaan pada saat aksi selesai dikerjakan (t1). t0 : keadaan sebelum aksi dikerjakan aksi t1 : keadaan setelah aksi dikerjakan Sebagai contoh, perhatikan persoalan mempertukarkan isi dua buah gelas, A dan B. Gelas A berisi air kopi, sedangkan gelas B berisi air susu. Kita ingin mempertukarkan isi kedua gelas tersebut sehingga akhirnya gelas A berisi air susu dan gelas B berisi air kopi. Keadaan awal sebelum pertukaran

Gelas A Gelas B Gelas C

Proses pertukaran 1. Tuangkan isi dari gelas A ke dalam gelas C

Gelas A Gelas B Gelas C 2. Tuangkan isi dari gelas B ke dalam gelas A

Gelas A Gelas B Gelas C

www.mugianet.com - 6 -

3. Tuangkan isi dari gelas C ke dalam gelas B

Gelas A Gelas B Gelas C Keadaan akhir setelah pertukaran

Gelas A Gelas B Gelas C Dari keterangan gambar diatas dapat kita tuliskan sebagai berikut : t0 : gelas A berisi air kopi, gelas B berisi air susu. (Gelas C masih kosong) 1. Tuangkan isi dari gelas A ke dalam gelas C t1 : gelas A kosong, gelas C berisi air kopi. t0 : gelas A kosong, gelas B berisi air susu, gelas C berisi air kopi. 2. Tuangkan isi dari gelas B ke dalam gelas A t1 : gelas A berisi air susu, gelas B kosong. t0 : gelas A berisi air susu, gelas B kosong, gelas C berisi air kopi. 3. Tuangkan isi dari gelas C ke dalam gelas B t1 : gelas A berisi air susu, gelas B berisi air kopi. (Gelas C masih kosong) Algoritma juga dipandang sebagai sebuah aksi yang disusun oleh beberapa aksi lainnya yang lebih sederhana. Keadaan awal dari aksi pertama merupakan keadaan awal algoritma, sedangkan keadaan akhir dari aksi yang terakhir dikerjakan merupakan keadaan akhir algoritma. Jika t0 adalah keadaan sebelum algoritma dikerjakan dan t1 adalah keadaan sesudah algoritma dikerjakan, maka pada algoritma pertukaran isi dua buah gelas adalah : t0 : gelas A berisi air kopi, gelas B berisi air susu. Algoritma Tukar Isi Gelas t1 : gelas A berisi air susu, gelas B berisi air kopi.

Page 4: DASAR-DASAR · diberikan kepada algoritma sebelum algoritma mulai bekerja. 4. Algoritma mempunyai nol atau lebih keluaran (output). Keluaran ialah besaran yang memiliki hubungan dengan

www.mugianet.com - 7 -

1.2.2. Struktur Dasar Algoritma Algoritma berisi langkah-langkah penyelesaian suatu masalah. Langkah-langkah tersebut dapat berupa runtutan aksi, pemilihan aksi, dan pengulangan aksi. Ketiga jenis langkah tersebut membentuk konstruksi suatu algoritma. Jadi, sebuah algoritma dapat dibangun dari tiga buah struktur dasar, yaitu : 1. Runtutan (sequence). 2. Pemilihan (selection), 3. Pengulangan (repetition/looping). Runtutan Sebuah runtutan terdiri dari satu atau lebih instruksi. Tiap instruksi dikerjakan secara berurutan sesuai dengan urutan penulisannya, yaitu sebuah instruksi dilaksanakan setelah instruksi sebelumnya selesai dilaksanakan. Urutan instruksi menentukan keadaan akhir algoritma Bila urutannya diubah, maka hasil akhir mungkin juga berubah. Perhatian runtutan instruksi yang dilambangkan dengan A1, A2, A3, A4 dan A5 berikut : A1

A2 A3 A4 A5

Mula-mula pemroses melaksanakan instruksi A1. Instruksi A2 dilaksanakan setelah instruksi A1 selesai. Selanjutnya, instruksi A3 dilaksanakan setelah instruksi A2 selesai. Demikian seterusnya sampai instruksi terakhir A5 dilaksanakan. Setelah instruksi A5 selesai dilaksanakan, algoritma berhenti.

Algoritma Tukar_Isi_Gelas Diberikan dua buah gelas, A dan B; Gelas A berisi air kopi, gelas B berisi air susu. Pertukarkan isi kedua gelas itu sehingga gelas A berisi air susu, gelas B berisi air kopi. DESKRIPSI 1. Tuangkan isi dari gelas A ke dalam gelas C 2. Tuangkan isi dari gelas B ke dalam gelas A 3. Tuangkan isi dari gelas C ke dalam gelas B

www.mugianet.com - 8 -

Pemilihan Adakalanya sebuah instruksi dikerjakan jika kondisi tertentu dipenuhi. Untuk memenuhinya maka diperlukan instruksi pemilihan yang ditulis dalam struktur umum :

If kondisi then aksi

Dalam bahasa Indonesia, if berarti “jika” dan then artinya “maka”. Kondisi adalah persyaratan yang dapat bernilai benar atau salah. Aksi hanya dilaksanakan apabila kondisi bernilai benar, sebaliknya bila kondisi salah maka aksi tidak dilaksanakan. contoh :

If Budi memperoleh juara kelas then Ayah akan membelikannya sepeda

If mobilmu rusak then

Pakai saja sepeda motorku Struktur pemilihan if – then hanya memberikan satu pilihan aksi bila kondisi dipenuhi (bernilai benar), dan tidak memberi pilihan aksi lain bila kondisi bernilai salah. Bentuk pemilihan yang lebih umum ialah memilih satu dari dua buah aksi bergantung pada nilai kondisinya :

If kondisi then aksi 1

else aksi 2

else artinya “jika tidak”. Bila kondisi bernilai benar, aksi 1 akan dikerjakan, tetapi jika tidak maka aksi 2 yang akan dikerjakan. contoh :

If hari hujan then pergilah dengan naik beca

else pergilah dengan naik motor Apabila pilihan aksi yang dilakukan lebih dari dua buah, maka struktur pemilihannya menjadi lebih rumit. Contoh :

If lampu pengatur lalu lintas berwarna merah then anda harus berhenti

else If lampu pengatur lalu lintas berwarna kuning then

anda boleh jalan tetapi dengan hati-hati else anda boleh silahkan terus berjalan

Page 5: DASAR-DASAR · diberikan kepada algoritma sebelum algoritma mulai bekerja. 4. Algoritma mempunyai nol atau lebih keluaran (output). Keluaran ialah besaran yang memiliki hubungan dengan

www.mugianet.com - 9 -

Pengulangan Salah satu kelebihan komputer adalah kemampuannya untukmengerjakan pekerjaan yang sama berulang kali tanpa mengenal lelah. Ini berbeda dengan manusia yang cepat lelah bila mengerjakan pekerjaan yang sama berulang-ulang. Tidak hanya lelah tetapi juga cepat bosan yang tingkat kesalahan yang tinggi. Sewaktu duduk di sekolah dasar, anda mungkin pernah dihukum oleh Guru untuk menuliskan sebuah kalimat sebanyak 100 kali, karena anda nakal atau tidak membuat PR. Misalkan kalimat tersebut adalah : Saya berjanji tidak akan nakal dan malas lagi. Bila pekerjaan menulis kalimat ini diserahkan kepada komputer, maka pemrogram mungkin menuliskan algoritmanya sebagai berikut :

Tentu saja penulisan algoritma seperti ini merupakan pekerjaan yang kurang tepat, karena instruksi Tulis “Saya berjanji tidak akan nakal dan malas lagi” harus kita tulis di dalam teks algoritma sebanyak yang diperintahkan Guru. Untuk mengatasi hal ini, maka kita dapat menggunakan struktur pengulangan repeat – until (repeat artinya ulangi sedangkan until artinya sampai) sehingga algoritma menulis 100 buah kalimat dapat ditulis berikut ini :

Algoritma Menulis_100_Kalimat Menulis kalimat “Saya berjanji tidak akan nakal dan malas lagi” sebanyak 100 kali DESKRIPSI 1. Tulis “Saya berjanji tidak akan nakal dan malas lagi” 2. Tulis “Saya berjanji tidak akan nakal dan malas lagi” 3. Tulis “Saya berjanji tidak akan nakal dan malas lagi” . . . 99. Tulis “Saya berjanji tidak akan nakal dan malas lagi” 100. Tulis “Saya berjanji tidak akan nakal dan malas lagi”

www.mugianet.com - 10 -

1.3. ATURAN PENULISAN ALGORITMA Teks algoritma berisi deskripsi langkah-langkah penyelesaian masalah. Deskripsi dapat ditulis dalam notasi apapun, asalkan mudah dimengerti dan dipahami. Tidak ada notasi yang baku dalam penulisan teks algoritma sebagaimana pada bahasa pemrograman. Tiap orang dapat membuat aturan penulisan dan notasi algoritmik sendiri. Namun, agar notasi algoritmik mudah ditranslasikan ke dalam bahasa pemrograman, maka sebaiknya notasi algoritmik tersebut berkoresponden dengan notasi bahasa pemrograman secara umum. Contoh : Tulis nilai X dan Y Notasi algoritmiknya menjadi Write (X,Y) Baca nilai X dan Y Notasi algoritmiknya menjadi Read (X,Y) Isikan nilai X ke dalam Y Notasi algoritmiknya menjadi Y X Pada dasarnya, teks algoritma selalu disusun oleh tiga bagian (blok) yaitu : bagian kepala (header) algoritma, bagian deklarari dan bagian deskripsi. Setiap bagian disertai dengan komentar untuk memperjelas maksud teks yang dituliskan. Komentar adalah kalimat yang diapit oleh pasangan tanda kurung kurawal ( { } )

Algoritma Menulis_100_Kalimat Menulis kalimat “Saya berjanji tidak akan nakal dan malas lagi” sebanyak 100 kali DESKRIPSI : pencatat_jumlah_kalimat = 0 repeat tulis “Saya berjanji tidak akan nakal dan malas lagi” naikkan pencatat_jumlah_kalimat dengan 1 until pencatat_jumlah_kalimat = 100

Page 6: DASAR-DASAR · diberikan kepada algoritma sebelum algoritma mulai bekerja. 4. Algoritma mempunyai nol atau lebih keluaran (output). Keluaran ialah besaran yang memiliki hubungan dengan

www.mugianet.com - 11 -

1.3.1. Kepala Algoritma Kepala algoritma adalah bagian yang terdiri atas nama algoritma dan penjelasan (spesifikasi) tentang algoritma tersebut. Nama algoritma sebaiknya singkat namun cukup menggambarkan apa yang dilakukan oleh algoritma tersebut. Dibawah nama algoritma disertai dengan penjelasan singkat (intisari) tentang apa yang dilakukan algoritma. Penjelasan dibawah judul algoritma sering dinamakan juga spesifikasi algoritma. Algoritma harus ditulis sesuai dengan spesifikasi yang didefinisikan. Contoh :

Dalam penulisan teks algoritma, huruf besar maupun hurup kecil tidak merupakan suatu keharusan. Sebaiknya tidak menggunakan spasi ( “ “) untuk memisahkan antar kata di dalam nama algoritma, sebab nantinya akan ada manfaatnya terutama untuk judul program dalam bahasa Pascal. 1.3.2. Deklarasi Deklarasi nama adalah bagian untuk mendefinisikan semua nama tyang dipakai dalam algoritma. Nama tersebut dapat berupa nama tetapan, nama peubah, nama tipe, nama prosedur dan nama fungsi. Contoh :

Algoritma Nama_Algoritma {penjelasan tentang algoritma, yang berisi uraian singkat mengenai apa yang dilakukan oleh algoritma} DEKLARASI {semua nama yang dipakai, meliputi nama tipe, nama tetapan, nama peubah, nama prosedur dan nama fungsi didefinisikan di sini} DESKRIPSI : {semua langkah/aksi algoritma dituliskan disini}

Algoritma Menghitung_Nilai_Rata_Rata {penjelasan tentang algoritma, yang berisi uraian singkat mengenai apa yang dilakukan oleh algoritma}

www.mugianet.com - 12 -

1.3.3. Deskripsi Deskripsi merupakan bagian inti dari suatu algoritma. Bagian ini berisi uraian langkah-langkah penyelesaian masalah. Langkah-langkah ini dituliskan dengan notasi. Setiap langkah algoritma dibaca dari atas ke bawah. Urutan penulisan menentukan urutan pelaksanaan perintah. Contoh :

DESKRIPSI read(c,d)

if c < d e a + b e a + b

else e a - b

endif write (e)

DEKLARASI {Nama tetapan}

Const NPeg = 100 {jumlah pegawai} Const Phi = 3,14 {nilai π}

{Nama tipe} Type titik : record {koordinat titik dibidang kartesian} < X : integer Y : integer >

{Nama peubah} c = char {karakter yang dibaca} ketemu = boolean {keadaan hasil pencarian}

function Apakah_A(input c : char) boolean {mengembalikan nilai true bila c adalah karakter ‘A’, atau false bila sebaliknya}

procedure Tukar(input/output A : integer, input/output A : integer) {mempertukarkan nilai A dan B} {parameter A dan B sudah terdefinisi nialinya} {setelah pertukaran, A berisi nilai B semula, B berisi nilai A semula}

Page 7: DASAR-DASAR · diberikan kepada algoritma sebelum algoritma mulai bekerja. 4. Algoritma mempunyai nol atau lebih keluaran (output). Keluaran ialah besaran yang memiliki hubungan dengan

www.mugianet.com - 13 -

1.4. TIPE DATA ALGORITMA Pada umumnya, program komputer bekerja dengan memanipulasi obyek (data) di dalam memori. Obyek yang akan diprogram bermacam-macam jenis atau tipenya, misalnya char, string dan record. 1.4.1. Tipe Tipe data dapat dikelompokkan menjadi dua macam yaitu tipe dasar dan tipe bentukan. Suatu tipe diacu dari namanya, nilai-nilai yang dicakup oleh tipe tersebut dinyatakan di dalam ranah (domain) nilai. Operasi-operasi (beserta operator) yang dapat dilakukan terhadap tipe tersebut juga didefinisikan. 1.4.1.1. Tipe Dasar Tipe dasar merupakan tipe yang dapat langsung dipakai. Tipe dasar sudah dikenal dalam kehidupan sehari-hari. Kita hampir setiap hari berbicara tentang angka-angka dan karakter. Dalam dunia pemrograman, yang termasuk ke dalam tipe dasar adalah bilangan logika, bilangan bulat, bilangan riil dan karakter. Bilangan Logika Nama tipe bilangan logika adalah boolean. Bilangan logika hanya mengenal dua buah nilai yaitu benar (true) atau salah (false) istilah bilangan muncul karena kita dapat menyatakan nilai benar dengan angka 1 dan nilai salah dengan angka 0 (atau sebaliknya). Maka tetapan (constant) yang terdapat pada tipe ini adalah true dan false. Operasi-operasi yang bisa dilakukan terhadap tipe boolean dikenal dengan operasi logika yaitu not, and, or dan xor. Jika a dan b sebagai peubah (variable) yang bertipe boolean, maka hasil operasi logika a dan b adalah :

A B Not B A and B A or B A xor B true true false true true false true false true false true true false true false false true true false false true false false false

Bilangan Bulat Bilangan bulat adalah bilangan yang tidak mengandung pecahan desimal, misalnya 34, 8, 0, -5, -28 dan lain-lain. Nama tipe bilangan bulat adalah integer. Rentang nilainya adalah dari minus tidak hingga sampai plus tidak hingga asalkan setiap nilainya tidak mengandung titik desimal. Didalam algoritma bisa didefinisikan jangkauannya misalkan {0 .. 100}.

www.mugianet.com - 14 -

Tipe bilangan bulat adalah tipe yang memiliki keterurutan. Ini artinya, bila sebuah nilai bilangan bulat diketahui, nilai sebelumnya (predesesor) dan nilai sesudahnya (successor) dapat ditentukan. Contohnya predesesor 9 adalah 8 dan successornya adalah 10. Jika a adalah peubah bertibe bilangan bulat, maka predesesor(a) = a – 1 dan successor(a) = a + 1. Operasi yang dapat dilakukan pada bilangan bulat ada dua macam yaitu operasi aritmatika dan operasi perbandingan. a. Operasi aritmatika

Operasi aritmatika pada bilangan bulat akan menghasilkan nilai yang bertipe bilangan bulat juga. Operator aritmatika, diantaranya : + (tambah) _ (kurang) * (kali) div (bagi) mod (sisa hasil bagi) Operator div (devide) adalah operator khusus untuk bilangan bulat yang memberikan hasil pembagian dalam bilangan bulat, sedangkan operator mod (modulo) memberikan sisa hasil pembagian. Didalam notasi algoritmik kita tidak mengenal operator pembagian / untuk tipe integer. Contohnya : 7 + 3 (hasil : 10) 100 - 10 (hasil : 90) 7 * 10 (hasil : 70) 10 div 3 (hasil : 3) 10 mod 3 (hasil : 1)

b. Operasi perbandingan Operasi perbandingan pada bilangan bulat akan menghasilkan nilai boolean (true atau false). Operator perbandingan, diantaranya : < (lebih kecil) ≤ (lebih kecil atau sama dengan) > (lebih besar) ≥ (lebih besar atau sama dengan) = (sama dengan) ≠ (tidak sama dengan) Contohnya : 3 < 8 (hasil : true) 74 > 101 (hasil : false) 9 ≤ 9 (hasil : true) 9 < 9 (hasil : false) 17 = 17 (hasil : true) (24 div3) ≠ 8 (hasil : false)

Page 8: DASAR-DASAR · diberikan kepada algoritma sebelum algoritma mulai bekerja. 4. Algoritma mempunyai nol atau lebih keluaran (output). Keluaran ialah besaran yang memiliki hubungan dengan

www.mugianet.com - 15 -

Bilangan Riil Bilangan riil adalah bilangan yang mengandung pecahan desimal, misalnya 3.65 , 0005, 29.03 dan lain-lain. Bilangan riil dapat juga dituliska dengan notasi E yang artinya perpangkatan sepuluh. Misalnya 2.60240000E-6 artinya 2.60240000 X 10-6. Baik tipe bilangan bulat maupun tipe bilangan riil, keduanya juga tipe numerik (angka). Nama tipe bilangan riil adalah real. Secara teoritis tipe bilangan riil memiliki jangkauan nilai yang tidak terbatas. Rentang nilainya adalah dari minus tidak hingga sampai plus tidak hingga.Tipe bilangan riil harus ditulis dengan tanda titik desimal. Operasi yang dapat dilakukan pada bilangan riil ada dua macam yaitu operasi aritmatika dan operasi perbandingan. a. Operasi aritmatika

Operasi aritmatika pada bilangan riil dengan sembarang operator akan menghasilkan nilai yang bertipe bilangan riil juga. Operator aritmatika, diantaranya: + (tambah) _ (kurang) * (kali) / (bagi) Contohnya : 6.4 + 5.7 (hasil : 12.1) 8.0 – 2.8 (hasil : 5.2) 10 / 3 (hasil : 3.333...) 7.2 * 0.5 (hasil : 4.0)

b. Operasi perbandingan Operasi perbandingan pada bilangan riil akan menghasilkan nilai boolean (true atau false). Operator perbandingan, diantaranya : < (lebih kecil) ≤ (lebih kecil atau sama dengan) > (lebih besar) ≥ (lebih besar atau sama dengan) ≠ (tidak sama dengan) Contohnya : 0.003 < 0.3 (hasil : false) 8.0 ≥ 5 (hasil : true) 3.0 ≠ 3.5 (hasil : true)

Karakter Yang termasuk dalam karakter adalah huruf-huruf alfabet, tanda baca, angka dan karakter khusus. Nama tipe untuk karakter adalah char. Karakter yang baku terdapat dalam tabel ASCII. Untuk penulisan karakter harus diapit oleh tanda petik tunggal Contoh : ‘a’ ‘z’ ‘.’ ‘+’ ‘9’ ‘$’ Ingat bahwa ‘9’ adalah karakter, tetapi 9 adalah integer.

www.mugianet.com - 16 -

Operasi yang dilakukan pada tipe karakter adalah operasi perbandingan yaitu sebagai berikut :

< (lebih kecil) ≤ (lebih kecil atau sama dengan) > (lebih besar) ≥ (lebih besar atau sama dengan) = (sama dengan) ≠ (tidak sama dengan)

Contohnya :

‘m’ < ‘z’ (hasil : true) ‘a’ = ‘a’ (hasil : true) ‘z’ = ‘Z’ (hasil : false) ‘x’ ≠ ‘X’ (hasil : true)

Seperti halnya tipe bilangan bulat, tipe karakter juga mempunyai keterurutan (successsor dan predesesor) yang ditentukan oleh cara pengkodeannya didalam komputer misalnya kode ASCII. 1.4.1.2. Tipe Bentukan Tipe bentukan adalah tipe yang didefinisikan sendiri oleh pemrogram. Tipe bentukan disusun oleh satu atau lebih tipe dasar. Ada tiga macam tipe bentukan yaitu : tipe dasar, tipe dasar yang diberi nama dengan nama tipe baru dan rekaman (record). String String adalah deretan karakter dengan panjang tertentu. Contoh-contoh string yaitu : ‘saya belajar algoritma’ , ‘ Sukabumi’ , ‘Poltek BBC’, dan lain-lain. Karakter adalah string dengan panjang 1. Nama tipe string adalah string. Semua string harus diapit oleh tanda petik tunggal. Contoh string yang lainnya : “MATA KULIAH ALGORITMA’ ‘Manajemen Informatika’ ‘.....................................’ ‘James Bond’ ‘007’ Operasi pada tipe string ada dua macam yaitu : a. Operasi penyambungan (concatenation)

Operator yang digunakan adalah +. Operator + bukanlah operator penjumlahan seperti pada tipe numerik (integer atau real), tapi maksudnya adalah untuk penyambungan. Bila a dan b adalah peubah bertipe string, maka a + b sama dengan ab.

Page 9: DASAR-DASAR · diberikan kepada algoritma sebelum algoritma mulai bekerja. 4. Algoritma mempunyai nol atau lebih keluaran (output). Keluaran ialah besaran yang memiliki hubungan dengan

www.mugianet.com - 17 -

Contoh : ‘Manajemen” + “Informatika’ = ‘ManajemenInformatika’ ‘Manajemen’ + “ Informatika = ‘Manajemen Informatika’ ‘1’ + ‘2’ = ‘12’

b. Operasi perbandingan Operator yang digunakan adalah : < (lebih kecil) ≤ (lebih kecil atau sama dengan) > (lebih besar) ≥ (lebih besar atau sama dengan) = (sama dengan) ≠ (tidak sama dengan) Operator relasional, seperti halnya pada karakter, menghasilkan nilai boolean yaitu true atau false. Contoh : ‘abcd’ = ‘abc’ (hasil : false) ‘aku’ < ‘AKU’ (hasil : true) String yang disusun oleh gabungan numerik dan karakter sering dinamakan alfanumerik. Misalnya ‘XYZ007’, ‘abc123’ dan lain-lain. Karena tipe string banyak dipakai dalam pemrograman, maka string dapat diperlakukan sebagai tipe dasar

Tipe Dasar Yang Diberi Nama Baru Kita dapat memberi nama baru untuk tipe dasar dengan menggunakan kata kunci type. Cara penulisan untuk tipe baru tersebut tidak berubah, tetap sama dengan tipe dasar aslinya. Contoh : Type BilBulat : integer Keterangan :

BilBulat adalah tipe bilangan bulat yang sama deangan tipe integer. Apabila kita mempunyai sebuah peubah (variable) yang bernama X dan bertipe BilBulat, peubah X tersebut sama saja bertipe integer.

Rekaman (record) Rekaman disusun oleh satu atau lebih field. Tiap field menyimpan data dari tipe dasar tertentu atau dari tipe bentukan lain yang sudah didefinisikan sebelumnya. Nama rekaman ditentukan oleh pemrogram. Karen strukturnya yang disusun oleh field-filed, maka rekaman dinakam juga tipe terstruktur (structured type)

Field 1 Field 2 Field 3 .......... Field n

www.mugianet.com - 18 -

Contoh : NilMhs adalah nama tipe terstruktur yang menyatakan nilai ujian seorang mahasiswa untuk suatu mata kuliah (MK) yang ia ambil. Data setiap mahasiswa adalah NIM, nama mahasiswa, mata kuliah yang diambil dan nilai mata kuliah tersebut.

NIM NamaMhs KodeMk Nilai Cara penulisan tipe NilMhs adalah : Type NilMhs : record < NIM : integer {Nomor Induk Mahasiswa} NamaMhs : string {nama mahasiswa} KodeMk : string {kode mata kuliah} Nilai : char {indeks nilai mata kuliah (A/B/C/D/E)} > 1.4.2. Nama Di dalam algoritma, nama dipakai sebagai pengidentifikasi sesuatu dan pemrogram mengacu sesuatu itu melalui namanya. Karena itu setiap nama haruslah unik, tidak boleh ada dua buah nama yang sama. Sesuatu yang diberi nama dapat berupa : a. Peubah (variable)

Peubah adalah tempat penyimpanan data/informasi di memori yang isinya dapat diubah. Contoh :

b. Tetapan (constant)

Tetapan adalah tempat penyimpanan di dalam memori yang isinya tetap selama pelaksanaan program dan tidak dapat diubah. Notasi untuk menyatakan tetapan adalah const. Contoh :

DEKLARASI Const phi = 3.14 Const Nmaks = 100 Const sandi = ‘xyz’

DEKLARASI x, nilai_ujian, jumlah : real k : integer c : char

Page 10: DASAR-DASAR · diberikan kepada algoritma sebelum algoritma mulai bekerja. 4. Algoritma mempunyai nol atau lebih keluaran (output). Keluaran ialah besaran yang memiliki hubungan dengan

www.mugianet.com - 19 -

c. Tipe bentukan Nama tipe bentukan diberikan oleh pemrogram. Contoh :

d. Nama fungsi yang digunakan. Contoh :

e. Nama prosedur yang digunakan.

Contoh :

1.4.3. Nilai Nilai adalah besaran dari tipe data yang sudah dikenal. Nilai dapat berupa isi yang disimpan oleh nama peubah atau nama tetapan, nilai dari hasil perhitungan atau nilai yang dikirim oleh fungsi. Nilai yang dikandung oleh peubah dimanipulasi antara lain dengan cara mengisikannya ke dalam peubah lain yang bertipe sama, dipakai untuk perhitungan atau dituliskan ke piranti keluaran. 1.4.3.1. Pengisian Nilai Ke Dalam Nama Peubah Peubah menyimpan sebuah nilai dari tipe tertentu. Sebuah nilai dapat dimasukkan ke dalam nama peubah dengan dua buah cara, yaitu : a. pengisian nilai secara langsung (assigment)

pengisian nilai secara langsung adalah memasukkan sebuah nilai kedalam nama peubah langsung didalam teks algoritma. Notasi pengisian secara langsung adalah

DEKLARASI procedure tukar (input/output A,B : integer) {mempertukarkan nilai A dan B}

DEKLARASI function maksimum (A,B : integer) integer {mengembalikan nilai terbesar antara A dan B}

DEKLARASI type titik : record <x:real,y:real> type jam : record <hh : integer, (0..23) mm : integer, (0..59) dd : integer, (0..59) >

www.mugianet.com - 20 -

Nilai yang diberikan kepada nama peubah dapat berupa tetapan, nilai nama peubah lain, atau nilai ekspresi. Nilai tersebut harus sama dengan tipe peubahnya. Notasi agoritmik untuk pengisian nilai adalah Contoh :

b. dibaca dari piranti masukkan mengisi nilai dari piranti masukan dinamakan operasi pembacaan data. Di dalam algoritma, instruksi pembacaan niai untuk nama peubah dilakukan dengan notasi read. Notasi algoritmik untuk pembacaan nilai dari piranti masukan sebagai berikut : Read (nama1, nama2, ...., namaN) Dengan syarat nama1, nama2 ..., namaN sudah dideklarasikan tipenya di dalam DEKLARASI. Contoh :

1.4.3.2. Ekspresi Suatu nilai dipakai untuk proses transformasi menjadi keluaran yang diinginkan. Transfromasi nilai menjadi keluaran dilakukan melalui suatu perhitungan. Cara perhitungan itu dinyatakan dalam suatu ekspresi. Ekspresi terdiri dati operand dan operator. Operand adalah nilai yang dioperasikan dengan operator tertentu, bisa berupa tetapan, nama peubah, nama tetapan atau hasil dari suatu fungsi. Dikenal tiga macam ekspresi yaitu :: a. ekspresi aritmatik ekspresi numerik adalah ekspresi yang baik operandnya bertipe numerik dan hasilnya juga bertipe numerik. Misalkan dedefinisikan deklarasi sebagai berikut :

DEKLARASI a, b, c : Real d : Integer i, j, k : Integer

DESKRIPSI Read(X) Read(a1, a2, a3) Read(NIM, Nama_Mhs, Alamat)

DESKRIPSI K 5 Ketemu false C A + B

Page 11: DASAR-DASAR · diberikan kepada algoritma sebelum algoritma mulai bekerja. 4. Algoritma mempunyai nol atau lebih keluaran (output). Keluaran ialah besaran yang memiliki hubungan dengan

www.mugianet.com - 21 -

Contoh ekspresi numerik, misalnya : a * b hasil evaluasi ekspresi tersebut juga bertipe real. Pada ekspresi ini, operandnya adalah a dan b, sedangkan operatornya adalah *. Bila hasil perhitungan disimpan ke dalam nama peubah, maka nama peubah tersebut haruslah bertipe sama dengan tipe hasil. Pengisian evaluasi ekspresi a * b ke dalam nama peubah c melalui pengisian nilai : c a * b adalah benar, tetapi jika pengisian nilai d a * b tidak dibenarkan karena d bertipe integer. b. ekspresi relasional ekspresi relasional adalah ekspresi dengan operator <, ≤, >, ≥, = dan ≠, not, and, or, dan xor. Hasil evaluasi ekspresi adalah nilai bertipe boolean (true atau false) Misalkal didefinisikan DEKLARASI sebagai berikut :

Misalkan pula ketemu telah bernilai false ada bernilai true, x bernilai 8 dan bernilai 12, maka. Contoh-contoh ekspresi boolean adalah :

not ada (hasil : false) ada and true (hasil : true) x < 5 (hasil : false) ada or (x = y) (hasil : true)

c. ekspresi string ekspresi string adalah ekspresi dengan operator +. Misalkan didefinisikan DEKLARASI sebagai berikut :

Maka contoh ekspresi string yang menggunakan peubah di dalam DEKLARASI tersebut misalnya : (s+kar) + ‘c’ {operasi penyambungan karakter/string} ‘Jl. Otto Iskandardinta ‘ + ‘No. 007’ 1.4.3.3. Menuliskan Nilai Ke Piranti Keluaran Nilai yang disimpan memori dapat ditampilkan ke piranti keluaran (misal monitor). Instruksi penulisan nilai dilakukan dengan notasi write.

DEKLARASI kar : char s : string

DEKLARASI Ketemu, besar : boolean x, y : Integer

www.mugianet.com - 22 -

1.5. CONTOH PEMBUATAN ALGORITMA Buatkan algoritma untuk mencetak string ‘ Hallo semua, saya belajar algoritma’ ke piranti keluaran. Solusi :

Algoritma Cetak_Hallo {mencetak string ‘Hallo semua, saya belajar algoritma’} DEKLARASI {tidak ada} DESKRIPSI Write(‘Hallo semua, saya belajar algoritma’)

LATIHAN :

1. Buatkan algoritma diatas dengan versi yang lainnya. 2. Dibaca nama seseorang dari piranti masukan, lalu tampilkan ucapan “Hallo”

yang diikuti dengan nama orang tersebut. Buatkan algoritmanya untuk kasus tersebut.

write(nama1, nama2, ...., namaN) write(tetapan) write(nama, tetapan, ekspresi) write(ekspresi)

Page 12: DASAR-DASAR · diberikan kepada algoritma sebelum algoritma mulai bekerja. 4. Algoritma mempunyai nol atau lebih keluaran (output). Keluaran ialah besaran yang memiliki hubungan dengan

www.mugianet.com - 23 -

STRUKTUR ALGORITMA 2.1. RUNTUNAN (SEQUENCE) Algoritma merupakan runtunan satu atau lebih instruksi, yang berarti bahwa:

Tiap instruksi dikerjakan satu persatu; Tiap instruksi dilaksanakan tepat sekali, tidak ada instruksi yang diulang; Urutan isntruksi 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, dan A3, maka urutan pelaksanaan instruksi tersebut adalah seperti diagram dibawah ini :

A1

A2

A3 2.1.1. Pengaruh Urutan Instruksi Urutan instruksi di dalam algoritma adalah penting. Urutan instruksi yang berbeda dalam runtunan dapat menghasilkan keluaran yang berbeda pula. Perhatikan algoritma runtunan_1 dengan algoritma runtunan_2 berikut ini :

Algoritma Runtunan_1 {contoh algoritma yang menghasilkan keluaran yang berbeda jika urutan instruksi nya diubah} DEKLARASI A, B : integer DESKRIPSI A 10 A 2 * A B A Write(B) {nilai B yang dicetak ke piranti keluaran adalah 20}

www.mugianet.com - 24 -

Algoritma Runtunan_2 {contoh algoritma yang menghasilkan keluaran yang berbeda jika urutan instruksi nya diubah}

DEKLARASI A, B : integer

DESKRIPSI A 10 B A A 2 * A Write(B) {nilai B yang dicetak ke piranti keluaran adalah 10}

2.1.2. Contoh Algoritma Runtunan Menghitung luas segitiga. Luas sembarang segitiga adalah setengah dari panjang alas dikali tinggi. Panjang alas dan tinggi segitiga dibaca dari piranti masukan. Luas segitiga dicetak ke piranti keluaran. Buatkan algoritma untuk menghitung luas segitiga ! Solusi:

Algoritma Luas_Segitiga {dibaca panjang alas (a) dan tinggi (t). Hitunglah luas segitiga tersebut, untuk alas dan tinggi tertentu. Luas segitiga dihitung dengan rumusnya L = ½ at. Nilai L dicetak ke piranti keluaran} DEKLARASI a : real {panjang alas segitiga, dalam satuan cm} t : real {tinggi segitiga, dalam satuan cm} L : real {luas segitiga, dalam satuan cm2} DESKRIPSI Read(a) Read(b) L a * t / 2 Write(L)

Latihan : Menghitung banyaknya komisi yang diterima seorang salesman berdasarkan

jumlah penjualan yang dicapainya. Salesman itu mendapat komisi 10% dari hasil penjualannya. Masukan algoritma adalah nama salesman dan jumlah penjualan yang dicapainya. Tampilkan ke piranti keluaran nama salesman dan besar komisi yang diperolehnya.

Page 13: DASAR-DASAR · diberikan kepada algoritma sebelum algoritma mulai bekerja. 4. Algoritma mempunyai nol atau lebih keluaran (output). Keluaran ialah besaran yang memiliki hubungan dengan

www.mugianet.com - 25 -

2.2. PEMILIHAN (SELECTION) Di dalam suatu program, adakalanya suatu aksi hanya dilakukan bila memenuhi persyaratan tertentu. Jadi dalam memecahkan masalah kita harus menganalisis kasus-kasus apa saja yang mungkin ada. Menganalisis kasus dari suatu masalah artinya menentukan kondisi boolean (bernilai true atau false) dan menentukan aksi yang dilakukan jika kondisi tersebut berlaku. Kondisi boolean adalah ekspresi relasional yang bernilai true atau false tergantung pada nilai masing-masing operand yang terlibat di dalamnya. Contoh ekspresi relasional : X > Y A ≠ 10 Ketemu = true Aksi yang dikerjakan bila kondisi boolean memenuhi dapat berupa pengisian nilai (assignment), kalkulasi, baca, tulis dan sebagainya.

2.2.1. Satu Kasus Notasi algoritmik untuk analisis dengan satu kasus adalah dengan menggunakan struktur IF – THEN :

If <kondisi> then Aksi Endif

Aksi sesudah kata then (dapat satu atau lebih satu) hanya akan dilaksanakan bila <kondisi> bernilai benar (true). Bila <kondisi> bernilai salah (false), tidak ada aksi yang dilaksanakan. Kata endif sengaja ditambahkan untuk mempertegas awal dan akhir struktur if – then.

Contoh : If x > 100 then

x = x + 1 endif

If ada = false then Read(a) Write(a)

endif If (ketemu = true) then

If a < 10 then Read (b) endif

endif

www.mugianet.com - 26 -

Contoh analisis dengan satu kasus : Dibaca sebuah bilangan bulat dari papan kunci. Tuliskan algoritma untuk menentukan pesan “bilangan genap” jika bilangan tersebut adalah genap. Bilangan genap adalah bilangan yang habis dibagi dengan 2 (sisa = 0). Solusi :

Algoritma Bilangan_Genap {Mencetak pesan “bilangan genap” jika sebuah bilangan bulat yang dibaca dari piranti masukan merupakan bilangan genap} DEKLARASI bil : integer DESKRIPSI Read(bil) If bil mod 2 = 0 then Write(‘bilangan genap’) endif

2.2.2. Dua Kasus Notasi algoritmik untuk analisis dengan dua kasus adalah dengan menggunakan struktur IF – THEN - ELSE:

If <kondisi> then Aksi1 Else Aksi2 Endif

Aksi1 akan dilaksanakan jika <kondisi> bernilai benar, tetapi jika kondisi bernilai salah, aksi2 yang akan dilaksanakan. Perhatikan bahwa bahwa else menyatakan ingkaran (negation) dari kondisi. Contoh :

If a > 0 then Write(‘bilangan positif’)

else Write(‘bilangan bukan positif’)

endif

Page 14: DASAR-DASAR · diberikan kepada algoritma sebelum algoritma mulai bekerja. 4. Algoritma mempunyai nol atau lebih keluaran (output). Keluaran ialah besaran yang memiliki hubungan dengan

www.mugianet.com - 27 -

Contoh analisis dengan dua kasus : Dibaca sebuah bilangan bulat. Tuliskan algoritma untuk menampilkan pesan “bilangan genap” jika bilangan tersebut adalah genap, atau “bukan bilangan genap” jika bilangan tersebut tidak termasuk dalam bilangan genap Solusi :

Algoritma Bilangan_Genap {Mencetak pesan “bilangan genap” jika sebuah bilangan bulat yang dibaca dari piranti masukan merupakan bilangan genap, dan pesan “bukan bilangan genap jika bilangan tersebut tidak termasuk bilangan genap} DEKLARASI bil : integer DESKRIPSI Read(bil) If bil mod 2 = 0 then Write(‘bilangan genap’) Else Write(‘bukan bilangan genap’) endif

2.2.3. Tiga Kasus Notasi algoritmik untuk analisis dengan tiga kasus adalah dengan menggunakan struktur IF – THEN - ELSE:

If <kondisi1> then Aksi1 Else If <kondisi2> then Aksi2 Else If <kondisi3> then Aksi3 Endif Endif Endif

www.mugianet.com - 28 -

Contoh analisis dengan tiga kasus : Dibaca sebuah bilangan bulat. Tentukan apakah bilangan tersebut positif, negatif atau nol. Buatkan algoritmanya.

Solusi : Misalkan bilangan bulat itu adalah bil. Analisis kasusnya adalah : Kasus bil > 0 maka bil adalah bilangan positif; Kasus bil < 0 maka bil adalah bilangan negatif; Kasus bil - 0 maka bil adalah bilangan nol; Sehingga algoritmanya adalah :

Algoritma Bilangan_Genap {Mencetak pesan “bilangan positif” jika sebuah bilangan bulat yang dibaca dari piranti masukan a>0, atau “ bilangan negatif”, jika bilangan tersebut < 0, atau “nol” jika bilangan tersebut = 0}

DEKLARASI bil : integer

DESKRIPSI Read(bil) If bil > 0 then Write(‘bilangan positif’) Else If bil < 0 then Write(‘bilangan negatif’) Else If bil > = 0 then Write(‘nol’) Endif endif endif

2.2.4. Struktur CASE

Untuk masalah dua kasus atau lebih, struktur CASE dapat menyederhanakan penulisan IF – THEN – ELSE yang bertingkat-tingkat sebagaimana pada contoh sebelumnya. Struktur case adalah : Case (nama) <kondisi1> : Aksi1 <kondisi2> : Aksi2 . . .

<kondisiN> : AksiN [Otherwise aksiX] Endcase

Page 15: DASAR-DASAR · diberikan kepada algoritma sebelum algoritma mulai bekerja. 4. Algoritma mempunyai nol atau lebih keluaran (output). Keluaran ialah besaran yang memiliki hubungan dengan

www.mugianet.com - 29 -

<kondisi1>, <kondisi2>, ...., <kondisiN> bernilai benar atau salah. Tiap kondisi diperiksa nilai kebenarannya mulai dari kondisi pertama sampai ditemukan kondisi yang benar. Jika kondisi ke K benar, maka aksi ke k dilaksanakan. Kondisi berikutnya yaitu kondisi k+1 dapat lebih dari satu, karena itu ia berupa runtunan. Jika tidak ada satupun <kondisi> yang benar, maka aksi sesudah otherwise dikerjakan. Contoh analisis dengan CASE: Dibaca sebuah bilangan bulat. Tuliskan algoritma untuk menampilkan pesan “bilangan genap” jika bilangan tersebut adalah genap, atau “bukan bilangan genap” jika bilangan tersebut tidak termasuk dalam bilangan genap Solusi :

Algoritma Bilangan_Genap {Mencetak pesan “bilangan genap” jika sebuah bilangan bulat yang dibaca dari piranti masukan merupakan bilangan genap, dan pesan “bukan bilangan genap jika bilangan tersebut tidak termasuk bilangan genap}

DEKLARASI bil : integer

DESKRIPSI Read(bil) case bil bil mod 2 = 0 : write(‘bilangan genap’) bil mod 2 ≠ 0 : write(‘bukan bilangan genap’) endcase

2.3. PENGULANGAN (REPETITION/LOOPING) Didalam algoritma, pengulangan (repetition/loop) dapat dilakukan sejumlah kali, atau sampai kondisi berhenti pengulangan tercapai. Struktur pengulangan terdiri atas dua bagian :

Kondisi pengulangan, yaitu ekspresi boolean yang harus dipenuhi untuk melaksanakan pengulangan.

Badan pengulangan, yaitu satu atau lebih aksi yang akan diulang. Bagian lain yang menyertai pengulangan yaitu :

Inisialisasi yaitu aksi yang dilakukan sebelum pengulangan dilakukan pertama kali.

Terminasi, yaitu aksi yang dilakukan setelah pengulangan selesai dilaksanakan.

www.mugianet.com - 30 -

2.3.1. Struktur WHILE – DO Bentuk umum struktur WHILE – DO adalah :

While <kondisi> do AKSI endwhile

Penjelasan : Aksi (atau runtunan aksi) akan dilaksanakan berulangkali sepanjang <kondisi> boolean masih tetap bernilai true. Jika <kondisi> bernilai false, badan pengulangan tidak akan dilaksanakan. Pengulangan selesai. Contoh : Misalkan kita ingin mencetak tulisan “HALLO” sebanyak 3 kali. Maka algoritmanya adalah :

Algoritma Cetak_Banyak_Hallo {Mencetak kata “HALLO” sebanyak 3 kali}

DEKLARASI k : integer {pencacah pengulangan}

DESKRIPSI k 1 {inisialisasi} While k ≤ 3 do write(‘HALLO’) k k + 1 endwhile {kondisi berhenti : k > 3}

Keterangan : Pada mulanya, k diisi dengan nilai 1. Sebelum memasuki badan pengulangan, kondisi k ≤ 3 diperiksa apakah bernilai true. Karena 1 ≤ 3 bernilai true, maka pernyataan write(‘HALLO’) dilaksanakan, sehingga keluaran yang tercetak HALLO Demikian seterusnya sebanyak 3 kali. Setiap kali badan pengulangan dimasuki, nilai k bertambah 1 sampai nilai k = 4. karena 4 > 10 maka kondisi pengulangan k ≤ 3 bernilai false. Pengulangan dihentikan.

Jadi keluaran algoritma tersebut adalah :

HALLO HALLO HALLO

Page 16: DASAR-DASAR · diberikan kepada algoritma sebelum algoritma mulai bekerja. 4. Algoritma mempunyai nol atau lebih keluaran (output). Keluaran ialah besaran yang memiliki hubungan dengan

www.mugianet.com - 31 -

2.3.2. Struktur REPEAT – UNTIL Bentuk umum struktur REPEAT – UNTIL adalah :

Repeat AKSI until <kondisi>

Penjelasan : Notasi ini mendasarkan pengulangan pada kondisi berhenti. Aksi didalam badan pengulangan diulang sampai kondisi boolean bernilai true, dengan kata lain, jika kondisi berhenti masih salah, pengulangan masih terus dilakukan. Karena pengulangan harus berhenti, maka di dalam badan pengulangan harus ada aksi yang mengubah harga kondisi. Perbedaan mendasar dengan struktuw WHILE – DO adalah aksi dilaksanakan minimal 1 kali, karena kondisi pengulangan diperiksa pada akhir struktur. Contoh : Misalkan kita ingin mencetak tulisan “HALLO” sebanyak 3 kali. Maka algoritmanya adalah :

Algoritma Cetak_Banyak_Hallo {Mencetak kata “HALLO” sebanyak 3 kali}

DEKLARASI k : integer {pencacah pengulangan}

DESKRIPSI k 1 {inisialisasi} Repeat write(‘HALLO’) k k + 1 endwhile k > 3 {kondisi berhenti : k > 3}

2.3.3. Struktur FOR Struktur for digunakan untuk menghasilkan pengulangan sejumlah kali tanpa penggunaan kondisi apapun. Struktur ini menyebabkan aksi diulangi sejumlah kali (tertentu) Bentuk umum struktur FOR ada 2 macam yaitu :

www.mugianet.com - 32 -

a. FOR menaik (ascending)

For peubah nilai_awal to nilai_akhir do AKSI Endfor

Keterangan :

Peubah haruslah bertipe sederhana kecuali tipe real Nilai_awal harus lebih kecil atau sama dengan nilai_akhir. Jika nilai_awal lebih

besar dari nilai_akhir, maka badan pengulangan tidak dimasuki. Pada awalnya peubah diinisialisasi dengan nilai_awal. Nilai peubah secara

otomatis bertambah satu setiap kali aksi pengulangan dimasuki, sampai akhirnya nilai peubah sama dengan nilai_akhir.

Jumlah pengulangan yang terjasi adalah nilai_akhir – nilai_akhir + 1. Contoh :

Algoritma Cetak_Banyak_Hallo {Mencetak kata “HALLO” sebanyak 3 kali}

DEKLARASI k : integer {pencacah pengulangan}

DESKRIPSI k 1 {inisialisasi} for k 1 to 3 do write(‘HALLO’) endfor {kondisi berhenti}

b. FOR menurun (descending)

For peubah nilai_akhir downto nilai_awal do AKSI Endfor

Keterangan :

Peubah haruslah bertipe sederhana kecuali tipe real Nilai_akhir harus lebih besar atau sama dengan nilai_awal. Jika nilai_akhir lebih

besar dari nilai_awal, maka badan pengulangan tidak dimasuki. Pada awalnya peubah diinisialisasi dengan nilai_akhir. Nilai peubah secara

otomatis berkurang satu setiap kali aksi diulangi, sampai akhirnya nilai peubah sama dengan nilai_awal.

Jumlah pengulangan yang terjadi adalah nilai_awal – nilai_akhir + 1.

Page 17: DASAR-DASAR · diberikan kepada algoritma sebelum algoritma mulai bekerja. 4. Algoritma mempunyai nol atau lebih keluaran (output). Keluaran ialah besaran yang memiliki hubungan dengan

www.mugianet.com - 33 -

Contoh :

Algoritma Cetak_Banyak_Hallo {Mencetak kata “HALLO” sebanyak 3 kali}

DEKLARASI k : integer {pencacah pengulangan}

DESKRIPSI k 1 {inisialisasi} for k 3 downto 0 do write(‘HALLO’) endfor {kondisi berhenti}

LATIHAN :

Misalkan kita ingin mencetak angka 1, 2, ..., 50 di layar, dengan satu angka pada setiap baris. Buatkan algoritmanya dengan struktur pengulangan while – do, repeat – until dan for.

Misalkan kita ingin mencetak angka 1, 2, ..., N di layar, dengan satu angka pada setiap baris, yang dalam hal ini N dibaca dari piranti masukkan. Buatkan algoritmanya dengan struktur pengulangan while – do, repeat – until dan for.

Hitung jumlah angka dari 1 sampai N. nilai N dibaca dari papan kunci. Misalkan N = 5, maka 1 + 2 + 3 + 4 + 5 = 15. Buatkan algoritmanya dengan struktur pengulangan while – do, repeat – until dan for.

Data bilangan dibaca dari papan kunci. Nilai rat-rata adalah jumlah seluruh bilangan debagi dengan banyak bilangan. Misalkan ada 5 buah data bilangan, yaitu 12, 10, 6, 2, 4 maka rata-ratanya adalah (12 + 10 + 6 + 2 + 4 )/5 = 34/5 = 6,8. Hitung rata-rata dari sejumlah data bilangan bulat tersebut. Buatkan algoritmanya dengan struktur pengulangan while – do, repeat – until dan for.

www.mugianet.com - 34 -

PROSEDUR DAN FUNGSI Program yang besar perlu dipecah dalam sub-sub program (modul). Setiap modul dapat dirancang oleh pemrogram selain dari orang yang mengembangkan program utama. Modul yang sudah ditulis dapat dipasang ke program lain yang membutuhkannya. Teknik seperti ini dinamakan teknik pemrograman modular. Modularisasi program memberikan 2 keungtungan yaitu :

Untuk aktivitas yang dilakukan lebih dari satu kali, modularisasi menghindari penulisan teks program yang sama secara berulangkali.

Kemudahan menulis dan menemukan kesalahan (debug) program. Terdapat 2 jenis modul program yaitu : prosedur (procedure) dan fungsi (function). Struktur setiap modul sama dengan struktur algoritma. 3.1. PROSEDUR Prosedur adalah modul program yang mengerjakan tugas/aktivitas yang spesifik dan menghasilkan efek netto dengan membandingkan keadaan awal dan keadaan akhir pada pelaksanaan sebuah prosedur. 3.1.1. Mendefinisikan Prosedur Pada dasarnya, struktur prosedur sama dengan struktur algoritma. Setiap prosedur mempunyai nama unik dan sebaiknya nama prosedur diawali dengan keta kerja. Notasi algoritmik yang digunakan untuk mendefinisikan struktur prosedur (tanpa parameter adalah :

Procedure Nama_Prosedur {Spesifikasi prosedur, berisi penjelasan tentang yang dilakukan prosedur} {K.awal : keadaan sebelum prosedur dilaksanakan} {K.akhir : keadaan setelah prosedur dilaksanakan }

DEKLARASI {semua nama yang dipakai dalam prosedur dan hanya berlaku lokal di dalam prosedur didefinisikan}

DESKRIPSI {badan prosedur berisi kumpulan instruksi}

Page 18: DASAR-DASAR · diberikan kepada algoritma sebelum algoritma mulai bekerja. 4. Algoritma mempunyai nol atau lebih keluaran (output). Keluaran ialah besaran yang memiliki hubungan dengan

www.mugianet.com - 35 -

Contoh : Buat prosedur untuk mencetak string “HALLO” ke piranti keluaran : Solusi :

Procedure Cetak_Hallo {mencetak string “HALLO” ke piranti keluaran} {K.awal : sembarang} {K.akhir : string “HALLO” tercetak}

DEKLARASI {tidak ada}

DESKRIPSI Write(‘HALLO’)

3.1.2. Pemanggilan Prosedur Prosedur bukan program yang berdiri sendiri, ia tidak dapat dieksekusi secara langsung tetapi harus diakses dengan cara memanggil namanya dari program pemanggil (program utama atau modul program lain). Didalam program pemanggil, kita harus mendeklarasikan purwarupa (prototype) prosedur di dalam bagian DEKLARASI. Purwarupa prosedur hanya berisi bagian header prosedur. Tujuan pendeklarasian purwarupa prosedur adalah supaya program pemanggil mengenal nama prosedur tersebut serta cara mengaksesnya. Contoh : Program utama untuk memanggil prosedur Cetak_Hallo.

Algoritma Hallo {Program utama untuk mencetak string “HALLO”}

DEKLARASI Procedure Cetak_Hallo {mencetak string “HALLO” ke piranti keluaran}

DESKRIPSI Cetak_Hallo {panggil prosedur Cetak_Hallo}

www.mugianet.com - 36 -

3.1.3. Nama Global dan Nama Lokal Nama-nama (tetapan,peubah, tipe, dll) yang dideklarasikan di dalam bagian DEKLARASI prosedur hanya dikenal di dalam nama prosedur yang bersangkutan yang disebut bersifat lokal. Sedangkan nama-nama yang dideklarasikan di dalam program utama dikatakan bersifat global. Nama yang dideklarasikan di dalam prosedur dan di dalam program utama mungkin saja sama, namun sifat lokal dan globalnya tetap tidak berubah. Nama peubah yang dideklarasikan di dalam program utama dan juga dideklarasikan di dalam prosedur, maka di dalam prosedur nama tersebut adalah peubah lokal, dan di luar prosedur ia berlaku sebagai peubah global. 3.1.4. Parameter Penggunaan parameter menawarkan mekanisme pertukaran informasi, tiap item data ditransfer antara parameter aktual dan parameter formal yang bersesuaian. Parameter aktual adalah parameter yang disertakan pada waktu pemanggilan, sedangkan parameter formal adalah parameter yang dideklarasikan di dalam bagian header prosedur itu sendiri. Notasi algoritmik yang digunakan untuk mendefinisikan struktur prosedur dengan parameter adalah :

Procedure Nama_Prosedur(daftar parameter format) {spesifikasi prosedur, berisi penjelasan tentang yang dilakukan oleh prosedur ini} {K.awal : keadaan sebelum prosedur dilaksanakan} {K.akhir : keadaan setelah prosedur dilaksanakan }

DEKLARASI {semua nama yang dipakai dalam prosedur dan hanya berlaku lokal di dalam prosedur didefinisikan}

DESKRIPSI {badan prosedur berisi kumpulan instruksi}

Aturan penting yang harus diamati adalah :

Jumlah parameter aktual pada pemanggilan prosedur harus sama dengan jumlah parameter formal pada deklarasi prosedurnya.

Tiap parameter aktual harus bertipe sama dengan tipe parameter formal yang bersesuaian.

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

Page 19: DASAR-DASAR · diberikan kepada algoritma sebelum algoritma mulai bekerja. 4. Algoritma mempunyai nol atau lebih keluaran (output). Keluaran ialah besaran yang memiliki hubungan dengan

www.mugianet.com - 37 -

Berdasarkan maksud penggunaannya, terdapat tiga jenis parameter formal yang disertakan dalam prosedur yaitu :

Parameter Masukan Pada parameter masukan, nilai (value) parameter aktual akan diisikan (assign) ke dalam parameter formal yang bersesuaian. Nilai ini digunakan di dalam badan prosedur yang bersangkutan yang dinyatakan oleh parameter masukan tidak dapat dikirim dalam arah sebaliknya. Perubahan nilai parameter di dalam badan prosedur tidak mengubah nilai parameter aktual, Karena yang dipentingkan adalah nilainya, maka nama parameter aktual boleh berbeda dengan nama parameter formal yang bersesuaian.

Parameter Keluaran Bila prosedur menghasilkan satu atau lebih nilai yang digunakan oleh program pemanggil, maka nilai keluaran ditampung di dalam parameter keluaran. Bila prosedur yang mengandung parameter keluaran dipanggil, maka nama parameter aktual didalam program pemanggil menggantikan nama parameter formal yang bersesuaian di dalam prosedur. Parameter keluaran dideklarasikan di dalam header prosedur, sebagaimana paramater masukan, tetapi parameter keluaran harus dideklarasikan dengan kata kunci output seperti contoh berikut :

Procedure Satu(input x : integer, output y : real) {contoh prosedur dengan parameter formal berjenis parameter masukan} {K.awal : nilai x sudah terdefinisi} {K.akhir : di dalam prosedur, nilai x ditambah satu, lalu hasilnya dikalikan 10, disimpan ke dalam y}

DEKLARASI {tidak ada}

DESKRIPSI x x + 1 y x * 10

Parameter Masukan/Keluaran

Pada kebanyakan aplikasi, informasi harus dikirim dalam dua arah, sehingga prosedur juga harus dapat mengakomodasi baik masukan dari dan keluaran ke blok program pemanggil. Untuk menghadapi hal itulah kita bisa menggunakan parameter masukan/keluaran. Dengan menggunakan parameter masukan/keluaran, bila parameter aktual diubah nilainya di dalam badan prosedur, maka sesudah pemanggilan prosedur nilai parameter aktual di titik pemanggilannya juga berubah.

www.mugianet.com - 38 -

Deklarasi parameter masukan/keluaran di dalam header prosedur, tetapi harus dideklarasikan dengan kata kunci input/output. Perhatikan contoh dibawah ini:

Procedure Dua(input/output x,y : integer) {menambahkan nilai x dengan 2 dan mengurangi nilai y dengan 2} {K.awal : x dan y sudah berisi nilai} {K.akhir : nilai x bertambah2, nilai y berkurang 2, lalu dicetak ke piranti keluaran}

DEKLARASI {tidak ada}

DESKRIPSI x x + 3 y y – 2 write(‘nilai x dan y diakhir prosedur dua : ‘) write(‘ x = ‘, x) write(‘ y = ‘, y)

Algoritma ABC {program yang memperlihatkan efek penggunaan parameter masukan}

DEKLARASI a, b : integer Procedure Dua(input/output x,y : integer) {menambahkan nilai x dengan 2 dan mengurangi nilai y dg 2} DESKRIPSI a 15 b 10 write(‘nilai a dan b sebelum pemanggilan : ‘) write(‘ a = ‘, a) write(‘ b = ‘, b) Dua write(‘nilai a dan b sesudah pemanggilan : ‘) write(‘ a = ‘, a) write(‘ b = ‘, b)

Hasil dari algoritma tersebut adalah :

nilai a dan b sebelum pemanggilan : a = 15 b = 10

Page 20: DASAR-DASAR · diberikan kepada algoritma sebelum algoritma mulai bekerja. 4. Algoritma mempunyai nol atau lebih keluaran (output). Keluaran ialah besaran yang memiliki hubungan dengan

www.mugianet.com - 39 -

nilai x dan y diakhir prosedur tiga: a = 17 b = 8

nilai a dan b sesudah pemanggilan : a = 17 b = 8 3.2. FUNGSI Fungsi adalah modul program yang memberikan/mengambalikan sebuah nilai yang bertipe sederhana (integer, real, boolean, dan string). Sebagaimana halnya dengan prosedur, fungsi diakses dengan memanggil namanya. Selain itu, fungsi juga dapat mengandung daftar parameter formal. Jenis parameter pada fungsi adalah paramater masukan. Jenis parameter masukan pada fungsi disebabkan oleh kenyataan bahwa parameter pada fungsi merupakan masukan yang digunakan oleh fungsi tersebut untuk menghasilkan nilai. 3.2.1. Mendefinisikan Fungsi Struktur fungsi sama saja dengan struktur algoritma biasanya berikut ini :

Function Nama_Fungsi(input daftar parameter format) tipe hasil {spesifikasi fungsi, menjelaskan apa yang dilakukan dan yang dikembalikan oleh fungsi ini}

DEKLARASI {semua nama yang dipakai dalam algoritma fungsi dideklarasikan disini. Nama yang dideklarasikan di dalam DEKLARASI lokal hanya dikenal dan dipakai di dalam fungsi ini saja}

DESKRIPSI {badan fungsi berisi kumpulan instruksi-instruksi untuk menghasilkan nilai yang akan dikembalikan oleh fungsi} Return hasil {pengembalian nilai yang dihasilkan fungsi}

3.2.2. Pemanggilan Fungsi Fungsi diakses dengan cara memanggil namanya dari program pemanggil diikuti dengan daftar parameter aktual, karena fungsi menghasilkan nilai maka nilai tersebut dapat ditampung dalam sebuah peubah yang bertipe sama dengan tipe fungsi, atau nilai yang diberikan oleh fungsi langsung dimanipulasi. Parameter aktual dapat berupa tetapan, nama tetapan, atau nama peubah asalkan sudah terdefinisi tipe dan harganya.

www.mugianet.com - 40 -

Contoh : Buatkan fungsi untuk menentukan apakah sebuah bilangan bulat merupakan bilangan genap atau ganjil ? Solusi Fungsi :

Function Genap(input n : integer) boolean {mengembalikan niai true jika n adalah bilangan genap dan false jika sebaliknya}

DEKLARASI

DESKRIPSI return (n mod 2 = 0)

Program Pemanggil : Algoritma Genap_Ganjil {program utama menentukan apakah sebulah bilangan genap atau ganjil ?} DEKLARASI bil : integer Function Genap(input n : integer) boolean {mengembalikan niai true jika n adalah bilangan genap dan false jika sebaliknya}

DESKRIPSI read(bil) if Genap (bil) then write(n, ‘ adalah bilangan genap’) else write(n, ‘ adalah bilangan ganjil’) endif

LATIHAN :

Buatkan prosedur dan program pemanggilnya untuk menukarkan dua buah nilai di dalam peubah A dan B !

Buatkan fungsi dan program pemanggilnya untuk menentukan nilai terbesar antara dua buah peubah bilangan bulat A dan B ! Nilai terbesar merupakan keluaran dari prosedur.

Buatkan fungsi dan program pemanggilnya untuk menentukan sebuah tahun kabisat atau bukan kabisat !

Buatkan fungsi dan program pemanggilnya untuk mengembalikan angka romawi untuk angka arab yang diberikan ( hanya untuk angka arab dari 1 sampai 10) !

Page 21: DASAR-DASAR · diberikan kepada algoritma sebelum algoritma mulai bekerja. 4. Algoritma mempunyai nol atau lebih keluaran (output). Keluaran ialah besaran yang memiliki hubungan dengan

www.mugianet.com - 41 -

PEMROSESAN TEKS Tiap-tiap data dalam runtunan diakses satu per satu dari awal sampai akhir. Diakses artinya data tersebut dicapai lalu diproses bergantung pada proses yang diinginkan. Model pengaksesan data yang tersusun secara beruntun dinamakan model pengaksesan beruntun. 4.1. SUSUNAN TEKS Arsip teks untuk selanjutnya kita sebut saja teks adalah arsip yang terdiri dari deretan karakter. Untaian karakter itu dapat membentuk sebuah kata. Yang dimaksud dengan kata adalah kelompok karakter yang dipidahkan dengan kelompok lain dengan satu atau lebih spasi. Dalam meninjau model pengaksesan beruntun pada teks, kita tidak memandang sebuah teks disusun oleh baris-baris teks tetapi lebih condong menyerupai sebuah pita yang birisi runtunan karakter-karakter. Suatu teks P didefinisikan di dalam bagian deklarasi sebagai berikut :

DEKLARASI P : text {P adalah peubah teks}

4.2. TANDA AKHIR TEKS Pemrosesan teks yang sama adalah proses pembacaan. Karena teks berisi runtunan karakter, maka pembacaan teks adalah membaca karakter demi karakter secara beruntun, mulai dari awal teks sampai akhir teks. Akhir teks ditandai dengan sebuah karakter khusus (kita definisikan karakter “.”), bila pembacaan teks bertemu dengan titik maka proses pembacaan teks dihentikan. 4.3. DEFINISI TEKS KOSONG Pemrosesan teks selalu mempertimbangkan keadaan awal teks, yaitu kosong atau tidak kosong. Sebuah teks mungkin saja kosong. Sebuah arsip yang hanya berisi spasi tidak dapat disebut kosong, karena kita telah membuat perjanjian bahwa sembarang tekas harus diakhiri dengan karakter titik, maka teks kosong adalah teks yang hanya berisi karakter titik.

www.mugianet.com - 42 -

4.4. PEMBACAAN TEKS Pembacaan teks dimulai dari awal teks (dari kiri ke kanan), dengan mengaikan ada sebuah pointer yang menunjuk ke karakter yang akan dibaca. Setiap kali karakter yang ditunjuk oleh pointer selesai dibaca, pointer berpindah secara otomatis ke karakter berikutnya. Karakter yang sedang ditunjuk oleh pointer selesai dibaca, pointer berpindah secara otomatis ke karakter berikutnya. Karakter yang sedang ditunjuk oleh pinter dinyatakan di dalam peubah C. Nama peubah C didefinisikan di dalam bagian DEKLARASI program utama, sehingga ia dikenal di seluruh bagian algoritma termasuk prosedur dan fungsi yang dipakai oleh algoritma.

DEKLARASI C : char {karakter yang sedang ditunjuk oleh pointer baca}

Didefinisikan Reset_Teks adalah prosedur universal untuk teks. Reset_Teks menyebabkan pointer akan menunjuk pada karakter pertama di teks. Jika teks kosong, pointer menunjuk karakter titik.

Procedure Reset_Teks {Menyiapkan teks pada posisi awal} {K.awal : sembarang} {K.akhir : pointer menunjuk pada karakter pertama di dalam teks. Akibat pemanggilan prosedur ini, pointer menunjuk ke karakter pertama teks. Karakter yang ditunjuk mungkin ‘.’}

Notasi yang digunakan untuk membaca karakter dari teks P adalah :

Read(P;C) {membaca karakter yang ditunjuk oleh pointer baca dari teks P. Karakter yang dibaca disimpan di dalam pubah C}

Contoh : Menghitung banyaknya karakter di dalam pita (tidak termasuk karakter ‘.’). Buatkan prosedur untuk persoalan diatas !

Page 22: DASAR-DASAR · diberikan kepada algoritma sebelum algoritma mulai bekerja. 4. Algoritma mempunyai nol atau lebih keluaran (output). Keluaran ialah besaran yang memiliki hubungan dengan

www.mugianet.com - 43 -

Solusi :

Procedure Hitung_Banyak_Karakter(output n : integer) {Menghitung banyaknya karakter di dalam teks} {K.awal : sembarang} {K.akhir : n berisi banyaknya karakter di dalam teks }

DEKLARASI {tidak ada}

DESKRIPSI n 0 Reset_Teks Read(P;C) While C ≠ ‘.’ do n n + 1 Read(P,C) {baca karakter berikutnya} Endwhile {C = ‘.’}

LATIHAN :

Buatlah prosedur dan program pemanggil untuk menghitung jumlah karakter ‘B’ di dalam suatu teks !

www.mugianet.com - 44 -

L A R I K Sebuah peubah atau tetapan hanya menyimpan sebuah nilai dari tipe tertentu. Ia tidak dapat menyimpan beberapa buah nilai yang bertipe sejenis. Dalam kegiatan pemrograman, sekumpulan data yang bertipe sama perlu disimpan sementara di dalam memori komputer untuk sewaktu-waktu dimanipulasi. Bila kumpulan data disimpan secara beruntun di dalam memori, maka tiap elemen data dapat diacu dengan menggunakan indeks. Indeks menyatakan posisi data relatif di dalam kumpulannya struktur penyimpanan data seperti itu dinamakan dengan larik (array), atau sering disebut juga tabel, vektor atau peubah majemuk. 5.1. DEFINISI LARIK Larik adalah struktur data yang menyimpan sekumpulan elemen yang bertipe sama, setiap elemen diakses langsung melalui endeksnya. Indeks larik haruslah tipe data yang menyatakan keterurutan, misalnya integer atau karakter. Misalnya larik yang bernama A dengan delapan buah elemen dapat dibayangkan secara lojik sebagai sekumpulan kota yang terurut (vertika atau horizontal). Tiap kotak pada larik tersebut diberi indeks integer 1, 2, 3, .... 8. Tiap elemen larik ditulis dengan notasi : A[1], A[2], A[3], A[4], A[5], A[6], A[7], A[8] Angka didalam kurung siku menyatakan indeks larik. Setiap elemen larik menyimpan sebuah nilai. Karena seluruh elemen larik bertipe sama, maka nilai yang disimpan oleh setiap elemen juga harus bertipe sama. 5.2. MENDEFINISIKAN LARIK DALAM DEKLARASI Larik adalah struktur data yang statik, artinya jumlah elemen larik harus sudah diketahui sebelum program dieksekusi. Jumlah elemen larik tidak dapat diubah, ditambah, atau dikurangi selama pelaksanaan program. Mendefinisikan larik di dalam bagian DEKLARASI berarti :

Mendefinisikan banyaknya elemen larik Mendefinisikan tipe elemen larik

Mendefinisikan banyaknya elemen larik berarti memesan sejumlah tempat di memori. Memori mengalokasikan sejumlah lokasi memori sebanyak elemen larik yang

Page 23: DASAR-DASAR · diberikan kepada algoritma sebelum algoritma mulai bekerja. 4. Algoritma mempunyai nol atau lebih keluaran (output). Keluaran ialah besaran yang memiliki hubungan dengan

www.mugianet.com - 45 -

bersangkutan. Tipe elemen larik dapat bertipe sederhana (integer, real, char, boolean, string), tipe terstruktur (tipe bentukan seperti record) atau bahkan bertipe larik. Contoh mendefinisikan larik di dalam bagian deklarasi :

Sebagai Peubah

DEKLARASI L : array[1..50] of integer Nama_mhs : array[‘a’..’j’] of string Nilai_ujian : array[0..74] of real

Sebagai Tipe Baru

DEKLARASI Type TabInt : array[1..100] of integer P : TabInt

Mendefinisikan Ukuran Maksimum Elemen Larik Sebagai Sebuah Tetapan

DEKLARASI Const Nmaks = 1000 Type TabInt : array[1..Nmaks] of integer P : TabInt

DEKLARASI Harga_barang : array[1..N] of real

DEKLARASI Const N = 15 Harga_barang : array[1..N] of real

5.3. CARA MENGACU ELEMEN LARIK Cara mengacu elemen larik diacu melalui indeksnya. Nilai indeks harus terdefinisi. Dengan mengacu pada larik yang sudah didefinisikan sebelum ini, maka contoh-contoh cara mengacu elemen larik adalah : L[4] {mengacu elemen keempat dari larik L} Nama_mhs[‘b’] {mengacu elemen kedua dari larik nama_mhs}

www.mugianet.com - 46 -

P[k] {mengacu elemen ke k dari larik P, asalkan nilai k sudah terdefinisi}

Harga_barang[i+1] {mengacu elemen ke i dari larik harga_kompuetr, asalkan nilai i sudah terdefinisi}

Contoh memanipulasi atau menggunakan elemen larik :

L[4] 10 {mengisi elemen ke 4 dari larik L dengan nilai 10} Read(P[k]) {membaca elemen ke k dari larik P} If harga_barang[t] < 10000 then Write(‘harga’ murah’) else 5.4. PEMROSESAN LARIK Elemen larik tersusun secara beruntun, karena itu elemennya diproses secara beruntun melalui indeks yang terurut, asalkan indeks tersebut sudah terdefinisi. Pemrosesan beruntun pada larik adalah pemrosesan mulai dari elemen pertama larik. Skema umum algoritma memproses larik disebut juga skema mengunjungi (traversal) larik, berikut :

Procedure Skema_Umum_Pemrosesan_Larik {Memproses setiap elemen larik secara beruntun, mulai dari indeks terkecil sampai indeks terbesar}

DEKLARASI Const Nmaks = 100 {banyak elemen larik} Type larik : array[1..Nmaks] of integer A : larik K : integer {indeks larik}

DESKRIPSI for i 1 to N do proses a[i] Endfor

Proses adalah aksi yang dilakukan terhadap elemen larik. Proses dapat berupa aksi pengisian nilai, pembacaan, penulisan atau manipulasi lainnya. 5.4.1. Menginisialisasi Larik Menginisialisasi larik adalah memberikan harga awal untuk seluruh elemen larik. Inisialisasi kadang-kadang diperlukan misalnya mengosongkan elemen larik sebelum dipakai untuk proses tertentu. Mengosongkan larik bertipe numerik dapat berupa pengisian elemen larik dengan nol, sedangkan pada larik karakter, mengosongkan

Page 24: DASAR-DASAR · diberikan kepada algoritma sebelum algoritma mulai bekerja. 4. Algoritma mempunyai nol atau lebih keluaran (output). Keluaran ialah besaran yang memiliki hubungan dengan

www.mugianet.com - 47 -

larik berarti mengisi elemen larik dengan spasi atau karakter kosong. Nol atau spasi bukanlah satu-satunya nilai yang dipakai untuk inisialisasi. Contoh : a. menginisialisasi elemen larik A[1], A[2], ...A[N] dengan nilai nol

Procedure InisialisasiA(output A : larik) {menginisialisasi setiap elemen larik A dengan nol} {K.awal : larik A belum terdefinisi nilai elemen-elemennya} {K.akhir : seluruh elemen larik A bernilai nol}

DEKLARASI K : integer {pencatat indeks larik}

DESKRIPSI for K 1 to Nmaks do A[K] 0 Endfor

b. menginisialisasi elemen larik A[1], A[2], ...A[N] masing-masing dengan nilai 1, 2, ..N

Procedure inisialisasiB(output A : larik) {menginisialisasi setiap elemen larik A[K] dengan nilai k = 1 , 2 ...N} {K.awal : larik A belum terdefinisi nilai elemen-elemennya} {K.akhir : setelah inisialisasi A[1]=1, A[2]=2,..., A[N]=N }

DEKLARASI K : integer {pencatat indeks larik}

DESKRIPSI for K 1 to Nmaks do A[K] K Endfor

5.4.2. Mengisi Elemen Larik dari Piranti Masukan Selain dengan pengisian nilai, elemen larik dapat diisi nilai yang dibaca dari piranti masukan dengan perintah read seperti contoh berikut :

www.mugianet.com - 48 -

Procedure Baca_Larik(output A : larik) {mengisi elemen larik A[1..N] dengan nilai yang dibaca dari piranti masukan} {K.awal : larik A belum terdefinisi nilai elemen-elemennya, N sudah berisi jumlah elemen efektif} {K.akhir : setelah pembacaan, sebanyak N buah elemen larik A berisi nilai-nilai yang dibaca dari piranti masukan}

DEKLARASI K : integer {pencatat indeks larik}

DESKRIPSI for K 1 to N do read(A[K]) Endfor

5.4.3. Menulis Elemen Larik ke Piranti Keluaran Menulis elemen larik dapat dicetak ke piranti keluaran dengan perintah print, seperti pada contoh prosedur berikut :

Procedure Tulis_larik(input A : larik, input N : integer) {mencetak elelemen larik A[1..N] ke piranti keluaran} {K.awal : N sudah terdefinisi ukuran larik yang terpakai. Elemen larik A[1..N] sudah terdefinisi nilai elemen-elemennya} {K.akhir : diakhir prosedur, sebanyak N buah elemen larik A tersetak nilainya ke piranti keluaran}

DEKLARASI K : integer {pencatat indeks larik}

DESKRIPSI for K 1 to N do write(A[K]) Endfor

5.5. LARIK BERTIPE TERSTRUKTUR Contoh : TabMhs adalah sebuah larik yang elemennya menyatakan nilai ujian seorang mahasiswa untuk suatu mata kuliah (MK) yang ia ambil. Data setiap mahasiswa adalah NIM, nama mahasiswa, mata kuliah yang diambil dan nilai mata kuliah.

Page 25: DASAR-DASAR · diberikan kepada algoritma sebelum algoritma mulai bekerja. 4. Algoritma mempunyai nol atau lebih keluaran (output). Keluaran ialah besaran yang memiliki hubungan dengan

www.mugianet.com - 49 -

Maka algoritmanya sebagai berikut :

Algoritma Baca_Larik_Mahasiswa {mengisi elemen larik mahasiswa dengan data yang dibaca dari piranti masukan}

DEKLARASI Const Nmaks = 100 Type mahasiswa : record <NIM : integer NamaMhs : string KodeMK : string Nilai : char > TabMhs : array[1..Nmaks] of mahasiswa K : integer N : integer

DESKRIPSI Read(N) for K 1 to N do read(TabMhs[K].NIM) read(TabMhs[K].NamaMhs) read(TabMhs[K].KodeMK) read(TabMhs[K].Nilai) Endfor