Pemrograman Pascal tingkat Dasar POLITEK
Pemrograman Pascal tingkat Dasar
POLITEKNIK GNB
Mengenal Pemrograman Pascal
MODUL 1
TIPE DATA DALAM PASCAL
Tipe data adalah jenis data yang dipergunakan dalam pascal untuk mengklasifikasikan penyimpanan
dan pemrosesan data.
Tipe Data Bilangan Bulat (integer)
Tipe
Memory
Byte
1
Shortint
1
Integer
2
Word
2
Longint
4
Jangkauan nilai
0..255
-128..127
-32768..32767
0..65535
-2147483648..2147483647
Tipe Data Floating Point (REAL)
Tipe
Memory
Real
6
Single
4
Double
8
Extended
10
Comp
8
Jangkauan nilai
2.9x10-39 s/d 1.7x10+38
1.5x10-45 s/d 3.4x10+38
5.0x10-324 s/d 1.7x10+308
3.4x10-4932 s/d 1.1x10+4932
-2x10+63+1 s/d +2x10+63-1
OPERATOR DALAM PASCAL
Operator adalah simbol yang dapat menghubungkan 2 operan (nilai, variabel, konstanta) sebagai
perbandingan, pernyataan logika, perhitungan, atau penugasan
Halaman : 1
Pemrograman Pascal tingkat Dasar
POLITEKNIK GNB
Operator Aritmatik dan Hirarkinya
Operator
Keterangan
*,/
+,DIV
MOD
Perkalian, pembagian
Pertambahan, pengurangan
Pembagian bulat (integer)
Sisa pembagian
Operator Relasi
Operator
Keterangan
>, >=
= 90) AND (JN= 70) AND (JN= 55) AND (JN= 40) AND (JN END; : ...............................................................................................................................
SYNTAX UMUM PENRNYATAAN BERKONDISI “CASE”
CASE [variabel] OF
[nilai 1] : pernyataan benar 1
[nilai 2] : pernyataan benar 2
[nilai 3] : pernyataan benar 3
[nilai 4] : pernyataan benar 4
ELSE
pernyataan salah
END
Struktur Case biasa digunakan untuk penyeleksian seperti halnya IF, tapi nilai-nilai kemungkinannya
adalah nilai-nilai yang pasti.
Catatan :
Variabel yang dapat diuji oleh Case hanya variabrl yang bertipe ORDINAL !
PROGRAM Test44;
VAR JWB : CHAR;
BEGIN
WRITE(‘Ngerti nggak program ini ? [Y/T] ’); READLN(JWB);
CASE JWB OF
‘Y’, ‘y’ : WRITELN(‘Itu baru OK !!!’);
‘T’, ‘t’ : WRITELN(‘Perhatiin dong ! jangan ngelamun aja !’);
ELSE
WRITELN(‘Ngaco lu !!!!’);
END;
READLN
END.
PROGRAM Test45;
VAR UM : BYTE;
BEGIN
WRITE(‘Umur kamu berapa ? ’); READLN(UM);
CASE UM OF
0,1,2,3,4,5 : WRITELN(‘Balita’);
6..12
: WRITELN(‘Anak-anak’);
13..17
: WRITELN(‘Remaja’);
18..60
: WRITELN(‘Dewasa’);
61..100
: WRITELN(‘Lanjut usia’);
ELSE
WRITELN(‘Yang ngisinya bukan orang’);
END;
READLN
END.
PROGRAM Test46;
Halaman : 8
Pemrograman Pascal tingkat Dasar
POLITEKNIK GNB
VAR status : CHAR;
lembar, bayar, diskon : REAL;
BEGIN
WRITELN(‘Foto copy catetan kuliah’);
WRITELN(‘========================’);
WRITELN(‘(L=Langganan, B=Bukan)’);
WRITE (‘Status Pembeli [L/B] : ’); READLN(status);
WRITE (‘Banyak Foto Copy
: ’); READLN(lembar);
CASE Lembar OF
0..100 : bayar:=harga*lembar;
ELSE
CASE UPCASE(status) OF
‘L’ : BEGIN
diskon := (Lembar*harga)*0.2;
bayar := (HARGA*LEMBAR)-DISKON;
END;
‘B’ : BEGIN
diskon := (Lembar*harga)*0.1;
bayar := (HARGA*LEMBAR)-DISKON;
END;
END;
END;
WRITELN(‘Status
: ’, status);
WRITELN(‘Jumlah Bayar : ’, bayar:2:2);
READLN
END.
Keterangan :
UPCASE(c)
: ...............................................................................................................................
PROGRAM Test47;
VAR Gol,St : CHAR;
Nama : STRING[30];
Anak, lama : BYTE;
GP, TSI, TA, TJ, PPH, Gaji : REAL;
BEGIN
WRITELN(‘Perusahaan punya babe gue’);
WRITELN(‘Menghitung Gaji Karyawan Yang Cakep Aja’);
WRITELN(‘---------------------------------------’);
WRITE(‘Nama Karyawan
:’); READLN(nama);
WRITE(‘Golongan [A/B/C/D] :’); READLN(gol);
WRITE(‘Lama bekerja
:’); READLN(lama);
WRITE(‘Status kawin [K/T] :’); READLN(st);
IF UPCASE(st) = ‘T’ THEN BEGIN
Anak:=0;
WRITELN(‘Jumalah Anak
:’, Anak);
END
ELSE
WRITE(‘Jumalah Anak
:’); READLN(Anak);
CASE UPCASE(Gol) OF
‘A’ : GP := 500000;
‘B’ : GP := 650000;
‘C’ : GP := 800000;
‘D’ : GP := 950000;
ELSE
: GP := 0;
END;
IF lama > 10 then
TJ := 0.3 * GP
ELSE IF lama > 5 then
TJ := 0.2 * GP
ELSE IF lama > 3 then
TJ := 0.1 * GP
ELSE
TJ := 0;
CASE st OF
‘K’, ‘k’ : TSI := 0.1 * GP;
ELSE
TSI := 0;
END;
IF anak > 3 THEN
TA := 0.3 * gp
ELSE
Halaman : 9
Pemrograman Pascal tingkat Dasar
POLITEKNIK GNB
TA := anak * 0.1 * gp;
PPH := (GP + TSI + TA + TJ) * 0.1;
Gaji := GP + TSI + TA + TJ – PPH
WRITELN(‘Gaji Pokok
WRITELN(‘Tunj Suami/Istri
WRITELN(‘Tunj Anak
WRITELN(‘Tunj Jabatan
WRITELN(‘PPH (10%)
WRITELN(‘Gaji Total
READLN
END.
:
:
:
:
:
:
’,
’,
’,
’,
’,
’,
GP:12:2);
TSI:12:2);
TA:12:2);
TJ:12:2);
PPH:12:2);
Gaji:12:2);
Latihan
Buatlah program dengan tampilan hasil sebagai berikut :
-------------------------------------Menghitung Honor dan Bonus Sales
-------------------------------------Nama Sales
: ........ //input
Lama Kerja
: ........ //input
Kode Area (1/2/3)
: ........ //input
Kehadiran bulan ini
: ........ //input
Penjualan bulan ini
: ........ //input
Target per bulan
Gaji Pokok
Transportasi
Komisi
Bonus
Gaji Kotor
:
:
:
:
:
:
........
........
........
........
........
........
//output
//output
//output
//output
//output
//output
Dengan ketentuan sebagai berikut :
1. Jika lama kerja 0 s/d 1 tahun maka gaji pokok 300 000
Jika lama kerja 1 s/d 3 tahun maka gaji pokok 350 000
Jika lama kerja 4 tahun keatas maka gaji pokok 400 000
2. Area 1, target penjualan 20 000 000, komisi 1 % dari penjualan
Area 2, target penjualan 22 000 000, komisi 1,5 % dari penjualan
Area 3, target penjualan 20 000 000, komisi 2 % dari penjualan
3. Komisi bisa didapat jika penjualan mencapai target
4. Bonus akan didapat sebesar 1 000 000 jika penjualan mencapai 2 kali target/lebih
5. Trasportasi diberikan sebesar 5 000 per hari kerja
Halaman : 10
Pemrograman Pascal tingkat Dasar
POLITEKNIK GNB
Struktur Pengulangan (Looping)
MODUL 3
SYNTAX UMUM PENRNYATAAN PENGULANGAN
FOR [init] TO [batas] DO
atau
FOR [init] DOWNTO [batas] DO
WHILE [kondisi] DO
REPEAT
UNTIL [kondisi]
Pernyataan pengulangan digunakan untuk mengulang perintah/statement yang kita maksud sebanyak
kondisi yang diinginkan.
Pernyataan FOR .. TO digunakan untuk mengulang ‘Pernyataan diulang’ dimulai dari init/inisialisasi
(pemberian nilai awal) hingga batas yang ditentukan. Dan bilangan pencacahnya bergerak naik satu
per satu.
Pernyataan FOR .. DOWNTO digunakan untuk mengulang ‘Pernyataan diulang’ dimulai dari
init/inisialisasi (pemberian nilai awal) hingga batas yang ditentukan. Dan bilangan pencacahnya
bergerak turun satu per satu.
Catatan :
Variabel yang berfungsi sebagai counter/pencacah pad for hanya variabel yang bertipe Bilangan
Bulat!
Pernyataan WHILE .. DO digunakan untuk mengulang ‘Pernyataan diulang’ selama kondisi bernilai
benar / TRUE
Pernyataan REPEAT .. UNTIL digunakan untuk mengulang ‘Pernyataan diulang’ sampai kondisi
bernilai benar / TRUE
PROGRAM Test50;
VAR i,x : BYTE;
BEGIN
WRITE(‘Ketik sembarang angka : ’); READLN(x);
WRITELN;
FOR i := 1 TO x DO
WRITELN(I:3);
READLN;
END.
PROGRAM Test51;
VAR i,x : BYTE;
BEGIN
WRITE(‘Ketik sembarang angka : ’); READLN(x);
WRITELN;
FOR i := 1 TO x DO
WRITELN(I:3, ‘PIKMI Garuda’);
READLN;
END.
PROGRAM Test52;
VAR i,x, Hasil : BYTE;
BEGIN
WRITE(‘Ketik sembarang angka : ’); READLN(x);
WRITELN;
Hasil := 0;
FOR i := x DOWNTO 1 DO
Hasil := Hasil + i;
WRITELN(‘Hasil perhitungan: ’, Hasil);
READLN;
END.
PROGRAM Test53;
VAR i,x : BYTE;
A, B, AB, BA : REAL;
BEGIN
WRITE(‘Variabel A : ’); READLN(A);
WRITE(‘Variabel B : ’); READLN(B);
WRITELN;
Halaman : 11
Pemrograman Pascal tingkat Dasar
POLITEKNIK GNB
AB := 1;
FOR i := 1 TO B DO
AB := AB * A;
BA := 1;
FOR i := a DOWNTO 1 DO
BA := BA * B;
WRITELN(‘A pangkat B : ’, AB:10:0);
WRITELN(‘B pangkat A : ’, BA:10:0);
READLN;
END.
PROGRAM Test54;
VAR i,x, Hasil : BYTE;
Hasil : REAL;
BEGIN
WRITE(‘Ketik sembarang angka : ’); READLN(x);
WRITELN;
Hasil := 1;
i := 1 ;
WHILE i j THEN
j := ar[i]
END;
CariMax := j;
END;
FUNCTION CariMin(ar : a20);
VAR j : INTEGER;
BEGIN
j := 1000;
FOR i := 1 TO n DO BEGIN
IF ar[i] < j THEN
j := ar[i]
END;
CariMin := j;
END;
PROCEDURE Tulis(a : a20);
BEGIN
FOR i := 1 TO n DO BEGIN
WRITELN(‘Isi array ke ’, b:2, ‘ = ’, a[b]:3);
END;
BEGIN
WRITE(‘Jumlah array : ’); READLN(n);
IsiArray(ar);
M1 := CariMax(ar);
M2 := CariMin(ar);
Tulis(ar);
WRITELN(‘Isi Array Tertinggi: ’, M1:12:2);
WRITELN(‘Isi Array Terendah : ’, M2:12:2);
READLN;
END.
PROGRAM Test74;
TYPE a20 = ARRAY[1..20] OF INTEGER;
VAR n : INTEGER;
ar : a20;
PROCEDURE IsiArray(VAR ary : a20);
VAR i : INTEGER;
BEGIN
FOR i := 1 TO n DO BEGIN
WRITE(‘Ketik array ke ’, i:2, ‘ = ’); READLN(ary[i]);
END;
END;
Halaman : 17
Pemrograman Pascal tingkat Dasar
POLITEKNIK GNB
PROCEDURE Urutkan(VAR ary : a20);
VAR i, j, tmp : INTEGER;
BEGIN
FOR i := 1 TO n-1 DO
FOR j := i+1 TO n BEGIN
IF ary[i] > ary[j] THEN BEGIN
Tmp := ary[i];
Ary[i] := ary[j];
Ary[j] := tmp;
END;
END;
END;
PROCEDURE Tulis(a : a20, z : INTEGER);
VAR b : INTEGER;
BEGIN
FOR b := 1 TO n DO BEGIN
WRITELN(‘Isi array ke ’, b:2, ‘ = ’, a[b]:3);
END;
BEGIN
CLRSCR;
WRITE(‘Jumlah array : ’); READLN(n);
IsiArray(ar);
Urutkan(ar);
Tulis(ar);
READLN;
END.
Latihan
Buatlah pengurutan array (ascending & descending) dengan peta pertukaran isi array sebagai berikut :
1
2
3
4
5
6
7
3
1
2
2
4
3
4
2
1
1
5
3
12 2
32
23
2
3
2
3
2
31
21
12
2 12
4
34 21
12 4
4 12
21 1
41
14
5
13
4
5
3
4
5
21 34
1
1 34 5
5 34
1 21
5
5 21
34
4
12 1
1 12
5
5 12
12
12
12
21
34
21
34
21
34
21
34
Halaman : 18
Pemrograman Pascal tingkat Dasar
POLITEKNIK GNB
Record
MODUL 6
Record adalah sekumpulan variabel yang ditampung pada sebuah nama
PROGRAM Test81;
TYPE brs = RECORD
Nama : STRING[15];
Umur : BYTE;
Hobi : STRING[15];
END;
VAR Rekam : Brs;
BEGIN
WRITE(‘Nama
: ’); READLN(Rekam.Nama);
WRITE(‘Umur
: ’); READLN(Rekam.Umur);
WRITE(‘Hobi
: ’); READLN(Rekam.Hobi);
CLRSCR;
WITH Rekam DO BEGIN
WRITELN(‘Test record’);
WRITELN(‘===========’);
WRITELN(‘Nama anda : ’, Nama);
WRITELN(‘Umur
: ’, Umur);
WRITELN(‘H o b i
: ’, Hobi);
END;
READLN;
END.
PROGRAM Test82;
TYPE rek = RECORD
Nama, Jurusan : STRING[15];
Nilai : ARRAY[1..3] OF REAL;
Rata : REAL;
Ket : STRING[12];
END;
VAR Siswa : Rek;
BEGIN
WRITE(‘Nama
WRITE(‘Jurusan
WRITE(‘Nilai 1
WRITE(‘Nilai 2
WRITE(‘Nilai 3
:
:
:
:
:
’);
’);
’);
’);
’);
READLN(Siswa.Nama);
READLN(Siswa.Jurusan);
READLN(Siswa.Nilai[1]);
READLN(Siswa.Nilai[2]);
READLN(Siswa.Nilai[3]);
Siswa.Rata := (Siswa.Nilai[1] + Siswa.Nilai[1] + Siswa.Nilai[1])/3;
IF Siswa.Rata >= 90 THEN Siswa.Ket := ‘Sempurna’
ELSE IF Siswa.Rata >= 70 THEN Siswa.Ket := ‘Bagus’
ELSE IF Siswa.Rata >= 60 THEN Siswa.Ket := ‘Cukup’
ELSE IF Siswa.Rata >= 40 THEN Siswa.Ket := ‘Kurang’
ELSE Siswa.Ket := ‘Tidak Lulus’
CLRSCR;
WRITELN(‘Data Nilai Siswa’);
WRITELN(‘================’);
WRITELN(‘Nama siswa : ’, Siswa.Nama);
WRITELN(‘Jurusan
: ’, Siswa.Jurusan);
WRITELN(‘Nilai 1
: ’, Siswa.Nilai[1]);
WRITELN(‘Nilai 2
: ’, Siswa.Nilai[2]);
WRITELN(‘Nilai 3
: ’, Siswa.Nilai[3]);
WRITELN(‘Rata rata : ’, Siswa.Rata);
WRITELN(‘Keterangan : ’, Siswa.Ket);
READLN;
END.
PROGRAM Test83;
TYPE rekaman = RECORD
Nama: STRING[15];
N : ARRAY[1..6] OF REAL;
Ind: CHAR;
Halaman : 19
Pemrograman Pascal tingkat Dasar
POLITEKNIK GNB
END;
VAR Siswa : ARRAY[1..10] OF rekaman;
j : BYTE;
BEGIN
J := 1;
WHILE j = 90 THEN Siswa[j].Ind := ‘A’
ELSE IF Siswa[j].N[6] >= 75 THEN Siswa[j].Ind := ‘B’
ELSE IF Siswa[j].N[6] >= 55 THEN Siswa[j].Ind := ‘C’
ELSE IF Siswa[j].N[6] >= 40 THEN Siswa[j].Ind := ‘D’
ELSE Siswa[j].Ind := ‘E’
INC(j);
END;
CLRSCR;
WRITELN(‘Data Nilai Siswa Per Kelas’);
WRITELN(‘========================================================’);
WRITELN(‘Nama
Absen
Tugas
Quis
UTS
UAS
Akhir Ind’);
WRITELN(‘--------------------------------------------------------’);
FOR j := 1 TO 10 DO BEGIN
WITH Siswa[j] DO BEGIN
WRITELN(Nama:10, N[1]:6:2, N[2]:6:2, N[3]:6:2, N[4]:6:2,
N[5]:6:2, N[6]:6:2, Ind);
END;
END;
READLN;
END.
Halaman : 20
POLITEKNIK GNB
Mengenal Pemrograman Pascal
MODUL 1
TIPE DATA DALAM PASCAL
Tipe data adalah jenis data yang dipergunakan dalam pascal untuk mengklasifikasikan penyimpanan
dan pemrosesan data.
Tipe Data Bilangan Bulat (integer)
Tipe
Memory
Byte
1
Shortint
1
Integer
2
Word
2
Longint
4
Jangkauan nilai
0..255
-128..127
-32768..32767
0..65535
-2147483648..2147483647
Tipe Data Floating Point (REAL)
Tipe
Memory
Real
6
Single
4
Double
8
Extended
10
Comp
8
Jangkauan nilai
2.9x10-39 s/d 1.7x10+38
1.5x10-45 s/d 3.4x10+38
5.0x10-324 s/d 1.7x10+308
3.4x10-4932 s/d 1.1x10+4932
-2x10+63+1 s/d +2x10+63-1
OPERATOR DALAM PASCAL
Operator adalah simbol yang dapat menghubungkan 2 operan (nilai, variabel, konstanta) sebagai
perbandingan, pernyataan logika, perhitungan, atau penugasan
Halaman : 1
Pemrograman Pascal tingkat Dasar
POLITEKNIK GNB
Operator Aritmatik dan Hirarkinya
Operator
Keterangan
*,/
+,DIV
MOD
Perkalian, pembagian
Pertambahan, pengurangan
Pembagian bulat (integer)
Sisa pembagian
Operator Relasi
Operator
Keterangan
>, >=
= 90) AND (JN= 70) AND (JN= 55) AND (JN= 40) AND (JN END; : ...............................................................................................................................
SYNTAX UMUM PENRNYATAAN BERKONDISI “CASE”
CASE [variabel] OF
[nilai 1] : pernyataan benar 1
[nilai 2] : pernyataan benar 2
[nilai 3] : pernyataan benar 3
[nilai 4] : pernyataan benar 4
ELSE
pernyataan salah
END
Struktur Case biasa digunakan untuk penyeleksian seperti halnya IF, tapi nilai-nilai kemungkinannya
adalah nilai-nilai yang pasti.
Catatan :
Variabel yang dapat diuji oleh Case hanya variabrl yang bertipe ORDINAL !
PROGRAM Test44;
VAR JWB : CHAR;
BEGIN
WRITE(‘Ngerti nggak program ini ? [Y/T] ’); READLN(JWB);
CASE JWB OF
‘Y’, ‘y’ : WRITELN(‘Itu baru OK !!!’);
‘T’, ‘t’ : WRITELN(‘Perhatiin dong ! jangan ngelamun aja !’);
ELSE
WRITELN(‘Ngaco lu !!!!’);
END;
READLN
END.
PROGRAM Test45;
VAR UM : BYTE;
BEGIN
WRITE(‘Umur kamu berapa ? ’); READLN(UM);
CASE UM OF
0,1,2,3,4,5 : WRITELN(‘Balita’);
6..12
: WRITELN(‘Anak-anak’);
13..17
: WRITELN(‘Remaja’);
18..60
: WRITELN(‘Dewasa’);
61..100
: WRITELN(‘Lanjut usia’);
ELSE
WRITELN(‘Yang ngisinya bukan orang’);
END;
READLN
END.
PROGRAM Test46;
Halaman : 8
Pemrograman Pascal tingkat Dasar
POLITEKNIK GNB
VAR status : CHAR;
lembar, bayar, diskon : REAL;
BEGIN
WRITELN(‘Foto copy catetan kuliah’);
WRITELN(‘========================’);
WRITELN(‘(L=Langganan, B=Bukan)’);
WRITE (‘Status Pembeli [L/B] : ’); READLN(status);
WRITE (‘Banyak Foto Copy
: ’); READLN(lembar);
CASE Lembar OF
0..100 : bayar:=harga*lembar;
ELSE
CASE UPCASE(status) OF
‘L’ : BEGIN
diskon := (Lembar*harga)*0.2;
bayar := (HARGA*LEMBAR)-DISKON;
END;
‘B’ : BEGIN
diskon := (Lembar*harga)*0.1;
bayar := (HARGA*LEMBAR)-DISKON;
END;
END;
END;
WRITELN(‘Status
: ’, status);
WRITELN(‘Jumlah Bayar : ’, bayar:2:2);
READLN
END.
Keterangan :
UPCASE(c)
: ...............................................................................................................................
PROGRAM Test47;
VAR Gol,St : CHAR;
Nama : STRING[30];
Anak, lama : BYTE;
GP, TSI, TA, TJ, PPH, Gaji : REAL;
BEGIN
WRITELN(‘Perusahaan punya babe gue’);
WRITELN(‘Menghitung Gaji Karyawan Yang Cakep Aja’);
WRITELN(‘---------------------------------------’);
WRITE(‘Nama Karyawan
:’); READLN(nama);
WRITE(‘Golongan [A/B/C/D] :’); READLN(gol);
WRITE(‘Lama bekerja
:’); READLN(lama);
WRITE(‘Status kawin [K/T] :’); READLN(st);
IF UPCASE(st) = ‘T’ THEN BEGIN
Anak:=0;
WRITELN(‘Jumalah Anak
:’, Anak);
END
ELSE
WRITE(‘Jumalah Anak
:’); READLN(Anak);
CASE UPCASE(Gol) OF
‘A’ : GP := 500000;
‘B’ : GP := 650000;
‘C’ : GP := 800000;
‘D’ : GP := 950000;
ELSE
: GP := 0;
END;
IF lama > 10 then
TJ := 0.3 * GP
ELSE IF lama > 5 then
TJ := 0.2 * GP
ELSE IF lama > 3 then
TJ := 0.1 * GP
ELSE
TJ := 0;
CASE st OF
‘K’, ‘k’ : TSI := 0.1 * GP;
ELSE
TSI := 0;
END;
IF anak > 3 THEN
TA := 0.3 * gp
ELSE
Halaman : 9
Pemrograman Pascal tingkat Dasar
POLITEKNIK GNB
TA := anak * 0.1 * gp;
PPH := (GP + TSI + TA + TJ) * 0.1;
Gaji := GP + TSI + TA + TJ – PPH
WRITELN(‘Gaji Pokok
WRITELN(‘Tunj Suami/Istri
WRITELN(‘Tunj Anak
WRITELN(‘Tunj Jabatan
WRITELN(‘PPH (10%)
WRITELN(‘Gaji Total
READLN
END.
:
:
:
:
:
:
’,
’,
’,
’,
’,
’,
GP:12:2);
TSI:12:2);
TA:12:2);
TJ:12:2);
PPH:12:2);
Gaji:12:2);
Latihan
Buatlah program dengan tampilan hasil sebagai berikut :
-------------------------------------Menghitung Honor dan Bonus Sales
-------------------------------------Nama Sales
: ........ //input
Lama Kerja
: ........ //input
Kode Area (1/2/3)
: ........ //input
Kehadiran bulan ini
: ........ //input
Penjualan bulan ini
: ........ //input
Target per bulan
Gaji Pokok
Transportasi
Komisi
Bonus
Gaji Kotor
:
:
:
:
:
:
........
........
........
........
........
........
//output
//output
//output
//output
//output
//output
Dengan ketentuan sebagai berikut :
1. Jika lama kerja 0 s/d 1 tahun maka gaji pokok 300 000
Jika lama kerja 1 s/d 3 tahun maka gaji pokok 350 000
Jika lama kerja 4 tahun keatas maka gaji pokok 400 000
2. Area 1, target penjualan 20 000 000, komisi 1 % dari penjualan
Area 2, target penjualan 22 000 000, komisi 1,5 % dari penjualan
Area 3, target penjualan 20 000 000, komisi 2 % dari penjualan
3. Komisi bisa didapat jika penjualan mencapai target
4. Bonus akan didapat sebesar 1 000 000 jika penjualan mencapai 2 kali target/lebih
5. Trasportasi diberikan sebesar 5 000 per hari kerja
Halaman : 10
Pemrograman Pascal tingkat Dasar
POLITEKNIK GNB
Struktur Pengulangan (Looping)
MODUL 3
SYNTAX UMUM PENRNYATAAN PENGULANGAN
FOR [init] TO [batas] DO
atau
FOR [init] DOWNTO [batas] DO
WHILE [kondisi] DO
REPEAT
UNTIL [kondisi]
Pernyataan pengulangan digunakan untuk mengulang perintah/statement yang kita maksud sebanyak
kondisi yang diinginkan.
Pernyataan FOR .. TO digunakan untuk mengulang ‘Pernyataan diulang’ dimulai dari init/inisialisasi
(pemberian nilai awal) hingga batas yang ditentukan. Dan bilangan pencacahnya bergerak naik satu
per satu.
Pernyataan FOR .. DOWNTO digunakan untuk mengulang ‘Pernyataan diulang’ dimulai dari
init/inisialisasi (pemberian nilai awal) hingga batas yang ditentukan. Dan bilangan pencacahnya
bergerak turun satu per satu.
Catatan :
Variabel yang berfungsi sebagai counter/pencacah pad for hanya variabel yang bertipe Bilangan
Bulat!
Pernyataan WHILE .. DO digunakan untuk mengulang ‘Pernyataan diulang’ selama kondisi bernilai
benar / TRUE
Pernyataan REPEAT .. UNTIL digunakan untuk mengulang ‘Pernyataan diulang’ sampai kondisi
bernilai benar / TRUE
PROGRAM Test50;
VAR i,x : BYTE;
BEGIN
WRITE(‘Ketik sembarang angka : ’); READLN(x);
WRITELN;
FOR i := 1 TO x DO
WRITELN(I:3);
READLN;
END.
PROGRAM Test51;
VAR i,x : BYTE;
BEGIN
WRITE(‘Ketik sembarang angka : ’); READLN(x);
WRITELN;
FOR i := 1 TO x DO
WRITELN(I:3, ‘PIKMI Garuda’);
READLN;
END.
PROGRAM Test52;
VAR i,x, Hasil : BYTE;
BEGIN
WRITE(‘Ketik sembarang angka : ’); READLN(x);
WRITELN;
Hasil := 0;
FOR i := x DOWNTO 1 DO
Hasil := Hasil + i;
WRITELN(‘Hasil perhitungan: ’, Hasil);
READLN;
END.
PROGRAM Test53;
VAR i,x : BYTE;
A, B, AB, BA : REAL;
BEGIN
WRITE(‘Variabel A : ’); READLN(A);
WRITE(‘Variabel B : ’); READLN(B);
WRITELN;
Halaman : 11
Pemrograman Pascal tingkat Dasar
POLITEKNIK GNB
AB := 1;
FOR i := 1 TO B DO
AB := AB * A;
BA := 1;
FOR i := a DOWNTO 1 DO
BA := BA * B;
WRITELN(‘A pangkat B : ’, AB:10:0);
WRITELN(‘B pangkat A : ’, BA:10:0);
READLN;
END.
PROGRAM Test54;
VAR i,x, Hasil : BYTE;
Hasil : REAL;
BEGIN
WRITE(‘Ketik sembarang angka : ’); READLN(x);
WRITELN;
Hasil := 1;
i := 1 ;
WHILE i j THEN
j := ar[i]
END;
CariMax := j;
END;
FUNCTION CariMin(ar : a20);
VAR j : INTEGER;
BEGIN
j := 1000;
FOR i := 1 TO n DO BEGIN
IF ar[i] < j THEN
j := ar[i]
END;
CariMin := j;
END;
PROCEDURE Tulis(a : a20);
BEGIN
FOR i := 1 TO n DO BEGIN
WRITELN(‘Isi array ke ’, b:2, ‘ = ’, a[b]:3);
END;
BEGIN
WRITE(‘Jumlah array : ’); READLN(n);
IsiArray(ar);
M1 := CariMax(ar);
M2 := CariMin(ar);
Tulis(ar);
WRITELN(‘Isi Array Tertinggi: ’, M1:12:2);
WRITELN(‘Isi Array Terendah : ’, M2:12:2);
READLN;
END.
PROGRAM Test74;
TYPE a20 = ARRAY[1..20] OF INTEGER;
VAR n : INTEGER;
ar : a20;
PROCEDURE IsiArray(VAR ary : a20);
VAR i : INTEGER;
BEGIN
FOR i := 1 TO n DO BEGIN
WRITE(‘Ketik array ke ’, i:2, ‘ = ’); READLN(ary[i]);
END;
END;
Halaman : 17
Pemrograman Pascal tingkat Dasar
POLITEKNIK GNB
PROCEDURE Urutkan(VAR ary : a20);
VAR i, j, tmp : INTEGER;
BEGIN
FOR i := 1 TO n-1 DO
FOR j := i+1 TO n BEGIN
IF ary[i] > ary[j] THEN BEGIN
Tmp := ary[i];
Ary[i] := ary[j];
Ary[j] := tmp;
END;
END;
END;
PROCEDURE Tulis(a : a20, z : INTEGER);
VAR b : INTEGER;
BEGIN
FOR b := 1 TO n DO BEGIN
WRITELN(‘Isi array ke ’, b:2, ‘ = ’, a[b]:3);
END;
BEGIN
CLRSCR;
WRITE(‘Jumlah array : ’); READLN(n);
IsiArray(ar);
Urutkan(ar);
Tulis(ar);
READLN;
END.
Latihan
Buatlah pengurutan array (ascending & descending) dengan peta pertukaran isi array sebagai berikut :
1
2
3
4
5
6
7
3
1
2
2
4
3
4
2
1
1
5
3
12 2
32
23
2
3
2
3
2
31
21
12
2 12
4
34 21
12 4
4 12
21 1
41
14
5
13
4
5
3
4
5
21 34
1
1 34 5
5 34
1 21
5
5 21
34
4
12 1
1 12
5
5 12
12
12
12
21
34
21
34
21
34
21
34
Halaman : 18
Pemrograman Pascal tingkat Dasar
POLITEKNIK GNB
Record
MODUL 6
Record adalah sekumpulan variabel yang ditampung pada sebuah nama
PROGRAM Test81;
TYPE brs = RECORD
Nama : STRING[15];
Umur : BYTE;
Hobi : STRING[15];
END;
VAR Rekam : Brs;
BEGIN
WRITE(‘Nama
: ’); READLN(Rekam.Nama);
WRITE(‘Umur
: ’); READLN(Rekam.Umur);
WRITE(‘Hobi
: ’); READLN(Rekam.Hobi);
CLRSCR;
WITH Rekam DO BEGIN
WRITELN(‘Test record’);
WRITELN(‘===========’);
WRITELN(‘Nama anda : ’, Nama);
WRITELN(‘Umur
: ’, Umur);
WRITELN(‘H o b i
: ’, Hobi);
END;
READLN;
END.
PROGRAM Test82;
TYPE rek = RECORD
Nama, Jurusan : STRING[15];
Nilai : ARRAY[1..3] OF REAL;
Rata : REAL;
Ket : STRING[12];
END;
VAR Siswa : Rek;
BEGIN
WRITE(‘Nama
WRITE(‘Jurusan
WRITE(‘Nilai 1
WRITE(‘Nilai 2
WRITE(‘Nilai 3
:
:
:
:
:
’);
’);
’);
’);
’);
READLN(Siswa.Nama);
READLN(Siswa.Jurusan);
READLN(Siswa.Nilai[1]);
READLN(Siswa.Nilai[2]);
READLN(Siswa.Nilai[3]);
Siswa.Rata := (Siswa.Nilai[1] + Siswa.Nilai[1] + Siswa.Nilai[1])/3;
IF Siswa.Rata >= 90 THEN Siswa.Ket := ‘Sempurna’
ELSE IF Siswa.Rata >= 70 THEN Siswa.Ket := ‘Bagus’
ELSE IF Siswa.Rata >= 60 THEN Siswa.Ket := ‘Cukup’
ELSE IF Siswa.Rata >= 40 THEN Siswa.Ket := ‘Kurang’
ELSE Siswa.Ket := ‘Tidak Lulus’
CLRSCR;
WRITELN(‘Data Nilai Siswa’);
WRITELN(‘================’);
WRITELN(‘Nama siswa : ’, Siswa.Nama);
WRITELN(‘Jurusan
: ’, Siswa.Jurusan);
WRITELN(‘Nilai 1
: ’, Siswa.Nilai[1]);
WRITELN(‘Nilai 2
: ’, Siswa.Nilai[2]);
WRITELN(‘Nilai 3
: ’, Siswa.Nilai[3]);
WRITELN(‘Rata rata : ’, Siswa.Rata);
WRITELN(‘Keterangan : ’, Siswa.Ket);
READLN;
END.
PROGRAM Test83;
TYPE rekaman = RECORD
Nama: STRING[15];
N : ARRAY[1..6] OF REAL;
Ind: CHAR;
Halaman : 19
Pemrograman Pascal tingkat Dasar
POLITEKNIK GNB
END;
VAR Siswa : ARRAY[1..10] OF rekaman;
j : BYTE;
BEGIN
J := 1;
WHILE j = 90 THEN Siswa[j].Ind := ‘A’
ELSE IF Siswa[j].N[6] >= 75 THEN Siswa[j].Ind := ‘B’
ELSE IF Siswa[j].N[6] >= 55 THEN Siswa[j].Ind := ‘C’
ELSE IF Siswa[j].N[6] >= 40 THEN Siswa[j].Ind := ‘D’
ELSE Siswa[j].Ind := ‘E’
INC(j);
END;
CLRSCR;
WRITELN(‘Data Nilai Siswa Per Kelas’);
WRITELN(‘========================================================’);
WRITELN(‘Nama
Absen
Tugas
Quis
UTS
UAS
Akhir Ind’);
WRITELN(‘--------------------------------------------------------’);
FOR j := 1 TO 10 DO BEGIN
WITH Siswa[j] DO BEGIN
WRITELN(Nama:10, N[1]:6:2, N[2]:6:2, N[3]:6:2, N[4]:6:2,
N[5]:6:2, N[6]:6:2, Ind);
END;
END;
READLN;
END.
Halaman : 20