Anda di halaman 1dari 30

BAB II TINJAUAN PUSTAKA Konsep pemrograman komputer menjadi sangat penting bagi setiap orang yang berkecimpung dengan

dunia komputer dan tidak hanya yang berhubungan dengan informatika, tetapi hampir setiap disiplin ilmu memerlukannya. Untuk itu disini akan sedikit dibahas mengenai bagian-bagian bahasa pemrograman procedural dengan bahasa Pascal . Bahasa pemrograman procedural merupakan bahasa pemrograman yang melibatkan fungsi-fungsi atau prosedur-prosedur sebagai sub program untuk membentuk solusi dari suatu permasalahan. Berbeda halnya dengan bahasa pemrograman yang berorientasi obyek, yang menggunakan pendekatan obyek dalam menyelesaikan suatu persoalan. Konsep pemrograman terstruktur memegang peran penting dalam merancang, menyusun, memelihara dan mengembangkan suatu program, khususnya program aplikasi yang besar dan kompleks. Sebelum masuk lebih dalam mengenai struktur dalam pemrograman procedural, kita akan membahas mengenai langkah-langkah sistematis dalam pembuatan suatu program, sebagai berikut: 1. Mendefinisikan permasalahan 2. Membuat rumusan untuk pemecahan masalah 3. Implementasi 4. Menguji coba dan membuat dokumentasi 1. Mendefinisikan Permasalahan Yang dimaksud mendefinisikan permasalahan yaitu kita harus mengerti dengan baik mengenai permasalahan apa yang ingin diselesaikan. Contoh: a. b. c. Permasalahan menghitung gaji karyawan, dengan data yang Permasalahan menampilkan bilangan terbesar dari N buah bilangan Permasalahan mengkonversikan nilai cek dari bentuk angka ke diketahui adalah jam kerja maksimum. beserta berapa kali bilangan tersebut. bentuk terbilang dalam Bahasa Inggris.

d.

Permasalahan mengkonversikan nilai suhu asal ke tujuan sesuai

dengan keinginan. 2. Membuat Rumusan untuk Pemecahan Masalah Setelah kita mengetahui dengan baik mengenai permasalahan yang ingin diselesaikan, langkah selanjutnya yaitu membuat rumusan algoritma untuk memecahkan masalah. Rumusan tersebut dapat disusun dalam bentuk pseudocode ataupun flowchart. 3. Implementasi Apabila langkah 1 dan 2 belum melibatkan bahasa pemrograman, maka langkah ketiga ini telah mulai melibatkan bahasa pemrograman yang ingin digunakan. Di dalam mengimplementasi algoritma kita akan menentukan bahasa pemrograman apa yang cocok atau ingin kita gunakan. Misalnya Pascal atau Delphi, Basic, dan sebagainya. Implementasi tersebut tentunya mengacu pada algoritma yang telah disusun pada langkah sebelumnya, baik itu variable-variable yang digunakan maupun alur program. Jika program diimplementasikan dengan bahasa pemrograman yang bersifat visual dan event driven (melibatkan desain form dan event-event) seperti Visual Basic atau Delphi, maka perlu pula diperhatikan langkah-langkah berikut: 1. Menambahkan obyek-obyek control pada Form seperti EditBox, ComboBox, Button, dll 2. Mengatur posisi control, properties kontrol (seperti caption, warna, jenis tulisan, dan sebagainya), serta urutan fokus obyek-obyek yang ada pada form. 3. Pemberian nama obyek kontrol yang sesuai. Misalnya untuk input diameter diberi nama txtDiameter. 4. Menentukan event-event kontrol yang berpengaruh pada fungsionalitas program 5. Mulai coding

4. Menguji Coba dan Membuat Dokumentasi. Setelah selesai implementasi, langkah selanjutnya yaitu menguji program tersebut apakah telah berjalan sesuai dengan tujuannya untuk memberi solusi dari suatu permasalahan. Apabila program belum berjalan dengan baik, maka kita perlu mengkaji kembali rumusan/algoritma yang telah dibuat pada langkah kedua, serta memperbaiki implementasi program yang mungkin keliru. Untuk memudahkan dalam memeriksa kesalahan suatu program ataupun memahami jalannya program, kita juga perlu membuat dokumentasi dari program yang dibuat. Dokumentasi tersebut berisi informasi mulai dari tujuan/fungsi program, algoritma program, hingga cara menggunakannya. Struktur Bahasa Program Procedural Secara umum, bahasa pemrograman yang berbasiskan prosedur terdiri dari blok/sub program. Yang memiliki dua bagian utama yaitu: 1. Bagian Deklarasi 2. Bagian Statement Bagian Deklarasi Bagian deklarasi merupakan bagian program untuk mendefinisikan tipe data suatu variable, konstanta, serta fungsi dan prosedur yang akan digunakan pada program. Selain itu, bagian deklarasi dapat juga digunakan untuk memberi nilai awal suatu variable. Dengan kata lain, deklarasi digunakan untuk memperkenalkan suatu nama kepada Compiler program. Berikut contoh deklarasi: a. Deklarasi Variable: Untuk mendeklarasikan variable pada Pascal, digunakan reserved word var, kemudian diikuti dengan nama variable (identifier) yang ingin digunakan, dan kemudian tipe data dari variable tersebut. Suatu identifier harus diawali oleh karakter bukan angka, tetapi tidak boleh mengandung karakter khusus seperti * , - + / \ = < > . ? & dan sebagainya. Pada bahasa Pascal, identifier tidak bersifat case sensitive, maksudnya, huruf besar ataupun huruf kecil dianggap sama.Variabel adalah suatu lokasi di memori yang

