Anda di halaman 1dari 0

DhrMuiz. 2007.

Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

1
PEMROGRAMAN PASCAL
Daftar Isi
BAHASA KOMPUTER ..................................................................................................................................... 2
BAHASA PEMROGRAMAN PASCAL. .................................................................................................. 3
DEKLARASI VARIABEL DAN PENGENAL............................................................................................... 7
BARIS KOMENTAR ................................................................................................................................. 8
DEKLARASI VARIABEL .......................................................................................................................... 8
DEKLARASI KONSTANTA ..................................................................................................................... 9
NAMA PENGENAL (VARIABEL) ............................................................................................................ 9
STATEMEN MAJEMUK........................................................................................................................... 9
MEMILIH PIRANTI/LIBRARY ................................................................................................................ 10
ARITMATIKA .............................................................................................................................................. 11
A. OPERASI ARITMATIKA ................................................................................................................... 11
B. PENULISAN UNGKAPAN ARITMATIKA ........................................................................................ 12
C. URUTAN OPERASI .......................................................................................................................... 12
D. FUNGSI-FUNGSI STANDAR OPERASI ARITMATIKA ................................................................ 12
TIPE DATA BOOLEAN .............................................................................................................................. 13
STATEMEN MASUKAN DAN KELUARAN ............................................................................................. 14
STATEMEN KELUARAN WRITE DAN WRITELN .............................................................................. 14
UNGKAPAN LITERAL ........................................................................................................................... 14
STATEMEN MASUKAN READ DAN READLN ................................................................................... 15
PEMILIHAN PROSES ............................................................................................................................... 18
IF... THEN ............................................................................................................................................... 18
STATEMEN CASE ................................................................................................................................. 21
GOTO (Percabangan Non Kondisi) ...................................................................................................... 22
PROSES BERULANG (LOOPING) .......................................................................................................... 23
STATEMEN WHILE ... DO .................................................................................................................... 23
STATEMEN REPEAT ... UNTIL............................................................................................................ 24
STATEMEN FOR ... DO ........................................................................................................................ 25
LARIK (ARRAY) DIMENSI SATU ......................................................................................................... 27
LARIK DIMENSI BANYAK..................................................................................................................... 30
OPERASI STRING..................................................................................................................................... 32
PENYELEKSIAN STRING..................................................................................................................... 32
PROSEDUR STANDAR OPERASI STRING ...................................................................................... 32
FUNGSI STANDAR OPERASI STRING .............................................................................................. 34
PROSEDUR ............................................................................................................................................... 36
FUNGSI (FUNCTION) ............................................................................................................................... 38
RECORD..................................................................................................................................................... 38
DEKLARASI RECORD .......................................................................................................................... 39
MENGGUNAKAN TIPE DATA RECORD ............................................................................................ 39
FILE ............................................................................................................................................................. 43
MENDEKLARASIKAN FILE .................................................................................................................. 43
OPERASI PADA FILE............................................................................................................................ 44
FILE (BERKAS) TEXT ........................................................................................................................... 48
FILE TIDAK BERTIPE ........................................................................................................................... 51
POINTER DAN STRUKTUR DATA DINAMIK......................................................................................... 52
VARIABEL POINTER ............................................................................................................................ 52
VARIABEL DINAMIK ............................................................................................................................. 53
STRUKTUR DATA DINAMIK (LINK LIST) ........................................................................................... 53



DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

2
BAHASA KOMPUTER

Agar manusia dapat berkomunikasi dengan komputer maka dibutuhkan suatu bahasa komunikasi
yaitu bahasa komputer. Dengan bahasa ini komputer dapat memahami dan mengerti perintah-
perintah yang kita berikan kepadanya.

Sebenarnya, komputer tidak mengerti perintah-perintah yang kita tulis menggunakan bahasa tertentu.
Namun di dalam komputer tersebut terdapat penterjemah bahasa yang kita gunakan menjadi bahasa
yang dimengerti oleh komputer yaitu compiler atau interpreter, keduanya merupakan suatu program.
Perbedaannya antara keduanya adalah sebagai berikut:
Compiler menerjemahkan kode sumber menjadi objek bahasa mesin dalam bentuk file objek,
kemudian di-link dengan pustaka-pustaka lain yang berhubungan dengan kode sumber agar
dapat dijalankan pada setiap sistem operasi
Interpreter menerjemahkan kode sumber per baris demi baris dan langsung di eksekusi tanpa
menjadikannya dalam bentuk file objek

Jenis bahasa pemrograman komputer dibagi menjadi dua bagian yaitu bahasa tingkat rendah (yang
agak sulit dimengerti bagi orang awam) dan bahasa tingkat tinggi (yang dapat di mengerti oleh
manusia).

Bahasa Pemrograman Tingkat Rendah

Bahasa ini dibagi menjadi dua macam, yaitu Bahasa Mesin dan Bahasa Rakitan. Dalam Bahasa
Mesin semua perintah disandikan dengan deretan-deretan bit (binary digit) yang hanya mempunyai
nilai digit 1 atau 0. Sedangkan dalam Bahasa Rakitan, perintah-perintah tersebut bisa digantikan
dengan kode sandi yang bisa dipahami oleh manusia yaitu mnemonic code, Setiap mikroprosesor,
mempunyai mnemonic code yang berlainan.

Bahasa Pemrograman Tingkat Tinggi

Bahasa pemrograman ini merupakan bahasa komputer yang mudah dipahami karena menggunakan
bahasa percakapaan manusia sehari-hari. Diantaranya adalah.

Ada Diambil dari nama Augusta Ada Bryton, bangsawan dari Loveland, puteri Lord
Byron; bahasa ini dikembangkan sekitar tahun 1974 dan 1980 untuk Departemen
Pertahanan Amerika Serikat.
ALGOL ALGOrithmic Language (Bahasa Algoritma)
APL A Programming Language
BASIC Beginners All Purpose Symbolic Intsruction Code. Bahasa ini dikembangkan oleh
John Kemeny dan Thomas Kutrz, digunakan untuk memberi kuliah mahasiswa di
Dartmouth College tentang bagaimana menggunakan komputer.
C Dikembangkan oleh Bell Laboratories pada tahun 1970, bahasa ini sangat
powerfull dan sering digunakan untuk membuat program Sistem Operasi contohnya
MS-DOS, LINUX, UNIX serta program aplikasi DBASE, AUTOCAD dan game-
game yang banyak kita jumpai. Ada yang mengatakan bahasa ini merupakan
bahasa tingkat menengah karena sintaks bahasanya mirip bahasa tingkat tinggi
dan kemampuanya bahasa tingkat rendah.
COBOL Common Business-Oriented Language. Bahasa ini dikembangkan di Departemen
Pertahanan Amerika Serikat pada tahun 1960
FORTRAN Formula Translation, dikembangkan sekitar tahun 1956.
LISP List Processor
Pascal Diambil dari nama seorang sarjana Perancis Blaise Pascal. Pertama kali
dikembangkan oleh Niklauss Wirth, seorang ahli ilmu komputer dari Swiss, pada
tahun 1970.
PL/I Programing Langugae I, dikembangkan oleh IBM pada tahun 1964
PROLOG Programming Logig, bahasa yang digunakan untuk menyusun Expert System
RPG Report Program Generator
SNOBOL String Oriented Symbolic Language
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

3
BAHASA PEMROGRAMAN PASCAL.

Program adalah kumpulan instruksi atau perintah yang disusun sehingga mempunyai urutan logika
yang benar untuk menyelesaikan suatu persoalan. Program penerjemah atau compiler untuk Bahasa
Pascal banyak contohnya, diantaranya Turbo Pascal (Borland), Microsoft Pascal dan lain sebagainya.
Yang akan kita gunakan untuk mempelajari Bahasa Pascal adalah Turbo Pascal.

Ada beberapa aturan dalam penulisan program Pascal, berbeda sekali dengan aturan pada BASIC.
Pascal merupakan bahasa pemrograman yang terstruktur, maksudnya jika suatu proses telah sampai
pada suatu titik tertentu, maka proses selanjutnya tidak boleh melompati lagi ke baris sebelumnya,
kecuali untuk proses berulang. Sehingga hindari pemakaian GOTO sebanyak mungkin.

Struktur bahasa Pascal dapat anda lihat dibawah ini:

PROGRAM nama_program; { nama program, boleh ada atau boleh tidak
ada }
USES .. ( deklarasi library/pustaka fungsi }
LABEL . { deklarasi label }
CONST . { deklarasi konstanta }
TYPE. { deklarasi tipe data }
VAR { deklarasi variabel }
PROCEDURE satu;
PROCEDURE dua;
FUNCTION tambah;
BEGIN { awal program utama }
.
.
< Statemen-statemen dari program nama_program>
.
.
END. { akhir program utama }

Contoh:

PROGRAM contoh;
USES crt;
VAR
nama: STRING;

BEGIN

clrscr;
write('Ketik nama Anda : ');
readln(nama);
writeln('Selamat '+nama+', anda kini akan belajar PASCAL...!');
END.

Ketik nama Anda : Pengki
Selamat Pengki, anda kini akan belajar PASCAL!



DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

4
TIPE DATA

Dalam Pascal, semua variabel yang akan digunakan harus ditentukan tipe datanya. Tipe data tersebut
ada yang sudah ditentukan oleh Pascal dan ada yang ditentukan oleh kita sendiri. Untuk menentukan
tipe yang kita buat sendiri digunakan sintaks (type):

BU: TYPE variabelnya = tipe;

Dengan
Variabelnya : nama variabel yang menyatakan tipe data.
Tipe : tipe data yang berlaku dalam Pascal.

Tipe data dalam Turbo Pascal bisa digambarkan sebagai berikut:



























Tipe Sederhana (tipe data skalar)

Tipe sederhana terbagi menjadi dua, yaitu tipe ordinal dan tipe real.

1. Tipe Ordinal
Semua tipe sederhana dalam Pascal disebut tipe ordinal kecuali tipe Real. Tujuh tipe ordinal
standar yaitu integer, shortint, longint, byte, word, boolean dan char. Dan ada dua tipe ordinal
yang bisa didefinisikan sendiri oleh kita, yaitu tipe sub range dan enumerated.
Tipe
Sederhana
Tipe Data
Tipe String
Tipe Terstruktur
Tipe Pointer
Tipe Ordinal
Tipe Real
Integer
Boolean
Char
Subrange
Enumerate
d
Larik (Array)
Rekaman (Record)
Himpunan (Set)
Berkas (File)
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

5

a. Tipe Integer
Adalah tipe data yang nilainya tidak mempunyai titik desimal. Ada 5 tipe data yang termasuk
kelompok ini, yaitu shortint, integer, longint, byte dan word.
Batas nilai tipe integer

Tipe Batas Nilai Format
SHORTINT -128 .. 127 Signed 8-bit ( 1 byte)
INTEGER -32768 .. 32767 Signed 16-bit (2 byte)
LONGINT -2147483648 .. 2147483647 Signed 32 bit (4 byte)
BYTE 0 .. 255 Unsigned 8-bit (1 byte)
WORD 0 .. 65535 Unsigned 16-bit (2 byte)

Operator-operator pada data tipe integer:

Operator Arti
+ Penjumlahan
- Pengurangan
* Perkalian
DIV Pembagian
MOD Modulus (sisa pembagian)

b. Tipe Boolean
Tipe ini hanya mempunyai dua nilai yaitu TRUE atau FALSE, tipe ini biasanya digunakan
untuk operasi logika dengan ungkapan AND, OR atau NOT.

c. Tipe Char
Char digunakan untuk mendefinisikan tipe data yang nilainya merupakan sebuah karakter
yang telah tersaji dalam tabel ASCII. Dalam program nilai konstanta karakter diapit oleh tanda
petik ( ) , misal: A, 2.

d. Tipe Enumerated
Disebut tipe enumerated (terbilang) karena semua nilai disebut satu persatu, contoh:

TYPE hari = {MINGGU, SENIN, SELASA, RABU, KAMIS, JUMAT, SABTU, MINGGU};

e. Tipe Sub Range
Merupakan pemberian batas nilai yang mungkin untuk suatu variabel dari tipe data yang telah
didefinisikan. Sebagai contoh, jangkauan yang mungkin dari nilai ujian adalah dari 0 sampai
100,

TYPE nilai = 0..100;


2. Tipe Real

Konstanta tipe real adalah bilangan yang mempunyai titik desimal. Bilangan real bisa dinyatakan
dalam bentuk eksponensial. Dalam pemakaiannya pangkat dari bilangan dasar 10 (yang
digunakan untuk menunjukkan eksponensial) dinyatakan dengan notasi E.

contoh:

0.00017543 (1.7543x10
-4
) adalah 1.7543E-4

ada 5 macam tipe real, yaitu real, single, double, extended dan comp.




DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

6

Batasan nilai tipe real.

Tipe Batas Nilai Digit signifikan Ukuran
REAL 2.9 x 10
-39
.. 1.7 x 10
38
11 12 6 byte
SINGLE 1.5 x 10
-45
.. 3.4 x 10
38
7 8 4 byte
DOUBLE 5.0 x 10
-324
.. 1.7 x 10
308
15 16 8 byte
EXTENDED 3.4 x 10
-4932
.. 1.1 x 10
4932
19 20 10 byte
COMP -2
63
+ 1 .. 2
63
- 1 19 - 20 8 byte

Operator pada tipe Real

Operator Arti
+ Penjumlahan
- Pengurangan
* Perkalian
/ Pembagian

Contoh:
29.5 /5.0 = 5.8
29 div 5 = 5 (* terjadi pemotongan nilai desimal *)

3. Tipe String
Data yang bertipe string adalah data yang berisisi sederetan karakter yang banyaknya karakter
bisa berubah-ubah sesuai kebutuhan, yaitu dari 1 sampai 255 karakter.

Contoh:

Nama : STRING[60]; {variabel nama menampung karakter max. 60 karakter }
Nama : STRING; {variabel nama menampung karakter max. 255 karakter}


4. Tipe Terstruktur
Terdapat 4 tipe data terstruktur, yaitu larik (array), rekaman (record), himpunan dan file (berkas).

a. Tipe Array (Larik)
Array atau larik adalah tipe terstruktur yang mempunyai komonen dalam jumlah yang tetap
dan setiap komponen mempunyai tipe data yang sama. Posisi masing-masing komponen
dalam array dinyatakan sebagi nomor index. Contoh:

satu dimensi

