BAB I
PENGENALAN
STRUKTUR DAN ATURAN PENULISAN PASCAL
- Perintah Untuk program non Inti atau sub dalam inti yaitu :
Dengan struktur sebagai berikut :
Selalu diawali dengan “Begin” dan diakhiri dengan”end;” (end titik koma).
Untuk program non inti/Sub yaitu :
Var …..{Menyebutkan jenis nama Variabel}
Begin
Statement
Statement
…….. {Diletakkan perintah-perintah}
Statement
Statement
End;
Untuk Jenis Variabel harus dideklarasikan terlebih dahulu.
Contoh 1.1 program dalam struktur Pascal
Begin
End.
1
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
Kalau program dijalankan maka akan berhasil dan tidak menghasilkan apa-apa namun tidak
terdapat kesalahan karena sudah memenuhi aturan struktur Pascal.
Gabungan Antara Inti program dan sub program :
Contoh 2.1 program dalam struktur Pascal
Begin
Begin 2.program non inti 1. program inti (main)
End; (Sub)
End.
Begin
Statement…
Begin
Statement…
End;
Begin
Statement…
End;
End.
Begin
Statement…
Begin
Statement…
Begin
Statement…
End;
Statement…
End;
Statement…
End.
2
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
Begin
Clrscr;
Statement
Statement
….
Statement
Statement
End.
3
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
Contoh :
4
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
1. Contoh Uses
Uses Crt, Dos;
Begin
Clrscr;
End.
2. Contoh Type
a. Contoh type array
Type
Nomor = array[1..100] of Integer;
Abjad = array['A'..'Z'] of Byte;
Bilanganreal = array[0..9, 0..9] of real;
Begin
End.
5
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
b. Const Abs
var
r: Real;
6
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
i: Integer;
begin
r := Abs(-2.3); { 2.3 }
i := Abs(-157); { 157 }
end.
c. Contoh Const Hi
var B: Byte;
begin
B := Hi($1234); { $12 }
end.
d. Contoh Const Lo
var B: Byte;
begin
B := Lo($1234); { $34 }
end.
7
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
1. Latihan 1 :
Begin
end;
Run error 94 : “ . ” Expected (false)
2. Latihan 2 :
Begin
End.
Run success (true)
3. Latihan 3 :
Begin
Begin
End;
End;
Run Error 94 : “ . ” Expected (false)
4. Latihan 4 :
Begin
Begin
End;
Begin
End.
Run Error 85 : “ ; ” expected (false)
5. Latihan 5 :
Begin
End.
Begin
Tidak dikerjakan
End;
Run Success (True)
6. Latihan 6 :
8
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
Begin
Begin
End;
Begin
End.
End.
Run Error 85 : “ ; “expected (false)
7. Latihan 7 :
Begin
Begin
Diijinkan tidak memakai ;
End
End.
Run Succes (True)
8. Latihan 8 :
Begin
Begin
End.
End.
Run Error 85 : “ ; ” expected (false)
9. Latihan 9 :
Begin
End.
Begin
Tidak dikerjakan
End.
Run Success (True)
10. Latihan 10 :
Begin
Begin
End
Begin
End
Begin
End
End.
Run Error 85 : “ ; “ expected (false)
11. Latihan 11 :
Begin
Begin
End;
9
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
Begin
End;
Begin
diijinkan
End
End.
Run Success (true)
12. Latihan 12 :
Begin
Begin
Tidak diijinkan
End
Begin
End;
Begin
End;
End.
Run Error 85 : “ ; “ expected (false)
13. Latihan 13 :
Begin
Begin
End;
Begin
Tidak diijinkan
End
Begin
Tidak diijinkan
End
End.
Run Error 85 : “ ; “ expected (false)
14. Latihan 14 :
Begin
Begin
End;
Begin
Tidak diijinkan
End
Begin
End;
End.
Run Error 85 : “ ; “ expected (false)
10
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
15. Latihan 15 :
?
Begin
Begin
Begin
End;
End;
End;
End.
Run Error 94 : “ . “ expected (false)
16. Latihan 16 :
Begin
End;
Begin
End.
Run Error 94 : “ . “ expected (false)
17. Latihan 17 :
Begin
Begin
End.
End;
Run Error 85 : “ ; “ expected (false)
18. Latihan 18 :
Begin
Begin
Begin
Sub1 sub 2 sub 3 diijinkan semua tanpa (; )
End karena : dalam satu sub dan tidak
End melakukan blok dibawahnya
End.
Run Success (true)
19. Latihan 19 :
Begin
Begin
Begin
Begin
Sub terbesar 1
End tidak memenuhi (;)
End
End
Begin
Sub terbesar 2
End;
11
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
End.
Run Error 85 : “ ; “ expected (false)
20. Latihan 20 :
Begin
Begin
Begin
Begin
Sub terbesar 1
End memenuhi (; )
End
End;
Begin
Sub terbesar 2
End;
End.
Run Success (true)
21. Latihan 21 :
Begin
Begin
Begin
Begin
Sub terbesar 1
End tidak memenuhi ( ; )
End;
End
Begin
End;
End.
Run Error 85 : “ ; “ expected (false)
12
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
TABEL BOOLEAN :
True : T (B:BENAR)
False : F (S:SALAH)
OR/“V” HASIL
S/F S/F S/F
S/F B/T B/T
B/T S/F B/T
B/T B/T B/T
AND/” ^ ” HASIL
S/F S/F S/F
S/F B/T S/F
B/T S/F S/F
B/T B/T B/T
OPERASI MATEMATIKA :
+ : Addition (penjumlahan)
- : Subtraction (pengurangan)
* : Multiplication (perkalian)
/ : Division (pembagian)
div : Integer division (hasil bagi bulat/utuh)
mod : Remainder (sisa hasil bagi)
13
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
BAB II
• Perintah CETAK
Perintah cetak dimaksudkan untuk menampilkan huruf atau charakter tertentu di
layar dengan apa adanya. Perintah cetak akan tampil di layar monitor text atau huruf
sesuai dengan yang dimaksud. Perintah tersebut di cetak ke layar diapit dengan dua tanda
petik :
PERINTAH CETAK DI LAYAR :
Write(‘……. text …..’); {text tercetak di layar, cursor pada akhir baris/text }
Contoh 2.1 :
Write(‘Program PASCAL’);
Writeln(‘Saya suka Program PASCAL’); {tampil pada baris berikutnya}
Writeln(‘--------PASCAL--------‘); {tampil pada baris berikutnya}
kita dapat mengetahui atau sebagai pengingat dan merupakan salah satu dokumentasi
program/ keterangan program. Perintah dimulai dengan kurung buka “{“ dan diakhiri
dengan kurung tutup “}”. Perintah komentar tidak mempengaruhi jalannya program dan
Perintah Nama program juga dapat disertakan atau tidak disertakan tidak
mempengaruhi program harus dituliskan pada awal program/ diletakkan paling atas
• Perintah INPUT
Perintah input merupakan perintah masukan yang diberikan untuk berbagai jenis
data seperti integer, string, longint, real. Perintah input terlebih dahulu harus
memasukkan nama variabel/ memesan nama variabel.
PERINTAH INPUT :
Contoh 2.2 :
Var Nama1 : String;
Nomor1 : integer;
begin
Readln(Nama1);
Readln(Nomor1);
End.
Run
IPTTI
1
Contoh 2.3 :
Var Nama1 : string;
Nomor1 : integer;
Nomor2 : real;
Begin
Write(‘Nama : ‘); Readln(Nama1);
Write(‘Nomor1 : ‘); Readln(Nomor1);
Write(‘Nomor2 : ‘);Readln(Nomor2);
Writeln(‘Nama Anda : ‘,Nama1);
Writeln(‘Nomor1 Anda : ‘,Nomor1);
15
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
Contoh 2 4 :
Gotoxy(10,5);Write(‘Program PASCAL’);
Gotoxy(10,6);Writeln(‘Saya suka Program PASCAL’);
Gotoxy(10,7);Writeln(‘--------PASCAL--------‘);
2. PERINTAH KONDISI
Perintah kondisi dalam pemrograman digunakan untuk menseleksi pada kondisi
tertentu apakan nilai tersebut memenuhi syarat atau tidak. Perintah Kondisi menggunakan
perintah If …syarat memenuhi/tidak…..then....kerjakan
PERINTAH KONDISI/ PERSYARATAN :
If Kondisi1 Then
Begin
End;
Begin
….Statement
End
Else
…..Statement
Contoh 2.5 :
Uses Crt,Dos; {memanggil semua perintah dos dan control}
Var Nomor1 : integer;
Begin
Clrscr; {menggunakan uses crt untuk menghapus layar}
Writeln(‘Contoh program Kondisi’);
Write(‘Masukkan Nomor1 : ‘);Readln(Nomor1);
If Nomor1=1 Then
Begin
Writeln(‘Anda Memasukkan Nomor 1’);
End;
If Nomor2=2 Then
Begin
Writeln(‘Anda Memasukkan Nomor 2’);
End;
If Nomor3=3 Then
Begin
Writeln(‘Anda Memasukkan Nomor 3’);
End
Else
Writeln(‘Tidak Termasuk kategori !’);
End.
Run
Contoh program Kondisi
Masukkan Nomor1 : 4
Tidak Termasuk kategori
Dalam satu baris perintah kondisi terkadang lebih dari satu syarat misalkan :
Contoh 2.6 :
Uses Crt,Dos; {memanggil semua perintah dos dan control}
FOR variabel := 1 to n Do
{variabel berupa nama variabel berupa integer}
Contoh 2.7 :
Uses crt,dos; {memanggil semua perintah dos dan control}
Const N=5; {constanta variabel n global}
Var Nama : String[12]; {membatasi panjang string yang diijinkan hanya 12 huruf}
I : integer;
Begin
Clrscr; {menghapus semua tulisan di layar menggunakan uses crt}
Write(‘Masukkan Nama : ‘); Readln(Nama);
For I := 1 to n do
Begin
Writeln(‘Nama Anda : ‘,I,’=’,Nama);
End;
Readln;
End.
Run
Masukkan Nama : ABCDE
Nama Anda : 1 = ABCDE
Nama Anda : 2 = ABCDE
Nama Anda : 3 = ABCDE
Nama Anda : 4 = ABCDE
Nama Anda : 5 = ABCDE
18
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
Contoh 2.8 :
Uses crt,dos; {memanggil semua perintah dos dan control}
Var Nama : String[12]; {membatasi panjang string yang diijinkan hanya 12 huruf}
I,N : integer;
Begin
Clrscr; {untuk menghapus tulisan semua di layar menggunakan uses crt}
N:=5; {variabel lokal}
Write(‘Masukkan Nama : ‘); Readln(Nama);
For I := 1 to n do
Begin
Writeln(‘Nama Anda : ‘,I,’=’,Nama);
End;
End.
Run
Masukkan Nama : ABCDE
Nama Anda : 1 = ABCDE
Nama Anda : 2 = ABCDE
Nama Anda : 3 = ABCDE
Nama Anda : 4 = ABCDE
Nama Anda : 5 = ABCDE
Contoh 2.9 :
Uses Crt,dos;
Var Nama : String;
Begin
Repeat
Write(‘Nama : ‘);Readln(Nama);
Until Nama = ‘IPTTI’;
Writeln(‘Perulangan Betul Keluar !’);
Run
Nama : LEMBAGA
Nama : INSTITUSI
Nama : IPTTI
Perulangan Betul Keluar !
Contoh 2.0.1 :
Uses Crt,dos;
Var Nama : String;
Begin
Write(‘Masukkan Nama : ‘);readln(nama);
While nama=’IPTTI do
Write(‘AKAN DIULANG KARENA SAMA DENGAN IPTTI);
Readln;
End.
Run
Masukkan Nama : LPK
Selesai
Masukkan Nama : IPTTI
AKAN DIULANG KARENA SAMA DENGAN IPTTI
AKAN DIULANG KARENA SAMA DENGAN IPTTI
AKAN DIULANG KARENA SAMA DENGAN IPTTI
…..dan seterusnya… tidak ….berhenti…henti……
Contoh 2.0.2 :
Uses Crt,dos;
Var Nama : String;
Begin
Write(‘Masukkan Nama : ‘);readln(nama);
While nama<>’IPTTI do
Write(‘AKAN DIULANG KARENA TIDAK SAMA DENGAN IPTTI);
Readln;
End.
Masukkan Nama : IPTTI
Selesai
Masukkan Nama : LPK
AKAN DIULANG KARENA TIDAK SAMA DENGAN IPTTI
AKAN DIULANG KARENA TIDAK SAMA DENGAN IPTTI
AKAN DIULANG KARENA TIDAK SAMA DENGAN IPTTI
…..dan seterusnya… tidak ….berhenti…henti……
20
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
BAB III
ARRAY
1. Definisi ARRAY
Array adalah suatu tipe data terstruktur, yang berisi lebih dari satu data dan
merupakan kumpulan data-data yang sejenis.
Var
Variabel : array[1..max] of TipeData ;
{TipeData dapat berupa string, integer, real}
contoh :
Var Nama : array[1..100] of string;
Usia : array[1..100] of integer;
Upah : array[1..100] of real;
Dengan melihat deklarasi variabel array maka dapat dibayangkan bahwa dalam data
akan dapat menampung/ disusun sebagai berikut :
Nama[1] Usia[1] Upah[1]
Nama[2] Usia[2] Upah[2]
Nama[…] Usia[…] Upah[…]
Nama[100] Usia[100] Upah[100]
End;
For I := 1 to n do
begin
Writeln(‘Nama :‘,nama);
End;
End.
Run
Masukkan Nama : IPTTI
Masukkan Nama : Yogyakarta
Masukkan Nama : School
Nama : School
Nama : School
Nama : School
Sehingga untuk input IPTTI, Yogyakarta akan tidak tampil dan yang tampil hanya
School semua sehingga seolah-olah data nama 1, data nama 2, dihapus dalam memori.
Untuk mengatasinya maka kita menggunakan program ARRAY.
Penyelesaian Kasus 3.1 maka menggunakan ARRAY :
Uses crt,dos;
Var Nama : array[1..100] of string;
I,N:integer;
Begin
N:= 3
For I := 1 to n do
begin
Write(‘Masukkan Nama :‘); Readln(nama[I]);
End;
For I := 1 to n do
begin
Writeln(‘Nama :‘,nama[I]);
End;
Readln;
End.
Run
Masukkan Nama : IPTTI
Masukkan Nama : Yogyakarta
Masukkan Nama : School
Nama : IPTTI
Nama : Yogyakarta
Nama : School
Contoh 3.2 :
Program hari;
Var
Hari : array[1..7] of string[10];
22
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
K: integer;
Begin
Hari[1] := ’SENIN’; Hari[2] := ’SELASA’; Hari[7] := ‘ MINGGU’;
Hari[3] := ‘RABU’; Hari[4] := ‘KAMIS’;
Hari[5] := ‘JUM’AT’; Hari[6] := ‘SABTU’;
Repeat
Write(‘Hari ke berapa ? ‘); Readln(K);
If ( K>0) and (K<8) then
Writeln(‘Hari : ‘,Hari[K]);
Until K=0;
End.
Run
Hari ke berapa ? 1 <enter>
Hari : SENIN
Contoh berikut akan membaca nama mahasiswa dan nilai dalam suatu array. Nilai >55 lulus.
Dan program ditampilkan semua berupa nama mahasiswa dan nilai serta kelulusan.
Contoh 3.3 :
Program nilai;
Const max=100;
Var
Nama : array[1..max] of string[20];
Nilai : array[1..max] of real;
Hasil : array[1..max] of string[10];
N,j : integer;
Begin
Write(‘Jumlah Siswa : ‘); Readln(N);
Writeln(‘Memasukkan Data’);
For J := 1 to N do
Begin
Write(‘Nama Siswa : ’); Readln(Nama[J]);
Write(‘Nilai Angka : ‘); Readln(Nilai[J]);
If Nilai[J]>55 Then Hasil[J] := ‘LULUS’
Else Hasil[J] := ‘GAGAL’;
End;
Writeln(‘Hasil Daftar Nilai‘) ;
Writeln(‘--------------------------------------------------‘);
Writeln(‘ Nama Nilai Hasil ‘);
Writeln(‘--------------------------------------------------‘);
For J := 1 to N do
Begin
Writeln(Nama[J]:15,Nilai[J]:10:2 ,Hasil[J]:15);
Writeln(‘--------------------------------------------------‘);
End;
End.
Run
Jumlah Siswa : 2 <enter>
23
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
Memasukkan Data
Nama Siswa : Herdiansyah
Nilai Angka : 80 <enter>
Nama Siswa : Arman
Nilai Angka : 44 <enter>
Hasil Daftar Nilai
------------------------------------------------------
Nama Nilai Hasil
------------------------------------------------------
Herdiansyah 80 LULUS
Arman 44 GAGAL
2. Manipulasi Array
Pengertian manipulasi array adalah seluruh aplikasi pengolahan data yang disimpan
dalam struktur variabel array dapat didayagunakan.
2.1 Searching (pelacakan data)
2.2 Sorting (pengurutan data)
Berikut pembahasannya :
2.1 Searching
Pencarian/pelacakan data berupa input dari keyboard atau tidak yang tersimpan
dalam larik array sebanyak n kali, dapat mengcounter(menjumlah ) mengetahui
cacahnya. Dapat juga misalnya untuk mencari nilai terendah atau tertinggi ada berapa
jumlah mahasiswa tersebut.
Contoh 3.4 program searching array bilangan habis dibagi 3 ada berapa buah
Program pelacakan;
Var x : array[1..100] of integer;
N,I,c : integer;
Begin
Write(‘Ada berapa data : ‘); readln(N);
For I := 1 to N Do begin
Write(‘Data : ‘);Readln(X[I]); end;
C := 0;
For I := 1 to N Do
IF (X[I] mod 3) = 0 then inc( c );
Write(‘Data yang habis dibagi 3 ada : ‘,C,’ Buah’);
End.
Run
Ada berapa data : 5 <Enter>
DATA : 10 <enter>
DATA : 6 <enter>
DATA : 11 <enter>
24
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
DATA : 12 <enter>
DATA : 10 <enter>
Data yang habis dibagi 3 ada 2 buah
Mengurutkan data merupakan topik penting dalam array. Bayangkan kalau kita ingin
melihat data kalau tanpa diurutkan maka akan betapa susahnya kita menemukan dan
melihat data tersebut.
Ada 2 jenis metode sortir yang sederhana yaitu :
1. Metode gelembung (Buble Sort)
2. Metode pilih langsung (Straight selection)
Metoede Buble Sort
Misalkan dimiliki data numerik dalam larik X sebanyak N elemen yang belum urut dan
akan diurutkan ascending (naik). Maka langkahnya adalah :
25
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
5 7 10 21 45
X[1 ] X[2] X[3] X[4] X[5]
Setelah itu menukarkan X[I] dengan X[J]
Tukar := X[I];
X[I] := X[J];
X[J] := Tukar;
X[J] := Tukar;
End;
Writeln;
Writeln(‘Data setelah disortir’);
For I := 1 to N do Write(X[I]);
End.
Run
Data sebelum disortir
10 21 45 7 5
Data setelah disortir
5 7 10 21 45
End.
Run
Ketik Nama-Nama
Nama : Budi
Nama : Beno
Nama : Andi
Nama : Dedi
Nama : Cahyo
Data setelah di sortir
Andi
Beno
Budi
Cahyo
Dedi
Begin
Writeln(‘Ketik Nama-Nama’);
For I := 1 to N do
Begin
Write(‘Nama : ‘); Readln(X[I]);
End;
For I := 1 to N-1 do
For J := I + 1 to N do
If X[I] > X[J] then
Begin
Tukar := X[I];
X[I] := X[J];
X[J] := Tukar;
End;
Writeln;
For I := 1 to N do
Begin
Writeln(‘Data setelah disortir : ’,X[I]);
End;
End.
28
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
BAB IV
1. Procedure
Procedure adalah suatu kumpulan instruksi yang dibuat oleh pemrogram sebagai
pengikat dalam suatu block program tersendiri-sendiri/ sekelompok program. Tujuan dibuat
procedure untuk memudahkan dalam pengeblokan program-program atau pecahan-pecahan
program seperti program non inti. Dengan kata lain procedure kepanjangan dari program non
inti yang dapat memberikan nilai bila dipanggil. Prosedure tersebut terdiri dari dua kelompok
yaitu :
- Procedure Tanpa parameter
- Procedure dengan parameter
Procedure tanpa parameter
Procedure yang dibuat agar dapat dipanggil oleh program inti dan tidak membawa
nilai variabel tertentu.
PROCEDURE TANPA PARAMETER
Procedure NamaProcedure; {Nama procedure bebas dapat huruf/angka}
Var
Begin
…Statement…
End;
Contoh 4.1
Procedure Garis;
Begin
Writeln(‘=====================’) pembuatan procedure Garis.
End;
Begin
Garis; Procedure dipanggil
Writeln(‘HELLO IPTTI’);
Garis; Procedure dipanggil
End.
Run
=====================
HELLO IPTTI
29
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
=====================
Dengan menggunakan procedure kita dapat memanggil cukup dengan GARIS maka program
di dalam procedure akan melaksanakan sesuai dengan blok perintah.
Berikut contoh untuk menghitung luas persegi panjang dengan procedure non parameter.
Contoh 4.2 Program persegi panjang.
Program Hitung_Segi_Panjang;
Uses Crt;
Var Panjang, Lebar, Luas : Real;
Procedure masukData;
Begin
Write(‘PANJANG = ‘); Readln(panjang);
Write(‘LEBAR = ‘); Readln(Lebar);
End;
Procedure HitungLuas;
Begin
Luas := Panjang * Lebar;
End;
Procedure CetakLuas;
Begin
Writeln(‘Luasnya = ‘,Luas:8:2);
End;
Begin
MasukData;
HitungLuas;
CetakLuas;
End.
Run
PANJANG = 5 <enter>
LEBAR = 3 <enter>
Luasnya = 15.00
30
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
End;
Procedure itu dapat dipanggil dengan memberikan nilai variabel yang dibawa dan
nilai variabel itu mengerjakan dan melakukannya. Misalkan :
Garis(5); hasilnya =====
Garis(15); hasilnya ===============
Garis(5 + 5) hasilnya ==========
Contoh 4.3
Procedure Garis(n : integer; c : char);
Var I : integer;
Begin
For I := 1 to n do Write ( c );
Writeln;
End;
Begin
Writeln(‘Contoh Program Memakai Parameter’);
Garis(5,’=’);
Garis(3,’X’);
End.
Run
Contoh Program Memakai Parameter
=====
XXX
Contoh 4.3
Uses Crt,Dos;
Procedure BacaData(Var P1, P2 : real);
Begin
Write(‘PANJANG = ‘); Readln(P1);
Write(‘LEBAR = ‘); Readln(P2);
End;
Procedure HitungLuas(Var q1 : real; q2,q3 : real);
Begin
q1 := q2 * q3;
end;
Procedure CetakLuas(P:real);
Begin
Writeln(‘LUASNYA = ‘,p:8:2);
End;
Var panjang, Lebar, Luas : real;
Begin
BacaData(Panjang, Lebar);
HitungLuas(Luas, Panjang, Lebar);
31
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
CetakLuas(Luas);
End.
Run
PANJANG = 5 <enter>
LEBAR = 3 <enter>
LUASNYA = 15.00
2. FUNCTION
Function adalah fungsi yang didefinisikan sendiri oleh programmer seperti halnya
procedure tetapi fungsi lebih berfungsi untuk melakukan tugas khusus dari parameter dan
non parameter untuk RETURN VALUE / Nilai kembali, yang diproses ke dalam
NamaFungsi sebagai nilai balik terhadap fungsi tersebut.
RETURN VALUE merupakan data yang dapat berjenis integer, real, char, string,
namun tidak dapat bertipe array atau record.
- Function Tanpa Parameter
- Function dengan Parameter
FUNCTION TANPA PARAMETER
Function NamaFungsi : TipeReturnValue;
Var {variabel lokal}
Begin
NamaFungsi := ReturnValue;
End;
Contoh 4.4
Function Dadu : integer;
Begin
Randomize;
Dadu := 1 + random(6);
End;
Begin
Writeln(Dadu, ‘ ‘,Dadu,‘ ‘,Dadu);
End.
Run
444
32
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
Function parameter tersebut akan membawa nilai balik /RETURN VALUE dari yang
dikerjakan.
Parameter function dapat berupa tipe : integer, char, real, string, boolean, array atau
record.
Hasil function dapat berupa : integer, char, real, string dan boolean.
Contoh 4.5
var kata : string;
function hurufbesarkecil(S: string): string;
var
I: Integer;
begin
for I := 1 to Length(S) do
if (S[I] >= 'a') and (S[I] <= 'z') then
Dec(S[I], 32);
hurufbesarkecil := S;
end;
begin
Write('Ketikan Kata Huruf kecil : ');Readln(Kata);
If hurufbesarkecil(kata)='IPTTI' Then
begin
Write('Dapat diterima :',Kata);
end
else
Write('Bukan);
readln;
end.
Run
Ketikan Kata Huruf kecil : iptti
Dapat diterima
Ketikan Kata Huruf kecil : IPTTI
Bukan
33
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
Contoh 4.6
Function Balik (x : string) : string;
Var I, n : integer;
St : string;
Begin
St:=’ ‘; n := length(x);
For I := 1 to n do st := x[I] + st;
Balik := st;
End;
Begin
Writeln(Balik(‘IPTTI’));
End.
Run
ITTPI
34
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
BAB V
1. RECORD
Record merupakan kumpulan data yang tidak sejenis atau variasi. Penggunakan
record berkaitan dengan deklarasi suatu type.
Type NamaTipeData = TipeDataPascal;
Dideklarasikan dengan
Var NamaVariabel : NamaTipeData;
Contoh :
Type Bulat = integer;
Pecahan = real; type menggunakan sama dengan
Logika = boolean;
Tanda yang harus diperhatikan untuk deklarasi tipe adalah tanda sama dengan untuk
namavariabel/tipe data dan jenis tipe.
Untuk tipe data di atas akan lebih praktis jika dituliskan langsung tanpa memakai deklarasi
tipe yaitu :
Var Umur, JumlahAnak : integer;
Gaji, Tunjangan : pecahan;
Status : boolean;
Pembuatan deklarasi tipe nampak akan memperpanjang program namun untuk jenis array
dan RECORD pemakaian tipe sangat dianjurkan dan menguntungkan.
Misalkan :
Var Umur : array[1..n] of integer;
Nama : array[1..n] of string;
JumAnak : array[1..n] of integer;
Dapat ditulis dengan type seperti :
35
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
Namun untuk tipe data RECORD maka deklarasi data merupakan keharusan, karena variabel
bertipe record tidak dapat diberi tipe data record secara langsung.
Type NamaTypeRecord = RECORD
Namaitem1 : TipeitemData1
Namaitem2 : TipeitemData2
….
End;
Var NamaVariabelRecord : NamaTypeRecord;
Contoh
Type RecBarang = Record
Kodebarang : string[5];
NamaBarang : String[20];
Harga : Real;
End;
Var Barang : RecBarang;
Contoh 5.1
Program pendataan_buku_dengan_record;
Uses Crt;
Const Max=100;
Type Rbuku = Record
Kode : String[7];
Judul : String[7];
Ekse : Integer;
Harga : Real;
End;
Var
Buku : Rbuku;
Dafbuku : array[1..max] of Rbuku;
J, Ccbk : integer;
Jum, Rat : real;
Pilih : char;
Begin
Repeat
Clrscr;
Writeln(‘Menu Pilihan : ‘);
Writeln(‘[1]. Masukkan data Buku’);
Writeln(‘[2]. Lihat Daftar Buku’);
Writeln(‘[3]. Tambah Data Buku’);
Writeln(‘[4]. Selesai’);
36
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
run
Menu Pilihan :
[1]. Masukkan data Buku
[2]. Lihat Daftar Buku
[3]. Tambah Data Buku
[4]. Selesai
Pilihan Proses :
Berapa Buku ? : 3
Data ke - 1
Kode Buku : A01
Judul Buku : BASIC
Eksemplar :4
Harga Buku : 2000
Data ke - 2
Kode Buku : A02
Judul Buku : PASCAL
Eksemplar :3
Harga Buku : 1000
Data ke - 3
Kode Buku : A03
Judul Buku : PDE
Eksemplar :3
Harga Buku : 3000
Daftar BUKU
====================================
No. Kode Judul eks. Harga
====================================
1 A01 BASIC 4 2000.00
2 A02 PASCAL 3 1000.00
3 A03 PDE 3 3000.00
2. FILE DATA
38
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
2. FILE BERTIPE
Berikut adalah perbedaan antara file text dan file bertipe :
FILE TEXT
Beberapa perintah yang berkaitan dengan file text adalah :
1. Assign(f, nf)
Perintah ini berguna untuk mengaitkan suatu variabel file (f) dengan suatu nama file (nf).
Contoh : Assign(Mhs, ‘B:DataMhs’);
2. Rewrite(F)
Perintah ini berguna untuk membuka file, sehingga file tersebut telah dikaitkan dengan
variabel file (f) melalui procedure Assign. Perintah Rewrite akan mempunyai mode akses
REKAM, yaitu file tersebut dibuka untuk direkamkan data ke dalamnya
Contoh: Rewrite(Mhs);
3. Append(f)
Perintah ini membuka file seperti rewrite(f), tetapi file yang dibuka HARUS SUDAH
ADA terlebih dahulu. Sedangkan data yang direkam ke dalamnya akan MENAMBAH
pada data yang telah ada sebelumnya.
Contoh : APPEND(f)
4. Reset(f)
Perintah ini berguna untuk membuka file, sehingga file tersebut telah dikaitkan dengan
variabel file (f) melalui Assign juga. Perbedaan dengan Rewrite adalah Mode aksesnya
yaitu Reset mempunyai mode akses BACA. Reset berarti dibuka untuk dibaca data dari
dalam file tersebut.
5. Writeln(f, data) dan Write(f, data)
39
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
Perintah ini berguna untuk menuliskan/simpan ke dalam file yang nama filenya dikaitkan
ke variabel file f. Perbedaan Writeln dan Write mempunyai efek yang sama dengan efek
ke layar. Data akan dituliskan ke file dapat berupa KONSTANTA, EKSPRESI atau
VARIABEL.
Contoh : Assign(f2,’File_A’);
Rewrite(f2);
Write(f2,’Hallo’); Writeln(‘IPTTI’);
X := ‘Selamat Pagi’;
Writeln(f2,x);
6. Readln(f, Var)
Perintah ini berguna untuk membaca data dari file dengan variabel file f. Data akan
ditampung dalam variabel Var.
Perintah ini berkaitan dengan membuka file dengan RESET(f).
Contoh : Assign(f2,’DataMhs’);
Reset(f2);
Readln(f2,noMhs,Nama)
7. Close(f)
Peintah ini berguna untuk menutup file dengan variabel file f.
Contoh : close(f);
8. Eof (f)
Fungsi sebagai boolean yang berarti TRUE jika pointer baca dari file dengan variabel file
f berada di posisi paling akhir/terakhir dan bernilai FALSE jika tidak.
Berikut agar lebih jelas lihat contoh program
Contoh 5.2 :
Program Nilai_Mhs;
Uses Crt;
Var
F : text; {variabel fle}
NoMhs : string[5];
Nama : String[20];
Nilai : real;
Pil : Char;
Procedure RekamData;
Begin
Clrscr;
Assign(f,’Datmhs’);
Rewrite(f); {buka file baru}
Repeat
40
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
Procedure TambahData;
Begin
Assign(f,’DatMhs’);
Append(f); {buka file untuk ditambah data}
Rekamdata;
End;
Procedure LihatData;
Begin
Assign(f,’DatMhs’);
Reset(f); {buka file untuk diBACA/Dilihat datanya}
Clrscr;
Writeln(‘Daftar Nilai Siswa’);
Writeln(‘=====================================’);
Writeln(‘No Mhs Nama Nilai ‘);
Writeln(‘=====================================’);
While not eof (f) do
Begin
{baca dari file}
Readln(f,NoMhs, Nama, Nilai);
Writeln(Nomhs: 5, Nama: 20, ‘ ‘,Nilai: 5:2);
End;
Writeln(‘=====================================’);
Readln;
Close(f);
End;
FILE BERTIPE
42
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
Dalam mendeklarasikan variabel file, ada perbedaan antara file teks dengan file
bertipe yaitu :
Untuk file teks selalu : Var NamaVarFile : text
Untuk file bertipe : Var NamaVarFile : File Of Tipedata;
Dengan Tipedata dapat berupa integer, real, char, string atau record.
Contoh deklarasi variabel file dalam file bertipe adalah :
F : file of Real;
F : file of String[20];
F : file of RecMhs; Æ recMhs merupakan Type data Record
Adapun perintah yang ada dalam file text maupun file bertipe adalah :
Assign(f,’namfile’);
Rewrite(f);
Reset(f);
Close(f);
Fungsi EOF(f)
File bertipe mempunyai fungsi eof yang berbeda yaitu :
1. Untuk menulis ke file maka perintah yang dipakai HANYA : Write(f,NamaVar);
2. Untuk membaca file perintah yang dipakai HANYA : Read(f,NamaVar);
Disamping itu posisi record yang direkam dan dibaca dapat ACAK dan dapat DUA ARAH
yaitu REKAM/BACA.
Berikut adalah perintah yang ada pada file tipe :
1. Seek(f, noRec)
Perintah ini untuk memposisikan pointer baca pada noRec. Perlu ketahui bahwa
record pertama ada pada posisi 0, record ke dua ada ada posisi 1 dan seterusnya.
Contoh : Seek (f, 4); Read(f,V);
Hasil : Record 5 akan dibaca, hasilnya disimpan di variabel V.
Contoh : Seek(f,9); Write(f,V);
Hasil : Isi variabel V direkam di posisi record 10
2. Truncate(f)
Perintah ini untuk menghapus seluruh record mulai dari posisi POINTER BACA
berada.
43
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
Procedure RekamBaru;
Begin
Assign(fsis,’Datmhs’);
Rewrite(fsis);
Repeat
Writeln(‘KETIK NoMhs = HABIS jika selesai’);
Write(‘Nomor Mhs : ‘); Readln(Siswa.NoMhs);
If Siswa.NoMhs <> ‘HABIS’ then
Begin
Write(‘Nama Mhs : ‘); Readln(Siswa.Nama);
Write(‘Nilai Angka : ‘); Readln(Siswa.Nilai);
{rekam file}
Write(fsis,siswa);
Writeln;
End;
Until Siswa.NoMhs=’HABIS’;
44
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
Close(fSis);
End;
Procedure Tambahdata;
Begin
Assign(fSis,’DatMhs’);
Reset(fsis);
Seek(fsis, FileSize(fSis));
RekamBaru;
End;
Procedure BacaSemua;
Var P : Integer;
Begin
Assign(Fsis,’DatMhs’);
Reset(Fsis);
Writeln(‘Daftar Nilai’);
Writeln(‘=========================================’);
Writeln(‘NoMhs Nama Nilai ‘);
Writeln(‘=========================================’);
For P:= 1 to FileSize(fSis) do
Begin
Read(Fsis,Siswa);
With Siswa do
Writeln(NoMhs:5, Nama:20, Nilai:5,2);
End;
Writeln(‘=========================================’);
Readln;
Close(Fsis);
End;
Run
MENU UTAMA
1. Rekam Baru
2. Tambah Data
3. Lihat Data
4. Selesai
Pilihan proses :
46
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
7. Gotoxy(x,y:word);
Berfungsi untuk menempatkan posisi di layar pada X: kolom dan Y : baris . Termasuk dalam
unit Crt.
Contoh :
Program animasi;
Uses Crt;
Const Teks=’IPTTI KUSUMAYO’;
Var X: integer;
Begin
Clrscr;
For x:= 1 to 70 do begin
Gotoxy(x,12);Write(Teks);
Delay(500); End;
End.
48
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
Berfungsi untuk menerima masukan x real/integer dan akan mengembalikan nilai akar dari x.
15. Sin(x: real) : real; Cos(x: real): real dan ArcTan(x: real) : real;
Fungsi untuk memasukkan x real dalam radian untuk Sin dan Cos Æ sin(x) cos(x)
16. Random(x: integer) : integer;
Untuk mengacak bilangan. Random sangat potensial untuk membangkitkan efek-efek yang
berkaitan dengan animasi game dan peramalan.
17. Sound(n)
Berfungsi untuk mengaktifkan suara speaker n bernilai >100
18. Nosound
Untuk mute atau mematikan suara.
49
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
Mulai / Selesai
Kondi Data
si/Ke Masukan Dan
putus Keluaran
Dokument File
Simpan Data
Sambu
ngan
50
Dosen: Heriyanto,A.Md, S.Kom
PASCAL
DAFTAR PUSTAKA
1. Stubbs T., Daniel & Neil W. Webre, "Data Structures with Abstract Data Types and
Pascal", Brook/Cole Publishing Company, 1984.
2. Tanenbaum, A., "Data Structures using Pascal", Prentice-Hall, Englewood, NJ, 1976.
3. Borland International Inc Manual, TURBO PASCAL: version 6.0 REF.
4. Jogiyanto, HM, PASCAL Tingkat Lanjutan, Andi Ofset 1990.
5. Lewis, T.B. & Smith M.Z., "Applying Data Structures", second edition, Houghton Mifflin
Company, Boston.
6. Wirth, Nicklaus, "Algorithm & Data Structure Programs", Prentice-Hall, Englewood Cliff,
NJ, 1976.
7. Welsh, Jim ll., Elder J., Introduction to Pascal, New Jersey : Prentice Hall, Inc. 1982.
8. Santoso, P. Insap, Dasar-dasar Pemrograman Pascal: Teori dan Program terapan,
Yogyakarta: Andi Ofset, 1987.
9. Otto, Fischer, Borland Pascal/Turbo Pascal 7.0 Turbo Vision, PT. Dianastindo Adiperkasa
Internasional, Cetakan Kedua, April 1996, Jakarta.
51
Dosen: Heriyanto,A.Md, S.Kom