disiapkan oleh programmer dan diberi nama yang khas untuk menampung suatu nilai dan atau mengambil kembali nilai tersebut. Bentuk umum:
var Nama_variabel_1, Nama_variabel_2, Nama_variabel_N : tipe_data_1;

Atau
var Nama_variabel_1, Nama_variabel_2, Nama_variabel_N : tipe_data_1; Kode 2.1 Deklarasi varibel

b.

Deklarasi Konstanta pada Pascal

Konstanta jika dalam membuat suatu program anda sering menggunakan bilangan numerik atau suatu kalimat string yang sama berkali-kali, ada baiknya anda menjadikan bilangan atau kalimat tersebut sebagai suatu konstanta. Manfaat konstanta adalah penggunaan konstanta akan membuat program anda menjadi lebih mudah dimengerti dan diperbaiki. Dengan menggunakan konstanta, anda akan dapat memberikan nama yang mudah dipahami untuk suatu bilangan numerik yang kompleks. Tentunya anda akan lebih mudah menulis pi, daripada harus menuliskan 3.1415926536 berkali-kali pada program anda. Dan jika ingin mengganti nilai pi tersebut dengan 3.14, maka anda hanya perlu menggantinya sekali saja, yaitu pada bagian deklarasi dari konstanta tersebut. Deklarasi Konstanta Konstanta dideklarasikan pada awal program sebelum blok begin-end program utama dituliskan. Untuk mendeklarasikan konstanta harus diawali dengan kata baku const.

Bentuk Umum
Const Konstanta_1 = nilai_konstanta_1; Konstanta_2 = nilai_konstanta_2; Konstanta_3 = nilai_konstanta_3; Konstanta_N = nilai_konstanta_N; Kode 2.2 Deklarasi konstanta

Ada baiknya jika anda menuliskan kata baku const pada baris yang terpisah dengan nama konstanta-nya. Meskipun tidak salah jika anda menuliskannya dalam satu baris seperti berikut ini. Namun, anda bebas memilih gaya penulisan mana yang lebih anda sukai. Sesuai dengan namanya konstanta, maka nilai dalam konstanta tersebut akan selalu konstant (tetap). Anda tidak dapat mengganti konstanta pada saat program sedang dijalankan. i Konstanta bertipe Konstanta bertipe adalah konstanta yang dideklarasikan dengan tipe tertentu. Bentuk umum: Const
konstanta_1 : tipe_1 = nilai_konstanta_1; konstanta_2 : tipe_2 = nilai_konstanta_2; konstanta_N : tipe_N = nilai_konstanta_N; Kode 2.3 Deklarasi konstanta bertipe

const phi = 3.14; Penjelasan: Konstanta yaitu nilai yang tetap. Jadi jika mengacu pada contoh di atas, maka nilai phi tidak dapat diubah-ubah dan akan selalu 3.14

c.

Deklarasi Tipe Data Pascal

Tipe Data dapat dikelompokkan menjadi: Tipe Data Sederhana Pascal telah menyediakan beberapa tipe data sederhana yang sudah siap anda pakai. Pada saat mendeklarasikan sebuah Variabel anda secara otomatis harus mendeklarasikan tipe data yang dapat ditampung oleh Variabel tersebut. Tipe-tipe data sederhana yang telah disiapkan oleh pascal adalah sebagai berikut a. integer b. boolean c. real d. char e. string Integer Tipe data integer adalah tipe data yang nilainya merupakan bilangan bulat. Tipe data integer terbagi atas beberapa macam.
Tabel 2.1 Tipe Data Integer

Type ShortInt Integer LongInt Byte Word Boolean

Range -128 .. 127 -32768 .. 32767 -2147483648..214783647 0..255 0..65535

Ukuran dalam byte 1 2 4 1 2

Format Signed 8-bit Signed 16-bit Signed 32-bit unsigned 8-bit Signed 16-bit

Tipe data boolean biasa digunakan untuk merepresentasikan logika. tipe data boolean hanya dapat bernilai true (1) atau false (0). Beberapa macam tipe data boolean dirangkum pada tabel di bawah ini.
Tabel 2.2 Tipe Data Boolean

Type Range Ukuran dalam byte Boolean Byte-sized 1 (8-bit) ByteBool Byte-sized 1 (8-bit) WordBool Word-sized 2 (16-bit) LongBool LongInt-sized 4 (32-bit) Tipe data ByteBool, WordBool, dan LongBool biasa dipakai dalam pembuatan program untuk windows. Untuk program Dos pada umumnya menggunakan tipe

10

Boolean.Dalam suatu ekspresi, operator-operator seperti =, <>, >, <, >=, <= dan Ini akan banyak dipakai untuk menentukan hasil dari suatu tipe data boolean. Real/Floating point Tipe data real biasa digunakan untuk merepresentasikan nilai pecahan. Tipe data real ini juga tersedia atas beberapa macam yang berbeda dalam range dan besar memori yang disediakan. Jenis-jenis tipe real tersebut dirincikan pada tabel di bawah ini.
Tabel 2.3 Tipe Data Real

Type Real Single Double Extended Comp

Range 2.9x10-39 .. 1.7x1038 1.5x10-45 .. 3.4x1038 5x10-324 .. 1.7x10308 3.4x10-4932 .. 1.1x104932 -9.2x1018 .. 9.2x1018