TYPE tipe_saya : ARRAY [1..200] OF INTEGER;
{ menampung bil. Integer max. 200 }.
VAR
Var_baru : tipe_saya;

Atau

VAR
Var_baru : ARRAY [1..200] OF INTEGER;

dua dimensi atau lebih

VAR
Var_baru : ARRAY[1..200,1..200] OF REAL;


DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

7

b. Tipe Rekaman (Record)
Definisi Record hampir sama dengan Array, tetapi yang membedakan antara keduanya
adalah kalau Array semua komponennya bertipe data yang sama sedangkan Record setiap
komponennya bisa bertipe data yang beda-beda. Contoh:

TYPE my_rec = RECORD
Nama : STRING[90];
Npm : STRING[8];
Nilai : REAL;
END;

VAR
Data_nya : my_rec;

c. Tipe Himpunan
Himpunan (set) adalah kumpulan obyek yang mempunyai tipe data yang sama dan urutan
penulisannya tidak diperhatikan. Setiap obyek dalam suatu himpunan disebut dengan anggota
atau elemen himpunan. Contoh:

TYPE irama = (JAZZ, POP, ROCK ,DANGDUT, SKA);
Musik = SET OF irama;
VAR
Jenis_musik : Musik;

d. Tipe File (Berkas)
File (Berkas) adalah kumpulan sejumlah komponen yang bertipe data sama, yang jumlahnya
tidak tertentu, dan biasanya tersimpan dalam suatu media penyimpan luar.

e. Pointer
Tipe data pointer merupakan tipe data yang berbeda dengan yang lainnya. Semua tipe data
yang lainnya bersifat STATIS sedangkan tipe Pointer bersifat DINAMIS. Tipe ini merupakan
tipe data untuk suatu variabel, dimana isi variabel ini berupa alamat variabel lain, dalam artian
variabel pointer adalah variabel yang menunjuk nilai atau alamat variabel lainnya.

DEKLARASI VARIABEL DAN PENGENAL

Struktur program dalam Pascal dikelompokkan menajadi Judul Program, bagian deklarasi dan bagian
terproses. Contoh:

PROGRAM FIBONACCI;

(* Bagian Deklarasi Pustaka/Library *)
USES crt;
{ Bagian Deklarasi Variabel }

VAR
awal, akhir, simpan : INTEGER;

{ Bagian Terproses }

BEGIN

clrscr;
writeln('Deret Fibonacci');
writeln('---------------');writeln;
awal:=0;
akhir:=1;
write(awal,' ');
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

8

WHILE akhir<=100 DO
BEGIN
write(akhir,' ');
simpan:=akhir;
akhir:=simpan+awal;
awal:=simpan;
END
END.

Deret Fibonacci
---------------

0 1 1 2 3 5 8 13 21 34 55 89



Judul program digunakan untuk identifikasi program. Bagian deklarasi berisi informasi tentang piranti
atau library yang akan digunakan, variabel yang akan digunakan dalam program tersebut, dan juga
mungkin berisi definisi konstanta. Bagian terproses berupa sekelompok statemen yang diawali
dengan BEGIN dan diakhiri dengan END, diikuti tanda baca titik.
Beberapa aturan dalam menulis sebuah program adalah:

1. Akhir sebuag program Pascal ditandai dengan tanda baca titik (.) setelah END yang paling akhir.

END.

2. Beberapa statemen boleh ditulis menjadi satu baris dipisahkan dengan tanda baca titk koma (;).

Simpan := akhir; akhir := akhir + awal;

3. Spasi, baris komentar atau akhir sebuag baris dianggap pemisah. Sejumlah pemisah dapat
muncul diantara simbol-simbol Pascal, tetapi tidak boleh digunakan dalam sebuah nama atau
bilangan.
BARIS KOMENTAR
Baris komentar merupakan suatu penjelasan dalam program, dan bukan bagian yang akan diproses.
Baris komentar diletakan di antara tanda { dan } atau tanda (* dan *).
DEKLARASI VARIABEL
Bagian deklarasi variabel diawali dengan katak baku VAR. aturan penulisan bagian VAR antara lain
adalah:

1. VAR harus muncul dalam bagian deklarasi.
2. VAR harus dituliskan setelah definisi TYPE (jika ada) dan sebelum deklarasi PROCEDURE
atau FUNCTION (jika ada).
3. Variabel-variabel yang mempunyai tipe berbeda dapat dijadikan satu dalam deklarasi VAR.

VAR
a,b,c,d : REAL;
X,Y,Z : INTEGER;

4. Dalam deklarasi VAR susunan data bisa sembarang.

VAR
Z,X,Y : REAL;
c,d,a,b : INTEGER;



DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

9

5. Suatu tipe data dapat digunakan berulang kali dalam deklarasi VAR.

VAR
a,b,c : REAL;

atau

VAR
a : REAL;
b : REAL;
c : REAL;
DEKLARASI KONSTANTA
Dalam Pascal konstanta dibagi menjadi dua macam, yaitu konstanta tak bertipe dan konstanta bertipe.

1. Konstanta Tidak Bertipe
Konstanta tak bertipe adalah suatu konstanta yang nilainya tertentu dan tipenya tidak secara jelas
disebutkan. Contoh:

CONST faktor = 1.1;

2. Konstanta Bertipe
Konstanta bertipe adalah suatu konstanta yang selain ditunjukkan nilainya juga dinyatakan tipe
datanya. Konstanta bertipe sesungguhnya adalah variabel dengan nilai yang tetap, maka tidak
bisa saling dipertukarkan dengan konstanta biasa (konstanta tak bertipe). Contoh:

CONST awal : INTEGER = 1;
akhir : INTEGER = 100;
TYPE vektor = ARRAY [awal..akhir] OF REAL ( Salah }

CONST awal = 1;
akhir = 100;
TYPE vektor = ARRAY [awal..akhir] OF REAL ( Benar }
NAMA PENGENAL (VARIABEL)
1. Nama Pengenal harus diawali dengan huruf.
2. Karakter kedua dan selanjutnya bisa berupa kombinasi angka dengan huruf, tidak boleh ada
tanda baca lain dan spasi. Beberapa kompiler bisa menerima tanda garis bawah ( _ ). Huruf bisa
ditulis menggunakan huruf besar atau huruf kecil.
3. Cacah karakter dalam pengenal bisa sembarang, tetapi dalam beberapa versi semua karakter
setelah karakter ke-8 diabaikan.
4. Beberapa kata yang disebut keyword sudah ditentukan artinya dan tidak bisa digunakan sebagai
nama variabel. Contoh AND, ARRAY, WHILE, THEN dll.
STATEMEN MAJEMUK
Beberapa statemen yang harus dikerjakan berturutan dalam sebuah lokasi hanya boleh ditempati oleh
satu statemen. Statemen yang demikian biasa disebut sebagai statemen tunggal. Jika ada beberapa
statemen yang berturutan yang juga harus diletakkan dalam lokasi tunggal diletakkannya di antara
pengenal BEGIN dan END yang disebut dengan statemen MAJEMUK. Contoh:

Writeln(awal); { satu statement }
WHILE akhir <=100 DO
BEGIN
Writeln(akhir);
Simpan := akhir;
Akhir:= simpan + awal;
Awal:=simpan;
END
Beberapa statemen di
jadikan statemen tunggal
( statemen Majemuk )
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

10
MEMILIH PIRANTI/LIBRARY

Deklarasi Piranti diawali dengan kata USES diikuti nama piranti yang akan digunakan, misalnya:

Crt Memanfaatkan semua fasilitas yang dimiliki oleh monitor dan keyboard, termasuk
screen mode control, extented keyboard codes, color, window dan sound.
Dos Untuk memanfaatkan fungsi-fungsi DOS, ternasuk pengendalian tanggal dan jam
sistem, pencarian direktori dan eksekusi program
Graph Paket grafik yang powerful dengan dukungan CGA, EGA, VGA, HERC,IBM3270PC,
MCGA dan AT&T 6300.
Overlay Mengimpelmentasikan Overlay manager
Printer Menggunakan fungsi-fungsi yang berhubungan dengan printer
System Pemanfaatan pustaka-pustaka pada saat program dijalankan. Unit ini secara
otomatis digunakan oleh unit-unit lain atau program.

LATIHAN

A. Tuliskan OUTPUT pada program dibawah ini:


USES crt;
CONST kata=' Belajar PASCAL sangat Menyenangkan....##!';

VAR

nama : STRING[100];

BEGIN
clrscr;
write('Tuliskan Nama anda di samping : ');
readln(nama);
write('Kata si ',nama);writeln;
write(kata);
writeln;
write('Kata si ',nama);
write(kata);
writeln('Kata si',nama);
write(kata);
writeln;
writeln('Kata si',nama,kata);
readln;
END.

Jelaskan perbedaan penggunana WRITE dan WRITELN !

B. Perbaiki kesalahan pada program di bawah ini:

USES crt;
VAR

angka1,angka2,hasil:REAL;

