Pemrograman Turbo Pascal

Udah lama gak posting ... karena sibuk banget banyak tugas sekarang saya mau ngeshare tentang pemrograman juga yaitu, pemrograman pascal dengan turbo pascal.

Pascal adalah bahasa tingkat tinggi yang orientasinya pada segala tujuan, dirancang oleh Prof. Niklaus Wirth dari Technical University di Zurich, Switzerland. Nama pascal diambil sebagai penghargaan terhadap Blaise Pascal, ahli matematik dan philosiphi terkenal abad 17 dari Prancis.
Profesor Niklaus Wirth memperkenalkan kompiler bahasa Pascal pertama kali untuk komputer CDC 6000 (Control Data Corporation) yang dipublikasikan pada tahun 1971 dengan tujuan untuk membantu mengajar program komputer secara sistematis, khususnya pemrograman terstruktur. Pada perkembangannya banyak versi-versi pascal yang beredar, MS-Pascal, Apple Pascal, Turbo Pascal, dll.

Tipe Data yang Sering Digunakan di Pascal
Char -> hanya menampung satu karakter
string -> menampung lebih dari satu karakter
Boolean -> hanya mempunyai dua nilai True atau False
Integer -> -32.768 s/d 32.767 (gak bisa bilangan desimal)
longint -> -2.147.483.648 s/d -2.147.483.648(gak bisa bilangan desimal)
read -> 2,9 x 10-39 s/d 1,7 x 1038 (untuk menampung bilangan desimal)

Tipe Data dan Operator
Tipe Data menunjukkan suatu nilai yang dpat digunakan oleh sutu variable yang bersangkutan.
Tipe Data dalam Pascal :
1. Tipe Data Sederhana, terdiri dari :
a. Tipe data standar :
- integer : merupakan tipe data berupa bilangan bulat
- real : merupakan jenis bilangan pecahan
- char : merupakan karakter yg ditulis diantara tanda petik tunggal. Ex : ‘A’, ‘a’, ‘5′ dll
- string : merupakan urut-urutan dari karakter yang terletak di antara tanda petik tunggal.
- boolean : merupakan tipe data logika, yang berisi dua kemungkinan nilai: TRUE atau FALSE .
b. Tipe data didefinisikan pemakai

2. Tipe Data Terstruktur, terdiri dari :
a. Array
b. Record
c. File
d. Set

3. Tipe Data PointerOperator
Tanda operasi (operator) di dalam bahasa Pascal di kelompokkan dalam :
1. Assignment operator (operator pengerjaan) menggunakan simbol titik dua diikuti olehtanda sama dengan (:=). Contoh –> A:=B;
2. Binary operator digunakan untuk mengoperasikan dua buah operand yang berbentuk konstanta ataupun variable. Operator ini digunakan untuk operasi arithmatika yang berhubungan dgn nilai tipe data Integer dan Real. Operasi yang dilakukan adalah : Pertambahan (+), Pengurangan (-), Perkalian (*), Pembagian Bulat (DIV), Pembagian Real (/) dan Modulus atau Sisa Pembagian (MOD)
3. Unary operator, operator ini menggunakan sebuah operand saja dapat berupa unary minus dan unary plus. Contoh : +2.5, a+(+b) dll
4. Bitwise operator digunakan untuk operasi bit per bit pada nilai integer.
Operator yang digunakan (NOT, AND, OR, XOR, Shl, Shr).

Dasar Program Pascal
Unsur-unsur Pemrograman
a. Mendapatkan data dengan membaca data dari default input (key board, file atau sumber data lainnya).
b. Menyimpan data ke dalam memori dengan struktur data yang sesuai,
c. Memproses data dengan instruksi yang tepat.
d. Menyajikan atau mengirimkan hasil olahan data ke default output (monitor, file atau tujuan lainnya).
Nama yang dipergunakan du dalam program Pascal disebut dengan pengenal atau Identifier. Identifier digunakan untuk nama: Program, Sub-program (procedure dan function), nama: Variable, Constant, Type, Label.
Nama-nama ini digunakan untuk pemakaian dan pemanggilan dalam program. Ketentuan penulisan identifier
a. Nama identifier harus dimulai dengan karakter huruf alfabet: a sampai z, A sampai Z atau karakter ‘_’ (underscore - garis bawah)
b. Karakter berikutnya boleh karakter numerik (0 .. 9) atau kombinasi alphanumerik (huruf-numerik).
c. Panjang nama, pada berbagai versi Pascal umumnya antara 32 - 63.
d. Tidak boleh menggunakan karakter istimewa: + - * / | \ = <> [ ] . , ; : ( ) ^ @ { } $ # ~ ! % &` ” ‘ dan ?
Contoh penulisan:
Penulisan yang benar: NamaMahasiswa, Gaji_Karyawan, PX4, dll.
Penulisan yang salah: 3X, A & B, C Z dll.