Ukuran 6 4 8 10 8

Digit 11-12 7-8 15-16 19-20 19-20

Ada baiknya jika anda menentukan berapa banyak karakter dalam tipe string tersebut dibutuhkan. Hal ini berhubungan dengan jumlah memori yang dialokasikan. Seperti pada contoh di atas Variabel nama mengalokasikan tempat sebanyak 25 karakter, dan berarti memori yang dialokasikan sebesar 25 byte. Akan sia-sia jika anda menuliskan secara default (256 karakter) karena jarang sekali bahkan mungkin tidak ada seseorang yang memiliki nama dengan panjang 256 karakter. Tipe data sederhana merupakan tipe data yang paling kecil, yang hanya melibatkan satu item data, misalnya tipe data integer, string, real, boolean, dan sebagainya. Kita dapat juga mendefinisikan sendiri tipe data ini. Tipe data yang didefinisikan sendiri tersebut diistilahkan enumerated data type 1. Tipe Data Enumerasi Adalah tipe data baru yang elemennya anda sebutkan satu per satu.

Bentuk umum :
Type <NamaType> = (elemen_1, elemen_2, , elemen_N);

11

Kode 2.4 Bentuk umum data Enumerasi

2. Tipe Data terstruktur Tipe data terstruktur merupakan tipe data yang terdiri dari beberapa item data. Bentuk dari tipe data ini dapat berupa array (terdiri dari item-item yang memiliki tipe data yang sama) ataupun record (terdiri dari item-item yang boleh memiliki tipe data yang berbeda). 3. Tipe Data Pointer Tipe data pointer digunakan untuk menunjuk pada alamat memory suatu data yang lain. Jadi tipe data pointer pada dasarnya tidak menyimpan nilai data secara langsung, melainkan hanya menyimpan alamat dimana data berada. d. Deklarasi Procedure/Function:

Pascal yang menyertakan reserved word procedure dan function untuk membedakan antara keduanya. Sebenarnya, perbedaan utama antara prosedur dan fungsi yaitu prosedur adalah fungsi yang tidak mengembalikan suatu nilai. Sebaliknya fungsi adalah suatu prosedur yang mengembalikan nilai procedure pada dasarnya adalah function yang mengembalikan void alias tidak mengembalikan nilai apa-apa. Procedure dan Function disebut juga subroutine, merupakan blok statement yang dapat dipanggil dari lokasi yang berbeda di dalam program. Yang membedakan antara function dan procedure yaitu suatu function jika dijalankan/dipanggil akan mengembalikan suatu nilai. Pada Bahasa C, semua subroutine adalah function. Apabila kita ingin membuat subroutine yang tidak mengembalikan nilai, kita dapat memberi nilai kembalian berupa void. Ketika procedure atau function dipanggil, kita dapat melewatkan suatu nilai ke dalam function atau procedure tersebut. Nilai yang dilewatkan disebut juga argument atau parameter. Ada dua cara melewatkan nilai, yaitu:

1. Passing by Value (Dilewatkan secara nilai) Jika di dalam procedure atau function dilakukan perubahan nilai, parameter yang dilewatkan secara nilai, maka nilai parameter yang sebenarnya

12

tidak ikut berubah, hal ini dikarenakan parameter yang dilewatkan secara nilai akan dicopy sebagai nilai local di procedure/function yang bersangkutan 2. Passing by Reference Jika di dalam procedure atau function dilakukan perubahan nilai parameter yang dilewatkan secara reference, maka nilai parameter yang sebenarnya juga akan berubah. Bagian Statement Bagian statement merupakan bagian program yang berisi perintah yang akan dieksekusi/dijalankan. Pada bahasa Pascal, bagian statement selalu diawali dengan reserved word begin dan end. Apabila blok statement adalah blok utama program, maka reserved word end harus diakhiri dengan tanda titik(.), sebaliknya jika blok statement bukan blok utama program maka reserved word end diakhiri dengan tanda titik koma (;).statement diawali dan diakhiri dengan tanda kurung kurawal { dan }. Pascal adalah suatu bahasa pemrograman terstruktur yang cukup terkenal sampai saat ini dan terus mengalami perkembangan. Borland Delphi adalah merupakan perkembangan lanjut dari pascal. Ada baiknya jika anda mengenal bahasa pascal sebelumnya agar lebih mudah mempelajari delphi nantinya, terutama dalam membuat unit-unit dalam delphi. Dalam mata kuliah ini dijelaskan mengenai cara-cara pembutan dan penulisan program dengan menggunakan bahasa pascal beserta pembuatan dan penulisan struktur data baik dengan array maupun dengan linked list. Selain itu mata kuliah ini dapat membantu mengembangkan dan melatih logika anda untuk menjadi lebih kreatif dalam membuat program. Pemrograman terstruktur digunakan untuk menghindari instruksi peralihan proses tanpa syarat tertentu (GOTO) dalam pembuatan segala bentuk program karena akan menjadikan program tidak terstruktur dengan baik. Namun demikian penerapan ini tidak semata-mata hanya untuk menghindari penggunaan instruksi GOTO, tetapi untuk menciptakan program yang terstruktur dan sistimatis. Istilah-istilah dasar Beberapa istilah dasar yang perlu dipahami lebih dahulu, yaitu:

13

