bab ii
TRANSCRIPT
5/10/2018 BAB II - slidepdf.com
http://slidepdf.com/reader/full/bab-ii-55a0bae2ee361 1/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. Permasalahan menghitung gaji karyawan, dengan data yang
diketahui adalah jam kerja maksimum.
b. Permasalahan menampilkan bilangan terbesar dari N buah bilangan
beserta berapa kali bilangan tersebut.
c. Permasalahan mengkonversikan nilai cek dari bentuk angka ke
bentuk terbilang dalam Bahasa Inggris.
5
5/10/2018 BAB II - slidepdf.com
http://slidepdf.com/reader/full/bab-ii-55a0bae2ee361 2/30
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
6
5/10/2018 BAB II - slidepdf.com
http://slidepdf.com/reader/full/bab-ii-55a0bae2ee361 3/30
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
7
5/10/2018 BAB II - slidepdf.com
http://slidepdf.com/reader/full/bab-ii-55a0bae2ee361 4/30
disiapkan oleh programmer dan diberi nama yang khas untuk menampung suatu
nilai dan atau mengambil kembali nilai tersebut.
Bentuk umum:
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 .
8
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;
5/10/2018 BAB II - slidepdf.com
http://slidepdf.com/reader/full/bab-ii-55a0bae2ee361 5/30
Bentuk Umum
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:
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
9
Const
Konstanta_1 = nilai_konstanta_1;
Konstanta_2 = nilai_konstanta_2;
Konstanta_3 = nilai_konstanta_3;
…
Konstanta_N = nilai_konstanta_N;
Const
konstanta_1 : tipe_1 = nilai_konstanta_1;
konstanta_2 : tipe_2 = nilai_konstanta_2;
…
konstanta_N : tipe_N = nilai_konstanta_N;
5/10/2018 BAB II - slidepdf.com
http://slidepdf.com/reader/full/bab-ii-55a0bae2ee361 6/30
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 Range Ukuran dalam byte Format
ShortInt -128 .. 127 1 Signed 8-bit
Integer -32768 .. 32767 2 Signed 16-bit
LongInt -2147483648..214783647 4 Signed 32-bit
Byte 0..255 1 unsigned 8-bit
Word 0..65535 2 Signed 16-bit
Boolean
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
5/10/2018 BAB II - slidepdf.com
http://slidepdf.com/reader/full/bab-ii-55a0bae2ee361 7/30
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 Range Ukuran Digit
Real ± 2.9x10-39 .. 1.7x1038 6 11-12
Single ± 1.5x10-45
.. 3.4x1038
4 7-8Double ± 5x10-324 .. 1.7x10308 8 15-16
Extended ± 3.4x10-4932 .. 1.1x104932 10 19-20
Comp -9.2x1018 .. 9.2x1018 8 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
11
<NamaType> = (elemen_1, elemen_2, …, elemen_N);
5/10/2018 BAB II - slidepdf.com
http://slidepdf.com/reader/full/bab-ii-55a0bae2ee361 8/30
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
5/10/2018 BAB II - slidepdf.com
http://slidepdf.com/reader/full/bab-ii-55a0bae2ee361 9/30
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
5/10/2018 BAB II - slidepdf.com
http://slidepdf.com/reader/full/bab-ii-55a0bae2ee361 10/30
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 aturan-
aturan untuk menyatakan suatu arti.
c. Pemrograman merupakan proses mengimplementasikan urutan langkah untuk
menyelesaikan suatu masalah dengan menggunakan suatu bahasa
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
14
5/10/2018 BAB II - slidepdf.com
http://slidepdf.com/reader/full/bab-ii-55a0bae2ee361 11/30
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
Semua bagian diatas dapat dideklarasikan secara bebas tanpa harus
mengurutkannya, yang penting sebelum mengunakannya harus sudah
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 :
BeginPernyataan;
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
5/10/2018 BAB II - slidepdf.com
http://slidepdf.com/reader/full/bab-ii-55a0bae2ee361 12/30
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 :
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
PernyataanEnd;
Kode Program 2.7 Contoh Deklarasi Sebuah Fungsi
Contoh penggunaan fungsi dalam program :
16
Var HargaSatuan,HargaTotal: real;
5/10/2018 BAB II - slidepdf.com
http://slidepdf.com/reader/full/bab-ii-55a0bae2ee361 13/30
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
5/10/2018 BAB II - slidepdf.com
http://slidepdf.com/reader/full/bab-ii-55a0bae2ee361 14/30
Syntak pendeklarasian array dalam bahasa pascal adalah
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
I ≤ 10
I ← 1
Proses yangakan diulang
Selesai
Ya
Tidak
I ← I + 1
Gambar 2.1 Flowchart Statemen For
Contoh sintak statemen For :
18
NamaArray : array [indexAwal..indexAkhir] of TipeData
5/10/2018 BAB II - slidepdf.com
http://slidepdf.com/reader/full/bab-ii-55a0bae2ee361 15/30
For I := 1 To 10 DoBegin
{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
I ≤ 10
I ← 1
Proses yangakan diulang
Selesai
Ya
Tidak
I ← I + 1
Gambar 2.2 Flowchart Perulangan While
Contoh penggunaan Statemen While
19
5/10/2018 BAB II - slidepdf.com
http://slidepdf.com/reader/full/bab-ii-55a0bae2ee361 16/30
I := 1;While I <= 10 DoBegin
Statement yang diulangI := 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
I ← 0
Proses yangakan diulang
Tidak
I ← I + 1
I = 10 SelesaiYa
Gambar 2.3 Flowchart Perulangan Repeat Until
Contoh penggunaan Statemen Repeat Until
20
5/10/2018 BAB II - slidepdf.com
http://slidepdf.com/reader/full/bab-ii-55a0bae2ee361 17/30
I := 1;Repeat
Statement yang diulangI := 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
Kode Program 2.13 Contoh Sintak bilangan acak dengan Randseed
Jika program diatas di-run, maka outputnya adalah sebagai berikut :
21
PROGRAM Acak ;{ -----------------------------}{ Pembangkitan Bilangan Acak }{ -----------------------------}
USES WinCrt;BEGIN
Clrscr ;Randseed := 6 ;WriteLn (Random) ;WriteLn (Random) ;WriteLn (Random) ;Write (‘Tekan Enter’) ;ReadLn ;
END.
5/10/2018 BAB II - slidepdf.com
http://slidepdf.com/reader/full/bab-ii-55a0bae2ee361 18/30
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
Kode Program 2.14 Contoh Sintak bilangan acak dengan Randomize
Jika program diatas di-run, maka outputnya adalah sebagai berikut :
22
PROGRAM Acak ;{ ------------------------------}{ Pembangkitan Bilangan Acak }{ ------------------------------}
USES WinCrt;BEGIN
Clrscr ;Randomize ;WriteLn (Random) ;WriteLn (Random) ;WriteLn (Random) ;Write (‘Tekan Enter’) ;readLn ;
END.
5/10/2018 BAB II - slidepdf.com
http://slidepdf.com/reader/full/bab-ii-55a0bae2ee361 19/30
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 berbeda-
beda 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
5/10/2018 BAB II - slidepdf.com
http://slidepdf.com/reader/full/bab-ii-55a0bae2ee361 20/30
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
5/10/2018 BAB II - slidepdf.com
http://slidepdf.com/reader/full/bab-ii-55a0bae2ee361 21/30
29 217681027
1 2 3 4 5 6
Asumsikan : elemen y = L [1] = 29 sudah terurut
29 217681027
1 2 3 4 5 6
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 217681029
1 2 3 4 5 6
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 217682927
1 2 3 4 5 6
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 2176292710
1 2 3 4 5 6
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
5/10/2018 BAB II - slidepdf.com
http://slidepdf.com/reader/full/bab-ii-55a0bae2ee361 22/30
8 2176292710
1 2 3 4 5 6
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 7629272110
1 2 3 4 5 6
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
5/10/2018 BAB II - slidepdf.com
http://slidepdf.com/reader/full/bab-ii-55a0bae2ee361 23/30
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 217681027
1 2 3 4 5 6
← arah pembandingan
Pass 1 :
k Elemen yang dibandingkan Pertukarkan Hasil Sementara
k = 6 L [6] < L [5] ? (21 < 76 ?) Ya 25, 27, 10, 8, 21, 76
k = 5 L [5] < L [4] ? (21 < 8 ?) Tidak 25, 27, 10, 8, 21, 76
k = 4 L [4] < L [3] ? (8 < 10 ?) Ya 25, 27, 8, 10, 21, 76
k = 3 L [3] < L [2] ? (8 < 27 ?) Ya 25, 8, 27, 10, 21, 76
27
5/10/2018 BAB II - slidepdf.com
http://slidepdf.com/reader/full/bab-ii-55a0bae2ee361 24/30
k = 2 L [2] < L [1] ? (8 < 25 ?) Ya 8, 25, 27, 10, 21, 76
Hasil akhir pass 1 :
8 7621102725
1 2 3 4 5 6
Pass 2 : (berdasarkan hasil akhir pass 1)
k Elemen yang dibandingkan Pertukarkan Hasil Sementara
k = 6 L [6] < L [5] ? (76 < 21 ?) Tidak 8, 25, 27, 10, 21, 76
k = 5 L [5] < L [4] ? (21 < 10 ?) Tidak 8, 25, 27, 10, 21, 76
k = 4 L [4] < L [3] ? (10 < 27 ?) Ya 8, 25, 10, 27, 21, 76
k = 3 L [3] < L [2] ? (10 < 25 ?) Ya 8, 10, 25, 27, 21, 76
Hasil akhir pass 2 :
8 7621272510
1 2 3 4 5 6
Pass 3 : (berdasarkan hasil akhir pass 2)
k Elemen yang dibandingkan Pertukarkan Hasil Sementara
k = 6 L [6] < L [5] ? (76 < 21 ?) Tidak 8, 10, 25, 27, 21, 76
k = 5 L [5] < L [4] ? (21 < 27 ?) Ya 8, 10, 25, 21, 27, 76
k = 4 L [4] < L [3] ? (21 < 25 ?) Ya 8, 10, 21, 25, 27, 76
Hasil akhir pass 3 :
8 7627252110
28
5/10/2018 BAB II - slidepdf.com
http://slidepdf.com/reader/full/bab-ii-55a0bae2ee361 25/30
1 2 3 4 5 6
Pass 4 : (berdasarkan hasil akhir pass 3)
k Elemen yang dibandingkan Pertukarkan Hasil Sementara
k = 6 L [6] < L [5] ? (76 < 27 ?) Tidak 8, 10, 21, 25, 27, 76
k = 5 L [5] < L [4] ? (27 < 25 ?) Tidak 8, 10, 21, 25, 27, 76
Hasil akhir pass 4 :
8 7627252110
1 2 3 4 5 6
Pass 5 : (berdasarkan hasil akhir pass 4)
k Elemen yang dibandingkan Pertukarkan Hasil Sementara
k = 6 L [6] < L [5] ? (76 < 27 ?) Tidak 8, 10, 21, 25, 27, 76
Hasil akhir pass 5 :
8 7627252110
1 2 3 4 5 6
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
5/10/2018 BAB II - slidepdf.com
http://slidepdf.com/reader/full/bab-ii-55a0bae2ee361 26/30
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 :
1 2413
3027152
Penggabungan L1 dan L2 menghasilkan L3 yang tetap terurut menaik :
1 302724152 13
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 L2 L3
1 13 2 4
3 027152
1 < 2 → 11
1 13 2 4
3 027152
2 < 13 → 21 2
30
5/10/2018 BAB II - slidepdf.com
http://slidepdf.com/reader/full/bab-ii-55a0bae2ee361 27/30
1 13 2 4
3 027152
13 < 15 → 131 2 1 3
1 13 2 4
3 02715215 < 24 →15
1 1 52 13
1 13 2 4
3 027152
24 < 27 → 241 241 52 13
1 13 2 4
3 027152
27 →1 2 724152 13
1 13 2 4
3 027152
30 →1 302 72 4152 13
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 padaakhir interaksi akan didapat data yang terurut dengan benar. Seperti
ditampilkan berikut :
31
5/10/2018 BAB II - slidepdf.com
http://slidepdf.com/reader/full/bab-ii-55a0bae2ee361 28/30
3 2 1 4 5
32 1
4
4
21 5
5
3
Berikut adalah contoh program untuk prosedur tersebut :
Kode Program 2.15 Contoh program procedure
32
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 dobegin
if data[i] < pivot thenbegin
kiri[ikiri] := data[i];ikiri := ikiri + 1;
endelsebegin
kanan[ikanan] := data[i];ikanan := ikanan + 1;
end;end;if ikiri > 0 then
quick(kiri, ikiri);
if ikanan > 0 thenquick(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 dodata[j + ikiri + 1] := kanan[j];
end;
5/10/2018 BAB II - slidepdf.com
http://slidepdf.com/reader/full/bab-ii-55a0bae2ee361 29/30
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 15762116 14
1 2 3 4 5 6
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
5/10/2018 BAB II - slidepdf.com
http://slidepdf.com/reader/full/bab-ii-55a0bae2ee361 30/30
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