jangan klik

Senin, 02 September 2013

Bahasa Pascal

Bahasa Pascal

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.
contoh Program Pascal
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.
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.