4. DEKLARASI PROSEDUR (PROCEDURE DECLARATION)
Deklarasi prosedur adalah sebuah deklarasi yang dibuat dalam program agar bisa digunakan lagi dalam program, jadi deklarasi prosedur merupakan sebuah SUB PROGRAM yang bisa dipanggil sewaktu-waktu dalam program bila dibutuhkan. Dalam sebuah program yang terstruktur, Deklarasi Prosedur ini sangat dibutuhkan agar program menjadi lebih simpel. Untuk mengerti arti dari PROSEDUR ini saya berikan contoh kasus sebagai berikut : misalkan ada sebuah proses yang yang harus dikerjakan berulang kali untuk menampilkan kata "SURYATEKNO" , maka dalam program yang terstruktur kata tersebut disimpan dalam sebuah prosedur yang dapat dipanggil lagi dimanapun kata tersebut diperlukan.
Contoh program yang menggunakan Deklarasi Prosedur.
uses crt;
{ini adalah prosedur dgn nama s
yang akan menampilkan kata suryatekno}
Procedure s;
begin
write('Suryatekno');
end;
{akhir prosedur}
{program utama}
begin
clrscr;
s; { prosedur yang dipanggil }
WriteLn(' adalah suatu organisasi yang menghimpun');
writeLn('orang-orang yang mempunyai minat sama.');
writeLn;
s; { prosedur yang dipanggil }
writeLn(' juga merupakan sebuah kelompok belajar.');
writeLn;
writeLn('Tekan Enter untuk keluar...');
readLn;
end.
{akhir program utama}
Prosedur mempunyai banyak jenisnya, disini saya hanya akan menjelaskan suatu prosedur yang mudah-mudah saja agar anda sebagai pemula mengerti dalam menggunakan prosedur ini.
Prosedur yang paling terkenal adalah Prosedur REKURSI (RECURSION PROCEDURE) . Prosedur ini adalah sebuah prosedur yang menggunakan sendiri prosedurnya, jadi prosedur ini adalah prosedur yang memakan prosedur . Contoh kasus proses rekursi yang rumit adalah sebagai berikut :
Anda diminta untuk memindahkan sebuah piringan yang berbeda satu dengan yang lainnya secara satu persatu dari sebuah tumpukan ke tumpukan yang lainnya, dengan syarat piringan yang lebih kecil tidak boleh berada dibawah piringan yang lebih besar, dan pemindahan nya harus satu persatu tidak boleh sekalian. Lihat gambar.
Rekursi yang rumit, disebut juga sebagai MENARA HANOI
Anda harus memindahkan piringan yang berjumlah 20 buah piringan yang berbeda dari menara A ke menara C, untuk keperluan tersebut Anda diberikan sebuah menara lagi yaitu menara B. Yang menjadi pertanyaan adalah : Berapa kali Anda memindahkan sebuah piringan yang sama, dan berapa langkah yang Anda tempuh serta berapa lama Anda memindahkannya ?. Sebagai bantuan lagi Anda diberikan contoh untuk 2 buah piringan sebagai berikut : Pertama Anda pindahkan piringan yang ke 2 ke menara B lalu pindahkan piringan ke 1 ke menara C setelah itu pindahkan piringan ke 2 yang berada di menara B ke menara C selesai ( Ingat piringan yang lebih kecil tidak boleh berada dibawah piringan yang besar..! ). Sekarang cobalah untuk 20 piringan yang ditugaskan kepada anda !.
Pusing menghitung nya yah..?, kalau pusing berapa langkah yang Anda tempuh untuk tugas itu, dibawah ini saya berikan contoh program yang memakai prinsip REKURSI untuk menghitung langkah yang diperlukan. serta akan diperlihatkan piringan mana saja yang akan dipindahkan terlebih dahulu, Anda bisa saja memasukan 1000 piringan misalnya, tetapi Anda harus sabar menunggunya, sebab bila Anda memasukan waktu yang diinginkan sebesar 1 detik saja untuk setiap piringan, berarti Anda harus sabar menunggu program untuk menghitung dan memperagakan kepada Anda selama 3 Hari. Untuk contoh ini cobalah Anda masukan Tugas memindahkan piringan diatas dengan bantuan program ini..hehehe malas ni yeee .
Uses crt;
{ Awal Prosedur Rekursi }
procedure MenaraHanoi(Jumlah : Integer;
Sumber,Tujuan,Bantuan : Char;
var Langkah,Jumlah_A,
Jumlah_B,Jumlah_C,Waktu : Integer);
Var
Baris_Sumber,Kolom_Sumber,
Baris_Tujuan,Kolom_Tujuan : Integer;
Begin
if Jumlah > 0 Then
Begin
MenaraHanoi(Jumlah-1,Sumber,Bantuan,Tujuan,
Langkah,Jumlah_A,Jumlah_B,Jumlah_C,Waktu);
Langkah := Langkah+1;
if Sumber = 'A' Then
Begin
Kolom_Sumber := 30;
Baris_Sumber := 24-Jumlah_A;
Jumlah_A := Jumlah_A-1;
End
Else
if Sumber = 'B' Then
Begin
Kolom_Sumber := 40;
Baris_Sumber := 24-Jumlah_B;
Jumlah_B := Jumlah_B-1;
End
Else
Begin
Kolom_Sumber := 50;
Baris_Sumber := 24-Jumlah_C;
Jumlah_C := Jumlah_C-1;
End;
if Tujuan = 'A' Then
Begin
Kolom_Tujuan := 30;
Jumlah_A := Jumlah_A+1;
Baris_Tujuan := 24-Jumlah_A;
End
Else
if Tujuan = 'B' Then
Begin
Kolom_Tujuan := 40;
Jumlah_B := Jumlah_B+1;
Baris_Tujuan := 24-Jumlah_B;
End
Else
Begin
Kolom_Tujuan := 50;
Jumlah_C := Jumlah_C+1;
Baris_Tujuan := 24-Jumlah_C;
End;
Delay(Waktu*1000);
GotoXY(Kolom_Sumber,Baris_Sumber); Write(' ');
GotoXY(Kolom_Tujuan,Baris_Tujuan); Write(Jumlah);
GotoXY(18,24); Write(Langkah);
MenaraHanoi(Jumlah-1,Bantuan,Tujuan,Sumber,
Langkah,Jumlah_A,Jumlah_B,Jumlah_C,Waktu);
End;
End;
{Akhir Rekursi}
{Program Utama}
Var
Jumlah, Langkah : Integer;
Sumber,Bantuan,Tujuan : Char;
I,Baris : Integer;
Jumlah_A,Jumlah_B,Jumlah_C : Integer;
Waktu : Integer;
Begin
ClrScr;
Write('Berapa Piringan Yang akan dipindah ? ');
ReadLn(Jumlah);
Write('Waktu yang Anda inginkan (0-32) detik ? ');
ReadLn(waktu);
ClrScr;
GotoXY(25,24); WriteLn(' Sumber Bantuan Tujuan');
For I:=Jumlah DownTo 1 Do
Begin
Baris := 23-(Jumlah-I);
GotoXY(30,Baris); WriteLn(I);
End;
Langkah := 0;
Sumber :='A';
Bantuan :='B';
Tujuan :='C';
Jumlah_A := Jumlah;
Jumlah_B := 0;
Jumlah_C := 0;
GotoXY(1,24); Write('Jumlah Langkah = ');
MenaraHanoi(Jumlah,Sumber,Tujuan,Bantuan,
Langkah,Jumlah_A,Jumlah_B,Jumlah_C,Waktu);
ReadLn;
End.
{Akhir Program Utama}
5. DEKLARASI FUNGSI (FUNCTION DECLARATE)
Deklarasi fungsi adalah deklarasi gabungan antara deklarasi Prosedur, type dan variabel. Kumpulan deklarasi ini disediakan oleh pascal untuk mempermudah dalam penyusunan program sehingga berbentuk sebuah fungsi. Pada sebuah fungsi komponen-komponen dari ketiga deklarasi tersebut dijadikan satu kesatuan yang dapat digunakan pada program yang majemuk. Adapun tata cara penulisan deklarasi fungsi adalah sebagai berikut :
Tata Cara Penulisan Deklarasi Fungsi
Dari gambar diatas terlihat bahwa ketiga deklarasi yang telah diuraikan sebelumnya dijadikan satu kesatuan yang lebih simple dan praktis. Untuk lebih jelasnya cobalah Anda ketik di editor Pascal program dibawah ini, setelah itu Anda jalankan program tersebut dengan perintah RUN.
{ Program contoh Deklarasi fungsi
create by : Suryatekno@2008 }
Function Hasil(A,B,C : longint) : longint;
Begin
Hasil := A*A+B*B+C;
end;
Var X,Y,Z : longint;
Begin
WriteLn('Hasil dari X^2 + Y^2 + Z adalah..?');
Write('Jika Nilai X = ');ReadLn(X);
Write('Dan Nilai Y = ');ReadLn(Y);
Write('Serta Nilai Z = ');ReadLn(Z);
Write('Maka Hasil dari X^2 + Y^2 + Z');
WriteLn(' adalah : ',Hasil(X,Y,Z);
{Hasil - adalah nama fungsi yang dipanggil}
WriteLn;
WriteLn('Tekan Enter untuk Keluar..');
ReadLn;
end.
Dari contoh program diatas, mungkin sebagian dari Anda ada yang bertanya mengapa fungsi yang dinyatakan dengan variabel-variabel A,B dan C bisa berhubungan dengan Variabel X,Y dan Z ?. Begini..,Fungsi yang dijabarkan dengan variabel A,B,C hanya merupakan operasi yang harus dikerjakan oleh fungsi Hasil := A*A+B*B+C; , jadi Variabel A,B dan C tidak bernilai atau kosong. Sedangkan Variabel X,Y dan Z adalah Variabel Identifier (Pengenal) yang Ada nilainya dan nilai ini harus dilaksanakan oleh fungsi seperti yang dikehendaki. Untuk lebih jelas lagi Sekarang cobalah Anda rubah baris program WriteLn(' adalah :,Hasil(X,Y,Z); dengan mengganti variabelnya dengan A,B dan C kemudian Anda RUN lagi, maka COMPILER PASCAL akan mengeluarkan peringatan bahwa variabel A,B,dan C tidak diketahui identitasnya (Unknow Identifier), sebab A,B dan C tidak bernilai. Bagian inilah yang harus Anda Pahami dan Perhatikan dengan serius tentang Tata Cara membuat Deklarasi Fungsi.
Kalau diterjemahkan dalam konteks bahasa manusia, perintah Hasil(X,Y,Z) adalah : Kerjakan Nilai yang ada dalam kurung, yang nilainya dimasukan melalui input keyboard dengan operasi Hasil , Dimana operasi tersebut adalah A*A+B*B+C dengan A sebesar X, B sebesar Y, dan C sebesar Z.. Paham..!!, Kalau belum paham juga saya menyerah.., tidak bisa menerangkan lagi kepada Anda secara detail mengenai fungsi ini, dan dapat membuat Anda mengerti.
Sejauh ini Anda sudah disuguhkan dengan contoh-contoh program, contoh-contoh tersebut saya rancang sedemikian rupa agar Anda yang pemula dalam mempelajari Bahasa Pemrograman dapat mengikuti tutorial ini. Cobalah Anda buat program-program sejenis tapi kali ini atas pemikiran dan cara-cara ANda sendiri dan tentu saja materi-mteri nya disesuaikan dengan contoh-contoh program yang telah Anda pelajari.
Baiklah sekarang mari kita lanjutkan pembahasan kita mengenai uraian Program pengenalan (TESTPROG.PAS). Selanjutnya dalam program tersebut ada baris-baris program berikut :
While (pilih='y') or (pilih='Y') Do
Begin
..........
..........
..........
end;
end.
Pada bagian ini dinamakan perulangan (LOOPING). Looping sangat sering digunakan dalam sebuah program yang majemuk, arti looping itu sendiri adalah memulai atau mengulang lagi suatu proses program yang sama jika kondisi dan syarat-syarat nya terpenuhi. Ada beberapa struktur perulangan yang perlu Anda ketahui yaitu :
-
Perulangan dengan perintah For - To - Do
-
Perulangan dengan perintah While - Do
-
Perulangan dengan perintah Repeat - Until.
Sekarang marilah kita bahas mengenai struktur perulangan ini satu persatu.
1. Perulangan For - To - Do
Struktur perulangan For - To - Do ada dua jenis yaitu :
a. Perulangan For Positif.
Bila variabel perulangan dilakukan dengan cara penghitungan dari nilai yang kecil ke nilai yang besar, maka struktur perulangan tersebut dinamakan perulangan for positif dengan struktur sebagai berikut :
Struktur FOR TO DO Positif.
Contoh penggunaan perulangan For-To-Do positif ini adalah bila kita menampilkan sebuah list dari urutan yang terkecil sampai yang terbesar. Contoh program dibawah ini akan menampilkan angka 1 sampai 10 secara berurutan.
{ program menghitung urutan 1-10, by : suryatekno }
uses crt;
Var
X : Integer; {variabel X menjadi acuan dg type Integer}
Begin
clrscr;
For X := 1 To 10 Do
Begin
WriteLn(X);
End;
writeLn('tekan Enter untuk keluar');
readln;
End.
b. Perulangan For Negatif.
Bila variabel perulangan dilakukan dengan cara perhitungan dari nilai yang besar ke nilai yang kecil, maka struktur perulangan tersebut dinamakan perulangan for negatif. Struktur perulangan for negatif adalah sebagai berikut.
Struktur FOR TO DO Negatif.
Contoh perulangan For negatif ini adalah bila kita ingin menampilkan suatu hitungan mundur dari yang besar ke yang kecil. Contoh program dibawah ini adalah kebalikan dari contoh for positif diatas, yaitu menampilkan angka 10 sampai 1 secara berurutan.
{ program menghitung mundur by : suryatekno }
uses crt;
Var
Y : Integer; {variabel Y menjadi acuan dg type Integer}
Begin
clrscr;
For Y := 10 DownTo 1 Do
Begin
WriteLn(Y);
End;
writeLn('tekan Enter untuk keluar');
readln;
End.
2. Perulangan While - Do
Perulangan While-Do adalah suatu perulangan atau looping yang akan terus menerus dilakukan selama kondisi yang disyaratkan terpenuhi, Jadi selama persyaratan yang dicantumkan adalah TRUE (BENAR) maka loop ini akan terus berjalan tak ada hentinya. Untuk itu berhati-hatilah dalam memberikan prasyarat sebuah perulangan while-do, bisa-bisa program itu tidak akan bisa di hentikan.
Seperti pada contoh program TESTPROG.PAS yang pertama kali Anda buat, Disitu parameter while-do di berikan nilai TRUE untuk huruf Y, jadi selama Anda menekan huruf Y, maka program itu akan terus dilakukan sampai Anda menekan tombol yang lainnya.
Mari Kita lihat lagi listing Program TESTPROG.PAS yang sudah Anda buat pertama kali.
{ Program : Input dari keyboard dan
Menghitung operasi matematika }
{ Create by : Komarudin_surya@suryatekno }
uses Crt;
var
x,y,z : longint;
lagi : char;
namak : string[20];
begin
lagi := 'y';
{awal perulangan dengan nama Lagi }
while (lagi = 'y') or (lagi = 'Y') do
begin { --> index awal perulangan}
clrscr;
write('Siapa Nama Anda..?'); ReadLn(namak);
writeLn;
writeLn('Hallo ',namak,', Coba kamu masukan nilai x,y dan z ');
writeLn('pada operasi matematika ini.');
writeLn;
writeLn('Operasi matematika X^2 + y^2 + z =..... ');
write('masukan nilai x..= '); ReadLn(x);
write('masukan nilai y..= '); ReadLn(y);
write('masukan nilai z..= '); ReadLn(z);
writeLn;
writeLn('nilai operasi x^2 + y^2 + z adalah : ',x*x+y*y+z);
writeLn;
write('Mau hitung lagi apa tidak (y/t), ',namak,' ? ');
readLn(lagi);
end; { --> index akhir perulangan}
{akhir perulangan dengan nama Lagi }
end.
Pada listing TESTPROG.PAS diatas, saya beri tambahan keterangan. Nah selama Anda memasukan variabel Lagi dengan huruf Y maka loop while menjadi true sehingga program akan balik lagi ke index awal (Begin pertama sesudah perintah while). begitu saja terus menerus sampai Anda memasukan variabel Lagi dengan karakter selain Y.
Berikut ini adalah salah satu program yang menggunakan Perulangan While-Do yang salah, sebab tidak ada ujungnya dan tidak bisa dihentikan. Cara menghentikan nya dengan menutup prompt command bila Anda menjalankan Pascal dari mode command window, atau reset komputer Anda bila menggunakan DOS Prompt.
{ Ini adalah contoh program yang
menggunakan perulangan While-Do
yang salah }
Var X : integer;
Begin
X := 1;
While X=1 Do
Begin
write(X,' .');
WriteLn('Salah Euy.., Muir Wae Yeuh..!');
End;
End.
Contoh Program diatas sebagai peringatan kepada Anda agar berhati-hati dalam memberikan parameter untuk while-do. pada program diatas X diberikan nilai awal 1 ( X := 1 ), selanjutnya perulangan while-do ( While X=1 Do ) juga diberikan nilai 1, jadi X selalu TRUE sehingga perulangan akan dilakukan terus tanpa henti sampai Anda menutup atau mereset komputer Anda. Perhatikan baik-baik dalam menggunakan perulangan ini jangan sampai kesalahan yang kecil akan berakibat fatal bila tidak teliti. Kesalahan yang legendaris dalam pemrograman pascal pernah terjadi pada sekitar tahun 1973 dimana saat itu seorang programer membuat suatu aplikasi, yang akhirnya menjadi sebuah VIRUS yang dibuat tanpa sengaja (Virus itu mendelete semua program yang berektensi COM) tanpa bisa dihentikan oleh programernya sendiri sehingga programer tersebut dituntut untuk membayar kerugian perusahaan sebesar US$ 1.750.000,- ..
3. Perulangan Repeat - Until
Perulangan Repeat-Until hampir mirip dengan perulangan while-do, bedanya adalah kalau while-do perulangan nya dilakukan dari tanda begin pertama sampai end yang pertama setelah perintah while do , sedangkan perulangan repeat-until perulangan nya diakhiri dengan perintah until. Lihat struktur repeat until dibawah ini.
R E P E A T --- Perintah perulangan
|
|
S T A T E M E N --- Expresi Perulangan
|
|
U N T I L PARAMETER --- Akhir perulangan
Yang di ikuti oleh
Parameter yang
diulang
Jadi pada perulangan repeat-until ini, pertama kita taruh perintah repeat diatas statemen-statemen yang akan diulang kemudian ditutup dengan perintah until yang diikuti oleh parameter untuk perulangan. Untuk lebih jelas lihat contoh program dibawah ini yang menggunakan perulangan repeat-until.
{ Program : Tabel hasil perkalian
Creat by : Suryatekno@2008 }
uses crt;
Var
X,Y,Z : integer;
Begin
WriteLn(' TABEL PERKALIAN ');
WriteLn('==============================');
WriteLn('| X | Y | Hasil |');
WriteLn('==============================');
X := 10;
Repeat {awal perulangan X}
Y := 10;
Repeat {awal perulangan Y}
Z = X*Y;
WriteLn(X:5, Y:9, Z:10);
Y := Y+1;
Until Y > 13; {akhir perulangan Y}
X := X+1;
Until X > 13; {akhir perulangan X}
WriteLn('=============================');
WriteLn;
WriteLn('Tekan Enter untuk Keluar');
ReadLn;
End.
Pada contoh program diatas, perulangan repeat-until digunakan untuk membuat sebuah tabel perkalian antara X dan Y, dimana nilai awal untuk X dan Y adalah 10, dan akan bertambah 1 setiap kali terjadi perulangan ( X := X+1 dan Y := Y+1 ) sampai nilai akhir yang ditentukan yaitu 13. Perulangan akan terjadi sebelum melebihi nilai akhir yang ditentukan ( 13 ). Jadi Perintah UNTIL bila kita terjemahkan adalah : Sebelum melebihi . Lihat hasil jalannya program seperti dibawah ini.
Hasil Jalannya Program perkalian.
JIKA INI MAKA ITU, BILA INI MAKA BILA, MAKA BILA INI JIKA MAKA.
Hmm..,sepertinya sub judul yang aneh..!. Anda tidak perlu terlalu pusing memikirkan sub judul yang saya sertakan. Mungkin bagi Anda sub judul diatas agak sedikit aneh, tapi bagi saya itu tidak aneh, biasa-biasa saja. Oke Friend, Anda sudah banyak melihat dan menjalankan program-program contoh yang saya sertakan pada Tutorial ini, disitu banyak perintah-perintah BAHASA PASCAL yang belum saya terangkan kepada Anda, jadi bila Anda orang yang kritis tentunya akan bertanya maksud ini apa, maksud itu apa, jika begini bagaimana dan bagaimana bila begini maka jangan heran kalau saya memberikan judul seperti diatas.
Langsung saja, dibawah ini akan saya jelaskan satu persatu perintah-perintah pokok yang perlu Anda ketahui dan dapat menjadi bekal Anda kelak bila ingin membuat aplikasi dari BAHASA PASCAL dan menjadi referensi Anda untuk belajar bahasa DELPHI.
1. Mengatur tampilan di Layar Monitor
Pada layar Monitor dengan sistem 16 BIT, layar monitor tidak diukur dengan PIXEL tetapi dengan BIT atau CHARACTER. Pascal merupakan salah satu program berbasis 16 bit, jadi tentu saja dalam menempatkan suatu karakter harus mengikuti aturan-aturan sistem 16 bit. Semua operasi yang memerlukan tampilan di layar CRT dalam pascal, harus menggunakan UNIT CRT dengan perintah USES CRT; . Layar CRT untuk menampilkan hasil dinyatakan dengan istilah Baris dan Kolom . Satu Layar penuh terdiri dari 24 Baris dan 80 Kolom, Baris ke 1 kolom ke 1 terletak dipojok kiri atas layar, sedangkan baris 24 kolom ke 80 terletak dipojok kanan bawah layar. lihat gambar dibawah ini.
1,1
|
|
80,1
|
1,2
|
|
80,2
|
|
|
|
|
|
|
|
|
|
|
|
|
1,24
|
|
80,24
|
Pembagian Baris dan Kolom pada layar 16 BIT
Adapun Perintah-perintah untuk tampilan dilayar CRT sebagai berikut:
|