Sebelum anda masuk ke bab pokok mengenai pascal ada baiknya jika anda terlebih
dahulu mengenal struktur algoritma dan flowchart. Definisi dari algoritma adalah urutan
langkah-langkah untuk memecahkan suatu masalah yang disusun secara sistematis dan
logis.
Pengertian LOGIKA:
Logika berasal dari bahasa Yunani yaitu LOGOS yang berarti ilmu. Logika
pada dasarnya filsafat berpikir. Berpikir berarti melakukan suatu tindakan yang
memiliki suatu tujuan. Jadi pengertian Logika adalah ilmu berpikir / cara berpikir
dengan berbagai tindakan yang memiliki tujuan tertentu.
Pengertian ALGORITMA:
Pada Merriam-Webster’s Collegiate Dictionary, istilah algoritma diartikan
sebagai prosedur langkah demi langkah untuk memecahkan masalah atau
menyelesaikan suatu tugas. Kamus Besar Bahasa Indonesia (KBBI) mendefinisikan
algoritma sebagai urutan logis pengambilan keputusan untuk pemecahan masalah.
1
Algoritma & Pemrograman I(Pascal) by:chairuddin
Alat Bantu untuk menuliskan Logika dan Algoritma, salah satunya adalah
FLOWCHART.
SIMBOL Flowchart
2
Algoritma & Pemrograman I(Pascal) by:chairuddin
3
Algoritma & Pemrograman I(Pascal) by:chairuddin
Contoh:
Buat algoritma dan Flowchart untuk Menghitung Luas Persegi Panjang:
Pekerjaan:
Rumus:
LuasPersegiPanjang = Panjang x Lebar
Algoritma:
1. Tentukan nama variabel yang akan menampung data Panjang, lebar dan luas
persegi panjang.
2. Masukkan (inputkan) data Panjang dan Lebar pada variabel yang sudah
ditentukan.
3. Hitung Luas persegi panjang.
4. Tampilkan (outputkan) Luas persegi panjang.
Flowchart:
START
Luas, Panjang,
Lebar
Inputkan:
Panjang dan lebar
Hitung:
Luas Persegi
Outputkan:
Luas Persegi Panjang
END
Latihan:
Buat algoritma dan Flowchart untuk Menghitung:
1. Luas Segitiga
2. Luas Lingkaran
4
Algoritma & Pemrograman I(Pascal) by:chairuddin
Pengertian PROGRAM:
Kumpulan instruksi (statements) yang disusun secara logis untuk memecahkan suatu
masalah. Instruksi-instruksi yang digunakan disesuaikan dengan jenis bahasa
pemrograman yang digunakan (reserved word yang disediakan).
Program Nama_Program;
uses
. . . {Unit-unit yang dipakai} ;
label
. . . {label-label yang dipakai } ;
const
. . . {pengumuman tetapan-tetapan} ;
type
. . . { pengumuman tipe-tipe data };
var
. . . { pengumuman peubah-peubah };
procedure Nama_Prosedur;
begin
. . .
end;
Function Nama_Fungsi;
begin
. . .
end;
{ Program utama }
begin
. . .
end.
Perintah Input :
Perintah Pascal yang digunakan untuk memasukkan/menginputkan data.
Bentuk perintah:
Read dan Readln
Struktur penulisan:
Read(nama variabel);
Readln(nama Variabel)
Perintah Output:
Perintah Pascal yang digunakan untuk menampilkan/mengoutputkan data.
5
Algoritma & Pemrograman I(Pascal) by:chairuddin
Bentuk perintah:
Write : setelah menampilkan data atau teks, kursor berada tepat disamping kanan
data yang ditampilkan.
Write : setelah menampilkan data atau teks, kursor berada pada baris berikutnya.
Struktur penulisan:
write(nama variabel);
write(‘teks’);
writeln(nama Variabel);
writeln(‘teks’);
Contoh:
Buat program sederhana untuk Menghitung Luas Persegi Panjang:
Program LuasPersegiPanjang;
Var
Luas, Panjang, Lebar : integer;
Begin
Readln(panjang);
Readln(Lebar);Luas:= Panjang*Lebar;
Writeln(‘Luas Persegi Panjang adalah:’,Luas);
Readln;
End.
Tampilan pada lembar kerja Pascal:
Apabila Panjang diisi 7 dan lebar diisi 8 maka hasil perintah diatas tampil sbb:
6
Algoritma & Pemrograman I(Pascal) by:chairuddin
Latihan:
Buat flowchart dan program sederhana untuk menampilkan bilangan terbesar.
Begin
START
Readln (A);
Input : Readln (B);
Nilai A
Nilai B
If A > B then
Terbesar := A
Else
Tidak Terbesar := B;
A>B
Ya
Writeln(Terbesar);
Terbesar = A Terbesar = B
End.
Output :
Nilai Terbesar
END
7
Algoritma & Pemrograman I(Pascal) by:chairuddin
Dasar-Dasar Pemrograman
Pada halaman ini, akan dipelajari mengenai konsep-konsep dasar yang berkaitan dengan
pembuatan program, yaitu:
• Variabel
• Tipe Data Sederhana
• Masukan dan Keluaran (Input dan Output)
• Operator:
o Operator Akhir Program (End of Program Operator)
o Operator Akhir Instruksi (End of Statement Operator)
o Operator Pengisian Nilai (Assignment Operator)
o Operator Aritmatika (Arithmetic Operator)
• Komentar
Tipe Data
Tipe Data terbagi 4 bagian yaitu :
String : Satu Kata atau kalimat, contohnya ‘saya’
Char : Satu huruf atau angka, contohnya ‘s’ , ‘2’
Integer : Bilangan Bulat
Real : Bilangan Pecahan
Tipe-tipe operator
Operator Penegasan
X:= 10 artinya X diisi dengan 10
Operator Aritmatika
+ – x / (hasilnya pasti bilangan bulat) mod (Sisa hasil bagi) , div (Hasil bagi)
Input/Output
Idendifier : Pengenalan
- Const (Konstanta atau bilangan tetap)
- Var (variabel atau bilangan dapat berubah dan di inputkan)
8
Algoritma & Pemrograman I(Pascal) by:chairuddin
• Program Kosong
Program Kosong adalah program yang paling sederhana, karena tidak melakukan apa
pun. Dalam bahasa Pascal, program kosong dibuat dengan cara:
begin
end.
• Program Halo
Program komputer perlu untuk berinteraksi dengan pengguna komputer (user), interaksi
yang paling sederhana adalah, komputer mencetak sesuatu di layar sehingga pengguna
bisa melihatnya. Untuk membuat hal tersebut, cobalah program ini:
begin
writeln('Halo Pembaca');
end.
Penjelasan:
begin
writeln('Halo Pembaca'); // instruksi untuk mencetak & parameter
teks yang akan dicetak
end.
Setelah program tersebut dijalankan, maka komputer akan mencetak kata Halo Pembaca
di layar. Ada sebuah instruksi baru di sini, yaitu instruksi writeln yang gunanya untuk
mencetak lalu menambahkan Enter/baris baru (write and add new line, writeln berasal
dari write + ln, ln merupakan singkatan dari line). Instruksi writeln ini disertai dengan
parameter teks Halo Pembaca yang harus diapit oleh tanda petik tunggal (').
9
Algoritma & Pemrograman I(Pascal) by:chairuddin
• Komentar
Komentar adalah teks tambahan yang ditambahkan ke dalam program dan tidak akan
dikerjakan oleh komputer, dengan tujuan:
1. Menjelaskan arti suatu perintah/blok perintah, sehingga memudahkan orang lain
untuk memahami apa kegunaan perintah tersebut
2. Memberi tanda pada bagian perintah/blok perintah tertentu yang sengaja
dilompati atau akan diganti/direvisi pada versi perubahan berikutnya
3. Mengingatkan diri sendiri supaya tidak lupa, sehingga memudahkan untuk
memahami ulang perintah tersebut, apabila pada suatu waktu di masa mendatang
membaca ulang perintah tersebut
10
Algoritma & Pemrograman I(Pascal) by:chairuddin
Tambahan Informasi/Catatan:
Jangan berlebihan dan bertele-tele dalam memberikan
komentar! Usahakan singkat, padat, tepat dan jelas
(kecuali, apabila komentar tersebut dipakai untuk
keperluan pengajaran/tutorial)
• Variabel
Variabel adalah suatu lokasi/tempat di dalam memori komputer yang bisa dipakai untuk
menyimpan nilai. Variabel ini melambangkan atau merepresentasikan data.
Nilai dari sebuah variabel dapat dimasukkan oleh pengguna melalui deklarasi di program
ataupun pemasukan (input) di dalam program.
Untuk setiap data yang berbeda, dibutuhkan variabel yang berbeda pula. Variabel
dibedakan dengan cara diberikan nama yang berbeda. Contohnya, apabila terdapat data
"panjang", "lebar", dan "tinggi", maka dapat dipakai variabel "p", "l", dan "t" untuk
melambangkannya.
Tipe data dari sebuah variabel harus dideklarasikan di awal program. Beberapa contoh
tipe data untuk menampung angka adalah byte, integer, word, dan real. Dalam
program Pascal, kita dapat melakukan operasi matematika seperti tambah, kurang, kali,
dan bagi.
Variabel bisa diibaratkan sebagai sebuah kantong yang bisa menyimpan sesuatu. Dalam
program yang meminta inputan ke user, maka inputannya harus ditampung ke dalam
kantong yang bernama variabel ini. Dan kantong ini juga bisa diakses oleh statement
program lainnya. Berikut ini adalah berbagai macam tipe variabel.
11
Algoritma & Pemrograman I(Pascal) by:chairuddin
Tipe variabel di atas adalah tipe variabel yang paling sering digunakan. Untuk tipe
pecahan, masih ada tipe seperti single, double, extended, dsb. Silahkan pelajari sendiri di
help yang tersedia (Ctrl+F1). Berikutnya adalah cara pendeklarasian variabel. Variabel di
deklarasikan di blok var. Contoh:
Var
umur : byte;
nama : string;
Untuk memberikan suatu nilai pada variabel, pada statement masukan perintah:
<Nama_variabel> := <nilai>;
Contoh program:
var
p,l,t,v:integer;
begin
writeln('Masukkan nilai panjang');
readln(p);
writeln('Masukkan nilai lebar');
readln(l);
writeln('Masukkan nilai tinggi');
readln(t);
v := p * l * t;
writeln(v);
readln;
end.
Penjelasan:
var
p,l,t,v:integer; // Deklarasi variabel dengan semua
variabel bertipe integer
begin
writeln('Masukkan nilai panjang');
readln(p); // Input nilai p
writeln('Masukkan nilai lebar');
readln(l); // Input nilai l
writeln('Masukkan nilai tinggi');
readln(t); // Input nilai t
v := p * l * t; // Operasi matematika: v=p kali l
kali t
writeln(v); // Tampilkan nilai v
readln; // Supaya pembaca dapat membaca nilai
v sebelum program otomatis keluar
end.
USES CRT
Crt merupakan suatu unit yang mempunyai beberapa perintah yang dapat kita gunakan
dalam hal pengolahan program berbasis teks. Beberapa perintah atau syntax yang
memakai library ini adalah:
1. Clrscr : untuk membersihkan layar.
2. Textcolor : memberi warna pada tulisan.
3. TextBackground : memberi warna pada latar belakang tulisan tersebut.
12
Algoritma & Pemrograman I(Pascal) by:chairuddin
PERHITUNGAN MATEMATIKA
Suatu statement pada blok program bisa digunakan untuk menghitung perhitungan
matematika. Perhatikan program berikut:
…
Var
a,b,c : integer;
Begin
a:=1;
b:=5;
{penjumlahan}
c:=a+b;
writeln(c);
{pengurangan}
c:=b-a;
13
Algoritma & Pemrograman I(Pascal) by:chairuddin
writeln(c);
{perkalian}
c:=a*b;
writeln(c);
{pembagian}
c:=b/a;
writeln(c);
End.
…
Div
Adalah pembagian yang selalu menghasilkan bilangan bulat (integer).
Contoh: c:=a div b;
Mod
adalah sisa dari pembagian modulo atau remainder yang selalu menghasilkan integer.
Contoh: c:=a mod b;
Trunc
Pembulatan angka ke bawah. Misalnya angka 5.7 dibulatkan menjadi 5.
Contoh: trunc(c);
Round
Pembulatan ke nilai integer terdekat, misal 5.6 dibulatkan ke enam. 7.1 dibulatkan
menjadi tujuh.
Contoh: round(c);
KONSTANTA
Konstanta ini seperti variabel, hanya saja nilainya sudah didefinisikan sebelumnya dan
selalu tetap dan tidak bisa diubah dalam program.
Contoh:
Const
Myconst = 1234;
Var
i:word;
Begin
i:=40;
writeln(i*myconst);
End.
Nilai konstanta tidak dapat diubah. Jika dalam program dicoba untuk diubah, maka akan
error
14
Algoritma & Pemrograman I(Pascal) by:chairuddin
Untuk lebih jelasnya mari kita bahas satupersatu ketiga struktur tersebut.
Runtunan (Sequence)
Algoritma merupakan runtunan (sequence) satu atau lebih instruksi, yang berarti bahwa:
1. Tiap instruksi dikerjakan satu persatu.
2. Tiap instruksi dilaksanakan tepat sekali, tidak ada instruksi yang diulang.
3. Urutan instruksi yang dilaksanakan pemroses sama dengan urutan instruksi
sebagaimana yang tertulis di dalam teks algoritmanya.
4. Akhir dari instruksi terakhir merupakan akhir algoritma.
Sebelum membuat program dengan algoritma runtunan (sequence) yang lebih rumit, kita
coba dulu program-program yang tidak terlalu rumit seperti di bawah ini:
1. Buatlah program penjumlahan 2 buah bilangan dimana bilangan ke-1 dan ke-2
dimasukkan oleh pengguna?
program jumlah2bilangan;
uses wincrt;
var x,y,z: real;
begin
writeln ('MENGHITUNG JUMLAH 2 BILANGAN');
writeln ('============================');
write ('masukan bilangan 1 : ');
read (x);
write ('masukan bilangan 2 : ');
read (y);
z:=x+y;
write ('Hasil Penjumlahan = ',z:8:2)
end.
program lingkaran;
uses wincrt;
var r,kel,ls:real;
begin
writeln ('MENGHITUNG KELILING DAN LUAS LINGKARAN');
writeln ('======================================');
write ('masukan nilai jari-jari: ');
read (r);
15
Algoritma & Pemrograman I(Pascal) by:chairuddin
kel:=2*3.14*r;
ls:=2*3.14*r*r;
writeln ('keliling lingkaran = ',kel:8:2);
write ('luas lingkaran = ', ls:8:2)
end.
program luas_segitiga;
uses wincrt;
var a,t,ls:real;
begin
writeln ('MENGHITUNG LUAS SEGITIGA');
writeln ('========================');
write ('masukan nilai alas : ');
read (a);
write ('masukan nilai tinggi : ');
read (t);
ls:=a*t/2;
write ('luas segitiga = ',ls:6:2)
end.
4. Buatlah program untuk meghitung luas trapesium yang diketahui panjang alas dan
atas (kedua sisi sejajar) serta tingginya. Hitung pula luas segitiga yang alasnya dan
tingginya sama dengan alas dan tinggi trapesium?
program luas_trapesium;
uses wincrt;
var al,at,t,ls1,ls2:real;
begin
writeln ('MENGHITUNG LUAS TRAPESIUM DAN SEGITIGA');
writeln ('======================================');
write ('masukan nilai alas : ');
read (al);
write ('masukan nilai atas : ');
read (at);
write ('masukan nilai tinggi : ');
read (t);
ls1:=(al+at)*t/2;
ls2:=al*t/2;
writeln ('luas trapesium = ', ls1:8:2);
write ('luas segitiga = ', ls2:8:2)
end.
5. Buatlah program untuk mencari nilai konversi dari suatu temperatur/ suhu , dimana
suhu awal yang diketahui dalam derajat Fahrenheit, konversikan ke dalam derajat
Celcius, Reamur.
Catatan:
Gunakan formula sbb: C = 5 / 9 (F – 32), R = 4 / 9 (F – 32)
program temperatur;
uses wincrt;
var F,R,C: real;
16
Algoritma & Pemrograman I(Pascal) by:chairuddin
begin
writeln ('MENGHITUNG TEMPERATUR/SUHU');
writeln ('==========================');
write ('masukan nilai fahrenheit yang telah diketahui: ');
read (f);
C:=(5/9)*(F-32);
R:=(4/9)*(F-32);
writeln ('nilai C = ',C:4:2);
write ('nilai F= ',R:4:2)
end.
6. Buatlah sebuah program untuk menampilkan kalimat : ”Senang bertemu dengan anda,
nama, thanks…” Diimana nama adalah yang dimasukkan oleh user?
program nice2meetyou;
uses wincrt;
var x:string;
begin
write ('Masukan nama anda : ');
readln (x);
writeln ('Senang bertemu dengan anda ',x,', ','thanks...')
end.
uses wincrt;
var a,b,c,d:integer;
begin
writeln ('PERBANDINGAN ALGORITMA');
writeln ('======================');
write ('masukan nilai pertama : ');
readln (a);
write ('masukan nilai kedua : ');
readln (b);
writeln ('');
writeln ('ALGORITMA 1 - BENAR');
c:=a+b;
d:=a*b;
writeln ('HASIL PENJUMLAHAN = ',c,', ','HASIL PERKALIAN = ',d);
writeln ('');
writeln ('ALGORITMA 2 - BENAR');
d:=a*b;
17
Algoritma & Pemrograman I(Pascal) by:chairuddin
c:=a+b;
writeln ('HASIL PENJUMLAHAN = ',c,', ','HASIL PERKALIAN = ',d);
end.
Kedua algoritma di atas akan menghasilkan keluaran yang sama meskipun urutan
instruksinya diubah.
program tukarbejana;
uses wincrt;
var a,b,c: string;
begin
writeln ('TUKAR ISI BEJANA');
writeln ('================');
write ('Tulis warna isi bejana A : ');
readln (a);
write ('Tulis warna isi bejana B : ');
readln (b);
writeln ('');
writeln ('ALGORITMA 1 - BENAR');
c:=a;
a:=b;
b:=c;
writeln ('Warna isi bejana A = ',a);
writeln ('Warna isi bejana B = ',b);
writeln ('');
writeln ('ALGORITMA 2 - SALAH');
c:=a;
b:=c;
a:=b;
writeln ('Warna isi bejana A = ',a);
writeln ('Warna isi bejana B = ',b)
end.
Kedua algoritma di atas akan memberikan hasil yang berbeda. Pada algoritma pertama
akan memberikan hasil yang diinginkan sebaliknya pada algortima kedua nilai A dan
nilai b tidak akan bertukar.
18
Algoritma & Pemrograman I(Pascal) by:chairuddin
akan menghasilkan keluaran: 1 hari, 3 jam 46 menit dan 40 detik. Keluaran dari
program ini adalah banyaknya hari, jam, menit dan detik dari waktu detik yang
dimasukan.
Jawab:
Misalkan masukan 100.000 detik. Langkah-langkah penghitungan tersebut dapat
diltuliskan sebagai berikut:
- Banyaknya hari = 100.000 / (60 * 60 * 24) = 100.000 / 86.400 = 1 hari.
- Banyaknya jam = (100.000 – 1 * 86.400)/ (60 * 60) = 13.600 / 3600 = 3 jam
- Banyaknya menit = (13.600 – 3 * 3.600) / 60 = 2.800 / 60 = 46 menit
- Banyaknya detik = (2.800 – 46 * 60) = 2.800 – 2.760 = 40 detik.
Berdasarkan contoh penghitungan di atas, maka dapat dituliskan algoritma
pencarian hari, jam, menit dan detik adalah sebagai berikut:
program konversi_waktu;
uses wincrt;
var detik,hr,jm,mn,dt:longint;
begin
writeln ('MENGHITUNG KONVERSI WAKTU');
writeln ('=========================');
write ('masukan nilai detik : ');
readln (detik);
hr:=detik div (60*60*24);
detik:=detik-(hr*60*60*24);
jm:=detik div (60*60);
detik:=detik-(jm*60*60);
mn:=detik div (60);
dt:=detik-(mn*60);
writeln ('HASILNYA:');
writeln (hr,' hari');
writeln (jm,' jam');
writeln (mn,' menit');
writeln (dt,' detik');
end.
Program diatas juga bisa dikerjakan dengan fungsi mod. Codingnya yaitu seperti ini:
program waktu3;
uses wincrt;
var hr,jj,mm,dd,detik,sisa:longint;
begin
writeln ('MENGHITUNG WAKTU');
writeln ('================');
write ('Masukkan nilai detik: ');
readln (detik);
hr:=detik div (60*60*24);
sisa:=detik mod (60*60*24);
jj:=sisa div 3600;
sisa:=sisa mod 3600;
mm:=sisa div 60;
dd:=sisa mod 60;
write (hr,' hari ',jj,' jam ',mm,' menit ',dd,' detik')
end.
19
Algoritma & Pemrograman I(Pascal) by:chairuddin
Sedangkan jika tidak menampilkan jumlah hari, maka programya menjadi lebih
sederhana, yaitu:
program waktu2;
uses wincrt;
var jj,mm,dd,detik,sisa:longint;
begin
writeln ('MENGHITUNG WAKTU');
writeln ('================');
write ('Masukkan nilai detik: ');
readln (detik);
jj:=detik div 3600;
sisa:=detik mod 3600;
mm:=sisa div 60;
dd:=sisa mod 60;
write (jj,' jam ',mm,' menit ',dd,' detik')
end.
2. Dibaca nama karyawan dan gaji pokok bulanannya. Gaji bersih yang diterima
pegawai adalah:
gaji bersih = gaji pokok + tunjangan – pajak
Tunjangan karyawan dihitung 20% dari gaji pokok, sedangkan pajak adalah 15% dari
gaji pokok ditambah tunjangan. Nama karyawan dan gaji bersihnya dicetak ke piranti
keluaran. Buatlah programnya.
Jawab:
Tunjangan = 0.2 * gaji pokok
Pajak = 0.15 * (gaji pokok + tunjangan)
Gaji bersih = gaji pokok + tunjangan – pajak
Dari ketentuan di atas kita dapat tuliskan algoritma sebagai berikut:
program gaji;
uses wincrt;
var nama:string;
gapok,gaber,tunjangan,pajak:real;
begin
writeln ('MENGHITUNG GAJI KARYAWAN');
writeln ('========================');
write ('Masukkan nama karyawan: ');
readln (nama);
write ('Masukkan Gaji Pokok: ');
readln (gapok);
tunjangan:=0.2*gapok;;
pajak:=0.15*(gapok+tunjangan);
gaber:=gapok+tunjangan-pajak;
write (nama,' mempunyai gaji bersih sebesar ',gaber:10:2);
end.
3. Buatlah program dalam bahasa Pascal untuk meminta masukan berupa nama, nim,
absen, nilai tugas, nilai uts dan nilai uas. Berdasarkan absen, nilai tugas, nilai uts dan
nilai uas tersebut hitunglah nilai akhir mahasiswa tersebut dengan menggunakan
formula sebagai berikut:
20
Algoritma & Pemrograman I(Pascal) by:chairuddin
Nilai akhir = 10% absen + 20% tugas + 30% uts + 40% uas
program nilai_mahasiswa;
uses wincrt;
var nama,nim:string;
absen, tugas, uts, uas, na : real;
begin
writeln ('MENCARI NILAI MAHASISWA/I');
writeln ('=========================');
write ('masukan nama mahasiswa/i : ');
readln (nama);
write ('masukan NIM nya : ');
readln (nim);
write ('nilai absen : ');
readln (absen);
write ('nilai tugas : ');
readln (tugas);
write ('nilai UTS : ');
readln (uts);
write ('nilai UAS : ');
readln (uas);
na:=(0.1*absen)+(0.2*tugas)+(0.3*uts)+(0.4*uas);
write (nama,' ',nim,' mendapatkan nilai akhir ',na:5:2)
end.
21
Algoritma & Pemrograman I(Pascal) by:chairuddin
Pemilihan
Pemilihan (seleksi) digunakan jika ada masalah yang tidak dapat dipecahkan dengan
perhitungan yang pasti. Inti dari pemecahan masalah jenis ini adalah menganalisis semua
kondisi yang mungkin terjadi dan menentukan statemen yang dilakukan untuk setiap
kondisi tersebut.
Statemen if digunakan untuk memilih dari dua kondisi yang berbeda berdasar ekspresi
boolean, sedangkan statemen case digunakan untuk memilih jika terdapat lebih dari dua
kondisi yang masing-masing memerlukan penanganan yang berbeda. Variabel yang
terlibat dalam statemen case harus bersifat ordinal.
Struktur kendali aliran adalah suatu bentuk/struktur yang memiliki peranan khusus untuk
mengatur aliran urutan pengerjaan operasi atau beberapa operasi tertentu.
Salah satu contoh pernyataan kendali yaitu pernyataan if .
Pernyataan if (if statement) akan memeriksa suatu persyaratan dan menentukan apakah
syarat tersebut benar atau salah, kemudian melakukan pekerjaan sesuai dengan nilai
pernyataan tersebut.
If … then
Contoh :
If (kondisi) then
Statement;
If … then … else
Contoh :
If (kondisi1) then
Statement1
Else if (kondisi2) then
22
Algoritma & Pemrograman I(Pascal) by:chairuddin
Statemen2
Else
Statement3;
If … then … if
Contoh :
If (kondisi) then
Begin
If (kondisi) then
Statement1
Else
Statement2;
End
Else
Statement3;
Case … of
Contoh :
Struktur Penulisan:
Berikut adalah bentuk-bentuk dari pernyataan if yang sering
digunakan :
1. If dengan satu pernyataan (statement)
If (kondisi) then pernyataan ;
3. If dan else
If (kondisi) then
begin
pernyataan1 ;
23
Algoritma & Pemrograman I(Pascal) by:chairuddin
pernyataan2 ;
…..
end
else
begin
pernyataan1 ;
pernyataan2 ;
…..
end;
Dari bentuk bentuk pernyataan if di atas yang harus diperhatikan adalah untuk pernyataan
if dan else, pernyataan-pernyataan setelah then tanpa menggunakan “;”. Dengan kata lain
jika pernyataan setelah then hanya terdiri dari satu pernyataan saja makan pernyataan
tersebut tanpa menggunakan “;”, namun jika pernyataan setelah then terdiri dari lebih
dari satu pernyataan makan setelah end tanpa menggunakan “;”.
Pada flowchart di atas “perintah 1” akan dilakukan jika ”kondisi” benar, sedangkan
“perintah 2” akan dilakukan jika ”kondisi” salah.
Selain bentuk diatas, dalam percabangan juga dikenal istilah percabangan bersarang
(Nested IF), bentuk sederhana dari percabangan bersarang jika digambarkan dalam
flowchart bentuknya akan seperti berikut:
24
Algoritma & Pemrograman I(Pascal) by:chairuddin
Kedua bentuk percabangan di atas merupakan dasar dari bentuk percabangan selanjutnya,
yaitu percabangan kompleks. Dalam percabangan kompleks, sebuah percabangan dapat
mempunyai percabangan lain didalamnya, hal ini akan sangat dibutuhkan dalam sebuah
program yang kompleks. Berikut flowchart yang menggambarkan sebuah percabangan
kompleks.
Pada percabangan kompleks di atas, saat “kondisi 1” bernilai benar, maka akan dilakukan
pengecekan pada “kondisi 2” jika benar maka “perintah 1” akan dilakukan, jika salah
maka “perintah 2” yang akan dilakukan. Sedangkan pengecekan pada “kondisi 3” akan
dilakukan jika hasil pengecekan pada “kondisi 1” bernilai salah, selanjutnya hasil
25
Algoritma & Pemrograman I(Pascal) by:chairuddin
pengecekan dari “kondisi 3” akan menentukan perintah yang akan dilakukan, apakah
“perintah 3” atau “perintah 4”.
Dari gambar flowchart percabangan kompleks tersebut juga dapat dipilah bahwa “kondisi
1” dan “kondisi 3” mewakili percabangan bersarang, sedangkan “kondisi 2” mewakili
percabangan sederhana.
Syntax yang umum digunakan dalam percabangan adalah IF dan IF… ELSE untuk
percabangan sederhana, serta IF… ELSE IF… untuk percabangan bersarang, selain itu
ada syntax alternatif lain yang dalam bahasa pascal dikenal dengan CASE…OF atau
SWITCH dalam bahasa C, untuk lebih jelas anda dapat me-download contoh program
yang menggunakan percabangan di sini. Program tersebut dibuat dengan menggunakan
bahasa pascal.
Dalam membuat program, perintah percabangan akan sangat dibutuhkan, terutama saat
membuat program-program dengan algoritma yang kompleks.
26
Algoritma & Pemrograman I(Pascal) by:chairuddin
STRUKTUR IF THEN
Statemen Penyeleksian Kondisi
Statemen penyeleksian kondisi menunjukkan bahwa suatu statemen akan dikerjakan bila
suatu kondisi adalah benar. Jika kondisi salah satu syarat tidak terpenuhi maka statemen
yang lainnya setelah kata cadangan Else akan dikerjakan atau diproses. Kata else tidak
boleh diawali dengan titik koma (;) karena titik koma menunjukkan akhir dari statemen.
Struktur IF-THEN
Statemen IF-THEN digunakan untuk menyeleksi suatu kondisi, jika kondisi yang
diseleksi terpenuhi, maka statemen yang mengikuti THEN akan diproses. Tetapi, apabila
kondisi tidak terpenuhi, maka yang akan diproses adalah statemen berikutnya.
Contoh program:
1 {*Program Hitung Nilai*}
2 {*keterangan: Nilai per poin=10*}
3 uses wincrt;
4 var
5 Jumlahpoin, nilaiperpoin, nilai:integer;
6
7 begin
8 write('Jumlah poin:');
9 read(Jumlahpoin);
10 write('Nilai per poin:');
11 readln(nilaiperpoin);
12 nilai:=jumlahpoin*nilaiperpoin;
13 if Jumlahpoin>30 then
14 nilai:=nilai+(jumlahpoin-30)*nilaiperpoin;
15 write('Nilai yang diperoleh sebesar:',nilai);
16 End.
27
Algoritma & Pemrograman I(Pascal) by:chairuddin
uses wincrt;
var
nilai:real;
begin
write(‘Masukkan nilai:’);
readln(nilai);
If nilai>60 then
writeln(‘Bagus’)
Else
writeln(‘Buruk’);
End.
Konsep IF .. ELSE ..
Statemen IF akan bercabang sesuai dengan hasil dari operasi boolean (true & false).
Pertama-tama kita akan pelajari percabangan satu arah :
if EkspresiBoolean then
StatemenTrue;
Bila ekspresi boolen bernilai benar (true), maka statemen akan dieksekusi. Bila bernilai
salah maka tidak akan dieksekusi. Berikut contohnya :
uses wincrt;
var a : integer;
begin
a := 1;
write('saya');
if a = 1 then
write(' bersama');
end.
Hasil eksekusi:
saya bersama
Penjelasan:
Diawal diberikan nilai pada a yaitu 1. Setelah dilakukan output (’saya’), nilai a diuji,
karena nilai a bernilai benar (a=1) maka dilakukan output (‘ bersama’).
uses wincrt;
var a : integer;
begin
a := 0;
write('saya');
if a = 1 then
28
Algoritma & Pemrograman I(Pascal) by:chairuddin
write(' bersama');
end.
Hasil eksekusi:
saya
Penjelasan:
Diawal diberikan nilai pada a yaitu 1. Setelah dilakukan output (’saya’), nilai a diuji,
karena nilai a bernilai salah (a=0) maka program melewati statemen if dan selesai
dieksekusi.
Bila statemen IF hanya mempunyai satu statemen saja, tidak diperlukan penanda (begin-
end). Tapi bila lebih maka harus menggunakan begin-end.
uses wincrt;
var a : integer;
begin
a := 1;
write('saya');
if a = 1 then begin
write(' bersama');
write(' sahabat');
end;
end.
Hasil eksekusi:
saya bersama sahabat
Penjelasan:
Diawal diberikan nilai pada a yaitu 1. Setelah dilakukan output (’saya’), nilai a diuji,
karena nilai a bernilai benar (a=1) maka dilakukan output (‘ bersama’) dan output (‘
sahabat’).
if EkspresiBoolean then
StatemenTrue
else
StatemenFalse;
Bila ekspresi boolean menghasilkan nilai salah (false), maka akan dieksekusi statemen
setelah else. Harus diperhatikan bahwa tanda titik koma (;) sebelum else harus
dihilangkan.
uses wincrt;
var a : integer;
begin
a := 0;
write('saya');
if a = 1 then begin
29
Algoritma & Pemrograman I(Pascal) by:chairuddin
write(' bersama');
write(' sahabat');
end
else begin
write(' pascal');
write(' bersama keluarga');
end;
end.
Hasil eksekusi:
saya pascal bersama keluarga
Diawal diberikan nilai pada a yaitu 0. Setelah dilakukan output (’saya’), nilai a diuji,
karena nilai a bernilai salah (a=0) maka dilakukan output (‘ pascal’) dan output (‘
bersama keluarga’).
Terkadang kita memerlukan lebih dari dua percabangan, maka kita memerlukan if
bersarang (nested if).
if EkspresiBoolean1 then
Statemen1
else
if EkspresiBoolean2 then
Statemen2
else then
Statemen3
if EkspresiBoolean1 then
Statemen1
else if EkspresiBoolean2 then
Statemen2
else then
Statemen3
uses wincrt;
var a : integer;
begin
a := 3;
write('saya');
if a = 1 then
write(' bersama');
else if a = 2 then
write(' pascal');
else
write(' pemrograman');
end.
Hasil eksekusi:
saya pemrograman
30
Algoritma & Pemrograman I(Pascal) by:chairuddin
Diawal diberikan nilai pada a yaitu 1. Setelah dilakukan output (’saya’), nilai a diuji,
karena nilai a bernilai salah (a tidak sama dengan 1) maka dilakukan pengujian if
berikutnya, if berikutnya pun bernilai salah (a tidak sama dengan 2) maka dilakukan
statemen pada else yaitu output berupa (‘ pemrograman’).
uses crt;
Catatan :
1. Di dalam IF boleh ada IF (pernyataan IF yang berkalang)
31
Algoritma & Pemrograman I(Pascal) by:chairuddin
3. Pernyataan ELSE tidak diakhri dengan ; (titik koma) begitu pula baris
pernyataan sebelum ELSE.
STRUKTUR IF TERSARANG
Struktur IF TERSARANG merupakan bentuk dari suatu statemen IF yang berada dalam
lingkungan statemen if lainnya.
Contoh program:
uses wincrt;
var
bil:Integer;
Begin
write(‘Masukkan sebuah bilangan:’);
readln(bil);
If (bil>0) then
Begin
writeln(‘Bilangan positif’);
If (bil mod 2=0) then
writeln (‘Bilangan genap’)
Else
writeln (‘Bilangan ganjil’);
End
Else
Begin
writeln (‘Bilangan negatif’);
End;
End.
Hasil eksekusi dari program adalah:
Masukkan sebuah bilangan: 4
Bilangan positif
Bilangan genap
32
Algoritma & Pemrograman I(Pascal) by:chairuddin
ket :='padat'
else
if (a > 0) and (a < 100) then
ket :='cair'
else
if a >=100 then
ket :='gas';
writeln('Air pada suhu tersebut berbentuk',' ',ket);
end.
STRUKTUR CASE OF
Script Pascal berikut akan menampilkan 3 pilihan, masing-masing sebagai berikut :
Program Angka;
uses wincrt;
var
a:integer;
begin
write('Angka (1-3) = ');readln(a);
writeln;
case a of
1:write('Satu');
2:write('Dua');
3:write('Tiga');
else
write('Pilihan Salah!');
end;
end.
Statemen CASE-OF digunakan untuk memilih jika terdapat lebih dari dua kondisi yang
setiapnya memerlukan penanganan yang berbeda.
Contoh program:
uses wincrt;
var
harike:integer;
Begin
write(‘Hari ke..=’);
readln(harike);
case harike of
1:Writeln(‘Senin’);
2:Writeln(‘Selasa’);
3:Writeln(‘Rabu’);
33
Algoritma & Pemrograman I(Pascal) by:chairuddin
4:Writeln(‘Kamis’);
5:Writeln(‘Jumat’);
6:Writeln(‘Sabtu’);
7:Writeln(‘Minggu’);
End;
End.
Hasil eksekusi dari program adalah:
Hari ke..= 4
Kamis
var
th, tg, bl, dow: word;
begin
GetDate(th,bl,tg,dow);
write(‘Hari ini adalah ‘ ,days[dow],’, ‘,tg:0,’ ‘);
case bl of
1:begin
write(‘Januari’);
end;
2:begin
write(‘Februari’);
end;
3:begin
write(‘Maret’);
end;
4:begin
write(‘April’);
end;
5:begin
write(‘Mei’);
end;
6:begin
write(‘juni’);
end;
7:begin
write(‘Juli’);
end;
8:begin
34
Algoritma & Pemrograman I(Pascal) by:chairuddin
write(‘Agustus’);
end;
9:begin
write(‘September’);
end;
10:begin
write(‘Oktober’);
end;
11:begin
write(‘November’);
end;
12:begin
write(‘Desember’);
end;
end;
write(‘ ‘,th:0)
end.
35
Algoritma & Pemrograman I(Pascal) by:chairuddin
case Pilihan of
1:Begin
Write ('Jari-jari lingkaran?');Readln(R);
Luas:=Pi*R*R;
Writeln('Luas Lingkaran=',Luas:9:2);
End;
2:Begin
Write('Panjang sisi alas?');Readln(L);
Write('Tinggi Segitiga?');Readln(T);
Luas:=0.5*L*T;
Writeln;
Writeln('Luas segitiga=',Luas:9:2);
End;
3:Begin
write('Panjang bujur sangkar?');Readln(T);
Write('Lebar bujur sangkar?');Readln(L);
Luas:=T*L;
Writeln;
Writeln('Luas bujur sangkar=',Luas:9:2);
End;
Else
Begin
Writeln('Pilihannya hanya 1,2,atau3');
Writeln('Anda tadi pilih nomer berapa?......Sembarangan aja milih!!!!!!!');
End;
End;
End.
Hasil eksekusi program adalah:
-->PILIHAN<–
Menghitung Luas Lingkaran
Menghitung Luas Segitiga
Menghitung Luas Bujur-Sangkar
36
Algoritma & Pemrograman I(Pascal) by:chairuddin
writeln(‘Rp.’,total*harga:0:2);
writeln(”);
writeln(‘Terimaksih atas pemesanannya’);
writeln(‘Data Anda sedang kami proses…’);
readln;
end;
end.
37
Algoritma & Pemrograman I(Pascal) by:chairuddin
Struktur Pengulangan
Perulangan
Pengulangan (loop) merupakan bentuk yang sering ditemui di dalam suatu program aplikasi. Di
dalam bahasa Pascal, dikenal tiga macam perulangan, yaitu dengan menggunakan pernyataan
For, While-Do, dan Repeat…Until.
Contoh
Var
I:Integer;
Begin
For I:= 1 to 5 Do Writeln(‘Pascal’);
End.
Penjelasan:
Pernyataan Writeln(‘Pascal’) akan diulang sebanyak 5 kali, yaitu dengan
penghitung dari nilai awal 1 sampai dengan nilai akhir 5.
Apabila pernyataan diulang lebih dari satu pernyataan maka seteleh DO harus
memakai Begin kemudian beberapa pernyataan yang akan diulang dan diakhiri
dengan End;.
Contoh
Var
I:Integer;
Begin
For I:= 1 to 2 Do
38
Algoritma & Pemrograman I(Pascal) by:chairuddin
Begin
Write(‘Pascal’);
Writeln(‘Turbo’);
End;
End.
PascalTurbo
PascalTurbo
2. Perulangan negatif
Perulangan negatif adalah perulangan dengan penghitung dari besar ke kecil atau
pertambahan negatif. Perulangan negatif dapat dibentuk dengan menggunakan
pernyataan For-DownTo-Do, dengan bentuk umum:
Contoh
Var
I:integer;
Begin
For I:=5 downto 1 do
Begin
Writeln(I);
End;
End.
Bila program dijalankan maka akan menghasilkan:
5
4
3
2
1
3. Perulangan tersarang
Perulangan tersarang adalah perulangan yang berbeda di dalam perulangan yang
lainnya. Perulangan yang lebih dalam akan diproses terlebih dahulu sampai habis,
kemudian perulangan yang lebih luar baru akan akan bertambah, mengerjakan
perulangan yang lebh dalam lagi mulai dari nilai awalnya dan seterusnya.
Contoh
Var
I,J:Integer;
Begin
For I:=1 to 5 Do
Begin
For j:=1 to 3 Do
Begin
Write(I:8,J:3);
End;
39
Algoritma & Pemrograman I(Pascal) by:chairuddin
Writeln;
End;
End.
1 1 1 2 1 3
2 1 2 2 2 3
3 1 3 2 3 3
4 1 4 2 4 3
5 1 5 2 5 3
Bentuk Umum
Contoh
Var
I:Integer;
Begin
I:=0;
While I<5 Do
Begin
Writeln(I);
I:=I+1;
End;
End.
Bila program dijalankan akan menghasilkan:
0
1
2
3
4
Penjelasan:
Perulangan dari while akan terus menerus dikerjakan bila kondisinya masih benar. Dalam
hal ini kondisinya adalah I dan bila nilai I kurang dari 5, berarti kondisi di dalam While
masih terpenuhi dan perulangan akan selesai setelah nilai I lebih besar atau sama dengan
5.
40
Algoritma & Pemrograman I(Pascal) by:chairuddin
Contoh
Var
I:Integer
Begin
I:=0;
Repeat
I:=I+1;
Writeln(I);
Until I=5;
End.
for a:= 1 to 5 do
write (‘gue gitu loh’)
pada statement diatas maka akan terjadi pengulangan penulisan sebanyak 5 kali.
while ( x > 0 ) do
x := x – 1
statement diatas akan terus terjadi pengulangan selama nilai x masih positif
41
Algoritma & Pemrograman I(Pascal) by:chairuddin
repeat
x := x – 1
until ( x = 100 )
Foot in mouthIF THEN ELSE : digunakan untuk sebuah kondisi dimana suatu pernyataan
akan di uji. jika kondisi terpenuha maka akan lanjut ke statement berikutnya tetapi jika
tidak terpenuhi maka program akan jalan ke pernyataan linyya.
if lapar then
writeln (’silakan makan sampai puazzzz’);
else
write (‘yuuuuuuuuuuuuuukk’);
perbedaan WHILE DO dengan REPET UNTIL adalah terletak pada pengujian kondisi.
jika REPEAT UNTIL perintah dilakukan terlebih dahulu baru dilakukan pengujian.
sedangkan WHILE DO pengujian dilakukan diawal beru perintah dieksekusi.
perbaaan lainya yaitu REPEAT UNTIL mengulang pernyataan selama kondisi belum
terpenihi sedang WHILE DO mangulang pernyataan selama kondisimasih terpenuhi.
Uses Wincrt;
const
akhir = 4;
var
baris,kolom : integer;
begin
for baris := akhir downto 1 do
begin
for kolom := baris downto 1 do
write(kolom);
writeln;
end;
end.
Hasil :
4321
321
21
1
Uses Wincrt;
const
42
Algoritma & Pemrograman I(Pascal) by:chairuddin
akhir = 4;
var
baris,kolom : integer;
begin
for baris := akhir downto 1 do
begin
for kolom := 1 to baris do
write(kolom);
writeln;
end;
end.
Hasil :
1234
123
12
1
Uses Wincrt;
const
akhir = 4;
var
baris,kolom : integer;
begin
for baris := 1 to akhir do
begin
for kolom := 1 to baris do
write(baris);
writeln;
end;
end.
Hasil :
1
22
333
4444
Uses Wincrt;
const
akhir = 4;
var
baris,kolom : integer;
begin
for baris := akhir downto 1 do
begin
for kolom := baris downto 1 do
write(baris);
writeln;
end;
end.
43
Algoritma & Pemrograman I(Pascal) by:chairuddin
Hasil :
4444
333
22
1
Uses Wincrt;
const
akhir = 3;
var
baris,kolom : integer;
begin
for baris := akhir downto 1 do
begin
for kolom := baris downto 1 do
write(baris,' ',kolom);
writeln;
end;
end.
Hasil :
3 33 23 1
2 22 1
1 1
Uses wincrt;
var baris,kolom,jumbaris :integer;
begin
write ('Jumlah Baris : ');readln(jumbaris);
FOR BARIS:=1 TO jumbaris do
begin
write ('*': jumbaris baris);
FOR kolom := 2 TO (2 *baris -1 ) do
begin
write('*');
end;
writeln;
end;
end.
Hasil :
(baris = 4)
*
***
*****
*******
44
Algoritma & Pemrograman I(Pascal) by:chairuddin
Script berikut akan melakukan perhitungan faktorial dari bilangan yang diinputkan,
silahkan dicoba sendiri.
program Faktorial;
uses wincrt;
procedure faktorial (var fak, hasil : integer);
var
i:integer;
begin
hasil := 1;
for i := 2 to fak do
hasil := Hasil * i;
End;
Var
N,Hasil_fak:integer;
Begin
Write ('Nilai yang akan difaktorialkan = '); Readln (N);
Faktorial (N,Hasil_Fak); Writeln;
Writeln ('Hasil Faktorial = ',Hasil_fak);
End.
Program data_siswa;
Uses Wincrt;
Var
No_Siswa:String[5];
B_Data,J_Data,Nilai,Bil:Integer;
Rata:Real;
Begin
Writeln;
Writeln(' Program Penghitung Nilai Rata-Rata Kelas');
Writeln(' ----------------------------------------');
Writeln;
Writeln (' Jumlah Data Yang Sudah Masuk : ',B_Data);
Writeln;
Write(' No. Induk : ');
Readln (No_Siswa);
Write(' Nilai : ');
Readln (Bil);
Nilai:=0;
B_Data:=0;
Clrscr;
While No_Siswa <> 'xx' do
Begin
B_Data:=B_Data+1;
45
Algoritma & Pemrograman I(Pascal) by:chairuddin
Nilai:=Nilai+Bil;
Writeln;
Writeln(' Program Penghitung Nilai Rata-Rata Kelas');
Writeln(' ----------------------------------------');
Writeln;
Writeln (' Jumlah Data Yang Sudah Masuk : ',B_Data);
Writeln;
Write(' No. Induk : ');
Readln (No_Siswa);
Write(' Nilai : ');
Readln (Bil);
Clrscr;
End;
Rata := Nilai/B_Data;
Writeln;
Writeln(' Hasil Perhitungan Nilai Rata-Rata Kelas');
Writeln(' ---------------------------------------');
Writeln;
Writeln (' Jumlah Data = ',B_Data);
Writeln (' Nilai Total = ',Nilai);
Writeln (' Rata-rata = ',Rata:5:2);
End.
Kalkulator Pascal
Script berikut menerapkan penggunaan procedure serta statemen Repeat-Until dan
Case-Of untuk membangun sebuah kalkulator sederhana menggunakan Bahasa Pascal.
Untuk lebih jelasnya silahkan dicoba sendiri listing berikut :
Program Calculator;
uses wincrt;
const
Kol = 10; kol2=35;
Var
Bil1,Bil2,Bil3,Pilih : Integer;
procedure masukkan;
begin
clrscr;
gotoxy(kol2,4);writeln('----------------------');
gotoxy(kol2,5);writeln(' Masukan Bilangan ');
gotoxy(kol2,6);writeln('----------------------');
gotoxy(kol2,7);writeln('Bilangan 1 : ');
gotoxy(kol2,8);writeln('Bilangan 2 : ');
gotoxy(kol2,9);writeln('----------------------');
gotoxy(kol2,10);writeln('Hasil Operasi : ');
gotoxy(kol2,11);writeln('----------------------');
gotoxy(kol2+20,7);readln(bil1);
gotoxy(kol2+20,8);readln(bil2);
end;
Procedure Tambah;
begin
masukkan;
bil3 := bil1 + bil2;
46
Algoritma & Pemrograman I(Pascal) by:chairuddin
gotoxy(kol2+20,10);writeln(bil1,'+',bil2,'=',bil3);
readln;
end;
Procedure Kurang;
begin
masukkan;
bil3 := bil1 - bil2;
gotoxy(kol2+20,10);writeln(bil1,'-',bil2,'=',bil3);
readln;
end;
Procedure Kali;
begin
masukkan;
bil3 := bil1 * bil2;
gotoxy(kol2+20,10);writeln(bil1,'*',bil2,'=',bil3);
readln;
end;
Procedure bagi_bulat;
begin
masukkan;
bil3 := bil1 div bil2;
gotoxy(kol2+20,10);writeln(bil1,'div',bil2,'=',bil3);
readln;
end;
Procedure Sisa_bagi;
begin
masukkan;
bil3 := bil1 mod bil2;
gotoxy(kol2+20,10);writeln(bil1,'mod',bil2,'=',bil3);
readln;
end;
(* Program Utama *)
begin
repeat
clrscr;
gotoxy(kol,4); writeln('--------------------------');
gotoxy(kol,5); writeln('Operasi Bilangan Bulat');
gotoxy(kol,6); writeln('--------------------------');
gotoxy(kol,7); writeln('1. Penambahan');
gotoxy(kol,8); writeln('2. Pengurangan');
gotoxy(kol,9); writeln('3. Perkalian');
gotoxy(kol,10);writeln('4. Pembagian Integer {Div} ');
gotoxy(kol,11); writeln('5. Sisa Hasil Bagi {Mod} ');
gotoxy(kol,12); writeln('6. Selesai');
gotoxy(kol,13); writeln('--------------------------');
gotoxy(kol,14); writeln('Pilihan Anda [1..6] : [ ] ');
gotoxy(kol,15);writeln('--------------------------');
gotoxy (kol+25,14);readln(pilih);
case pilih of
1 : Tambah;
2 : Kurang;
3 : Kali;
4 : Bagi_bulat;
5 : Sisa_bagi;
end;
until pilih = 6;
end.
47
Algoritma & Pemrograman I(Pascal) by:chairuddin
Bab 3 Bentuk Perulangan & Penyeleksian Kondisi
Materi
1. Bentuk – bentuk Perulangan
Dalam hampir setiap program yang kompleks mutlak memerlukan suatu perulangan dan
percabangan. Tujuan perulangan disini adalah untuk mengulang statement atau blok
statement berulang kali sesuai
sejumlah yang ditentukan pemakai. Dalam materi ini akan memberikan gambaran konsep
dasar dari pengertian diatas.
a) Perulangan For.
Perulangan dengan statemen For digunakan untuk mengulang statemen atau suatu blok
statemen berulang kali. Perulangan dengan statemen For dapat berupa perunlangan
positif dan perulangan negatif.
# Contoh dengan menggunakan blok statement: cara penulisannya dengan pada awal blok
diawali dengan Begin dan pada akhir blok diakhiri dengan End;
Uses Crt;
Var
i : Integer;
Begin
For i:= 1 To 10 Do
Begin
Writeln ('I Love Dinda'); { blok statement }
End;
48
Algoritma & Pemrograman I(Pascal) by:chairuddin
End.
Hasil yang akan didapat akan sama dengan contoh yang pertama, tapi yang harus diingat
disini untuk penggunaan blok pada perulangan For biasanya mempunyai banyak
statement [lebih dari 1 statement]
# Contoh 3 : Penggunaan perulangan For dalam blok statement untuk membuat tabel
Uses Crt;
Var
a,b,c : Integer;
bagi : Real;
Begin
Writeln('----------------------------------------------');
Writeln(' a a*a a*a*a 1/a ');
Writeln('----------------------------------------------');
For a := 1 To 10 Do
Begin
b:= a*a;
c:=a*a*a;
bagi := 1/a;
Writeln(a:4,c:10,d:10,bagi:12:3);
End;
Writeln ('----------------------------------------------');
End.
maka hasilnya :
----------------------------------------------
a a*a a*a*a 1/a
----------------------------------------------
1 1 1 1.000
2 4 8 0.500
3 9 27 0.333
4 16 64 0.250
5 25 125 0.200
6 36 216 0.167
7 49 343 0.143
8 64 512 0.125
9 81 729 0.111
10 100 1000 0.100
----------------------------------------------
• Perulangan For negatif : Perulangan negatif adalah perulangan dengan menghitung
(counter) dari besar ke kecil.
49
Algoritma & Pemrograman I(Pascal) by:chairuddin
Var
i : Integer;
Begin
For i := 10 DownTo 1 Do Write (i:3);
End.
Hasil :
10 9 8 7 6 5 4 3 2 1
• Perulangan While - Do
Penyeleksian kondisi digunakan untuk agar program dapat menyeleksi kondisi, sehingga
program dapat menentukan tindakan apa yang harus dikerjakan, tergantung dari kondisi
yang diseleksi tersebut. Perulangan While – Do tidak dilakukan jika kondisi tidak
terpenuhi.
Contoh :
Uses Crt;
Var i : Integer;
Begin
i := 0;
While < 5 do
Begin
Write (i:3);
Inc (i); { sama dengan i:=i+1 }
End;
End.
Hasilnya :
01234
50
Algoritma & Pemrograman I(Pascal) by:chairuddin
51
Algoritma & Pemrograman I(Pascal) by:chairuddin
Repeat – Until tersarang adalah suatu perulangan Repeat - Until yang satu berada
didalam perulangan Repeat – Until yang lainnya.
Contoh :
Var
a,b,c : Real;
Begin
Writeln('========================================');
Writeln(' sisi A sisi B Sisi C ');
Writeln (' =======================================');
a:= 1;
Repeat { perulangan luar }
b := 0;
Repeat{ perulangan dalam }
c:=Sqrt (a*a+b*b);
Writeln (a:6:2, b:9:2, c:9:2);
b:=b+5;
Until b>25; { berhenti jika b lebih besar dari 5 untuk
perulangan dalam }
a:=a+1;
Until a>3; { berhenti jika a lebih besar dari 3 untuk
perulangan luar }
Writeln(' =======================================');
End.
• Percabangan
If - Then
Bentuk struktur If – Then adalah sebagai berikut :
If Kondisi Then Statement
Ungkapan adalah kondisi yang diseleksi oleh statement If. Bila kondisi yang diseleksi
terpenuhi, maka statement yang mengikuti Then akan diproses, sebaliknya bila kondisi
tidak terpenuhi, maka yang akan diproses statement berikutnya.
Misalnya :
If Pilihan = 2 Then
Begin{ jika kondisi terpenuhi, Yaitu jika pilihan = 2 }
......
......
End
Else{ jika kondisi tidak terpenuhi, yaitu jika pilhan tidak sama dengan 2}
Begin
.......
.......
End;
Contoh Program :
Uses Crt;
Var
52
Algoritma & Pemrograman I(Pascal) by:chairuddin
Nilai : Real;
Begin
Write ('Jumlah Nilai :');
Readln (nilai); { Pemasukan data }
If nilai > 60 Then { seleksi kondisi variabel nilai }
Writeln('Lulus') { Dilaksanakan jika nilai lebih besar dari 60 }
Else
Writeln('Tidak lulus'); { Dilaksanakan jika variabel nilai lebih kecil dari 60 }
End.
Hasil :
Jika kita Memasukan 40 pada varibel nilai, Maka program diatas akan mencetak Tidak
lulus.
Case - Of
Struktur Case – Of mempunyai suatu ungkapan logika yang disebut dengan selector dan
sejumlah statemen yang diawali dengan suatu label permasalahan (case label) yang
mempunyai tipe sama dengan selector.
Statement yang mempunyai case label yang bernilai sama dengan case label yang bernilai
sama dengan nilai selector akan diproses sedang statemen yang lainya tidak.
Daftar Case label dapat berupa konstanta, range dari konstanta yang bukan bertipe real.
Contoh program ;
53
Algoritma & Pemrograman I(Pascal) by:chairuddin
Program nilai;
Var
nil : Char ;
Begin
Write ('Nilai Numerik yang didapat :');
Readln (nil);
Case nil Of
'A': Writeln ('Sangat Baik’);
'B': Writeln('Baik’);
'C': Writeln('Cukup');
'D': Writeln('Kurang');
'E': Writeln('Sangat Kurang');
End;
End.
hasil : Nilai Numerik yang didapat : B Input Baik
Contoh Listing Program untuk Dicoba
Uses Crt;
Const
garis='------------------------------------------------------';
Var
nil1,nil2 : Array [1..10] Of 0..100; {Array dgn Type subjangkauan}
npm : Array [1..10] Of String [8];
nama : Array [1..10] Of String [15];
n,i,bar : Integer;
jum : Real;
tl : Char;
Begin
ClrScr;
{ pemasukan data dalam array }
Write ('Mau Isi Berapa Data:');
Readln (n);
For i:= 1 To n Do
Begin
ClrScr;
GotoXY(30,4+1); Write('Data Ke-:',i:2);
GotoXY(10,5+i); Write('NPM :'); Readln (npm[i]);
GotoXY(10,6+i); Write('Nama :'); Readln (nama[i]);
GotoXY(10,7+i); Write('Nilai 1 :'); Realdn(nil 1[i]);
GotoXY(10,8+i); Write('Nilai 2 :'); Readln(nil 2[i]);
End;
{ proses data dalam array }
ClrScr;
54
Algoritma & Pemrograman I(Pascal) by:chairuddin
GotoXY(5,4); Write(Garis);
GotoXY(5,5); Write ('No');
GotoXY(9,5); Write ('NPM');
GotoXY(18,5); Write ('Nama');
GotoXY(34,5); Write ('Nilai 1');
GotoXY(41,5); Write ('Nilai 2');
GotoXY(47,5); Write ('Rata');
GotoXY(54,5); Write ('Abjad’);
GotoXY(5,6); Write (Garis);
{ proses Cetak isi array dan seleksi kondisi }
bar := 7;
For i:= 1 To n Do
Begin
jum:=(nil1[i]+nil2[i])/2;
If jum>= 90 Then tl:='A'
Else
If jum>80 Then tl:='B'
Else
If jum>60 then tl:='C'
Else
If jum 50 Then tl:='D'
Else
tl:='E';
{ cetak hasil yang disimpan di array dan hasil }
{ penyeleksian kondisi }
GotoYX(5,bar); Writeln(i:2);
GotoYX(9,bar); Writeln (NPM[i]);
GotoYX(18,bar); Writeln (NAMA[i]);
GotoYX(34,bar); Writeln (NIL1[i]:4);
GotoYX(41,bar); Writeln (NIL2[i]:4);
GotoYX(47,bar); Writeln (jum:5:1);
GotoYX(54,bar); Writeln (tl);
bar:=bar+1;
End;
GotoXY(5,bar+1);Writeln(garis);
Readln;
End.
55
Algoritma & Pemrograman I(Pascal) by:chairuddin
Delay (100);
NoSound;
End;
TextBackGround(black);
ClrScr;
For i := 1 To 9 Do
Begin
TextBackGround(white);
Window (42-i*4,10-i,38+i*4,15+i);
ClrScr;
Delay(100);
End;
TextColor(15);
GotoXY(28,2);Writeln('c');
GotoXY (8,3); Writeln ('3');
GotoXY (28,4); Writeln ('A');
TextColor(black);
GotoXY (44,3); Writeln ('3');
GotoXY (44,2); Writeln ('&');
TextColor (29,4); Writeln ('U');
TextColor (red*25);
GotoXY (30,3); Writeln ('B E L A J A R');
TextColor (black);
GotoXY (5,5); Write('c');
For i := 6 To 64 Do
Begin
GotoXY (i,5); Writeln ('');
End;
For i := 6 To 20 Do
Begin
GotoXY(5,i); Writeln('3 ');
End;
GotoXY (5,21); Writeln (' ');
TextColor(white);
GotoXY(65,5); Write('U');
For i := 6 To 65 Do
Begin
GotoXY (i,21); Writeln(' `);
End;
For i := 6 To 20 Do
Begin
GotoXY(65,i); Writeln('3');
End;
GotoXY (65,21); Writeln ('c');
TextColor(yellow);
Readln;
56
Algoritma & Pemrograman I(Pascal) by:chairuddin
End.
Soal Latihan
Buatlah program untuk soal dibawah ini dengan tampilan sebagus mungkin (gunakan
perintah Window, Textcolor dll). Jumlah suku sesuai dengan input dari keyboard.
1. Buat deret hitung 3,7,11,15,......................=?
Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T.
2. Buat deret ukur 3,9,27,................................=?
Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T.
3. Buat tabel deret bergoyang 1,-2,4,-8,...........=?
Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T.
4. Buat deret suku harmonis 1,1/2,1/3,.............=?
Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T.
5. Buat deret fibbonaci 1,1,2,3,5,.....................=?
Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T.
6. Buat deret seperti berikut 1,-2,3,-4,.............=?
Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T.
7. Buat deret kuadrat 1, 4, 9,............................=?
Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T.
8. Buat deret seperti berikut 100, 90, 70 ,...........=?
Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T.
9. Buat deret seperti berikut 256, 196, 144,............=?
Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T.
10. Buat deret seperti berikut 1, 1, 1, 2, 2, 3, 6, 4, 24, 5..........=?
Program akan berhenti jika pada pertanyaan "Hitung Lagi [Y/T] ?" diisi huruf T.
11. Buatlah program untuk mencari faktorial, sesuai dengan input yang diminta.
12. Buatlah program huruf yang berjatuhan sehingga membentuk suatu kalimat yang
telah diinput dari keyboard .
57
Algoritma & Pemrograman I(Pascal) by:chairuddin
Array adalah variabel yang dapat menyimpan lebih dari satu nilai sejenis. Terdapat dua bagian
penting yaitu elemen array yang merupakan nilai dan endeks array yang merupakan nilai urut
untuk mengakses nilai pada array.
Array adalah tipe data terstruktur yang terdiri dari sejumlah komponen-komponen
yang mempunyai tipe sama. Komponen-komponen tersebut disebut sebagai
komponen type, larik mempunyai jumlah komponen yang jumlahnya tetap.
Banyaknya komponen dalam larik ditunjukkan oleh suatu index, dimana tiap
komponen di array dapat diakses dengan menunjukkan nilai indexnya atau
subskript.
Berikut ini contoh array A dengan 10 buah elemen tiap elemen memiliki nilai antara 10 hingga
100.
A[1] A[2] A[3] A[4] A[5] A[6] A[7] A[8] A[9] A[10]
1 2 3 4 5 6 7 8 9 10
10 20 30 40 50 60 70 80 90 100
Deklarasi Array.
Array dideklarasikan pada bagian deklarasi. Deklarasi umum dari array adalah
NamaArray : array[IndeksAwal..IndeksAkhir] of tipe_data;
Bentuk umum deklarasi array adalah:
type tipe_array = array [range_index] of ipe_data;
var var_array : tipe_array; (1.1)
Atau dapat langsung dituliskan sebagai berikut:
var var_array = array [range_index] of tipe_data; (1.1)
var_array adalah nama variabel array yang dipakai untuk mengidentifikasi array.
Pemilihan nama variabel array mengikuti aturan pemberian nama variabel secara umum.
Range_index adalah batasan index yang digunakan untuk mengidentifikasi elemen array.
Range_index menentukan jumlah elemen array, yang jumlahnya tidak akan berubah
(statis) mulai saat awal disediakan (program dijalankan) hingga program selesai
dijalankan. Misalnya range 0..9 atau 1..10 atau –1..8 atau ‘A’..’J’ akan menentukan
jumlah elemen array sebanyak 10 buah.
Setiap elemen array diidentifikasi oleh salah satu index yang berada dalam range yang
telah ditentukan. Penggunaan index yang berada di luar range Index akan mengakibatkan
kesalah, Index ini tidak harus berupa bilangan positif, tetapi harus berupa bilangan bulat
atau data-data yang masuk kategori tipe data ordinal (seluruh tipe data dasar selain real
dan double), seperti semua varian integer, char, boolean atau tipe data enumerasi yang
dibuat sendiri oleh user.
58
Algoritma & Pemrograman I(Pascal) by:chairuddin
Tipe_data adalah tipe data untuk elemen array. Tipe data elemen array tidak harus berupa
integer, atau tipe data dasar yang lain, tetapi dapat berupa tipe data terstruktur seperti
array.
Tentang pemilihan model deklarasi, model deklarasi dengan membuat sebuah tipe array
seperti model (1.1) akan lebih jelas dan lebih ringkas yang dapat dirasakan saat variabel-
variabel bertipe array digunakan sebagai parameter sebuah fungsi atau prosedur.
B.U :
Array [ 1 . . 20 ] of tipe_data ; (Dimensi 1)
B.U :
Array [1 . . 3 , 1 . . 2] of tipe_data; (Dimensi 2)
59
Algoritma & Pemrograman I(Pascal) by:chairuddin
• Array Multidimensi
Tipe data elemen array tidak harus berupa tipe data elementer, namun juga dapat berupa
tipe data terstruktur, misalnya array. Sebagai contoh, perhatikan deklarasi berikut :
Var Matrix:array[1..3,1..3] of integer;
Bentuk deklarasi mungkin saja dibuat untuk kasus demikian, tipe nilai_ujian adalah
berupa array dengan dua elemen bertipe integer untuk menyimpan nilai ujian midterm
dan ujian akhir. Sedangkan variabel nilai adalah array dengan sepuluh elemen bertipe
nilai_ujian, yang digunakan untuk menyimpan nilai ujian dari 10 mahasiswa. Elemen-
elemen array nilai bertipe array integer. Walaupun terdapat dua buah array, tetapi setiap
deklarasi array hanya dibatasi dengna sebuah range Index saja. Jumlah elemen array nilai
adalah 10, walaupun secara keseluruhan banyaknya bilangan yang dapat disimpan adalah
20 buah. Array demikian dikenal sebagai array berdimensi 1.
Contoh: Jika akan mendeklarasikan viriabel A sebagai Array dengan 10 elemen bertipe integer :
Var
A: array [1..10] of Integer;
Contoh lain:
A1: array[0..9] of Integer;
A1: array[10..20] of Integer;
A1: array[‘a’..’j’] of Integer;
Mengakses elemen Array
Untuk memberikan nilai pada variabel array dapat dengan menggunakan parameter berikut :
NamaArray [indeks]:=nilai;
Contoh
Var
60
Algoritma & Pemrograman I(Pascal) by:chairuddin
A: array[1..10] of integer;
Begin
A[1]:=1; {Mengisikan elemen 1 dengan nilai 1}
A[9]:=200; {Mengisi elemen 9 dengan nilai 200};
End.
Array sebagai konstanta
Nilai pada array dapat bernilai konstan. Dapat kita lakukan dengan mendeklarasikannya pada
bagian constanta.
Const
NamaArray : array[IndeksAwal..IndeksAkhir] of Tipe_Data = (nilai1, nilai2,………);
Banyaknya nilai konstanta harus sama dengan jumlah elemennya.
Contoh penggunaanya
Program ArrayKonstanm;
Uses Wincrt;
Const
Hari : array[1..2] oof string = (’senin’,’selasa’,'rabu’,'kamis’,'jumat’,’sabtu’,'minggu’);
Var
noHari:integer;
begin
clrscr;
write(‘Masukan nomor harinya : ‘);readln(noHAri);
write(‘Hari ke’,noHari,’adalah’,Har[noHari]);
end.
Jika dieksekusi maka hasilnya adalah:
Masukan nomor harinya : 2
Hari ke 3 adalah rabu
Array saebagai parameter
Array pada waktu tertentu dapat digunakan sebagai parameter dari suatu proesdur atyau
fungsi. Contoh
Type
Bilangan = array [1..100[ of integer;
Procedure InputArray(A:bilangan; N:integer);
var
i:integer;
begin
61
Algoritma & Pemrograman I(Pascal) by:chairuddin
for i:=1 to N do
write('Masukan elemen array ke ',i); readln(A[i]);
end.
Contoh diatas adalah prenggunaan array sebagai parameter untuk memberikan nilai pada
suatu array tertentu.
Array berisi record
Caranya adalah mendefinisikan record terlebih dahulu yang kemudian akan digunakan sebagai
tipe data pada saat pendeklarasiaan array. Contoh:
Type
Tsiswa = record
NIM:=string[9[;
Nama:string[25];
End;
TkumpulanSiswa = array [1..100] of Tsiswa;
Var
A: TkumpulanSiswa;
Variabel A diatas akan menampung 100 buah record yang bertipe Tsiswa. Sementara untuk
record berisi array dengan contoh perhitungan nilai siswa berikut : Nilai = (20% * kuis) +
(30% * UTS) + (50% * UAS). Maka kita dapat mendefinisikan mahasiswa sebagai tipe record
yang memiliki 3 nilai dengan menggunakan array. Yaitu:
Type
Tsiswa = record
NIM:=string[9[;
Nama:string[25];
Nilai = array [1..3] of real;
Kode diatas menunjukan bahwa setiap mahasiswa memiliki 3 nilai.
Metode pencarian pada Array
Ada beberapa macam teknik dalam mendapatkan nilai dari suatu elemen pada array salh
satunya dengan metode pencarian beruntun.Contoh:
Program CaraiBeruntun;
Uses Wincrt;
Const
N : array[1..5] of integer= (10,20,30,40,50);
Var
a,b,index : integer;
begin
clrscr;
write(‘Masukan nilai yang akan dicari : ’);readln(a);
62
Algoritma & Pemrograman I(Pascal) by:chairuddin
index:=0;
for b:=1 to 5 do begin
if N[b] = a then begin
index:=b;
break;
end;
end;
writeln(a,’ adalah nilai yang ditemukan pada index ke ’,index);
end.
Array 2 dimensi
Array 2 dimensi adalah array yang memiliki 2 buah elemen bertipe array yang berbentuk
kolom dan baris. Pendeklarasiannya adlah sebagai berikut:
NamaArray : array[1..BanyakBaris, 1..BanyakKolom] of tipe_data;
Contoh
Array2D : array[1..3, 1..4] of integer;
Sedangkan untuk mengaskes maupun memberikan nilai dengan parameter:
Array2D [2,3]:=200; {Mengisikan nilai 200 pada baris 2 kolom 3}
Array PASCAL
Array dapat bertipe data sederhana seperti byte, word, integer, real, bolean, char,
string dan tipe data scalar atau subrange. Tipe larik mengartikan isi dari larik atau
komponen- komponenya mempunyai nilai dengan tipe data tersebut.
Contoh:
Var
Untai : array[1..50] of Integer;
Pada contoh Array dengan nama untai telah dideklarasikan dengan tipe integer,
dengan jumlah elemen maksimum 50 elemen, nilai dari elemen array tersebut diatas
harus bertipe integer.
Contoh Program :
Program Contoh_Array_Input;
Uses Crt;
Var
Bilangan : array[1..50] of Integer;
Begin
ClrScr;
63
Algoritma & Pemrograman I(Pascal) by:chairuddin
Bilangan[1]:=3;
Bilangan[2]:=29;
Bilangan[3]:=30;
Bilangan[4]:=31;
Bilangan[5]:=23;
Writeln('nilai varibel bilangan ke 3 =',Bilangan[3]);
Readln;
End.
Array juga dapat dideklarasikan bersama dengan tipe yang beragam seperti contoh
dibawah ini :
Program Contoh_Deklarasi_Array_Beragam;
Uses Crt;
Var
NPM : array[1..20] of string[10];
Nama : array[1..20] of string[25];
Nilai : array[1..20] of real;
Umur : array[1..20] of byte;
banyak,i : integer;
Begin
ClrScr;
Write('Isi berapa data array yang diperlukan :');Readln(banyak);
For i := 1 to banyak Do
Begin
Write('NPM =');Readln(NPM[i]);
Write('Nama =');readln(Nama[i]);
Write('Nilai=');readln(Nilai[i]);
Write('Umur =');readln(Umur[i]);
End;
{cetak varibel array}
Writeln('NPM NAMA NILAI UMUR ');
For i:= 1 to banyak Do
Begin
64
Algoritma & Pemrograman I(Pascal) by:chairuddin
Writeln(Npm[i]:10,Nama[i]:25,Nilai[i]:3:2,' ',Umur[i]:3);
End;
Readln;
End.
Untuk deklarasi array dapat digunakan beberapa cara seperti berikut ini :
Type
Angka = String[20];
Var
Nama : Array [1..50] of Angka;
Begin
.
.
End.
Deklarasi tipe indeks subrange integer Indeks pada array dapat tipe skalar atau
subrange, tetapi tidak bisa real.
Contoh:
Var
Nilai : Array[1..10] of Integer;
pada contoh ini array nilai mempunyai 10 buah elemen yaitu dari 1 sampai 10. Array
tersebut dapat dideklarasikan dengan type seperti berikut ini :
Type
Skala = 1..10;
Var
Nilai : Array [skala] of Integer;
atau :
Type
Skala = 1..10;
Y = Array[skala] of Integer;
Var
Nilai : Y;
65
Algoritma & Pemrograman I(Pascal) by:chairuddin
atau :
Type
Y = Array[1..10] of Integer;
Var
Nilai : Y;
atau :
Const
Atas =1;
Bawah = 5;
type
Y = Array[Atas..Bawah] of Integer;
Var
Nilai : Y;
66
Algoritma & Pemrograman I(Pascal) by:chairuddin
Var
Jum : Array[bln] of Integer;
atau :
type
Bln =(jan,feb,mar,apr,mei);
Var
Jum : Array[jan..mei] of Integer;
67
Algoritma & Pemrograman I(Pascal) by:chairuddin
Dalam pascal string merupakan array dari elemen- elemen karakter seperti berikut :
Contoh Program :
Program String_Adalah_Array_Tipe_Char;
Uses Crt;
Var
Nama : string;
i : Integer;
Begin
Nama:='Turbo Pascal';
For i:= 1 to Length(nama) Do
Writeln('Elemen ',i,' dari ',Nama,'= ',Nama[i]);
Readln;
End.
68
Algoritma & Pemrograman I(Pascal) by:chairuddin
Contoh pengurutan data dengan metode buble sort, yaitu dengan cara penukaran,
dapat dilihat pada contoh dibawah ini :
Contoh Program :
Program Penggunaan_Array_Untuk_Sortir_Buble_Sort;
Uses Crt;
Var
nil1 : Array[1..100] of Integer;
n,i,j,dum : Integer;
Begin
ClrScr;
69
Algoritma & Pemrograman I(Pascal) by:chairuddin
70
Algoritma & Pemrograman I(Pascal) by:chairuddin
123
Untuk mengetahui cara mendeklarasikan dari penggunaan aray dua dimensi dapat
dilihat pada listing program dibawah ini .
Contoh Program:
Program Deklarasi_Array_Dua_Dimensi;
Uses Crt;
Var Tabel : Array[1..3,1..2] of Integer;
i,j : Integer;
Begin
ClrScr;
Tabel[1,1]:=1;
Tabel[1,2]:=2;
Tabel[2,1]:=3;
Tabel[2,2]:=4;
Tabel[3,1]:=5;
Tabel[3,2]:=6;
For I := 1 to 3 Do Begin For J:= 1 to 2 Do Begin Writeln('Elemen ',i,',',j,'=
',tabel[i,j]);
End;
End;
Readln;
End.
71
Algoritma & Pemrograman I(Pascal) by:chairuddin
72
Algoritma & Pemrograman I(Pascal) by:chairuddin
73
Algoritma & Pemrograman I(Pascal) by:chairuddin
Contoh Program :
Program Contoh_Pengiriman_Parameter_Array_Di_Procedure;
Uses Crt;
Const
Garis ='---------------------------------------------------';
Type
Untai = Array[1..10] of String[15];
Bulat = Array[1..10] of Integer;
Huruf = Array[1..10] of Char;
Var
i,Banyak : Integer;
Procedure Proses(Nama:Untai;Nilai:Bulat);
Var
Ket : String;
Abjad : Char;
Begin
Writeln(Garis);
Writeln('Nama Nilai Abjad Keterangan');
Writeln(Garis);
For i := 1 to Banyak Do
Begin
If Nilai[i] > 90 Then
Begin
Abjad:='A';
Ket :='Istimewa';
74
Algoritma & Pemrograman I(Pascal) by:chairuddin
End;
If (Nilai[i]<90) And (Nilai[i]>70) Then
Begin
Abjad:='B';
Ket :='Memuaskan';
End;
If (Nilai[i]<70) And (Nilai[i]>60) Then
Begin
Abjad:='C';
Ket :='Cukup';
End;
If (Nilai[i]<60) And (Nilai[i]>45) Then
Begin
Abjad:='D';
Ket :='Kurang';
End;
If Nilai[i]< 45 Then
Begin
Abjad:='E';
Ket :='Sangat kurang';
End;
Writeln(Nama[i]:15,' ',Nilai[i]:4,' ',Abjad,' ',Ket:15);
End;
Writeln(Garis);
End;
Procedure Masuk_Data;
Var
Nama : Untai;
Nilai : Bulat;
Begin
Write('Banyak data =');Readln(Banyak);
For i:= 1 to Banyak Do
Begin
75
Algoritma & Pemrograman I(Pascal) by:chairuddin
ClrScr;
Writeln('Data ke - ',i);
Write('Nama =');readln(Nama[i]);
Write('Nilai =');readln(Nilai[i]);
End;
Proses(Nama,Nilai);
End;
{modul Utama}
Begin
Masuk_Data;
Readln;
76
Algoritma & Pemrograman I(Pascal) by:chairuddin
Contoh :
• Menampilkan menu pilihan
• Menghitung nilai rata-rata
• Mensortir data
-------------------------------------------------------------------------
procedure name(parameter declarations);
label
label-declarations
const
constant-declarations
type
type-declarations
var
variable-declarations
procedure and function declarations
begin
Code for procedure
end;
-------------------------------------------------------------------------
sedangkan bentuk deklarasi function adalah persis sama dengan procedure, hanya baris
pertamanya saja yg berbeda yaitu:
77
Algoritma & Pemrograman I(Pascal) by:chairuddin
PROCEDURE
Deklarasi Procedure
Program nama_program_utama;
PROCEDURE Nama_Procedure;
Begin
-
End;
Begin
-
End.
Memanggil Procedure.
78
Algoritma & Pemrograman I(Pascal) by:chairuddin
Procedure dipanggil menggunakan Nama Procedure yang diikuti olah sejumlah parameter.
Prosedur Standard
Prosedur dibagi menjadi dua kelompok, yaitu prosedur yang didefinisikan sendiri oleh pemakai
dan prosedur standard (Standard Procedure) ang telah tersedia dalam sistem Pascal dan kita
tinggal memakainnya.
FUNGSI
Perbedaan fungsi dengan procedure :
Pada fungsi, nilai yang dikirim balik terdapat pada nama fungsinya, sedangkan pada prosedur
nilai yang dikirim balik terdapat pada parameter acuan/nyata.
Fungsi akan secara langsung memberikan hasil sesuai dengan tipe yang dideklarasikannya,
79
Algoritma & Pemrograman I(Pascal) by:chairuddin
80
Algoritma & Pemrograman I(Pascal) by:chairuddin
C:=A+B;
Writeln( 'Hasil Kali ',C);
End;
Var X,Y: Integer;
Begin
Write(' Inputkan Nilai X : ');
Readln(X);
Write(' Inputkan Nilai Y : ');
Readln(Y);
Tambah (X,Y);
End.
Salinlah program berikut, dan simpan dengan nama CONTOH92.PAS
Program contoh_pVar;
Uses crt;
PROCEDURE Tambah(VAR A,B,C:Integer);
Begin
C:=A+B;
End;
Var X,Y,Z : Integer;
Begin
X:=15; Y:=7;
Tambah(X,Y,Z);
Writeln( 'X = ',X,' Y = ',Y,'Z = ',Z);
End.
Salinlah program berikut, dan simpan dengan nama CONTOH93.PAS
Uses crt;
FUNCTION Tambah(A,B:Integer):integer;
Begin
Tambah:=A+B;
End;
Var X,Y : Integer;
Begin
Clrscr;
Write( ' X = '); Readln(X);
Write( ' Y = '); Readln(Y);
Writeln;
Writeln(X,' + ',Y,' = ',Tambah(X,Y));
81
Algoritma & Pemrograman I(Pascal) by:chairuddin
Readln;
End.
Latihan :
Buatlah program dengan prosedur untuk menghasilkan output sebagai berikut:
Ket : Parameter yang digunakan adalah Kol1, Bar1, Kol2, Bar2 dan Warna Background.
Simpan dengan nama LATIH91.PAS
Buatlah program dengan fungsi untuk mengubah sejumlah string yang diinputkan (panjang string
maksimal 30 char), menjadi huruf besar dan huruf kecil secara bergantian.
Contoh : STMIK StMiK
Ket : Parameter yang digunakan adalah Kalimat.
Simpan dengan nama LATIH92.PAS
a. Procedure Sederhana
Procedure sederhana dipakai untuk menampilkan pilihan menu, dsb. procedure (module)
tersebut terdiri atas beberapa pernyataan (statements), yang dikelompokkan dengan kata
kunci begin dan end . Setiap procedure mempunyai nama. Seperti contoh berikut:
SYNTAX
PROCEDURE NAMA;
begin
:
pernyataan
:
end;
Contoh a :
PROCEDURE DISPLAY_MENU;
begin
writeln('Pilihan Menu');
writeln(' 1: Edit file teks');
writeln(' 2: buka file teks ');
writeln(' 3: Simpan file teks);
writeln(' 4: Kopi file teks’);
writeln(' 5: Cetak file teks’)
end;
82
Algoritma & Pemrograman I(Pascal) by:chairuddin
83
Algoritma & Pemrograman I(Pascal) by:chairuddin
readln(kecepatan);
write('Masukkan waktu dalam jam : ‘);
readln(time)
end;
procedure hitung_jarak;
begin
jarak:= kecepatan *waktu
end;
procedure tampilkan_hasil;
begin
writeln('jarak yang ditempuh adalah ',jarak:5:2,' km.')
end;
begin {program utama}
tampilan_judul;
masukkan_data;
hitung_jarak;
tampilkan_hasil
end.
Output program :
Contoh d.
program Kalkulator_sederhana;
uses wincrt;
84
Algoritma & Pemrograman I(Pascal) by:chairuddin
85
Algoritma & Pemrograman I(Pascal) by:chairuddin
MASUKAN;
case operator of
'*': PERKALIAN;
'/': PEMBAGIAN;
'+': PENJUMLAHAN;
'-': PENGURANGAN;
else salah_tanda := TRUE
end;
if salah_tanda then
writeln('Maaf Tanda Operatornya Salah')
else
writeln(angka_1:4:2,' ',operator,' ',angka_2:4:2,'=',hasil:5:2);
end.
2. Jangkauan Variabel
a. Variabel Global
Variabel global adalah variabel yang didefinisikan/terletak pada program utama, dimana
semua sub-program bisa mengakses, mempergunakan dan memodifikasinya.
b. Variabel Lokal
Suatu procedure dapat mendeklarasikan variabelnya sendiri. Variabel-variabel itu hanya
bekerja pada procedure dimana mereka dideklarasikan. Variabel-variabel tersebut
dinamakan variabel local (local variable)
Keterangan :
• Semua bisa mengakses variabel global A, F, G.
• Pada procedure alfa definisi global variabel A diganti dengan variabel lokal.
• beta_1 dan beta_2 dapat mengakses betamax dan betako.
• beta_1 tidak dapat mengakses variabel boboho, dan beta_2 tidak dapat mengakses bobo.
• Tdak ada subprogram, kecuali alfa dapat mengakses B dan C.
• Procedure beta dapat mengakses alfa dan beta.
Contoh:
86
Algoritma & Pemrograman I(Pascal) by:chairuddin
program LOKAL_VARIABEL;
uses wincrt;
var nomor1, nomor2 : integer;
{ini bisa dipanggil dari mana-mana GLOBAL VAR}
procedure tambah;
var hasil:integer;{hasil merupakan milik procedure tambah LOCAL VAR}
begin
hasil := nomor1 + nomor2;
writeln(‘hasil adalah', hasil)
end;
begin {program utama}
writeln(‘Masukkan dua angka bulat dengan spasi’);
readln(nomor1, nomor2);
tambah
end.
c. Penggunaan Forward
Dari hal di atas kita tahu bahwa suatu subprogram dapat diakses oleh subprogram apabila
sudah didefinisikan terlebih dahulu.
Ada pengecualian, untuk mengatasi masalah chicken-and-the-egg, bila kita memiliki
dua/lebih subprogram masing- masing bisa memanggil yang lain dengan referensi
forward.
Hal ini berlaku juga untuk FUNCTION (fungsi).
3. Procedure Yang Menggunakan Argumen
Procedure juga bisa memakai variabel (data) untuk bekerja ketika dipanggil.
a. Mendeklarasikan variabel di dalam procedure
• Variabel yang diterima oleh procedure diapit dengan tanda kurung ().
• Deklarasi dari variabel terletak diantara nama procedure dan semi-colon.
b. Memanggil procedure and menyampaikan variabel (atau nilai) ke procedure
• Ketika procedure dipanggil, nama procedure diikuti oleh sepasang ().
• Variabel yang dipanggil diletakkan didalam tanda kurung tersebut.
• Variabel ditulis dalam tingkat yang sama seperti dalam prosedur terkait.
87
Algoritma & Pemrograman I(Pascal) by:chairuddin
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
Contoh.
Perhatikan contoh program berikut,
program JUMLAH;
uses wincrt;
var nomor1, nomor2 : integer;
procedure CALC_ANSWER ( kesatu, kedua : integer );
var hasil : integer;
begin
hasil := kesatu + kedua;
writeln('hasil adalah ', hasil )
end;
begin
writeln('masukkan dua angka dalam spasi');
readln( nomor1, nomor2 );
CALC_ANSWER( nomor1, nomor2)
end.
4. Procedure Yang Memakai Parameter
program TestNilai;
uses wincrt;
var x, y : integer;
88
Algoritma & Pemrograman I(Pascal) by:chairuddin
NoEffect( x, y );
writeln( x, y )
end.
Output dari Testnilai adalah:
12
20
12
89
Algoritma & Pemrograman I(Pascal) by:chairuddin
15
15
10
15
b. Parameter Variabel (pass by reference)
Procedure bisa juga dipakai untuk mengubah nilai dari variabel asli yang dipanggil oleh
procedure. Untuk menggambarkannya, kita bisa lihat pada contoh program modifikasi
program sebelumnya. Procedure ini menerima dua nilai integer dan menggantikan nilai
aslinya. Untuk membuat procedure menggunakan parameter variabel (pass by reference)
dengan menggunakan kata kunci var.
program Parameter_Variabel;
uses wincrt;
var x : byte;
procedure foo(var a : byte);
begin
writeln(a); {15}
a:=10;
writeln(a); {10}
end;
begin
x:=15;
writeln(x); {15}
foo(x);
writeln(x); {berubah 15}
end.
Outputnya:
Ketika program dijalankan, akan tercetak di layar
15
15
10
10
90
Algoritma & Pemrograman I(Pascal) by:chairuddin
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
SYNTAX
function Nama (deklarasi variabel):tipe_data_hasil;
begin
:
pernyataan
:
end;
contoh :
function ADD_TWO ( nilai1, nilai2 : integer ) : integer;
begin
ADD_TWO := nilai1 + nilai2
end;
contoh berikut menggambarkan bagaimana memanggil function,
result := ADD_TWO( 10, 20 );
maka, ketika ADD_TWO dieksekusi, dia menghitung nilai yang terdapat di dalamnya
(dalam hal ini 30), yaitu hasil akhirnya.
Contoh
91
Algoritma & Pemrograman I(Pascal) by:chairuddin
program CONTOH_FUNGSI;
uses wincrt;
var angka, jawaban : integer;
function KUBIK( x : integer ) : integer;
begin
KUBIK := x * x * x
end;
begin
writeln('Masukkan angka.');
readln(angka);
jawaban := KUBIK ( number );
writeln('Hasil pangkat tiga dari ',number,' adalah ', answer)
end.
6. Rekursi dan Iterasi
Subprogram bisa memanggil dirinya (Recursive Call) dengan catatan bahwa memiliki
syarat penghentian operasi (iterasi), sehingga perlu dilakukan kehati-hatian dalam
penulisannya. Lihat contoh tentang faktorial suatu bilangan di bawah ini.
Contoh.
Program faktorial;
Uses wincrt;
Var x : integer;
function factorial (n:integer):integer;
begin
if n<2>
Penjelasan
Jika x= 5,maka Pemanggilan
Ke-1, n=5. Factorial:=5*factorial(4); => Perlu Pemanggilan Ke-2
Ke-2 , n=4. Factorial:=4*factorial(3); => Perlu Pemanggilan Ke-3
Ke-3 , n=3. Factorial:=3*factorial(2); => Perlu Pemanggilan Ke-4
Ke-4, n=2. Factorial:=2*factorial(1); => Perlu Pemanggilan Ke-5
Ke-5, n=1. Factorial:=1;
92
Algoritma & Pemrograman I(Pascal) by:chairuddin
93
Algoritma & Pemrograman I(Pascal) by:chairuddin
Record
Record adalah sebuah tipe data yang mengumpulkan beberapa item data di mana
masing-masing tipe data dari item data ini berbeda-beda. Masing-masing item data
ini bisa disebut dengan field.
Mendeklarasikan Record
Masih ingat kuliah mengenai tipe data? Dalam Pascal, semua variabel harus
dideklarasikan sebelum bisa dipakai. Sebagai contoh, kitaingin memakai variabel
dengan nama Nama untuk dimasukkan nilai nama-nama mahasiswa. Kita akan
mendefinisikannya menjadi:var Nama: String[80];
Dari kode di atas kita memberitahukan ke Pascal bahwa kita akan memakai variabel
Nama yang tipe datanya string dan kita alokasikan panjang stringnya 80 karakter.
Nah, dalam Pascal, kita dimungkinkan untuk memiliki judul tipe data yang kita
definisikan sendiri. Misalkan kita ingin mengganti judul tipe data integer dengan
bilanganBulat. Dalam Pascal, kita definisikan ini dengan:
Oke, sekarang kalau memori Anda sudah segar kembali, kita kembali ke
pembahasan record. Untuk mendeklarasikan record, kita memakai reserved word
record, diikuti dengan daftar field dan diakhiri dengan end. Berikut adalah contoh
dari deklarasi sebuah record.
Untuk bisa memakai record ini, kita mendeklarasikan record ke dalam variabel
seperti ini:
94
Algoritma & Pemrograman I(Pascal) by:chairuddin
begin
Write(’Masukkan nama mahasiswa ‘); ReadLn(recordMahasiswa.nama);
Write(’Masukkan NPM ‘); ReadLn(recordMahasiswa.NPM);
Write(’Nilainya berapa ‘); ReadLn(recordMahasiswa.nilai);
WriteLn(’Nama mahasiswa yang Anda masukkan adalah ‘,recordMahasiswa.nama);
WriteLn(’NPM mahasiswa ini adalah ‘,recordMahasiswa.NPM);
WriteLn(’Nilainya adalah ‘,recordMahasiswa.nilai);
end.
Mengetik nama variabel record berulang-ulang seperti tampak dalam contoh di atas
mungkin bisa melelahkan untuk programmer. Oleh karena itu, dalam Pascal ada
statement with yang bisa membantu memudahkan dan menyingkat penulisan kode
program yang menggunakan record. Sehingga kode program di atas bisa disingkat
menjadi berikut:
begin
with recordMahasiswa do begin
Write(’Masukkan nama mahasiswa ‘); ReadLn(nama);
Write(’Masukkan NPM ‘); ReadLn(NPM);
Write(’Nilainya berapa ‘); ReadLn(nilai);
WriteLn(’Nama mahasiswa yang Anda masukkan adalah ‘,nama);
WriteLn(’NPM mahasiswa ini adalah ‘,NPM);
WriteLn(’Nilainya adalah ‘,nilai);
95
Algoritma & Pemrograman I(Pascal) by:chairuddin
end;
end.
FILE (BERKAS)
File adalah kumpulan byte-byte yang disimpan dalam media penyimpanan. Merupakan
komponen yang bertipe data sama, yang jumlahnya tidak tentu, yang dapat ditambah atau
dikurangi jika dibutuhkan.
Pointer file adalah bagian yang menunjuk ke komponen file yang akan diakses (dibaca
atau direkam) untuk keperluan pengaksesan file (akan dibahas kemudian).
File pada Pascal dikenal dalam 3 jenis, yaitu :
1. File Text
2. File bertipe
3. File tidak bertipe
Selain kita akan mempelajari tentang bagaimana membuat sebuah file atau menambahkan
isi suatu file, kita dapat pula melakukan manipulasi File, yaitu :
1. Menggunakan parameter
2. Mengenai Atribut File
3. Menghapus file
4. Mengubah nama file
5. Mengenai tanggal dan waktu file
6. Mencari file
7. Mengecek keberadaan file
8. Memberikan directory file
1. File Text
1.1. Karakteristik
96
Algoritma & Pemrograman I(Pascal) by:chairuddin
nama file : Nama file dalam bentuk string, format 8:3 penamaan dos, ditulis
dalam bentuk string.
5. Menutup file
Close (NmVar);
Dengan:
NmVar : Nama variabel file text
Contoh :
Program membuat_file_text_namafile_HALLO_TXT;
Uses crt;
Var var_teks:TEXT;
Begin
Clrscr;
Assign(var_teks,’Hallo.txt’);
Rewrite(var_teks);
Writeln(var_teks,’Hallo… ini program pertamaku!’);
Writeln(var_teks,’Contoh file teks’);
Writeln(var_teks,’---------------------------------------’);
Close(var_teks);
End.
1.3. Membaca File Text
Urutan Prosesnya :
1. Mendeklarasikan variabel file
Var NmVar:TEXT;
97
Algoritma & Pemrograman I(Pascal) by:chairuddin
4. Menutup file
Close (NmVar);
Contoh :
Program membaca_file_HALLO_TXT;
Uses crt;
Var var_teks:TEXT;
Pesan:string;
Begin
Clrscr;
Assign(var_teks,’Hallo.txt’);
Reset(var_teks);
While not eof (var_teks) do
Begin
Readln ( var_teks, pesan );
Writeln (pesan);
End;
Close(var_teks);
End.
1.4. Menambah isi File Text
Urutan Prosesnya :
1. Mendeklarasikan variabel file
Var NmVar:TEXT;
4. Menampilkannya di layar
Write / writeln (NmVar, data item1, data item 2, …)
5. Menutup file
Close (NmVar);
98
Algoritma & Pemrograman I(Pascal) by:chairuddin
Contoh :
Program menambah_isi_file_HALLO_TXT;
Uses crt;
Var var_teks:TEXT;
Pesan:string;
Begin
Clrscr;
Assign(var_teks,’Hallo.txt’);
Append(var_teks);
Writeln(var_teks,’Ini penambahan data file hallo.txt!’);
Writeln(var_teks,’Contoh file teks’);
Writeln(var_teks,’-----------------------------------------’);
Close(var_teks);
End.
2. File Bertipe
2.1. Karakteristik
99
Algoritma & Pemrograman I(Pascal) by:chairuddin
• Berisi data format biner, ukurannya lebih kecil dari file teks.
• Tiap record memiliki tipe dan panjang yang sama. Bisa saja memiliki berbagai
tipe asalkan dikelompokkan dalam RECORD.
• Dapat diakses secara random, elemen-elemennya bisa dibaca secara acak yang
keberapa saja.
Contoh :
Type DaftarBarang = Array [1..100] of integer;
DataKonsumen = RECORD
Nama :string[15];
Alamat :string[30];
Kode :1..3;
DaftarKonsumen = Array [1..100] of Datakonsumen ;
Var
FileBarang : File of Daftarbarang;
FileJumlah : File of integer;
FileData : File of DataKonsumen;
FileKode : File of Char;
100
Algoritma & Pemrograman I(Pascal) by:chairuddin
Data item1, data item 2 dan seterusnya, harus berupa variabel, tidak bisa dituliskan
secara langsung dalam bentuk konstanta. Variabelnya harus sama dengan deklarasi
tipe file-nya.
Fungsi Writeln dan Readln tidak dapat digunakan pada file bertipe.
5. Menutup file
Close (NmVar);
Seek (VarFile,N);
Menempatkan pointer ke posisi record ke-N
Contoh :
Seek(namafile,4); {pointer akan menunjuk posisi record ke-4, dengan nomor record 3}
FilePOS (VarFile);
Untuk menunjuk nomor record (nomor record dimulai dari record 0)
Contoh :
Posisi:=Filepos(Varfile); {mengetahui posisi pointer aktual di record mana, dan
hasilnya diletakkan pada variabel posisi}.
Filesize(VarFile);
Mengukur besar file bertipe, yaitu mengetahui jumlah record yang berada dalam suatu
file (jika file baru dibuat = 0)
Contoh :
..
Begin
Write(‘input nomor record yang ingin dilihat’);readln(NoRec);dec(NoRec)
If NoRec >=filesize(VarFile) then
Writeln(‘Nomor record terlalu besar’);
Else
begin
seek(VarFile,NoRec); {Pointer menuju nomor record yang dimaksud}
Read(VarFile,data);
End;
..
end.
EOF(VarFile);
Untuk menunjuk akhir dari file.
Truncate(VarFile);
Untuk menghapus sebagian file
Contoh :
Seek(varfile,5); {pointer menuju record nomor 5}
Truncate(VarFile); {menghapus mulai record nomor 5 sampai habis }
101
Algoritma & Pemrograman I(Pascal) by:chairuddin
Program menambah_dan_membuat_file_bertipe
Uses crt;
Type mhs = Record
NPM : string[8];
Nama: string[25];
Alamat : string[20];
End;
Var vfilemhs : FILE of mhs;
Recmhs : mhs;
I : integer;
Oke : char;
Begin
Clrscr;
Assign (vfilemhs,’Dataku.dat’);
{$I-}reset(vfilemhs);{$I+}
if IOResult <>0 then rewrite(vfilemhs);
I:=filesize(vfilemhs);
With recmhs do
Begin
Write(‘NPM :’);readln(NPM);
While NPM <>’ ‘ do
begin
Write(‘Nama :’);readln(Nama);
Write(‘Alamat :’);readln(Alamat);
repeat
Write(‘Save file…(Y/N)?’);readln(oke);
Until oke in [‘Y’,’y’,’n’,’N’];
If oke in [‘Y’,’y’] then
Begin
Seek(vfilemhs,I);
Write(vfilemhs,recmhs);
I:=I+1;
End;
Writeln;
Write(‘NPM:’);readln(NPM);
End;
End;
Close(vfilemhs);
End.
Program_Melihat_file_bertipe
Uses crt;
Type mhs = Record
NPM : string[8];
Nama: string[25];
102
Algoritma & Pemrograman I(Pascal) by:chairuddin
Alamat : string[20];
End;
Begin
Clrscr;
Assign(vfilemhs,’dataku.dat’);
Reset(vfilemhs);
Writeln(‘----------------------------------------------------------------------‘);
Writeln(‘No. NPM Nama Alamat ‘);
Writeln(‘----------------------------------------------------------------------‘);
With recmhs
Begin
For I:=1 to filesize(vfilemhs) do
Begin
Seek(vfilemhs),I-1);
Read(vfilemhs),recmhs);
Writeln(I:2,’ ‘,NPM:8,Nama:25,Alamat:20);
End;
End;
Close(vfilemhs);
End.
Urutan Prosesnya :
1. Mendeklarasikan variabel file
Var NmVar:FILE;
2. Menghubungkan variabel file dengan nama file
Assign (NmVar, nama file);
Dengan :
NmVar : Nama variabel file bertipe
nama file : Nama file dalam bentuk string, format 8:3 penamaan dos, ditulis
103
Algoritma & Pemrograman I(Pascal) by:chairuddin
Program menyalin_file
Uses crt;
Var
Fileasal, filetuju :file;
Besar :real;
Buf :array [1..10240] of char;
Hbaca, Hatulis :word;
nfile1,nfile2 :string;
104
Algoritma & Pemrograman I(Pascal) by:chairuddin
Begin
besar:=0;
clrscr;
write (‘Input nama file asal :’);readln(nfile1);
write (‘Input nama file tujuan :’);readln(nfile2);
{$I-}
Assign(fileasal,nfile1);
Assign(filetuju,nfile2);
Reset(fileasal,1);
If IOResult <>0 then
Begin
Writeln(‘File asal tidak ada !’);
Halt(0);
End;
Rewrite(filetuju,1);
If IOResult <>0 then
Begin
Writeln(‘File tujuan tidak bisa dibuat !’);
Halt(0);
End;
{$I+}
Repeat
Blockread(fileasal,buf,10240,hbaca);
Besar:=besar + hbaca;
Blockwrite(filetuju,buf,hbaca,htulis);
If hbaca <> htulis then
Begin
Writeln(‘Tujuan tidak bisa menampung besar file’);
Halt(0);
End;
Until hbaca <>10240;
Close (fileasal);
Close (filetuju);
Writeln (‘Besar file yang dipindahkan :‘,besar:10:0);
End.
Agar program tidak berhenti, maka harus digunakan Compiler Directive Fungsi I/O result
Untuk pengecekan I/O file tersebut.
105
Algoritma & Pemrograman I(Pascal) by:chairuddin
Bentuk Umum :
{$ Kode Kondisi}
Dengan :
• Kode : Karakter kode, untuk fungsi I/O result adalah I.
• Kondisi : OFF (-) / ON (+)
• Secara default {$I+} => ON
• I/O Result => bernilai 0 jika operasi berhasil
• Isi nilai selalu dihapus sendiri setiap kali dipanggil
• Penulisannya mengapit operasi-operasi yang rentan kesalahan
Contoh :
…
Assign(VarFile, ‘data.dat’);
{$I-}
Reset(VarFile);
{$I+}
fileada := IOResult = 0;
if fileada then
begin
writeln(‘file sudah ada…’);
…
end
else { Kondisi bila file tidak ada }
begin
rewrite(VarFile); { Buat file baru }
…
write (VarFile, var1, var2, …);
…
close(VarFile);
end;
…
5. Manipulasi File
5.1. Parameter
Parameter disebut juga command tail, merupakan informasi tambahan bagi program
utama yang dapat diketikkan sesuai keperluan, untuk menjalankan rutin khusus dalam
program tersebut.
Contoh : program scan.exe
Biasanya dituliskan pada prompt :
C:\scan a: /clean
String ‘a:’ dan string ‘/clean’ merupakan parameter, yang akan membuat scan
program ke drive a dan kemudian menjalankan prosedur CLEAN.
106
Algoritma & Pemrograman I(Pascal) by:chairuddin
Lambang Angka
ReadOnly 1
Hidden 2
SysFile 4
VolumeId 8
Directory 16
Archive 32
Catatan :
1. File yang akan dilihat atau diset atributnya mesti di-assign terlebih dahulu.
2. Kedua perintah ini berada pada unit DOS dan WINDOWS Turbo Pascal, maka perlu
menggunakan ‘Uses DOS’ atau ‘Uses Windows;’ pada deklarasi unit.
107
Algoritma & Pemrograman I(Pascal) by:chairuddin
Erase(nm_var);
Contoh :
Program hapus;
Uses crt;
Var f:file;
Begin
Clrscr;
Assign(f,paramstr(1));
Write( ‘File ‘,paramstr(1));
{$I-}
erase(f);
{$I+}
if IOResult <> 0 then writeln(‘Gagal mengapus’);
else writeln(‘Menghapus sukses …’);
end.
Contoh :
Program Ubah_nama;
Uses crt;
Var f:file;
Begin
Clrscr;
Assign(f,paramstr(1));
Write( ‘File ‘,paramstr(1));
{$I-}
rename(f,ParamStr(2));
{$I+}
if IOResult <> 0 then writeln(‘Gagal mengubah nama’);
else writeln(‘Mengubah nama menjadi ’, ParamStr(2));
end.
108
Algoritma & Pemrograman I(Pascal) by:chairuddin
Year, month,day,hour,min,sec:word;
End;
Setelah dideklarasikan, baru kita dapat mengambil dan menset informasi date dan time
dengan menggunakan perintah :
Dengan :
Nm_var : variabel file yang telah di-assign.
Waktu : waktu yang akan diambil (dalam bentuk LongInt).
Keterangan :
1. Pada saat GetFTime, variabel waktu masih merupakan tipe data sistem(LongInt),
maka perlu diubah terlebih dahulu sebelum ditampilkan, yaitu dengan perintah :
UnpackTime(waktu,var_datetime);
Waktu : dideklarasikan dalam bentuk longint
Var_datetime : variabel dari record datetime.
2. Sebelum melakukan SetFTime, variabel waktu masih merupakan variabel dari record
datetime, maka perlu dikembalikan ke tipe data sistem(LongInt), yaitu dengan
perintah :
PackTime(var_datetime, waktu);
Var_datetime : variabel dari record datetime.
Waktu : dideklarasikan dalam bentuk tipe data sistem (longint).
Findfirst(path,attr,var_searchrec);
FindNext(var_searcRec);
Dengan :
path : file yang akan dicari, dapat diisi dengan wildcard seperti ‘*’ dan ‘?’. Pada unit
DOS menggunakan tipe string. Harus deklarasi unit ‘Uses Dos;’.
Attr : atribut file yang dicari
109
Algoritma & Pemrograman I(Pascal) by:chairuddin
Contoh :
Program cari;
Uses crt,dos;
Var dirinfo :searchrec;
Begin
Clrscr;
Findfirst(paramstr(1),archive,dirinfo);
Writeln (‘File-file yang dicari adalah :’);
While doserror=0 do
Begin
Write(dirinfo.name:15, ‘ ‘);
Writeln(dirinfo.size:10);
Findnext(dirinfo);
End;
End.
110
Algoritma & Pemrograman I(Pascal) by:chairuddin
¾ FExpand
Bentuk umum :
Var_pathstr1 := FExpand(Var_pathstr2);
Dengan :
Var_pathstr1 : hasil dari proses dengan penulisan file secara panjang
Var_pathstr2 : nama file yang akan diperpanjang penulisannya
Fungsi ini tidak mengecek keberadaan file yang dimanipulasinya. Bila file tidak ada,
maka tetap akan menghasilkan path yang sedang aktif.
¾ FileExpand
Bentuk umum :
FileExpand(hasil,file_asal);
Dengan :
Hasil : merupakan hasil proses.
File_asal : nama file yang akan diperpanjang penulisannya.
----------
111