Bahasa
pascal adalah bahasa pemrograman tingkat tinggi yang dikembangkan oleh Niklaus
Wirth di Zurich pada akhir 1960-an hingga awal 1970-an. Pascal merupakan bahasa
pemrograman yang terstruktur, sehingga sering digunakan sebagai sarana awal
untuk mempelajari teknik pemrograman komputer.
1 Reserved Word (Kata Tercadang)
Bahasa Pascal
Reserved Word adalah kata-kata
yang sudah didefinisikan pada Pascal dan mempunyai arti tertentu. Kata-kata
tersebut tidak boleh digunakan sebagai identifier (Pengenal).
Contoh : Program, Begin, End, If,
For, While, Repeat, Write, Read.
2 Skema dari program pascal
Skema dari program Pascal adalah
sebagai berikut.
Program nama_program;
[ Deklarasi label ]
[ Deklarasi konstanta ]
[ Deklarasi tipe ]
[ Deklarasi variabel ]
[ Deklarasi subprogram ]
Begin
Pernyataan;
Pernyataan;
End.
3 Deklarasi Prosedur dan Fungsi
Deklarasi Prosedur (Procedure)
dan Fungsi ( Function) digunakan apabila program memiliki subprogram (bagian
program) yg diletakkan terpisah dalam blok sendiri.
3.1 Prosedur
Prosedur adalah subprogram yang
menerima masukan tetapi tidak mempunyai keluaran secara langsung. Cara
mendeklarasikan sebuah prosedur adalah sebagai berikut :
procedure A; { nama prosedur
adalah A }
begin
{ statement }
end;
Pendeklarasian prosedur di atas
adalah untuk prosedur yang tidak memerlukan parameter. Parameter adalah data
masukan untuk subprogram yang nantinya akan diproses lebih lanjut dalam
subprogram tersebut. Dalam Pascal, dikenal dua macam parameter yaitu :
1) Parameter nilai (value
parameter), dan
2) Parameter referensi (reference
parameter).
Cara mendeklarasikan parameter
tersebut adalah sebagai berikut :
procedure B(X : integer; var Y :
integer);
3.2 Fungsi
Fungsi adalah subprogram yang
menerima masukan dan mempunyai keluaran secara langsung. Cara mendeklarasikan
sebuah fungsi adalah sebagai berikut :
function B : integer; { nama
fungsi adalah B dengan }
begin { tipe data keluaran adalah
integer }
{ statement }
B := 3; { nilai yang dikeluarkan
fungsi }
end;
3.4 Rekursi
Dalam Pascal, ada satu kelebihan
dalam cara pemanggilan subprogram. Pascal mengijinkan pemanggilan suatu
subprogram dari dalam subprogram itu sendiri. Tidak semua bahasa pemrograman
mengijinkan cara pemanggilan subprogram seperti itu karena akan banyak memakan
memori. Untuk lebih jelasnya perhatikan potongan program di bawah ini:
procedure Z;
begin
{ statement }
Z;
end
4. Tipe Data
Dalam bahasa Pascal, secara garis
besar dikenal dua macam tipe data yaitu tipe data sederhana (primitive type)
dan tipe data kompleks (complex type). Tipe data sederhana adalah tipe data
yang hanya mampu menyimpan satu nilai tiap satu variabelnya. Contoh tipe data
sederhana adalah tipe numerik (integer dan real), tipe data karakter, tipe data
boolean dan tipe data ennumerasi. Tipe data kompleks adalah tipe data yang
mampu menyimpan lebih dari satu nilai dalam tiap satu variabelnya. Contoh tipe
data kompleks adalah string, array (larik), record dan object.
Bentuk umum dari deklarasi tipe
data adalah
Type pengenal = tipe
Keterangan:
pengenal : nama pengenal yang
menyatakan tipe data.
tipe : tipe data yang berlaku
dalam Turbo Pascal.
4.1 Tipe Data Sederhana
4.1.1 Tipe Ordinal
Semua tipe sederhana disebut tipe
ordinal kecuali real. Karakteristik tipe data ordinal antara lain :
- Semua kemungkinan nilai dari
suatu tipe ordinal merupakan himpunan berurutan dan setiap nilai berkaitan
dengan ordinalitasnya yaitu nilai integral.
- Fungsi standard ord dapat
diterapkan pada sembarang tipe ordinal untuk mengetahui ordinalitasnya.
- Fungsi standard pred dapat
diterapkan untuk mengetahui predesesor.
- Fungsi standard succ dapat
diterapkan untuk mengetahui suksesor.
4.1.2 Tipe Integer
Tipe integer adalah tipe data
yang nilainya tidak mempunyai titik desimal. Ada lima tipe data yang termasuk
dalam kelompok ini seperti terlihat pada tabel di bawah ini.
Tabel 2.1 Tipe integer
Tipe
Batas Nilai
Ukuran dalam byte
byte
0..255
shortint
-128..127
integer
-32768..32767
word
0..65535
longint
-2147483648..2147483647
Tipe data juga menentuka operasi
yang bisa dikerjakan. Pada tipe integer operator-operator yang bisa dikerjakan
antara lain:
Tabel 2.2 Operator-operator pada
tipe integer
Operator
Kegunaan
+
penjumlahan
-
Pengurangan
*
Perkalian
div
Pembagian
mod
Sisa pembagian
4.1.3 Tipe Boolean
Data tipe boolean mempunyai dua
nilai yakni benar dan salah. Dengan memakai operator and, or atau not maka
dapat dibentuk ungkapan boolean yang lebih rumit.
4.1.4 Tipe Char
Tipe char digunakan untuk
mendefinisikan tipe data yang nilainya merupakan himpunan karakter yang dikenal
komputer seperti yang tersaji dalam tabel ASCII. Dalam program, konstanta
bertipe char ditulis diantara tanda petik, misalnya ‘A’ . Perlu diingat bahwa data
bertipe char hanya terdiri dari 1 karakter.
4.1.5 Tipe Terbilang
Disebut tipe terbilang karena
semua nilai disebut satu persatu, contoh
Type Toko =
(besar,kecil,bagus,jelek)
Perlu diperhatikan bahwa dalam
tipe terbilang semua data harus diletakkan di antara kurung, urutan datanya
harus diperhatikan karena akan mempengaruhi fungsi pred dan succ.
4.1.6 Tipe Subjangkauan
Tidak jarang terjadi batas nilai
yang mungkin untuk suatu perubah merupakan bagian atau subjangkauan dari tipe
data yang telah didefinisikan, contoh nilai ujian adalah dari 0 sampai 100.
type Nilai = 0..100;
4.1.7 Tipe Real
onstanta bertipe real adalah
bilangan yang berisi titik desimal. Dalam Pascal paling sedikit harus ada satu
digit sebelum dan sesudah titik desimal, tidak boleh ada koma dan nilainya bisa
positif atau negatif.
Program Menghitung Jumlah Bilangan Perulangan FOR Dengan Nilai Statis
|
|
Skrip Program
Pascal
|
Output Program
|
program jum_bil;
uses wincrt;
var i, jum,bil: integer; begin jum:=0; {inisialisasi} for i:=1 to 5 do begin write(‘Masukkan Bilangan = ‘);readln(bil); jum:=jum+bil; end; writeln(‘Jumlah Bilangan = ‘,jum); end. |
Masukkan
Bilangan = 12
Masukkan
Bilangan = 12
Masukkan Bilangan = 12 Masukkan Bilangan = 12 Masukkan Bilangan = 12 Jumlah Bilangan = 60 |
Program Menghitung Jumlah Bilangan Perulangan FOR Dengan Nilai Dinamis
|
|
Skrip Program
Pascal
|
Output Program
|
program jum_bil2;
uses wincrt;
var i, n: integer; jum, bil: real; begin write(‘Banyak bilangan : ’);read(n); jum := 0; For i:= 1 to n do begin write(‘Masukkan Bilangan ‘,i, ‘=’);read(bil); jum := jum+bil; end; writeln(‘Jum = ‘,jum:0:2); end. |
Banyak
bilangan : 3
Masukkan
Bilangan 1 = 12
Masukkan Bilangan 2 = 13 Masukkan Bilangan 3 = 14 Jum = 39.00 |
Program Menghitung Jumlah dan Mean Bilangan Perulangan FOR Dengan Nilai
Dinamis
|
|
Skrip Program
Pascal
|
Output Program
|
program contoh_3;
uses wincrt;
var n, i : integer; rata : real; jum, bil : integer; begin Write(‘Masukkan nilai N = ‘);readln(n); writeln (‘Nilai N adalah= ‘,n);writeln; for i := 1 to n do begin write(‘Masukkan bilangan : ‘);read(bil); jum := jum+bil; end; rata := jum/n;writeln; writeln(‘Jumlahnya adalah : ‘,jum); writeln(‘Nilai rata-ratanya :’, rata:0:2); end. |
Masukkan nilai
N = 3
Nilai N
adalah= 3
Masukkan bilangan: 1 Masukkan bilangan: 2 Masukkan bilangan: 3 Jumlahnya adalah : 6 Nilai rata-ratanya : 2.00 |
Program Menghitung Jumlah dan Banyaknya Data
|
|
Script Program
Pascal
|
Output Program
Pascal
|
program contoh4;
uses wincrt;
var n, i,byk,jum, bil : integer; begin Write(‘Masukkan nilai perulangan : ‘);readln(n); Writeln; for i := 1 to n do begin write(‘Bilangan ‘,i,’ = ‘);read(bil); if bil >= 10 then begin byk := byk+1; jum := jum+bil ; end; end; writeln; writeln(‘banyak bilangan yang >= 10 : ‘,byk); writeln(‘jumlah bilangan yang >= 10 : ‘,jum); end. |
Masukkan nilai
perulangan: 3
Bilangan 1 =
10
Bilangan 2 = 3 Bilangan 3 = 25 Banyak bilangan yang >= 10 : 2 Jumlah bilangan yang >= 10 : 35 |
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.
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.
Program DataPegawai;
Uses Wincrt;
Type Pegawai = record
NIP : String[9];
Nama : String[50];
Golongan : Char;
Jamkerja : Real;
End;
Var
Data
: Pegawai;
Gapok
: Real;
Insentif,Gaber : Real;
Ul
: Char;
Begin
Repeat
Clrscr;
Writeln('Entry Data Pegawai PT. Punya gua');
Writeln('==========================');
Writeln;
Write('NIP
: ');Readln(Data.NIP);
Write('Nama
: ');Readln(Data.Nama);
Write('Golongan
: ');Readln(Data.Golongan);
Write('Jam
Kerja : ');Readln(Data.Jamkerja);
Writeln;
Writeln;
Case Data.Golongan of
'1' : Gapok:=1000000;
'2' : Gapok:=1500000;
'3' : Gapok:=2000000;
Else
Gapok:=0;
End;
if Data.Jamkerja>200 then
Insentif:=(Data.Jamkerja-200)*10000
else
Insentif:=0;
Gaber:=Gapok+Insentif;
Clrscr;
Writeln('Laporan Gaji Pegawai');
Writeln('PT. XYZ');
Writeln;
Writeln('============================================================================');
Writeln('|NIP |
Nama
| Golongan | Jam Kerja | Gaji
|');
Writeln('============================================================================');
Writeln('|',Data.NIP:10,'|',Data.Nama:25,'|',Data.Golongan:10,'|',Data.Jamkerja:11:0,'|',Gaber:14:2,'|');
Writeln('============================================================================');
Writeln;
Write('Mau
Ulang Lagi? [Y/T]: ');Readln(Ul);
Until Upcase(Ul) <> 'Y';
End.
================================================================================
Program Gaji_Tunjangan_dan_Pajak;
{Menghitung jumlah gaji berdasarkan golongan,
tunjangan anak dan istri, total gaji setelah pajak}
Uses wincrt;
var
nama,jab : string[20];
noin :
string[10];
golgaj
: char;
stmerit, jmlanak : integer;
gaj,tjbini,tjanak,pajgaj,jmlpajgaj,jmltjgaj,tolgaj,tolgajstpaj
: real;
Begin
clrscr;
Writeln
('=============================================');
Writeln ('PERHITUNGAN GAJI
DAN TUNJANGAN DAN PAJAK GAJI');
Writeln
('=============================================');
Writeln;
Writeln ('Isikan Data anda
sesuai ketentuan berikut ini : ');
Writeln
('----------------------------------------------- ');
Writeln;
Writeln ('Golongan Gaji
: Status
Perkawinan : ');
Writeln ('a. Rp.
2.000.000.00 1. Kawin ');
Writeln ('b. Rp.
2.500.000.00 2. Belum kawin');
Writeln ('c. Rp.
3.000.000.00 3. Cerai ');
Writeln;
Write ('Masukkan No
karyawan : ');readln
(noin);
Write ('Masukkan nama
anda :
');readln (nama);
Write ('Masukkan
Jabatan
: ');readln (jab);
Write ('Masukkan Golongan
gaji anda : ');readln (golgaj);
case golgaj of
'a' : begin
gaj := 2000000;
pajgaj := (2/100);
Write ('Status Perkawinan anda : ');readln (stmerit);
case stmerit of
1 : begin
tjbini := (5/100)*gaj;
Write ('Jumlah anak : ');readln
(jmlanak);
if jmlanak <= 3 then
tjanak := jmlanak*((2/100)*gaj)
else
tjanak := 3*((2/100)*gaj);
end;
2 : begin
tjbini := 0;
tjanak := 0;
end;
3 : begin
tjbini := 0;
Write ('Jumlah anak : ');readln
(jmlanak);
if jmlanak <= 3 then
tjanak := jmlanak*((2/100)*gaj)
else
tjanak := 3*((2/100)*gaj);
end;
else
Writeln;
Writeln ('================================================================');
Writeln;
Writeln ('Tunjangan tidak terhitung karena tidak terinput dengan benar !!!');
end;
end;
'b' : begin
gaj := 2500000;
pajgaj := (2.5/100);
Write ('Status Perkawinan anda : ');readln (stmerit);
case stmerit of
1 : begin
tjbini := (5/100)*gaj;
Write ('Jumlah anak : ');readln
(jmlanak);
if jmlanak <= 3 then
tjanak := jmlanak*((2/100)*gaj)
else
tjanak := 3*((2/100)*gaj);
end;
2 : begin
tjbini := 0;
tjanak := 0;
end;
3 : begin
tjbini := 0;
Write ('Jumlah anak : ');readln
(jmlanak);
if jmlanak <= 3 then
tjanak := jmlanak*((2/100)*gaj)
else
tjanak := 3*((2/100)*gaj);
end;
else
writeln;
Writeln ('================================================================');
Writeln;
Writeln ('Tunjangan tidak terhitung karena tidak terinput dengan benar !!!');
end;
end;
'c' : begin
gaj := 3000000;
pajgaj := (3/100);
Write ('Status Perkawinan anda : ');readln (stmerit);
case stmerit of
1 :
begin
tjbini := (5/100)*gaj;
Write ('Jumlah anak : ');readln
(jmlanak);
if jmlanak <= 3 then
tjanak := jmlanak*((2/100)*gaj)
else
tjanak := 3*((2/100)*gaj);
end;
2 : begin
tjbini := 0;
tjanak := 0;
end;
3 : begin
tjbini := 0;
Write ('Jumlah anak : ');readln
(jmlanak);
if jmlanak <= 3 then
tjanak
:= jmlanak*((2/100)*gaj)
else
tjanak := 3*((2/100)*gaj);
end;
else
writeln;
Writeln
('================================================================');
Writeln;
Writeln ('Tunjangan tidak terhitung karena tidak terinput dengan benar !!!');
end;
end;
else
Writeln;
Writeln ('=======================================');
Writeln;
Writeln ('Maaf, Golongan Gaji tidak terdaftar !!!');
Writeln;
end;
jmltjgaj :=
tjbini+tjanak;
tolgaj := gaj+jmltjgaj;
jmlpajgaj :=
tolgaj*pajgaj;
tolgajstpaj :=
tolgaj-jmlpajgaj;
Writeln;
Writeln ('SLIP GAJI
-----------------------------------> ');
Writeln;
Writeln
('Nama : ',nama);
Writeln ('No Karyawan :
',noin);
Writeln
('Jabatan : ',jab);
Writeln
('+============================================+');
Writeln ('|
Rincian
| Jumlah | ');
Writeln
('+============================================+');
Writeln ('| Besar
Gaji
: | Rp.',gaj:8:0,' |');
Writeln ('| Tunjangan
istri : | Rp.',tjbini:8:0,'
|');
Writeln ('| Tunjangan
anak : |
Rp.',tjanak:8:0,' |');
Writeln ('| Total
gaji
: | Rp.',tolgaj:8:0,' |');
Writeln ('| Pajak
gaji
: | Rp.',jmlpajgaj:8:0,' |');
Writeln ('+----------------------------+---------------+');
Writeln ('| Total gaji
setelah pajak : | Rp.',tolgajstpaj:8:0,' |');
Writeln
('+----------------------------+---------------+');
Writeln ('Program by, w1r0');
readln;
End.