a. Program adalah kata, ekspresi, pernyataan atau kombinasinya 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. b. Bahasa Pemrograman merupakan prosedur/tata cara penulisan program. Pada bahasa pemrograman terdapat dua faktor penting, yaitu sintaks dan semantik. Sintaks adalah aturan-aturan gramatikal yang mengatur tata cara penulisan kata, ekspresi dan pernyataan, sedangkan sematik adalah aturanaturan untuk menyatakan suatu arti. c. Pemrograman merupakan proses mengimplementasikan urutan langkah untuk menyelesaikan pemrograman. d. Pemrograman terstruktur merupakan proses mengimplementasikan urutan langkah untuk menyelesaikan suatu masalah dalam bentuk program yang memiliki rancang bangun yang terstruktur dan tidak berbelit-belit sehingga mudah ditelusuri, dipahami dan dikembangkan oleh siapa saja. Ciri Teknik Pemrograman Terstruktur Teknik pemrograman terstruktur memiliki ciri atau karakteristik sebgai berikut: a. Mengandung algoritma pemecahan masalah yang tepat, benar, sederhana, standar dan efektif. b. Memiliki struktur logika dan struktur program yang benar dan mudah dipahami serta menghindari penggunaan instruksi GOTO. c. Membutuhkan biaya testing, pemiliharaan dan pengembangan yang rendah. d. Memiliki dokumentasi yang baik. Sruktur Program Pascal Sebuah program Pascal yang lengkap adalah terdiri dari : a. Kepala program Kepala program selalu diawali dengan kata tercadang program dan diikuti dengan nama program dan diikuti dengan tanda titik koma. Dalam sebuah program, kepala program bersifat opsinal yang artinya tidak harus ada. Tetapi suatu masalah dengan menggunakan suatu bahasa

14

dalam setiap program sebaiknya diberikan sebuah nama untuk lebih mudah dikenali maksud dari pembuatan program tersebut. b. Bagian deklarasi Bagian deklarasi dapat terdiri dari sejumlah bagian yaitu : Bagian deklarasi label Bagian deklarasi konstanta Bagian deklarasi tipe Bagian deklarasi Variabel Bagian deklarasi sub program yang penting sebelum mengunakannya harus sudah

Semua bagian diatas dapat dideklarasikan secara bebas tanpa harus mengurutkannya, dideklarasikan terlebih dahulu, kecuali bagian Variabel tidak boleh dideklaresikan sebelum tipe mengingat tipe akan digunakan oleh bagian Variabel. c. Bagian Pernyataan Bagian pernyataan dari suatu program selalu diawali dengan kata tercadang Begin dan diakhiri dengan kata End seperti berikut :
Begin Pernyataan; Pernyataan; End.

Kode Program 2.5 Bagian Utama dari Sebuah Program Pascal

Pendeklarasian Variabel Variabel adalah suatu tempat yang dipesan dengan nama tertentu yang digunakan untuk menampung suatu data pada program. Variabel ada yang termasuk variabel global dan ada juga yang termasuk variabel lokal. Variabel global dapat diakses secara global dalam sebuah program sedangkan variabel lokal hanya bisa diakses oleh suatu fungsi atau prosedur yang mendeklarasikannya. Penamaan variabel memiliki aturan sebagai berikut ; a. Diawali dengan huruf, bukan angka, tanda baca ataupun operator matematika dan operator logika. b. Karakter setelah karakter pertama boleh berupa angka. c. Tidak boleh menggunakan tanda baca dan spasi.

15

d. Tidak boleh menggunakan kata tercadang atau reserve word. e. Panjang maksimal karakter sesuai tergantung dari bahasa pemrograman yang digunakan. f. Penamaan diusahakan sesuai dengan kegunaannya. g. Dalam beberapa bahasa pemrograman ada yang bersifat sensitive case. Pendeklarasian Variabel selalu didahului dengan kata var diikuti oleh nama_Variabel, dibelakang nama_varaibel diikuti oleh tanda titik dua (:), tipe Variabel dan diakhiri denagan tanda titik koma(;). Contoh pendeklarasian suatu Variabel :
Var HargaSatuan,HargaTotal: real; Kode Program 2.6 Deklarasi Variabel

Pengenalan Fungsi Fungsi bersifat memberikan nilai atau hasil dari fungsi tersebut setiap kali fungsi tersebut dipanggil. Suatu fungsi umumnya mempunyai parameter yang ditulis dalam tanda ( ), tetapi suatu fungsi dapat saja tidak memiliki parameter yaitu fungsi yang memang sudah disediakan oleh bahasa pemrograman yang digunakan. Daftar parameter dapat terdiri dari sejumlah parameter. Tipe pada parameter menyatakan tipe dari masing-masing parameter dan tipe fungsi menyatakan tipe dari hasil fungsi. Contoh pendeklarasian suatu fungsi :
Function konversi(c:real;f:real):real; Begin Pernyataan End;

Kode Program 2.7 Contoh Deklarasi Sebuah Fungsi

Contoh penggunaan fungsi dalam program :

16

Program contoh; Uses wincrt; Var C,F,hasil : real; Function konversiC_F(C:real):real; Begin KonversiC_F:= 9/5 * C + 32; End; Begin {program utama} Write(masukkan nilai C); Readln(C); Writeln(nilai F adalah : ,KonversiC_F(C));

End.

Kode Program 2.8 Contoh Penggunaan Fungsi

