Anda di halaman 1dari 40

Wahyu Sumantri Sutiar, S.

T SMK PGRI 1 KOTA SUKABUMI

BAB I
STATEMENT-STATEMENT PADA PEMROGRAMAN PASCAL
Reserved Word
Reserved Word adalah kata-kata baku yang digunakan dalam program dan sudah terintergrated
dalam pascal dan juga mempunyai bentuk serta kegunaan tertentu yang telah didefinisikan oleh
Pascal.
Reserved Word tidak boleh didefinisikan kembali oleh pemakai, sehingga tidak dapat digunakan
sebagai pengenal (Identifier). Dalam bahasa pemrograman Pascal,
beberapa Reserved Word dalam Pascal anatra lain:
AND
DOWNTO
IN
OF
STRING
ASM
ELSE
INHERITED
OR
THEN
ARRAY
END
INLINE
PACKED
TO
BEGIN
EXPORTS
INTERFACE
PROCEDURE
TYPE
CASE
FILE
LABEL
PROGRAM
UNIT
CONST
FOR
LIBRARY
RECORD
UNTIL
CONSTRUCTOR
FUNCTION MOD
REPEAT
USES
DESTRUCTOR
GOTO
NIL
SET
VAR
DIV
IF
NOT
SHL
WHILE
DO
IMPLEMENTATION
OBJECT
SHR
WITH
.
Selain dari Reserved Word di atas, Turbo Pascal masih memiliki tambahan Reserved Word berikut:
ABSOLUTE
ASSEMBLER ()
FAR
FORWARD
INDEX
Beberapa Statemen Turbo Pascal
Statemen adalah perintah untuk pengerjaan program pascal. Statemen terletak di bagian deklarasi
statemen dengan diawali oleh kata cadangan BEGIN dan diakhiri dengan kata cadangan END.
Akhir dari setiap statemen diakhiri dengan titik koma [;]. Statemen statemen dalam bahasa Pascal
terdiri dari pernyataan yang berupa fungsi dan prosedur yang telah disediakan sebagai perintah
standar Turbo Pascal.
1. Statemen-statemen yang digunakan untuk input/output.
# Read/Readln [prosedur].
Perintah ini digunakan untuk memasukkan [input] data lewat keyboard ke dalam suatu variabel.
Sintaks: Read/Readln(x); (ingat, selalu diakhiri dengan titik koma [;])
Keterangan : x = variabel.
Read = pada statemen ini posisi kursor tidak pindah ke baris selanjutnya.
Readln = pada statemen ini posisi kursor akan pindah ke baris selanjutnya setelah di input.
# ReadKey [fungsi].
Untuk pembacaan sebuah karakter dari keyboard. Tipe data yang dihasilkan adalah char.
Sintaks: ReadKey;
# Write/Writeln [prosedur].
Digunakan untuk menampilkan isi dari suatu nilai variable di layar.
Sintaks: Write/Writeln(x);
Keterangan : x = variabel.
Write/Writeln= statement ini digunakan untuk mencetak variable ke dalam monitor
Contoh :
Program input;
Uses Crt;
Var nm : String;
npm : String;
Begin
Clrscr;
Writeln ('masukkan nama dan NPM ');
Writeln ('----------------------------------');
Write ('nama anda : ');
Pemrograman Dasar Kelas XI Semester 1 dan 2 |1

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

