M
M
M
O
O
O
D
D
D
U
U
U
L
L
L
1
1
1
Mengenal Pemrograman Pascal
T
T
IIPPEED
D
AATTAADDAALLAAMMP
P
AASSCCAALLTipe data adalah jenis data yang dipergunakan dalam pascal untuk mengklasifikasikan penyimpanan dan pemrosesan data.
Tipe Data Bilangan Bulat (integer)
Tipe
Memory
Jangkauan nilai
Byte 1
0..255
Shortint 1
-128..127
Integer 2
-32768..32767
Word 2
0..65535
Longint 4
-2147483648..2147483647
Tipe Data Floating Point (REAL)
Tipe
Memory
Jangkauan nilai
Real 6
2.9x10
-39s/d
1.7x10
+38Single 4
1.5x10
-45s/d
3.4x10
+38Double 8
5.0x10
-324s/d
1.7x10
+308Extended 10
3.4x10
-4932s/d
1.1x10
+4932Comp 8
-2x10
+63+1
s/d
+2x10
+63-1
O
O
PPEERRAATTOORRD
D
AALLAAMMP
P
AASSCCAALLOperator Aritmatik dan Hirarkinya
Operator
Keterangan
* , /
Perkalian, pembagian+ , -
Pertambahan, penguranganDIV
Pembagian bulat (integer)MOD
Sisa pembagianOperator Relasi
Operator
Keterangan
>, >=
Lebih besar, lebih besar sama dengan<, <=
Lebih kecil, lebih kecil sama dengan=
Sama dengan<>
Tidak sama denganOperator Logika
Operator
Keterangan
AND
Logika DANOR
Logika ATAUNOT
Logika TIDAKE
E
KKSSPPRREESSIIMerupakan bentuk penryataan tertentu sesuai dengan tipe data tertentu, contoh : ‘BANDUNG’, 100, 3.1416, ‘Jl Jakarta 12’, 10/12/2002, True/False, ‘a’.
V
V
AARRIIAABBEELLDDAANNK
K
OONNSSTTAANNTTAAVariabel merupakan tempat dalam memory komputer yang mempunyai alamat, ukuran, tipe data dan
nilai tertentu yang nilainya dapat berubah, sedangkan adalah konstanta tempat dalam memory komputer yang mempunyai alamat, ukuran, tipe data dan nilai tertentu yang nilainya tetap
S
S
TTRRUUKKTTUURRP
P
RROOGGRRAAMMP
P
AASSCCAALL.
Kepala Program atau Header merupakan bagian kepala program
yang bertugas mendeklarasikan atau mempersiapkan segala kebutuhan yang akan dipakai dalam program
Header Program terdiri dari penyataan :
Program, Uses, Type, Const, Var.
Badan Program atau body merupakan tempat untuk menuliskan
kode program / perintah program yang didesain sesuai dengan permasalahan
Badan Program terdiri dari sub program dan program utama.
PROGRAM Test11; BEGIN
WRITE (’Test Program’); WRITELN(’Turbo Pascal’); WRITELN(’Versi 7.0’); WRITELN;
WRITE (’Borland International’); END.
Setelah program selesai diketik ada beberapa langkah yang harus dilakukan yaitu :
1. Tekan ALT + F9 : berguna untuk meng-compile program yang sedang aktif pada editor 2. Tekan CTRL + F9 : berguna untu menjalankan / run program yang aktif pada editor 3. Tekan ALT + F5 : berguna umtuk melihat (user screen) hasil running dari program
PROGRAM : ...
Keterangan :
BEGIN END. : ...
WRITELN(’Kotak pertama berisi bola sebanyak = ’, A); WRITELN(’Kotak kedua berisi bola sebanyak = ’, B1); WRITELN(’Jumlah bola pada kedua kotak sebanyak = ’, B2); B1 := B2 DIV 4;
WRITELN(B2, ’ Bola dibagi untuk 4 orang, masing masing dapat = ’ , B1); B1 := B2 MOD 4;
WRITELN(’Sisa bola yang tidak terbagikan sebanyak = ’ , B1); END.
WRITELN(’Isi A dengan Format = ’, A:5:2); WRITELN(’Isi B dengan Format = ’, B:5:2); WRITELN;
WRITELN(’Kemudian’); A := B + 1;
B := B * 12;
WRITELN(’Isi A dengan Format = ’, A:8:0); WRITELN(’Isi B dengan Format = ’, B:8:0); END.
E
E
KKSSPPRREESSIIS
S
TTRRIINNGGPernyataan yang berbentuk string (gabungan karakter yang tidak bisa dioperasikan secara aritmatik atau tidak bisa dihitung).
E
E
KKSSPPRREESSIIN
N
UUMMEERRIICCPernyataan dalam bentuk angka atau penyataan dalam bentuk perhitungan matematik yang bisa menghasilkan nilai baru.
PROGRAM Test21;
VAR Str1,Str2,Str3,Str4 : STRING[30]; P1,P2,P3 : BYTE;
BEGIN
Str1 := ’PIKMI’;
Str2 := ’PIKMI Garuda Bandung’; P1 := LENGTH(Str1);
P2 := LENGTH(Str2);
WRITELN(’String I = ’, Str1); WRITELN(’String II = ’, Str2); WRITELN(’Panjang String I = ’, P1); WRITELN(’Panjang String II = ’, P2); P3 := POS(’K’ , Str1);
Str3 := COPY(Str2, 7, 6); Str4 := Str2;
DELETE(Str4, 7, 6)
INSERT(’ Nusantara’, Str2, 13);
WRITELN(’6 huruf dari posisi ke 7 pada string II = ’, Str3); WRITELN(’Hapus 6 huruf dari posisi ke 7 pada string II = ’, Str4); WRITELN(’Sisipkan kata mulai posisi 13 pada string II = ’, Str2); END.
LENGTH(s) : ...
Keterangan :
POS(s,t) : ...
COPY(s,p,b) : ...
DELETE(s,p,b) : ...
INSERT(s,t,b) : ...
PROGRAM Test22;
VAR I1,I2,I3 : INTEGER; C1,C2 : CHAR; BEGIN
I1 := 10;
WRITELN(’Isi I mula-mula : ’, I1); INC(I1);
WRITELN(’Isi I ditambah 1 : ’, I1); DEC(I1);
WRITELN(’Isi I dikurang 1 : ’, I1); C1 := ’A’;
I2 := ORD(C1); C2 := CHR(I2);
WRITELN(’Isi variabel C1 : ’, C1); WRITELN(’Nomor ASCII dari C1 : ’, I2); WRITELN(’Isi variabel C2 : ’, C2); I3 := -120;
WRITELN(’Nilai variabel I3 : ’, I3); WRITELN(’Nilai absolut I3 : ’, ABS(I3)); END.
INC(i) : ...
Keterangan :
DEC(i) : ...
ABS(i) : ...
CHR(i) : ...
ORD(c) : ...
PROGRAM Test23; VAR I1 : INTEGER; R1,R2,R3 : REAL; BEGIN
R1 := 2.5;
I1 := ROUND(R1);
WRITELN(’Bilangan real (R1)= ’, R1:5:1); WRITELN(’Dibulatkan (I1)= ’, I1); R2 := SQR(I1);
R3 := SQRT(R2);
WRITELN(’I2 dipangkat 2 (R2)= ’, R2:5:0); WRITELN(’Akar kuadrat R2(R3)= ’, R3:5:0); WRITELN(’Konstanta PI = ’, PI:5:0); END.
PI : ...
Keterangan :
ROUND(r) : ...
CEIL(r) : ...
FLOOR(r) : ...
SQR(r) : ...
1 PROGRAM 2latihan;
Latihan mencari kesalahan
2 VAR A,B : BYTE; 3 C,D : REAL; 4 E : CHARACTER; 5 F,G : STRING; 6
7 BEGIN 8 A := 400 9 B := SQRT(A);
10 WRITELN(’Isi A = ’, A:8); 11 WRITELN(’Isi B = ’, B:8:2); 12 WRITELN;
13 C := 7 ; 14 D := PI; 15 E := CHR(C);
16 WRITELN(’Isi C = ’ C); 17 WRITELN(’Isi D = ’ D); 18 WRITELN(’Isi E = ’ E); 19 WRITELN();
20 F := CHR(80)+ CHR(73)+ CHR(75)+ CHR(77)+ CHR(73); 21 G := COPY(F,12,3);
22 WRITELN(’Isi F = ’, F:-8); 23 WRITELN(’Isi G = ’, G:8:0); 24 END;
Baris ( ) : ...
Kesalahan :
Baris ( ) : ...
Baris ( ) : ...
Baris ( ) : ...
Baris ( ) : ...
Baris ( ) : ...
Baris ( ) : ...
Baris ( ) : ...
Baris ( ) : ...
Baris ( ) : ...
Baris ( ) : ...
Baris ( ) : ...
...
Catatan :
... ...
M
M
AANNIIPPUULLAASSIIV
V
AARRIIAABBEELLDDAANNT
T
AAMMPPIILLAANNL
L
AAYYAARRPROGRAM Test31;
VAR pj,lb,ls : INTEGER; R,l,k : REAL; BEGIN
WRITELN(‘Menghitung luas segi empat’);
WRITELN(‘---’); WRITE (‘Panjang segi empat :’); READLN(pj);
WRITE (‘Lebar segi empat :’); READLN(lb); ls := lb * pj;
WRITELN(‘Luas segi empat :’,ls)); WRITELN;
WRITELN(‘Menghitung luas dan keliling lingkaran’); WRITELN(‘---’); WRITE (‘Jari jari lingkaran:’); READLN(r);
l := PI * sqr(r); k := 2 * PI * r;
READLN : ...
Keterangan :
PROGRAM Latihan3;
Latihan melengkapi program
VAR ...,jumlah : REAL; BEGIN
WRITELN(‘Borong diskonan di Mall);
WRITELN(‘---’); WRITE (‘Beli celana panjang sebanyak :’); READLN(...); WRITE (‘Harga celana panjang Normal :’); READLN(...); WRITE (‘Besar diskon :’); READLN(...); WRITE (‘Beli Jaket Jeans sebanyak :’); READLN(...); WRITE (‘Harga Jaket Jeans normal :’); READLN(...); WRITE (‘Besar diskon :’); READLN(...); Jumlah := ... ?
WRITELN;
WRITELN(‘---’); WRITELN(‘Total ngeborong :’, ...); WRITELN(‘---’); {normalkan warna layar}
M
M
M
O
O
O
D
D
D
U
U
U
L
L
L
2
2
2
Struktur Berkondisi (Branching)
S
S
YYNNTTAAXXU
U
MMUUMMP
P
EENNRRNNYYAATTAAAANNB
B
EERRKKOONNDDIISSII“
“
I
I
FF”
”
IF [kondisi] THEN
Pernyataan benar
IF [kondisi] THEN
Pernyataan benar
ELSE
Pernyataan salah
IF [kondisi 1] THEN
Pernyataan benar 1
ELSE IF [kondisi 2] THEN
Pernyataan benar 2
ELSE
Pernyataan salah
Pernyataan IF digunakan untuk menyeleksi sebuah kondisi (menghasilkan nilai benar atau salah) yang mempunyai lebih dari satu kemungkinan
Jika sebuah kondisi IF menyatakan nilai benar/TRUE, maka pernyataan benar yang akan dilaksanakan (pernyataan setelah THEN), dan jika kondisi IF menyatakan nilai salah/FALSE, maka pernyataan salah yang akan dilaksanakan (pernyataan setelah ELSE).
PROGRAM Test41; VAR B,C : INTEGER; BEGIN
WRITE(‘Ketikan sebuah bilangan : ’); READLN(B); C := B MOD 2;
IF C = 0 THEN
WRITELN(‘Bilangan genap’) ELSE
WRITELN(‘Bilangan ganjil’); READLN
END.
PROGRAM Test42; VAR B : INTEGER; BEGIN
WRITE(‘Ketikan sebuah bilangan : ’); READLN(B); IF B > 0 THEN
WRITELN(‘Bilangan positif’) ELSE IF B = 0 THEN
WRITELN(‘N o l’) ELSE
WRITELN(‘Bilangan negatif’); READLN
END.
PROGRAM Test43;
VAR Nama, KET1, KET2 : STRING[30]; N1, N2, N3, JN : REAL;
IND : CHAR; BEGIN
WRITE(‘Nama Siswa : ’); READLN(Nama); WRITE(‘Nilai Tugas : ’); READLN(N1); WRITE(‘Nilai U T S : ’); READLN(N2);
KET1 := ‘Biasa aja’;
WRITELN(‘Predikat Siswa : ’, KET1); WRITELN(‘B o n u s : ’, KET2);
CASE [variabel] OF
[nilai 1] : pernyataan benar 1
Struktur Case biasa digunakan untuk penyeleksian seperti halnya IF, tapi nilai-nilai kemungkinannya adalah nilai-nilai yang pasti.
Variabel yang dapat diuji oleh Case hanya variabrl yang bertipe ORDINAL !
Catatan :
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 !!!!’);
WRITE(‘Umur kamu berapa ? ’); READLN(UM); CASE UM OF
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
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 CASE UPCASE(Gol) OF
TA := anak * 0.1 * gp;
PPH := (GP + TSI + TA + TJ) * 0.1; Gaji := GP + TSI + TA + TJ – PPH
WRITELN(‘Gaji Pokok : ’, GP:12:2); WRITELN(‘Tunj Suami/Istri : ’, TSI:12:2); WRITELN(‘Tunj Anak : ’, TA:12:2); WRITELN(‘Tunj Jabatan : ’, TJ:12:2); WRITELN(‘PPH (10%) : ’, PPH:12:2); WRITELN(‘Gaji Total : ’, Gaji:12:2); READLN
END.
Buatlah program dengan tampilan hasil sebagai berikut :
Latihan
--- 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 : ... //output
Gaji Pokok : ... //output
Transportasi : ... //output
Komisi : ... //output
Bonus : ... //output
Gaji Kotor : ... //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
M
M
M
O
O
O
D
D
D
U
U
U
L
L
L
3
3
3
Struktur Pengulangan (Looping)
S
S
YYNNTTAAXXU
U
MMUUMMP
P
EENNRRNNYYAATTAAAANNP
P
EENNGGUULLAANNGGAANNFOR [init] TO [batas] DO
<Pernyataan diulang> atau
FOR [init] DOWNTO [batas] DO
<Pernyataan diulang>
WHILE [kondisi] DO
<Pernyataan diulang>
REPEAT
<Pernyataan diulang>
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.
Variabel yang berfungsi sebagai counter/pencacah pad for hanya variabel yang bertipe Bilangan Bulat!
Catatan :
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;
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;
AB := 1;
WRITELN(‘A pangkat B : ’, AB:10:0); WRITELN(‘B pangkat A : ’, BA:10:0); READLN;
WRITE(‘Ketik sembarang angka : ’); READLN(x); WRITELN;
WRITELN(‘Faktorial bilangan : ’, Hasil:10:0); READLN;
WRITE(‘Variabel A : ’); READLN(A); WRITE(‘Variabel B : ’); READLN(B); WRITELN;
WRITELN(‘A pangkat B : ’, AB:10:0); WRITELN(‘B pangkat A : ’, BA:10:0); READLN;
WRITE(‘Ketik sembarang angka : ’); READLN(x); WRITELN;
WRITELN(‘Faktorial bilangan : ’, Hasil:10:0); READLN;
WRITELN; AB := 1; i := 0; REPEAT
INC(i);
AB := AB * A; UNTIL i = B; BA := 1; i := a + 1; REPEAT
DEC(i);
BA := BA * B; UNTIL i = 1;
WRITELN(‘A pangkat B : ’, AB:10:0); WRITELN(‘B pangkat A : ’, BA:10:0); READLN;
END.
PROGRAM Test58; VAR i,j,x : BYTE; BEGIN
WRITE(‘Ketik angka antara 1..25 : ’); READLN(x); WRITELN;
FOR i := 1 TO x DO BEGIN FOR j := 1 TO i DO
WRITE(j:3); WRITELN;
M
M
M
O
O
O
D
D
D
U
U
U
L
L
L
4
4
4
Sub Program / Sub Rutin
Sub Program merupakan program kecil, bagian dari program utama, yang digunakan untuk mempersingkat penulisan kumpulan perintah yang ditulis ber ulang-ulang.
Perbedaan Procedure dan Function Procedure : tidak menghasilkan nilai baru Function : menghasilkan nilai baru
Catatan :
procedure dan function selalu di tulis diatas program utama !
PROGRAM Test61;
VAR huruf : CHAR; Ket : STRING[20];
PROCEDURE Proses; BEGIN
IF UPCASE(huruf) IN [‘A’..’Z’]) THEN BEGIN
IF UPCASE(huruf) IN [‘A’, ‘I’, ‘U’, ‘E’, ‘O’] THEN Ket := ‘Huruf Vokal’
ELSE
Ket := ‘Huruf Konsonan’; END
ELSE Ket := ‘Karakter lain’; END:
BEGIN
WRITE(‘Ketik 1 huruf : ’); READLN(huruf); PROSES;
WRITELN;
WRITELN(‘Anda mengetikan : ’,Ket); READLN;
END.
PROGRAM Test62;
VAR a, b : LONGINT;
PROCEDURE Input; BEGIN
WRITE(‘Ketik 1 Angka: ’); READLN(a); END;
PROCEDURE Proses; VAR i : INTEGER; BEGIN
b := 1;
FOR i := 1 TO a DO b := b * i; END;
BEGIN Input; Proses;
WRITELN(‘Hasil faktorial : ’, a); READLN;
END.
PROGRAM Test63;
VAR a1, a2, p1, p2 : LONGINT; PROCEDURE Input(VAR n : LONGINT); BEGIN
WRITE(‘Ketik Angka : ’); READLN(n); END;
PROCEDURE Proses(p,q : LONGINT; VAR r : LONGINT); VAR i : INTEGER;
FOR i := 1 TO q DO r := r * p; END;
PROCEDURE Output(m : LONGINT); BEGIN
WRITE(‘Hasil perpangkatan : ’, m); END;
BEGIN
Input(a1); Input(a2);
Proses(a1,a2,p1); Proses(a2,a1,p2); Output(p1);
Output(p2); READLN; END.
PROGRAM Test64;
VAR a, b, c : REAL;
FUNCTION Luas(x,y : REAL) : REAL; BEGIN
Luas := x * y / 2; END;
BEGIN
WRITE(‘Panjang alas segitiga : ’); READLN(a); WRITE(‘Tinggi segitiga : ’); READLN(b); c := Luas(a,b);
WRITE(‘Luas Segitiga : ’, c:12,2); READLN;
END.
PROGRAM Test65;
VAR b1, b2, f1, f2 : LONGINT;
PROCEDURE Input(VAR n : LONGINT); BEGIN
WRITE(‘Ketik Angka : ’); READLN(n); END;
FUNCTION Faktorial(x : LONGINT) : LONGINT; VAR a, t : LONGINT;
BEGIN t := 1;
FOR a := 1 TO x DO t := t * a; Faktorial := t; END;
PROCEDURE Output(m : LONGINT); BEGIN
WRITE(‘Hasil faktorial : ’, m); END;
BEGIN
Input(b1); Input(a2);
f1 := Faktorial(b1); f2 := Faktorial(b2); Output(f1);
Output(f2); READLN; END.
1. Buatlah program untuk menghitung deret fibonaci dengan menggunakan function !
M
M
M
O
O
O
D
D
D
U
U
U
L
L
L
5
5
5
Array / Larik
Array adalah jajaran variabel yang mempunyai indeks atau sebuah variabel yang mempunyai banyak tempat.
Illustrasi
PROGRAM Test71; VAR n,a : INTEGER;
ar : ARRAY[1..20] OF INTEGER;
BEGIN
WRITE(‘Jumlah array : ’); READLN(n); FOR a := 1 TO n DO BEGIN
WRITE(‘Ketik array ke ’, a:2, ‘ = ’); READLN(ar[a]); END;
CLRSCR;
FOR a := 1 TO n DO BEGIN
WRITELN(‘Isi array ke ’, a:2, ‘ = ’, ar[a]:3);
READLN; END.
PROGRAM Test72;
TYPE a20 = ARRAY[1..20] OF INTEGER; VAR n : INTEGER;
Jum, Rata : REAL; ar : a20;
PROCEDURE IsiArray(VAR ary : a20; x : INTEGER); VAR i : INTEGER;
BEGIN
FOR i := 1 TO x DO BEGIN
WRITE(‘Ketik array ke ’, i:2, ‘ = ’); READLN(ary[i]); END;
END;
PROCEDURE Hitung(ary : a20; x : INTEGER; VAR j, r : REAL); VAR i : INTEGER;
BEGIN
j := 0;
FOR i := 1 TO x DO j := j + ary[i];
r := j / x; END;
PROCEDURE Tulis(a : a20, z : INTEGER); VAR b : INTEGER;
BEGIN
FOR b := 1 TO z DO BEGIN
WRITELN(‘Isi array ke ’, b:2, ‘ = ’, a[b]:3); END;
BEGIN
WRITE(‘Jumlah array : ’); READLN(n); IsiArray(ar, n);
Hitung(ar, n, Jum, Rata); Tulis(ar);
WRITELN(‘Jumlah seluruh nilai : ’, Jum:12:2);
1 2 3 4 5
Variabel X
Array Z[1..5]
Hanya mempunyai 1 tempat untuk nilai
WRITELN(‘Rata rata nilai : ’, Rata:12:2); READLN;
END.
TYPE : ...
Keterangan :
PROGRAM Test73;
TYPE a20 = ARRAY[1..20] OF INTEGER; VAR i, n, M1, M2 : INTEGER;
ar : a20;
PROCEDURE IsiArray(VAR ary : a20); BEGIN
FOR i := 1 TO n DO BEGIN
WRITE(‘Ketik array ke ’, i:2, ‘ = ’); READLN(ary[i]); END;
END;
FUNCTION CariMax(ar : a20); VAR j : INTEGER;
BEGIN
j := 0;
FOR i := 1 TO n DO BEGIN IF ar[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;
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.
Buatlah pengurutan array (ascending & descending) dengan peta pertukaran isi array sebagai berikut :
Latihan
1 2 3 4 5 6 7
3 3 3 2 2 2 2 2 1
1 2
12 2 2 3 3 3 3 1 1 2
2 2 12 12 4 4 4 1 1 3 3
4 4 4 12 12 1 1 4 4 4
3 4
34 21 21 1 1 12 5
5 5 5
2 1
21 34 1
1 21 5
5 12 12 12 12
1 1 34 5 5 21 21 21 21 21
M
M
M
O
O
O
D
D
D
U
U
U
L
L
L
6
6
6
R e c o r d
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 : ’); READLN(Siswa.Nama); WRITE(‘Jurusan : ’); READLN(Siswa.Jurusan); WRITE(‘Nilai 1 : ’); READLN(Siswa.Nilai[1]); WRITE(‘Nilai 2 : ’); READLN(Siswa.Nilai[2]); WRITE(‘Nilai 3 : ’); 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];
END;
VAR Siswa : ARRAY[1..10] OF rekaman; j : BYTE;
BEGIN J := 1;
WHILE j <= 10 BEGIN
WRITE(‘Nama Siswa : ’); READLN(Siswa[j].Nama); WRITE(‘Nilai Absen : ’); READLN(Siswa[j].N[1]); WRITE(‘Nilai Tugas : ’); READLN(Siswa[j].N[2]); WRITE(‘Nilai Quis : ’); READLN(Siswa[j].N[3]); WRITE(‘Nilai UTS : ’); READLN(Siswa[j].N[4]); WRITE(‘Nilai UAS : ’); READLN(Siswa[j].N[5]);
Siswa[j].N[6] := 0.1*Siswa[j].N[1] + 0.1*Siswa[j].N[2] + 0.1*Siswa[j].N[3] + 0.3*Siswa[j].N[4] + 0.4*Siswa[j].N[5];
IF Siswa[j].N[6] >= 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);