Seni Penulisan Program Dalam penulisan program atau coding, kita boleh saja memilih seni atau gaya penulisan secara bebas selama tidak menyalahi aturan penulisan program tersebut, tetapi Program yang baik adalah program yang mudah dipahami dan mudah diperbaiki bila mana terjadi kesalahan atau ingin mengembangkanya. Jika kita menulis program tanpa memandang gaya penulisannya, mungkin kita bisa menghemat memori, tetapi bila kita ingin memperbaikinya tentu kita akan mengalami kesulitan karena ditulis secara tidak terstruktur. Array Array adalah struktur data yang terdiri dari beberapa Variabel, yang mana bisa diakses dengan komputasi index. Variabel yang ada pada array, yang biasanya disebut elemen dari array, harus dalam tipe data yang sama, dan tipe data ini yang disebut tipe elemen dari array yang bersangkutan. Sebuah array memiliki tingkatan yang menunjukkan jumlah indeks elemen-element yang terdapat dalam array tersebut. Tingkatan array biasa disebut dengan dimensi array. Array tingkat satu disebut array dimensi satu, sedangkan array dengan tingkatan lebih dari satu disebut array multi dimensi. Dalam bahasa pascal, array dideklarasikan secara statis, yang mana programer harus menentukan deklarasi dan dimensi dari array tersebut pada saat pembuatan program, bukan pada saat program tersebut berjalan (Run-Time). Indeks array dalam bahasa pascal bisa ditentukan sendiri oleh programer.

17

Syntak pendeklarasian array dalam bahasa pascal adalah


NamaArray : array [indexAwal..indexAkhir] of TipeData Kode Program 2.9 Deklarasi array

Statemen Kontrol Lanjutan Dalam bahasan pascal perulangan ada tiga yaitu For, While dan Repeat, ketiga perulangan tersebut mempunyai karakteristik, dan penerapan yang berbeda beda. a. For For digunakan untuk melakukan proses perulangan, yang mana jumlah proses perulangan tersebut sudah diketahui dengan pasti. Perulangan For biasanya dipakai untuk operasi yang ada hubungannya dengan indexing array. Flowchart dari perulangan for adalah sebagai berikut.
Mulai

I1

I 10

Tidak

Selesai

Ya Proses yang akan diulang

II+ 1

Gambar 2.1 Flowchart Statemen For

Contoh sintak statemen For :

18

For I := 1 To 10 Do Begin {Statemen yang akan diulang} End;

Kode Program 2.10 Contoh Sintak Statemen For

Dari contoh diatas dapat dilihat bahwa akan terjadi perulangan sebanya 10 kali yaitu dari 1 sampai dengan 10. b. While..Do While digunakan untuk melakukan perulangan, yang mana perulangan tersebut akan terus bekerja selama syarat perulangan masih terpenuhi. Pengecekan syarat terjadi pada awal perulangan, sehingga mungkin saja tidak terjadi perulangan. Flowchart perulangan While sama dengan flowchart perulangan For.

Mulai

I1

I 10

Tidak

Selesai

Ya Proses yang akan diulang

I I+ 1

Gambar 2.2 Flowchart Perulangan While

Contoh penggunaan Statemen While

19

I := 1; While I <= 10 Do Begin Statement yang diulang I := I + 1; End; Kode Program 2.11 Contoh Sintak Statemen While

Dari contoh diatas dapat dilihat bahwa akan terjadi perulangan sebanya 10 kali yaitu dari 1 sampai dengan 10. c. Repeat..Until Repeat sama halnya dengan While digunakan untuk melakukan perulangan dengan syarat tertentu, tetapi disini perulangan akan berhenti jika syarat perulangan sudah terpenuhi. Disamping itu pengecekan syarat perulangan dilakukan dibagian bawah perulangan. Sehingga paling tidak akan terjadi satu kali proses. Flowchart statement while adalah sebagai berikut.
Mulai

I0

Proses yang akan diulang

I I+ 1 Tidak

I = 10

Ya

Selesai

Gambar 2.3 Flowchart Perulangan Repeat Until

Contoh penggunaan Statemen Repeat Until

20

I := 1; Repeat Statement yang diulang I := I + 1; Until I = 10;

Kode Program 2.12 Contoh Sintak Statemen Repeat Until

Membangkitkan Bilangan Acak Untuk mendukung pembangkitan bilangan acak, Turbo Pascal menyediakan : Pernyataan Randomize Fungsi Random Variabel Randseed Fungsi random berguna untuk memperoleh sebuah bilangan acak. Pernyataan Randomize dipakai untuk memberi nilai awal untuk pembangkitan bilangan acak berdasarkan jam sistem. Dengan menggunakan prosedur ini akan diperoleh bilangan acak yang benar-benar acak untuk setiap waktu. Sedangkan untuk memperoleh bilangan acak yang setiap saat dijalankan akan memberikan nilai yang sama, kita biasa mengatur melalui Variabel Randeed. Adapun contoh pembangkitan blangan acak dapat kita lihat pada program di bawah ini : a. Dengan Randseed
PROGRAM Acak ; { -----------------------------} { Pembangkitan Bilangan Acak } { -----------------------------} USES WinCrt; BEGIN Clrscr ; Randseed := 6 ; WriteLn (Random) ; WriteLn (Random) ; WriteLn (Random) ; Write (Tekan Enter) ; ReadLn ; END. Kode Program 2.13 Contoh Sintak bilangan acak dengan Randseed

Jika program diatas di-run, maka outputnya adalah sebagai berikut :

21

Gambar 2.4 Hasil Run Program Randseed 1

Jika program tersebut di-run sekali lagi, maka akan didapatkan output sebagai berikut :