BEGIN
clrscr;
write('Masukan Angka A : );
readln(angka1);
write('Masukan Angka B : ');
readln(angka3);

hasil=angka1 + angka2;
writeln('A + B = ',hasil:4:2);
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

11

hasil:=angka1 - angka2
writeln('A - B = ',hasil:5:3);

hasil:=angka1 x angka2;
writeln('A x B = ',hasil:3:6);

hasil:=angka1 / angka2;
writeln('A / B = ',hasil:2:3);
END;
ARITMATIKA
A. OPERASI ARITMATIKA
Dalam ungkapan operasi Aritmatika terdapat dua komponen yang terlibat langsung, yaitu Operator
dan Operand. Operator adalah suatu simbol yang digunakan untuk menyatakan suatu operasi;
Operand adalah besaran yang terlibat dalam suatu operasi, yang bisa berupa konstanta, variabel,
pengenal dan lain-lain.

Tabel Operator

Operasi Operand
Integer
Operand
Real
Penjumlahan + +
Pengurangan - -
Perkalian * *
Pembagian Div atau / /
Modulus (sisa pembagian) mod

Untuk operand bertipe Integer hasil pembagian menggunakan operator / akan memberikan hasil
bertipe Real.

Dalam pembentukan ungkapan aritmatika perlu memperhatikan beberapa hal:
1. Semua operasi harus dinyatakan secara eksplisit.
Contoh yang Benar:
A + B A / B
A * B A * (B / C)
K div L 5.0 * A
K mod L (2.0 * X 4.0 * B) / (A + 3.0 * Y * Y)

Contoh yang Salah:

5.0 A kurang operator diantara 5.0 dan A
(A)(B) diperlukan operator antara (A) dan (B)

2. Dua operator atau lebih tidak boleh saling berdampingan.
Contoh:
A *-B seharusnya A*(-B)
--A seharusnya (-A)

3. Nilai integer dapat diberikan ke variabel Real, tetapi tidak untuk sebaliknya.
Var
A : Real;
L : Integer;

A := L; benar
L := A; salah

DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

12
4. Operand-operand yang mempunyai tipe berbeda dapat menggunakan operator +, -, * dan /; hasil
dari operasi aritmatika menggunakan operand yang berbeda adalah nilai yang bertipe Real.
Contoh:
Var A : Integer;
X : Real;

X := X + 1 benar, tetapi sebaiknya dihindari.
A := A + 1.0 salah, hasil perhitungan memberikan hasil bertipe
Real yang tidak bisa diberikan ke variabel bertipe
integer.
A := A + A / 3 * 3 Salah, pembagian menggunaka operator / selalu
memberikan hasil bertipe Real. Hasilnya tidak bisa
diberikan pada variabel bertipe integer

B. PENULISAN UNGKAPAN ARITMATIKA

Dalam menulis program terutama ungkapan Aritmatika harus ditulis menjadi 1 baris, jika terlihat ruwet,
bisa dipecah menjadi beberapa baris. Contoh:

Dalam pemrograman ditulis:
X := (-B+sqrt(B*B-4.0*A*C))/(2.0*A); (* sqrt = akar kwadrat dari
suatu variabel *)

Bisa dipecah menjadi:
P := B *B 4.0 *A * C;
Q := 2.0 * A;
X := (-B+ sqrt(P)) / Q;

C. URUTAN OPERASI
Operator Prioritas
* / div mod Lebih tinggi (dikerjakan dulu)
+ - Lebih rendah (dikerjakan kemudian)

Contoh:

Ungkapan A B / C, berarti

D. FUNGSI-FUNGSI STANDAR OPERASI ARITMATIKA

Fungsi Argumen Hasil Keterangan
Abs (x) Integer Integer Mengambil harga mutlak dari X
Real Real
Arctan (x) Integer/real Real Menghitung arctangent X
Cos ( x) Integer/real Real Menghitung cosinus x
Exp (x) Integer/real Real Menghitung pangkat dengan bilangan pokok bil.
Natural (e) dengan pangkat x
Ln (x) Integer/real Real Menghitung logaritma dengan bilangan pokok
bil. Natural (e) dari x
Sin (x) Integer/real Real Menghitung sinus x
a
ac b b
x
2
4
2

=
C
B
A
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

13
Sqrt (x) Integer/real Real Menghitung akat kuadrat dari x
Trunc (x) Real Integer Memotong nilai x
Round (x) Real Integer Membulatkan nilai x
Sqr (x) Integer Integer Menghitung kuadrat (pangkat dua) dari x
Real Real

Contoh:
Trunc(19.8) menghasilkan 19
Trunc(19.0001) menghasilkan 19
Round(19.8) menghasilkan 20 (pembulatan ke atas)
Round(19.0001) menghasilkan 19 (pembulatan ke bawah)

TIPE DATA BOOLEAN
Ungkapan boolean adalah sembarang ungkapan yang selalu bernilai True atau False. Ungkapan-
ungkapan yang dibentuk menggunakan operator pembanding, ( < , <=, >=, > ,<>) merupakan salah
satu ungkapan boolean.

1. Operator Not
Operator Not digunakan untuk mengingkari nilai suatu statemen boolean.

2. Operator And
Operator and digunakan untuk mentest kondisi yang memerlukan lebih dari 1 syarat dimana
semua syarat harus dipenuhi.

3. Operator Or
Jika pada operator And suatu kondisi akan bernilai True jika dan hanya jika semua syarat
yang diberikan dipenuhi, maka operator Or jika salah satu dari syarat yang diberikan dipenuhi,
maka kondisi yang ditest akan bernilai True.

Tabel Kebenaran

A B A AND B A OR B NOT A NOT B
False False False False True True
False True False True True False
True False False True False True
True True True True False False

Contoh Program:

Uses crt;
Var
Nama_siswa : string[30];
Npm : string[8];
Nilai_mid, nilai_final : integer;
Nilai : integer;
Hasil : Char;
Begin
Clrscr;
Write(Input Nama Mahasiswa : );readln(Nama_siswa);
Write(Input Npm : );readln(npm);
Write(Nilai Mid Test : );readln(Nilai_mid);
Write(Nilai Final Test : );readln(Nilai_final);
Nilai := (Nilai_mid + Nilai_final) div 2;
{ DIV : pembagian data integer }
If Nilai > 80 Then
Hasil := A
Else If (Nilai <= 80) And (Nilai > 60) Then
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

14
Hasil := B
Else If (Nilai <= 60) And (Nilai > 40) Then
Hasil := C
Else If (Nilai <= 40) And (Nilai > 20) Then
Hasil := D
Else
Hasil := E;
Writeln;
writeln(Hasil akhir ,Nama_siswa, adalah ,hasil);
End.

Input Nama Mahasiswa : Pengki
Input Npm : 66709878
Nilai Mid Test : 40
Nilai Final Test : 30

Hasil akhir Pengki adalah D


STATEMEN MASUKAN DAN KELUARAN
STATEMEN KELUARAN WRITE DAN WRITELN

Statemen Write dan Writeln dapat berisi sembarang argumen. Penggunaan kedua statemen ini
adalah:
Write digunakan untuk mencetak beberapa argumen pada baris yang sama.
Writeln yang tidak diikuti argumen hanya akan mencetak satu baris kosong.
Writeln yang diikuti argumen akan mencetak nilai argumen tersebut dan berpindah ke
baris berikutnya.

BU:
Write/Writeln (berkas,ungkapan1,ungkapan2,)
Dengan

Berkas : nama berkas keluaran. Parameter ini bersifat optional, jika tidak diisi maka keluarannya
adalah standar yaitu layar monitor.
Ungkapan1, ungkapan2 : bisa berupa variabel, string, literal atau sembarang ungkapan.

Contoh:
Write ( Cetak kalimat );
{ string harus diapit di antara tanda petik }
Writeln ( Hasil keluaran : ,Hasil , ,A,B);
Writeln (A,B+C,4+5);
Writeln; { cetak satu baris kosong }

UNGKAPAN LITERAL

Ungkapan ini digunakan jika mencetak dengan cacah kolom yang telah ditentukan dan akan dicetak
Rata Kanan. Contoh:

Writeln(NILAI:10); {menyediakan 10 kolom, dan nilai
dicetak rata kanan }

N I L A I

B:=56; { B adalah variabel bertipe integer }
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

15
Writeln (B:5);

5 6

X:=78.95842 { X adalah variabel bertipe Real }
Writeln(X:10:2) { Menyediakan 10 kolom diantaranya 3 kolom untuk desimal
dan titik }

7 8 . 9 6

Untuk Mencetak ke printer, cukup dengan menambahkan lst, pada argumen berkas dan tambahkan
unit printer pada USES.

USES printer;
Begin
Writeln(lst,Kalimat ini akan dicetak ke printer!);
End.
STATEMEN MASUKAN READ DAN READLN

Statemen Read tidak memperhatikan batas baris, rinci data (yang tersedia) akan selalu dibaca tidak
tergantung apakah mereka ada di baris yang sama atau tidak. Statemen Readln memulai pembacaan
data pada posisi baris saat itu dan meneruskan ke awal baris baru setelah pembacaan selesai. Kedua
statemen ini beranggapan bahwa data masukan terdiri dari aliran rinci data yang kontinyu (continue).

BU:
Read/Readln(var1,[var2, ... ]);
Di mana variabel-variabel yang akan dibaca harus bertipe ordinal (integer, Real, char atau string).
Contoh:

Read (X ,Y ,Z); { X,Y,Z bertipe Real)

Data yang diinput :
67.8 88.9 55.7 67.9 45.8

maka nilai yang diterima ketiga variabel tersebut adalah: X=67.8 Y=88.9 Z=55.7

Data untuk variabel-variabel tersebut dapat diketikan pada satu baris dimulai dari nomor kolom
sembarang dengan setiap nilai dipisahkan oleh paling sedikit satu spasi.

Jika menggunakan statemen Read ada beberapa hal yang perlu diingat bahwa:
Nilai-nilai variabel harus disusun dengan urutan yang sesuai dengan susunan variabel dalam
statemen Read.
Jika variabel yang dibaca bertipe integer atau real data yang ada di baris berikutnya akan terus
dibaca selama masih ada variabel variabel yang akan menerima nilai,
Nilai-nilai yang dibacakan harus berada dalam satu baris; tidak boleh disambung ke baris lain.
Variabel dari tipe yang berbeda (integer, real, char atau string, kecuali boolean) dapat dibaca
dengan urutan sembarang.
Variabel dalam read dan nilai yang bersesuaian harus mempunyai tipe data yang sama.

Penggunaan statemen Readln sangat mirip dengan statemen Read dengan perbedaanya adalah
bahwa setelah semua nilai pada satu baris dibaca, cursor akan diset pada posisi baris berikutnya.
Maka statemen:

Readln (X,Y,Z); ekivalen dengan Read(X,Y,Z);Writeln;


DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

16
Contoh:
Readln(A,B,C);
Read(D);

Nilai yang diberikan:
12.43 145.65 65.986 432.14 322.34 56.3

maka nilai-nilai variabel diperoleh adalah:
A = 12.43 B = 145.65 C = 65.986 D = 78.43

Kasus 1:
Seorang nasabah meminjam uang di bank sebanyak Rp 5 juta untuk jangka waktu 3 tahun, dengan
tingkat bunga 2% per tahun. Berapa jumlah pelunasan yang harus dibayarkan jika pembayaran
dilakukan sebanyak 2 kali ?
Formulasi:

Fn : jumlah yang dibayarkan
P : jumlah sekarang
i : tingkat bunga per tahun
n : jumlah tahun
m : frekuensi pembayaran bunga dalam setahun

Contoh Program:

{ **************************************
* Contoh program Model Bunga Majemuk *
**************************************}

USES crt;

FUNCTION Pangkat(base : Real; p:integer):Real;
VAR
i:INTEGER;
n:REAL;
BEGIN
n := base;
FOR i:=1 TO p-1 DO
n := n * base;
Pangkat:=n;
END;

VAR
P,F,i : Real;
n,m : Integer;
BEGIN
clrscr;
writeln('PENGEMBALIAN UANG PINJAMAN BANK');
writeln('-------------------------------');
write('Jumlah uang pinjaman sekarang : ');readln(P);
write('Jangka pembayaran (x tahun) : ');readln(n);
write('Tingkat bunga per tahun (%) : ');readln(i);
write('Pembayaran dilakukan berapa kali ? : ');readln(m);

{ proses penghitungan bunga majemuk }

i:= i / 100.0;
F:= P * Pangkat(1+i/m,n*m);
writeln;
writeln('Pelunasan setelah ',n,' tahun sejumlah Rp ',trunc(F):10);
END.
mn
n
m
i
P F

+ = 1
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

17

PENGEMBALIAN UANG PINJAMAN BANK
-------------------------------
Jumlah uang pinjaman sekarang : 5000000
Jangka pembayaran (x tahun) : 3
Tingkat bunga per tahun (%) : 2
Pembayaran dilakukan berapa kali ? : 2

Pelunasan setelah 3 tahun sejumlah Rp 5307600



Kasus 2:
Penduduk suatu kota berjumlah 1200000 jiwa pada tahun 2003, tingkat pertumbuhannya 6% per
tahun. Hitunglah jumlah penduduk kota tersebut pada tahun 2010 !
Formulasi:
P1 : Jumlah pada tahun pertama
Pt : Jumlah Pada tahun ke-t
Di mana : R = 1 + r r : Persentase pertumbuhan per tahun
t : Indeks waktu (tahun)
Contoh Program:

{ *********************************************
* Contoh program Model pertumbuhan penduduk *
*********************************************}
USES crt;

FUNCTION Pangkat(base : Real; p:integer):Real;
VAR
i:INTEGER;
n:REAL;
BEGIN
n := base;
FOR i:=1 TO p-1 DO
n := n * base;
Pangkat:=N;
END;

VAR
p1,rr,R,Pt : Real;
th1,th2,t : Integer;
BEGIN
clrscr;
writeln('JUMLAH PERTUMBUHAN PENDUDUK');
writeln('----------------------------');
write('Tahun Pertama : ');readln(th1);
write('Jumlah Penduduk Th. Pertama : ');readln(p1);
write('Tahun Terakhir Pertumbuhan : ');readln(th2);
write('Presentase Pertumbuhan/thn : ');readln(rr);

{proses penghitungan}
rr:=rr / 100.0;
R :=1 + rr;
t :=(th2-th1)+1;
Pt:=p1*Pangkat(R,t-1);
writeln;
writeln('Jumlah Penduduk pada tahun ',th2,' sebanyak ',trunc(Pt),'
jiwa.');
END.

1
1

=
t
t
R P P
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

18
JUMLAH PERTUMBUHAN PENDUDUK
----------------------------
Tahun Pertama : 2003
Jumlah Penduduk Th. Pertama : 1200000
Tahun Terakhir Pertumbuhan : 2010
Presentase Pertumbuhan/thn : 6

Jumlah Penduduk pada tahun 2010 sebanyak 1804356 jiwa.


PEMILIHAN PROSES
Dalam pemrograman terstruktur ada 3 macam proses ekekusi statemen, yaitu:
1. Proses eksekusi secara berurutan (sequential),
2. Proses pemilihan (selection) dan
3. Proses berulang

Proses eksekusi secara berurutan dimulai dari statemen paling awal sampai kepada statemen paling
akhir secara berurutan. Terkadang ada kalanya proses eksekusi harus dilompatkan ke suatu statemen
yang berada jauh di bawah, atau diperlukan adanya proses berulang. Karenanya digunakan statemen
kendali.
Statemen kendali adalah statemen yang digunakan untuk mengubah urutan eksekusi program dari
pola eksekusi normal (secara berurutan) ke pola yang lain ( secara tidak berurut), yaitu statemen
pemilihan proses dan proses berulang.
Statemen pemilihan proses dalam Pascal ada dua buah statemen, yaitu if... then... dan case. Variasi
bentuk if...then diantaranya adalah pilihan tunggal, pilihan ganda dan pilihan jamak.

Operator Pembanding.

Simbol Arti
= Sama dengan
<> Tidak sama dengan
> Lebih besar dari
>= Lebih besar atau sama dengan
< Lebih kecil dari
<= Lebih kecil atau sama dengan
IF... THEN
Pilihan Tunggal
Bentuk paling sederhana dari statemen if...then adalah pilihan tunggal, yakni jika hanya ada
satu pilihan yang disediakan. Contoh:

USES crt;
VAR
Angka, asal : Real;
Begin
Clrscr;
Write (Masukkan sembarang angka = );
Readln(Angka); { If kondisi Then }
Writeln; { statemen }
Asal := Angka;
If Angka < 0 then
Angka := -1 * angka;
Writeln (Nilai Mutlak dari , Asal:1:3, = ,Angka:1:3);
End.

JUMLAH PERTUMBUHAN PENDUDUK
----------------------------
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

19
Masukkan sembarang angka = -78

Nilai Mutlak dari 78 = 78


Pilihan Ganda
Yakni memilih salah satu dari 2 pilihan yang disediakan. Bentuk umum:

If kondisi Then
Statemen1
Else
Statemen2;

Contoh:

USES crt;
VAR
Pertama, kedua, hasil : Real;
Begin
Clrscr;
Write(Input angka pertama : ); Readln(Pertama);
Write(Input angka kedua : ); Readln(Kedua);
Writeln;
If kedua <= 0 then
Hasil := -1 * kedua
Else
Hasil := kedua (2 * Pertama kedua) / (1 kedua);
Writeln(Hasil = ,hasil:2:3);
End.

Input angka pertama : 10.0
Input angka kedua : 5.0

Hasil = 1.250


Pilihan Jamak
Pilihan jamak merupakan variasi statemen IF yang lebih lengkap. Dalam pemilihan proses
disediakn lebih dari 2 pilihan yang harus dipilih salah satu. Bentuk umumnya:

If kondisi1 then
Statemen1
Else if kondisi2 then
Statemen2
Else if kondisi3 then
Statemen3
Else
...
...

Contoh program untuk menghitung akar persamaan kuadrat. Akan dihitung akar persaman
kuadrat

Dengan koefisien A,B dan C. Dan formulasi untuk menghitung x1 dan
x2 adalah :
Dan


Dengan ketentuan-ketentuan sbb:
0
2
= + + C Bx Ax
A
D
B x x
2
,
2 1
= AC B D 4
2
=
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

20
Jika A = 0, maka
menjadi

Dan persamaan ini bukan persamaan kuadrat.
Jika D (diskriminan) := B * B 4 * A * C mempunyai nilai positif, maka akarnya
adalah:
X1 := (-B + sqrt(D)) / (2.0 * A) dan X2 := (-B sqrt(D))/(2.0 * A)
Jika D := B * B 4 * A * C mempunyai nilai negatif, maka akarnya adalah:
X1 := -B/ (2.0 * A) + sqrt(abs(D))/(2.0 * A))i (imajiner)
X2 := -B/ (2.0 * A) - sqrt(abs(D))/(2.0 * A))i (imajiner)

Contoh Program:

Uses Crt;
Var
A,B,C,D :Real;
x1,x2,x1i :Real;
Begin
clrscr;
writeln('MENGHITUNG AKAR PERSAMAAN KUADRAT');
writeln('---------------------------------');
writeln('Ax^2 + Bx + Cx = 0');
writeln;
write('Koefisien A = ');readln(A);
write('Koefisien B = ');readln(B);
write('Koefisien C = ');readln(C);
writeln;
If A = 0 Then
Begin
writeln('Koefisien A = 0, bukan persamaan kuadrat !');
x1:=-C / B;
writeln('Harga X = ',x1:1:3);
End
Else
Begin
D:=B*B-4*A*C;
If D > 0 Then
Begin
x1:=(-B + sqrt(D)) / (2.0*A);
x2:=(-B - sqrt(D)) / (2.0*A);
writeln('Nilai Diskriminan = ',D:1:3);
writeln('Akar x1 = ',x1:1:3);
writeln('Akar x2 = ',x2:1:3);
End
Else If D = 0 Then
Begin
x1:=-B/(2.0*A);
writeln('Nilai Diskriminan = 0');
writeln('Dua akar yang sama = ',x1:1:3);
End
Else
Begin
x1:=-B/(2.0*A);
x1i:= - sqrt(abs(D))/(2.0*A);
writeln('Nilai Diskriminan = ',D:1:3);
writeln('Dua Akar Imajiner :');
writeln('Akar x1 = ',x1:1:3,' + ',abs(x1i):1:3,'i');
writeln('Akar x2 = ',x1:1:3,' - ',abs(x1i):1:3,'i');
End
End
End.
0
2
= + + C Bx Ax
0 = + C Bx
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

