Disusun oleh :
1. Mochammad Taufan, 181071008
2. Yosita, 181077007
Ketika melalukan proses compile, program Free Pascal (atau Turbo Pascal)
akan memproses seluruh kode program dan menampilkan error (jika ada) atau
menampilkan keterangan “Compile sucessfull: Press any key” jika berhasil.
program hello_world;
begin
writeln('Hello World');
writeln('Sedang belajar pascal...');
readln;
end.
Sebuah kode program pascal, diawali dengan
keyword program kemudian diikuti dengan judul program yang diinginkan
(dalam contoh diatas, saya menggunakan judul hello_world). Selanjutnya,
kode program dibuka dengan perintah “begin”, dan diakhiri dengan perintah
“end.”(perhatikan tanda titik di akhir end). Diantara “begin” dan “end.”
inilah seluruh kode program pascal berada.
Perintah writeln digunakan untuk menampilkan teks (output),
sedangkan perintah readln digunakan untuk menerima masukan (input).
Perintah readln pada kode diatas saya tambahkan hanya untuk menahan
jendela tampilan jendela program ketika di-run. Anda boleh menghapus
baris readln; dan mencoba men-run kode diatas. Hasilnya hanya akan
terlihat sekilas saja (tidak sampai 1 detik).
Jika anda tidak ingin menambahkan perintah readln, bisa
menggunakan alternatif lain. Setelah program di-run (layar akan berkedip
sebentar), silahkan tekan tombol ALT+F5, atau pilih menu Debug -> User
Screen.
B. Perbedaan Huruf Besar / Kecil
Kode program dibawah ini akan menghasilkan tampilan yang sama dengan
kode kita sebelumnya:
PROGRAM hello_world;
BEGIN
WRITELN('Hello World');
WRITELN('Sedang belajar pascal...');
READLN;
END.
C. Cara Penulisan Komentar di dalam Pascal
program hello_world;
begin
(* Kode untuk menampilkan tulisan 'Hello World'*)
writeln('Hello World');
{ Kode untuk menampilkan tulisan 'Sedang belajar pascal...'}
writeln('Sedang belajar pascal...');
readln;
end.
Penulisan komentar juga bisa mencakup beberapa baris, selama tanda penutup
komentar belum di temukan:
program hello_world;
begin
(* Kode untuk
menampilkan tulisan
'Hello World'*)
writeln('Hello World');
{ Kode untuk
menampilkan tulisan
'Sedang belajar pascal...'}
writeln('Sedang belajar pascal...');
readln;
end.
Khusus untuk Free Pascal, terdapat 1 lagi cara penulisan komentar,
yakni menggunakan tanda ‘//’. Tanda komentar ‘//’ sangat populer digunakan,
khususnya dalam bahasa pemrograman lain seperti C, C++, atau PHP. Akan
tetapi komentar ini tidak didukung oleh Turbo Pascal.
D. Penggunaan Whitespace
Sebagai contoh, kode program hello world kita sebelumnya bisa juga ditulis
seperti berikut ini:
program hello_world;
begin
writeln('Hello World');
writeln('Sedang belajar pascal...');
readln;
end
E. Pengertian Statement di dalam Pascal
writeln(‘Hello World’);
readln(var);
writeln(4+5);
writeln(6/10);
Penulisan statement tidak harus 1 baris 1 statement, kita juga bisa
menggabungkan beberapa statement dalam 1 baris, atau memecah 1 statement
ke dalam beberapa baris, seperti contoh berikut:
4+5;
6/10;
G. Pengertian Identifier di dalam Pascal
Nama program
Nama fungsi
Nama variabel
Nama konstanta
Fungsi, variabel dan konstanta ini akan kita bahas dalam tutorial tersendiri.
program nama_program;
{ bagian deklarasi }
begin
{ main program }
end.
C. Perintah Uses
Uses adalah cara bahasa pemrograman pascal untuk memasukkan
kode-kode external yang dikenal dengan unit (atau library dalam bahasa
pemrograman lain). Sebagai contoh, perintah clrscr yang saya gunakan pada
program utama merupakan perintah yang ada pada unit crt. Terdapat berbagai
unit yang bisa kita gunakan, seperti math, sysutils, printer, dan strutils.
D. Deklarasi Type
Pada bagian deklarasi Type, kita bisa membuat tipe data bentukan.
Sebagai contoh, dalam membuat tipe data yaitu warna, dimana tipe data ini
hanya bisa diisi dengan nilai merah, kuning, atau biru.
I. Main Program
Main program adalah tempat dimana kode program utama ditulis.
Disinilah dilakukan pemanggilan fungsi atau prosedur (jika ada), serta
pembuatan proses alur kerja program. Main program diawali dengan
keyword begin dan diakhiri dengan end.
Pascal mendukung berbagai jenis tipe data. Tipe data ini bisa
dikelompokkan menjadi tipe data dasar, tipe data terstruktur, tipe data
bentukan, dll.
Terdapat 4 tipe data dasar di dalam Pascal. Keempat tipe data ini
dikenal juga sebagai tipe data ‘scalar’ :
Integer: tipe data berupa angka bulat, seperti 1,2,5,9,1000 atau 476563.
Real: tipe data yang berisi angka desimal (pecahan), seperti 22.7, 3.14,
atau 0.006
Char: tipe data yang berisi huruf, seperti “a”, “A”, “C” atau “z”.
Boolean: tipe data yang hanya berisi 2 nilai, true atau false.
String: tipe data yang berisi kumpulan karakter, seperti “aku”, “kamu”
atau “belajar pascal di duniailkom”.
Enumerated: tipe data bentukan yang bisa didefenisikan sendiri. Sebagai
contoh kita bisa membuat tipe data warna yang terdiri dari nama-nama
warna.
Subrange: tipe data bentukan yang berisi bagian dari tipe data lain.
Sebagai contoh, kita bisa membuat tipe data “angka_kecil” yang hanya
berisi angka 1 – 9 (merupakan bagian dari tipe data integer)
Array: tipe data yang terdiri dari banyak variabel, sebagai contoh kita bisa
membuat nama siswa sebagai array “siswa”, dan variabel penyusunnya
adalah siswa[1], siswa[2], siswa[3], dst.
Record: tipe data bentukan yang bisa berisi berbagai tipe data. Record
untuk “siswa” bisa terdiri dari “nama”, “alamat”, “tinggi_badan”, dll.
Set: tipe data yang mirip dengan subrange, tetapi bisa digunakan untuk
operasi himpunan seperti gabungan, irisan, bagian, dll.
File: tipe data yang digunakan untuk mengakses file atau dokumen.
Pointer: tipe data khusus yang merujuk kepada sebuah alamat di memory.
Gambar dibawah ini memperlihatkan jenis-jenis tipe data dan pembagiannya
(sumber: tutorialspoint.com):
Sebuah variabel di dalam pascal harus ditulis sesuai dengan aturan berikut:
var
nama_variabel:tipe_data;
Perhatikan bahwa penulisan nama variabel dengan tipe datanya dipisah oleh
karakter titik dua ” : ”. Diakhir deklarasi juga ditutup dengan karakter titik
koma “;”
Berikut contohnya di dalam kode pascal:
var
nama: string;
umur: integer;
alamat: string;
Pascal juga membolehkan deklarasi variabel untuk tipe data yang sama dalam
1 baris (dipisahkan dengan tanda koma “ , ”):
var
umur: integer;
nama_variabel := nilai;
nama := 'Dika';
nama:string='Dika';
umur:integer:19;
writeln(nama);
writeln(umur);
Sebagai penutup tutorial pascal kali ini, berikut adalah contoh kode
program sederhana yang merangkum apa yang kita pelajari kali ini:
program biodata;
uses crt;
var
nama,alamat:string;
umur:integer=21;
begin
clrscr;
nama:='Dika';
alamat:='Jl. Bimo Kurdo no.39';
umur:=19;
writeln(nama);
writeln(umur);
writeln(alamat);
writeln(kuliah);
readln;
end.
Const
phi = 3.14;
dollar = 13000;
nama = ‘Joko’;
Perhatikan bahwa pascal menggunakan tanda sama dengan ‘ = ’ untuk
memberikan nilai kepada konstanta saat dideklarasikan.
Berikut adalah contoh program pascal yang menggunakan konstanta:
program konstanta;
uses crt;
const
phi=3.14;
dollar=14500;
nama='Tiki';
var
situs:string='www.duniailkom.com';
begin
clrscr;
writeln(phi:4:2);
writeln(dollar);
writeln(nama);
writeln(situs);
readln;
end.
6. Tutorial Belajar Pascal Part 10: Cara Penggunaan serta Perbedaan Write
dan Writeln Pascal
A. Fungsi & Perbedaan write dan writeln
Write dan writeln sama-sama digunakan untuk menampilkan
‘sesuatu’ dari dalam kode pascal ke jendela tampilan, atau dalam istilah
pemrograman digunakan sebagai perintah ‘ouput’. Perbedaan
antara write dan writeln terletak pada apakah ‘output’ selanjutnya
ditampilkan pada baris yang sama, atau di baris baru.
Perintah write akan menampilkan ‘output’, kemudian menyambung
tampilan berikutnya dibaris yang sama (cursor teks tetap berada di baris yang
sama). Sedangkan perintah writeln akan menampilkan ‘output’, kemudian
menyambung tampilan berikutnya di baris baru (cursor teks akan pindah ke
baris baru).
Data-ouput ini bisa berupa teks, variabel, konstanta, dll. Agar lebih
mudah dipahami, berikut contoh kode program yang memperlihatkan
perbedaan kedua perintah ini:
program tampil;
uses crt;
begin
clrscr;
write('Nama : ');
writeln('Kindi');
writeln('Nama: ');
writeln('Jenifer');
write('C');
write('i');
write('n');
write('t');
write('a');
writeln('h');
writeln('e');
writeln('w');
writeln('a');
writeln('n');
readln;
end.
Hasil kode program:
Oleh karena itu, perintah writeln juga digunakan untuk pindah baris, tanpa
perlu menulis teks apapun.
program tampil;
uses crt;
const
kota='Bandung';
var
nama:string='Tarzan';
umur:integer=18;
begin
clrscr;
write('Nama : ');
writeln(nama);
write('Umur : ');
writeln(umur);
write('Kota : ');
writeln(kota);
write('IPK : ');
writeln(3);
readln;
end.
program tampil;
uses crt;
const
kota='Ambon';
var
nama:string='Joni';
umur:integer=17;
begin
clrscr;
writeln('Nama : ',nama);
writeln('Umur : ',umur);
writeln('Kota : ',kota);
writeln('IPK : ',3);
readln;
end.
Lebih jauh lagi, seluruh tampilan diatas bisa digabung kedalam 1
perintah writeln. Seperti berikut:
program tampil;
uses crt;
const
kota='Ambon';
var
nama:string='Joni';
umur:integer=17;
begin
clrscr;
writeln('Nama : ',nama,'. Umur : ',umur,'. Kota : ',kota,'. IPK : ',3);
readln;
end.
Perhatikan bahwa kita perlu mengetahui kapan harus menggunakan tanda
kutip, dan kapan menggunakan tanda koma.
D. Menformat Tampilan Output Integer/Real
Khusus untuk tipe data angka (integer/real) pascal menyediakan
instruksi tambahan untuk mengatur bagaimana angka tersebut ditampilkan.
Jika berupa angka bulat (integer), kita bisa mengatur seberapa banyak
‘tempat’ untuk angka yang dipersiapkan. Apabila angka tersebut adalah angka
pecahan (real), kita bisa mengatur berapa digit angka dibelakang koma.
Berikut format penulisannya:
Angka bulat (integer) = angka:jumlah_digit.
Angka desimal (real) =
angka:jumlah_digit:jumlah_digit_dibelakang_koma.
Berikut contoh kode programnya:
program tampil;
uses crt;
var
angka_int:integer=1234;
angka_real:real=1234.12345;
begin
clrscr;
writeln(angka_int);
writeln(angka_int:4);
writeln(angka_int:8);
writeln(angka_real);
writeln(angka_real:4:2);
writeln(angka_real:2:4);
readln;
end.
Hasil kode program:
7. Tutorial Belajar Pascal Part 11: Cara Penggunaan serta Perbedaan Read
dan Readln Pascal
Agar lebih memahami konsep ini, berikut adalah contoh kode program
penggunaan kedua perintah ini:
program input;
uses crt;
var
nama,alamat:string;
umur:integer;
ipk:real;
begin
clrscr;
writeln('Masukkan Data Mahasiswa');
writeln('=======================');
write('Nama :');
readln(nama);
write('Alamat :');
readln(alamat);
write('Umur :');
read(umur);
write('IPK :');
readln(ipk);
writeln;
writeln('=========HASIL=========');
write('Nama: ',nama,'. Alamat: ',alamat);
writeln('. Umur: ',umur,'. IPK: ',ipk:1:2);
readln;
end.
Hasil kode program:
D. Penggunaan read dan readln untuk tipe data integer dan real
Jika menggunakan tipe data angka (integer/real), perintah read akan
membaca seluruh inputan yang dipisah dengan spasi maupun enter. Berikut
contoh penggunaannya:
program input;
uses crt;
var
a,b,c,d:integer;
begin
clrscr;
writeln('Input 4 angka, dipisah dengan spasi:');
read(a);
read(b);
read(c);
read(d);
writeln;
writeln('Hasil Input:');
writeln('a: ',a,', b: ',b,', c: ',c,', d: ',d);
readln; readln;
end.
Hasil kode program:
program input;
uses crt;
var
a,b,c,d,e:char;
begin
clrscr;
writeln('Input Teks Sembarang (5 karakter)');
read(a);
read(b);
read(c);
read(d);
read(e);
writeln;
writeln('Hasil Teks:');
write(a,' ',b,' ',c,' ',d,' ',e);
readln;
readln;
end.
Hasil program:
program input;
uses crt;
var
a,b,c,d:string;
begin
clrscr;
writeln('Input 4 kata:');
read(a);
read(b);
read(c);
read(d);
writeln;
writeln('Hasil Teks:');
writeln('a: ',a);
writeln('b: ',b);
writeln('c: ',c);
writeln('d: ',d);
readln;
readln;
end.
Jika kita menginput 4 kata yang dipisah dengan spasi, dan menekan tombol
enter, keempat kata ini akan diinput kedalam variabel a:
Hasil program:
Solusi untuk hal ini, kita mengganti perintah read dengan readln.
Dengan begitu, setiap teks dipisah dengan enter dan diinput kepada masing-
masing variabel.
program input;
uses crt;
var
a,b,c,d:string;
begin
clrscr;
writeln('Input 4 kata:');
readln(a);
readln(b);
readln(c);
readln(d);
writeln;
writeln('Hasil Teks:');
writeln('a: ',a);
writeln('b: ',b);
writeln('c: ',c);
writeln('d: ',d);
readln;
end.
D. Penggunaan read dan readln untuk tipe data integer dan real
program input;
uses crt;
var
a,b,c,d:integer;
begin
clrscr;
writeln('Input 4 angka, dipisah dengan spasi:');
read(a);
read(b);
read(c);
read(d);
writeln;
writeln('Hasil Input:');
writeln('a: ',a,', b: ',b,', c: ',c,', d: ',d);
readln; readln;
end.
Hasil kode program:
9. Tutorial Belajar Pascal Part 12: Pengertian dan Cara Penggunaan Tipe Data
Integer Pascal
A. Pengertian Tipe Data Integer
Byte 0 .. 255 1
Word 0 .. 65535 2
Cardinal Longword 4
Longword 0 .. 4294967295 4
-9223372036854775808 ..
Int64 9223372036854775807 8
Qword 0 .. 18446744073709551615 8
10. Tutorial Belajar Pascal Part 13: Pengertian dan Cara Penggunaan Tipe Data
Real Pascal
A. Pengertian Tipe Data Real Pascal
Dalam bahasa pemrograman Pascal, tipe data real digunakan untuk
angka desimal (pecahan), seperti 0.11, 3.14, atau 999.99. Tipe data ini dikenal
juga dengan tipe data float atau floating point.
Karena menggunakan format amerika, penulisan nilai real di dalam
Pascal menggunakan karakter titik sebagai penanda angka ‘desimal’, bukan
karakter koma sebagaimana yang kita gunakan sehari-hari.
Pascal mendukung beberapa tipe data yang termasuk kategori float,
yakni: Real, Single, Double, Extended, Comp dan Currency.
program tipe_real;
uses crt;
var
a:real;
begin
clrscr;
a:=4.67;
writeln('a: ',a);
a:=907.89;
writeln('a: ',a);
a:= a + 0.01;
writeln('a: ',a);
readln;
end.
Hasil Program :
-922337203685477.5808 s/d
Currency 922337203685477.5807 19-20 8
Hasil program :
11. Tutorial Belajar Pascal Part 14: Pengertian dan Cara Penggunaan Tipe Data
Char Pascal
A. Pengertian Tipe Data Char di Pascal
program tipe_char;
uses crt;
var
a:char;
begin
clrscr;
a:='Z';
writeln('a: ',a);
a:='8';
writeln('a: ',a);
a:='k';
writeln('a: ',a);
readln;
end.
Hasil Program :
Dalam contoh diatas, saya mendefenisikan variabel a dengan tipe data char,
sehingga kita bisa mengisinya dengan 1 karakter saja.
program tipe_char;
uses crt;
var
a:char;
begin
clrscr;
a:=#65;
writeln('a: ',a);
a:=#78;
writeln('a: ',a);
a:=#134;
writeln('a: ',a);
readln;
end.
Hasil Program :
12. Tutorial Belajar Pascal Part 15: Pengertian dan Cara Penggunaan Tipe Data
String Pascal
A. Pengertian Tipe Data String di dalam Pascal
program tipe_string;
uses crt;
var
a:string;
begin
clrscr;
a:='Duniailkom';
writeln('a: ',a);
writeln('a: ',a);
a:='123456789';
writeln('a: ',a);
readln;
end
Hasil Program :
C. Mengenal Tipe Data AnsiString FreePascal
program tipe_string;
uses crt;
var
a:string;
begin
clrscr;
a:='Pascal diambil dari nama ahli matematika prancis abad pertengahan, ' +
'Blaise Pascal. Bahasa Pascal di kembangkan oleh Niklaus Wirth pada ' +
'tahun 1970, dan populer digunakan pada era 1970 hingga awal 1990an. ' +
'Dari awal dikembangkan, Pascal dirancang untuk keperluan akademik. ' +
'Atas alasan itu pula Pascal masih digunakan di berbagai sekolah dan ' +
writeln(a);
readln;
end.
Hasil Program :
13. Tutorial Belajar Pascal Part 16: Pengertian dan Cara Penggunaan Tipe Data
Boolean Pascal
A. Pengertian Tipe Data Boolean Pascal
14. Tutorial Belajar Pascal Part 17: Pengertian dan Cara Penggunaan Tipe Data
Enumerated Pascal
A. Pengertian Tipe Data Enumerated Pascal
Tipe data enumerated adalah tipe data khusus yang isinya bisa kita
tentukan sendiri. Sebagai contoh, kita bisa membuat
tipe enumerated ‘warna’ yang berisi: merah, kuning, biru dan ungu. Atau
tipe enumerated ‘nama_hari’ yang berisi nama-nama hari
seperti senin, selasa, rabu, dst. Tipe data enumerated sering juga
disebut enumeration atau enum saja.
type
warna= (merah,kuning,hijau,biru,ungu);
var
a,b:warna;
program tipe_enumerated;
uses crt;
type
warna= (merah,kuning,hijau,biru,ungu);
var
a,b: warna;
begin
clrscr;
a:= merah;
writeln('a: ',a);
b:= ungu;
writeln('b: ',b);
readln;
end.
Hasil program :
15. Tutorial Belajar Pascal Part 18: Pengertian dan Cara Penggunaan Tipe Data
Subrange Pascal
A. Pengertian Tipe Data Subrange Pascal
program tipe_subrange;
uses crt;
type
satuan= 1..9;
var
a,b: satuan;
begin
clrscr;
a:= 9;
writeln('a: ',a);
b:= 3;
writeln('b: ',b);
readln;
end.
Hasil program :
Untuk membuatnya lebih kompleks (dan juga lebih fleksibel), kita bisa
membuat tipe data subrange dari yang isinya berasal dari tipe
data enumerated. Langsung saja kita masuk ke contoh programnya:
program tipe_enumeration;
uses crt;
type
nama_hari= (senin,selasa,rabu,kamis,jumat,sabtu,minggu);
hari_kerja= senin..jumat;
weekend= sabtu..minggu;
var
a:hari_kerja;
b:weekend;
begin
clrscr;
a:= selasa;
writeln('a: ',a);
b:= minggu;
writeln('b: ',b);
readln;
end.
Hasil program :
Contoh diatas saya ambil dari kode program dari tutorial tipe data
enumeration, dimana saya mendefenisikan nama_hari sebagai tipe
data enumerated. Namun kali ini saya membuat tipe
data subrange hari_kerja dan weekend dari nama_hari.
Konsep penggabungan enumerated dan subrange ini mungkin cukup
rumit, tapi jika anda telah memahami tutorial sebelumnya tentang
enumeration, saya rasa bisa memahami cara kerja kode program diatas.
Silahkan diubah-ubah dan lihat bagaimana hasilnya.
16. Tutorial Belajar Pascal Part 19: Pengertian dan Cara Penggunaan Tipe Data
Array Pascal
A. Pengertian Tipe Data Array Pascal
Tipe data array adalah tipe data bentukan yang terdiri dari kumpulan
tipe data lain. Daripada membuat 10 variabel yang terdiri
dari nama1, nama2, nama3, dst, akan lebih efisien jika variabel nama ini
disimpan ke dalam array.
Berikut contoh kode program pascal cara penggunaan tipe data array:
program tipe_array;
uses crt;
var
nilai: array[0..9] of integer;
begin
clrscr;
nilai[0]:= 67;
nilai[1]:= 19;
nilai[2]:= 59;
nilai[3]:= 107;
writeln('nilai0: ',nilai[0]);
writeln('nilai1: ',nilai[1]);
writeln('nilai2: ',nilai[2]);
writeln('nilai3: ',nilai[3]);
readln;
end.
Hasil program :
17. Tutorial Belajar Pascal Part 20: Cara Membuat Array 2 Dimensi Pascal
A. Array 1 Dimensi Pascal
program tipe_array;
uses crt;
var
begin
clrscr;
nilai[0]:= 10;
nilai[1]:= 20;
nilai[2]:= 30;
writeln('nilai1: ',nilai[0]);
writeln('nilai2: ',nilai[1]);
writeln('nilai3: ',nilai[2]);
readln;
end.
Hasil program :
var
program tipe_array;
uses crt;
var
begin
clrscr;
nilai[0,0]:= 1;
nilai[0,1]:= 2;
nilai[0,2]:= 3;
nilai[1,0]:= 4;
nilai[1,1]:= 5;
nilai[1,2]:= 6;
writeln('nilai0,0: ',nilai[0,0]);
writeln('nilai0,1: ',nilai[0,1]);
writeln('nilai0,2: ',nilai[0,2]);
writeln('nilai1,0: ',nilai[1,0]);
writeln('nilai1,1: ',nilai[1,1]);
writeln('nilai1,2: ',nilai[1,2]);
readln;
end.
Hasil program :
Secara teori, dimensi untuk array di dalam pascal tidak terbatas. Kita
juga bisa membuat array 3 dimensi. Ini diperlukan jika koordinat cartesius
terdiri dari sumbu x, sumbu y, dan sumbu z. Cara pembuatannya juga hampir
sama.
Sebagai contoh, jika saya ingin membuat array 3 dimensi 2x3x4 bisa
ditulis sebagai:
var
program tipe_array;
uses crt;
var
clrscr;
nilai[0,0,2]:= 2;
writeln(nilai[0,0,2]);
nilai[1,2,3]:= 999;
writeln(nilai[1,2,3]);
readln;
end.
Hasil program :
18. Tutorial Belajar Pascal Part 21: Pengertian dan Cara Membuat Array
Dinamis Pascal
Var
nilai: array[0..9] of integer;
Berarti kita membuat array integer yang terdiri dari 10 element (0, 1,
2, 3 … 9).
Hasil program :
program tipe_array;
uses crt;
type
nama_hari= (senin,selasa,rabu,kamis,jumat,sabtu,minggu);
usia= 0..99;
var
begin
clrscr;
hari[1]:= rabu;
hari[9]:= minggu;
umur[3]:= 15;
umur[8]:= 84;
writeln('hari [1]: ',hari[1]);
readln;
end.
Hasil Program :
20. Tutorial Belajar Pascal Part 23: Pengertian dan Cara Penggunaan Tipe Data
Record Pascal
var
nama_record:
record
end;
program tipe_record;
uses crt;
var
siswa: record
end;
begin
clrscr;
siswa.nama:= 'Dirgantara';
siswa.umur:= 18;
siswa.kota:= 'Jakarta';
writeln('Nama : ',siswa.nama);
writeln('Umur : ',siswa.umur);
writeln('Sekolah : ',siswa.sekolah);
writeln('Kota : ',siswa.kota);
readln;
end.
Hasil Program :
21. Tutorial Belajar Pascal Part 24: Fungsi Perintah With pada Tipe data
Record Pascal
var
siswa: record
end;
siswa.nama:= 'Dirgantara';
siswa.umur:= 18;
siswa.kota:= 'Jakarta';
with siswa do
begin
end;
program tipe_record;
uses crt;
var
siswa: record
end;
begin
clrscr;
with siswa do
begin
readln;
end.
Hasil Program :
Hasil Program
23. Tutorial Belajar Pascal Part 26: Pengertian dan Cara Penggunaan Tipe Data
Set Pascal
A. Pengertian Tipe Data Set Pascal
Tipe data set adalah tipe data yang terdiri dari kelompok data yang
sama. Ini sedikit mirip dengan tipe data enumeration, dimana kita bisa
menentukan sendiri isi dari tipe data set.
Secara khusus, tipe data set ini sangat mirip dengan
konsep himpunan di dalam matematika. Sebagai contoh, misalnya saya
membuat sebuah himpunan huruf fokal, himpunan ini terdiri dari huruf ‘a’, ’i’,
’u’, ’e’ dan ‘o’. Kemudian, saya bisa melakukan beberapa proses terhadap
himpunan ini, apakah itu penambahan dengan himpunan lain (union),
pengurangan dengan himpunan lain (irisan), dll. Di dalam pascal, konsep
himpunan inilah yang menjadi tipe data set.
B. Cara Penggunaan Tipe Data Set Pascal
Untuk membuat tipe data set di dalam pascal, kita cukup
mendeklarasikan variabel sebagai set of tipe_data. Sebagai contoh, untuk
membuat variabel yang merupakan himpunan dari tipe data char, bisa ditulis
seperti berikut ini:
var
var
himpunan1 := ['a','i','u','e','o'];
Cara penggunaan tipe data set pascal ini, saya akan mencoba
menampilkan operasi penggabungan himpunan, atau di dalam teori
himpunan dikenal dengan operasi union. Berikut contoh kode programnya:
program tipe_set;
uses crt;
var
i:char;
begin
clrscr;
himpunan1 := ['a','i','u','e','o'];
himpunan2 := ['x','y','z'];
for i in himpunan3 do
writeln(i);
readln;
end.
var
angka: integer;
var
pointer_angka : ^integer;
program tipe_pointer;
uses crt;
var
angka: integer;
pointer_angka : ^integer;
begin
clrscr;
angka:= 32;
pointer_angka:= @angka;
angka:=76;
readln;
end.
Hasil Program :
program tipe_pointer;
uses crt;
var
angka: integer;
pointer : ^integer;
i : ^word;
begin
clrscr;
angka:= 89;
pointer:= @angka;
i:= addr(pointer);
readln;
end.
Hasil program :
25. Tutorial Belajar Pascal Part 28: Jenis-jenis Tipe Data di Dalam Bahasa
Pascal
A. Jenis-jenis Tipe Data di Dalam Bahasa Pascal
Tipe data di dalam bahasa pemrograman pascal bisa dikelompokkan
menjadi berbagai jenis. Gambar berikut bisa menjadi acuan pembagian tipe data ini:
Tipe data integer adalah tipe data yang terdiri dari angka bulat
(tidak mengandung nilai pecahan atau nilai desimal). Nilai ini bisa
berbentuk angka positif maupun negatif, contohnya 3, 99, 1114, -44,
10000, atau 128730123.
Var
a:integer;
b) Tipe Data Real
Var
a:real;
c) Tipe Data Char
Var
a:char;
d) Tipe Data Boolean
var
a:boolean;
2) Tipe Data Bentukan (User Defined) Pascal
Type
nama_hari= (senin,selasa,rabu,kamis,jumat,sabtu,minggu);
var
a: nama_hari;
b) Tipe Data Subrange
Type
satuan= 1..9;
var
a: satuan;
3) Tipe Data Structured Pascal
Var
nilai: array[0..9] of integer;
b) Tipe Data String
var
a:string;
c) Tipe Data Record
var
siswa: record
nama: string[20];
umur: integer;
sekolah: string[30];
kota: string[20];
end;
d) Tipe Data Set
Tipe data set adalah tipe data yang isinya terdiri dari sebuah
himpunan tipe data lain, seperti hipunan angka 1 sampai 9, himpunan
huruf vokal, dll. Tipe data set digunakan untuk membuat operasi
himpunan seperti gabungan, irisan, atau selisih.
Berikut contoh cara pendefenisian tipe data set di dalam pascal:
var
a: set of 1..9;
e) Tipe Data File
var
myfile: file of single;
4) Tipe Data Pointer
Kelompok keempat dari tipe data pascal adalah tipe data pointer.
Kelompok tipe data ini hanya terdiri dari jenis: pointer. Tipe data pointer
adalah tipe data yang berisi alamat memory dari sebuah variabel. Tipe
data ini digunakan jika kita butuh memanipulasi variabel langsung dari
memory komputer. Biasanya pointer digunakan ketika mempelajari
struktur data. Berikut contoh cara pendefenisian tipe data pinter di dalam
pascal:
var
pointer : ^string;
26. Tutorial Belajar Pascal Part 29: Jenis-jenis Operator dalam Bahasa
Pemrograman Pascal
A. Pengertian Operand dan Operator
Sebelum masuk ke jenis-jenis operator di dalam bahasa pascal,
terdapat istilah operand dan operator.
Operand adalah nilai asal yang digunakan di dalam sebuah proses
operasi. Sedangkan Operatoradalah instruksi yang diberikan untuk
mendapatkan hasil dari proses tersebut. Biasanya operator berupa karakter
matematis atau perintah singkat sederhana.
Sebagai contoh, pada operasi: 10 + 2. Angka 10 dan 2 disebut
sebagai operand, sedangkan tanda tambah (karakter +) adalah operator.
Operator Assignment
Operator Aritmatika
Operator String
Operator Perbandingan / Relasional
Operator Logika / Boolean
Operator Bitwise
Operator Set / Himpunan
Operator Address (Pointer)
1) Operator Assignment
Operator assignment adalah operator yang digunakan untuk
memberikan nilai ke dalam suatu variabel. Di dalam pascal hanya terdapat
1 operator assignment, yakni ‘:=’.
Operato
r Penjelasan Contoh
2) Operator Aritmatika
Pembagian (integer/angka
Div bulat) 14 div 4 = 3
3) Operator Aritmatika Unary
+ Positif (plus) +5
– Negatif (min) -3
4) Operator String
Akan
menghasilkan TRUE jika TRUE and FALSE,
and kedua operand TRUE hasilnya: FALSE
Or Akan TRUE or FALSE,
menghasilkan TRUE jika
salah satu operand TRUE hasilnya: TRUE
Akan
menghasilkan TRUE jika TRUE xor FALSE,
xor kedua operand berbeda hasilnya: TRUE
Akan
menghasilkan TRUE jika not TRUE ,
Not operand FALSE hasilnya: FALSE
7) Operator Bitwise
+ Union
– Selisih (Difference)
* Irisan (Intersection)
A := 500
B. Contoh Penggunaan Operator Assignment Pascal
Tidak ada hal yang baru dari kode program diatas. Saya
mendefenisikan beberapa variabel, memberikan nilai kedalam variabel
tersebut dan menampilkan hasilnya.
28. Tutorial Belajar Pascal Part 31: Jenis-jenis Operator Aritmatika dalam
Pascal
A. Pengertian dan Jenis-jenis Operator Aritmatika dalam Pascal
Operator aritmatika merupakan operator yang sehari hari kita
gunakan dalam rumus matematika dasar, yakni ka-ba-ta-ku (kali, bagi,
tambah, dan kurang). Selain itu terdapat tambahan operator div dan mod.
Berikut tabel lengkap tentang jenis-jenis operator aritmatika dalam pascal:
+ Positif (plus) +5
– Negatif (min) -3
program operator_aritmatika;
uses crt;
var
a,b,c,d,e,f,g,h:integer;
begin
clrscr;
a:=10+3;
b:=11-7;
c:=7*3;
d:=10+2-7*3;
e:=((8+3)-9)*4;
f:=-81;
writeln('a: ',a);
writeln('b: ',b);
writeln('c: ',c);
writeln('d: ',d);
writeln('e: ',e);
writeln('f: ',f);
readln;
end.
Hasil Program :
Sedangkan 100 mod 7 = 2, karena hanya 98 yang habis dibagi 7 (bersisa 2).
Berikut contoh kode program penggunaan operator mod di dalam pascal:
1 program operator_aritmatika;
2 uses crt;
3 var
4 a,b,c,d:integer;
5 begin
6 clrscr;
7 a:=8 mod 4;
8 b:=8 mod 5;
9 c:=10 mod 2;
10 d:=100 mod 7;
11
12 writeln('a: ',a);
13 writeln('b: ',b);
14 writeln('c: ',c);
15 writeln('d: ',d);
16
17 readln;
18 end.
program operator_string;
uses crt;
var
a,b,c,d,e:string;
begin
clrscr;
a:='Belajar';
b:='Pascal';
c:='di Duniailkom';
d:=a+b+c;
writeln(d);
writeln(e);
readln;
end.
Walaupun ini tidak berkaitan dengan operator string, tapi saya ingin menyinggung
cara menyambung variabel dengan string di dalam perintah writeln. Agar lebih
mudah di mengerti, berikut contoh kode program dari apa yang saya maksud:
program operator_string;
uses crt;
var
ipk:real;
sumber:string;
begin
clrscr;
ipk:=3.8;
sumber:='Duniailkom';
end.
Operato
r Penjelasan Contoh
Operasi perbandingan tidak hanya untuk tipe data angka saja, tapi juga bisa
berbagai tipe data lain, seperti char. Berikut contohnya:
1 program operator_perbandingan;
2 uses crt;
3 var
4 a,b:char;
5 hasil:boolean;
6 begin
7 clrscr;
8 a:='X';
9 b:='Y';
10 writeln('a = ',a);
11 writeln('b = ',b);
12 writeln;
13
14 hasil:= a = b;
15 writeln('a = b :',hasil);
16 hasil:= a <> b;
17 writeln('a <> b :',hasil);
18 hasil:= a > b;
19 writeln('a > b :',hasil);
20 hasil:= a < b;
21 writeln('a < b :',hasil);
22 hasil:= a >= b;
23 writeln('a >= b :',hasil);
24 hasil:= a <= b;
25 writeln('a <= b :',hasil);
26
27 readln;
28 end.
Kali ini saya membandingkan karakter X dan Y. Untuk kasus seperti ini, operator
perbandingan pascal akan membandingkan urutan setiap karakter dalam
tabel ASCII. Di dalam tabel ASCII, karakter X lebih dulu muncul dari Y. Oleh
karena itulah X dianggap lebih kecil daripada Y.
Seperti yang saya jelaskan diawal, operator perbandingan ini baru ‘berguna’ di
dalam percabangan kode program, seperti struktur IF. Berikut contohnya:
1 program operator_perbandingan;
2 uses crt;
3 var
4 password,konf_pass:string;
5 hasil:boolean;
6 begin
7 clrscr;
8 password:='r4has1a';
9 konf_pass:='rahasia';
10 if password=konf_pass then
11 writeln('Access Granted')
12 else
13 writeln('Warning, Intruder!!!');
14 readln;
15 end.
Tutorial Belajar Pascal Part 34: Jenis-jenis Operator Logika dalam Pascal
Oper
ator Penjelasan Contoh
Akan menghasilkan TRUE jika
not operand FALSE not TRUE , hasilnya: FALSE
Sebagai contoh pertama, mari kita uji hasil dari keempat jenis operator ini:
program operator_logika;
uses crt;
var
a,b,hasil:boolean;
begin
clrscr;
a:=true;
b:=false;
writeln('a = ',a);
writeln('b = ',b);
writeln;
hasil:= a and b;
hasil:= a or b;
writeln('a or b :',hasil);
hasil:= a xor b;
hasil:= not a;
hasil:= not b;
end.
Seperti yang terlihat, hasil dari contoh kode program sesuai dengan penjelasan
dari tabel.
program operator_logika;
uses crt;
var
hasil:boolean;
begin
clrscr;
writeln('(a = a) or (a = b) :',hasil);
readln;
end.
Pada baris 8 saya mencari logika dari 3 kondisi: false and false or true.
Untuk operasi seperti ini, pascal akan mulai dari kanan ke kiri, sehingga
yang akan dijalankan adalah: (false and false) or true. Ini menjadi: false or
true. Hasilnya akhirnya adalah true.
Pada baris 11 saya mencari logika dari 4 kondisi: true and false or true
and false. Yang dijalankan adalah sebagai berikut: ((true and false) or
true) and false. Silahkan anda ikuti satu persatu tanda kurung tersebut dan
hasil akhirnya adalah false.
Pada baris ke 14, operasinya adalah (5 > 4) and (10 > 9), yang akan
diproses menjadi (true) and (true), hasil akhirnya adalah true.
Pada baris ke 17, operasinya adalah (15 <= 15) and (15 < 15), yang akan
diproses menjadi (true) and (false), hasil akhirnya adalah false.
Pada baris ke 20, operasinya adalah (‘a’ = ‘a’) or (‘a’ = ‘b’) , yang akan
diproses menjadi (true) or (false), hasil akhirnya adalah true.
Pada baris ke 23, operasinya adalah (10 > 7) and
(‘duniailkom’=’duniailkom’), yang akan diproses menjadi (true) and
(true), hasil akhirnya adalah true.
Operator logika seperti ini sangat sering kita gunakan sepanjang pembuatan kode
program. Pembuatan percabangan kode program seperti perintah IF THEN dan IF
THEN ELSE akan banyak menggunakan operator logika ini.
Tutorial Belajar Pascal Part 35: Urutan Prioritas Operator dalam Bahasa
Pascal
Sebagai contoh kasus, silahkan anda tebak apa hasil akhir dari kode program
dibawah ini:
1 program prioritas_operator;
2 uses crt;
3 var
4 hasil1:integer;
5 hasil2:boolean;
6 begin
7 clrscr;
8
9 hasil1:= 12 + 6 * 3 - 4;
10 writeln('hasil1 :',hasil1);
11
12 hasil2:= 12 + 6 > 6 * 4;
13 writeln('hasil2 :',hasil2);
14
15 readln;
16 end.
Apakah isi dari variabel hasil1 dan hasil2?
Untuk variabel hasil1 mungkin bisa kita tebak, yakni 26. Seperti yang kita pelajari
dalam matematika, oparator perkalian lebih kuat daripada penambahan dan
pengurangan. Sehingga yang akan dijalankan adalah: 12 + (6 * 3) – 4 = 12 + 18 –
4 = 30 – 4 = 26.
Bagaimana dengan hasil2? Apakah hasilnya berupa angka (integer)
atau boolean? Inilah peran dari prioritas operator. Hasilnya adalah
boolean FALSE. Operator perbandingan lebih besar dari“>” memiliki tingkat
prioritas yang lebih rendah daripada operator aritmatika. Oleh karena itu yang
akan dijalankan Pascal adalah: (12 + 6) > (6 * 4), menjadi 18 > 24 = false.
*, /, div, mod,
and, &
|, !, +, -, or,
Sebagai bahan latihan, bisakah anda menebak hasil dari kode program berikut?
1 program prioritas_operator;
2 uses crt;
3 var
4 hasil:boolean;
5 begin
6 clrscr;
7
8 hasil:= 12 + 6 > 6 * 3 - 1 and true;
9 writeln('hasil :',hasil);
10
11 readln;
12 end.
Hasilnya adalah…. Error: Incompatible types: got “Boolean” expected
“LongInt”.
Error diatas terjadi karena Pascal akan mencoba menjalankan operasi berikut:
IF (kondisi) THEN
begin
(kode program)
end;
program struktur_if_then;
uses crt;
var
angka: integer;
begin
clrscr;
angka := 10;
end;
readln;
end.
Pada awal kode program saya membuat sebuah variabel “angka” dengan
nilai 10 (integer). Kemudian saya memeriksa sebuah kondisi menggunakan
perintah if then.
if (angka > 5) artinya saya ingin memeriksa apakah nilai dari variabel “angka”
lebih besar dari 5. Jika iya, kondisi tersebut akan menghasilkan nilai TRUE.
Akibatnya, kode program writeln(‘Variabel “angka” lebih besar dari 5’) akan
dijalankan.
Setelah blok kondisi if selesai diproses, Pascal lanjut menjalankan kode program
setelah blok if then, yakni baris writeln(‘Belajar Pascal di Duniailkom’) hingga
akhir kode program yang di tandai dengan end.
Saya bisa menambahkan kode program lain di dalam blok if then, seperti contoh
berikut:
program struktur_if_then;
uses crt;
var
angka:integer;
begin
clrscr;
angka:=10;
if (angka > 5) then
begin
writeln('====================================');
writeln('====================================');
end;
readln;
end.
program struktur_if_then;
uses crt;
var
angka:integer;
begin
clrscr;
angka:=5;
end.
Sebagai contoh yang lebih interaktif, silahkan jalankan kode program berikut:
program struktur_if_then;
uses crt;
var
angka:integer;
begin
clrscr;
readln(angka);
begin
end;
readln;
end.
Kali ini saya membuat program yang meminta input dari pengguna (menggunakan
perintah readln), lalu disimpan kedalam variabel angka.
Variabel angka selanjutnya saya periksa menggunakan kondisi if (angka mod 2
= 0). Anda masih ingat dengan operator mod? Operator mod akan menghasilkan
sisa hasil bagi dari suatu bilangan.
Dengan menulis if (angka mod 2 = 0) artinya saya memeriksa apakah
variabel angka jika dibagi 2 sisanya 0? Sebagai contoh, 4 mod 2 = 0 (sesuai
dengan kondisi). 7 mod 2 = 1 (tidak sesuai dengan kondisi).
Kondisi if (angka mod 2 = 0) ini sebenarnya digunakan untuk memeriksa apakah
sebuah angka termasuk genap atau tidak. Jika habis dibagi 2 (sisanya 0), artinya
angka tersebut merupakan bilangan genap.
Tutorial Belajar Pascal Part 37: Percabangan Kondisi IF THEN ELSE dalam
Pascal
1 program struktur_if_then_else;
2 uses crt;
3 var
4 angka: integer;
5 begin
6 clrscr;
7 angka := 4;
8 if (angka > 5) then
9 begin
10 writeln('Variabel "angka" lebih besar dari 5');
11 end
12 else
13 begin
14 writeln('Variabel "angka" lebih kecil dari 5');
15 end;
16 readln;
17 end.
Saya menggunakan contoh yang mirip seperti yang digunakan pada tutorial
tentang IF THEN.
Pada awal kode program saya membuat variabel angka dan diisi dengan nilai 4
(integer). Kemudian saya memeriksa sebuah kondisi if (angka > 5), jika
hasilnya TRUE yang artinya isi variabel angka besar dari 5,
jalankan writeln(‘Variabel “angka” lebih besar dari 5’). Tapi jika kondisi if
(angka > 5) menghasilkan nilai FALSE, yang akan dijalankan
adalah writeln(‘Variabel “angka” lebih kecil dari 5’).
Satu hal yang harus diperhatikan, penutup block sebelum perintah ELSE tidak
boleh ada titik koma “ ; ” . Yang kita tulis harus end else, bukan end; else.
Jika anda menulis seperti ini, kode program akan error:
Kesalahan seperti ini, Fatal: syntax error, “;” expected but “ELSE” found sangat
sering terjadi dalam pembuatan kondisi IF THEN ELSE.
Mari masuk ke contoh yang kedua:
1 program struktur_if_then_else;
2 uses crt;
3 var
4 angka:integer;
5 begin
6 clrscr;
7 write('Masukkan sebuah angka: ');
8 readln(angka);
9 if (angka mod 2 = 0) then
10 begin
11 writeln('Angka yang anda masukkan merupakan bilangan genap');
12 end
13 else
14 begin
15 writeln('Angka yang anda masukkan merupakan bilangan ganjil');
16 end;
17 readln;
18 end.
Kembali, ini adalah modifikasi dari kode program yang saya gunakan pada
tutorial IF THEN. Sekarang saya bisa menambahkan 1 blok ELSE ke dalam
program “tebak angka”.
Jika isi dari variabel angka habis dibagi 2, yakni hasil dari kondisi if (angka mod
2 = 0), jalankan perintah writeln(‘Angka yang anda masukkan merupakan
bilangan genap’). Selain itu, pasti angka ganjil, sehingga yang akan dijalankan
adalah writeln(‘Angka yang anda masukkan merupakan bilangan ganjil’).
Dengan strukur IF THEN ELSE, kita bisa membuat percabangan kode program
tergantung apakah sebuah kondisi bisa dipenuhi atau tidak.
Tutorial Belajar Pascal Part 38: Percabangan Kondisi IF Bersarang dalam Pascal
1 IF (kondisi 1) THEN
2 begin
3 (kode program 1)
4 IF (kondisi 1.1) THEN
5 begin
6 (kode program 1.1)
7 IF (kondisi 1.1.1) THEN
8 begin
9 (kode program 1.1.1)
10 end;
11 end;
12 end
13 ELSE
14 begin
15 (kode program 2)
16 IF (kondisi 2.1) THEN
17 begin
18 (kode program 2.1)
19 end;
20 end;
Kali ini saya membuat struktur IF di dalam IF di dalam IF (2 level nested IF).
Untuk kode program yang panjang seperti ini, anda harus hati-hati menentukan
kode program mana yang masuk ke dalam blok IF.
Penulisan indenting (menjorokkan kode program beberapa spasi di awal) juga
akan membantu kita membedakan kode program ini masuk IF yang ini, dan kode
program itu masuk ke IF yang itu.
Kemampuan logika juga sangat berperan dalam membuat kondisi yang kompleks
seperti ini.
1 program struktur_if_then_else_nested;
2 uses crt;
3 var
4 angka:integer;
5 begin
6 clrscr;
7 write('Masukkan sebuah angka: ');
8 readln(angka);
9 if (angka mod 2 = 0) then
10 begin
11 write('Angka yang anda masukkan merupakan bilangan genap ');
12 if (angka > 10) then
13 begin
14 writeln('dan besar dari 10');
15 end
16 else
17 begin
18 writeln('dan kecil dari 10');
19 end;
20 end
21 else
22 begin
23 write('Angka yang anda masukkan merupakan bilangan ganjil ');
24 if (angka > 10) then
25 begin
26 writeln('dan besar dari 10');
27 end
28 else
29 begin
30 writeln('dan kecil dari 10');
31 end;
32 end;
33 readln;
34 end.
Silahkan pelajari sebentar kode program diatas. Jika anda sudah mengikuti
seluruh tutorial pascal di duniailkom, saya yakin bisa membaca maksud kode
program ini (walaupun agak panjang).
Kemampuan logika juga akan berperan. Sebagai contoh, saya tidak perlu
memeriksa apakah angka tersebut kecil dari 10, atau apakah angka itu tidak habis
dibagi 2. Kondisi ini cukup dibuat menggunakan ELSE. Jika sebuah angka tidak
lebih besar dari 10, pastinya angka itu kecil dari 10 (tidak perlu diperiksa). Jika
angka tidak habis dibagi 2, berarti angka tersebut ganjil.
Saya juga menggunakan perintah write dan writeln secara bergantian, agar hasil
akhir teks menjadi 1 baris.
Silahkan anda input berbagai angka, dan test apakah kode program tersebut sudah
benar atau ada yang kurang.
1 program struktur_if_then_else_nested;
2 uses crt;
3 var
4 angka:integer;
5 begin
6 clrscr;
7 write('Masukkan sebuah angka: ');
8 readln(angka);
9 if (angka mod 2 = 0) and (angka > 10) then
10 begin
11 writeln('Angka yang anda masukkan merupakan bilangan genap dan besar dari 10');
12 end
13 else
14 if (angka mod 2 = 0) and (angka < 10) then
15 begin
16 writeln('Angka yang anda masukkan merupakan bilangan genap dan kecil dari 10');
17 end
18 else
19 if (angka mod 2 <> 0) and (angka > 10) then
20 begin
21 writeln('Angka yang anda masukkan merupakan bilangan ganjil dan besar dari 10');
22 end
23 else
24 if (angka mod 2 <> 0) and (angka < 10) then
25 begin
26 writeln('Angka yang anda masukkan merupakan bilangan ganjil dan kecil dari 10');
27 end;
28 readln;
29 end.
Namun dari sudut pandang performa, nested IF lebih efisien daripada ini. Dalam
situasi terburuk, variabel angka hanya diperiksa sebanyak 2 kali jika
menggunakan nested IF. Misalkan saya menginput angka:= 7, pertama kali akan
diperiksa kondisi: if (angka mod 2 = 0)? Tidak, program langsung menjalankan
bagian ELSE, dan masuk ke kondisi kedua: if (angka > 10)? Tidak,
jalankan ELSE.
Sedangkan yang tanpa nested IF, variabel angka akan diperiksa lebih dari 4 kali.
Pertama if (angka mod 2 = 0)? Tidak. Program lanjut ke bagian ELSE IF
kedua: if (angka mod 2 = 0)? Juga tidak, lanjut ke ELSE IF ketiga: if (angka
mod 2 <> 0)? Betul. Kali ini program akan masuk ke kondisi (angka >
10)? Tidak. Sehingga akan dijalankan ELSE terakhir: if (angka mod 2 <> 0) and
(angka < 10)?Benar.
Untuk kode program yang sederhana seperti diatas, efeknya tidak akan terasa
(karena dieksekusi dengan sangat cepat). Beberapa programmer juga tidak
keberatan mengorbankan sedikit performa agar kode program mudah dibaca
daripada menggunakan nested IF.
Tutorial Belajar Pascal Part 39: Struktur Percabangan CASE dalam Pascal
CASE (expression) OF
kondisi 1 : (kode program 1);
kondisi 2 : (kode program 2);
kondisi 3 : (kode program 3);
end;
Expression adalah ‘sesuatu’ yang akan di periksa nilainya. Jika nilai
dari expression ini sama dengan kondisi 1, maka yang dijalankan adalah (kode
program 1), jika sesuai dengan kondisi 2, maka yang akan dijalankan adalah (kode
program 2), dst.
Penjelasan ini akan lebih mudah jika menggunakan contoh kode program.
Saya ingin membuat program yang jika seseorang menginput angka 1, akan
tampil teks “Januari”, yakni bulan pertama dalam 1 tahun. Jika diinput angka 2,
akan tampil teks “Februari”. Demikian seterusnya hingga angka ke 12 yang akan
menampilkan teks “Desember”. Bagaimana cara membuat program seperti ini?
Berikut kode program Pascal yang saya gunakan:
1 program struktur_if_then_else;
2 uses crt;
3 var
4 bulan: integer;
5 begin
6 clrscr;
7 write('Silahkan input angka untuk bulan (1-12): ');
8 readln(bulan);
9
10 if (bulan = 1) then
11 writeln('Januari')
12 else if (bulan = 2) then
13 writeln('Februari')
14 else if (bulan = 3) then
15 writeln('Maret')
16 else if (bulan = 4) then
17 writeln('April')
18 else if (bulan = 5) then
19 writeln('Mei')
20 else if (bulan = 6) then
21 writeln('Juni')
22 else if (bulan = 7) then
23 writeln('Juli')
24 else if (bulan = 8) then
25 writeln('Agustus')
26 else if (bulan = 9) then
27 writeln('September')
28 else if (bulan = 10) then
29 writeln('Oktober')
30 else if (bulan = 11) then
31 writeln('Novemver')
32 else if (bulan = 12) then
33 writeln('Desember');
34
35 readln;
36 end.
Kode program diatas lumayan panjang. Namun jika anda sudah memahami
struktur logika IF THEN ELSE, sebenarnya cukup sederhana.
if (bulan = 1) then
writeln('Januari'); <-- diakhiri tanda ‘ ; ’
else if (bulan = 2)
Karena tanda titik koma pada writeln(‘Januari’); tidak boleh ditulis, jadi harus
ditulis seperti ini:
if (bulan = 1) then
writeln('Januari') <-- harus ditulis tanpa ‘ ; ’
else if (bulan = 2)
1 program struktur_case;
2 uses crt;
3 var
4 bulan: integer;
5 begin
6 clrscr;
7 write('Silahkan input angka untuk bulan (1-12): ');
8 readln(bulan);
9
10 case (bulan) of
11 1 : writeln('Januari');
12 2 : writeln('Februari');
13 3 : writeln('Maret');
14 4 : writeln('April');
15 5 : writeln('Mei');
16 6 : writeln('Juni');
17 7 : writeln('Juli');
18 8 : writeln('Agustus');
19 9 : writeln('September');
20 10 : writeln('Oktober');
21 11 : writeln('November');
22 12 : writeln('Desember');
23 end;
24
25 readln;
26 end.
Pada 8 baris pertama kode program, sama persis dengan sebelumnya. Dimana
saya membuat variabel bulan, kemudian meminta inputan dari pengguna.
Dibaris ke 10, terdapat perintah case (bulan) of, inilah awal dari blok CASE.
Perhatikan di baris ke 23 terdapat perintah end; yang menandakan akhir dari blok
CASE.
Perintah case (bulan) of artinya saya ingin memeriksa apakah nilai dari dari
variabel bulan sesuai dengan beberapa kondisi. Kondisi ini ditulis sepanjang
blok CASE, dengan format:
1 kondisi1 : kode program 1;
2 kondisi2 : kode program 2;
3 kondisi3 : kode program 3;
4 dst...
Karena saya ingin memeriksa nilai bulan dari 1 – 12, maka penulisannya sebagai
berikut:
1 1 : writeln('Januari');
2 2 : writeln('Februari');
3 3 : writeln('Maret');
4 4 : writeln('April');
5 5 : writeln('Mei');
6 6 : writeln('Juni');
7 7 : writeln('Juli');
8 8 : writeln('Agustus');
9 9 : writeln('September');
10 10 : writeln('Oktober');
11 11 : writeln('November');
12 12 : writeln('Desember');
Jika nilai variabel bulan berisi angka 9, maka jalankan
perintah writeln(‘September’), jika nilai variabel bulan adalah 12, maka
jalankan perintah writeln(‘Desember’).
Ketika dijalankan, kode program CASE ini sama persis seperti contoh IF THEN
ELSE sebelumnya.
Tutorial Belajar Pascal Part 40: Struktur Percabangan CASE ELSE dalam
Pascal
program struktur_case;
uses crt;
var
grade: string;
begin
clrscr;
readln(grade);
case (grade) of
'B' : writeln('Memuaskan');
end;
readln;
end.
Kali ini saya membuat kode program yang meminta inputan berupa huruf A – E,
yang disimpan ke dalam variabel grade. Jika diiput ‘A’, maka akan tampil
teks ‘Sangat Memuaskan’, jika diinput ‘B’, akan tampil teks ‘Memuaskan’,
demikian hingga grade E.
Contoh kali ini kurang lebih sama seperti contoh dalam tutorial sebelumnya. Tapi,
bagaimana jika seseorang menginput huruf F? atau X? atau Z? Huruf-huruf ini
tidak ada di dalam kondisi yang kita periksa.
Untuk situasi seperti ini kita bisa menggunakan stuktur CASE ELSE. Langsung
saja ke dalam contoh kode programnya:
program struktur_case;
uses crt;
var
grade: string;
begin
clrscr;
readln(grade);
case (grade) of
'B' : writeln('Memuaskan');
else
end;
readln;
end.
Dengan demikian, jika ada yang iseng menginput huruf lain, akan tampil
penjelasan seperti diatas. Jika tidak ditambahkan, kode program kita hanya
menampilkan layar kosong (blank).
program struktur_case;
uses crt;
var
grade: string;
begin
clrscr;
readln(grade);
case (grade) of
'A' : writeln('Sangat Memuaskan');
'B' : writeln('Memuaskan');
else
end;
readln;
end.
Kali ini kita akan membahas kebalikan dari contoh diatas, yakni bagaimana cara
menjalankan banyak kode program untuk 1 kondisi CASE. Caranya mirip seperti
tutorial IF THEN ELSE, yakni dengan blok begin dan end; untuk setiap kode
program kondisi.
Berikut contoh penggunaannya:
program struktur_case;
uses crt;
var
grade: string;
begin
clrscr;
case (grade) of
'A' :
begin
writeln('Pertahankan!');
end;
'B' :
begin
writeln('Memuaskan');
writeln('Tingkatkan lagi!');
end;
'C','D' :
begin
end;
'E' :
begin
end
else
end;
readln;
end.
Kode program diatas merupakan modifikasi dari kode kita sebelumnya. Disini
dalam setiap kondisi saya menjalankan 2 baris perintah writeln. Tentu saja tidak
dibatasi dengan 2 baris saja, bisa 3, 4 atau lebih. Dengan syarat, harus berada
diantara blok begin dan end;.
Sebagai contoh pertama, saya ingin membuat 1000 teks “Hello World”. Berikut
kode programnya:
1 program for_do_loop;
2 uses crt;
3 var
4 i: integer;
5 begin
6 clrscr;
7
8 for i := 1 to 1000 do
9 begin
10 writeln('Hello World');
11 end;
12
13 readln;
14 end.
Di bagian var, saya membuat sebuah variabel i dengan tipe data integer. Variabel
ini saya siapkan sebagai variabel counter.
Di dalam bahasa pemrograman komputer, variabel i, j, dan k sering digunakan
sebagai variabel counter. Anda akan sering melihat huruf-huruf ini dalam setiap
perulangan, tidak hanya dalam bahasa Pascal saja.
Untuk membuat perulangan sebanyak 1000 kali, saya menggunakan perintah for i
:= 1 to 1000 do. Ini bisa dibaca dengan “Untuk variabel i, jalankan perulangan
mulai dari 1 hingga 1000”.
Apa yang akan diulang? Adalah blok program yang diawali perintah begin, dan
diakhiri perintah end;. Di dalam blok ini saya membuat sebuah
perintah: writeln(‘Hello World’).
Dengan demikian, pascal akan menjalankan 1000 kali baris writeln(‘Hello
World’). Mari kita coba:
Karena keterbatasan ukuran layar, kita tidak akan bisa menghitung jumlah “Hello
World” ini. Tapi kita bisa memanfaatkan variabel counter i. Saya akan ubah kode
programnya menjadi seperti berikut:
1 program for_do_loop;
2 uses crt;
3 var
4 i: integer;
5 begin
6 clrscr;
7
8 for i := 1 to 1000 do
9 begin
10 writeln('Hello World ke - ',i);
11 end;
12
13 readln;
14 end.
Disini, saya menambahkan variabel counter i ke dalam blok perulangan.
Kode writeln(‘Hello World ke – ‘,i), artinya saya ingin menampilkan Hello
World – 1, Hello World – 2, Hello World – 3, hingga Hello World – 1000.
Jika komputer anda cukup lambat (eh), ketika program dijalankan akan terlihat
teks Hello Worldmenaik secara perlahan dari 1 hingga 1000.
Mari masuk ke contoh selanjutnya. Kali ini saya ingin membuat kode program
yang merupakan daftar perkalian 7, yakni 7 x 1 = 7, 7 x 2 = 14, 7 x 3 = 21, dst
hingga 7 x 10 = 70. Disini kita harus menggunakan variabel counter i agar setiap
perkalian naik dari 1 hingga 10. Berikut kode program yang saya gunakan:
1 program for_do_loop;
2 uses crt;
3 var
4 i: integer;
5 begin
6 clrscr;
7
8 for i := 1 to 10 do
9 begin
10 writeln('7 x ',i,' = ',7 * i);
11 end;
12
13 readln;
14 end.
1 program for_do_loop;
2 uses crt;
3 var
4 i,angka: integer;
5 begin
6 clrscr;
7 writeln('========================');
8 writeln('Program Daftar Perkalian');
9 writeln('========================');
10 writeln;
11
12 write('Input perkalian yang diinginkan: ');
13 readln(angka);
14
15 writeln;
16 for i := 1 to 10 do
17 begin
18 writeln( i ,' x ', angka ,' = ', i * angka);
19 end;
20
21 readln;
22 end.
Disini saya menggunakan 2 buah variabel: i dan angka.
Variabel angka digunakan untuk menampung inputan, sedangkan
variabel i sebagai variabel counter.
Selain tambahan kode readln(angka), kode program diatas mirip seperti
sebelumnya. Tentu saja di dalam blok perulangan saya harus membuat
baris writeln( i ,’ x ‘, angka ,’ = ‘, i * angka) agar variabel angka di proses
sebagai bilangan pengali.
Perulangan Dengan Angka Negatif untuk FOR DO Pascal
1 program for_do_loop;
2 uses crt;
3 var
4 i: integer;
5 begin
6 clrscr;
7
8 for i := -35 to -20 do
9 begin
10 writeln('10 x ',i,' = ',10 * i);
11 end;
12
13 readln;
14 end.
Bisa menggunakan angka negatif, kenapa kita tidak mencoba hitung mundur?
Yakni dari bilangan besar ke kecil. Berikut contoh kode programnya:
1 program for_do_loop;
2 uses crt;
3 var
4 i: integer;
5 begin
6 clrscr;
7
8 for i := 10 to 0 do
9 begin
10 writeln('Hitung mundur: ',i);
11 end;
12
13 readln;
14 end.
Tutorial Belajar Pascal Part 42: Perulangan FOR DOWNTO dalam Pascal
begin
end;
Nyaris tidak berbeda dengan format perulangan FOR DO, hanya saja kali ini kita
menggunakan keyword DOWNTO sebagai pengganti TO. Mari kita lihat contoh
kode programnya.
Melanjutkan contoh kasus yang kita coba pada akhir tutorial FOR DO, berikut
kode program hitung mundur dari 10 ke 1 menggunakan FOR DOWNTO:
program for_do_loop;
uses crt;
var
i: integer;
begin
clrscr;
for i := 10 downto 0 do
begin
end;
readln;
end.
Menggunakan contoh kode program perkalian dari tutorial sebelumnya, saya bisa
mengubahnya sebagai berikut:
program for_downto_loop;
uses crt;
var
i: integer;
begin
clrscr;
begin
writeln('Perkalian 7 * ', i ,' adalah = ', 7 * i);
end;
readln;
end.
Untuk contoh yang lebih interaktif, saya ingin membuat lirik lagu ayak ayam
dengan perulangan FOR DOWNTO, yakni menampilkan string “Anak ayam
turun 10, pergi 1 tinggal 9”, kemudian dilanjutkan dengan string “Anak ayam
turun 9, pergi 1 tinggal 8”, hingga “Anak ayam turun 1, pergi 1 tinggal 0”.
Jumlah anak ayam awal harus diinput oleh pengguna.
Kode programnya kurang lebih mirip seperti contoh program perkalian interaktif
dalam tutorial FOR DO. Hanya saja selain menggunaan FOR DOWNTO, anda
perlu memikirkan bagaimana baris “Anak ayam turun 9, pergi 1 tinggal
8” dirangkai. Silahkan buka aplikasi Free PASCAL, dan coba soal latihan ini.
Baik, berikut contoh kode program yang saya gunakan:
program for_downto_loop;
uses crt;
var
anak_ayam,i: integer;
begin
clrscr;
writeln('==============');
writeln;
readln(anak_ayam);
writeln;
begin
end;
readln;
end.
1 WHILE (condition) DO
2 begin
3 (kode program yang ingin diulang disini...)
4 (kode program untuk mengubah condition..)
5 end;
Kunci dari perulangan WHILE DO ada di condition dan kode program untuk
mengubah condition. Condition bisa dikatakan sebagai syarat agar perulangan
bisa dijalankan. Selama syarat ini terpenuhi (bernilai TRUE), perulangan akan
terus dijalankan. Jika syarat ini tidak terpenuhi (bernilai FALSE), perulangan
tidak akan berjalan.
Mari kita lihat contoh kode programnya.
Agar seragam dengan perulangan FOR DO, saya ingin membuat 10 baris teks
“Hello World” menggunakan WHILE DO. Berikut kode programnya:
1 program while_do;
2 uses crt;
3 var
4 i: integer;
5 begin
6 clrscr;
7 i:= 0;
8
9 while i < 10 do
10 begin
11 writeln('Hello World');
12 i:= i + 1;
13 end;
14
15 readln;
16 end.
Pada awal program, saya membuat variabel i yang berfungsi sebagai variabel
counter. Sebelum perulangan, saya memberikan nilai 0 untuk i. Setelah itu kita
masuk ke perulangan WHILE DO.
Baris program while i < 10 do adalah awal dari perulangan.
Inilah kondisi atau syarat yang harus dipenuhi supaya perulangan bisa diproses.
Ketika kode program jalan pertama kali, nilai variabel i adalah 0, artinya kondisi i
< 10 menghasilkan nilai TRUE. Karena tentu saja 0 kurang dari 10.
Karena syarat di penuhi, blok begin hingga end; segera di eksekusi. Baris
pertama adalah writeln(‘Hello World’). Ini digunakan untuk menampilkan teks
‘Hello World’. Tidak ada masalah.
Baris berikutnya saya membuat i:= i + 1. Bagian ini dikenal juga
sebagai increment, artinya saya ingin menambah nilai variabel
counter i sebanyak 1 angka. Ini dilakukan supaya bisa mengubah kondisi i <
10 yang terdapat di awal perulangan. Jika ini tidak ditulis, perulangan tidak akan
pernah berhenti (infinity loop).
Sampai disini, kode program akan kembali ke awal dan mengecek apakah i < 10?
Ingat, variabel i sekarang sudah bernilai 1. Oke, 1 < 10 = benar (TRUE), kembali
jalankan writeln(‘Hello World’), yang diikuti dengan i:= i + 1. Karena 1 + 1 = 2,
varibel i sekarang bernilai 2.
Kode program kembali ke awal dan mengecek apakah i < 10? Sekarang nilai i
adalah 2, dan 2 masih kurang dari 10, 2 < 10 = benar (TRUE), sekali lagi kode
blok perulangan akan dijalankan.
Proses seperti ini terus berlangsung sampai kondisi i < 10 menghasilkan FALSE.
Kapan kondisi ini terjadi? Yakni ketika variabel i = 10. 10 < 10 adalah FALSE.
Artinya, perulangan WHILE DO akan dijalankan sebanyak 10 kali, dimana dalam
setiap perulangan, nilai i akan menaik mulai dari 0, 1, 2, 3, 4, 5, 6, 7, 8, hingga 9.
Agar konsep perulangan ini bisa lebih paham, silahkan anda bayangkan (kalau
perlu ditulis), bagaimana nilai variabel counter i bisa naik dari 1 sampai 9, dan
pada setiap kenaikan perulangan akan menampilkan teks ‘Hello World’.
Jika kode program diatas masih kurang paham, mari masuk ke contoh kedua:
1 program while_do;
2
uses crt;
3
var
4
i: integer;
5
begin
6
clrscr;
7
i:= 0;
8
9
while i < 10 do
10
begin
11
writeln('Variabel i sekarang bernilai: ',i);
12
i:= i + 1;
13
end;
14
readln;
15
end.
Kondisi perulangan WHILE DO yang saya pakai sama persis seperti
sebelumnya. Hanya saja kali ini perintah yang dijalankan pada setiap perulangan
adalah writeln(‘Variabel i sekarang bernilai: ‘,i). Ini akan membantu kita
melihat nilai variabel counter i yang terus bertambah 1 selama perulangan
dijalankan.
Untuk bisa membuat perulangan dengan WHILE DO, kita perlu pemahaman
logika. Logika diperlukan untuk menentukan nilai awal dan kondisi akhir.
Sebagai latihan soal, saya ingin anda membuat kode program yang menghasilkan
teks: “Variabel i sekarang bernilai: 5”, “Variabel i sekarang bernilai: 6”, …
Hingga “Variabel i sekarang bernilai: 10”. Yup, hanya 5 baris. Silahkan anda
modifikasi kode program diatas.
Baik, berikut kode yang saya gunakan:
1 program while_do;
2 uses crt;
3 var
4 i: integer;
5 begin
6 clrscr;
7 i:= 5;
8
9 while i <= 10 do
10 begin
11 writeln('Variabel i sekarang bernilai: ',i);
12 i:= i + 1;
13 end;
14 readln;
15 end.
1 program while_do;
2 uses crt;
3 var
4 i: integer;
5 begin
6 clrscr;
7 i:= 5;
8
9 while i < 11 do
10 begin
11 writeln('Variabel i sekarang bernilai: ',i);
12 i:= i + 1;
13 end;
14 readln;
15 end.
Dapatkah anda melihat bedanya? Perhatikan bahwa kali ini saya menggunakan
kondisi while i < 11 do. Sebenarnya ini sama seperti while i <= 10 do. Angka 10
akan TRUE jika dibandingkan dengan “< 11″, maupun “<= 10“.
Konsep seperti ini agar selalu diperhatikan ketika membuat perulangan WHILE
DO.
Infinity Loop adalah sebuah perulangan yang tidak pernah berhenti. Ini terjadi
karena variabel kondisi akan selalu bernilai TRUE.
Perhatikan kode program berikut:
1 program while_do;
2 uses crt;
3 var
4 i: integer;
5 begin
6 clrscr;
7 i:= 5;
8
9 while i < 11 do
10 begin
11 writeln('Variabel i sekarang bernilai: ',i);
12 end;
13 readln;
14 end.
Jika anda menjalankan kode program diatas, akan terjadi Infinity Loop. Ini
karena kondisi while i <= 10 do akan selalu TRUE. Di dalam perulangan saya
tidak membuat ‘sesuatu’ yang bisa mengubah nilai variabel i (untuk membuat
syarat i <= 10 menjadi FALSE).
Infinity Loop biasanya terjadi karena kesalahan logika dari programmer,
terutama untuk perulangan WHILE DO dan REPEAT UNTIL. Untuk
menghentikan infinity loop, anda bisa menekan kombinasi tombol CRTL + C,
atau menutup paksa Free Pascal.
Untuk membuat perulangan yang mundur, kita bisa mengubah nilai awal variabel
counter dan kondisi syarat dari perulangan WHILE DO. Berikut contohnya:
1 program while_do;
2 uses crt;
3 var
4 i: integer;
5 begin
6 clrscr;
7 i:= 100;
8
9 while i >= 0 do
10 begin
11 writeln('Hitung mundur: ',i);
12 i:= i - 1;
13 end;
14 readln;
15 end.
1 program while_do;
2 uses crt;
3 var
4 i: integer;
5 begin
6 clrscr;
7 i:= 3;
8
9 writeln('Berikut deret untuk kelipatan 3: ');
10
11 while i <= 30 do
12 begin
13 write(i,' ');
14 i:= i + 3;
15 end;
16 readln;
17 end.
Perhatikan bahwa variabel i mulai dari 3, dan perubahannya menggunakan i:= i +
3. Artinya variabel i akan ‘lompat’ 3 angka setiap perulangan. Berikut hasilnya:
Sampai disini saya sarankan anda mencoba2 berbagai kombinasi perulangan lain,
misalnya membuat perulangan yang lompat setiap 7 angka, atau perulangan yang
mundur 4 angka, misalnya dari 100, ke 96, ke 92, ke 88, dst.
Tutorial Belajar Pascal Part 44: Perulangan REPEAT UNTIL dalam Pascal
Kembali, saya ingin menampilkan teks “Hello World” sebanyak 10 kali, berikut
kode programnya menggunakan perulangan REPEAT UNTIL:
1 program repeat_until;
2 uses crt;
3 var
4 i: integer;
5 begin
6 clrscr;
7 i:= 0;
8
9 repeat
10 begin
11 writeln('Hello World');
12 i:= i + 1;
13 end;
14 until i = 10;
15 readln;
16 end.
Terlihat sangat mirip dengan WHILE DO, bedanya variabel counter i akan di cek
di akhir perulangan.
Mari kita tampilkan nilai variabel i dalam setiap iterasi:
1 program repeat_until;
2 uses crt;
3 var
4 i: integer;
5 begin
6 clrscr;
7 i:= 0;
8
9 repeat
10 begin
11 writeln('Variabel i sekarang bernilai: ',i);
12 i:= i + 1;
13 end;
14 until i = 10;
15 readln;
16 end.
Kembali, jika anda sudah paham konsep perulangan WHILE DO, tidak akan sulit
memahani perulangan REPEAT UNTIL.
Perbedaan mendasar, bagaimana jika nilai variabel counter ini sudah tidak bisa
dipenuhi saat perulangan di jalankan? Mari kita coba:
1 program repeat_until;
2 uses crt;
3 var
4 i: integer;
5 begin
6 clrscr;
7 i:= 10000;
8
9 repeat
10 begin
11 writeln('Variabel i sekarang bernilai: ',i);
12 i:= i + 1;
13 end;
14 until i > 10;
15 readln;
16 end.
Perhatikan di awal kode program, saya mengisi variabel counter i dengan
nilai 1000. Di akhir looping REPEAT UNTIL, saya membuat kondisi until i >
10. Artinya, kondisi ini sudah tidak memenuhi. 1000 tentu lebih besar dari 10,
sehingga i > 10 akan menghasilkan nilai FALSE.
Namun inilah keunikan perulangan REPEAT UNTIL. Karena kondisi diperiksa
di akhir perulangan, isi perulangan itu bisa berjalan minimal 1 kali. Berikut hasil
kode program tersebut:
Tutorial Belajar Pascal Part 45: Perulangan Bersarang (Nested Loop) dalam
Pascal (1)
Soal yang hampir selalu keluar adalah membuat segitiga bintang, yang
menggunakan prinsip nested loop. Agar lebih paham, mari kita masuk ke contoh
kode program.
Sebagai permulaan, saya akan membuat sebuah perulangan FOR DO ‘biasa’, yang
kode programnya adalah sebagai berikut:
1 program nested_loop;
2 uses crt;
3 var
4 i: integer;
5 begin
6 clrscr;
7
8 for i := 1 to 5 do
9 begin
10 writeln('*');
11 end;
12
13 readln;
14 end.
Tidak ada yang baru disini. Saya membuat perulangan FOR DO menaik sebanyak
5 kali dari angka 1 ke 5. Disetiap perulangan ini saya menampilkan sebuah
karakter bintang. Hasilnya terlihat 5 bintang ditampilkan ke bawah. Ini karena
saya menggunakan perintah writeln.
Bagaimana jika saya ganti writeln menjadi write? Dapatkan anda menebak
hasilnya?
1 program nested_loop;
2 uses crt;
3 var
4 i: integer;
5 begin
6 clrscr;
7
8 for i := 1 to 5 do
9 begin
10 write('*');
11 end;
12
13 readln;
14 end.
Yup, sekarang bintang ini berjejer dari kiri ke kanan dalam 1 baris. Jumlah
bintangnya ada 5 buah karena saya memang menjalankan 5 kali perulangan
(perintah for i := 1 to 5 do).
Tutorial Belajar Pascal Part 46: Perulangan Bersarang (Nested Loop) dalam
Pascal (2)
Sebelumnya, kita telah membuat kode program nested loop untuk menampilkan
karakter pagar dan bintang. Kali ini saya akan menampilkan variabel
counter i dan j ke dalam kode program. Berikut kode programnya:
1 program nested_loop;
2 uses crt;
3 var
4 i,j: integer;
5 begin
6 clrscr;
7
8 for i := 1 to 5 do
9 begin
10
11 for j := 1 to 5 do
12 begin
13 write(i*j);
14 write(' ');
15 end;
16
17 writeln;
18 end;
19
20 readln;
21 end.
Agar lebih paham, silahkan anda pelajari sejenak apa yang dilakukan dari kode
program diatas. Disini saya membuat nested loop dengan variabel counter i dan j.
Kemudian di dalam perulangan j saya menulis write(i*j); dan write(‘ ‘);.
Saat perulangan i dijalankan pertama kali (i = 1), kode program akan langsung
masuk ke perulangan j.
Ketika berada ke dalam perulangan j, nilai i = 1, dan j = 1. Kemudian jalankan
perintah write(i*j);dan write(‘ ‘);, hasilnya adalah 1 * 1 = 1, lalu sebuah spasi.
Dilayar akan tampil angka 1 dan sebuah spasi.
Selanjutnya variabel counter j akan naik menjadi 2. Kembali
dijalankan write(i*j); dan write(‘ ‘);. Hasilnya adalah 1 * 2 = 2, dikuti sebuah
spasi. Dilayar akan tampil angka 2 dan sebuah spasi.
Begitu seterusnya hingga perulangan j selesai dan di layar akan tampil 1 2 3 4 5.
Kode program akan keluar dari perulangan j dan lanjut ke perintah writeln;. Ini
bisa diartikan sebagai instruksi agar tampilan pindah ke baris baru.
Kita masih ada di dalam perulangan i, dan variabel counter i akan naik menjadi 2,
kemudian masuk kembali ke dalam perulangan j. Disini akan dijalankan kode
program yang sama, yakni write(i*j); dan write(‘ ‘);. Karena i saat ini bernilai 2,
hasil akhir seluruh perulangan j (sebanyak 5 kali) adalah: 2 4 6 8 10.
Perulangan seperti ini akan dijalankan sebanyak 5 kali, dan hasil akhirnya adalah
sebagai berikut:
Jika anda masih kurang paham kenapa hasilnya bisa seperti ini, silahkan pelajari
kembali penjelasan diatas. Kalau perlu buat catatan apa yang terjadi untuk setiap
perulangan.
Tutorial Belajar Pascal Part 47: Fungsi Perintah BREAK Dalam Perulangan
Pascal
program penggunaan_break;
uses crt;
var
i: integer;
begin
clrscr;
for i := 1 to 10 do
begin
if (i = 5) then
break;
end;
readln;
end.
program penggunaan_break;
uses crt;
var
i: integer;
begin
clrscr;
begin
if (i = 5) then
break;
end;
readln;
end.
Saya membuat sebuah perulangan mundur, yakni dari variabel counter i =
100 hingga 10. Dalam setiap perulangan, tampilkan nilai perkalian 3, seperti 100
* 3 = 300, 99 * 3 = 297, dst hingga 10 * 3 = 30.
Di dalam perulangan terdapat 1 kondisi break: if (i = 5) then break. Perintah
ini tidak akan pernah dijalankan karena secara logika variabel counter i tidak
akan pernah bernilai 5. Ini karena perulangan itu sendiri akan berhenti duluan,
yakni saat i bernilai 10.
Bahasan lain yang cukup menarik adalah, posisi peletakan perintah break bisa
mempengaruhi hasil akhir. Contohnya kode program berikut:
program penggunaan_break;
uses crt;
var
i: integer;
begin
clrscr;
for i := 1 to 10 do
begin
if (i = 7) then
break;
end;
readln;
end.
program penggunaan_break;
uses crt;
var
i: integer;
begin
clrscr;
for i := 1 to 10 do
begin
if (i = 7) then
break;
end;
readln;
end.
Kode program ini sama persis seperti sebelumnya. Hanya saja saya membalik
posisi letak kondisi if (i = 7) then break, menjadi sebelum perintah writeln(i ,’ *
5 = ‘,i*5).
Hasilnya, perulangan kita hanya tampil sampai 6 * 5 = 30, tidak sampai ke 7.
Padahal kondisi break baru bernilai true pada saat i = 7.
Perbedaan ini terjadi karena pada contoh kedua, break sudah dijalankan sebelum
pascal sampai ke baris writeln(i ,’ * 5 = ‘,i*5). Akibatnya hasil akhir berhenti
pada 6 * 5 = 30, bukan 7 * 5 = 35.
program penggunaan_break;
uses crt;
var
i: integer;
begin
clrscr;
i:= 0;
while i < 10 do
begin
writeln('Variabel i sekarang bernilai: ',i);
i:= i + 1;
if (i = 6) then
break;
end;
readln;
end.
Tutorial Belajar Pascal Part 48: Fungsi Perintah CONTINUE Dalam Perulangan
Pascal
program penggunaan_continue;
uses crt;
var
i: integer;
begin
clrscr;
for i := 1 to 10 do
begin
if (i = 5) then
continue;
end;
readln;
end.
program penggunaan_continue;
uses crt;
var
i: integer;
begin
clrscr;
for i := 1 to 10 do
begin
if (i = 5) then
continue;
end;
readln;
end.
program penggunaan_break;
uses crt;
var
i: integer;
begin
clrscr;
i:= 0;
while i < 10 do
begin
if (i = 6) then
begin
i:= i + 1;
continue;
end;
end;
readln;
end.
if (i = 6) then
begin
i:= i + 1;
continue;
end;