Gambar 2.5 Hasil Run Program Randseed 2

Dari hasil diatas dapat disimpulkan bahwa pembangkitan bilangan acak dengan menggunakan Randseed akan menghasilkan hasil yang selalu sama. b. Dengan Randomize
PROGRAM Acak ; { ------------------------------} { Pembangkitan Bilangan Acak } { ------------------------------} USES WinCrt; BEGIN Clrscr ; Randomize ; WriteLn (Random) ; WriteLn (Random) ; WriteLn (Random) ; Write (Tekan Enter) ; readLn ; END.

Kode Program 2.14 Contoh Sintak bilangan acak dengan Randomize

Jika program diatas di-run, maka outputnya adalah sebagai berikut :

22

Gambar 2.6 Hasil Run Program Randomize 1

Jika program tersebut di-run sekali lagi, maka akan didapatkan output sebagai berikut :

Gambar 2.7 Hasil Run Program Randomize 2

Dari hasil diatas dapat disimpulkan bahwa pembangkitan bilangan acak dengan menggunakan Randomize akan menghasilkan hasil yang berbedabeda setiap saat di-Run. Sorting atau pengurutan Adalah proses pengaturan sekumpulan objek menurut urutan atau susunan tertentu. Urutan objek tersebut dapat menaik (ascending) atau menurun (descending). Bila n buah objek (atau data) disimpan di dalam larik L, maka pengurutan menaik berarti menyusun elemen larik sedemikian sehingga : L [1] L [2] L [3] L [n] Sedangkan pengurutan menurun berarti menyusun elemen larik sedemikian sehingga : L [1] L [2] L [3] L [n] Data yang diurut dapat berupa data bertipe dasar atau tipe terstruktur (record). Jika data bertipe terstruktur, maka harus dispesifikasikan berdasarkan field apa

23

data tersebut diurutkan. Field yang dijadikan dasar pengurutan dikenal sebagai field kunci. Berikut ini adalah beberapa contoh data yang terurut : 23, 27, 45, 67, 100, 130, 501 (data bertipe integer terurut menaik) 50.27 , 31.009 , 20.3 , 19.0 , -5.2 , -10.9 (data bertipe real terurut menurun) Amir, Badu, Budi, Dudi, Eno, Rudi, Zamzami (data bertipe string terurut menaik) Searching atau pencarian Adalah menemukan nilai (data) tertentu di dalam sekumpulan data yang bertipe sama (baik bertipe dasar atau bertipe bentukan). Aktivitas yang berkaitan dengan pengolahan data sering didahului dengan proses pencarian. Sebagai contoh, untuk mengubah (update) keberadaan data tersebut di dalam kumpulannya. Jika data yang dicari ditemukan, maka data tersebut dapat diubah nilainya dengan data yang baru. Aktivitas awal yang sama juga dilakukan pada proses penambahan (insert) data baru. Proses penambahan data dimulai dengan mencari apakah data yang akan ditambahkan sudah terdapat di dalam kumpulan. Jika sudah ada dan mengasumsikan tidak boleh ada duplikasi data maka data tersebut tidak perlu ditambahkan, tetapi jika belum ada, maka tambahkan. a. Pengurutan data dengan metode Insertion Sort Dari namanya, pengurutan sisipan (insertion sort) adalah metode pengurutan dengan cara menyisipkan elemen larik pada posisi yang tepat. Pencarian posisi yang tepat dilakukan dengan penyisiran larik. Selama penyisiran dilakukan pergeseran elemen larik. Metode pengurutan sisip untuk persoalan menyisipkan elemen baru ke dalam sekumpulan elemen yang sudah terurut. Contoh dari penggunaan metode ini adalah sebagai berikut : Tinjau larik n = 6 buah elemen di bawah ini yang belum terurut. Larik ini akan diurut menaik dengan metode pengurutan sisipan :

24

29

27

10

76

21

Asumsikan : elemen y = L [1] = 29 sudah terurut


29 27 10 8 76 21

1 Pass 2 :

(berdasarkan susunan larik pada akhir pass 1) Cari posisi yang tepat untuk y = L [2] = 27 di dalam l [1..2], diperoleh :
27 29 10 8 76 21

1 Pass 3 :

(berdasarkan susunan larik ada akhir pass 2) Cari posisi yang tepat untuk y = L [3] = 10 di dalam L [1..3], diperoleh :
10 27 29 8 76 21

1 Pass 4 :

(berdasarkan susunan larik ada akhir pass 3) Cari posisi yang tepat untuk y = L [4] = 8 di dalam L [1..4], diperoleh :
8 10 27 29 76 21

Pass 5 : (berdasarkan susunan larik ada akhir pass 4) Cari posisi yang tepat untuk y = L [5] = 76 di dalam L [1..5], diperoleh :

25

10

27

29

76

21

1 Pass 6 :

(berdasarkan susunan larik ada akhir pass 5) Cari posisi yang tepat untuk y = L [6] = 21 di dalam L [1..6], diperoleh :
8 10 21 27 29 76

Sehingga pada akhirnya semua elemen-elemen larik tersusun menaik dengan benar. b. Pengurutan Data dengan Metode Shell Sort Metode pengurutan data Shell Sort, dilakukan dengan cara menukarkan data yang ada dengan rentang indeks berubah-ubah dan menurun. Misalnya kita memiliki data dengan urutan sebagai berikut. 3, 5, 1, 2, 4. Maka proses pengurutan akan berjalan seperti ditunjukkan pada gambar berikut.