Readln (nm);
Writeln ('NPM anda : ');
Readln (npm);
End.
Bila dijalankan hasilnya adalah:
masukkan nama dan NPM
-----------------------------nama anda : ( di input )
NPM anda : ( di input )
2. Statemen-statemen yang digunakan untuk pengaturan letak layar.
# ClrScr [prosedur].
Perintah ini digunakan untuk membersihkan layar.
sintaks: ClrScr; [Clear screen]
# GotoXY[prosedur].
Untuk menempatkan posisi kursor pada layar.
Sintaks: GotoXY(X, Y: Byte);
Keterangan : X = sumbu X (posisi horisontal)
Y = sumbu Y (posisi vertikal)
# DelLine [prosedur].
Untuk menghapus sebuah baris pada posisi kursor dan menaikkan baris-baris dibawahnya.
Sintaks: DelLine;
# InsLine [prosedur].
Untuk menyisipkan sebuah baris pada posisi kursor dan menggeser kebawah tampilan-tampilan
baris dibawahnya.
Sintaks: InsLine;
# Delay [prosedur].
Untuk menghentikan sejenak proses program.
Sintaks: Delay (MS: Word);
Keterangan : variable MS = ukuran waktu dalam milisecond.
Contoh :
Program Layar;
Uses Crt;
Var x : Char;
Begin
ClrScr;
GotoXY(35,10);Writeln (I Love Dinda');
Write (tunggu sebentar...!!');
Delay (5000);
InsLine;
GotoXY (35,11);Writeln ('Bayi sehatku');
GotoXY(01,13);Writeln ('Tekan Enter !');
Delay(1000);
GotoXY(15,12);
DelLine;
Read(x);
End.
Hasilnya adalah :
I Love Dinda
Bayi sehatku
tunggu sebentar...!!
Tekan Enter !

Pemrograman Dasar Kelas XI Semester 1 dan 2 |2

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

3. Statemen yang digunakan untuk memanipulasi string.


# ConCat[fungsi].
Untuk menggabungkan 2 atau beberapa variabel string.
Sintaks: ConCat (s1 [,s2,...,sn]: String) : String;
contoh: ConCat ('ABC','DEF') { ABCDEF }
# Copy [fungsi].
Mengambil satu atau beberapa karakter dari sebuah string.
Sintaks: Copy (S,Index,Count) : String;
Keterangan :
S = sebuah string (string).
Index = posisi awal kita akan mengambil beberapa karakter (integer)
Count = banyaknya karakter yang akan diambil (integer).
# Delete [prosedur].
Menghapus sebagian karakter dari sebuah string.
Sintaks: Delete (S,Index,Count);
Keterangan : sama dengan statemen Copy.
# Insert [prosedur].
Menyisipkan satu atau beberapa karakter ke dalam sebuah string.
Sintaks: Insert (Source,var S,Index);
Keterangan : Source = sumber string untuk disisipi (string)
var S = string tujuan yang akan disisipi oleh
string Source (string)
Index = posisi mulai (integer).
# Length [fungsi].
Memberikan nilai panjang dari suatu string (jumlah karakter dalam string).
Sintaks: Length (S);
Keterangan : S = string
Length(S) menghasilkan nilai integer.
# Pos [fungsi].
Mencari posisi sebuah bagian string (substring) didalam sebuah string.
Sintaks: Pos (Substr,S); {menghasilkan nilai Byte}
Keterangan : Substr = substring yang akan dicari posisinya di dalam sebuah string S.
Bila bernilai 0 berarti nilai string yang dicari tidak ada.
# Str [prosedur].
Merubah nilai numerik ke dalam nilai string.
Sintaks: Str (N,S);
Keterangan :
N = data tipe integer,
S = data tipe string.
# Val [prosedur].
Merubah nilai string ke dalam nilai numerik.
Sintaks: Val (S,N,P);
Keterangan :
S = nilai string,
N = nilai real,
P = posisi salah.
Nilai string harus berisi angka, plus atau minus, bila tidak berarti kesalahan dan letak kesalahannya
ditunjukkan oleh variabel posisi salah. Jika benar, maka nilai variabel tsb = 0 (nol).
# UpCase [fungsi].
Memberikan huruf kapital dari argumen.
Sintaks: UpCase (S);

Pemrograman Dasar Kelas XI Semester 1 dan 2 |3

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

Keterangan :
S = variabel bertipe karakter.
Contoh :
Program Man_String;
Uses Crt;
Var s : String;
l : Integer;
h : String;
Const a='Dinda';
b='Bayi ';
c='Sehatku';
Begin
ClrScr;
s:= ConCat (a,b,c);
Writeln (s);
Insert (' & ',s,6);
Writeln(s);
Delete (s,7,7);
Writeln (s);
h:=Copy (s,1,5);
Writeln (h);
l:= Length(s);
Writeln ('Panjangnya string S : ',l);
Writeln ('Posisi "Sehat" pada nilai S : ',POS('Sehat',s));
END.
Hasilnya adalah :
DindaBayiSehatku
Dinda & Bayi Sehatku
Dinda Sehatku
Dinda
Panjangnya string S : 16
Posisi "Sehat" pada nilai S : 7
4. Statemen-statemen untuk perhitungan aritmatik.
# Abs [fungsi].
Memberikan nilai mutlak dari suatu argumen.
Sintaks: ABS(x);
# ArcTan[fungsi].
Memberikan nilai dari fungsi arctangent dari perhitungan goniometri.
Sintaks: ArcTan (x);
dimana x dapat bertipe real atau integer dan akan menghasilkan nilai bertipe real.
# Cos [fungsi].
Memberikan nilai dari fungsi Cosinus.
Sintaks: Cos (x);
# Exp [fungsi].
Menghitung nilai pangkat dari bilangan e (bilangan alam), yaitu sebesar x.
Sintaks: Exp (x);
x dapat bertipe real atau integer dan akan menghasilkan nilai bertipe real.
# Frac [fungsi].
Untuk mendapatkan nilai pecahan dari suatu bilangan.
Sintaks: Frac (x);
Tipe dari x sama seperti yang diatas.

Pemrograman Dasar Kelas XI Semester 1 dan 2 |4

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

# Int [fungsi].
Memberikan nilai integer (bilangan bulat) dari suatu variabel dengan membuang bilangan di
belakang koma.
Sintaks: Int (X);
# Ln [fungsi].
Digunakan untuk menghitung nilai logaritma alam (natural logarithm) dari nilai x.
Sintaks: Ln (x);
# Sin [fungsi].
Memberikan nilai dari fungsi Sinus.
Sintaks: Sin (x);
# Sqr [fungsi].
Digunakan untuk menghitung nilai pangkat kuadrat dari suatu bilangan.
Sintaks: Sqr (x);
Tipe dari x bisa berupa real maupun integer. Dan hasilnya akan sama dengan tipe dari x.
# Sqrt (fungsi).
Digunakan untuk menghitung nilai akar dari suatu bilangan.
Sintaks: Sqrt (x);
Contoh :
Program Aritmatik;
Uses Crt;
Var x : Real;
Begin
Clrscr;
Write('Masukkan nilai dari X = ');
Readln (x);
If x <0 Then x:=Abs (x);
Writeln('Nilai X = ',x:5:2);
Writeln ('Nilai eksponentialnya = ',EXP(x):9:3);
Writeln ('Nilai logaritma alamnya = ',LN(x):9:3);
Writeln ('Nilai integernya = ',INT(x):5:2);
Writeln ('Nilai fraksionalnya = ',FRAC(x):5:2);
Writeln ('Nilai X dipangkatkan = ',SQRT(x):9:3);
Writeln ('Nilai X diakarkan = ',SQRT(x):9:3);
Write('Nilai X jika dimasukkan dalam ');
Writeln('fungsi Sin,Cos,Tangen: ');
Writeln('- Sinus = ',Sin(x):9:3);
Writeln('- Cosinus = ',Cos(x):9:3);
Writeln('- Tangen = ',ArcTan(x):9:3);
End.
Hasilnya :
masukkan nilai dari X = -2.5
Nilai X = 2.50
Nilai eksponensialnya = 12,182
Nilai logarima alamnya = 0,196
Nilai integernya = 2.00
Nilai fraksionalnya = 0.50
Nilai X dipangkatkan = 6.250
Nilai X diakarkan = 1.581
Nilai X jika dimasukkan dalam fungsi Sin,Cos,Tangen:
- Sinus = 0.598
- Cosinus = -0.801
- Tangen = 1.190
5. Statemen-statemen untuk transfer nilai dari suatu variabel.
# Chr [fungsi].
Merubah nilai dari byte ke bentuk karakter yang sesuai dengan kode ASCII.
Pemrograman Dasar Kelas XI Semester 1 dan 2 |5

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

Sintaks: Chr (x);


Keterangan : x bertipe byte
contoh : Writeln (Chr (61));
hasilnya : a
# Ord [fungsi].
Merubah nilai suatu variabel dari bentuk karakter ke bentuk longint.
Sintaks: Ord (x);
Keteranagn : x bertipe char
contoh : Writeln(Ord ('B'));
hasilnya : 42
# Round [fungsi].
Membulatkan data tipe real ke data tipe longint.
Sintaks: Round (x);
Keterangan : Jika nilai pecahan < 0,5 maka dibulatkan kebawah.
Jika nilai pecahan > 0,5 maka dibulatkan keatas.
contoh : Writeln('10/3 dibulatkan = ',Round(10/3));
hasilnya : 10/3 dibulatkan = 3
# TRUNC [fungsi].
Membulatkan kebawah data tipe real ke data tipe longint.
Sintaks: Trunc (x);
contoh :
Writeln('20/3 dibulatkan kebawah = ',Trunc (20/3));
hasilnya : 20/3 dibulatkan kebawah = 6
6. Statemen-statemen untuk memanipulasi data.
# Pred [fungsi].
Memberikan nilai sebelum nilai argumen dalam urutannya dalam ASCII.
Sintaks: Pred (x);
# Succ [fungsi].
Memberikan nilai sesudah nilai argumen dalam urutannya dalam ASCII.
Sintaks: Succ (x);
# Inc[fungsi].
Menambah (increments) nilai suatu variabel.
Sintaks: Inc (x,i); {i >= 1}
# Dec [fungsi].
Mengurangi (decrements) nilai suatu variabel.
Sintaks: DEC(x,i); {i >=1}
Contoh :
Progam Man_Data;
Uses Crt;
Type hari = (hr0,hr1,hr2,hr3,hr4,hr5,hr6,hr7)
Var urutanhr : hari;
Const
namahr : Array [hr1..hr7] of String [6]= ('Senin','Selasa','Rabu','Kamis','Jumat','Sabtu','Minggu');
Begin
Writeln('Daftar Nama Hari);
urutanhr := hr0;
While Urutanhr < hr7 DO
Begin
urutanhr := Succ(urutanhr);
Write('hari ke ',Ord(Urutanhr):2,' adalah ');
Writeln(namahr[urutanhr]);
End;
End.
Pemrograman Dasar Kelas XI Semester 1 dan 2 |6

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

hasilnya adalah :
Daftar Nama Hari
hari ke 1 adalah Senin
hari ke 2 adalah Selasa
hari ke 3 adalah Rabu
hari ke 4 adalah Kamis
hari ke 5 adalah Jumat
hari ke 6 adalah Sabtu
hari ke 7 adalah Minggu
7. Statemen-statemen tambahan (warna,suara dan window).
# TextColor [prosedur].
Untuk mengatur warna dari karakter-karakter di layar.
Sintaks: TextColor (color : Byte);
Catatan : untuk pilihan warna lihat pada buku Turbo Pascal yang anda miliki.
Daftar TextColor :
(2) Hijau Muda
(5) Ungu Tua
(8) Biru Tua
(12) Merah Muda
(15) Ungu Pupus

(3) Hijau pupus


(6) Kuning
(9) Biru Cerah
(13) Ungu Cerah
(16) Hitam

(4) Merah
(7) Putih
(10) Hijau Muda
(14) Kuning Muda

Daftar TextColor dengan Blink :


(17) Biru Tua (18) Hijau Muda
(19) Hijau Pupus
(20) Merah
(21) Ungu Tua
# TextBackGround [prosedur].
Untuk mengatur warna latar belakang dari karakter-karakter di layar.
Sintaks: TextBackGround (Color : Byte);
# Window [prosedur].
Untuk membuat suatu jendela (window) yang terletak pada layar.
Sintaks: Window (x1,x2,y1,y2 : Byte);
x1,x2 = kordinat kiri atas dengan nilai maksimal sesuai dengan mode layar.
y1,y2 = kordinat kanan bawah dengan nilai maksimal sesuai dengan mode layar.
# TextMode [prosedur].
Untuk mengatur lebar layar, 80 kolom atau 40 kolom.
Sintaks: TextMode(Mode: Byte);
Default = C80
# Sound [prosedur].
Untuk mengaktifkan suara (beep) pada internal speaker.
Sintaks: Sound (Hz : word);
Untuk mengnonaktifkannya, gunakan statemen NoSound.
Contoh :
Program Layar2;
Uses Crt;
Begin
ClrScr;
Window (5,5,20,75);
TextBackGround(Red);
TextColor(Yellow);
Sound (220);
GotoXY(10,7);
Writeln('I Love Dinda');
GotoXY(11,7);
Writeln('Bayi Sehatku');
NoSound;
End.
Pemrograman Dasar Kelas XI Semester 1 dan 2 |7

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

Latihan
1. Buatlah program dibawah ini dengan tampilan menggunakan perintah Window, TextColor,
Blink TextColor, Textbackground, GotoXY, dan Sound untuk memperindah tampilan.
a. Mengubah derajat temperatur, dari derajat Celcius ke derajat hreinheit dan Reamur
(derajat Celcius diinput)
b. Menghitung Luas dan Keliling lingkaran, dengan jari-jari diketahui (diinput).
c. Menghitung Luas dan Keliling segitiga sembarang yang diketahui ke tiga sisinya.
d. Mencari nilai Sinus, Cosinus, dan Tangen dengan sudut diinput.
e. Mencari akar dan kuadrat dari suatu nilai (nilai diinput).
f. Mencari nilai bulat dan pecahan dari suatu nilai yang dimasukkan melalui keyboard
(diinput). Nilai pecahan tersebut dibulatkan sampai 3 angka dibelakang koma (,).
g. Tampilkan nama dan NPM anda di dalam window, dan terletak pada tengah-tengah layar.
h. Tampilkan tulisan 'I Love Dinda di dalam window pada pojok
i. kanan atas dengan ukuran window sama dengan tulisan tersebut.
2. Buatlah program pada soal jenis I (no. 1-6) dengan tampilan menggunakan 2 window. Window
yang pertama digunakan untuk nilai yang diinput. Window yang kedua untuk hasil dari program
(output).
3. Buatlah program dibawah ini :
a. Buatlah program untuk menggabungkan 2 buah kata yang diinput.
b. Setiap kata yang diinput harus berada didalam window yang dan asilnya berada pada
window yang berbeda pula.
c. Buatlah program untuk menampilkan window secara acak dengan warna yang berbeda.

Pemrograman Dasar Kelas XI Semester 1 dan 2 |8

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

BAB II
BENTUK PERULANGAN & PENYELEKSIAN KONDISI
Tujuan
1. Memberikan penjelasan mengenai struktur perulangan dengan statement For, termasuk
didalamnya :
1.1. Pengertian dan contoh perulangan statement For Positif.
1.2. Pengertian dan contoh perulangan statement For Negatif.
1.3. Pengertian dan contoh perulangan tersarang (Nested Loop).
2. Memberikan Penjelasan dan contoh mengenai struktur perulangan dengan statement While Do
termasuk didalamnya penjelasan mengenai While-Do tersarang (nested While-Do).
3. Memberikan penjelasan dan contoh mengenai perulangan dengan Statement Repeat-Until
termasuk di dalamnya penjelasan mengenai Repeat Until tersarang .
4. Memberikan penjelasan dan contoh mengenai penyeleksian kondisi dengan :
4.1. Statement If - Then
4.2. Statement If Then - Else
4.3. Statement If tersarang (Nested IF)
4.4. Statement Case - Of
4.5. Statement Case Of - Else
Materi
# 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.
# Perulangan For.
Perulangan dengan statemen For digunakan untuk mengulang statemen atau suatu blok statemen
erulang kali. Perulangan dengan statemen For dapat berupa perunlangan positif dan perulangan
negatif.
# Perulangan For positif
contoh :
perulangan positif untuk satu statement :
Uses Crt;
Var i : Integer;
Begin
For i := 1 To 5 Do Writeln ('I Love Dinda);
END.
Maka bila program diatas dicompile hasilnya :
I Love Dinda
I Love Dinda
I Love Dinda
I Love Dinda
I Love Dinda
Penjelasan : Berati statemen I Love Dinda akan diulang sebanyak 5 kali yaitu dengan menghitung
nilai i dari i ke 1 sampai nilai i terakhir yaitu i ke 5.
# 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
Pemrograman Dasar Kelas XI Semester 1 dan 2 |9

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

For i:= 1 To 10 Do
Begin
Writeln ('I Love Dinda'); { blok statement }
End;
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 kekecil.
Statement yang digunakan adalah For-DownTo-Do
contoh :
Uses Crt;
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

P e m r o g r a m a n D a s a r K e l a s X I S e m e s t e r 1 d a n 2 | 10

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

# Perulangan For tersarang


Perulangan For tersarang adalah perulangan For yang berada pada perulangan yang lainnya.
Perulangan yang lebih dalam akan diproses terlebih dahulu sampai habis, kemudian perulangan
yang lebih luar baru akan bertambah, mengerjakan perulangan yang lebih dalam lagi mulai dari
nilai awalnya dan seterusnya.
Contoh :
Var a,b : Integer;
Begin
For a := 1 To 3 Do
Begin
For b := 1 To 2 Do Write (a :4,b:2);
Writeln;
End;
End.
Hasil :
11
12
21
22
31
32
# 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
# Perulangan While Do tersarang
Perulangan While Do tersarang (nested While - Do) merupakan perulangan While Do yang satu
di dalam perulangan While Do yang lainnya.
Contoh :
Uses Crt;
Var a, b : Integer;
Begin
ClrScr;
a:=1;
b:=1;
While a < 4 Do{ loop selama a masih lebih kecil dari 4 }
Begin
a := a+1;
While b < 3 Do{ loop selama b masih lebih kecil dari 3 }
Begin
Write (a:3,b:2);
b:=b+1;
End;
End;
P e m r o g r a m a n D a s a r K e l a s X I S e m e s t e r 1 d a n 2 | 11

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

Readln;
End.
# Perulangan Repeat - Until.
Repeat Until digunakan untuk mengulang statement-statemen atau blok statement sampai (Until)
kondisi yang diseleksi di Until tidak terpenuhi.
Sintak dari statement ini adalah :
Contoh :
Var i : Integer;
Begin
i:=0;
Repeat
i:= i+1;
Writeln (i);
Until i=5;
End.
hasil :
1
2
3
4
5
# Repeat Until tersarang
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 }
......
......
P e m r o g r a m a n D a s a r K e l a s X I S e m e s t e r 1 d a n 2 | 12

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

End
Else{ jika kondisi tidak terpenuhi, yaitu jika pilhan tidak sama dengan 2}
Begin
.......
.......
End;
Contoh Program :
Uses Crt;
Var 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.
# If tersarang (nested If)
Struktur If tersarang merupakan bentuk dari suatu statement If berada di dalam lingkungan
statemen If yang lainya. Bentuk statement If tersarang sebagai berikut :
If kodisi1 Then
If kondisi2 Then
statemen1
Else
statemen2;

atau

If Kondisi1 Then
Begin
IF kondisi2 Then
statemen1
Else
statemen2
End;

# 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.
Bentuk struktur dari Case - Of:
Case Variabel Kondisi Of
Case Label 1; Statement 1;
Case Label 2; Statement 2;
Case Label 3; Statement 3;
Case Label 4; Statement 4;
........
........
Case Label n ; Statement n ;
End ; { end dari case }
Daftar Case label dapat berupa konstanta, range dari konstanta yang bukan bertipe real.
Contoh program ;
Program nilai;
Var nil : Char ;
Begin
Write ('Nilai Numerik yang didapat :');
Readln (nil);
Case nil Of
'A': Writeln ('Sangat Baik);
'B': Writeln('Baik);
P e m r o g r a m a n D a s a r K e l a s X I S e m e s t e r 1 d a n 2 | 13

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

'C': Writeln('Cukup');
'D': Writeln('Kurang');
'E': Writeln('Sangat Kurang');
End;
End.
hasil :
Nilai Numerik yang didapat : B
Baik
Contoh Listing Program untuk Dicoba
1. Program input data dengan array.
Program Pemakaian_Array_Untuk_10_data_dengan_menggunakan_For;
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;
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 }
P e m r o g r a m a n D a s a r K e l a s X I S e m e s t e r 1 d a n 2 | 14

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

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.
2. Program jendela bergerak.
Program Window_Bergerak_dgn_delay;
Uses Crt;
Var i : Integer;
Begin
For i:=1 To 15 Do
Begin
Sound (i*100);
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
P e m r o g r a m a n D a s a r K e l a s X I S e m e s t e r 1 d a n 2 | 15

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

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;
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 .

P e m r o g r a m a n D a s a r K e l a s X I S e m e s t e r 1 d a n 2 | 16

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

BAB III
PROCEDURE
Prosedur adalah suatu program terpisah dalam blok sendiri yang berfungsi sebagai subprogram
( program bagian ). Parameter pada procedure ada 2 :
Bentuk Umum :

PROGRAM Judul_Program ;
PROCEDURE judul_prosedur ;
Begin
.............
End ;
BEGIN
..............
END.
Parameter didalam prosedur terdiri dari 2 yaitu :
a. Parameter bersifat Lokal artinya bahwa nilai yang terdapat didalam suatu modul program
hanya dapat digunakan pada modul yang bersangkutan sehingga tidak dapat digunakan pada
modul lain.
b. Parameter bersifat Global artinya bahwa nilai dapat digunakan pada semua modul maka nilai
tersebut harus dideklarasikan di atas modul yang akan menggunakannya.
Contoh : Parameter Lokal
Procedure Hitung ;
Var
X, Y : real ;
Begin
Write ( Nilai X ? ) ;
readln ( X ) ;
Y:=X*X;
Writeln ( Nilai Y ? , Y :1: 0 ) ;
End ;
BEGIN
Hitung ;
END.

Contoh : Paramater Global


Var
X, Y : Byte ;
Procedure Tambah ;
Begin
Write ( Input Nilai : ) ;
readln ( X ) ;
Y: =A+A;
End ;
BEGIN
Tambah ;
Writeln ( Nilai Y = , Y ) ;
Readln;
END.

Pemanggilan parameter pada prosdur terdiri dari 2 yaitu :


a.
Parameter Secara Nilai ( By Value )
Bersifat satu arah, jika terjadi perubahan pada subprogram, maka tidak akan mempengaruhi
program utama.
b.
Parameter Secara Acuan ( By Reference )
Bersifat dua arah, jika terjadi perubahan pada subprogram, maka program utamanya akan ikut
berubah.

P e m r o g r a m a n D a s a r K e l a s X I S e m e s t e r 1 d a n 2 | 17

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

Contoh : By Value
Uses crt ;
Procedure Hitung (A,B :integer );
Var
C : integer;
Begin
C : = A+ B ;
Writeln ( Nilai C = , C ) ;
End ;

Contoh : By Reference
Uses crt ;
Procedure Hitung ( Var A, B, C : integer ) ;
Begin
C : = A+B ;
End ;
Var

Var
X,Y : integer ;
BEGIN
Write ( Nilai X : ) ; readln ( X ) ;
Write ( Nilai Y : ) ; readln ( Y ) ;
Hitung ( X, Y ) ;
Readln ;
END.
Contoh Program Prosedure Standar
Uses Crt;
Const Bsi='Bina Sarana';
Begin
Clrscr;
Writeln(Copy(Bsi,6,4));
Writeln(Pos('Sarana',Bsi));
Writeln(Length(Bsi));
Writeln(Concat(Bsi,' Informatika'));
Readln;
End.

X, Y, Z : integer ;
BEGIN
X:=2;
Y:=3;
Hitung ( X, Y, Z ) ;
Writeln ( X = , X, Y= , Y, Z = , Z ) ;
Readln ;
END.

mengambil sebagian dari string


mencari posisi string
panjang string
mengabungkan string

P e m r o g r a m a n D a s a r K e l a s X I S e m e s t e r 1 d a n 2 | 18

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

BAB IV
FUNGSI
Fungsi secara garis besar sama dengan prosedure baik parameter maupun pemanggilan
parameternya hanya yang membedakannya adalah nama fungsi harus dideklarasikan dengan type
datanya.
Bentuk Umum :

Function Identifier ( daftar_ parameter ) : type data ;


Contoh :
Uses crt ;
Function Hitung ( Var A, B : integer ) : integer ;
Begin
Hitung : = A+B ;
End ;
Var
X, Y : integer ;
BEGIN
Write ( Nilai X ? ) ; readln ( X ) ;
Write ( Nilai Y ? ) ; readln ( Y ) ;
Writeln ;
Writeln ( X, + , Y , =, Hitung ( X, Y )) ;
Readln ;
END.

Bagian Fungsi

Program Utama

Parameter pada fungsi sama dengan parameter yang ada pada prosedure yaitu :
a. Pemanggilan secara Nilai ( By Value )
Contoh :
Uses crt ;
Function Hitung ( X, Y, Z : integer ) : integer ;
Begin
Z : = X+Y ;
Writeln ( Nilai X = , X ) ;
Writeln ( Nilai Y = , Y ) ;
Writeln ( Nilai Z = , Z ) ;
End ;
Var
A, B, C : integer ;
BEGIN
A:=5;B:=7;C:=3;
Hitung ( A, B, C ) ;
Writeln ( Nilai A =, A, Nilai B = , B, Nilai C = , C ) ;
Readln ;
END.
c. Pemanggilan secara Reference ( Acuan )
Contoh :
Uses crt ;
Function Hitung ( var A, B, C : integer ) : integer ;
Begin
Hitung : = A+B ;
C : = A* B ;
End ;
Var
X, Y, Z : integer ;
BEGIN
Write ( Nilai X : ) ; readln ( X ) ;
Write ( Nilai Y : ) ; readln ( Y ) ;
Writeln ;
Writeln ( X , + , Y, =, Hitung ( X, Y, Z )) ;
P e m r o g r a m a n D a s a r K e l a s X I S e m e s t e r 1 d a n 2 | 19

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

Writeln ( X, * ,Y, =, Z ) ;
Readln ;
END.
Contoh Function Standar Aritmatika & Transfer
Uses Crt;
Const
A=2;
B=-2;
C=4;
D=2.5;
E=2.3; F=2.7;
G='A';
Begin
Clrscr;
Writeln('Absnya
: ',A, '=' ,Abs(A));
Writeln('Absnya
: ',B, '=' ,Abs(-B));
Writeln('Expnya
: ',A, '=' ,Exp(A));
Writeln('Lnnya
: ',A, '=' ,Ln(A));
Writeln('Sqrnya
: ',A, '=' ,Sqr(A));
Writeln('Sqrtnya
: ',C,'=' ,Sqrt(C));
Writeln('Pinya
: ',Pi);
Writeln('Intnya
: ',D, '=' ,Int(D));
Writeln('Truncnya
: ',D, '=' ,Trunc(D));
Writeln('Fracnya
: ',D, '=' ,Frac(D));
Writeln('Roundnya
: ',E, '=' ,Round(E));
Writeln('Roundnya
: ',F, '=' ,Round(F));
Writeln('Ordnya
: ',G, '=' ,Ord(G));
Writeln('Chrnya
: ',A, '=' ,Chr(67));
Readln;
End.

Argumen Mutlak
Eksponensial Argumen
Logaritma Natural Argumen
Kuadrat Argumen
Akar Argumen
angka Pi=3.14
bagian bulat angka real
bagian bulat angka real
bagian pecahan real
bulatkan angka real
Character ke ordinal
ordinal ke character

Contoh Dengan Format


Uses Crt;
Const
A=2;
B=-2;
C=4;
D=2.5;
E=2.3; F=2.7;
G='A';
Begin
Clrscr;
Writeln('Absnya
: ',A, '=' ,Abs(A));
Writeln('Absnya
: ',B, '=' ,Abs(-B));
Writeln('Expnya
: ',A, '=' ,Exp(A):5:2);
Writeln('Lnnya
: ',A, '=' ,Ln(A):5:2);
Writeln('Sqrnya
: ',A, '=' ,Sqr(A));
Writeln('Sqrtnya
: ',C,'=' ,Sqrt(C):1:0);
Writeln('Pinya
: ',Pi:4:2);
Writeln('Intnya
: ',D:3:1, '=' ,Int(D):1:0);
Writeln('Truncnya
: ',D:3:1, '=' ,Trunc(D));
Writeln('Fracnya
: ',D:3:1, '=' ,Frac(D):3:1);
Writeln('Roundnya
: ',E:3:1, '=' ,Round(E));
Writeln('Roundnya
: ',F:3:1, '=' ,Round(F));
Writeln('Ordnya
: ',G, '=' ,Ord(G));
Writeln('Chrnya
: ',A, '=' ,Chr(67));
Readln;
End.

P e m r o g r a m a n D a s a r K e l a s X I S e m e s t e r 1 d a n 2 | 20

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

BAB V
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. 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;
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
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 :

P e m r o g r a m a n D a s a r K e l a s X I S e m e s t e r 1 d a n 2 | 21

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

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;
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;
I. Deklarasi Type Indeks Skalar
Indeks dari larik dapat berupa tipe skalar.
Contoh. :
Program Deklarasi_Indeks_Array_Skalar;
Uses Crt;
Var Jum : Array[(jan,feb,mar,apr,mei)] of Integer;
Begin
Jum[jan]:=25;
Jum[feb]:=45;
Jum[mar]:=21;
Jum[apr]:=23;
Jum[mei]:=50;
Writeln('Jumlah nilai bulan maret =',Jum[mar]);
Readln;
End.
dapat juga ditulis :
type Bln = (jan,feb,mar,apr,mei);
Var Jum : Array[bln] of Integer;
atau :
type Bln =(jan,feb,mar,apr,mei);
Var Jum : Array[jan..mei] of Integer;

P e m r o g r a m a n D a s a r K e l a s X I S e m e s t e r 1 d a n 2 | 22

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

II. Deklarasi Konstanta Array


Array tidak hanya dapat berupa suatu varibel yang dideklarasikan di bagian deklarasi variabel,
tetapi dapat juga berupa konstanta (const).
Contoh Program :
Program Contoh_Deklarasi_Array_Konstan;
Uses Crt;
Const Tetap : Array[1..4] of Integer=(7,10,21,20);
Var i : Integer;
Begin
For i:= 1 to 4 Do
Writeln('Nilai Konstan array ke ',i:2,' =',Tetap[i]);
Readln;
End.
konstanta array dapat juga berupa ketetapan dalam bentuk karakter seperti berikut.
Contoh Program :
Program Contoh_Konstan_Array_Char_;
Uses Crt;
Const Huruf : Array[0..5] of Char=('A','B','C','D','E','F');
Var
i : Integer;
Begin
For i:= 0 to 5 Do
Writeln('Nilai konstan array ke',i:2,' = ',Huruf[i]);
Readln;
End.
Konstanta array dapat juga berupa string seperti berikut ini.
Contoh Program :
Program Constanta_Array_String;
Uses Crt;
Type A = Array [1..5] of String;
Const Nama : A = ('basic','pascal','cobol','paradox','dbase');
Var i : Integer;
Begin
For i:= 1 to 5 Do
Writeln('Nilai Array ke-',i:2,'= ',Nama[i]);
readln;
end.
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.
contoh program bilangan prima dengan menggunakan bantuan array.
Contoh program :
Program Mencari_Bilangan_Prima_Dengan_Array;
Uses Crt;
Var Prima : Array[1..100] of Integer;
i,j : Integer;
bil : Integer;
Begin
P e m r o g r a m a n D a s a r K e l a s X I S e m e s t e r 1 d a n 2 | 23

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

ClrScr;
For i := 2 to 100 Do
Begin
Prima[i]:=i;
For j:= 2 to i-1 Do
Begin
bil := (i mod j); {* i dibagi j dicek apakah 0*}
If bil = 0 then Prima[i]:=0; {*jika habis dibagi,berarti bkn prima*}
End;
If Prima[i]<> 0 Then Write(Prima[i],' '); {*cetak array yg prima*}
End;
Readln;
End.
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;
Write('mau isi berapa data acak (integer) ='); readln(n);
For i := 1 to n Do
Begin
Write('Data Ke ',i,':');Readln(nil1[i]);
End;
{* penyapuan proses}
for i:= 1 to n-1 do
begin
for j:= i to n do
begin
if nil1[j]<nil1[i] then
begin
dum:=nil1[j];
nil1[j]:=nil1[i];
nil1[i]:=dum;
end;
end;
end;
writeln;
writeln('Hasil Sortir');
for i := 1 to n do
write(nil1[i]:3);
readln;
end.
III. Array Dua Dimensi
Di dalam pascal Array dapat berdimensi lebih dari satu yang disebut dengan array dimensi banyak
(Multidimensional array), disini akan dibahas array 2 dimensi saja. Array 2 dimensi dapat mewakili
suatu bentuk tabel atau matrik, yaitu indeks pertama menunjukkan baris dan indeks ke dua
menunjukkan kolom dari tabel atau matrik.
12
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;
P e m r o g r a m a n D a s a r K e l a s X I S e m e s t e r 1 d a n 2 | 24

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

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.
IV. Alternatif Deklarasi Array Dua Dimensi.
Ada beberapa cara dalam mendeklarasikan array dua dimensi, beberapa cara tersebut dapat dilihat
dibawah ini :
Contoh :
Var Tabel : Array[1..3] of Array[1..2] of Byte;
atau :
Type Matrik = Array[1..3,1..2] of Byte;
Var Tabel : Matrik;
atau :
Type Baris = 1..3;
Kolom = 1..2;
Matrik = Array[Baris,Kolom] of Byte;
Var Tabel : Matrik;
atau :
Type Baris = 1..3;
Kolom=1..2;
Matrik= Array[Baris] of Array[Kolom] of Byte;
Var Tabel : Matrik;
Dibawah ini akan diberikan listing program penggunaan array dua dimensi dalam aplikasi
penjumlahan matrik :
Contoh Prorgam:
Program Penjumlahan_Matrik;
Uses Crt;
Var Matrik1,Matrik2, Hasil : Array[1..3,1..2] of Integer;
i,j : Integer;
Begin
ClrScr;
{ input matrik ke satu }
Writeln(' Elemen matrik satu');
For i := 1 to 3 Do
Begin
For j := 1 to 2 Do
Begin
Write('Elemen baris -',i,' Kolom -',j,'= ');
Readln(matrik1[i,j]);
P e m r o g r a m a n D a s a r K e l a s X I S e m e s t e r 1 d a n 2 | 25

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

End;
End;
{input matrik ke dua}
Writeln('input elemen matrik dua');
For i:= 1 to 3 Do
Begin
For j:= 1 to 2 Do
Begin
Write('Elemen baris -',i,' kolom -',j,'= ');
Readln(matrik2[i,j]);
End;
End;
{proses penjumlahan tiap elemen}
For i := 1 to 3 Do
Begin
For j:= 1 to 2 Do
Begin
Hasil[i,j]:=Matrik1[i,j]+Matrik2[i,j];
End;
End;
{proses cetak hasil}
For i:= 1 to 3 Do
Begin
For j:= 1 to 2 Do
Begin
Write(Hasil[i,j]:6);
End;
Writeln;
End;
Readln;
End.
V. Array Sebagai Parameter
Array dapat digunakan sebagai parameter yang dikirimkan baik secara nilai (by value) atau secara
acuan (by reference) ke procedure atau ke function. Procedure yang menggunakan parameter
berupa array harus dideklarasikan di dalam judul procedure yang menyebutkan parameternya
bertipe array.
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';
P e m r o g r a m a n D a s a r K e l a s X I S e m e s t e r 1 d a n 2 | 26

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

Ket :='Istimewa';
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
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;
End.

P e m r o g r a m a n D a s a r K e l a s X I S e m e s t e r 1 d a n 2 | 27

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

BAB VI
RECORD
Adalah kumpulan item data (field) yang masing-masing dapat mempunyai tipe data yang beda
Contoh
Type
Lgn= Record
Kode : integer;
Nama : string[35];
Piutang : real;
End;
Var Langganan : Lgn;
Menggunakan Tipe Data Record
Tiap-tiap komponen field dari record dapat dipergunakan dengan cara menuliskan
Pengenalrecord.pengenalfield
Contoh
Langganan.Nama := Maulana ;
PengenalField
PengenalRecord
Penulisan statemen diatas dapat menyebabkan statement menjadi panjang
Contoh lain :
Lingkaran.Keliling := 2 * Pi * JariJari ;
Menggunakan Statemen With Do menjadi :
With Lingkaran Do
Begin
Keliling := 2 * Pi * JariJari ;
End;
Contoh :
Uses Crt;
Type
Recsis = Record
Nama : string[15];
Nu
: byte;
End;
Var DataSis : Array[1..10] of RecSis;
X, JD : Byte ;
Pred : String[6] ;
BEGIN
CLRSCR ;
Write( Jumlah Data : ) ; Readln(JD) ;
For X := 1 To JD Do
Begin
Write( Nama Siswa : ) ; ReadLn(Datasis[x].Nama) ;
Write( Nilai Ujian : ) ; ReadLn(Datasis[x].Nu) ;
End;
For X := 1 To JD Do
Begin
With Datasis[X] Do
Begin
IF Nu > 60 Then Pred := Lulus ;
Else Pred := Gagal ;
WriteLn(X, , Nama:10, ,Nu:2, , Pred:6);
End;
End;
ReadLn;
END.
P e m r o g r a m a n D a s a r K e l a s X I S e m e s t e r 1 d a n 2 | 28

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

BAB VII
FILE
Suatu File terdiri dari urutn komponen yang mempunyai tipe sama. Berbeda dengan larik yang
jumlah komponennya sudah pasti, jumlah komponen dalam file sifatnya luwes, yaitu dapat
ditambah dan dikurangi sewaktu-waktu
File Teks
Merupakan file yang berisi kumpulan dari karakter yang dibentuk dalam baris-baris dan masingmasing baris diakhiri dengan tanda akhir dari baris berupa karakter carriage return dan karakter line
feed. File teks sebenarnya merupakan file dengan tipe char; tetapi mempunyai perbedaan, yaitu
nilai yang bukan tipe char dapat direkam dan dibaca oleh File Teks
Prosedur Standar File Teks
Append
: digunakan untuk membuka file yang telah ada untuk keperluan menambah data
ke dalam file
Write
: digunakan untuk merekam data ke file
Flush
: digunakan untuk segera merekam data yang ada di buffer ke file Teks
Read
: untuk membaca satu atau lebih nilai dari file ke dalam satu atau lebih variabel
SetTextBuf : digunakan untuk membuat buffer yang baru sebagai pengganti dari internal
buffer untuk file variabel
Fungsi Standar File Teks
EoLn
: untuk mengetahui apakah posisi dari file berada di end-of-line marker atau tidak
SeekEOF
: untuk menghasilkan status akhir dari File
SeekEoLn
: untuk menghasilkan status akhir baris
Contoh :
Uses Crt ;
Label a,b ;
Var
Vfbarang : text ;
Nabrg
: string [20 ];
Hrg
: longint ;
Jml
: integer ;
X, y
: byte ;
Ttl, gth
: longint ;
Lagi
: char ;
Pil
: byte ;
BEGIN
A:
Clrscr ;
Writeln ( MENU PILIHAN FILE TEXT ) ;
Writeln ( 1. Rekam Data File Baru ) ;
Writeln ( 2. Tambah Data File ) ;
Writeln ( 3. Lihat Data ) ;
Writeln ( 4. Exit ) ;
Write ( Silakan Pilih Menu [ 1/2/3/4 ] : ); readln ( pil ) ;
Case pil of
1..2 : begin
Assign (vfbarang,barang.txt ) ; { variabel file barang }
IF pil =1 then
Rewrite ( vfbarang )
Else
Append (vfbarang ) ;
Lagi : = Y ; X : = 0 ;
While (lagi =Y) or (lagi = T) do
begin
write ( Nama Barang : ) ; readln ( nabrg );
write ( Harga Barang : ) ; readln ( hrg ) ;
write ( Jumlah Barang : ) ; readln ( jml ) ;
write ( vfbarang, nabrg:1 5 , hrg : 10, jml : 4 ) ;
P e m r o g r a m a n D a s a r K e l a s X I S e m e s t e r 1 d a n 2 | 29

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

write ( Isi Data Lagi [ Y/T ] : ) ; readln ( lagi ) ;


end ;
close (vfbarang) ;
goto a ;
end ;
end;
begin
Assign ( vfbarang , barang.txt ) ;
Reset ( vfbarang ) ;
Writeln(
DATA PENJUALAN BARANG
) ;
Writeln(**************************************** ) ;
Writeln(No Nama Barang
Harga Jumlah Total ) ;
Writeln(*************************************** ) ;
{ proses dan cetak data detail }
y : = 0 ; fth : = 0 ;
While not eof ( vfbarang ) do
Begin
Read ( vfbarang, nabrg, hrg, jml ) ;
Total : = hrg * jml ;
gth : = gth + ttl ;
Inc ( y) ;
Write (y, ,nabar:15, ,hrg:7, ,jml:3, ,ttl) ;
End ;
{ garis penutup subtotal }
Writeln(**************************************** ) ;
Writeln (Grand Total:
Rp. , gth ) ;
Writeln(**************************************** ) ;
Close(vfbarang ) ;
Readln ;
goto a ;
end ;
Goto b ;

4 :
End ;
Readln ;
b:
END.
File Bertipe
Berbeda dengan file teks yang hanya dapat diakses secara urut, file bertipe disamping dapt pulajuga
diakses secara urut(sequential acces, dapat juga diakses secara aaak (randam access). Dan Tipe dari
file bertipe dapat berupa tipe integer, real, char, string array, record
Write
Read
Seek

:
:
:

Trunccate

FileSize

digunakan untuk merekam satu atau lebih nilai ke dalam file


digunakan untuk membaca atau lebih, nilai dari file
Digunkan untuk mengarahkan penunjuk file ke suatu komponen tertentu di
dalam file
digunakan untuk menghapus sejumlah komponen atau record mulai dari posisi
record tertentu
digunakan untuk menghasilkan jumlah dari komponen atau record

Contoh Program Bertipe Input Data


Uses Crt;
Type MHS = Record
NM
: string[15];
UTS,UAS : byte;
End;
Var
FileMHS : File of MHS;
RecMHS : MHS;
No, Bts, JD, T, RN : Byte;
BEGIN
CLRSCR;
Write('Jumlah Data : '); ReadLn(JD);
Assign(FileMHS,'C:\MHS.DAT');
P e m r o g r a m a n D a s a r K e l a s X I S e m e s t e r 1 d a n 2 | 30

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

ReWrite(FileMHS);
For No := 1 To JD Do
Begin
With RecMHS Do
Begin
Write('Nama : '); ReadLn(NM);
Write('UTS : '); ReadLn(UTS);
Write('UAS : '); ReadLn(UAS);
End;
Write(FileMHS,RecMHS);
End;
Close(FileMHS);
ReadLn;
END.
Lalu disimpan
Contoh Program Bertipe Tampil Data
Uses Crt;
Procedure Judul;
Begin
WriteLn('DAFTAR NILAI MAHASISWA');
WriteLn('-------------------------------------------------------------------------------');
WriteLn('No. Nama Mahasiswa UTS UAS Total Rata Predikat Kelulusan');
WriteLn('-------------------------------------------------------------------------------');
End;
Type

Var

MHS=Record
NM
: string[15];
UTS,UAS : byte;
End;
FileMHS : File of MHS;
RecMHS : MHS;
No,Brs,JD,T,R,RN : byte;
P
: string[10];
K
: string[5];

BEGIN
CLRSCR;
Judul;
Assign(FileMHS,'C:\MHS.DAT');
Reset(FileMHS);
No:=0;
While Not EOF (FileMHS) Do
Begin
With RecMHS Do
Begin
Read(FileMHS,RecMHS);
T:= UTS+UAS; R:= T div 2; inc(No);
Case R of
00..59 : P:='Kurang';
60..74 : P:='Cukup';
75..84 : P:='Baik';
85..100: P:='Amat Baik';
End;
IF R<60 Then K:='Gagal' Else K:='Lulus';
WriteLn(No:3,' ',NM:15,' ',UTS:3,' ',UAS:3,' ',T:3,' ',R:3,' ',P:10,' ',K:5);
End;
End;
ReadLn;
Close(FileMHS);
END.

P e m r o g r a m a n D a s a r K e l a s X I S e m e s t e r 1 d a n 2 | 31

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

BAB VIII
OPERASI STRING
Suatu String dalam Bahasa Pascal dapat dioperasikan dengan berbagai macam tujuan. Pascal
menyediakan berbagai prosedur standar dan fungsi standar untuk operasi string.
Prosedur Standar
1. DELETE
2. INSERT
3. STR
4. VAL

Fungsi Standar
1. CONCAT
2. COPY
3. POS
4. LENGHT

Dalam Operasinya String hanya mempunyai sebuah operator, yaitu operator +. Bila operator ini
digunakan untuk dua buah elemen string, maka akan menjadi penggabungan dua buah string
menjadi satu.
Panjang Maksimal suatu string yang diijinkan oleh Pascal adalah 255 karakter.
C/:
Const Jenis = Bahasa;
Nama = Turbo Pascal;
Var Sifat : String[10];
Kalimat : String [80];
Begin
Sifat := terstruktur;
Kalimat := Jenis+ +Nama+ +merupakan+Jenis+ +Sifat;
WriteLn(Kalimat);
End.
Bahasa Turbo Pascal merupakan Bahas terstrukur
Procedure Standart pada String
1. DELETE (Procedure)
Menghapus substring dari suatu string, dimulai dari posisi i, sebanyak n String
BU :
DELETE ( string, i, n)
Catatan :Jika jumlah I lebih besar dari jumlah karakter dalam string, maka tidak ada karakter yang
terhapus
VAR s,h : string;
BEGIN
s := ABCDEF;
h := delete(s,2,3);
WriteLn(String pertama = , s);
WriteLn(String akhir = , h);
END.
String pertama = ABCDEF
String kedua = AEF

2. INSERT
insert (menyisipkan) substring (string1) dalam suatu string (string2), pada posisi I String
BU :
INSERT (string1, string2, i)

P e m r o g r a m a n D a s a r K e l a s X I S e m e s t e r 1 d a n 2 | 32

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

VAR r,s : string[24];


BEGIN
s := UNIVERSITAS DARMA;
r := insert(GUNA,s,7);
writeLn(Hasil r adalah , r);
END.
Hasil r adalah UNIVERSITAS GUNADARMA
Cat. Apabila hasil penyisipan menjadi String yang panjangnya lebih dari 255 karakter, maka yang
dianggap signifikan hanya sampai 255 karakter saja.
3.

STR
Mengubah bentuk numerik (x) menjadi nilai string (s)
BU :
STR (x [ : n [ :m ] ], string)
Nilai n menunjukkan format panjang dari nilai utuh dan nilai m menunjukkan format
panjang desimal (nilai dibelakang koma)
VAR N1,N2 : integer;
S1,S2 : string;
BEGIN
N1 := 1234;
N2 := 567;
Writeln (N1+N2);
Str (N1:4,S1);
Str (N2:4,S2);
Writeln(S1+S2);
END.

1801
1234 567

4. VAL
Mengubah nilai suatu argumen string menjadi nilai numerik
BU :
Val(Var_string_angka,Var_nilai,kode)
posisi salah
Cat. Var_string_angka berisi data string yang berupa angka
Var_nilai berisi data hasil konversi.
Jika terjadi kesalahan data maka akan posisi kesalahan disimpan pada kode
VAR

N1, N2
S1, S2
Salah1,salah2

: Real;
: String[6];
: Integer;

BEGIN
S1 := 123.45
S2 := 765.A3
Val (S1, N1, salah);
Val (S2, N2, salah);
WriteLn(Nilai String1 = , S1);
WriteLn(Nilai String2 = , S2);
WriteLn(Nilai Real1 =, N1);
WriteLn(Nilai Real2 =, N2);
WriteLn(Posisi Salah N1 = , salah1);
WriteLn(Posisi Salah N2 = , salah2);

Nilai String1 = 123.45


Nilai String2 = 765.A3
Nilai Real1 = 1.2345000000E+02
Nilai Real2 = 7.6500000000E+02
Posisi Salah N1 = 0
Posisi Salah N2 = 5

END.

P e m r o g r a m a n D a s a r K e l a s X I S e m e s t e r 1 d a n 2 | 33

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

Fungsi Standar pada Operasi String


1. CONCAT
Menggabungkan dua string secara berurut
BU :
ConCat(S1,S2[,S3,, Sn])
Catatan : Fungsi standar ini mempunyai operasi yang sama dengan operator string +, yaitu
merangkai beberapa nilai string.
VAR
S1, S2 : string[3] ;
S3 : string[6];
BEGIN
S1 := ABC; S2 := XYZ;
S3 := CONCAT(S1,S2);
Write (Nilai S3 = , S3);
END.
Nilai S3 = ABCXYZ
2. COPY
Mengambil bagian string (substring) dari suatu string, dimulai dari posisi i, sebanyak n
String
BU :
COPY (String, i, n )
VAR
s,r : string;
BEGIN
s := ABCDEF;
r := copy (s,2,3);
WriteLn (Nilai r adalah , r);
END.
Nilai r adalah BCD
3. POS
Mencari posisi letak dari suatu substring yang ada dalam suatu string Interger
BU :
POS (subString, string)
Catatan : Jika SubString yang dicari terdiri dari beberapa karakter, maka dalam pencariannya
akan mencari deretan karakter yang sesuai.
VAR
K1, K2, K3, K4: string[4];
S : String[20];
BEGIN
S := ABCDEFGHIJKLMNOPQRST;
K1 := FGH;
K2 := H;
K3 := JUGA;
K4 := PQRS;
WriteLn(K1, di posisi ,POS(K1,S);
WriteLn(K2, di posisi ,POS(K2,S);
WriteLn(K3, di posisi ,POS(K3,S);
WriteLn(K4, di posisi ,POS(K4,S);
END.

FGH di posisi 6
H diposisi 6
JUGA diposisi 0
PQRS diposisi 16

P e m r o g r a m a n D a s a r K e l a s X I S e m e s t e r 1 d a n 2 | 34

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

4. LENGTH
Memberikan nilai panjang atau jumlah karakter dari suatu string integer
VAR

s : string[20];
i : word;
BEGIN
s := program pascal;
i := LENGTH(s);
WriteLn(Panjang string : , ,s, , adalah , I, karakter);
END.
Panjang string program pascal adalah 14 karakter
Latihan !
Tentukan hasil dari program berikut
1. PROGRAM LATIH1;
VAR M, N
: STRING[14];
BEGIN
M := ESCHATOLOGICAL;
N := COPY (M,6,4);
INSERT (L, N, 3);
WRITELN (N);
END.
2. PROGRAM LATIH2;
VAR A
: STRING[5];
N
: INTEGER;
C
: INTEGER;
BEGIN
A := 12345;
N := VAL (A, N, C);
WRITELN (N);
END.

{Nilai C belum diketahui)

3. PROGRAM LATIH3;
VAR A, B : STRING[10];
BEGIN
A := MORGAN;
B := COPY ( CONCAT ( COPY (A, 3, 2), A), 3, 2 );
WRITELN (B);
END.
4. PROGRAM LATIH4;
VAR A, B
: STRING[10];
BEGIN
A := MORGAN;
B := COPY (A, 2, 2);
WRITELN (B);
A := CONCAT (A, B);
WRITELN (A);
END.
5. PROGRAM LATIH5;
VAR M, N
: STRING[10];
BEGIN
M := ABCDEFGHIK;
DELETE (M, 5, 2);
INSERT (Z, M, 2);
WRITELN (COPY (M, 4, 3);
END.

P e m r o g r a m a n D a s a r K e l a s X I S e m e s t e r 1 d a n 2 | 35

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

BAB IX
TIPE DATA POINTER
Sampai saat ini tipe data baik yang sederhana maupun yang tersetruktur. Struktur dari tipe-tipe
tersebut mempunyai keterbatasan, yakni bersifat statis. Sebagai akibatnya, ukuran dan urutannya
sudah pasti. Pada suatu larik, elemen yang satu mendahului elemen yang lain. Ukurannya sudah
pasti, tidak dapat melebihi ukuran maksimun dari yang sudah dideklarasikan. Kelemahan lain dari
variabel statis adalah ruang memori yang sudah digunakan tidak dibebaskan.
Pointer merupakan tipe data yang bersifat dinamis yang bisa dipesan jika diperlukan dan dapat
dibebaskan kembali bila sudah tidak digunakan. Struktur data yang menggunakan variabel dinamis
disebut dengan struktur data dinamis. Variabel dinamis tidak dapat dideklarasian secara langsung
seperti halnya variabel-variabel statik. Variabel dinamis hanya ditunjukkan oleh variabel khusus
yang berisi alamat memori yang digunakan oleh variabel tersebut. Variabel khusus ini disebut
dengan variabel pointer. Suatu tipe data pointer dideklarasikan dengan menggunakan simbol ^.
Meskipun telah dideklarasikan suatu variabel pointer yang akan menunjukkan kesuatu tipe data
tertentu namun variabel dinamis tidak akan dialokasikan selama belum ada perintah pengalokasian
varibel dinamis. Begitu pula saat variabel dinamis sudah tidak digunakan lagi.
A. PRAKTIK
1. Cobalah program dibawah ini, amati untuk beberapa masukan yang berbeda.
Program pointer;
Uses crrt;
Type simpul = ^data;
Data = record
Nama: string;
Alamat: string;
Berikut: simpul;
End;
Var t1,t2,t3,t4,t5,t6 : simpul;
Begin
Clrscr;
New(t1);
New(t2);
New(t3);
New(t4);
New(t5);
New(t6);
T1^.nama := kikir;
T1.alamat := jogja;
Writeln;
Writeln( nama : ,t1^.nama);
Writeln;
Writeln( alamat : ,t1^.alamat);
T2:=t1;
Writeln;
Writeln( nama : ,t2^.nama);
Writeln;
Writeln( alamat : ,t2^.nama);
End.
Dari program diatas bisa dirinci sebagai berikut:
Operasi mengisi sampul t1
T1^.nama := kikir;
T1.alamat := jogja;
Operasi membaca simpul t1
Writeln( nama : ,t1^.nama);
Writeln( alamat : ,t1^.alamat);

P e m r o g r a m a n D a s a r K e l a s X I S e m e s t e r 1 d a n 2 | 36

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

Operasi copy pointer


T2:=t1;
Operasi copy isi sampul
T2^ := t1^
Operasi hapus simpul
Dispose(t1)
2. Isikan simpul t2 dengan data nama Joko dan alamat Solo kemudian lakukan opeasi kopi pointer
T3 := t1;
T5 := t1;
Dan lakukan operasi kopi isi simpul
T4^ := t2^;
T6^ := t2^;
B. TUGAS
Buatlah program perpustakaan dengan masukan:
Nama buku
Pengarang
nomor indeks
Tampilan berupa
Menu pilihan
T : menambah buku
H : menghapus buku
S : Selesai
Pilih menu?

P e m r o g r a m a n D a s a r K e l a s X I S e m e s t e r 1 d a n 2 | 37

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

BAB X
PENCARIAN (SEARCHING)
Pencarian data sering juga disebut dengan table look up atau storage and rerievel information
adalah suatu proses untuk mengumpulkan sejumlah informasi di pengingat komputer dan mencari
kembali informasi yang diperlukan secepat mungkin.
Pencarian data bisa dikelompokkan 2 cara yaitu pencarian internal dan pencarian eksternal.
Efisiensi pencarian data dipengaruhi struktur data yang digunakan untuk menyimpan data. Dalam
hal ini akan digunakan struktur data vektor dengan deklarasi tipe array dimensi 1. Adapun vektor
yang digunakan mempunyai deklarasi sebagai berikut :
Type larik = array[1..100] of integer;
SEQUENTIAL SEARCHING
Metode yang paling sederhana dari sejumlah pencarian adalah metode pencartian berurutan
(sequential searching). Secara garus besar metode ini bisa dijelaskan sebagai berikut. Dari vektor
yang diketahui, data yang dicari dibandingkan satu per satu sampai data tersebut ditemukan atau
tidak. Pada saat data yang dicari sudah ketemu maka proses pencarian dihentikan. Tetapi jika tidak,
pencarian akan diteruskan smpai seluruh data dibandingkan.
Implementasi dari metode ini adalah:
Procedure cari_vektor_urut (var ada : boolean; var n, posisi : integer; var A : larik: data :
integer);
Var i : integer;
Begin
{dianggap tidak ada data}
ada := false;
for i := 1 to n do
if A[i] = data then
begin
posisi := i;
ada := true;
exit;
end;
if not ada then
{data yang dicari tidak ketemu, sisipkan ke vektor}
begin
inc(n);
a[n] := data;
end;
End;
PENCARIAN BINER
Metode pencarian biner yang dapat dijelaskan sebagai berikut. Setelah yang diketahui diurutkan,
vektor dibagi menjadi 2 sub vektor yang mempunyai jumlah elemen sama. Kemudian data
dibandingkan dengan data terakhir dari sub vektor pertama. Jika data yang dicari lebih kecil,
pencarian diteruskan pada su vektor pertama dengan terlebih dahulu membagi dua sub vektor
tersebut. Tetapi jika data yang dicari lebih besar dari data terakhir dari sub vektor pertama berarti
data terletak pada sub vektor kedua. Dengan demikian pencarian dilakukan pada sub vektor kedua.
Proses di atas diulang sampai data yang dicari ketemu atau tidak ketemu.
PRAKTIK
1. Buatlah program untuk mencari elemen / data pada suatu vektor yang sudah terurut dengan
menggunakan procedure car_vektor_urut di atas.
2. Buatlah program untuk mencari data / elemen pada suatu vektor yang belum terurut (dengan
pencarian biner)
TUGAS
Bandingkan kedua metode diatas. Metode mana yang lebih efisien? Buktikan dalam bentuk
program
P e m r o g r a m a n D a s a r K e l a s X I S e m e s t e r 1 d a n 2 | 38

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

BAB XI
PENGURUTAN DATA NUMERIS (SORTING)
Secara umum ada dua macam model/bentuk urutan data numeris, yaitu model uruitan membesar
(ascending) dan model urutan mengecil yaitu descending. Untuk melakukan proses pengurutan
data numeris ada beberapa metode, misal metode seleksi, metode penyisipan langsung dan metode
gelembung.
Cara kerja metode seleksi didasarkan pada pencarian elemen dengan nilai terkecil, kemudian
dilakukan penukaran dengan elemen ke 1. Secara ssingkat, metode ini bisa dijelaskan sebagai
berikut. Pada langkah pertama, dicari data terkecil tersebut kita tukar dengan data pertama. Dengan
demikian, data pertama sekarang mempunyai nilai paling kecil dibanding data yang lain. Pada
langkah kedua, data terkecil kita cari mulai data kedua. Demikian seterusnya sampai seluruh vektor
dalam keadaan terurutkan. Untuk lebih memperjelas proses pengurtan dengan metode seleksi,
berrikut disajikan contoh metode ini.
Iterasi ke

A[1]

A[2]

A[3]

A[4]

A[5]

A[6]

A[7]

A[8]

A[9]

I=1, lok=3

23

45

12

24

56

34

27

23

16

I=2, lok=9

12

45

23

24

56

34

27

23

16

I=3, lok=3

12

16

23

24

56

34

27

23

45

I=4, lok=8

12

16

23

23

56

34

27

23

45

I=5, lok=8

12

16

23

23

56

34

27

23

45

I=6, lok=7

12

16

23

23

24

34

27

56

45

I=7, lok=7

12

16

23

23

24

27

34

56

45

I=9, lok=9

12

19

23

23

24

27

34

56

45

Akhir

12

16

23

23

24

27

34

45

Metode ini secara garis besar merupakan kebalikan dari metode penyisipan langsung. Dalam setiap
langkah pada metode penyisipan langsung kita hanya memperhatikan satu elemen dari sumber dan
semua elemen dari larik tujuan untuk menentukan posisinya yang tepat. Sehingga sering disebut
dengan one source multiple destinations. Dalam metode seleksi terjadi sebaliknya, yakni kita
memperhatikan semua elemen dalam larik sumber untuk menentukan elemen terkecil yang akan
kita tempatkan pada tujuan, sehingga sering disebut dengan multiple source one destination.
A.

PRAKTIK
Program sorting1;
Uses crt;
Tuype larik = array [1..100] of real;
Var vektor:larik;
I,cacah:integer;
Bantu:real;
Procedure sort_sleksi(var x : larik;n:integer);
Var i,j,lokasi:integer;
Bantu:real;
Begin
For i:=1 to n do
Begin
Lokasi := i;
For j:= i+1 to n do
If x[lokasi]>x[j] then
Lokasi:=j;
Bantu:=x[i];
X[i]:=x[lokasi];
P e m r o g r a m a n D a s a r K e l a s X I S e m e s t e r 1 d a n 2 | 39

Wahyu Sumantri Sutiar, S.T SMK PGRI 1 KOTA SUKABUMI

X[lokasi]:=bantu
End
End;
Procedure cetak_larik(x:larik;n:integer);
Var i:integer;
Begin
For i:=1 to n do
Begin
Writeln(x[i]:8:2);
If i mod 8 = 0 then
Writeln;
End
End;
Begin
Clrscr;
Writeln(mensorttir bilangan dengan metode seleksi);
Writeln(cacah data :);
Readln(cacah);
Writeln;
Writeln(masukan data 8 data per baris;);
Bantu:=1;
For i:=1 to cacah do
Begin
Read (vektor[i]);
Goptoxy(wherex+(i mod 8)*8, wherey-i);
Id i mod 8 = 0 then
Writeln;
End;
Clrscr;
Writeln( data sebelum disorttir);
Writeln;
Ctak_larik(vektor,cacah);
Writeln(writeln;
Sort_seleksi(vektor,cacah);
Writeln(data setelah disoprtir);
Writel;n;
Cetak_larik(vektor,cacah);
End.
Pertanyaan:
1. Ujialah dengan data yang telah tersedia pada ilustrasi di tas.
2. Model urutan di atas diganti
TUGAS
Pada program di atas procedure metode seleksi gantilah dengan metode penyisipan langsung.
dengan metode gelembung.
Daftar Pustaka
-

Alwin sanjaya aak_drs@yahoo.com Copyright 2003 IlmuKomputer.Com


http://dina_anggraini.staff.gunadarma.ac.id/Downloads/files/30454/Pertemuan+Ke++III.doc
http://ypraptomo.files.wordpress.com/2009/01/struktur-data-pascal.doc

P e m r o g r a m a n D a s a r K e l a s X I S e m e s t e r 1 d a n 2 | 40

Anda mungkin juga menyukai