Variable adalah identifier yang berisi data yang dapat berubah-ubah nilainya di dalam program. Deklarasi Variable adalah :
a. Memberikan nama variabel sebagai identitas pengenal
b. Menentukan tipe data variabel
Contoh deklarasi variabel: var X : integer;
R : real;
C : char;
T : boolean;

Konstanta adalah identifier yang berisi data yang nilainya tidak berubah di dalam program.
Deklarasi Konstanta adalah:
a. Memberikan nama konstanta sebagai identitas pengenal
b. Menentukan nilai konstanta
Contoh deklarasi konstanta: conts MaxSize = 100; {integer}
ExitC = ‘Q’; {char}
Reserved Words atau kata-kata cadangan pada Pascal adalah kata-kata yang sudah didefinisikan oleh Pascal yang mempunyai maksdu tertentu.Suatu Unit adalah kumpulan dari konstanta, tipe-tipe data, variabel, prosedur dan fungsi-fungsi. Unit standar pada Pascal yang bisa langsung digunakan adalah System, Crt, Printer Dos dan Graph. Untuk menggunakan suatu unit, maka kita harus meletakkan clausa atau anak kalimat Uses di awal blok program, diikuti oleh daftar nama unit yang digunakan. Pada materi ini yang akan dibahas adalah unit Crt. Unit ini digunakan untuk memanipulasi layar teks (windowing, peletakan cursor di layar, Color pada teks, kode extended keyboard dan lain sebagainya.

Beberapa Statemen Turbo Pascal
Statemen adalah perintah untuk pengerjaan program pascal. Statemen terletak di bagian deklarasi statemen dengan diawali oleh kata cadangan BEGIN dan diakhiri dengan kata cadangan END. Akhir dari setiap statemen diakhiri dengan titik koma [;].
Statemen statemen dalam bahasa Pascal terdiri dari pernyataan yang berupa fungsi dan prosedur yang telah disediakan sebagai perintah standar Turbo Pascal.
1. Statemen-statemen yang digunakan untuk input/output.
# Read/Readln [prosedur].
Perintah ini digunakan untuk memasukkan [input] data lewat keyboard ke dalam suatu variabel. Sintaks: Read/Readln(x); (ingat, selalu diakhiri dengan titik koma [;])
Keterangan : x = variabel.
Read = pada statemen ini posisi kursor tidak pindah ke baris selanjutnya.
Readln = pada statemen ini posisi kursor akan pindah ke baris selanjutnya setelah di input.
# Write/Writeln [prosedur].
Digunakan untuk menampilkan isi dari suatu nilai variable di layar. Sintaks: Write/Writeln(x);
Keterangan : x = variabel.
Write/Writeln= statement ini digunakan untuk mencetak variable ke dalam monitor

2. Statemen-statemen yang digunakan untuk pengaturan letak layar.
# ClrScr [prosedur].
Perintah ini digunakan untuk membersihkan layar.
sintaks: ClrScr; ��[Clear screen]

Pada Bahasa Pemrograman Turbo Pascal terdapat struktur program, di mana struktur program tersebut terdiri atas :
1. Kepala Program
2. Bagian Deklarasi
3. Bagian Program Utama

Ketiga hal di atas mempunyai bentuk umum :

Kata-kata yang bergaris bawah pada bentuk umum di atas adalah kata-kata tercadang dalam Turbo Pascal (Reserved Word). Kepala program adalah bagian yang menyatakan judul dari program yang akan dibuat. Nama program mempunyai beberapa ketentuan, yaitu:
_ Tidak boleh menggunakan kata-kata tercadang.
_ Tidak boleh dipisahkan oleh spasi.
_ Tidak boleh menggunakan simbol (-) tetapi menggunakan (_) atau garis bawah.
_ Dapat menggunakan huruf besar/ kecil dan juga angka.

Program Utama
Program utama adalah program yang berisikan pernyataan-pernyataan dalam Turbo Pascal. Ini merupakan komponen kedua dari turbo pascal yang selalu terdiri atas deklarasi data, prosedur dan fungsi. Program Utama diawali dengan pernyataan Begin dan diakhiri dengan End.
Pernyataan dasar yang paling banyak digunakan dalamprogram Pascal adalah :
_ Write
_ WriteLn
_ Read
_ ReadLn
Write adalah pernyataan yang digunakan untuk menuliskan teks / komentar tanpa perpindahan kursor jika tombol Enter ditekan. Bentuk umum :
Write (‘ Teks atau komentar ‘);
Jika perintah tersebut dijalankan :

Teks atau komentar
Jika tombol Enter ditekan akan menjadi :

Teks atau komentar _ (tanpa perpindahan baris)
WriteLn pada dasarnya mempunyai fungsi yang sama dengan Write, bedanya jika tombol Enter ditekan maka kursor akan berpindah ke baris setelahnya.

Bentuk umum :
Writeln (‘ Teks atau komentar ‘);
Jika perintah tersebut dijalankan :

Teks atau komentar
Jika tombol Enter ditekan akan menjadi :

Teks atau komentar
_ (dengan perpindahan baris)
Read digunakan untuk membaca data atau memasukkan nilai ke dalam sebuah Variabel tanpa perpindahan baris.
Sebuah program Pascal berisi kepala program, anak kalimat uses (tidak harus ada), serta blok pengumuman dan pernyataan. Kepala program menunjukkan nama program. Anak kalimat uses menggunakan unit-unit yang dipakai oleh program tersebut. Bagian terakhir merupakan blok yang berisi pengumuman dan pernyataan yang akan dijalankan.
Setiap program pascal mempunyai susunan sebagai berikut :
Program Nama_program;
Uses
….. {unit-unit yang dipakai};
Label
….. {label-label yang dipakai};
Const
….. {pendefinisian konstanta yang dipakai};
Type
…. {pendefinisian tipe-tipe data};
Var
….. {pendefinisian peubah};
Procedure Nama_prosedur ;
Begin
…..
End;
Function Nama_function ;
Begin
…..
End;
{ Program Utama }
Begin
…..
End.
Unsur aturan penulisan dasar akan digabung membentuk ungkapan (expressions), pendeklarasian (declarations), dan pernyataan (statements). Pernyataan menggambarkan tindakan algoritma yang dapat dijalankan dalam program. Setiap ungkapan adalah sebuah aturan kesatuan aturan penulisan yang terdapat dalam pernyataan dan menunjukkan sebuah nilai. Setiap ungkapan terdiri dari operator dan operand. Sedangkan pengumuman menegaskan sebuah pengenal (identifier) yang dapat digunakan pada ungkapan atau pernyataan, dan bila diperlukan memesan tempat pada pengingat untuk pengenal tersebut.



b. Variable

Variabel adalah suatu “wadah data” yang harus dideklarasikan dibagian deklarasi variabel sebelum dipakai dalam program. Inilah salah satu perbedaan pokok antara PASCAL dengan BASIC. Di dalam BASIC kita dapat memakai sembarang nama variable tanpa pusing-pusing “memesan” dulu. Tetapi di dalam PASCAL, variabel yang akan dipakai harus “dipesan” dulu dengan dideklarasikan dalam deklarasi variabel.

Syntax :

Var NamaVariable : TipeVariable;

Di dalam program selanjutnya variabel dapat diisi data, dengan cara ditugasi langsung ataudibaca dari keyboard.

Berikut adalah Type Variable dalam PASCAL yang dapat dipilih


Type Variable

Kisaran Nilai

Ukuran Memory (Byte)


Byte

Word

ShortInt

Integer

LongInt

Real

0 … 255

0 … 65535

-128 … 127

-32768 … 32757

-2147483648 … 2147483648

1 E-38 … 1E+38

1

2

1

2

4

6


Single

Double

Extended

1.5 E-45 … 1.5 E+45

5.0 E-324 … 5.0 E+308

1.9E-4951 … 1.1E+4932

4

8

10


Boolean

Char

String

Kondisi TRUE, FALSE

satu karakter ‘a’, ‘b’,…,’z’, ‘0’,’1’,…,’9’,’^’,dll

rangkaian karakter seperti hari :( ‘senin’, ‘selasa’ ,dst)


Array

Record

File

Set

Pointer

Larik karakter , numerik atau demensi

Numerik, string, char

Numerik, string, larik, record

Data ordinal

Alamat memori (menunjukkan letrak data di memori)




a. Type Data

Deklarasi Type Data dipakai apabila kita akan mendefinisikan suatu Type Data kita diluar Type Data standard PASCAL.

Cara mendeklarasikan adalah :

Type NamaTypeData = TypeDataPASCAL;

b. Constanta

Konstanta adalah suatu nilai data yang bersifat tetap selama progarm dijalankan (“run time”). Konstanta dideklarasikan dengan cara :

Syntax :

Const NamaKonstanta = NilaiData;

Yang harus diingat adalah bahwa antara nama konstanta dengan nilai data dipisahkan tanda = (Sama Dengan).

c. Unit

Unit adalah suatu satuan kumpulan instruksi yang harus diaktifkan jika instruksi yang bersangkutan akan dipakai. Di dalam PASCAL ada 4 unit yang sering dipakai yaitu CRT(berhubungan dengan perintah-perintah pengaturan layar), PRINTER (berhubungan dengan media cetak printer), DOS (berhubungan dengan perintah berkaitan dengan DOS) danGRAPH (perintah-perintah grafik).

Sebagai contoh : Clrscr, adalah prosedur untuk membersihkan layar yang ada di dalam unit CRT, maka untuk dapat memakai Clrscr, unit Crt harus di ‘Uses‘ dalam deklarasi unit. Uses Crt dan Clrscr, merupakan pasangan dalam arti Clrscr adalah suatu prosedur PASCAL yang menghendaki dideklarasikannya unit namanya CRT, dengan cara Uses Crt. Prosedur lain yang memerlukan unit Crt antara lain Gotoxy(x,y), DelLine, InsLine dan lain-lain yang akan dibahas kemudian.

d. Label

Label adalah suatu nama tertentu (dapat terdiri angka atau huruf atau kombinasinya), yang dalam program nanti akan dituju oleh statemen GOTO. Namun dalam PASCAL sesungguhnya statement GOTO ini hanya diijinkan tetapi sama sekali TIDAK DIANJURKAN. Karena statemen Goto menyebabkan struktur program menjadi tidak jelas.

e. Fungsi dan Procedure

Pemrograman PASCAL yang terstruktur menghendaki pemecahan masalah menjadi modul-modul yang lebih kecil. Modul ini nanti dapat diimplementasikan melalui fungsi atau prosedur, sehingga program utama hanyalah bertugas mengelola pemanggilan fungsi dan prosedur yang sudah dideklarasikan. Pada topik fungsi dan prosedur, deklarasi ini akan dikupas lebih jauh.

h. Procedure Write dan Writeln

Procedure Write dan Writeln digunakan untuk mencetak suatu konstanta, variable, ekspresi atau kombinasi dua atau ketiganya, dapat berupa konstanta string atau konstanta numerik.

Syntax :

Write(‘kontanta’, ‘ekspresi’, ‘variabel’)

Writeln(‘konstanta’, ‘ekspresi’, ‘variabel’)



Rangkaian karakter yang diapit tanda petik tunggal (‘ …..karakter …’)

Write : akan mencetak dan posisi kursor pada baris yang sama.

Writeln : mencetak dan kursor akan turun satu baris, ke awal baris.

Example 1:

Begin

Write(‘Halo ‘);

Write(‘ PASCAL’); Writeln;

Write(‘HALO’);

Write(‘ PASCAL’); Writeln;

Writeln(‘Halo’);

Writeln(‘PASCAL’);

Readln;

End.

Hasil Run :

Halo PASCAL

HALO PASCAL

Halo

PASCAL



h. Procedure Read dan Readln

Prosedur Read dan Readln adalah untuk membaca data DARI KEYBOARD dengan hasil pembacaan akan ditampung dalam variabel yang ada dalam argumen Read dan Readln tersebut.

Syntax :

Read(NamaVar1, NamaVar2, …);

Readln(NamaVar1, NamaVar2, …);



Tidak seperti Write atau Writeln dimana argumen (apa-apa yang ada dalam tanda kurung), dapat terdiri dari konstanta, variabel atau ekspresi, maka argumen Read atau Readln hanya dapat berupa Variable-Variable yang dapat satu atau lebih, yang sudah dideklarasikan dalam deklarasi variable. Data yang masuk haruslah sesuai dengan Type Variable yang bersangkutan.

Example 2:

{file : P12.Pas

Nama : Yuni 01.05.2000

Tara 01.05.2005

Hari/tgl/jam : Selasa, 10 01 01, 11.00

Kelp./passw : SL2-F/22F

Ass : Winnie}



Program menghitung_bilangan;

Uses Crt;;

Var

A,B,C : integer;

P,Q : real;

Z : string;



Begin

Clrscr;

A := 4; B:= 5; C:=A*B;

Z:= ‘SMKPGRI1NGAWI’;

Writeln(A,B,C);

Writeln(‘ISI Z = ’,Z);

Readln

End.

Hasil Run:

4520

ISI Z = SMKPGRI1NGAWI



Example:

{file : P12A.Pas

Nama : Yuni 02.05.2000

Tara 02.05.2005

Hari/tgl/jam : Selasa, 01 10 02, 11.00

Kelp./passw : SL2/22F

Ass : Winnie}



Program menghitung_bilangan;

Uses Crt;

Var

A,B,C : integer;

P,Q : real;

Z : string;



Begin

Clrscr;

A := 4; B:= 5; C:=A*B;

Z:=’SMKPGRI1NGAWI’;

Writeln(‘A=’,A:5, ‘B=’,B:5, ‘C=’,C:5);

Writeln(‘ISI Z=’,Z:10);

Readln;

End.

Hasil Run:

A= 4 B= 5 C= 20

ISI Z = SMKPGRI1NGAWI




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.






Previous
Next Post »