Gambar 2.8 Proses pengurutan

Dari gambar dapat dilihat, pertama dilakukan pembandingan antara data yang mempunyai rentang index 2, kemudian dilakukan pembandingan antara data yang mempunyai rentang index 1. Sehingga pada akhir Proses akan didapat data yang diurut dengan benar.

26

c. Pengurutan Data dengan Metode Bubble Sort Metode pengurutan apung (bubble short) diinspirasikan oleh gelembung sabun yang berada diatas permukaan air. Karena berat jenis gelembung sabun lebih ringan daripada berat jenis air, maka gelembung sabun selalu terapung ke atas permukaan. Secara umum, benda-benda yang berat akan terbenam dan benda-benda yang ringan akan terapung ke permukaan. Prinsip pengapungan di atas juga digunakan pada pengurutan apung. Apabila kita menginginkan larik terurut menaik, maka elemen larik yang berharga paling kecil diapungkan, artinya diangkat ke atas (atau ke ujung kiri larik). Melalui proses pertukaran. Proses pengapungan dilakukan sebanyak n 1 langkah (satu kali langkah disebut juga satu kali pass) dengan n adalah ukuran larik. Pada akhir setiap langkah ke-I, larik L [1..n] akan terdiri atas dua bagian yaitu bagian yang sudah terurut, yaitu L [1..i], dan bagian yang belum terurut, L [i+1..n]. Setelah langkah terakhir, diperoleh larik L [1..n] yang terurut menaik. Berikut ini adalah contoh pengurutan larik dengan metode apung : Tinjau larik n = 6 buah elemen di bawah ini yang belum terurut. Larik ini akan diurut menaik dengan metode pengurutan sisipan :

25

27

10

76

21

1 Pass 1 : k k=6 k=5 k=4 k=3

6 arah pembandingan

Elemen yang dibandingkan L [6] < L [5] ? (21 < 76 ?) L [5] < L [4] ? (21 < 8 ?) L [4] < L [3] ? (8 < 10 ?) L [3] < L [2] ? (8 < 27 ?)

Pertukarkan Ya Tidak Ya Ya

Hasil Sementara 25, 27, 10, 8, 21, 76 25, 27, 10, 8, 21, 76 25, 27, 8, 10, 21, 76 25, 8, 27, 10, 21, 76

27

k=2

L [2] < L [1] ? (8 < 25 ?)

Ya

8, 25, 27, 10, 21, 76

Hasil akhir pass 1 :

25

27

10

21

76

Pass 2 : (berdasarkan hasil akhir pass 1) k k=6 k=5 k=4 k=3 Elemen yang dibandingkan L [6] < L [5] ? (76 < 21 ?) L [5] < L [4] ? (21 < 10 ?) L [4] < L [3] ? (10 < 27 ?) L [3] < L [2] ? (10 < 25 ?) Pertukarkan Tidak Tidak Ya Ya Hasil Sementara 8, 25, 27, 10, 21, 76 8, 25, 27, 10, 21, 76 8, 25, 10, 27, 21, 76 8, 10, 25, 27, 21, 76

Hasil akhir pass 2 :


8 10 25 27 21 76

Pass 3 : (berdasarkan hasil akhir pass 2) k k=6 k=5 k=4 Elemen yang dibandingkan L [6] < L [5] ? (76 < 21 ?) L [5] < L [4] ? (21 < 27 ?) L [4] < L [3] ? (21 < 25 ?) Pertukarkan Tidak Ya Ya Hasil Sementara 8, 10, 25, 27, 21, 76 8, 10, 25, 21, 27, 76 8, 10, 21, 25, 27, 76

Hasil akhir pass 3 :

10

21

25

27

76

28

Pass 4 : (berdasarkan hasil akhir pass 3) k k=6 k=5 Elemen yang dibandingkan L [6] < L [5] ? (76 < 27 ?) L [5] < L [4] ? (27 < 25 ?) Pertukarkan Tidak Tidak Hasil Sementara 8, 10, 21, 25, 27, 76 8, 10, 21, 25, 27, 76

Hasil akhir pass 4 :

10

21

25

27

76

Pass 5 : (berdasarkan hasil akhir pass 4) k k=6 Elemen yang dibandingkan L [6] < L [5] ? (76 < 27 ?) Pertukarkan Tidak Hasil Sementara 8, 10, 21, 25, 27, 76

Hasil akhir pass 5 :

10

21

25

27

76

Hasil akhir pass 5 menyisakan satu elemen (yaitu 76) yang tidak perlu diurutkan, maka pengurutan selesai. Larik L sekarang sudah terurut menaik. d. Pengurutan Data dengan Metode Merge Sort Misalkan kita memiliki dua buah larik, L1 dan L2, yang mesing-masing sudah terurut menaik. Kita ingin membentuk sebuah larik baru, L3, yang merupakan

29

gabungan dari dua buah larik tersebut sedemikian sehingga L3 juga terurut menaik. Berikut ini adalah contoh pengurutan larik dengan metode apung : Misalkan elemen-elemen larik L1 dan L2 masing-masing adalah : Larik L1 : Larik L1 :

13

24

15

27

30

Penggabungan L1 dan L2 menghasilkan L3 yang tetap terurut menaik :

13

15

24

27

30

