Program data mahasiswa(pascal)

contoh program input data mahasiswa dengan pascal.

Listing Programnya ;

Program Data_Mahasiswa;
Uses WinCrt;
Type Mahasiswa = Record
NoMhs : Word;
Nama  : String[20];
IPK   : Real;
Usia  : Byte;
end;

Var Filemhs  : File of Mahasiswa;
Data     : Mahasiswa;
Pil,Ul   : Char;

Procedure Menu;
Begin
Clrscr;
Gotoxy(34,1);Write(‘MENU PILIHAN’);
Gotoxy(34,2);Write(‘============’);
Gotoxy(27,4);Write(‘1. Tambah Data Mahasiswa’);
Gotoxy(27,5);Write(‘2. Edit Data Mahasiswa’);
Gotoxy(27,6);Write(‘3. Hapus Data Mahasiswa’);
Gotoxy(27,7);Write(‘4. Tampilkan Data Mahasiswa’);
Gotoxy(27,8);Write(‘5. View Mahasiswa Berdasarkan Umur’);
Gotoxy(27,9);Write(‘6. Hapus NoMhs Ganjil’);
Gotoxy(27,10);Write(‘9. Keluar (Exit)’);
Gotoxy(32,12);Write(‘Pilihan [1..9]: ‘);Pil:=Readkey;
End;

Procedure BukaFile;
Begin
Assign(FileMhs,’Mhs.Dat’);
{$I-};
Reset(FileMhs);
{$I+};
End;

Procedure Tambah;
Var Lagi: Char;
Ada : Boolean;
i   : Integer;
NOCR: Word;
Begin
Ul:=’Y’;
Lagi:=’Y’;
Clrscr;

BukaFile;
If IOResult<>0 Then
Rewrite(FileMhs);

