PENGENALAN
Pada bagian ini gua cuman ngejelasin
secara garis besar tentang pascal dan tips penulisan program. Kita mulai, ok?
Rasanya gak
lengkap kalo gak tahu sejarah pascal. Pascal adalah bahasa tingkat tinggi yang
orientasinya pada segala tujuan, dirancang oleh Prof. Niklaus Wirth dari
Technical University di Zurich, Switzerland. Nama pascal diambil sebagai penghargaan
terhadap Blaise Pascal, ahli matematik dan philosiphi terkenal abad 17 dari
Prancis.
Profesor Niklaus
Wirth memperkenalkan kompiler bahasa Pascal pertama kali untuk komputer CDC
6000 (Control Data Corporation) yang dipublikasikan pada tahun 1971 dengan
tujuan untuk membantu mengajar program komputer secara sistematis, khususnya
pemrograman terstruktur. Pada perkembangannya banyak versi-versi pascal yang
beredar, MS-Pascal, Apple Pascal, Turbo Pascal, dll. Gua pernah baca kalo
pascal itu di buat karena bahasa C terlalu sulit untuk di pelajari untuk
pemula.
Sekarang kita
ngeliat bagaimana struktur program pascal. Pascal terdiri dari 2 bagian utama,
yaitu pendeklarasian variabel dan programnya. Perhatikan contoh:
1: Program
KaryaPertamaku;
2: uses crt;
3: var nama:
string;
4: Begin
5: write('Masukkan nama anda: '); readln(nama);
6: clrscr;
7: write('Hi ', nama, 'apakabar?');
8: End.
Gak usah
dipikirin apa isi program itu. Tapi perhatikan strukturnya. Pada baris ke 3,
itu yang disebut bagian pendeklarasian variabel. Sedangkan dari baris ke-4 s/d
8, disebut bagian pernyataan (tempat nulis program). Baris pertama itu hanya
merupakan judul programnya doank, gak ditulis juga boleh. Judulnya adalah
"KaryaPertamaku", jangan pake spasi loh nulisnya (gunakan garis bawah
aja).
O iya, dalam
pascal ada yang disebut unit-unit lain semacam librari lah... Misalnya pada
baris kedua digunakan uses crt; (berfungsi untuk memanipulasi layar teks).
Perhatikan baris 6, itu adalah salah satu fungsi dari unit crt yaitu untuk
membersihkan layar (sama dengan perintah cls di dos).
Perhatikan cara
penulisan programnya! Setiap baris selalu diakhiri dengan titik koma
";" (kecuali pada baris ke-4 dan 8, karena itu adalah tanda dari awal
dan akhir program). Selain itu program pascal selalu dimulai dengan
"begin" dan "end." (jangan lupa titiknya loh).
Bagaimana, mudah
bukan? Gua kasih satu tips yang berguna. Kalo nulis program usahakan yang rapi.
Ingat bila ada "Begin" pasti ada "end", nah penulisan
program diantara begin dan end itu usahakan di kasih 2 spasi atau satu tab.
Perhatikan baris ke-5 s/d 7. Itu akan memudahkan penelusuran program bila
terjadi kesalahan
MENCETAK KE LAYAR DAN PENGGUNAAN VARIABEL
Ok, sekarang
kita bakal belajar cara menampilkan teks di layar dan penggunaan variabel.
Perhatikan contoh dibawah ini:
1: Program
KaryaPertamaku;
2: uses crt;
3: var nama:
string;
4: Begin
5: write('Masukkan nama anda: '); readln(nama);
6: clrscr;
7: write('Hi ', nama, 'apa kabar?');
8: End.
Pada baris ke-3
dideklarasikan variabel nama dengan tipe string. Karena berupa string, variabel
nama bisa menampung input dari user berupa kata dan angka. Untuk lebih jelas
tentang jenis tipe data lihat tabel di bawah. Jangan sampai salah
mendeklarasikan jenis variabelnya loohh...
Sekarang
perhatikan baris ke-5. Fungsi write adalah mencetak kalimat atau isi variabel
yang ada ke layar. Jadi yang tercetak adalah "Masukkan nama anda: ".
Selanjutnya ada perintah readln. Apa fungsinya? readln itu berfungsi untuk
menampung (menyimpan hasil input user) dan disimpan pada variabel nama. Jadi
sekarang variabel nama bernilai sama yang kamu ketikan.
Pada baris ke-7
di layar akan tercetak " Hi dijas apa kabar?" (itu kalo nama yang
dimasukan dijas). Untuk menampilkan isi variabel cukup ditulis:
"write(nama);". Sedangkan bila berupa teks yang fixed, contohnya sama
seperti baris ke-5 (mengunakan ' (kutip) ).
Apa sih beda
write dan writeln? write fungsinya mencetak di layar dan posisi kursor masih
dibaris itu juga. Sedangkan writeln akan pindah kebaris yang baru. Perhatikan
Contoh
1: Begin
2: write('Hi...'); write(' Apa kabar?');
3: writeln;
4: writeln('Hi.. '); writeln('Apa kabar?');
5: End.
Maka output yang
tampil adalah:
Hi... Apa kabar?
Hi...
Apa kabar ?
Jelas bukan?
Jadi fungsi "ln" pada writeln adalah untuk pindah kebaris yang baru.
Fungsinya akan sama bila ditaruh di read. Yup tutorial pertama kelar juga...
Tipe Data yang
Sering Digunakan di Pascal
Char -> hanya
menampung satu karakter
string ->
menampung lebih dari satu karakter
Boolean ->
hanya mempunyai dua nilai True atau False
Integer ->
-32.768 s/d 32.767 (gak bisa bilangan desimal)
longint ->
-2.147.483.648 s/d -2.147.483.648(gak bisa bilangan desimal)
read -> 2,9 x
10-39 s/d 1,7 x 1038 (untuk menampung bilangan desimal)
PENGGUNAAN KONDISI
Tutorial yang kedua ini akan dibahas
mengenai pernyataan kondisi, if dan case.
1: Program
Tutorial2_if;
2: var pilih:
Integer;
3: Begin
4: write('Pilih 1 atau 2'); readln(pilih);
5: if pilih=1 then write('Anda memilih 1')
6: elseif pilih=2 then write('Pilihan anda 2')
7: else write('Anda memilih yang lain')
8: End.
Perhatikan baris 5, 6 dan 7. Di situ ada
3 pernyataan kondisi if. Apabila pilihan yang kita ketik ada di satu kondisi,
maka yang lain akan diabaikan. Bingung? gini maksudnya... Misal pada program di
atas kita pilih 2. Pada saat program dijalankan, baris ke-5 akan di eksekusi.
Berhubung pilihan kita 2 bukan 1, maka akan langsung pindah kebaris
selanjutnya. Ternyata pada baris ke-6 kondisi itu terpenuhi, maka yang tercetak
dilayar adalah "Pilihan anda 2". Baris ke-7 tidak diperiksa lagi
karena baris ke 6 sudah memenuhi syarat.
Bila kita
memilih 3, maka baris ke-5 dan ke-6 tidak memenuhi konsisi tersebut, maka yang
tercetak adalah "Anda memilih yang lain".
Selain dengan
if, pernyataan kondisi di atas bisa juga menggunakan case. Perhatikan contoh:
1: Program
Tutorial2_case;
2: var pilih:
char;
3: Begin
4: write('Pilih 1 atau 2'); readln(pilih);
5: case pilih of
6: '1': write('Anda memilih 1');
7: '2':
write('Pilihan anda 2');
8: else write('Anda memilih yang lain');
9: end;
10: End.
Keterangannya
gak jauh beda dengan kondisi if kok. Coba amati pada baris ke 9, di sana ada
pernyataan "end;". Pernyataan itu berfungsi untuk menutup pernyataan
case yang dimulai pada baris ke-5. Perlu diingat "end" disertai
dengan titik hanya untuk diakhir program.
LOOPING
Looping? apa
hayoo...? masih ingatkan pelajaran fisika SMU, adakan pelajaran tentang looping
dirangkaian elektronik. Looping adalah proses pengulangan hingga kondisi syarat
yang ditentukan tercapai. Sekarang kita ngebahas 3 jenis looping, for, while
dan repeat. Perhatikan contoh di bawah ini:
1: Program
Tutorial3_for;
2: var i:
Integer;
3: Begin
4: For i:=1 to 5 do
5: writeln('ini yang ke ', i);
6: End.
Perhatikan baris
4 dan 5. Di sana ada satu persyaratan, yaitu baris ke-5 akan dieksekusi bila
nilai i antara 1 sampai 5. Apa output yang tercetak dilayar?
ini yang ke 1
ini yang ke 2
ini yang ke 3
ini yang ke 4
ini yang ke 5
Bagaimana kalo
mau pake while? Perhatikan contoh:
1: Program
Tutorial3_while;
2: var i:
Integer;
3: Begin
4: i:=1;
5: while i < 5 do
6: begin
7: writeln('ini yang ke ', i);
8: i:=i+1;
9: end;
10: End.
Apa perbedaan
mendasar while dengan for? yup, di while dibutuhkan counter (diprogram ini
adalah i). Jadi, baris ke-7 dan 8 akan dieksekusi (dijalankan) apabila nilai i
< 5. Coba liat baris ke 6, di sana ada "begin" dan
"end;" sebagai pasangannya (dibaris ke 9). Bila ada lebih dari satu
pernyataan harus di mulai dengan begin untuk kondisi if, case, looping. Jika
tidak hanya baris pertama saja yang dieksekusi. Apa outputnya?
ini yang ke 1
ini yang ke 2
ini yang ke 3
ini yang ke 4
Coba baris ke 8
kamu ganti dengan "i:=i-1;" apa yang terjadi? Coba jalankan. Akan
terjadi looping terus menerus karena kondisinya memenuhi syarat terus (i selalu
kurang dari lima). Tekan control break untuk menghentikannya. Hal inilah yang
disebut invinitive loop. Sekarang kita coba dengan repeat.
1: Program
Tutorial3_while;
2: var pilih:
char;
3: Begin
4: i:=1;
5: repeat
6: writeln('ini yang ke ',i);
7: i:=i+1;
8: until i<0;
9: End.
Apa outputnya?
cuman 1, "ini yang ke 1". Loh kok bisa, kan pada baris ke 8 tidak
memenuhi persyaratan i<0 ? Memang nggak memenuhi persyaratan itu, tapi ini
adalah keistemewaan repeat. Ia akan mengeksekusi sekali dulu baru dicek
persyaratan yang ada dibawah.
Kelar juga
ngebahas looping. Gunakan jenis looping yang ada seseuai kebutuhan. O iya, apa
yang dilakukan bila tertulis seperti ini? "For i:=10 downto 1 do".
Pernyataan itu akan menghitung mundur dari 10 sampai 1.
PROSEDUR DAN FUNGSI
Misalnya kita
punya rumus menghitung luas segita, apa yang kamu lakukan bila rumus itu ingin
kamu tulis ditiga tempat yang berbeda? apa kamu akan ccp (copy, cut dan paste)?
emang bisa sih diperbanyak dengan yang gituan, tapi boros memori dan berabe
kalo rumus yang kita tulis ternyata salah, berarti kita harus betulin di tiga
tempat juga. Untuk mempermudahnya gunakan Prosedur atau Fungsi.
1: Program Tutorial4_Prosedur;
2:
3: Procedure Tampil;
4: begin
5:
writeln('Hi...');
6:
writeln('Apakabar');
7: end;
8: Begin
9:
Tampil;
10: writeln('yang di atas menggunakan prosedur
loohh...');
11: End.
Apa yang
dilakukan program di atas? Coba lihat baris ke-3 sampai 7. Itulah yang disebut
prosedur. Program utamanya mulai dari baris ke 8 sampai 11. Pada baris ke 9
prosedur yang kita buat sebelumnya dipanggil dan dieksekusi. Ini outputnya
Hi...
Apakabar
yang di atas
menggunakan prosedur loohh...
Selain itu
prosedur dan fungsi bisa di taruh variabel lohh... Perhatikan contoh penggunaan
fungsi di bawah ini:
1: Program
Tutorial4_Fungsi;
2: var hasil: integer;
3: Function Itung(a, b : integer) : integer;
4: begin
5: itung:=a+b;
7: end;
8: Begin
9:
hasil:=itung(7, 9);
10: writeln('Hasil 7 + 9 sama dengan ', hasil);
11: End.
Baris 3 sampai 7
adalah fungsi. Tapi perhatikan bentuk fungsinya, ada pendeklarasian variabel a
dan b. Coba liat baris ke 9 ketika fungsi itung dipanggil. Di sana tertulis
"itung(7, 9)", secara otomatis a akan mendapat nilai 7 dan b mendapat
9. Bagaimana jika ditulis "itung(3,5,6)"? Jelas gak bisa karena
dialokasikan hanya 2 variabel. Hasil penjumlahan a + b ditampung di fungsi
itung (lihat baris ke-5) dan hasil itu diberikan ke variabel hasil (baris 9).
Lalu apa
perbedaan prosedur dan fungsi? Prosedur hanya bisa menjalankan perintah dan
tidak mengembalikan nilai (lihat kembali contoh program prosedur sebelumnya).
Sedangkan fungsi bisa mengembalikan nilai untuk di tampilkan dilayar atau
diolah lagi. Bila kita punya fungsi yang bernama CekSaldo, maka CekSaldo bisa
berfungsi seperti variabel sama seperti pada fungsi Itung di atas.
Bagaimana? mudah
bukan? gunakan prosedur dan fungsi sesuai kebutuhan. Terkadang fungsi lebih
berguna dan efisien dibandingkan dengan prosedur.
ARRAY DAN RECORD
Pernahkah kamu
membayangkan bila kita mau membuat program toko buah-buahan. Jika ada 3 jenis
buah-buahan (melon, duku dan mangga) berarti kita harus mempunyai tiga variabel
untuk masing-masing jenis buah. Tetapi betapa sulitnya jika toko itu punya 10
atau 20 jenis yang berbeda. Solusinya adalah gunakan array. Array itu adalah
tipe data terstuktur yang berguna untuk menyimpan sejumlah data yang bertipe sama.
Bagaimana cara kerjanya? yaitu dengan menggunakan index (semacam penanda).
Perhatikan contoh:
1: Program Tutorial5_Array;
2: var buah: array [1..3] of string;
3:
i: integer;
4: Begin
5:
For i:=1 to 3 do
6:
begin
7:
write('Masukkan buah-buahan ke ',i , ' : ');readln(buah[i]);
8:
end;
9:
writeln;writeln('Isi buah-buahan yang dimasukkan tadi adalah : ');
10: For i:= 1 to 3 do
11: writeln('buah ke', i ,' : ', buah[i]);
12: End.
Lihat pada baris
ke 7. Dengan hanya menggunakan satu nama variabel yaitu buah, kita bisa
menyimpan 3 nilai yang berbeda. Misalkan yang kita masukkan adalah melon, duku
dan mangga. maka buah[1] bernilai melon, buah[2] bernilai duku dan buah[3]
bernilai mangga. Untuk mencetak isi variabel yang sudah disimpan di array tadi
caranya bisa dilihat di baris ke 11.
Bagaimana,
gampangkan? setelah mengetahui cara menggunakan array, sekarang kita belajar
menggunakan record. Tidak seperti array, record adalah jenis tipe data
terstruktur yang berisi beberapa data, yang masing-masing dapat berlainan tipe.
Perhatikan contoh:
1: Program Tutorial5_Record;
2: type buah = record
3:
nama: string;
4:
harga: longint;
5: end;
6: var data:buah;
7: Begin
8:
write('nama buah: ');readln(data.nama);
9:
write('harga buah: ');readln(data.harga);
10: write('ditampilkan');
11: write('nama');readln(data.nama);
12: writeln('harga');readln(data.harga);
13: End.
Apa yang bisa
kamu ambil kesimpulan dari program di atas? Bingung? Jadi gini, dengan
menggunakan record (di sini bernama buah) kita bisa membuat tipe data yang
berisi beberapa data yang berlainan tipe (nama dengan jenis string, dan harga
dengan jenis long integer) yang ini disebut field.
Perhatikan baris
ke 6, di situ dideklarasikan bahwa variabel data bertipe buah. Otomatis yang
dimiliki buah (nama dan harga) dimiliki juga oleh data. Setelah itu lihat baris
ke 8 dan 9. Nama buah disimpan dalam field nama dan harga buah disimpan di
dalam field harga. Untuk bisa menyimpan data di field, urutannya harus
variabel.field (contohnya di sini data.nama atau data.harga). Begitu juga bila
kita ingin menampilkan isi field tersebut.
Tipe data
seperti ini sangat berguna kedepannya loohh... Apalagi jika digabungkan dengan
array.
DATABASE
Rasanya gak
lengkap kalo buat program tapi gak bisa nyimpen data. Yang bakal dijelasin di
sini adalah file bertipe, artinya harus disebutkan dulu tipe file tersebut,
apakah integer, long integer, string, char atau bahkan record. Berikut ini
adalah daftar prosedur dan fungsi yang berhubungan dengan program database file
bertipe (no 12 sampai 16 hanya untuk file teks).
Procedure Assign
(var f, NamaFile: string);
Procedure
Rewrite (var f);
Procedure
Reset(var f);
Procedure
Close(var f);
Procedure Write(var
f, var1 [, var2, ..., varn]);
Procedure
Read(var f, var1 [, var2, ..., varn]);
Function Eof(var
f): Boolean;
Function
FilePos(var f): longint;
Function
FileSize(var f): longint;
Procedure
Seek(var f, N: longint);
Procedure
Truncate(var f);
Function Eoln(var
f:text):boolean;
Function
SeekEoln(var f:text):boolean;
Function
SeekEof(var f:text):boolean;
Procedure
Flush(var f:text);
Procedure
SetTextBuf(var f:text, var buf[, ukuran: word]);
Penjelasannya di
bawah ini:
Pengacuan suatu
file melalui variabel file. Setiap ingin melakukan manipulasi atau yang lainya,
harus melakukan ini dulu
Apabila file
tidak ada, maka file itu akan terbentuk. Tetapi bila ada, maka isi file itu
akan hilang.
Membuka file
yang sudah ada, tetapi tidak menghapus isinya
Menutup suatu
file (lakukan setelah setelah file itu di manipulasi)
Mengisi file
dengan data. (apabila filenya bertipe text, maka writeln bisa digunakan)
Membaca isi
file. (apabila filenya bertipe text, maka readln bisa digunakan untuk membaca
perbaris)
Memeriksa akhir
file. Hasilnya akan True bila posisinya diakhir dan False apabila tidak
diakhir. Biasa digunakan untuk membaca/mengubah data.
Mengetahui
posisi file sekarang. Penomoran data mulai dari 0.
Mengetahui
jumlah data yang ada.
Memindahkan
posisi file. Data pertama bernilai 0.
Menghapus data
dari posisi sekarang sampai akhir file
Menghasilkan
status akhir baris file teks. Nilainya akan true kalau diakhir baris atau Eof
memberikan nilai True.
Sama seperti
Eoln, tetapi spasi dan tab diabaikan.
Sama seperti
Eof, tetapi mengabaikan spasi, tab ataupun tanda akhir baris
Mengosongkan
penyangga (buffer) file teks yang dibuka untuk keluaran (perekaman). Prosedur
ini menjamin bahwa data yang direkam benar-benar telah disimpan ke file
(normalnya, data akan disimpan ke file kalau penyangga file sudah penuh)
Menentukan
ukuran penyangga yang digunakan file. Dipanggil setelah assign. Semakin besar
semakin cepat pemrosesannya, defaultnya 128 byte.
Bila ada tulisan
var f, itu artinya variabel file. NamaFile artinya nama databasenya (bila perlu
pathnya). var1 artinya variabel yang bersesuaian dengan tipe filenya. N artinya
data ke-N. Bila dalam bentuk fungsi, maka ia akan mengembalikan nilai
tergantung jenisnya (apabila boolean maka akan mengembalikan True atau False,
bila longint akan mengembalikan angka).
Waahhh... banyak
yach? emang gitulah... Bahkan ada lagi yang lain loh untuk file tak bertipe.
Prosedur dan fungsi di atas gua ambil dari bukunya pak Ir. Abdul Kadir,
Pemrograman Pascal. Bukunya bagus juga, ada 2 jilid tebel-tebel tapinya :D. O
iya, di sini gua gak ngasih contohnya loh... abis kepanjangan kalo ditulis di
sini.Untuk contoh-contoh penggunaan prosedur dan fungsi di atas bisa di lihat
di Program 9.
CONTOH PROGRAM
Program 1 : menghitung luas/keliling bangunan
Yup... sekarang
kita buat program yang pertama, menghitung luas dan keliling bangunan. Bangunan
yang dijadikan contoh adalah segitiga. Perhatikan contoh di bawah ini:
1: Program Menghitung_Luas_dan_Keliling;
2: var alas, tinggi, sisimiring, luas, keliling:
real;
3: Begin
4:
writeln('MENGHITUNG LUAS DAN KELILING SEGITIGA');
5:
writeln('-------------------------------------');
6:
write('Masukkan alas : ');readln(alas);
7:
write('Masukkan tinggi : ');readln(tinggi);
8:
luas:= 0.5*alas*tinggi;
9:
sisimiring:=sqrt(sqr(alas)+sqr(tinggi));
10: keliling:= alas+tinggi+sisimiring;
11: writeln;
12: writeln('luas segitiga : ', luas:0:2);
13: writeln('keliling segitiga : ',
keliling:0:2);
14: readln;
15: end.
Pada baris 6 dan
7 adalah tempat memasukkan alas dan tinggi segitiga yang akan diproses di baris
8 sampai 10. Ingat kan rumus menghitung sisi miring segitiga? yaitu akar dari
jumlah kuadrat sisi-sisinya. Fungsi "sqrt" adalah untuk mengakarkan
dan sqr untuk mengkuadratkan.
Sekarang kebaris
12 dan 13. Apa yang beda hayoo...? betul.. setelah variabel luas dan keliling
dicetak ke layar ada tambahan ":0:2". Itu artinya :banyaknya alokasi
angka:jumlah desimal.
Gampangkan? iya
donk, kan tinggal maen logika... :D
Program 2 : menentukan bilangan ganjil, genap dan prima
Pernah kan pas
di SD kita disuruh nentuin bilangan ini ganjil apa genap, prima apa bukan.
Sekarang kita jadiin program.
1: Program JenisBilangan;
2: var bil: longint;
3: begin
4:
writeln('MENENTUKAN JENIS BILANGAN');
5:
writeln('-------------------------');
6:
write('Masukkan angka: ');readln(bil);
7: if
((bil=2) or (bil=3) or (bil=5) or (bil=7)) then
8:
write('bilangan prima')
9:
else if ((bil mod 2 <> 0) and (bil mod 3 <> 0) and
(bil mod 5
<> 0) and (bil mod 7 <> 0)) then
10: write('bilangan prima')
11: else write('bukan bilangan prima');
12: if bil mod 2 = 0 then
13: writeln(' dan genap')
14: else
15: writeln(' dan ganjil');
16: readln;
17: end.
Pada baris ke-7
sampai 12 adalah tempat menentukan bilangan prima atau bukan. Masih ingat kan
karateristik bilangan prima? bilangan yang hanya bisa dibagi 1 dan dirinya
sendiri dan juga hampir semuanya ganjil. Berhubung bilangan prima dibawah 10
adalah persyaratan untuk bilangan diatas 10 (perhatikan baris ke 7 dan 9), jadi
bilangan prima dibawah 10 ditulis manual. Fungsi "mod" pada baris 9
dan 13 adalah sebagai sisa dari pembagian. Jika ditulis "7 mod 3"
maka hasilnya adalah 1, artinya sisa dari 7/3 (tujuh dibagi tiga) adalah 1.
Gimana? Tinggal
maen logika... kan? :P
Program 3 :
menentukan bilangan terbesar (dengan if)
Ini adalah
program terakhir untuk mematangkan penggunaan kondisi if. Pernah kah kalian
membuat program dengan susah payah tetapi setelah ditunjukkan dengan orang
lain, mereka bilang "Hanya gitu doank kerjanya?". He he he... sakit
hati emang :-(, kalo bisa rasanya pengen nimpuk tu orang dengan hardisk SEAGATE
BARACUDA 80 giga lima biji :)). Ini salah satu program yang panjang, tapi fungsinya...
yaa... gitulah :D
1: Program BilanganTerbesar;
2: Var bil1, bil2, bil3 :real;
3: Begin
4:
Write('Masukkan Bilangan Pertama : ');Readln(bil1);
5:
Write('Masukkan Bilangan Kedua : ');Readln(bil2);
6:
Write('Masukkan Bilangan Ketiga : ');Readln(bil3);
7: If
(bil1=bil2) and (bil2=bil3) then
8:
Writeln('Semua bilangan yang anda masukkan sama
besar
',bil1:0:0)
9:
Else If (bil1=bil2) or (bil1=bil3) or (bil2=bil3) then
10: Begin
11: If bil1=bil2 then
12: Begin
13: Writeln('Bilangan Pertama dan Kedua
Adalah Sama');
14: If Bil1 < bil3 then
15: Writeln('Bilangan Terbesar Adalah
',bil3:0:0)
16: Else
17: Writeln('Bilangan Terbesar Adalah
',bil1:0:0)
18: End
19: Else If bil1=bil3 then
20: Begin
21: Writeln('Bilangan Pertama dan Ketiga
Adalah Sama');
22: If Bil1 < bil2 then
23: Writeln('Bilangan Terbesar Adalah
',bil2:0:0)
24: Else
25: Writeln('Bilangan Terbesar Adalah
',bil1:0:0)
26: End
27: Else If bil2=bil3 then
28: Begin
29: Writeln('Bilangan Kedua dan Ketiga
Adalah Sama');
30: If Bil1 < bil3 then
31: Writeln('Bilangan Terbesar Adalah
',bil3:0:0)
32: Else
33: Writeln('Bilangan Terbesar Adalah
',bil1:0:0)
34: End
35: End
36: Else If bil1 > bil2 then
37: Begin
38: If bil1 > bil3 then
39: Writeln('Bilangan terbesar adalah
',bil1:0:0)
40: Else
41: Writeln('Bilangan terbesar adalah
',bil3:0:0);
42: End
43: Else If bil1 < bil2 then
44: Begin
45: If bil2 > bil3 then
46: Writeln('Bilangan terbesar adalah
',bil2:0:0)
47: Else
48: Writeln('Bilangan terbesar adalah
',bil3:0:0);
49: End;
50: readln;
51: End.
Hue he he...
keren kan? dengan bermodalkan if kita bisa menentukan bilangan mana yang
terbesar dari 3 bilangan yang dimasukkan. Selain itu program ini bisa
mendekteksi jika ada bilangan yang sama. Yup, hanya itu intinya. Prinsip utama
program ini hanya membandingkan bilangan satu dengan yang lain. Mudah bukan?
lebih baik kalian ngerjain yang ini tanpa ngeliat tu program, biar logikanya
jalan...
Program 4 :
penggurutan angka (looping)
Pernahkah kalian
dikasih nilai ulangan siswa lalu disuruh ngurutin dari yang kecil ke gede? Kalo
jumlahnya dibawah 10 sih gak masalah, lah kalo ada 100 biji kan berabe... Ini
solusinya:
1: Program Pengurutan;
2: var i, j: integer;
3: k
: longint;
4: a: array[1..5] of longint;
5: begin
6:
writeln('PROGRAM MENGGURUTKAN ANGKA');
7:
writeln('--------------------------');
8:
for i:=1 to 4 do
9:
begin
10: write('Masukkan bilangan ke- ', i, ' :
');readln(a[i])
11: end;
12: for j:=2 to 4 do
13: begin
14: k:=a[j];
15: i:=j-1;
16: while (i>0) and (a[i]>k) do
17: begin
18: a[i+1]:=a[i];
19: i:=i-1;
20: end;
21: a[i+1]:=k
22: end;
23: for i:=1 to 4 do
24: writeln(a[i]);
25: readln;
26: end.
Hhmmm... sebenarnya gak perlu dijelasin
lagi yach tu program, gua harap kalian bisa nge-trace (menelusuri) algoritma
programnya. Program ini dibatasi untuk 4 angka saja, bisa diubah sesuai
keinginan. Pada prinsipnya program ini memasukkan input ke dalam array,
kemudian membandingkannya, bila ternyata angka sebelumnya lebih besar, maka
dipindah posisinya (coba dech di trace, pasti ngerti).
Program ini
berguna banget buat kalian yang hobi ngitung, apa lagi buat anak smu. Untuk
pengembanganya kalian bisa menghitung mean, modus dan median
Program
5 : bintang (looping)
Setelah
sebelumnya kita bermain dengan if, sekarang ke for. Program di bawah ini akan
memunculkan output berupa sekumpulan bintang yang membentuk tangga
1: Program BintangTangga;
2: const akhir=18;
3: var baris, kolom: integer;
4: begin
5:
for baris:=1 to akhir do
6:
begin
7:
for kolom:=1 to baris do
8:
write('*');
9:
writeln;
10: end;
11: readln;
12: end.
Coba dech dijalankan,
gimana hasilnya? menarik bukan?. Sekarang kita coba menampilkan sekumpulan
bintang yang membentuk kubus.
1: Program BintangKubus;
2: uses crt;
3: Var i, j, x, y:integer;
4: Begin
5:
clrscr;
6:
Write('Masukkan Dimensi Kubus: ');Readln(x);
7:
y:=0;
8:
For i:=1 to x do
9:
Begin
10: for j:=1 to x do
11: Begin
12: y:=y+1;
13: write(y:4);
14: if y mod x=0 then
15: Writeln;
16: End;
17: End;
18: readkey;
19: End.
Gimana?
baguskan? Sekarang tugas kamu membuat sekumpulan bintang berbentuk piramida dan
berbentuk tangga terbalik (seperti program pertama di atas tetapi terbalik)
Program 6 :
penggabungan program 1, 2 dan 4 dengan membuat menu (prosedur, fungsi)
Setelah dari
tadi belajar logika, sekarang kita menggabungkan beberapa program sebelumnya
dan dibuat menu. Untuk contoh ini kita memanfaatkan repeat.
1: Program Gabung;
2: uses crt;
3: var pilih: integer;
4: Procedure luas;
5:
{copy dan paste program 1}
6: end;
7: Procedure JenisBilangan;
8:
{copy dan paste program 2}
9: end;
10: Procedure
Pengurutan;
11: {copy dan paste program 4}
12: End;
13: begin
{program utama}
14: repeat
15: clrscr;
16: writeln(' PILIHAN');
17: writeln('-------------------------------------------');
18: writeln(' 1. Menghitung Luas');
19: writeln(' 2. Jenis Bilangan');
20: writeln(' 3. Pengurutan');
21: writeln(' 4. Exit');
22:
writeln('-------------------------------------------');
23: writeln;
24: writeln;
25: write(' Pilih Angka untuk Memilih Pilihan
: ');
26: readln(pilih);
27: case pilih of
28: 1 : luas;
29: 2 : JenisBilangan;
30: 3 : Pengurutan;
31: 4 : exit;
32: end;
33: until pilih = 4;
34: end.
Ngertikan prisip
kerjanya? Jadi program ini hanya akan berakhir jika user memilih no 4.
Program 7 :
toko (record dengan array)
Pada tutorial 5
telah dijelaskan cara penggunaan array dan record. Sekarang kita akan
menggabungkan array dan record tersebut. Perhatikan program di bawah ini:
1: Program Array_dan_Record;
2: type dmhs=record
3:
nrp:string[10];
4:
nama:string[25];
5:
alamat:string[50];
6: end;
7: var data:array[1..3] of dmhs;
8:
i:integer;
9: begin
10: for i:=1 to 3 do
11: begin
12: write('nrp : ');readln(data[i].nrp);
13: write('nama : ');readln(data[i].nama);
14: write('alamat :
');readln(data[i].alamat);
15: end;
16: writeln;
17: writeln('Data ditampilkan');
18: for i:=1 to 3 do
19: begin
20: writeln('nrp : ', data[i].nrp);
21: writeln('nama : ', data[i].nama);
22: writeln('alamat : ', data[i].alamat);
23: end;
24: readln;
25: end.
Di dalam program
tersebut dideklarasikan bahwa dmhs (data mahasiswa) itu adalah record yang
mempunyai field nrp, nama dan alamat (lihat baris 2 sampai 6). Selanjutnya
variabel data dideklarasikan bertipe dmhs yang berbentuk array (baris ke 7).
Kemudian seperti biasa untuk memasukkan data ke field digunakan
"readln(data[i].nrp)", dst (baris 10 sampai 15). Untuk menampilkannya
bisa dilihat dibaris ke 18 sampai 23.
Program 8 :
Operasi String
Yang ini
sebenarnya program tambahan, habis program-program sebelumnya kan kebanyakan
bermain logika matematik (tentang angka melulu). Ehh... dipikir-pikir, operasi
tentang string kok gak ada? Tenaaannggg.... sekarang udah ada kok :p
1: var nama : string;
2:
urutan, posisi: integer;
3: begin
4:
nama:='Dijas Keren';
5:
writeln('Yang ini delete');
6:
for urutan:=1 to 11 do
7:
begin
8:
posisi:= 13 - urutan;
9:
delete(nama, posisi, 1);
10: writeln(nama);
11: end;
12: writeln;
13: nama:='DijasKeren';
14: writeln('Yang ini insert');
15: writeln('Sebelum di Insert : ', nama);
16: insert('-', nama, 6);
17: writeln('Setelah di Insert : ', nama);
18: readln;
19: end.
Outputnya
seperti di bawah ini
Yang ini delete
Dijas Keren
Dijas Kere
Dijas Ker
Dijas Ke
Dijas K
Dijas
Dijas
Dija
Dij
Di
D
Yang ini insert
Sebelum di
Insert : DijasKeren
Setelah di
Insert : Dijas-Keren
Jadi isi
penggunaan delete itu => delete(string, posisinya, jumlah yang di hapus).
Sedangkan insert => insert(yang mau disisipkan, string, posisinya). Gampang
kan? Dengan ini bisa dibuat kayak Program 5 loh (tentang bintang).
Bagaimana jika
suatu saat kamu pengen ngerubah string jadi numerik atau numerik jadi string?
str(angkanya:desimal
yang diambil, variabel string tempat hasilnya disimpan)
prosedur ini
untuk mengubah numerik ke string
val(string,
variabel numerik tempat hasilnya disimpan, posisi salah)
prosedur ini
untuk mengubah string ke numerik. Khusus posisi salah, yang dideteksi adalah
posisi salah yang pertama (walaupun ada 5 biji yang salah, yang ke tangkap yang
pertama)
Concat(string,
string, string) : string
Yang ini untuk
menggabungkan string, ini fungsi loohh.. jadi hasil penggabungannya ditampung
di Concat
Ini program
terakhir tentang operasi string, program pembalik kata
1: program pembalik_kata;
2: var kata,hasil,tmp:string; i:integer;
3: begin
4:
write('Kata : ');readln(kata);
5:
hasil:='';
6:
for i :=length(kata) downto 1 do
7:
begin
8:
tmp:=copy(kata,i,1);
9:
hasil:=hasil+tmp;
10: end;
11: write('Dibalik ',hasil);
12: readln;
13: end.
Di program ini
ada dua fungsi operasi string baru yang digunakan.
length(string) :
integer
Fungsi ini untuk
menghitung panjang atau jumlah karakter.
copy(string,
posisinya, jumlah yang akan diambil)
Fungsi ini untuk
mengambil sejumlah huruf dari sting yang dimasukkan
Pos(string/huruf
yang akan dicari posisinya, string awal):byte
Fungsi ini untuk
mengetahui posisi dari string/huruf dari kata/kalimat yang dimaksud. Bila
bernilai nol berarti nilai string yang dicari tidak ada.
Program
9 : Contoh penggunaan teori di tutor 6
Program database
ini adalah contoh-contoh penggunaan fungsi dan prosedur dari Tutorial 6.
Perhatikan contoh berikut:
1: Program BuatFile;
2: var fText : text; data: string;
3: begin
4:
writeln('MENGISI DATA');
5:
writeln('------------');
6:
assign(fText, 'nama.txt');
7:
rewrite(fText); {gunakan reset(fText) bila file sudah ada}
8:
writeln(fText, 'dijas');
9:
writeln(fText, 'dian');
10: writeln(fText, 'cecep');
11: close(fText);
12: readln;
13: end.
Prosedur yang
digunakan di atas adalah prosedur no. 1 sampai 5 yang ada di Tutorial 6. Untuk
membaca databasenya gunakan reset (jangan rewrite) dan gunakan prosedur no 6.
Perhatikan contoh di bawah ini:
assign(fText,
'bil.dat');
reset(fText);
read(fText,
data);
writeln(data);
Sekarang kita
gunain fungsi nomor 7 yachh... Fungsi ini biasa digunakan untuk membaca data
yang ada dari awal/posisi tertentu sampai akhir. eof kepanjangan end of file
while not
eof(fText) do
begin
readln(fText, data);
writeln(data);
end;
Bagaimana
caranya jika ingin mengedit data yang sudah ada? Gunakan prosedur seek,
perintahnya: Seek(fText, filesize(fText));. Setelah menempatkan kursor ditempat
yang diinginkan, gunakan perintah write untuk mengedit atau prosedur Truncate
untuk menghapus (perintahnya Truncate(fText)). Tapi hati-hati mengunakan
Truncate, soalnya mulai dari posisi yang dimaksud sampai akhir file akan
dihapus. Fungsi dan prosedur lainnya bisa dicoba-coba sendiri yaaa....
Huuff... akhirnya kelar juga ngebahas
dasar-dasar pascal. Kalo kalian udah paham seluruh tutorial dan program yang
ada di sini, berarti kalian sudah melewati level basic. Untuk pengembangannya
coba cari program-program open source, terutama mengenai database. Selamat
mencoba.…