Proses penggabungan dikerjakan dengan cara membandingkan satu elemen pada larik L1 dengan satu elemen pada larik L2. Jika elemen pada L1 lebih kecil dari elemen pada L2, maka salin elemen dari L1 ke L3. Elemen berikutnya pada L1 maju satu elemen, sedangkan elemen L2 tetap. Hal yang sama juga berlaku bila elemen dari L2 lebih kecil dari elemen L1, maka salin elemen dari L2 ke L3. Larik L2 maju satu elemen, larik L1 tetap. Dengan cara seperti ini, maka akan ada larik yang lain masih tersisa. Salin seluruh elemen yang tersisa ke L3. Penggabungan L1 dan L2 dilaksanakan sebagai berikut : L1
1 13 24 2

L2
15 27 3 0

L3 1<21
1

13 24

15 27 3 0

2 < 13 2

30

13 24

15 27 3 0

13 < 15 13

13

13 24

15 27 30

15 < 24 15

13 15

13 24

15 27 3 0

24 < 27 24

13 15 24

13 24

15 27 30

27

13 15 24 27

13 24

15 27 3 0

30

13 15 24 27 30

e. Pengurutan Data dengan Metode Quick Sort Quick sort adalah metode pengurutan data yang paling optimal saat ini. Metode ini membagi data dalam dua bagian yaitu bagian kecil disebelah kiri dan bagian besar disebelah kanan, kemudian masing-masing bagian tersebut dibagi lagi sehingga pada akhir proses akan didapat data yang terurut dengan benar. Adapun logika pengurutan lebih lengkap adalah sebagai berikut : Misalnya terdapat data dengan urutan 3, 2, 1, 4, 5. Maka ditentukan patokan sebagai data pembanding (pivot). Pivot bisa ditentukan dimana saja tetapi untuk mudahnya ditentukan pada data dengan indeks pertama. Selanjutnya semua data yang lebih kecil dari nilai pivot ditaruh disebelah kiri pivot dan yang lebih besar dibiarkan disebelah kanan pivot. Demikian juga selanjutnya untuk bagian kiri dan bagian kanan dibagi lagi menjadi dua sehingga pada akhir interaksi akan didapat data yang terurut dengan benar. Seperti ditampilkan berikut :

31

Berikut adalah contoh program untuk prosedur tersebut :


procedure quick(var data : larik; len : integer); var i, j, pivot : integer; kiri, kanan : larik; ikiri, ikanan : integer; begin pivot := data[0]; ikiri := 0; ikanan := 0; for i := 1 to len - 1 do begin if data[i] < pivot then begin kiri[ikiri] := data[i]; ikiri := ikiri + 1; end else begin kanan[ikanan] := data[i]; ikanan := ikanan + 1; end; end; if ikiri > 0 then quick(kiri, ikiri); if ikanan > 0 then quick(kanan, ikanan); {menggabungkan bagian kiri, pivot dan kanan} for j := 0 to ikiri - 1 do data[j] := kiri[j]; data[ikiri] := pivot; for j := 0 to ikanan - 1 do data[j + ikiri + 1] := kanan[j]; end; Kode Program 2.15 Contoh program procedure

32

e. Pencarian data dengan metode Sequential Search ( pencarian beruntun). Pada dasarnya, metode pencarian beruntun adalah proses membandingkan setiap elemen larik satu per satu secara beruntun, mulai dari elemen pertama,sampai elemen yang dicari ditemukan, atau seluruh elemen sudah diperiksa. Perhatikan larik L di bawah ini dengan n = 6 elemen :

13

16

14 21 76

15

Misalkan nilai yang dicari adalah: x = 21 Elemen yang dibandingkan (berturut-turut): 13, 16, 14, 21 (ditemukan!) Indeks larik yang dikembalikan:idx = 4 Misalkan nilai yang dicari adalah: x = 13 Elemen yang dibandingkan (berturut-turut): 13 (ditemukan!) Indeks larik yang dikembalikan:idx = 1 Misalkan nilai yang dicari adalah: x = 15 Elemen yang dibandingkan (berturut-turut): 13, 16, 14, 21, 76, 21 (tidak ditemukan!) Indeks larik yang dikembalikan:idx = -1 g. Pencarian data dengan metode Binary Search (bagi dua). Metode ini digunakan untuk kebutuhan pencarian dengan waktu yang cepat. Sebenarnya dalam kehidupan sehari-hari kita sering menerapkan pencarian bagi dua. Untuk mencari arti kata tertentu dalam kamus (misalnya kamus bahasa inggris), kita tidak membuka kamus itu dari halaman awal sampai halaman akhir satu-persatu, namun kita mencarinya dengan cara membelah atau membagi dua buku itu. Jika kata yang dicari tidak di halaman pertengahan itu, kita mencari lagi di belahan bagian kiri atau belahan bagian kanan dengan cara membagi dua belahan yang dimaksud. Begitu seterusnya

33

sampai kata yang dicari ditemukan. Hal ini hanya bisa dilakukan jika kata-kata didalam kamus sudah terurut. Prinsip pencarian dengan membagi data atas dua bagian mengilhami metode pencarian bagi dua. Data yang disimpan di dalam larik harus sudah terurut. Untuk memudahkan, selanjutnya kita misalkan elemen larik sudah terurut menurun. Dalam proses pencarian, kita memerlukan dua buah indeks larik, yatiu indeks terkecil dan indeks terbesar. Kita menyebut indeks terkecil sebagai indek ujung kiri larik dan indek terbesar sebagai indeks ujung kanan larik. Istilah kiri dan kanan dinyatakan dengan membayangkan elemen larik terentang horisontal.

34