Repeat
Clrscr;
Ada:=False;
i:=0;
Gotoxy(30,1);Write(‘TAMBAH DATA MAHASISWA’);
Gotoxy(30,2);Write(‘=====================’);
Gotoxy(20,4);Write(‘No. Mahasiswa  : ‘);Readln(NOCR);
While (Ada=False) And (i<>Filesize(FileMhs)) Do
Begin
Seek(FileMhs,i);
Read(FileMhs,Data);
If Data.NoMhs=NOCR Then
Ada:=True
Else
Inc(i);
End;
If (Ada=True) Then
Begin
Gotoxy(20,9);Write(‘Nomor Mahasiswa “‘,NOCR,'” Ini Sudah Ada!’);
End
Else
Begin
Seek(FileMhs,Filesize(FileMhs));
Data.NoMhs:=NOCR;
Gotoxy(20,5);Write(‘Nama Mahasiswa : ‘);Readln(Data.Nama);
Gotoxy(20,6);Write(‘IPK            : ‘);Readln(Data.IPK);
Gotoxy(20,7);Write(‘Umur           : ‘);Readln(Data.Usia);
Write(FileMhs,Data);
End;
Gotoxy(20,10);Write(‘Mau Tambah Data Lagi [Y/T]:’);Lagi:=Upcase(Readkey);
Until Lagi<>’Y’;
Close(FileMhs);
End;

Procedure Edit;
Var Lagi: Char;
Ada : Boolean;
i   : Integer;
NOCR: Word;
Begin
Ul:=’Y’;
Lagi:=’Y’;
Clrscr;

BukaFile;
If IOResult<>0 Then
Write(‘Data Masih Kosong…!’)
Else
Begin
Repeat
Clrscr;
Ada:=False;
i:=0;
Gotoxy(30,1);Write(‘EDIT DATA MAHASISWA’);
Gotoxy(30,2);Write(‘=====================’);
Gotoxy(20,4);Write(‘No. Mahasiswa  : ‘);Readln(NOCR);
While (Ada=False) And (i<>Filesize(FileMhs)) Do
Begin
Seek(FileMhs,i);
Read(FileMhs,Data);
If Data.NoMhs=NOCR Then
Begin
Ada:=True;
Gotoxy(20,5);Write(‘Nama Mahasiswa : ‘,Data.Nama);
Gotoxy(20,6);Write(‘IPK            : ‘,Data.IPK:1:2);
Gotoxy(20,7);Write(‘Umur           : ‘,Data.Usia);
End
Else
Inc(i);
End;
If (Ada=True) Then
Begin
Data.NoMhs:=NOCR;
Gotoxy(20,9);Write(‘Nama Mahasiswa : ‘);Readln(Data.Nama);
Gotoxy(20,10);Write(‘IPK            : ‘);Readln(Data.IPK);
Gotoxy(20,11);Write(‘Umur           :’);Readln(Data.Usia);
Seek(FileMhs,i);
Write(FileMhs,Data);
End
Else
Begin
Gotoxy(20,13);Write(‘Nomor Mahasiswa “‘,NOCR,'” Ini Tidak Ada!’);
End;
Gotoxy(20,14);Write(‘Mau Edit Data Lagi [Y/T]:’);Lagi:=Upcase(Readkey);
Until Lagi<>’Y’;
End;
Close(FileMhs);
End;

Procedure Hapus;
Var FileTmp   : File of Mahasiswa;
Lagi,Hapus: Char;
Ada       : Boolean;
i         : Integer;
NOCR      : Word;
Begin
Ul:=’Y’;
Lagi:=’Y’;
Clrscr;
Repeat
BukaFile;
If IOResult<>0 Then
Write(‘Data Masih Kosong…!’)
Else
Begin
Clrscr;
Assign(FileTmp,’mhs.tmp’);
Rewrite(FileTmp);
Ada:=False;
i:=0;
Gotoxy(30,1);Write(‘HAPUS DATA MAHASISWA’);
Gotoxy(30,2);Write(‘=====================’);
Gotoxy(20,4);Write(‘No. Mahasiswa  : ‘);Readln(NOCR);
While (Ada=False) And (i<>Filesize(FileMhs)) Do
Begin
Seek(FileMhs,i);
Read(FileMhs,Data);
If Data.NoMhs=NOCR Then
Ada:=True
Else
Inc(i);
End;
If (Ada=True) Then
Begin
Gotoxy(20,5);Write(‘Nama Mahasiswa : ‘,Data.Nama);
Gotoxy(20,6);Write(‘IPK            : ‘,Data.IPK:1:2);
Gotoxy(20,7);Write(‘Umur           : ‘,Data.Usia);
Gotoxy(20,9);Write(‘Data Ini Mau Di Hapus [Y/T]:’);Readln(Hapus);
If Upcase(Hapus)=’Y’ Then
Begin
For i := 1 to Filesize(FileMhs) Do
Begin
Seek(FileMhs,i-1);
Read(FileMhs,Data);
If Data.NoMhs<>NOCR Then
Write(FileTmp,Data);
End;
Close(FileMhs);
Assign(FileMhs,’MHS.Dat’);
Erase(FileMhs);
Assign(FileTmp,’Mhs.tmp’);
Rename(FileTmp,’Mhs.Dat’);
Gotoxy(20,10);Write(‘Nomor Mahasiswa “‘,NOCR,'” Sudah Di Hapus!’);
End;
End
Else
Begin
Gotoxy(20,10);Write(‘Nomor Mahasiswa “‘,NOCR,'” Ini Tidak Ada!’);
End;
Gotoxy(20,11);Write(‘Mau Hapus Data Lagi [Y/T]:’);Lagi:=Upcase(Readkey);
End;
Until Lagi<>’Y’;
End;

Function RataIPK(TIPK:Real;n:integer):Real;
Begin
RataIPK:=TIPK/n;
End;

Procedure Tampil;
Var i    : Integer;
TIPK : Real;
Begin
Ul:=’Y’;
TIPK:=0;
BukaFile;
If IoResult <>  0 Then
Write(‘Maaf Data Masih Kosong ! ‘)
Else
Begin
Clrscr;
Writeln(‘                DATA MAHASISWA                  ‘);
Writeln(‘            STT DUTA BANGSA  BEKASI             ‘);
Writeln;
Writeln(‘================================================’);
Writeln(‘ NO   NIM                NAMA    IPK       UMUR ‘);
Writeln(‘================================================’);
i:=0;
While Not EoF(FileMhs) Do
Begin
Inc(i);
Read(FileMhs,Data);

Writeln(i:3,Data.NoMhs:6,Data.Nama:20,Data.IPK:8:2,Data.Usia:10);
TIPK:=TIPK+Data.IPK;
End;
Writeln(‘================================================’);
Writeln(‘Rata-Rata IPK: ‘,RataIPK(TIPK,i):1:2);
Writeln(‘================================================’);
Close(FileMhs);
End;

Writeln;
Write(‘Press Any Key to Continue…’);Readkey;
End;

Procedure View_Umur;
Var i    : Integer;
Umur : Byte;
Lagi : Char;
Begin
Ul:=’Y’;
Lagi:=’Y’;
Repeat
Clrscr;
Write(‘Tampilkan Umur Besar Dari: ‘);Readln(Umur);
BukaFile;
If IoResult <>  0 Then
Write(‘Maaf Data Masih Kosong ! ‘)
Else
Begin
Writeln(‘                DATA MAHASISWA                  ‘);
Writeln(‘             UMUR DI ATAS ‘,Umur:2,’ TAHUN’);
Writeln;
Writeln(‘================================================’);
Writeln(‘ NO   NIM                NAMA    IPK       UMUR ‘);
Writeln(‘================================================’);
i:=0;
While Not EoF(FileMhs) Do
Begin
Read(FileMhs,Data);
If Data.Usia>Umur Then
Begin
Inc(i);

Writeln(i:3,Data.NoMhs:6,Data.Nama:20,Data.IPK:8:2,Data.Usia:10);
End;
End;
Writeln(‘================================================’);
Close(FileMhs);
End;
Writeln;
Write(‘Mau Lihat Data Lagi [Y/T]: ‘);Lagi:=Upcase(Readkey);
Until Lagi<>’Y’;
End;

Procedure Hapus_NoMhs;
Var FileTmp   : File of Mahasiswa;
Lagi,Hapus: Char;
i         : Integer;
Begin
Ul:=’Y’;
Lagi:=’Y’;
Clrscr;
Repeat
BukaFile;
If IOResult<>0 Then
Write(‘Data Masih Kosong…!’)
Else
Begin
Clrscr;
Assign(FileTmp,’mhs.tmp’);
Rewrite(FileTmp);
i:=0;
Gotoxy(20,3);Write(‘Mau Menghapus No. Mahasiswa Yang Ganjil [Y/T]: ‘);Readln(Hapus);
If Upcase(Hapus)=’Y’ Then
Begin
For i := 1 to Filesize(FileMhs) Do
Begin
Seek(FileMhs,i-1);
Read(FileMhs,Data);
If (Data.NoMhs Mod 2)=0 Then
Write(FileTmp,Data);
End;
Close(FileMhs);
Assign(FileMhs,’Mhs.Dat’);
Erase(FileMhs);
Assign(FileTmp,’Mhs.tmp’);
Rename(FileTmp,’Mhs.Dat’);
Gotoxy(20,10);Write(‘Nomor Mahasiswa Sudah Di Hapus!’);
End;
Gotoxy(20,11);Write(‘Mau Hapus Data Lagi [Y/T]:’);Lagi:=Upcase(Readkey);
End;
Until Lagi<>’Y’;
End;

Begin
Repeat
Menu;
Case Pil Of
‘1’ : Tambah;
‘2’ : Edit;
‘3’ : Hapus;
‘4’ : Tampil;
‘5’ : View_Umur;
‘6’ : Hapus_NoMhs;
End;
Until (Ul<>’Y’) Or (Pil=’9′);
DoneWinCrt;
End.

Iklan

Prosedur (procedure) #pascal

Prosedur (procedure) merupakan suatu blok kode program yang disusun untuk menyelesaikan masalah umum. Misalkan dalam bahasa pemrograman pascal dikenal prosedur-prosedur seperti writeln, clrscr, textbackground, textcolor, readln, dsb. Pemanggilan prosedur-prosedur tersebut bervariasi antara satu prosedur dengan prosedur yang lainnya. Misalkan prosedur clrscr yang berfungsi untuk menghapus seluruh tulisan di layar monitor dan meletakkan posisi kursor di X=0 dan Y=0. Prosedur clrscr dalam pemanggilannya tidak membutuhkan parameter; prosedur writeln/write berufungsi untuk mencetak keluaran (output) ke layar monitor. Prosedur writeln/write bisa dipanggil dengan mengikutkan parameter atau tanpa mengikutkan parameter. Sebagai contoh diinstruksikan ke penterjemah (compiler) Pascal untuk memindahkan posisi kursor turun satu baris (Nilai Y Bertambah) dan X tetap di posisi 0 seperti terlihat pada kode berikut:

begin
writeln;
end.

Pada kode di atas dipanggil prosedur writeln tanpa diikuti parameter. Pascal memahami bahwa bila pemanggilan prosedur writeln tanpa parameter maka posisi kursor di monitor berubah yaitu kursor kembali ke posisi X=0 (Carriage Return) dan Posisi Y tambah Satu – Turun Satu Baris (Line Feed).

Baca lebih lanjut

Enkripsi dan Dekripsi dengan pascal

listing program di bawah ini dengan tpw 7

program Kriptography;

Uses wincrt;
var
i, pilihan : byte;
kata : string;
label
a, b, c ;

begin
gotoxy(25,5);writeln(‘=========================================’);
gotoxy(25,6);writeln(‘   Contoh Program Enkripsi & Dekripsi ‘);
gotoxy(25,7);writeln(‘=========================================’);
gotoxy(33,8);writeln(‘           == By  ==’);
gotoxy(25,9);writeln(‘=========================================’);
gotoxy(32,10);writeln(‘           narkovic ‘);
gotoxy(32,11);writeln(‘ STT DUTA BANGSA@2009 – cikarang  ‘);
gotoxy(25,16);writeln(‘=========================================’);
gotoxy(38,17); readkey;
a:
clrscr;
gotoxy(25,5);writeln(‘=========================================’);
gotoxy(35,6);writeln(‘ MENU ‘);
gotoxy(25,7);writeln(‘=========================================’);
gotoxy(27,8);writeln(‘1. Enkripsi & Dekripsi’);
gotoxy(27,9);writeln(‘2. Exit ‘);
gotoxy(27,10);write(‘Pilihan Anda : ‘);readln(pilihan);
case pilihan of
1: begin
clrscr;
gotoxy(25,4); write (‘Tuliskan kata : ‘); readln(kata);
gotoxy(24,5); writeln(‘=========================================’);
gotoxy(30,8); writeln(‘program enkripsi’);
gotoxy(24,9); writeln(‘=========================================’);
for i:=1 to length(kata) do ;
begin
kata[i]:=chr(ord(kata[i])+6);
end;
gotoxy(24,10); writeln(‘hasil enkripsi : ‘,kata);
gotoxy(24,11); writeln(‘=========================================’);
gotoxy(24,13);write(‘tekan enter untuk mendekripsi’);readln;
gotoxy(30,15); writeln(‘program dekripsi’);
gotoxy(24,16); writeln(‘=========================================’);
for i:=1 to length(kata) do
begin
kata[i]:=chr(ord(kata[i])-6);
end;
gotoxy(24,17); writeln(‘hasil dekripsi : ‘,kata);
gotoxy(24,18); writeln(‘=========================================’);
gotoxy(21,20); write(‘Tekan enter untuk kembali ke menu’); readln;
goto a;
end;
2: begin
clrscr;
gotoxy(33,12); writeln(‘ ..::::.. ‘);
gotoxy(33,13); writeln(‘ Terima kasih ‘);
gotoxy(39,14); readkey;
donewincrt;
end;
end;
end.

krip1

krip2

krip3

krip4

Tampilan diatas menyatakan untuk menerima input dari user dengan memasukan kata. Berikut potongan script untuk menerima input
write (‘Tuliskan kata : ‘);
readln(kata);
Setelah penginputan selesai maka diteruskan ke pengenkripsian dengan menggunakan fungsi looping untuk menghitung jumlah karakter dalam satu kata yang ada pada variabel kata, setelah itu kata akan di acak dengan menggunakan perintah
for i:=1 to length(kata) do
begin
kata[i]:=chr(ord(kata[i])+6);
end;
dimana fungsi diatas menerangkan bahwa melakukan pengulangan menghitung jumlah karakter dalam satu kata, setelah itu melakukan pengacakan dimana setiap karakter dalam kata akan ditambah 6, atau akan bergeser ke enam langkah berikutnya.
Setelah hasil proses dari enkripsi ditampilkan dilayar, variable kata yang telah terenkripsi akan dikirim ke fungsi dekripsi yang mana berfungsi untuk mengembalikan isi dari variable kata menjadi seperti semula, fungsi dekripsi akan menghitung jumlah karakter yang ada dalam variabel kata yang telah terenkripsi, untuk kemudian tiap karakter tersebut akan didekripsi, berikut script dekripsi kebalikan dari key enkripsi :
for i:=1 to length(kata) do
begin
kata[i]:=chr(ord(kata[i])-6);
end;

selamat mencoba

Array dengan while do di pascal

array_while

(* Program untuk mendifinisikan array buah berisi 3 deret dengan type string *)
(*menginisialisasi isi inputan buah dari user*)
(*Seluruh isi buah berurutan mulai dari deret 1 sampai dengan 3*)
program array_dengan_while_do;

uses wincrt; {untuk tp for dos ganti libnya dengan crt}

var
buah :array[1..3] of string;

i:integer;
begin

i:=1;
while i<4 do {membatasi inputan sampai dengan 3 deret}
begin
write(‘Masukkan buah buahan ke’,i,’:’);readln(buah[i]);
i :=i+1;
end;
(*menampilkan isi Buah secara berurutan*)
clrscr;
writeln(‘+++++++++++++++++++++++++++++++++++++++++++++’);
writeln(‘Isi buah buahan yang dimasukkan tadi adalah :’);
writeln(‘+++++++++++++++++++++++++++++++++++++++++++++’);
i :=1;
while (i<4) do {membatasi keluaran sampai dengan 3 deret}

begin
writeln(‘Buah ke’,i,’:’,buah[i]);
i :=i+1;
end;

end.

(* narkovic,STT DUTA BANGSA @2009 *)

contoh pascal ‘pembuatan gaji’

program pembuatan_record;
uses crt;
procedure garis;
begin
writeln(’==============================================’);
end;

type
reckaryawan=record
jab,nip,nama:string;
gol:integer;
gapok,tunj:real;
end;

var pegawai:reckaryawan;
total:real;

begin
clrscr;
writeln(’ LAPORAN PERHITUNGAN GAJI KARYAWAN PT MAJU TAK GENTAR’);
garis;
writeln;
write(’Masukan NIP Karyawan : ‘);readln(pegawai.nip);
write(’Masukan Nama Karyawan : ‘);readln(pegawai.nama);
write(’Golongan[1/2/3] : ‘);readln(pegawai.gol);
garis;
case pegawai.gol of
1:
begin
pegawai.jab:=’Staf dan Tetap’;
pegawai.gapok:=900000;
end;
2:
begin
pegawai.jab:=’Staf dan Kontrak’;
pegawai.gapok:=700000;
end;
3:
begin
pegawai.jab:=’Kontrak’;
pegawai.gapok:=500000;
end;
end;

if pegawai.jab=’Staf dan Tetap’ then
pegawai.tunj:=25/100*pegawai.gapok
else
if pegawai.jab=’Staf dan Kontrak’ then
pegawai.tunj:=10/100*pegawai.gapok
else
pegawai.tunj:=0;
total:=(pegawai.gapok)+(pegawai.tunj);

writeln(’Jabatan Karyawan : ‘,pegawai.jab);
writeln(’Gaji Pokok : ‘,pegawai.gapok:8:0);
writeln(’Tunjangan : ‘,pegawai.tunj:8:0);
garis;
writeln(’Total Gaji Karyawan : ‘,total:8:0);
readln;
end.

CONTOH PROGRAM (pascal bag:VIII)

Program 1 : menghitung luas/keliling bangunan

Yup… sekarang kita buat program yang pertama, menghitung luas dan keliling bangunan. Bangunan yang dijadikan contoh adalah segitiga. Perhatikan contoh di bawah ini:

1: Program Menghitung_Luas_dan_Keliling;

2: var alas, tinggi, sisimiring, luas, keliling: real;

3: Begin

4:   writeln(‘MENGHITUNG LUAS DAN KELILING SEGITIGA’);

5:   writeln(‘————————————-‘);

6:   write(‘Masukkan alas : ‘);readln(alas);

7:   write(‘Masukkan tinggi : ‘);readln(tinggi);

8:   luas:= 0.5*alas*tinggi;

9:   sisimiring:=sqrt(sqr(alas)+sqr(tinggi));

10:   keliling:= alas+tinggi+sisimiring;

11:   writeln;

12:   writeln(‘luas segitiga : ‘, luas:0:2);

13:   writeln(‘keliling segitiga : ‘, keliling:0:2);

14:   readln;

15: end.

Pada baris 6 dan 7 adalah tempat memasukkan alas dan tinggi segitiga yang akan diproses di baris 8 sampai 10. Ingat kan rumus menghitung sisi miring segitiga? yaitu akar dari jumlah kuadrat sisi-sisinya. Fungsi “sqrt” adalah untuk mengakarkan dan sqr untuk mengkuadratkan.

Sekarang kebaris 12 dan 13. Apa yang beda hayoo…? betul.. setelah variabel luas dan keliling dicetak ke layar ada tambahan “:0:2”. Itu artinya :banyaknya alokasi angka:jumlah desimal.

Gampangkan? iya donk, kan tinggal maen logika… 😀

Baca lebih lanjut

DATABASE (pascal bag :VII)

Rasanya gak lengkap kalo buat program tapi gak bisa nyimpen data. Yang bakal dijelasin di sini adalah file bertipe, artinya harus disebutkan dulu tipe file tersebut, apakah integer, long integer, string, char atau bahkan record. Berikut ini adalah daftar prosedur dan fungsi yang berhubungan dengan program database file bertipe (no 12 sampai 16 hanya untuk file teks).

Procedure Assign (var f, NamaFile: string);

Procedure Rewrite (var f);

Procedure Reset(var f);

Procedure Close(var f);

Procedure Write(var f, var1 [, var2, …, varn]);

Procedure Read(var f, var1 [, var2, …, varn]);

Function Eof(var f): Boolean;

Function FilePos(var f): longint;

Function FileSize(var f): longint;

Procedure Seek(var f, N: longint);

Procedure Truncate(var f);

Function Eoln(var f:text):boolean;

Function SeekEoln(var f:text):boolean;

Function SeekEof(var f:text):boolean;

Procedure Flush(var f:text);

Procedure SetTextBuf(var f:text, var buf[, ukuran: word]);

Penjelasannya di bawah ini:

Pengacuan suatu file melalui variabel file. Setiap ingin melakukan manipulasi atau yang lainya, harus melakukan ini dulu

Apabila file tidak ada, maka file itu akan terbentuk. Tetapi bila ada, maka isi file itu akan hilang.

Membuka file yang sudah ada, tetapi tidak menghapus isinya

Menutup suatu file (lakukan setelah setelah file itu di manipulasi)

Mengisi file dengan data. (apabila filenya bertipe text, maka writeln bisa digunakan)

Membaca isi file. (apabila filenya bertipe text, maka readln bisa digunakan untuk membaca perbaris)

Memeriksa akhir file. Hasilnya akan True bila posisinya diakhir dan False apabila tidak diakhir. Biasa digunakan untuk membaca/mengubah data.

Mengetahui posisi file sekarang. Penomoran data mulai dari 0.

Mengetahui jumlah data yang ada.

Memindahkan posisi file. Data pertama bernilai 0.

Menghapus data dari posisi sekarang sampai akhir file

Menghasilkan status akhir baris file teks. Nilainya akan true kalau diakhir baris atau Eof memberikan nilai True.

Sama seperti Eoln, tetapi spasi dan tab diabaikan.

Sama seperti Eof, tetapi mengabaikan spasi, tab ataupun tanda akhir baris

Mengosongkan penyangga (buffer) file teks yang dibuka untuk keluaran (perekaman). Prosedur ini menjamin bahwa data yang direkam benar-benar telah disimpan ke file (normalnya, data akan disimpan ke file kalau penyangga file sudah penuh)

Menentukan ukuran penyangga yang digunakan file. Dipanggil setelah assign. Semakin besar semakin cepat pemrosesannya, defaultnya 128 byte.

Bila ada tulisan var f, itu artinya variabel file. NamaFile artinya nama databasenya (bila perlu pathnya). var1 artinya variabel yang bersesuaian dengan tipe filenya. N artinya data ke-N. Bila dalam bentuk fungsi, maka ia akan mengembalikan nilai tergantung jenisnya (apabila boolean maka akan mengembalikan True atau False, bila longint akan mengembalikan angka).

Waahhh… banyak yach? emang gitulah… Bahkan ada lagi yang lain loh untuk file tak bertipe. Prosedur dan fungsi di atas gua ambil dari bukunya pak Ir. Abdul Kadir, Pemrograman Pascal. Bukunya bagus juga, ada 2 jilid tebel-tebel tapinya :D. O iya, di sini gua gak ngasih contohnya loh… abis kepanjangan kalo ditulis di sini.Untuk contoh-contoh penggunaan prosedur dan fungsi di atas bisa di lihat di Program 9.