Download - Book 5 : Bahasa Pemrograman Pascal
Bahasa Pemrograman Pascal
Diktat Dasar Komputer dan Pemrograman T. Elektro FTI UAD 56
BAB VII
BAHASA PEMROGRAMAN PASCAL
7.1. Flow Chart (Diagram Alir)
Pada pembuatan suatu program diperlukan perencaaan tentang urutan
proses yang secara logis harus benar. Prencanaan dalam suatu program pada
umumnya meliputi hubungan antara input, proses dan output. Gambaran yang
menyatakan hal tersebut dinamakan flow chart (diagram alir). Untuk membuat
suatu flow chart biasanya dipergunakan simbol-simbol yang sesuai kondisi yang
terjadi. Simbol-simbol atau tanda yang dipakai dalam suatu flow chart untuk
pembuatan program komputer telah ditetapkan sebagai berikut :
Terminal
Input / Output
Proses
Keputusan
Predefined Process
Konektor
Konektor Pindah halaman
Bahasa Pemrograman Pascal
Diktat Dasar Komputer dan Pemrograman T. Elektro FTI UAD
57
Dengan adanya simbol atau tanda ini dimaksudkan untuk memudahkan
dalam memahami alur atau jalannya proses yang ada pada suatu program.
7.2. Bahasa Pemrograman Pascal
Struktur program Pascal dapat dikelompokkan dalam tiga bagian, yaitu:
1. Kepala Program
2. Bagian Deklarasi
3. Bagian Pernyataan/Statemen
Kepala program terdiri dari kata program dan nama program. Kepala program
bisa tidak dituliskan. Bagian deklarasi berisi konstanta dan variabel yang akan
dipakai. Bagian statemen berisi perintah-perintah yang harus harus dikerjakan dan
dimengerti oleh bahasa Pascal.
Program Lingkaran; Uses crt; Const pi=3.14159; Var jarijari, keliling, luas : real; Begin Clrscr; Write('Masukkan jari-jari : '); Readln(jarijari); Keliling := 2*pi*jarijari; Luas := pi*sqr(jarijari); Writeln('Jari-jari =',jarijari:5:2); Writeln('Keliling =',keliling:6:3); Writeln('Luas =',luas:6:3); Readln; End.
Suatu bahasa program komputer biasanya mempunyai aturan penulisan
programnya sendiri. Aturan penulisan program Pascal adalah sebagai berikut;
1. Program Pascal boleh ditulis mulai kolom berapa saja dan diakhiri pada kolom
berapa saja
2. Setiap statemen diakhiri dengan ; (titik koma)
3. Beberapa statemen boleh ditulis sekaligus di dalam satu baris
Kepala Program
Bagian Deklarasi
Bagian Pernyataan
Bahasa Pemrograman Pascal
Diktat Dasar Komputer dan Pemrograman T. Elektro FTI UAD
58
7.3. Percabangan I : If ….. Then …. Else …..
Pernyataan percabangan/kendali/bersyarat merupakan pernyataan yang
akan mengeksekusi suatu pernyataan yang mengikutinya bila suatu persyaratan
dipenuhi.
Salah satu pernyataan kendali untuk pengambilan keputusan dalam Pascal
adalah pernyataan If … Then … Else …
Bentuk umum :
IF kondisi THEN
Statemen 1
ELSE
Statemen 2
dimana :
kondisi : ungkapan boolen yang menghasilkan nilai benar atau salah
statemen 1, statemen 2 : pernyataan-pernyataan tunggal/majemuk. Dalam
Pascal, pernyataan majemuk adalah kumpulan dari beberapa pernyataan yang
diawali dengan kata baku BEGIN dan diakhiri oleh kata baku END, yang
dianggap sebagai sebuah pernyataan tunggal.
Maksudnya : bila kondisi bernilai TRUE (benar) maka akan dikerjakan statemen 1
dan statemen 2 dilewati, sedangkan jika kondisi bernilai FALSE (salah) maka
akan dikerjakan statemen 2 dan statemen 1 dilewati.
Untuk pernyataan IF yang berkalang (ada pernyataan IF yang lain dalam
pernyataan IF), ELSE selalu berpasangan dengan dengan IF yang terletak sebelum
dan yang paling dekat dengan ELSE tersebut, serta terletak dalam blok pernyataan
yang sama.
Contoh 1 : Program untuk mencari akar persamaan kuadrat di bawah ini
Program PersamaanKuadrat; uses crt;
Bahasa Pemrograman Pascal
Diktat Dasar Komputer dan Pemrograman T. Elektro FTI UAD
59
var a,b,c,d,x1,x2 :real; begin clrscr; writeln('Menghitung akar-akar persamaan kuadrat'); writeln('Nilai a,b,c dimasukkan dengan jeda spasi'); write('Masukkan nilai a,b,c:'); readln(a,b,c); d:=b*b-4*a*c; if d<0 then writeln('tidak ada akar real') else begin x1:=(-b+sqrt(d))/(2*a); x2:=(-b-sqrt(d))/(2*a); writeln('x1 =',x1:6:2); writeln('x2 =',x2:6:2); end; readln; end.
Contoh Hasil Eksekusi :
- jika d = 0
Menghitung akar-akar persamaan kuadrat
Nilai a,b,c dimasukkan dengan jeda spasi
Masukkan nilai a,b,c:1 4 2
x1 = -0.59
x2 = -3.41
- jika d < 0 :
Menghitung akar-akar persamaan kuadrat
Nilai a,b,c dimasukkan dengan jeda spasi
Masukkan nilai a,b,c:1 2 6
tidak ada akar real
Catatan :
1. Di dalam IF boleh ada IF (pernyataan IF yang berkalang)
2. Jika diinginkan kondisi = FALSE tidak mengerjakan apa-apa, maka ELSE
tidak perlu dituliskan.
Bahasa Pemrograman Pascal
Diktat Dasar Komputer dan Pemrograman T. Elektro FTI UAD
60
3. Pernyataan ELSE tidak diakhri dengan ; (titik koma) begitu pula baris
pernyataan sebelum ELSE.
7.4. Percabangan II : Case ….. Of …..
Pernyataan CASE …. OF …. Digunakan untuk pengambilan keputusan
jika terdapat lebih dari dua alternatif jawaban yang tersedia.
Bentuk umum :
CASE ungkapan OF
Label 1 : Statemen 1
Label 2 : Statemen 1
………..
………..
………..
Label n : Statemen n
END;
dimana :
ungkapan : dapat berupa sembarang ungkapan yang memberikan hasil
integer, char, boolean atau tipe terbilang (kecuali real).
Label : konstanta yang mempunyai tipe yang sama dengan ungkapan
Statemen : pernyataan yang mengikuti berupa rangkaian instruksi yang
harus dikerjakan jika nilai konstanta dalam label sama dengan
nilai variabel
Maksudnya jika ungkapan bernilai label 1, maka dikerjakan statemen1, jika
bernilai label 2 akan dikerjakan statemen 2 dan seterusnya.
Pernyataan CASE …. OF …. boleh diikuti ELSE. Perlu diketahui, ELSE
dalam pernyataan CASE …. OF …. Hanya bersifat pilihan, dalam artian boleh
Bahasa Pemrograman Pascal
Diktat Dasar Komputer dan Pemrograman T. Elektro FTI UAD
61
disertakan boleh tidak. Jika ELSE disertakan, pernyataan yang mengikuti ELSE
akan dieksekusi hanya bila nilai dari syarat-pemilih tidak ada dalam semua label.
Contoh 1 :
Program nilai_ujian; uses crt; var nama : string[25]; nim : string[8]; nilai: integer; begin clrscr; write('Masukkan nama mahasiswa : '); readln(nama); write('Masukkan nomor induk mahasiswa : '); readln(nim); write('Masukkan nilai ujian : '); readln(nilai); writeln; case nilai div 10 of 10,9 : writeln('Nilai huruf = A'); 8 : writeln('Nilai huruf = B'); 7 : writeln('Nilai huruf = C'); 6 : writeln('Nilai huruf = D'); 5,4,3,2,1,0 : writeln('Nilai huruf = E'); end; readln; end.
Contoh 2 :
Program konversi; uses crt; var menit, jam, kaki, meter, fahrenheit, celcius : real; pilihan :char; begin clrscr; writeln('Pilihan konversi:'); writeln('1) Menit ke jam'); writeln('2) Kaki ke meter'); writeln('3) Derajat Fahrenheit ke Celcius'); write('pilihan ? '); readln(pilihan);
Bahasa Pemrograman Pascal
Diktat Dasar Komputer dan Pemrograman T. Elektro FTI UAD
62
case pilihan of '1' : begin write('menit= '); readln(menit); jam:=menit/60; writeln('nilai ini sama dengan ',jam:4:1,'
jam'); readln; end; '2' : begin write('kaki= '); readln(kaki); meter:=0.3048*kaki; writeln('nilai ini sama dengan ',meter:4:1,'
meter'); readln; end; '3' : begin write('Derajat Fahrenheit = '); readln(fahrenheit); celcius:=5/9*(fahrenheit-32); writeln('nilai ini sama dengan ',Celcius:4
:1,' Celcius'); readln; end; else writeln('Tidak melakukan konversi'); end; end. 7.5. KalanG I : For … To … Do… dan For ... Downto ... Do…
Salah satu ciri bahasa pemrograman adalah adanya perintah-perintah yang
harus dikerjakan berulang-ulang. Pengulangan ini sering disebut dengan kalang.
Dalam bahasa Pascal ada beberapa perintah untuk membuat kalang, yaitu:
FOR … TO … DO… dan FOR … DOWNTO … DO…
Bentuk umum :
FOR pengubah:=ungkapan1 TO ungkapan2 DO
Statemen;
dan
FOR pengubah:=ungkapan1 DOWNTO ungkapan2 DO
Statemen;
Bahasa Pemrograman Pascal
Diktat Dasar Komputer dan Pemrograman T. Elektro FTI UAD
63
dimana,
pengubah : suatu pengubah yang disebut pengubah kendali, dapat berupa
pengenal dari tipe integer, char, boolean atau tipe terbilang.
ungkapan1 : nilai awal pengubah
ungkapan2 : nilai akhir pengubah
Beberapa aturan yang harus dipenuhi :
- Pengubah, ungkapan1 dan ungkapan2 harus mempunyai tipe data yang sama
- Pada kalang TO ungkapan1<ungkapan2
- Pada kalang DOWNTO ungkapan1>ungkapan2
Contoh 1 : Program untuk menghitung jumlah n bilangan pertama dan jumlah
kuadrat n bilangan pertama
Program jumlahKuadrat; Uses crt; Var jumlah, jmlkuadrat,i,n : integer; begin clrscr; Write('Banyak n bilangan yang akan diproses'); readln(n); jumlah:=0; jmlkuadrat:=0; for i:=1 to n do begin jumlah:=jumlah+i; jmlkuadrat:=jmlkuadrat + i*i; writeln('Jumlah ',i:2,' bilangan pertama
= ',jumlah:5); writeln('Jumlah Kuadrat ',i:2,' bilangan pertama
= ',jmlkuadrat:5); end; readln; end.
Contoh 2 : Mencetak abjad dengan urutan terbalik dari z…a
Program tulisabjad; Uses crt; Var karakter : char;
Bahasa Pemrograman Pascal
Diktat Dasar Komputer dan Pemrograman T. Elektro FTI UAD
64
begin clrscr; for karakter:= 'z' downto 'a' do write(karakter:2); readln; end.
Contoh 3 :
Program berikut adalah program untuk menghitung deret eksponensial dan
membandingkan dengan fungsi pustaka EXP.
Deret eksponensial adalah :
.......!
.....!4!3!2
1!
432
0
+++++++== ∑∞
= nxxxx
xnx
en
n
nx
Program eksponensial; uses crt; var eksponen, x,suku : real; n,i : integer; begin clrscr; write('Masukkan banyaknya suku(n): '); readln(n); write('Masukan nilai x : '); readln(x); eksponen:=1.0; suku:=1.0; for i:=1 to n do begin suku:=suku*x/i; eksponen:=eksponen+suku; end; writeln; writeln('Nilai deret = ',eksponen:10:6); writeln('Nilai fungsi = ',exp(x):10:6); readln; end.
Contoh 4 :
Bilangan Fibonacci memiliki rumusan : Fi = Fi-1 + Fi-2
Bahasa Pemrograman Pascal
Diktat Dasar Komputer dan Pemrograman T. Elektro FTI UAD
65
Suku ke-1 merupakan penjumlahan bilangan Fibonacci suku ke-(i-1) dan suku ke-
(i-2), dengan bilangan pada suku pertama dan suku kedua didefinisikan sama
dengan satu.
Program Fibonacci; Uses crt; Var i,n,f,f1,f2 : integer; begin clrscr; writeln('Ingin mencetak bilangan Fibonacci'); write('sampai suku ke-'); readln(n); writeln; writeln('Suku ke- 1 = ',1); writeln('Suku ke- 2 = ',1); f1 :=1; f2:=1; for i:=3 to n do begin f:=f1+f2; writeln('Suku ke- ',i:2,' = ',F:3); f2:=f1; f1:=f; end; readln; end.
7.6. Kalang II : While .… Do…. dan Repeat .... Until ….
Selain membuat kalang dengan FOR….TO.…DO.… dan FOR..…
DOWNTO … DO … ada bentuk kalang yang lebih umum yaitu : WHILE … DO
…. yang bentuk umumnya adalah sebagai berikut :
WHILE kondisi DO
Statemen
dimana,
kondisi : adalah ungkapan boolean yang digunakan sebagai syarat agar
statemen dikerjakan berulang kali
statemen : adalah pernyataan tunggal atau pernyataan majemuk yang akan
diproses ulang.
Bahasa Pemrograman Pascal
Diktat Dasar Komputer dan Pemrograman T. Elektro FTI UAD
66
Contoh 1 : Jumlah deret n bilangan asli pertama
Program Jumlah_Deret; Uses crt; Var n, jumlah, pencacah : integer; begin clrscr; Writeln('Menghitung jumlah 1 + 2 + 3 + ... + n'); write('n = ? '); readln(n); pencacah:=1; jumlah:=0; while pencacah <= n do begin jumlah:=jumlah+pencacah; pencacah:=pencacah + 1; end; writeln; writeln('Jumlah deret = ',jumlah:5); readln; end.
Selain membuat kalang dengan 3 cara di atas masih ada cara lain untuk membuat
kalang, yaitu dengan perintah REPEAT …. UNTIL yang bentuk umumnya adalah
sebagai berikut :
REPEAT
…………
Statemen
………….
UNTIL kondisi
dimana,
statemen : adalah pernyataan tunggal atau pernyataan majemuk yang akan
diproses ulang.
Kondisi : adalah ungkapan boolen sebagai syarat agar pernyataan diproses
ulang.
Bahasa Pemrograman Pascal
Diktat Dasar Komputer dan Pemrograman T. Elektro FTI UAD
67
Catatan : Salah satu statemen diantara repeat dan until harus ada yang bisa
merubah nilai kondisi sehingga kalang bisa berhenti
Contoh 2 : Mengganti kalang WHILE … DO …. Dari contoh 1 dengan kalang
REPEAT …. UNTIL …..
Program Jumlah_Deret; Uses crt; Var n, jumlah, pencacah : integer; begin clrscr; Writeln('Menghitung jumlah 1 + 2 + 3 + ... + n'); write('n = ? '); readln(n); pencacah:=0; jumlah:=0; repeat begin jumlah:=jumlah+pencacah; pencacah:=pencacah + 1; end; until pencacah = n+1; writeln; writeln('Jumlah deret = ',jumlah); readln; end.
Contoh 3 : Program berikut adalah program untuk menghitung deret
eksponensial dan membandingkan dengan fungsi pustaka EXP
dengan kalang WHILE …. DO ….
Deret eksponensial adalah :
.......!
.....!4!3!2
1!
432
0
+++++++== ∑∞
= nxxxx
xnx
en
n
nx
Program eksponensial; uses crt; var eksponen, x,suku : real;
Bahasa Pemrograman Pascal
Diktat Dasar Komputer dan Pemrograman T. Elektro FTI UAD
68
n,i : integer; begin clrscr; write('Masukkan banyaknya suku(n): '); readln(n); write('Masukan nilai x : '); readln(x); eksponen:=1.0; suku:=1.0; i:=1; while i <= n do begin suku:=suku*x/i; eksponen:=eksponen+suku; i:=i+1; end; writeln; writeln('Nilai deret = ',eksponen:10:6); writeln('Nilai fungsi = ',exp(x):10:6); readln; end.
Contoh 4 :
Program untuk menghitung mean dan standar deviasi dari sejumlah data
masukkan non negatif dan berhenti apabila masukkan data adalah -1.
Program Mean_StdDev; Uses crt; Const neg=-1; Var bilangan, total1, total2, mean, std : real; n : integer; begin clrscr; total1:=0.0; total2:=0.0; n:=0; writeln('Masukkan data non negatif, dan untuk mengakhiri masukkan angka -1'); readln(bilangan); repeat n:=n+1; total1:=total1+bilangan; total2:=total2+bilangan*bilangan;
Bahasa Pemrograman Pascal
Diktat Dasar Komputer dan Pemrograman T. Elektro FTI UAD
69
writeln('Masukkan data non negatif, dan untuk mengakhiri masukkan angka -1'); readln(bilangan); until bilangan=neg; mean:= total1/n; std:=sqrt(total2/(n-1)-sqr(total1)/(n*(n-1))); writeln('Mean = ',mean:7:2); writeln('Deviasi Standar = ',std:8:3); readln; end.
7.7. Procedure dan Fungsi
Procedure merupakan bentuk subprogram dalam bahasa Pascal, yaitu
sekelompok statemen yang bisa menjadi bagian dari program / sub program.
Procedure dipakai untuk mengelompokkan bagian program, yang dapat dikerjakan
berkali-kali dengan memanggil namanya saja, sehingga menyederhanakan
struktur program dan mengurangi pengulangan penulisan bagian-baigan program
berkali-kali.
Deklarasi procedure terletak pada bagian deklarasi pada program yang
menggunakannya, dibawah deklarasi VAR pada program utama.
Bentuk umum :
PROCEDURE <nama_procedure> (<daftar parameter formal>);
<Bagian deklarasi variabel lokal>
Begin
<Bagian Pernyataan>
End;
dimana,
pemberian nama procedure : mengikuti aturan perberian nama variabel
daftar parameter formal : bersifat option, boleh ada boleh tidak. Daftar ini
hanya untuk mengontrol komunikasi informasi ke
dan dari procedure tersebut.
Ada 2 tipe parameter formal, yaitu :
Bahasa Pemrograman Pascal
Diktat Dasar Komputer dan Pemrograman T. Elektro FTI UAD
70
1. Parameter perubah, yang mengambil nilai dari parameter aktual dan jika
nilainya berubah, maka nilai parameter aktual juga berubah.
2. Parameter nilai, yang hanya mengambil nilai dari parameter aktual yang sesuai
tanpa mengubah nilainya, meskipun nilai parameter formal ini berubah.
Dalam procedure maupun program utamanya terdapat bagian deklarasi
varibel. Variabel yang dideklarasikan pada program utama disebut variabel global,
yaitu variabel yang dapat diakses pada semua bagian program. Sedangkan pada
procedure dideklarasikan variabel lokal, yaitu variabel yang hanya bisa diakses
oleh bagian program dimana variabel tersebut dideklarasikan.
Sebuah procedure bisa memanggil procedure lain yang telah didefinikan
sebelumnya, kemudian dipanggil pada program utama.
Bentuk umum pemanggilan procedure :
Nama_procedure (daftar parameter aktual);
dimana,
Nama procedure : harus sesuai dengan nama procedure yang digunakan
pada waktu dideklarasikan.
Daftar parameter aktual : berisi nama-nama parameter yang dioperasikan pada
procedure yang dipanggil.
Parameter-parameter aktual ini harus dideklarasikan pada program utama, tidak
boleh berupa konstanta atau ungkapan. Urutan posisi, caca parameter dan tipe data
setiap parameternya harus sesuai dengan parameter formal.
Fungsi mempunyai kegunaan yang hampir sama dengan procedure dengan
sedikit perbedaan, yaitu :
• Fungsi hanya memberikan satu hasil
• Nama fungsi, selain digunakan untuk memanggil fungsi tersebut, juga
dianggap sebagai satu peubah, sehingga dapat digunakan sebagai bagian dari
ungkapan.
• Jika fungsi digunakan, fungsi selalu akan menghitung satu nilai perubah
(dalam hal ini nilai fungsi)
• Dalam fungsi tidak ada istilah parameter perubah, semua parameter dianggap
sebagai parameter nilai.
Bahasa Pemrograman Pascal
Diktat Dasar Komputer dan Pemrograman T. Elektro FTI UAD
71
• Semua parameter diperlukan sebagai masukan pada fungsi tersebut dengan
keluarannya adalah nama fungsi yang bertindak sebagai satu perubah.
Bentuk umum suatu fungsi:
FUNCTION <Nama> (<Daftar parameter formal>) : <Tipe hasil>;
<Bagian Deklarasi>
Begin
<Bagian Pernyataan>
End;
dimana,
Function : kata cadangan Pascal yang memberikan tanda bahwa deklarasi
function dimulai.
Nama : nama fungsi
Daftar parameter formal : nama parameter yang akan dioperasikan di dalam
fungsi.
Tipe hasil : tipe data dari nilai fungsi
Contoh 1 :
Program Pangkat_Rekursif; Uses crt; Var a,z : real; b : integer; Procedure pangkat(x:real; n:integer; var y:real); Var p:real; Begin if n=0 then y:=1 else if n>0 then begin pangkat(x,n-1,y); y:y*x); end
Bahasa Pemrograman Pascal
Diktat Dasar Komputer dan Pemrograman T. Elektro FTI UAD
72
else begin pangkat(x,n+1,y); y:y/x; end; end; begin clrscr; writel('Data A: '); readln(a); writeln; writel('Data B: '); readln(b); writeln; while(a<>0) or (b<>0) do begin writeln; write(a:5:2,' pangkat',b:3'='); pangkat(a,b,z); write(z:5:2); writeln; writeln; write('Data A: '); readln(a); writeln; write('Data B: '); readln(b); writeln; end; write('Tekan <Enter>') readln; end.
Contoh 2 :
Program Jumlahan; Uses crt; Var jum, x : integer; function jumlah(n:integer):integer; Var i,s : integer; begin s:=0; for i:=1 to n do s:=s+i; jumlah:=s; end; begin clrscr; writeln('Masukkan bilangan bulat 1 ...100'); readln(x);
Bahasa Pemrograman Pascal
Diktat Dasar Komputer dan Pemrograman T. Elektro FTI UAD
73
jum:=jumlah(x); writeln; writeln('jumlah',x,'suku pertama deret hitung = '
,jum:6); readln; end. Contoh 3 :
Program Pangkat_Rekursif2; Uses crt; Var a : real; b : integer; function pangkat(x:real; n:integer):real; begin if n=0 then pangkat:=1 else if n>0 then pangkat:=pangkat(x,n-1)*x else pangkat:=pangkat(x,n+1)/x; end; begin clrscr; write('Data A: '); readln(a); writeln; write('Data B: '); readln(b); writeln; while(a<>0) or (b<>0) do begin writeln; write(a:5:2,' pangkat',b:3,'='); write(pangkat(a,b):5:2); writeln; writeln; write('Data A: '); readln(a); writeln; write('Data B: '); readln(b); writeln; end; write('Tekan <Enter>'); readln; end.
Bahasa Pemrograman Pascal
Diktat Dasar Komputer dan Pemrograman T. Elektro FTI UAD
74
7.8. Tipe Data Array
Array merupakan tipe data berstruktur yang berisi sekumpulan komponen /
elemen dengan tipe sama, yang menggunakan identifier yang sama, dengan
masing-masing elemen memiliki indeks tersendiri, yang biasa dinamakan indeks
array. Melalui indeks array ini, setiap elemen dalam array dapat diakses secara
langsung.
Pendefinisian tipe array terdiri dari kata baku ARRAY diikuti dengan tipe-
indeks yang diletakkan dalam tanda kurung siku, kata baku OF dan kemudian
tipe-komponen.
ARRAY[tipe-indeks-1,…..,tipe-indeks-n] OF tipe-komponen
Jumlah tipe- indeks dapat terdiri lebih dari satu. Jika terdapat lebih dari satu tipe-
indeks, maka tipe-indeks yang satu dengan lainnya dipisahkan dengan tanda
koma. Masing-masing tipe dari tipe-indeks dapat berbeda. Perlu diketahui, tipe
dari tipe- indeks dapat berupa sembarang tipe ordinalm kecuali integer. Jadi dapat
berupa tipe cahr, boolean atau tipe skalar buatan dan juga tipe subrange. Tipe-
indeks menyatakan tipe nilai dari indeks array. Tipe-komponen menyatakan tipe
dari elemen yang terdapat dalam array dan dapat berupa sembarang tipe. Contoh
deklarasi tipe array :
TYPE
Buahcatur = (Pion, Gajah, Benteng, PerdanaMenteri, Raja);
Warna=(Putih, Hitam);
Pilihan = ARRAY [warna,1..6] of BuahCatur
Pada contoh di atas, Pilihan mengandung dua tipe indeks, dengan tipe pertama
berupa skalar buatan dan tipe kedua berupa subrange.
Contoh yang lain :
TYPE
Operator = (plus, minus, kali, bagi);
Bahasa Pemrograman Pascal
Diktat Dasar Komputer dan Pemrograman T. Elektro FTI UAD
75
Nilai = 1..0;
Tanda = ARRAY[operator] of integer;
ArrayKar = ARRAY [char] of integer;
VAR
Jumlahtanda : tanda;
Cacahkarakter : arraykar
Vektor : ARRAY[nilai] of String[15]
Contoh pendefinisian tipe array yang salah : (tipe- indeks berupa integer tidak
diperkenankan)
TYPE Nilai = integer;
Daftar = ARRAY[Nilai] OF real;
Array Berdimensi Satu
Array berdimensi satu merupakan array dengan ciri memiliki tipe- indeks
hanya sebuah dan tipe-komponen tidak berupa array. Contoh array berdimensi
satu :
VAR x : ARRAy [1..8] of real;
Menyatakan bahwa indeks-array dari variabel x dapat berupa 1,2,3,…,8 dan isi
array bertipe real. Sedangkan
VAR Huruf : ARRAy [‘A’..”Z’] of integer;
Menyatakan bahwa indeks-array dari variabel Huruf dapat berupa karakter A, B,
C, …, Z dan tipe isi array adalah integer. Ukuran Array x sama dengan 8. Ukuran
Array Huruf sama dengan 26.
Pengaksesan terhadap suatu array, dapat dibedakan dalam dua macam operasi,
yaitu penyimpanan dan pengambilan elemen array. Untuk menjelaskan hal ini,
diambil contoh :
Bahasa Pemrograman Pascal
Diktat Dasar Komputer dan Pemrograman T. Elektro FTI UAD
76
TYPE
DaftarNilai = ARRAY[1..3] OF integer;
VAR
D : DaftarNilai;
Pendeklarasian seperti di atas menginstruksikan kepada compiler supaya
menyediakan 3 lokasi memori untuk menyimpan data integer dari variabel D,
yaitu lokasi dari D[1], D[2], dan D[3]. Jadi masing-masing indeks-array[1..3] dari
D memiliki lokasi penyimpanan tersendiri. Untuk menyimpan suatu nilai ke
dalam lokasi penyimpanan, dapat dilakukan dengan instruksi dengan instruksi
D[i] := nilai, dengan i merupakan indeks-array dan nilai adalah bilangan yang
hendak disimpan di D[i]. Sebagai contoh :
D[1]:=320;
setelah pengeksekusian pernyataan, D[1] bernilai 320.
Untuk mengambil isi array D, misalnya D[1], dapat digunakan instruksi :
Writeln(D[1]);
yang akan menampilkan nilai D[1] pada layar. Contoh lain :
X:=D[1];
memberikan nilai dari D[1] ke variabel X.
Array Multidimensi
Yang termasuk dalam array multidimensi yaitu array yang memiliki lebih
dari satu dimensi. Ciri dari tipe array ini, yakni mempunyai tipe- indeks lebih dari
satu atau tipe-komponen berupa array yang lain. Contoh array dengan tipe-
komponen berbentuk array :
TYPE Matriks2D = ARRAY [1..3] OF ARRAY [1..5] OF integer;
Bahasa Pemrograman Pascal
Diktat Dasar Komputer dan Pemrograman T. Elektro FTI UAD
77
Matriks3D = ARRAY [1..2] OF ARRAY [1..3] OF ARRAY [1..5]
OF char;
Matrik2D mengandung 3 elemen, dengan masing-masing elemen terdiri dari 5
elemen. Dengan kata lain, Matrik2D mempunyai 3 x 5 elemen. Tipe dari elemen
integer. Matrik3D merupakan tipe array yang mengandung 2 x 3 x 5 elemen,
dengan tipe elemen yaitu char. Bentuk seperti Matrik2D dan Matrik3D dapat
disederhanakan menjadi :
TYPE Matriks2D = ARRAY [1..3 ,1..5] OF integer;
Matriks3D = ARRAY [1..2 ,1..3 ,1..5] OF char;
Bentuk penulisan yang lain :
TYPE Matriks2D = ARRAY [1..3] [1..5] OF integer;
Matriks3D = ARRAY [1..2] [1..3] [1..5] OF char;
Tipe seperti Matriks2D dinamakan array berdimensi dua. Sedangkan bentuk
seperti Matriks3D dinamakan array berdimensi tiga. Penggambaran array
berdimensi dua, misalnya untuk variabel yang dideklarasikan :
VAR X : Matriks2D ;
kolom 1 kolom 2 kolom 3 kolom 4 kolom 5
*
Untuk mengakses setiap elemen dari X diperlukan dua buah indeks array.
Indeks-array pertama untuk menunjuk baris, indeks-array kedua untuk
menentukan kolom. Secara umum dapat dituliskan sebagai berikut :
X[ i , j]
Baris 1
Baris 2
Baris 3
Bahasa Pemrograman Pascal
Diktat Dasar Komputer dan Pemrograman T. Elektro FTI UAD
78
Yang menyatakan elemen pada baris idan kolom j. Pada diagram, elemen yang
ditandai dengan * memiliki identitas X[2,3].
Untuk array berdimensi tiga, identitas dari suatu elemen array ditentukan
oleh tiga buah indeks-array. Contoh berikut menunjukkan car membuat isi
keseluruhan elemen array X bernilai nol.
for i := 1 to 3 do
for j := 1 to 5 do
X [ i , j] := 0;
Proses membuat elemen array X sama dengan nol untuk perintah di atas dimulai
dari X[1,1] kemudian X[1,2], X[1,3], X[1,4], X[2,1], X[2,2], X[2,3], X[2,4],
X[3,1], X[3,2], X[3,3], X[3,4], X[4,1], X[4,2], X[4,3] dan terakhir X[4,4]
Contoh 1 :
Program deviasi_standar; { untuk menghitung nilai rata-rata, } { varians dan deviasi standart } uses crt; const maksdata = 25; type arraydata = array[1..maksdata] of real; var i, n : integer; data : arraydata; jumlah, rerata, temp, varians, standev : real; begin clrscr; write('Banyak Data : '); readln(n); writeln; for i:= 1 to n do begin write('Data ke - ',i:2,' = '); readln(data[i]); end;
Bahasa Pemrograman Pascal
Diktat Dasar Komputer dan Pemrograman T. Elektro FTI UAD
79
{menghitung jumlah dan rata-rata data} jumlah :=0; for i:=1 to n do jumlah:=jumlah+data[i]; rerata:=jumlah/n; {menghitung varian dan deviasi standar} temp:=0; for i:=1 to n do temp:=temp+sqr(data[i]-rerata); varians:=temp/n; standev:=sqrt(varians); {cetak hasil} writeln; writeln('Cacah data = ',n:10); writeln('Jumlah data = ',jumlah:10:4); writeln('Nilai rata-rata = ',rerata:10:4); writeln('Varians = ',varians:10:7); writeln('Deviasi standart = ',standev:10:7); readln; end. Contoh 2 :
Program MengurutkanDataString; {untuk mengurutkan data menurut abjad} uses crt; Type MaksString = string[30]; Var i,j,n : integer; temp : MaksString; data : array[1..20] of MaksString; begin clrscr; write('Jumlah Data : '); readln(n); writeln; writeln('Data Semula : '); writeln; for i:=1 to n do begin write(i:2,'. '); readln(data[i]); end;
Bahasa Pemrograman Pascal
Diktat Dasar Komputer dan Pemrograman T. Elektro FTI UAD
80
{proses pengurutan} for i:=1 to n do for j:=1 to n do if data[i] < data[j] then begin temp:=data[i]; data[i]:=data[j]; data[j]:=temp; end; {cetak hasil} writeln; writeln('Data setelah diurutkan : '); writeln; for i:=1 to n do writeln(i:2,'. ',data[i]); readln; end. Contoh 3 :
Program Baca_dan_Cetak_Matriks; uses crt; var i,j, baris, kolom : integer; x : array[1..10,1..10] of real; begin clrscr; {baca data, data dibaca elemen baris per baris} write('Banyak baris (maks = 10) : '); readln(baris); write('Banyak kolom (maks = 10) : '); readln(kolom); writeln; for i:=1 to baris do begin for j:=1 to kolom do begin write('elemen( ',i,',',j,') = '); readln(x[i,j]); end; writeln; end;
Bahasa Pemrograman Pascal
Diktat Dasar Komputer dan Pemrograman T. Elektro FTI UAD
81
{cetak elemen dalam matriks} writeln; writeln('Matriks : '); Writeln; for i:=1 to baris do begin for j:=1 to kolom do write(x[i,j]:8:3); writeln; end; readln; end.
Contoh 4 :
Program Daftar_nama; uses crt; type array_nama = array[1..1000] of string[30]; array_alamat = array[1..100] of string[50]; var i,j : integer; nm : string[30]; nama : array_nama; alamat : array_alamat; begin clrscr; writeln('Tulis nama, jika selesai beri(.) pada
nama'); writeln; j:=0; write('Nama : '); readln(nm); while nm <> '.' do begin j:=j+1; nama[j]:=nm; write('Alamat : '); readln(alamat[j]); writeln; write('Nama : '); readln(nm); end; writeln(' DAFTAR NAMA ALAMAT '); writeln('---------------------------------');
Bahasa Pemrograman Pascal
Diktat Dasar Komputer dan Pemrograman T. Elektro FTI UAD
82
writeln('|No| Nama | Alamat |'); writeln('=================================='); for i:=1 to j do writeln('|',i:3,'|',nama[i]:15,'|',
alamat[i]:21,'|'); write('----------------------------------'); readln; end. 7.9. Record (Rekaman)
Record merupakan salah satu tipe data terstruktur yang terdiri atas
sekumpulan variabel data terstruktur. Tipe data tersebut memungkinkan untuk
memanipulasi sekumpulan elemen data dengan tipe yang tidak sama, yang seolah-
olah merupakan satu obyek. Variabel data terstruktur penyusun record disebut
field (medan).
Record sering digunakan dalam program terutama yang berhubungan
dengan file. Misalnya, sebuah record tentang data seseorang, yang terdiri dari
nama, alamat, umur dan pekerjaan. Semua data tersebut dihimpun dalam satu
record dengan nama, alamat, umur dan pekerjaan sebagai field-fieldnya.
Bentuk umum :
TYPE nama_record = RECORD
nama_field_1 : tipe_data_1;
nama_field_2 : tipe_data_2;
..
..
nama_field_N : tipe_data_N;
END;
VAR pengenal : nama_record;
Contoh :
TYPE penanggalan = RECORD
Tanggal : 1..31;
Bahasa Pemrograman Pascal
Diktat Dasar Komputer dan Pemrograman T. Elektro FTI UAD
83
Bulan : string[9];
Tahun : 1900..2010;
END;
Data = RECORD
NomorMhas : integer;
Nama,
Fakultas : string[20];
END;
VAR
TanggalLahir : Penanggalan;
DataMahasiswa : ARRAY [1..20] of Data
Tanggal, Bulan, Tahun, NomorMhs, Nama dan Fakultas merupakan field
(identifier field). Variabel TanggalLahir merupakan variabel bertipe record, yang
berisi tiga buah field yaitu Tanggal, Bulan dan Tahun. Sedangakan variabel
DataMahasiswa merupakan variabel array dengan tipe komponennya berupa
record yang mengandung 3 buah field (NomorMhs, Nama dan Fakultas )
Masing-masing record dapat diakses secara langsung. Bentuk
pengaksesannya adalah sebagai berikut :
Nama_Variabel_Record.Nama_Medan
Contoh pengaksesan atau pernyataan penugasan yang melibatkan variabel bertipe
record :
a) TanggalLahir.Tanggal :=1;
Artinya : field Tanggal pada variabel TanggalLahir diisi sama dengan 1.
b) DataMahasiswa[13].Nama :=’Bunga Rani’;
Artinya : field Nama dari variabel DataMahasiswa pada indeks array sama
dengan 13 diisi dengan string ‘ Bunga Rani’.
c) DataMahasiswa[i] := DataMahasiswa[i-1];
Artinya : isi seluruh field dari variabel DataMahasiswa [i] diisi dengan isi
field dari DataMahasiswa [i-1]. Pernyataan ini sama artinya dengan :
Bahasa Pemrograman Pascal
Diktat Dasar Komputer dan Pemrograman T. Elektro FTI UAD
84
DataMahasiswa[i].NomorMhs := DataMahasiswa[i-1].NomorMhs;
DataMahasiswa[i].Nama := DataMahasiswa[i-1].Nama;
DataMahasiswa[i].Fakultas := DataMahasiswa[i-1].Fakultas;
d) NamaMahasiswa := DataMahasiswa[2].Nama;
Artinya : isi Nama dari DataMahasiswa[2] disalinkan ke variabel bukan-
record NamaMahasiswa.
Contoh 1 :
Program Perkalian_Bilangan_Kompleks; (**************************************) (* contoh penggunaan record *) (* untuk pengolahan bilangan kompleks *) (**************************************) Uses Crt; Type BilanganKompleks = RECORD Re, Im : real; END; Var Kompleks1, Kompleks2, HasilKali : BilanganKompleks; Begin clrscr; writeln('Bilangan Kompleks Pertama'); Write('Riil, Imajiner ? '); Readln(Kompleks1.Re, Kompleks1.Im); writeln; writeln('Bilangan Kompleks Kedua'); Write('Riil, Imajiner ? '); Readln(Kompleks2.Re, Kompleks2.Im); writeln; {menghitung perkalian bilangan kompleks} HasilKali.Re := Kompleks1.Re * Kompleks2.Re - Kompleks1.Im * Kompleks2.Im; HasilKali.Im := Kompleks1.Re * Kompleks2.Im + Kompleks1.Im * Kompleks2.Re; {cetak hasil} writeln;
Bahasa Pemrograman Pascal
Diktat Dasar Komputer dan Pemrograman T. Elektro FTI UAD
85
write('Hasil kali 2 bilangan kompleks diatas adalah : ');
writeln(Hasilkali.Re:6:2, '+',HasilKali.Im:
6:2, ' i'); writeln('Bagian Riil = ',HasilKali.Re:6:2); writeln('Bagian Imajiner = ',HasilKali.Im:6:2); readln; End.
Contoh 2 :
Program Rerata_Nilai; (***************************************************) (* program untuk membaca nomor, nama dan nilai tes *) (* dari sejumlah siswa, dan untuk menghitung nilai *) (* rata-ratanya serta menampilkan hasil pengolahan *) (* ke layar penampil yang disusun berdasarkan *) (* nilai rata-rata yang tertinggi *) (***************************************************) Uses crt; const JumlahTes = 5; MaksSiswa = 20; Type RekamanSiswa = Record Nomor : integer; Nama : string[20]; nilai : array[1..jumlahtes] of real; rerata: real; End; ArraySiswa = Array[1..MaksSiswa] of RekamanSiswa; Var jumlah : 1..MaksSiswa; i,j : integer; totalnilai : real; siswa : ArraySiswa; temporer : RekamanSiswa; Begin Clrscr; {pemasukan data} write('Jumlah data : '); readln(jumlah); writeln; for i:=1 to jumlah do
Bahasa Pemrograman Pascal
Diktat Dasar Komputer dan Pemrograman T. Elektro FTI UAD
86
begin write('Nomor siswa : '); Readln(siswa[i].nomor); write('Nama siswa : '); Readln(siswa[i].nama); write('Nilai : '); for j := 1 to JumlahTes do begin write(j:2,'. '); read(siswa[i].nilai[j]); end; writeln; writeln; end; {menghitung rata-rata nilai tes masing-masing siswa} for i:=1 to jumlah do begin totalnilai :=0; for j:=1 to jumlahtes do totalnilai := totalnilai + siswa[i].nilai[j]; siswa[i].rerata := totalnilai / jumlahtes; end; {mengurutkan data berdasar nilai rata-rata yang tinggi} for i:=i to jumlah-1 do for j:=i+1 to jumlah do if siswa[i].rerata < siswa[j].rerata then begin temporer := siswa[i]; siswa[i] := siswa[j]; siswa[j] := temporer; end; {mencetak hasil} writeln; writeln('======================================='); writeln('Nomer Nama Nilai'); writeln('Siswa Siswa rata-rata'); writeln('======================================='); for i:= 1 to jumlah do writeln(siswa[i].nomor:5,siswa[i].nama:20, siswa[i].rerata:11:1); writeln('======================================='); readln; readln; end.
Bahasa Pemrograman Pascal
Diktat Dasar Komputer dan Pemrograman T. Elektro FTI UAD
87
Contoh 3 :
Program Rekaman; uses crt; type krs = record nama_mhs : string[20]; no_mhs : integer; kodefak : string[5]; end; var datakrs : array[1..100] of krs; i,jum_mhs,norek : integer; jawab : char; begin clrscr; writeln('Isi rekaman berikut : ! '); write('Ada berapa cacah rekaman ? '); readln(jum_mhs); writeln; for i:=1 to jum_mhs do begin write('Nama Mahasiswa : ');
readln(datakrs[i].nama_mhs); write('Nomor Mahasiswa : ');
readln(datakrs[i].no_mhs); write('Kode Fakultas : ');
readln(datakrs[i].kodefak); writeln; end; jawab:='y'; while(jawab='Y') or (jawab='y') do begin write('Menampilkan rekaman ke berapa : ');
readln(norek); writeln; writeln('Nama Mahasiswa :
',datakrs[norek].nama_mhs); writeln('Nomor Mahasiswa :
',datakrs[norek].no_mhs); writeln('Kode Fakultas :
',datakrs[norek].kodefak); writeln; write('Menampilkan lagi ? (Y/N)'); readln(jawab); end; end.