21

MENGHITUNG AKAR PERSAMAAN KUADRAT
---------------------------------
Ax^2 + Bx + Cx = 0

Koefisien A = 1
Koefisien B = 2
Koefisien C = -8

Nilai Diskriminan = 36.000
Akar x1 = 2.000
Akar x2 = -4.000

STATEMEN CASE
Sejumlah statemen if dalam pilihan jamak terlihat agak membingungkan terutama bagi pemula,
beberapa pemilihan proses untuk sejumlah pilihan jawaban bisa dilakukan dengan statemen Case.
Bentuk umum:
Case ungkapan of
Label 1 : statemen 1;
Label 2 : statemen 2;
...
...
Label n : statemen n;
End
Dengan:
1. Ungkapan yang mengikuti kata case dapat berupa sembarang ungkapan yang memberikan
hasil integer, char, boolean atau tipe terbilang.
2. Label, yang masing-masing disebut label kasus, adalah konstanta yang mempunyai tipe yang
sama dengan ungkapan. Setiap label kasus dapat terdiri dari sejumlah konstanta dipisahkan
dengan koma. Konstanta tertentu hanya bisa muncul dalam satu label kasus.
3. Antara label kasus dengan statemen yang mengikutinya dipisahkan dengan tanda baca titik
dua (:)
4. Statemen yang mengikuti tanda titik dua dapat berupa statemen tunggal atau majemuk.
5. Dalam setiap statemen case bisa terdiri dari sejumlah label kasus diikuti dengan statemen
yang berhubungan.
6. Kata end digunakan untuk mengakhiri setiap statemen case dan merupakan bagian dari
statemen case.

Pada saat statemen case dikerjakan, beberapa proses akan terjadi, yaitu:
1. Ungkapan yang mengikuti case akan dihitung.
2. Satu dari sejumlah statemen yang ada dalam struktur case akan dipilih berdasarkan nilai
konstanta dalam label kasus yang nilainya sama dengan nilai ungkapan yang telah dihitung.
3. Statemen yang dimaksud akan dikerjakan.
4. Statemen yang mengikuti end akan dikerjakan.

Contoh Program

Uses crt;
Var
Nama_siswa : string[30];
Npm : string[8];
Nilai_mid, nilai_final : integer;
Nilai : integer;
Hasil : string[20];
Begin
Clrscr;
Write(Input Nama Mahasiswa : );readln(Nama_siswa);
Write(Input Npm : );readln(npm);
Write(Nilai Mid Test : );readln(Nilai_mid);
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

22
Write(Nilai Final Test : );readln(Nilai_final);
Nilai := (Nilai_mid + Nilai_final) div 2;
{ DIV : pembagian data integer }
Case Nilai Of
1..20 : hasil := Jelek;
21..40 : hasil := Kurang;
41..60 : hasil := Cukup;
61..80 : hasil := Baik;
else hasil := Istimewa; (* 81 <= I <= 100 *)
End;
Writeln;
writeln(Hasil akhir ,Nama_siswa, adalah ,hasil);
End.

Input Nama Mahasiswa : Pengki
Input Npm : 66709878
Nilai Mid Test : 40
Nilai Final Test : 30

Hasil akhir Pengki adalah Kurang


GOTO (Percabangan Non Kondisi)
Statemen GOTo digunakan untuk melompat dari satu posisi ke posisi lain tanpa harus menggunakan
ekspresi kondisi. Sintaks GOTO adalah GOTO label;

Label dapat berupa angka atau identifikasi lain dengan terlebih dahulu dideklarasikan dengan
statemen label.

Contoh:

Uses Crt;
var
Karakter: Char;
label
INPUT_LAGI,BERAKHIR;
Begin

INPUT_LAGI:
Clrscr;
Write('Ketikan sebuah karakter ');
Readln(Karakter);
if (Ord(Karakter)>64) and (ord(karakter)<91) then
begin
writeln('Anda menginput Huruf Besar!');
Goto BERAKHIR;
end
else if (Ord(Karakter)>96) and (ord(karakter)<123) then
begin
writeln('Anda menginput Huruf Kecil!');
goto BERAKHIR;
end
else if (Ord(Karakter)>47) and (ord(karakter)<58) then
begin
writeln('Anda menginput Angka!');
goto BERAKHIR;
end
else
begin
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

23
writeln('Input anda bukanlah karakter alphabet!');
readln;
Goto INPUT_LAGI;
end;
BERAKHIR:
End.

Ketikan sebuah karakter : t
Anda menginput Huruf Kecil!


PROSES BERULANG (LOOPING)
STATEMEN WHILE ... DO
Statemen ini digunakan bila satu atau lebih statemen akan dieksekusi berulang kali sampai kondisi
yang dinyatakan dalam statemen WHILE tidak dipenuhi. Bentuk umumnya:

While kondisi do
Statemen

Dengan
Kondisi : ungkapan boolean yang digunakan sebagai syarat agar statemen dikerjakan berulang kali.
Statemen : statemen tunggal atau statemen majemuk yang akan diproses ulang.

Contoh:

uses crt;
var
i,jumlah,nilai:integer;
rerata:real;
begin
clrscr;
writeln('MENGHITUNG HARGA RATA-RATA SEJUMLAH DATA NILAI');
writeln('----------------------------------------------');
writeln;
writeln('Isi Nilai dengan bilangan Positif dan negatif untuk
Selesai..');
I:=0;
Jumlah:=0;
write('Masukan data ke-',I+1,' = ');readln(nilai);
while nilai>=0 do
begin
inc(i); { bisa diganti dgn i := i + 1; }
inc(jumlah,nilai); { bisa juga dgn jumlah := jumlah +
nilai; }
write('Masukan data ke-',I+1,' = ');readln(nilai);
end;
rerata := jumlah / i; writeln;
writeln('Cacah Data = ',I:5);
writeln('Jumlah Data = ',jumlah:5);
writeln('Nilai Rata-rata = ',rerata:8:2);
end.

MENGHITUNG HARGA RATA-RATA SEJUMLAH DATA NILAI
----------------------------------------------

Isi Nilai dengan bilangan Positif dan negatif untuk Selesai..
Masukan data ke-1 = 3
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

24
Masukan data ke-2 = 3
Masukan data ke-3 = 4
Masukan data ke-4 = 5
Masukan data ke-5 = -1

Cacah Data = 4
Jumlah Data = 15
Nilai Rata-rata = 3.75

STATEMEN REPEAT ... UNTIL
Cara kerja statemen ini merupakan kebalikan dari statemen while. Karena untuk statemen while, test
penghentian looping ada di awal kalang, tetapi untuk repeat ini ada di akhir kalang. Dan dalam
statemen repeat ini proses berulang akan dilaksanakan terus selama kondisi dipenuhi. Bentuk
umumnya:

Repeat
Statemen
Until kondisi

Contoh:

uses crt;
var
i,jumlah,nilai:integer;
maksimum,minimum:integer;
rerata:real;
begin
clrscr;
writeln('MENGHITUNG HARGA RATA-RATA,MIN,MAX SEJUMLAH DATA NILAI');
writeln('----------------------------------------------');
writeln;
writeln('Isi Nilai dengan bilangan Positif dan negatif untuk
Selesai..');
I:=0;
Jumlah:=0;
write('Masukan data ke-',I+1,' = ');readln(nilai);
if nilai < 0 then
writeln('Tidak ada nilai yang dimasukkan...!')
else
begin
minimum:=nilai;
maksimum:=nilai;
repeat
if nilai<minimum then
minimum:=nilai;
if nilai>maksimum then
maksimum:=nilai;

i := i + 1;
jumlah := jumlah + nilai;
write('Masukan data ke-',I+1,' = ');readln(nilai);
until nilai < 0;
rerata := jumlah / i; writeln;
writeln;
writeln('Cacah Data = ',I:5);
writeln('Jumlah Data = ',jumlah:5);
writeln('Nilai Rata-rata = ',rerata:8:2);
writeln('Nilai Maksimum = ',maksimum:5);
writeln('Nilai Minimum = ',minimum:5);
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

25
end
end.

MENGHITUNG HARGA RATA-RATA,MIN,MAX SEJUMLAH DATA NILAI
----------------------------------------------

Isi Nilai dengan bilangan Positif dan negatif untuk Selesai..
Masukan data ke-1 = 6
Masukan data ke-2 = 4
Masukan data ke-3 = 5
Masukan data ke-4 = 3
Masukan data ke-5 = 7
Masukan data ke-6 = 2
Masukan data ke-7 = -1


Cacah Data = 6
Jumlah Data = 27
Nilai Rata-rata = 4.50
Nilai Maksimum = 7
Nilai Minimum = 2


STATEMEN FOR ... DO
Dalam statemen for pengawalan nilai variabel kendali kalang, penambahan nilai dan test batas nilai
akan dilaksanakan secara otomatis oleh komputer. Contoh:

Jumlah := 0;
For bulat := 1 to 25 do
Jumlah := Jumlah + bulat;
Writeln(JUMLAH = , jumlah:1);

Dalam program di atas, statemen:

For Bulat := 1 to 25 do

Bisa diartikan sebagai:
dimulai dengan nilai variabel bulat = 1, kerjakan statemen yang ditulis setelah kata do. Tambahkan 1
pada nilai variabel Bulat pada setiap pengerjaan statemen, dan keluar dari looping jika nilai variabel
bulat telah melebihi 25.


BU:
For variabel := ungkapan1 to ungkapan2 do
Statemen;


Aturan-aturan penggunaan for:

1. variabel, ungkapan1 dan ungkapan2 harus mempunyai tipe sama, dan harus bertipe ordinal.
2. Kata to menunjukkan nilai variabel berubah menjadi nilai penerus setiap kali operasi looping
dikerjakan.
3. Kata to akan dikerjakan jikai nilai variabel masih lebih kecil atau sama dengan nilai akhir (nilai
ungkapan2).
4. Kata downto menunjukkan nilai variabel berubah menjadi nilai pendahulunya setiap kali operasi
looping dikerjakan. Dengan kata lain kata downto harus digunakan jikai nilai awal lebih besar dari
nilai akhir.
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

26
5. Kata downto akan dikerjakan jika nilai variabel masih lebih besar atau sama dengan nilai
ungkapan2.

Interprestasi statemen-statemen for...do adalah sebagai berikut:

var I : integer;
for I:= 1 to 100 do statemen;

statemen akan dikerjakan 100 kali.

var I,L,N : integer;
for I:= L to N do statemen;

statemen akan dikerjakan sbanyak (N-L+1) kali.

var KK : integer;
for KK := 25 downto 1 do statemen

statemen akan dikerjakan sebanyak 25 kali dimulai dari KK = 25, 24, 23..., 1.

var Berikut : integer;
for berikut := 2.0 to 100 do statemen;

salah, karena nilai awalnya adalah Real.

var Kata : char;
for Kata := A to F do statemen

statemen akan dikerjakan 6 kali dimulai K = A, B,...,F.

type Namahari = (SENIN,SELASA,RABU,KAMIS,JUMAT,SABTU,MINGGU);
var Hari : Namahari;
for Hari:= SELASA to SABTU do statemen;

statemen akan dikerjakan 5 kali.

Contoh Program Menghitung Nilai Faktorial

USES crt;
VAR
Faktor : Real;
Cacah,Bil_Awal,
Bil_Akhir,Counter,Baris : Integer;

BEGIN
clrscr;
writeln('TABEL FAKTORIAL');
write('Bilangan Awal = ');readln(Bil_Awal);
write('Bilangan Akhir = ');readln(Bil_Akhir);
writeln;
writeln(' TABEL FAKTORIAL');
writeln('-----------------------------------------');
writeln(' Bilangan Harga Faktorial');
writeln('-----------------------------------------');
Baris:=9;

For Cacah:=Bil_Awal to Bil_Akhir do
Begin
Faktor:=1;
For Counter:= 1 to Cacah do
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

27
Faktor:=Faktor*Counter;
gotoxy(2,Baris);Write(Cacah:8);
gotoxy(20,Baris);Writeln(Faktor:1:1);
Baris:=Baris+1;
End;
writeln('-----------------------------------------');
END.

TABEL FAKTORIAL
Bilangan Awal = 1
Bilangan Akhir = 12

TABEL FAKTORIAL
-----------------------------------------
Bilangan Harga Faktorial
-----------------------------------------
1 1.0
2 2.0
3 6.0
4 24.0
5 120.0
6 720.0
7 5040.0
8 40320.0
9 362880.0
10 3628800.0
11 39916800.0
12 479001600.0
-----------------------------------------



LARIK (ARRAY) DIMENSI SATU
Salah satu tipe data terstruktur yang telah kita pelajari dari modul materi terdahulu adalah array atau
dengan istilah lainnya adalah larik. Terminologi dari larik itu sendiri, yaitu:
1. Larik adalah deretan rinci data yang mempunyai tipe data sejenis. Untai karakter (string)
merupakan contoh array.
2. Setiap rinci data disebut dengan komponen atau elemen array.
3. Setiap larik (array) bisa dioperasikan menggunakan pemilih elemen array yang disebut index atau
subskrip. Dalam program, index atau subskrip tersebut diletakkan dalam tanda kurung kotak, [ ],
setelah nama array yang akan dioperasikan.

Untuk mendeklarasikan variabel array ditentukan dengan:

Var nama : array [index] of tipe;
Dengan
Var,array, of : kata kunci yang harus ada.
Nama : nama array yang akan dideklarasikan
Index : batasan index yang akan ada pada array yang akan dideklarasikan
Tipe : tipe array;

Contoh deklarasi:

Var
Gaji : array[1..10] of real;
Upah : array[-4..8] of real;

Atau
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

28

Const batas=100;
Var
Angka : array[1..batas] of integer;

Const batas=1..200;
Var
kalimat : array [batas] of char;

Contoh Pengoperasian variabel array:

Var
Kalimat : array[1..100] of char;
Vektor : array[1..25] of real;
Jawaban : array[1..10] of real;
Nilai : array[1..80] of integer;
Frekuensi : array[1..100] of integer;
Jumlah, Hasil_kali,selisih : real;
Kata,huruf : char;
I,j,k,total,hasil : integer;

.
.
kata := kalimat[1];
selisih := Vektor[1]-Vektor[2];
jumlah := jumlah + Vektor[K];
hasil_kali := jawaban[J] * jawaban[K] * Vektor[I];
kalimat[25] :=P;
Frekuensi[5]:=2 * Vektor[5];

Contoh Program

1. Mencetak deret bilangan PASCAL:

uses crt;

var
i,angka,a,b : integer;
bil : array[1..100] of integer;
next : array[1..100] of integer;
deret,kolom,kol: integer;

Begin
clrscr;
kolom:=40;
write('Masukan Jumlah Deret = ');readln(deret);
next[1]:=0;
next[2]:=1;
next[3]:=0;

kol:=kolom;
gotoxy(kol,wherey);
writeln(1);

For a:=2 to deret do
Begin
kolom:=kolom-2;
kol:=kolom;

For b:=1 to 100 do
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

29
bil[b]:=next[b];

For b:=1 to a do
Begin
angka:=bil[b]+bil[b+1];
gotoxy(kol,wherey);
{WHEREY: fungsi untuk mendapatkan koordinat baris kursor yg aktif }
write(angka);
next[b+1]:=angka;
next[b+2]:=0;
kol:=kol+4;
End;
writeln;
End;
End.

Masukan Jumlah Deret = 6
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1



2. Mencetak bilangan PRIMA

Uses crt;
const Batas=500;

var
prima : array[1..batas] of boolean; { bilangan prima }
batas_geser, { batas penggeseran }
i,j : integer; { counter / cacah }

Begin
Clrscr;
For i:=1 to Batas do
prima[i]:=true;
batas_geser:=trunc(sqrt(batas));
i:=2;
{ proses penggeseran }
While i<=batas_geser do
Begin
If prima[i] then
Begin
j:=i+i;
While j<=batas do
Begin
prima[j]:=false;
j:=j+i;
End;
End;
i:=i+1;
End;

{ Cetak hasil proses.... }

Writeln('Bilangan Prima antara 1 s/d ',Batas);
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

30
Writeln('------------------------------------');
Writeln;
j:=1;
For i:=2 to Batas do
Begin
If prima[i] then
Begin
If J > 8 Then
Begin
j:=1;
Writeln;
End
Else
Begin
write(' ',i:3);
j:=j+1;
End;
End;
End;
writeln;writeln('Selesai...');
end.

Bilangan Prima antara 1 s/d 500
------------------------------------

2 3 5 7 11 13 17 19
29 31 37 41 43 47 53 59
67 71 73 79 83 89 97 101
107 109 113 127 131 137 139 149
157 163 167 173 179 181 191 193
199 211 223 227 229 233 239 241
257 263 269 271 277 281 283 293
311 313 317 331 337 347 349 353
367 373 379 383 389 397 401 409
421 431 433 439 443 449 457 461
467 479 487 491 499
Selesai...



LARIK DIMENSI BANYAK

Contoh yang paling mudah untuk array dimensi banyak adalah tabel. Kalau anda perhatikan sebuah
tabel, maka posisi setiap elemen dalam tabel ditentukan 2 posisi, yaitu posisi baris dan posisi kolom.
Untuk mendeklarasikan variabel array tersebut yaitu:

Var nama : array [index1,index2,...] of tipe;

Tipe data index1 atau index2 bisa berupa sembarang tipe subjangkauan (subrange) skalar kecuali
real.

Contoh program:
Menghitung Penjumlahan MATRIK

Uses Crt;
Var
Mat_A,Mat_B,Mat_C : Array[1..10,1..10] Of Integer;
ordo_x,ordo_y : Integer;
x,y,koor_brs : Integer;
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

31

Begin
Clrscr;
Writeln('PENJUMLAHAN MATRIK');
Writeln('------------------');
Write('Tentukan ordo Matriks <x,y> : ');readln(ordo_x,ordo_y);
Writeln('Input Matrik <A>:');
For y:=1 to ordo_y do
Begin
koor_brs:=wherey;
For x:=1 to ordo_x do
Begin
gotoxy(x*5,koor_brs);
Read(Mat_A[x,y]);
End;
End;

Writeln;
Writeln('Input Matrik <B>:');
For y:=1 to ordo_y do
Begin
koor_brs:=wherey;
For x:=1 to ordo_x do
Begin
gotoxy(x*5,koor_brs);
Read(Mat_B[x,y]);
End;
End;
Writeln;
Writeln('Hasil Penjumlahan Matrik A + B = ');
For y:=1 to ordo_y do
Begin
For x:=1 to ordo_x do
Begin
Mat_C[x,y]:=Mat_A[x,y]+Mat_B[x,y];
Write(Mat_C[x,y]:5);
End;
Writeln;
End;
End.

PENJUMLAHAN MATRIK
------------------
Tentukan ordo Matriks <x,y> : 3 2
Input Matrik <A>:
6 -2 -1
3 4 9

Input Matrik <B>:
5 2 1
-4 2 7

Hasil Penjumlahan Matrik A + B =
11 0 0
-1 6 16


DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

32
OPERASI STRING
PENYELEKSIAN STRING
Dua buah string dikatakan sama bila nilai string yang pertama isi dan panjangnya sama dengan nilai
kedua. Blank dianggap nilai yang signifikan. Bila dua buah string dibandingkan, maka urutan nilainya
akan digunakan urutan karakter yang sesuai dengan kode ASCII. Jadi karakter A lebih kecil dari
karakter B.

Contoh:
uses crt;
var
NamaAnda, NamaTeman : string[30];
Begin
clrscr;
write('Nama Anda : ');Readln(NamaAnda);
write('Nama Teman : ');Readln(NamaTeman);
if NamaAnda = NamaTeman Then
writeln('Nama Anda sama dengan Nama Teman Anda !');
if NamaAnda < NamaTeman Then
writeln('Nama Anda urutannya lebih kecil dari nama teman anda !');
if NamaAnda > NamaTeman Then
writeln('Nama Anda urutannya lebih besar dari nama teman anda !');
End.

Nama Anda : Tukul
Nama Teman : Tessi
Nama Anda urutannya lebih besar dari nama teman anda !

PROSEDUR STANDAR OPERASI STRING
1. Delete
Bentuk umum: Delete(var s:string;index: integer;count:integer);

Prosedur standar ini digunakan untuk membuang (delete) sejumlah karakter (jumlah karakter
yang dibuang ditunjukkan oleh nilai count) mulai dari posisi tertentu (ditunjukkan oleh nilai index)
dari suatu nilai string (ditunjukkan oleh variabel s). jika posisi index lebih besar dari panjang string
s, maka tidak ada karakter yang akan dihapus.

Contoh:

uses crt;
Var
kalimat : string[50];
urutan,posisi : integer;
panjang_kalimat : integer;
Begin
clrscr;
kalimat:='Percobaan';
panjang_kalimat:=length(kalimat); {fungsi length: panjang sebuah
karakter}
for urutan:=1 to panjang_kalimat do
Begin
posisi:=(panjang_kalimat+2)-urutan;
delete(kalimat,posisi,1);
writeln(kalimat);
end;
end.
Percobaan
Percobaa
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

33
Percoba
Percob
Perco
Perc
Per
Pe
P

2. Insert
Bentuk Umum : Insert(source:string; var s:string; index:integer);

Digunakan untuk menyisipi (insert) suatu string (ditunjukkan oleh nilai string source), ke nilai string
lainnya (ditunjukkan oleh nilai string s) mulai dari posisi yang ditunjukkan oleh nilai integer index.
Bila hasil dari penyisipan menjadi string yang panjangnya lebih dari 255 karakter, maka hanya
sampai dengan 255 karakter saja.

Contoh:

uses crt;
var
kalimat : string[100];
Begin
kalimat:='GUMA';
clrscr;
writeln(kalimat);
Insert('NADAR',kalimat,3);
writeln(kalimat);
End.

GUMA
GUNADARMA

3. Str
Bentuk Umum : Str(x[:width[:decimals]; var s:string);

Digunakan untuk mengubah nilai numerik (ditunjukan oleh nilai x) menjadi nilai string (ditunjukkan
oleh variabel string s). nilai x dapat berupa nilai integer atau real. Hasil dari ubahan dapat
terformat atau tidak terformat. Bila width atau decimals disebutkan, maka akan dihasilkan nilai
string dengan format panjang tertentu.

Contoh:

uses crt;
var
n1,n2 : integer;
s1,s2 : string[10];

begin
clrscr;
n1:=40;
n2:=35;
writeln('n1 + n2 = ',n1+n2);
str(n1,s1);
str(n2,s2);
writeln('s1 + s2 = ',s1+s2);
str(n1:4,s1);
str(n2:4,s2);
writeln('s1 + s2 = ',s1+s2);
end.
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

34

n1 + n2 = 75
s1 + s2 = 4035
s1 + s2 = 40 35


4. Val
Bentuk Umum : Val(s:string;v ;var code);

Digunakan untuk mengkonversikan suatu nilai string(ditunjukkan oleh nilai s) menjadi nilai numerik
(ditunjukkan oleh nilai variabel numerik v). Walaupun s merupakan nilai string, tetapi harus berisi
angka atau tanda (+) atau (-), bila tidak berarti salah dan letak kesalahannya ditunjukkan oleh nilai
variabel code. Nilai variabel code akan bernilai nol bila tidak mengandung kesalahan.

Contoh:

uses crt;
var
NilaiString : string[10];
NilaiReal : Real;
PosisiSalah : integer;
Begin
clrscr;
NilaiString:='123.45';
val(NilaiString,NilaiReal,PosisiSalah);
writeln('Nilai String : ',NilaiString);
writeln('Nilai Real : ',NilaiReal);
writeln('Posisi Salah : ',PosisiSalah);
End.

Nilai String : 123.45
Nilai Real : 1.2345000000E+02
Posisi Salah : 0

Jika NilaiString=123.A5

Nilai String : 123.A5
Nilai Real : 0.0000000000E+00
Posisi Salah : 5

FUNGSI STANDAR OPERASI STRING
1. Copy
Bentuk Umum : Copy(s:string; index:integer;count:integer):string;

Fungsi ini digunakan untuk menyalin(copy) sejumlah karakter yang disalin ditunjukkan oleh nilai
count mulai dari posisi yang ditunjukkan oleh index dari nilai string yang ditunjukkan oleh s.

Contoh:

var
kalimat : string[100];
hasil : string[100];

Begin
kalimat:='ABCDEFGHIJKLMNOPQRSTUVWXYZ';
writeln(kalimat);
hasil:=Copy(kalimat,4,6);
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

35
writeln(hasil);
writeln(Copy(kalimat,9,1));
End.

ABCDEFGHIJKLMNOPQRSTUVWXYZ
DEFGHI
I


2. Concat
Bentuk Umum : Concat(s1[,s2,...,sn]:string):string;

Digunakan untuk menggabungkan beberapa string yang ditunjukkan oleh variabel s(n).

Contoh:

Const
Nama = Pascal;
Dll = dan keluarga;
Begin
Writeln(concat(Bahasa ,Nama, untuk Anda ,Dll);
End.


Bahasa Pascal untuk Anda dan keluarga


3. Pos
Bentuk Umum : Pos(substr:string; s:string):byte;
Digunakan untuk mencari posisi letak dari suatu string (ditunjukkan oleh substr) yang ada di
dalam nilai string yang lain (ditunjukkan oleh s). nilai yang dihasilkan adalah berupa nilai byte
yang menunjukkan letaknya. Bila bernilai nol berarti nilai string yang dicari tidak ada.

Contoh:

const
Alfabet = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
kar1 = 'FGHI';
kar2 = 'F';
kar3 = 'JUGA';
kar4 = 'PQRST';
Begin
writeln(Alfabet);
writeln;
writeln(kar1,' ada di posisi ke ',Pos(kar1,Alfabet));
writeln(kar2,' ada di posisi ke ',Pos(kar2,Alfabet));
writeln(kar3,' ada di posisi ke ',Pos(kar3,Alfabet));
writeln(kar4,' ada di posisi ke ',Pos(kar4,Alfabet));
End.

ABCDEFGHIJKLMNOPQRSTUVWXYZ

FGHI ada di posisi ke 6
F ada di posisi ke 6
JUGA ada di posisi ke 0
PQRST ada di posisi ke 16


DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

36

4. Length
Bentuk Umum : Length(s:string):integer;

Digunakan untuk menghitung panjang atau jumlah karakter yang ada di nilai string yang
ditunjukkan oleh s. hasil dari fungsi ini adalah nilai numerik integer positif.

Contoh:

Var
NamaAnda : String[50];
Begin
Write(Nama Anda : );Readln(NamaAnda);
Writeln(Panjang nama anda adalah ,Length(NamaAnda), karakter.);
End.

Nama Anda : Tukul
Panjang nama anda adalah 5 karakter.

PROSEDUR

Prosedur adalah suatu program terpisah dalam blok sendiri yang berfungsi sebagai subprogram
(program bagian). Prosedur diawali dengan kata reserved (cadangan) procedure di dalam bagian
deklarasi. Prosedur dipanggil dan digunakan di dalam blok program yang lainnya dengan
menyebutkan judul prosedurnya.

Prosedur banyak digunakan pada program terstruktur, karena:

Merupakan penerapan konsep program modular, yaitu memecah-mecah program yang rumit
menjadi program-program bagian yang lebih sederhana dalam bentuk prosedur-prosedur.
Untuk hal-hal yang sering dilakukan berulang-ulang, cukup dituliskan sekali saja dalam
prosedur dan dapat dipanggil atau dipergunakan sewaktu-waktu bila diperlukan.

Contoh:

Procedure Garis;
Begin
Writeln(------------);
End;

Begin
Garis;
Writeln(Turbo Pascal);
Garis;
End.

------------
Turbo Pascal
------------


Nilai di dalam suatu modul program Pascal sifatnya lokal, artinya hanya dapat digunakan pada
modul yang bersangkutan saja, tidak dapat digunakan pada modul lainnya. Sebaliknya, agar
dapat digunakan oleh seluruh modul maka variabel harus dideklarasikan secara global, yaitu
dideklarasikan diluar modul program.

DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

37
Contoh program yang salah:

Procedure Proses;
Var
X,Y : real; { x dan y adalah variabel lokal untuk modul
proses }
Begin
Write(Nilai x : );readln(X);
Y:=x*x;
End;

Begin
Proses;
Writeln(Nilai y : ,Y:2:1);
{ salah, karena variabel Y belum dideklarasikan untuk modul utama}
End.



Contoh program yang benar tetapi bernilai salah

Var
Y : real;
Procedure Proses;
Var
X,Y : real; { x dan y adalah variabel lokal untuk modul
proses }
Begin
Write(Nilai x : );readln(X);
Y:=x*x;
End;

Begin
Proses;
Writeln(Nilai y : ,Y);
End.

Nilai x : 5
Nilai y : 0.0
{ Y bernilai 0, karena Y yang dicetak adalah variabel Y milik modul
utama}


Prosedur dapat dibuat dengan menggunakan parameter-parameter variabel, baik dalam bentuk
nilai atau referensi (acuan).

Procedure Hitung(A,B:integer; Var C:integer);
{A dan B adalah parameter nilai dan C adalah parameter acuan}
Begin
C:=A + B;
Writeln(Hasil A + B = ,C);
End;

Var
Y: Integer;
Begin
Hitung(5,7,Y);
Writeln(Hasil Y + 10 ,Y);
End.
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

38

Hasil A + B = 12
Hasil Y + 10 = 22


Prosedur dapat memanggil prosedur lainnya dan dapat pula memanggil dirinya sendiri atau istilah
lainnya adalah proses rekursi. Contoh:

Procedure Rekursi(I:integer);
Begin
Writeln(proses yang ke-,I);
Dec(I);
If I>0 Then
Rekursi(I);
End;

Begin
Rekursi(5);
End.

proses yang ke-5
proses yang ke-4
proses yang ke-3
proses yang ke-2
proses yang ke-1


OUTPUT:
FUNGSI (FUNCTION)

Blok fungsi hampir sama dengan blok prosedur, hanya saja fungsi dapat mengembalikan nilai dari tipe
yang dideklarasikannya. Contoh:

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

Nilai X = 2
Nilai Y = 9

2 + 9 = 11

RECORD
Record merupakan tipe data terstruktur, yang terdiri dari item data dan masing-masing dapat
mempunyai tipe data yang berbeda-beda. Item data itu dinamakan FIELD.
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

39
DEKLARASI RECORD
Tipe data Record diawali dengan keyword RECORD yang diikuti oleh suatu daftar field dan diakhiri
dengan keyword END. Contoh:

TYPE
Rec_Langganan = RECORD
KODE : STRING[10];
NAMA : STRING[30];
ALAMAT : STRING[50];
PIUTANG : REAL;
END;

VAR
PELANGGAN : Rec_Langganan;

Atau mendeklarasikan langsung di bagian deklarasi variabel

VAR
PELANGGAN : RECORD
KODE : STRING[10];
NAMA : STRING[30];
ALAMAT : STRING[50];
PIUTANG : REAL;
END;
MENGGUNAKAN TIPE DATA RECORD
Tipe data recordnya adalah Rec_Langganan dan variabel yang menggunakan tipe tersebut adalah
PELANGGAN, jika ingin memberikan nilai ke salah satu field, contohnya field NAMA maka cara
penulisannya adalah:

PELANGGAN.NAMA := Bla-bla bin bla;





Contoh:
Uses crt;
type myRec = Record
nama : string[30];
npm : string[8];
kelas : string[6];
nilai_mid : real;
nilai_fin : real;
nilai_rata : real;
end;

Var
mhs : myRec;

Procedure Input;
Begin
writeln('Input Data Mahasiswa:');writeln;
write('Nama Mahasiswa : ');readln(mhs.nama);
write('NPM : ');readln(mhs.npm);
write('Kelas : ');readln(mhs.kelas);
write('Nilai Mid Test : ');readln(mhs.nilai_mid);
write('Nilai Final Test : ');readln(mhs.nilai_fin);
Variabel
Record
Variabel
Field
Titik
Penghubung
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

40
End;

Function Hitung_Nilai_Rata(mid,final:real):real;
Var
rasio1,rasio2:real;
Begin
rasio1:=mid*(70/100); { 70% dari nilai mid}
rasio2:=final*(30/100); { 30% dari nilai final}
Hitung_Nilai_Rata:=rasio1+rasio2;
End;

Procedure Proses;
Begin
mhs.nilai_rata :=Hitung_Nilai_Rata(mhs.nilai_mid,mhs.nilai_fin);
End;


Procedure Cetak;
Begin
writeln('Cetak Data Mahasiswa:');writeln;
writeln('Nama Mahasiswa : ',mhs.nama);
writeln('NPM : ',mhs.npm);
writeln('Kelas : ',mhs.kelas);
writeln('Nilai Mid Test : ',mhs.nilai_mid:2:2);
writeln('Nilai Final Test : ',mhs.nilai_fin:2:2);
writeln('Nilai Rata-rata : ',mhs.nilai_rata:2:2);
End;

Begin
clrscr;
Input;
Proses;
writeln;
Cetak;
End.

Input Data Mahasiswa:

Nama Mahasiswa : Jhon Keboy
NPM : 77704567
Kelas : 3KX-20
Nilai Mid Test : 56
Nilai Final Test : 78

Cetak Data Mahasiswa:

Nama Mahasiswa : Jhon Keboy
NPM : 77704567
Kelas : 3KX-20
Nilai Mid Test : 56.00
Nilai Final Test : 78.00
Nilai Rata-rata : 62.60

Penulisan variabel record dapat dipersingkat dengan menggunakan statemen WITH.

Contoh:

Type
Hasil = RECORD
Jari_jari : REAL;
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

41
Keliling : REAL
Luas : REAL;
END;

Var
Lingkaran : Hasil;
Begin
With Lingkaran Do
Begin
Write(Jari-jari lingkaran : );Readln(Jari_jari);
Keliling := 2*PI*Jari_jari;
Luas := PI*SQR(Jari_Jari);
Writeln;
Writeln(Keliling Lingkaran = ,Keliling:7:2);
Writeln(Luas Lingkaran =,Luas:7:2);
End;
End;

Jari-jari Lingkaran : 10

Keliling Lingkaran = 62.83
Luas Lingkaran = 314.16


OUTPUT:


Contoh Program Record menggunakan Array

Uses crt;
Type myRec = Record
nama : string[30];
npm : string[8];
kelas : string[6];
nilai_mid : real;
nilai_fin : real;
nilai_rata : real;
end;

Var
mhs : array[1..100] of myRec;
tombol : char;
nomor : integer;

Procedure BikinGaris(x,y,max:integer;k:char);
var
a : Integer;
Begin
for a:=0 to max-1 do
begin
gotoxy(x+a,y);
write(k);
end;
writeln;
End;
Procedure Input;
Begin
Repeat
clrscr;
inc(nomor);
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

42
writeln('Input Data Mahasiswa yang ke:',nomor);writeln;
With mhs[nomor] do
begin
write('Nama Mahasiswa : ');readln(nama);
write('NPM : ');readln(npm);
write('Kelas : ');readln(kelas);
write('Nilai Mid Test : ');readln(nilai_mid);
write('Nilai Final Test : ');readln(nilai_fin);
end;
writeln;
write('Anda Mo Nginput Lagi[Y/T] : ');
tombol:=readkey;
{ readkey-> fungsi untuk membaca 1 karakter dari keyboard }
Until tombol in ['T','t'];
End;

Function Hitung_Nilai_Rata(mid,final:real):real;
Var
rasio1,rasio2:real;
Begin
rasio1:=mid*(70/100); { 70% dari nilai mid}
rasio2:=final*(30/100); { 30% dari nilai final}
Hitung_Nilai_Rata:=rasio1+rasio2;
End;

Procedure Proses;
Var
i :integer;
Begin
for i:=1 to nomor do
mhs[i].nilai_rata
:=Hitung_Nilai_Rata(mhs[i].nilai_mid,mhs[i].nilai_fin);
End;

Procedure Cetak;
var
i : integer;
Begin
clrscr;
writeln('Cetak Data Mahasiswa:');writeln;
BikinGaris(1,wherey,72,'=');
gotoxy(1,wherey);write('NO');
gotoxy(6,wherey);write('NPM');
gotoxy(16,wherey);write('NAMA');
gotoxy(46,wherey);write('KELAS');
gotoxy(54,wherey);write('MID');
gotoxy(60,wherey);write('FINAL');
gotoxy(66,wherey);write('RATA'); writeln; BikinGaris(1,wherey,72,'-
');
for i:=1 to nomor do
Begin
with mhs[i] do
begin
gotoxy(1,wherey);write(i:3);
gotoxy(6,wherey);write(npm);
gotoxy(16,wherey);write(nama);
gotoxy(46,wherey);write(kelas);
gotoxy(54,wherey);write(nilai_mid:2:2);
gotoxy(60,wherey);write(nilai_fin:2:2);
gotoxy(66,wherey);write(nilai_rata:2:2);writeln;
end;
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

43
End;
BikinGaris(1,wherey,72,'=');
End;

Begin
clrscr;
Input;
Proses;
Cetak;
End.

Input Data Mahasiswa yang ke:6

Nama Mahasiswa : Jo'eng
NPM : 64502453
Kelas : 3KY-03
Nilai Mid Test : 57
Nilai Final Test : 89

Anda Mo Nginput Lagi[Y/T] :



Cetak Data Mahasiswa:

========================================================================
NO NPM NAMA KELAS MID FINAL RATA
------------------------------------------------------------------------
1 45301767 Cecep Sarecep 2KT-13 45.00 89.00 58.20
2 23401897 Didin Ba Didin 2KT-13 56.00 75.00 61.70
3 44203787 Karlina de Jenggel 3YH-04 56.00 34.00 49.40
4 33802565 Maman Sukarman 3TK-02 80.00 76.00 78.80
5 45302456 Urip Rahman 2KT-10 77.00 65.00 73.40
6 64502453 Jo'eng 3KY-03 57.00 89.00 66.60
========================================================================


FILE
File (Berkas) adalah kumpulan sejumlah komponen yang bertipe data sama, yang jumlah tidak
tertentu. Pengertian file atau berkas di analogikan dengan simpanan arsip.

Di dalam Pascal, berkas menyediakan data yang nantinya akan digunakan oleh suatu program.
Berkas dapat berupa disk file yaitu media penyimpanan yang berupa cakram magnetis, pita magnetis,
kartu plong dan media-media penyimpanan lainnya.

Berkas mempunyai sifat sebagai berkas berurutan (Sequential File), dimana untuk membaca record
ke-10 misalnya, maka pembacaan harus dilakukan dari record 1, 2, 3 dan seterusnya. Atau dapat pula
sebagai berkas acak (Random File).
MENDEKLARASIKAN FILE

TYPE Var1 = FILE OF var2;
Atau
VAR var1 = FILE OF var2;

Contoh

TYPE
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

44
TIPE_DATA = RECORD
NAMA : string[25];
ALAMAT : string[50];
NO_TELP : string[15];
USIA : INTEGER;
END;

VAR
File_Data : FILE OF TIPE_DATA;
D_Data : Tipe_Data;
OPERASI PADA FILE

1. Statemen ASSIGN
Statemen ini digunakan untuk memilih/membuka berkas yang akan dioperasikan sesuai dengan
tipe berkas yang kita deklarasikan.

ASSIGN(variabel_berkas, nama_berkas);

Contoh:
Assign(File_Data,biodata.dat);

2. Statemen CLOSE
Close digunakan untuk menutup berkas yang telah dibuka oleh statemen assign. Dan hanya
menyebutkan variabel_berkas nya saja tanpa nama berkas.

Contoh:
CLOSE(File_Data);

3. Statemen REWRITE
Digunakan untuk membuat berkas baru yang telah dinyatakan dengan variabel berkas. Jika
berkas tersebut sudah ada dalam media penyimpan, maka berkas tersebut akan digantikan
dengan berkas yang baru.

Contoh:
REWRITE(File_Data);

4. Statemen RESET
Digunakan untuk mengeset penunjuk komponen kembali ke nomor 0. Contoh:

RESET(File_Data);

5. Statemen WRITE
Statemen ini digunakan untuk menuliskan komponen berkas (data) ke dalam media penyimpan.
Dan akan menempatkan komponen baru tersebut di akhir record.

WRITE(variabel_berkas,variabel_komponen_berkas);

Contoh:
WRITE(File_Data,D_Data);

6. Statemen READ
Read digunakan untuk membaca komponen berkas dari dalam media penyimpan. Pembacaan
disesuaikan dengan posisi penunjuk komponen, setelah selesai membaca, posisi penunjuk
komponen akan ditempatkan ke komponen berkas berikutnya.

READ(variabel_berkas,variabel_komponen_berkas);

DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

45
Contoh:
READ(File_Data,D_Data);

7. Statemen SEEK
Digunakan untuk menggerakkan penunjuk komponen ke nomor komponen tertentu. Dengan
nomor awal record adalah 0.

SEEK(variabel_berkas,nomor_record);

Contoh:
SEEK(File_Data,3); { diarahkan ke komponen yang ketiga);

8. Fungsi FILEPOS
Fungsi ini digunakan untuk mengetahui letak penunjuk komponen berada. Dan hasilnya berupa
bilangan bulat yang menunjukkan posisi penunjuk komponen pada saat itu.

FILEPOS(variabel_berkas);

Contoh:
Posisi := FILEPOS(File_Data);

9. Fungsi FILESIZE
Digunakan untuk mengetahui ukuran dari suatu berkas. Jika fungsi ini bernilai 0 berarti berkas
tersebut masih kosong.

FILESIZE(variabel_berkas);

Contoh:
Ukuran := FILESIZE(File_Data);
{ ukuran data dalam satuan byte }


10. Fungsi EOF
Fungsi ini digunakan untuk mengetahui apakah penunjuk komponen berada di akhir berkas (End
Of File = EOF), jika YA maka bernilai TRUE dan jika TIDAK maka bernilai FALSE.

EOF(variabel_berkas);

Contoh:
Akhir_File := EOF(File_Data);

11. Statemen FLUSH
Flush digunakan untuk mengosongkan penyangga (buffer) dari berkas, dengan demikian akan
memastikan bahwa isi penyangga telah dituliskan dalam media penyimpan setelah statemen
WRITE selesai dikerjakan.

FLUSH(variabel_berkas);

Contoh:
FLUSH(File_Data);

12. Statemen ERASE
Erase digunakan untuk menghapus file atau berkas yang telah tertutup atau sedang tidak
digunakan.

ERASE(variabel_berkas);

DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

46
Contoh:
ERASE(File_Data);

13. Statemen RENAME
Digunakan untuk memberi nama baru pada berkas yang dinyatakan oleh variabel berkas. Dan
hanya dapat dilakukan pada berkas yang tertutup.

RENAME(variabel_berkas, nama_baru);

Contoh:
RENAME(File_Data,baru.dat);

Contoh:

{ ******************************************
** PROGRAM MEMASUKKAN DATA KE DALAM FILE *
** NAMA FILENYA ADALAH mhs.dat *
****************************************** }

Uses Crt;

Type
Nilai = Record
Nama : string[25];
Npm : string[8];
Nilai_Mid : Real;
Nilai_Fin : Real;
Nilai_Rata : Real;
End;

Var
File_Nilai : File Of Nilai;
Nilai_Mhs : Nilai;
i,j : Integer;
Lagi : Char;

Function Hitung_Nilai_Rata(mid,final:real):real;
Var
rasio1,rasio2 :real;
Begin
rasio1:=mid*(70/100); { 70% dari nilai mid}
rasio2:=final*(30/100); { 30% dari nilai final}
Hitung_Nilai_Rata:=rasio1+rasio2;
End;

Begin
Assign(File_Nilai,'Mhs.Dat');
Rewrite(File_Nilai);
i:=0;
Repeat
Inc(i);
Clrscr;
Writeln('Mengisi data pada File "Mhs.Dat"....');
Writeln('------------------------------------');
Writeln('Mengisi Data ke-',i:2);
Writeln;
With Nilai_Mhs Do
Begin
Nilai_Rata:=0.0;
Write('Nama Mahasiswa : ');Readln(Nama);
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

47
Write('NPM Mahasiswa : ');Readln(Npm);
Write('Nilai Mid Test : ');Readln(Nilai_Mid);
Write('Nilai Final Test : ');Readln(Nilai_Fin);
Nilai_Rata:=Hitung_Nilai_Rata(Nilai_Mid,Nilai_Fin);
End;
Write(File_Nilai,Nilai_Mhs);
Writeln;
Write('Akan Mengisi Lagi [<Y>a/<T>Idak] : ');Readln(Lagi);
Until Not (Lagi In ['Y','y']);
Close(File_Nilai);
End.

Mengisi data pada File "Mhs.Dat"....
------------------------------------
Mengisi Data ke- 1

Nama Mahasiswa : Yudhi Sumanto Akbar
NPM Mahasiswa : 45689778
Nilai Mid Test : 56
Nilai Final Test : 78

Akan Mengisi Lagi [<Y>a/<T>Idak] : Y


Contoh:

{ ******************************************
** PROGRAM MEMBACA DATA DARI FILE *
** NAMA FILENYA ADALAH mhs.dat *
****************************************** }
Uses Crt;
Const
Garis='-----------------------------------------------------------------
----';
Type
Nilai = Record
Nama : string[25];
Npm : string[8];
Nilai_Mid : Real;
Nilai_Fin : Real;
Nilai_Rata : Real;
End;

Var
File_Nilai : File Of Nilai;
Nilai_Mhs : Nilai;
i,j,jumlah_data : Integer;
Lagi : Char;

Function Hitung_Nilai_Rata(mid,final:real):real;
Var
rasio1,rasio2 :real;
Begin
rasio1:=mid*(70/100); { 70% dari nilai mid}
rasio2:=final*(30/100); { 30% dari nilai final}
Hitung_Nilai_Rata:=rasio1+rasio2;
End;

Begin
Assign(File_Nilai,'Mhs.Dat');
Reset(File_Nilai);
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

48
Jumlah_Data:=FileSize(File_Nilai);

Clrscr;
Writeln(' ':20,'DAFTAR NILAI UJIAN MAHASISWA');
Writeln(' ':20,'----------------------------');
Writeln;Writeln(Garis);
Write('| No | Nama Mahasiswa | NPM |');
Writeln(' MID | FIN | RATA |');
Writeln(Garis);
For i:=1 To Jumlah_Data Do
Begin
Read(File_Nilai,Nilai_Mhs);
Gotoxy(1,wherey);Write('| ',i:2,' |');
With Nilai_Mhs Do
Begin
Gotoxy(8,wherey);Write(Nama);
Gotoxy(35,wherey);Write('| ',Npm);
Gotoxy(46,wherey);Write('| ',Nilai_Mid:2:1);
Gotoxy(54,wherey);Write('| ',Nilai_Fin:2:1);
Gotoxy(62,wherey);Write('| ',Nilai_Rata:2:1,' |');
End;
Writeln;
End;
Writeln(Garis);
Close(File_Nilai);
End.

DAFTAR NILAI UJIAN MAHASISWA
----------------------------

---------------------------------------------------------------------
| No | Nama Mahasiswa | NPM | MID | FIN | RATA |
---------------------------------------------------------------------
| 1 | Yudhi Sumanto Akbar | 45689778 | 56.0 | 78.0 | 62.6 |
| 2 | Rani Sianturi | 55198543 | 78.0 | 67.0 | 74.7 |
| 3 | Verry Van Vasten | 33297888 | 65.0 | 34.0 | 55.7 |
| 4 | Wisnu | 88895342 | 77.0 | 48.0 | 68.3 |
| 5 | Eliesah | 22196332 | 76.0 | 89.0 | 79.9 |
| 6 | Hattahat | 64399542 | 45.0 | 55.0 | 48.0 |
| 7 | Aim | 66594656 | 63.0 | 72.0 | 65.7 |
| 8 | Yahya Kopet | 44597556 | 76.0 | 54.0 | 69.4 |
| 9 | Enik Mugiharto | 22190778 | 56.0 | 33.0 | 49.1 |
| 10 | Koen-Koen | 33296456 | 86.0 | 32.0 | 69.8 |
| 11 | A-One | 33196432 | 87.0 | 81.0 | 85.2 |
| 12 | Djoko | 22187899 | 54.0 | 22.0 | 44.4 |
| 13 | Yuliar | 21095342 | 55.0 | 56.0 | 55.3 |
| 14 | Sulis | 21395651 | 88.0 | 52.0 | 77.2 |
---------------------------------------------------------------------


FILE (BERKAS) TEXT
Selain yang telah dijelaskan di atas, Pascal menyediakan tipe berkas yang lain, yaitu berkas TEXT,
berkas ini berisi deretan karakter. Komponen-komponen pada berkas teks membentuk suatu baris
dan setiap baris diakhiri tanda akhir baris (end-of-line, carriage return, atau line feed). Setiap akhir file
(berkas) diakhir dengan tanda akhir berkas (end-of-file, CTRL-Z).

Cara pendeklarasiannya adalah:

TYPE var1 = TEXT;
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

49
Atau
VAR
Var1 : TEXT;

Operasi-operasi yang digunakan dalam file teks sama dengan operasi-operasi sebelumnya, yaitu
assign, rewrite, reset, read, eof dan write. Dengan tambahan statemen-statemen di bawah ini:

1. Statemen WRITELN
Digunakan untuk menuliskan satu baris data, setelah selesai, penunjuk akan turun ke baris
berikutnya.

WRITELN(variabel_berkas,teks);

Contoh:
WRITELN(File_text,Setelah kalimat ini di tulis, pointer akan menunjuk
ke bawah);

2. Statemen READLN
Digunakan untuk membaca satu baris data, dan penunjuk akan turun ke baris berikutnya.

READLN(variabel_berkas,teks);

Contoh:
READLN(File_Text,text_nya);
WRITELN(text_nya);

3. Fungsi EOLN
Fungsi ini digunakan untuk mengetes apakah penunjuk ada di akhir suatu baris atau tidak, jika ya
maka akan mengembalikan nilai TRUE dan jika tidak akan mengembalikan nilai FALSE.

EOLN(variabel_berkas);

Contoh:
Akhir_baris := EOLN(File_Text);

4. Fungsi SEEKEOF
Kegunaannya sama dengan fungsi EOF, tetapi akan melompati blank dan tab sebelum mengetes
tanda akhir berkas. Tipe fungsi ini adalah boolean.

Contoh:
SEEKEOF(File_Text);

5. Fungsi SEEKEOLN
Hampir sama dengan fungsi EOLN, tetapi akan melompati blank dan tab sebelum mengetes
tanda akhir baris. Tipe fungsi ini adalah boolean.

Contoh:
SEEKEOLN(File_Text);


Contoh:

{
**************************************
** PROGRAM MENYIMPAN TEXT KE FILE **
** DENGAN NAMA FILENYA "MyText.TXT" **
**************************************}
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

50

Uses Crt;
Var
File_Text : Text;
d_text : String;

Begin
Assign(File_Text,'MyText.txt');
Rewrite(File_Text);
Clrscr;
Writeln('Ketikan beberapa kalimat bebas, dan Ketik "$"+<ENTER> untuk
selesai !');

Writeln('==================================================================
===');
Repeat
Readln(d_text);
If d_text[1]<>'$' Then
Writeln(File_Text,d_text);
Until d_text[1]='$';
Close(File_Text);
End.

Ketikan beberapa kalimat bebas, dan Ketik "$"+<ENTER> untuk selesai !
=====================================================================
Ini Hanyalah sebuah Kata-kata..........
dan mungkin tak ada maknanya..
Namun tiada salahnya untuk diuraikan....
karena ini hanyalah ungkapan.....
$



Contoh:

{
**************************************
** PROGRAM MEMBACA TEXT DARI FILE **
** DENGAN NAMA FILENYA "MyText.TXT" **
**************************************}

Uses Crt;
Var
File_Text : Text;
d_text : String;

Begin
Assign(File_Text,'MyText.txt');
Reset(File_Text);
Clrscr;
Writeln('Hasil Pembacaan dari File MyText.txt !');
Writeln('=======================================');
While Not Eof(File_Text) Do
Begin
Readln(File_Text,d_Text);
Writeln(d_text);
End;
Close(File_Text);
End.

Hasil Pembacaan dari File MyText.txt !
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

51
=======================================
Ini Hanyalah sebuah Kata-kata..........
dan mungkin tak ada maknanya..
Namun tiada salahnya untuk diuraikan....
karena ini hanyalah ungkapan.....


FILE TIDAK BERTIPE
Ada satu jenis berkas atau file, yaitu berkas yang tidak bertipe, artinya tipe data pada berkas ini
adalah sembarang. Biasanya tipe berkas ini digunakan untuk menyimpan data-data yang tidak
terdefinisikan dalam Pascal atau file-file binary, contohnya file suara (WAV, MP3, MOD, MID, WMA,
dll), file gambar (BMP, JPEG, JPG, TIFF, RAW, PCX, dll), file enkripsi, file executable, file video
(MPEG, MOV, DAT, dll).

Cara pendeklarasian berkas tersebut adalah:

TYPE var1 = FILE;
Atau
VAR
Var1 : FILE;

Operasi-operasi yang digunakan untuk membuka dan menutup file sama dengan tipe berkas yang
lainnya. Namun untuk penulisan dan pembacaan harus mengunakan statemen di bawah ini:

BLOCKREAD( <variabel berkas>, <buffer panampung>, <jumlah dibaca> , <jumlah
yang telah dibaca>);
BLOCKWRITE( <variabel berkas>, <buffer panampung>, <jumlah ditulis> ,
<jumlah yang telah ditulis>);

Contoh program (MyCopy.pas) berfungsi untuk mengcopy sebuah file:

Program MyCopy;
Uses Crt;
Var
File_Input, File_Output : FILE;
Jumlah_Dibaca, Jumlah_DiRekam : Word;
Buf : array[1..2048] of Char;

Begin
Clrscr;
Writeln('Program Untuk Mengcopy File....');
Writeln('-------------------------------');
If ParamCount<=1 Then { Jika parameter tidak disebutkan }
Begin
Writeln('Use: MyCopy <File Input> <File Output>');
Writeln('Program dibatalkan.....!');
Halt(0); { Halt berfungsi untuk menghentikan program dan kembali ke
DOS }
End;
Assign(File_Input, ParamStr(1));
{ Membuka File input dan nama file di tentukan dari Parameter Pertama }
Reset(File_Input, 1); { Record size = 1 Byte }

Assign(File_Output, ParamStr(2));
{ Membuka File Output dan nama file di tentukan dari Parameter Kedua }
Rewrite(File_Output, 1); { Record size = 1 }

Writeln('Mengcopy File ',ParamStr(1),' ke ',ParamStr(2),' => Ukuran File:
', FileSize(File_Input), ' bytes...');
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

52
Repeat
BlockRead(File_Input, Buf, SizeOf(Buf), Jumlah_DIbaca);
BlockWrite(File_Output, Buf, Jumlah_Dibaca, Jumlah_DiRekam);
Until (Jumlah_Dibaca = 0) or (Jumlah_DiRekam <> Jumlah_Dibaca);
Close(File_Input);
Close(File_Output);
End.

Setelah program MyCopy.pas di compile, akan menghasilkan MyCopy.exe (Perintah External DOS).
Cara penggunaanya adalah menyebutkan nama file yang akan dicopy dan nama file yang akan
menjadi duplikatnya.

jika tidak menggunakan parameter.

A:\>MyCopy
Program Untuk Mengcopy File....
-------------------------------
Use: MyCopy <File Input> <File Output>
Program dibatalkan.....!


Jika menggunakan parameter.

A:\>MyCopy writef.exe coba.dat
Program Untuk Mengcopy File....
-------------------------------
Mengcopy File writef.exe ke coba.dat => Ukuran File: 7728 bytes...

POINTER DAN STRUKTUR DATA DINAMIK

Tipe data sederhana dan tipe data terstruktur yang telah kita ketahui mempunyai beberapa
keterbatasan, yaitu bersifat statis. Akibatnya, ukuran dan urutannya sudah pasti. Contohnya pada
struktur Array misalnya, elemen satu selalu mendahului elemen berikutnya, serta mempunyai urutan
sudah tertentu dan pasti. Sehingga ukuran tersebut tidak dapat melebihi ukuran maksimum seperti
yang sudah dideklarasikan. Kelemahan yang lain dari variabel yang sudah dideklarasikan denga tipe
data ini adalah ruang memori yang sudah digunakannya tidak dapat dihapus bila variabel tersebut
sudah tidak digunakan lagi. Dan Turbo Pascal mempunyai keterbatasan, yaitu ukuran maksimum dari
data segment (memori untuk menampung nilai-nilai variabel) adalah sebesar 64 Kb (Kilo bytes).

Apabila suatu program membutuhkan ukuran memori yang sangat besar untuk datanya yang melebihi
batas 64 Kb, maka kita harus menggunakan variabel dinamik artinya variabel ini dapat dibebaskan
kembali dari memori jika sudah tidak digunakan lagi dan hal ini dapat menghemat memori.
VARIABEL POINTER
Variabel dinamik tidak dapat dideklarasikan secara eksplisit seperti halnya variabel statik dan tidak
dapat secara langsung ditunjukkan oleh suatu pengenal (identifier). Variabel dinamik hanya dapat
ditunjukkan oleh variabel khusus yang berisi alamat memori yang digunakan oleh variabel dinamik
tersebut. Variabel khusus ini disebut dengan variabel pointer. Variabel pointer dapat dideklarasikan
dengan tipe data pointer. Tipe data pointer dideklarasikan dengan menggunakan simbol pointer ( ^ )
simbol ini disebut carat atau circumflex.

Contoh:

Type
TipeString = string[15];
Ptr_String = ^ TipeString;
Var
Nama : Ptr_String;
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

53
Begin
Nama^ := Turbo Pacal;
Writeln(Nama^);
End.

Variabel Nama adalah variabel pointer. Variabel ini tidak berisi dengan data, tetapi berisi alamat letak
dari data yang ditunjuk. Variabel Nama adalah variabel pointer dengan tipe Ptr_String sedang
Ptr_String adalah suatu tipe data pointer yang menunjukkan letak dari suatu nilai string[15]. Dengan
demikian, variabel pointer Nama juga akan menunjukkan alamat dari letak string[15]. Sedang Nama^
menunjukkan isi dari memori yang alamatnya ditunjukkan oleh variabel pointer Nama atau dengan
kata lain menunjukkan nilai string[15] tersebut.
VARIABEL DINAMIK
Variabel dinamik dapat dibuat dan dialokasikan dengan prosedur standar NEW dan menghapusnya
dengan DISPOSE. Contoh:

Uses Crt;
Type
MyRec = Record
Nama : String[30];
Alamat : String[50];
Telp : String[15];
End;

Var
Data : ^MyRec;

Begin
Clrscr;
New(Data);
Write('Nama : ');readln(Data^.Nama);
Write('Alamat : ');readln(Data^.Alamat);
Write('Telepon : ');readln(Data^.Telp);
Writeln;
WITH Data^ DO
Begin
Writeln('Namanya ',Nama);
Writeln('Beralamat di ',Alamat);
Writeln('Dengan nomor telepon ',Telp);
End;
Dispose(Data);
End.


STRUKTUR DATA DINAMIK (LINK LIST)
Link List merupakan suatu urutan item-item data ynag disebut node. Masing-masing node
mempunyai karakteristik data yang sama walaupun isinya berbeda. Suatu list mengandung awal
dan akhir node, sebagai pangkal dan ujung sebuah list. Pada masing-masing node terdapat petunjuk
(pointer) node di depannya atau di belakangnya. Dalam pelaksanaannya petunjuk ini berupa alamat
dari node tersebut.

Prinsip link list dapat disamakan dengan tali yang mempunyai simpul-simpul pada jarak tertentu.
Simpul inilah yang kita asosiasikan dengan node. Pada masing-masing node terdapat dua bagian
utama. Bagian pertama merupakan data yang akan diisi ketika program bekerja. Data tersebut berupa
variabel, struktur, array atau lainnya sesuai dengan aplikasi yang akan digunakan. Bagian yang
lainnya adalah pointer alamat dari node berikutnya atau sebelumnya.

DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

54
Berdasarkan elemen-elemen yang dapat di-handle oleh sebuah node, dibagi menjadi 2, yaitu single
linked list dan double linked list. Pada single linked list hanya terdapat sebuah pointer alamat yang
menunjuk alamat di depannya. Double linked list mempunyai dua pointer (petunjuk alamat), yaitu
alamat node di depannya dan node di belakangnya. Dan yang akan kita pelajari nanti adalah single
linked list.

1. Menentukan struktur data

PROGRAM SINGLE_LIST;
USES CRT;

Type
Ptr_SList = ^SList;
SList = Record
Nama : String[30];
Npm : String[8];
Ipk : Real;
Next : Ptr_SList;
End;

Var
Head,Tail,Base : Ptr_SList;

Struktur record yang kita tentukan terdiri dari Nama, Npm dan Ipk, sedangkang Next berguna
sebagi petunjuk alamat Node Berikutnya. Pembacaan data ini dilakukan secara sequential
(berurutan), untuk itu dibutuhkan informasi head (awal) dari list dan tail (akhir) dari list. Karena
Head dan tail digunakan untuk semua bagian program, maka kedua variabel tersebut
dideklarasikan secara global. Base digunakan untuk menunjukkan node yang aktif.


Procedure UpperCase(Var s:string); { Berguna untuk mengubah karakter }
Var ( dalam string menjadi huruf
kapital }
i:integer;
Begin
for i:=1 to Length(s) do
s[i]:=Upcase(s[i]);
End;

Procedure InitList;
Begin
Head:=NIL; { Untuk proses pertama kalinya node dalam memori }
Tail:=NIL; { yaitu Head, Tail dan Base kita berikan nilai }
Base:=NIL; ( NIL (Kosong, belum ada data) }
End;

2. Membuat List Baru
Sebuah list baru dibuat jika belum ada data pada komputer. Hal ini terjadi jika Head masih bernilai
NIL (Kosong).

Procedure Append(Nama,Npm:String; ipk:Real);
Var
Baru: Ptr_SList;
Begin
New(Baru); { Mengalokasikan memori untuk node yang baru }
If Baru=NIL Then { jika memori tidak tersedia }
Begin
Writeln('Error : Memori ndak Cukup...Program dibatalkan..');
halt(1);
End;
Node
Nama,Npm,Ipk Next
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

55

Baru^.Nama:=Nama; { Mengisi data pada node yang baru }
Baru^.Npm:=Npm;
Baru^.Ipk:=ipk;
Baru^.Next:=NIL;

If Head=Nil Then
Begin
Head:=Baru;
Tail:=Baru;
End
Else
Begin
Tail^.Next:=Baru;
Tail:=Baru;
End;
End;

Jika Head sudah ada data, maka untuk menambahkan data baru, kita hanya menggantikan
informasi variabel next pada Tail untuk menunjuk ke node baru.

Sebelum:
HEAD Node baru TAIL




Sesudah:
HEAD TAIL



1. Fungsi-fungsi untuk memindahkan petunjuk data dalam pembacaan node

Function GoHead: Ptr_Slist;
Begin
Base:=Head; { Fungsi untuk mendapatkan data awal }
GoHead:=Head;
End;

Function GoTail: Ptr_SList;
Var
Temp:Ptr_SList;
Begin
Temp:=Head;
While(Temp<>NIL) Do { Fungsi untuk mendapatkan data akhir }
Temp:=Base^.Next;
GoTail:=Temp;
End;

Function GoNext: Ptr_SList;
Begin
Node baru
HEAD = TAIL
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

56
Base:=Base^.Next; { Fungsi untuk mendapatkan data berikutnya }
GoNext:=Base;
End;


2. Menghapus Node dalam list
Untuk menghapus data, data (node) sebelum node yang akan dihapus harus ditemukan terlebih
dahulu secara sekuensial dari awal list. Jika node berhasil ditemukan, maka node diputus dengan
menunjuk ke node setelah node yang akan dihapus. Kita akan bertanya kenapa tidak mencari
node yang dihapus saja. Inilah kelemahan single linked list, tidak dapat menunjuk ke belakang
dari posisi dia berada, untuk dapat melakukan hal itu maka kita ganti dengan struktur data double
linked list namun tidak kita bahas untuk kali ini.

Contoh kita mempunyai sebuah list dengan data a, b, c, d. kemudian kita ingin menghapus
data c. dalam pelaksanaanya, program harus menuju b, dan memutus hubungan b dengan
c. hubungan yang terputus ini diganti dengan hubungan b dengan d.

Function Delete(npm:string): Boolean;
Var
Temp,Prev:Ptr_Slist;
Begin
Temp:=GoHead; { Pindahkan petunjuk ke awal list }
Prev:=Temp;
While( Temp <> NIL) do
Begin
If Temp^.Npm = npm Then { jika sesuai dengan data yang akan
dihapus }
Begin
If Temp=Head Then { Jika data tersebut ada di awal list}
Begin
Head:=Temp^.Next; { Pindahakn Head ke data berikutnya }
Dispose(Temp);
End
Else
Begin
Prev^.Next:=Temp^.Next;
Dispose(Temp);
End;
Delete:=True;
Exit;
End;
Prev:=Temp;
Temp:=GoNext;
End;
Delete:=False;
End;

Jika kita mempunyai list a,b,c,d,e dan kita akan menghapus node c maka gambaran
proses penghapusannya adalah sebagai berikut:

Arahkan variabel Temp ke Node C, dan Prev ke node B:
E
HEAD
A B C D
TAIL PREV TEMP


Ganti informasi next pada Prev (Node B) ke node yang ditunjuk oleh informasi next pada node C
yang berisi alamat node D
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

57

E
HEAD
A B C D
TAIL PREV TEMP


Prev^.Next:=Temp^.Next;

Kini Node C telah terputus dengan list, kemudian node tersebut kita hapus dari memori komputer.

Untuk menghapus data (node) pada awal dan akhir dari list tidak terlalu rumit. Jika data yang di
hapus terdapat pada awal list, kita cukup memindahkan pointer Head ke Node berikunya. Dan
untuk menghapus akhir list maka node sebelum akhir node, informasi next-nya diberikan nilai NIL,
sehingga node tersebut tidak menunjuk ke akhir list lagi, dan node tersebut kita jadikan Tail.

3. Program lengkapnya

Procedure RemoveList; { menghapus seluruh data pada list }
Var
Temp:Ptr_SList;
Begin
Temp:=GoHead;
While (Temp <> NIL) Do
Begin
Dispose(Temp);
Temp:=GoNext;
End;
End;

procedure Input;
var
nama,npm:string;
ipk:real;
pilihan:char;



Begin
pilihan:='Y';
Repeat
Clrscr;
Writeln('Input Data :');
Writeln('----------------');
Write('Nama : ');readln(nama);
write('Npm : ');readln(npm);
write('Ipk : ');readln(ipk);
UpperCase(Nama);
Append(nama,npm,ipk);
writeln;
write('Input Data lagi <Y>a / <T>idak : ');
readln(Pilihan);
Until Pilihan in ['T','t'];
End;

procedure Cetak;
var
Temp:Ptr_SList;
No:integer;
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

58
Begin
Clrscr;
No:=1;
Writeln(' Cetak Data : ');
writeln('---------------------------------');
Temp:=GoHead;
While(Temp<>NIL) Do
Begin
Write(No:3);
gotoxy(6,wherey);Write(Temp^.Nama);
gotoxy(36,wherey);Write(Temp^.Npm);
gotoxy(46,wherey);Write(Temp^.Ipk:4:2);writeln;
Temp:=GoNext;
inc(No);
End;
Readln;
End;

procedure Hapus;
var
npm:string;
Begin
clrscr;
writeln(' Hapus Data : ');
writeln('------------------------------');
write('Ketik Nomor NPM : ');readln(npm);
If Delete(npm) Then
Writeln('Data sudah di hapus........')
else
Writeln('Data tidak ditemukan.......');
readln;
end;

procedure Cari;
Var
npm:string;
pilihan:char;
Temp:Ptr_SLIst;
Begin
Pilihan:='Y';
Repeat
clrscr;
writeln(' Cari Data');
writeln('----------------------');
write('Ketik Nomor Npm : ');readln(npm);
Temp:=GoHead;
while (Temp<> NIL) DO
Begin
If Temp^.Npm = npm Then
break;
Temp:=GoNext;
End;
If Temp<> NIL Then
Begin
Writeln('Nama : ',Temp^.Nama);
Writeln('Npm : ',Temp^.Npm);
Writeln('Ipk : ',Temp^.ipk:4:2);
End
else
writeln('Data tidak ditemukan.........');
writeln;
DhrMuiz. 2007. Pemrograman Pascal
Created 07 Mei 2007
Updated 14 Desember 2008
E-mail: dhrmuiz@gmail.com, imam_muiz@gunadarma.ac.id, muiz_imam@yahoo.com

59
writeln('Cari data lagi <Y>a / <T>idak : ');
readln(Pilihan);
Until Pilihan in ['T','t'];
End;

Var
Pilihan:char;
Begin
InitList;
Repeat
Repeat
Clrscr;
Writeln(' MENU PILIHAN');
Writeln('===============================');
Writeln('[1]. Input Data');
writeln('[2]. Cetak Data');
writeln('[3]. Cari Data');
writeln('[4]. Hapus Data');
Writeln('[5]. Exit');
Writeln;
Write('Pilihan Anda : ');Readln(pilihan);
case Pilihan Of
'1' : Input;
'2' : Cetak;
'3' : Cari;
'4' : Hapus;
'5' :
Begin
RemoveList;
exit;
end;
end;
if (Pilihan< '1') OR (Pilihan > '5') Then
Begin
writeln('Pilihan anda tidak sesuai dengan menu di
atas....<ENTER>');
readln;
End;
Until (Pilihan>='1') AND(Pilihan<='5');
Until (Pilihan='5');
End.



Referensi :

Ananta Sjartuni, Lebih Lanjut dengan C ,Elex Media Komputindo,1995
Insap Santosa, Ir. M.SE, Dasar-dasar Pemrograman Pascal, Andi Yogyakarta, 1997
Jogiyanto H.M., Turbo Pascal , Andi Offset Yogyakarta, 1994
Sam A. Abolrous, Learn Pascal, Wordware Publishing, Inc, 2000

Anda mungkin juga menyukai