1. Judul program
2. Blok program
a. Bagian deklarasi
deklarasi piranti
deklarasi label
deklarasi konstanta
deklarasi tipe
deklarasi variabel
deklarasi prosedur
deklarasi fungsi
b. Bagian pernyataan
*) Berarti para mahasiswa dapat menyimpulkan langsung bahwa bahasa Pascal ini
punya struktur dan merupakan bahasa terstruktur
*) Dan dalam aplikasinya, tidak harus semua bagian dari struktur tersebut harus ada
tergantung keperluan programnya. Mungkin saja tidak perlu ada judul program,
atau deklarasi label, atau tidak dibutuhkan adanya konstanta.
begin
.
statement ; { harus diakhiri titik koma }
.
.
end .
*) Dapat disimpulkan sementara bahwa dalam program Pascal harus dimulai dari
Begin dan diakhiri End
program contoh ; { judul program yang bersifat optional menggunakan kata kunci program }
uses crt ; { deklarasi piranti menggunakan kata kunci uses }
label 10, selesai ; { deklarasi label menggunakan kata kunci label }
const { deklarasi konstanta menggunakan kata kunci const }
x=1;
y=5;
type { deklarasi tipe menggunakan kata kunci type }
hasil = integer;
var
j : integer; { deklarasi variabel menggunakan kata kunci var }
nama prosedur
procedure hitung (x, y : integer); { deklarasi prosedur menggunakan kata kunci procedure }
kumpulan parameter
begin { awal prosedur }
nama fungsi
kumpulan parameter
function pangkat ( x, y : real) : real; { deklarasi fungsi menggunakan kata kunci function }
tipe fungsi
begin {awal fungsi }
Ket:
PROGRAM
Kata program pada bagian deklarasi merupakan kata yang berguna untuk
memberikan judul program yang akan dibuat.
USES
Uses merupakan perintah yang digunakan untuk memakai suatu unit tertentu dari
Turbo Pascal. Unit pada Turbo Pascal adalah kumpulan instruksi yang
merupakan prosedur dan fungsi yang dipakai dalam Turbo Pascal.
Contoh:
- unit crt unit yang mengatur kerja layar dan keyboard atau I/O, seperti : clrscr
untuk membersihkan layar.
- unit printer unit yang mengatur kerja printer sehingga dapat dilakukan pengiriman
langsung ke printer yang berhubungan dengan perintah lst.
- unit graph unit yang berorientasi ke pemrograman grafik.
- unit overlay unit yang mengatur pembagian sebuah program menjadi dua file atau
lebih
penulisannya:
uses crt, printer;
II. OUTPUT
Ada banyak statement untuk menghasilkan OUTPUT, salah satunya Write dan Writeln
Coba di Run !
Hasil: Apakah dalam baris yang sama ?
b. Ketik 2
Coba di Run !
Hasil: Apakah ada spasi antara is dan Jean ? mengapa ?
c. Ketik 3
Writeln(2000);
Writeln(2000+503);
Writeln(1075-500);
Writeln(14*62);
Writeln(23 div 7);
Writeln(18 mod 4);
End
Coba di Run !
Hasil: ?
Kesimpulan: ?
*) Cari sendiri di buku cetak lain mengenai fungsi div, mod, round, trunc, dll
1. * * * * *
* *
* *
* *
* * * * *
2. + + + + +
x x x x x
- - - - -
/ / / / /
3. * * * *
* *
* *
* * * *
* * * *
* *
* *
* * * *
d. Ketik 4
begin
c3k; { memanggil procedure dengan nama c3k}
writeln;
c3k; { memanggil lagi untuk yang kedua }
writeln;
c3k;
end
Hasil: ?
Program cetak5(output);
Procedure c5k;
Begin
Writeln(* * * *);
Writeln(* *);
Writeln(* *);
Writeln(* * * *);
End;
Begin
For k:= 1 to 5 do {mencetak 5 kali}
Begin
C5k;
Writeln;
End; End
Hasil: ?
Kesimpulan : ?
*) For K := 1 to 5 do
b. Ketik 6
Ulangi program Ketik 5 diatas, hanya saja dalam FOR-loop sdr hapus
statement Begin dan end nya.
Hasil: ?
Kesimpulan: ?
c. Ketik 7
Hasil: ?
Kesimpulan: ?
d. Ketik 8
program graph;
var
gr:integer;
procedure datar;
var
pjg:integer;
begin
procedure sisi;
var
ss:integer;
begin
write (#);
for ss:= 1 to 6 do
write ( );
write(#);
end
begin
datar; {panggil procedure datar}
for gr := 1 to 5 do
sisi; {panggil procedure sisi}
datar; {panggil procedure datar}
end
5. # # # #
# # # # # # # #
# # # # # # # # # # # # # # # #
6. 0 faktorial adalah 1
1 faktorial adalah 1
2 faktorial adalah 2
3 faktorial adalah 6
4 faktorial adalah 24
5 faktorial adalah .
6 faktorial adalah .
7 faktorial adalah .
8 faktorial adalah .
9 faktorial adalah .
10 faktorial adalah .
0! =1 =1
1! =1X1 =1
2! =1X2X3 =6
3! =1X2X3X4 = 24
4! =1X2X3X4X5 = 120
5! =1X2X3X4X5X6 = 720
. . .
. . .
. . .
dst
a. Ketik 9
Program NL (output);
Var
Index:integer;
Begin
For index := 1 to 10 do
Begin
For index := 1 to 8 do
Write (+);
Writeln;
End
End
Hasil: ?
Kesimpulan: ?
b. Ketik 10
Program NL (output);
Var
Baris,kolom :integer;
Begin
For baris := 1 to 10 do
Begin
For kolom:= 1 to 8 do
Write (+);
Writeln;
End;
End.
*) jika ada loop/perulangan yang tidak saling berhubungan dapat digunakan variabel
yang sama, seperti masalah pada ketik 9
c. Ketik 11
program duasegi(output);
var
baris, kolom:integer;
begin
for baris:= 1 to 10 do
begin
for kolom := 1 to 8 do
write(+);
write ( );
for kolom := 1 to 8 do
write (+);
writeln;
end;
end.
For foo:= 1 to 7 do
Begin
For bar:= 1 to 5 do
Write(ada-ada);
Writeln(aja);
End.
+ # # # # # # # # #
+ + # # # # # # # #
+ + + # # # # # # #
+ + + + # # # # # #
+ + + + + # # # # #
+ + + + + + # # # #
+ + + + + + + # # #
+ + + + + + + + # #
+ + + + + + + + + #
+ + + + + + + + + +
+
+ +
+ + +
+ + + +
+ + + + +
+ + + + +
+ + + +
+ + +
+ +
+
*) Nilai index dari Loop-For juga dapat di mulai dari besar kekecil dengan
statement DOWNTO
d. Ketik 12
For index := 5 to 1 do
Write (index);
Hasil: ?
II. INPUT
Statement dalam Pascal yang digunakan untuk pembacaan suatu nilai input adalah
dengan READ
Bentuk Umum: Read (variabel apa)
Berarti bahwa, bila dalam program harus ada proses input, maka harus disertakan pada
judul program.
Mis: Program baca (input,output);
a. Ketik 13
b. Ketik 14
Lengkapi dulu.!
Read(nilai);
Writeln(Nilai tersebut adalah : ,nilai);
Nilai:=nilai+5;
Run programnya, lalu ketikan nilai sembarang (yaitu nilai ) dari keyboard
Hasil: ?
Kesimpulan: ?
c. Ketik 15
Program penjumlahan(input,output);
Var
Jum:integer;
Bil:integer;
Index:integer;
Juminput:integer;
Begin
Read(juminput);
Writeln(Ada : ,juminput,nilai yang di inputkan);
Jum:=0;
Write( Input : );
For index:= 1 to juminput do
Begin
Read(bil);
Write(bil);
Jum:=jum+bil;
End;
Writeln;
Write(jumlahnya adalah :, jum);
End.
Latihan:
11. Rancang program, dimana jumlah data yang diinputkan bervariasi sehingga sdr
dapat memasukkan nilai data yang bervariasi juga, misalnya program untuk mencari
luas dan keliling beberapa persegi panjang dengan panjang dan lebar berbeda-beda
12. Rancang program untuk mencari umur rata-rata dari beberapa mahasiswa (baik
jumlah maupun umur para mahasiswanya bervariasi).
13. Rancang program, mencari rata-rata nilai beberapa matakuliah dari tiap mahasiswa,
dimana jumlah mahasiswanya juga lebih dari satu (kalau tidak salah untuk program
yang ini diperlukan prinsip nesting loop, coba dech !)
14. Rancang program, untuk mencari nilai rata-rata setiap 5 kelompok bilangan berbeda
yang sdr inputkan, dimana tiap kelompoknya terdiri atas 4 bilangan !
15. What is the difference between using a constant definition and reading the value
from input ?
II.1 IF statements
a. Ketik 16
Program kesukaan(input,output);
Const
Bilkessukaan=18;
Var
Bil:integer; {nilai-nilai yang diinputkan}
Index:integer; {banyaknya penginputan}
Juminput:integer; {berapa kali ingin menginputkan}
Begin
Read(juminput);
Writeln(Ada : ,juminput, nilai yang di inputkan);
For index:= 1 to juminput do
Begin
Read(bil);
Write(bil);
If bil = bilkesukaan
Then write ( adalah bilangan kesukaan saya);
Writeln;
End;end.
Beberapa bentuk kondisi :
Contoh:
Expresi1 = expresi2 artinya sama dengan 5 = 6 is false(salah)
Expresi1 < expresi2 artinya lebih kecil dari 5 < 6 is true (benar)
Expresi1 <= expresi2 artinya lebih kecil atau
Sama dengan 5 <= 6 is true
Expresi1 > expresi2 artinya lebih besar dari 5 > 6 is false
Expresi1 >= expresi2 artinya lebih besar atau
Sama dengan 5 >= 6 is false
Expresi1 <> expresi2 artinya tidak sama dengan 5 <> 6 is true
b. Ketik 17
masalahnnya:
pertama adalah menentukan berapa bilangan yang akan di test, yang kedua
adalah jumlah proses pembandingan yang akan dilakukan. Kita gunakan istilah
comparand untuk object/nilai pembandingnya, dimana ingin diketahui jumlah bilangan
yang diinputkan yang lebih besar dari nilai pembanding. Artinya, disini kita menginginkan
sebuah counter dan ingin menambah 1 tiap saat bila nilai yang diinputkan lebih besar
Program compare(input,output);
Var
Juminput : integer;
Comparand : integer;
Bil : integer;
Greater : integer;
Begin
Read(juminput);
Writeln ( Ada sebanyak , juminput, nilai input);
Read(comparand);
Wrriteln(Kita akan check nilai-nilai yang besar dari , comparand);
Greater=0;
For counter:= 1 to juminput do
Begin
Read(bil);
Write(bil);
II. 2 Else
Bila dari masalah di atas (ketik 17) diinginkan mendapatkan juga nilai-nilai yang
lebih kecil dari comparand dan dicetak keterangan lebih kecil. Berarti :
IF begini-begini (kondisi)
Then begitu1 (statement1)
Else atau begitu2 (statement2);
*) Perlu diketahui bahwa tidak ada tanda semicolon (;) sebelum else, karena IF-THEN-
ELSE adalah merupakan satu statement yang terdiri dari 2 bagian statement
*) Untuk mengingatkan, bahwa pemberian tanda semicolon(;) diakhir sebuah
statement, yaitu bila ada statement berikutnya.
c. Ketik 18
Program compare(input,output);
Var
Juminput : integer;
Comparand : integer;
Bil : integer;
hitung
Greater : integer;
Smaller ; integer;
Begin
Read(juminput);
Writeln ( Ada sebanyak , juminput, nilai input);
Read(comparand);
Wrriteln(Kita akan check nilai-nilai yang besar dari , comparand);
Greater=0;
For counter:= 1 to juminput do
Begin
Read(bil);
Write(bil);
Hasil: ?
Kesimpulan: ngerti enggak ? IF ngerti, modifikasi lah program itu
Sesuai keinginan dan khayalan sdr.
ELSE
Pelajari lagi dech.!
IF begini (*kondisi1*)
THEN IF begini-begini (*kondisi2*)
THEN begitu (*statement1*)
ELSE begitu-begitu (*statement2*)
Atau boleh juga., dengan menghilangkan loop dari IF kedua ( di-end-kan saja)
IF begini (*kondisi1*)
THEN BEGIN
IF begini-begini(*kondisi2*)
THEN begitu (*statement1*)
END (* THEN dari kondisi1 *)
ELSE begitu-begitu (*statemen2*)
IF begini (*kondisi1*)
THEN IF begini-begini (*kondisi2*)
THEN begitu (*statement1*)
ELSE begitu-begitu (*statement2*)
ELSE begitu-begitu-begitu (*statement3*)
d. Ketik 19
begin
read (padabrs, padacol);
writeln (Posisi pada(, padabrs, , ,padacol, ) .);
For baris :=1 to 8 do
Begin
For colom :=1 to 8 do
IF padabrs and padacol THEN write ( * )
ELSE IF (baris+colom) MOD 2 = 0 THEN write ( W)
ELSE write ( B);
Writeln;
End;
End.
e. Ketik 20
*) Belum pernah belajar fungsi AND ya.., makanya belajar dari buku lain dulu.
ARRAY
VAR
nama : array [1..10] of string[15];
nobp : array [1..10] of longint;
A : array [1..10,1..10] of integer;
X : array [1..10] of real;
Dari data tersebut akan diolah sehingga mendapatkan nilai indeks. Jumlah mahasiswa
adalah n orang, sehingga variabel dinyatakan sebagai ARRAY.
FOR k := 1 to n do
BEGIN
rata[k] := 0.25 * quiz[k] + 0.25 * mid[k] + 0.5 * akhir[k];
CASE rata[k] OF
0..39 : indeks[k] :=E;
40..54 : indeks[k] :=D;
55..64 : indeks[k] :=C;
65..79 : indeks[k] :=B;
80..100 : indeks[k] :=A;
END;
END;
clrscr;
gotoxy(2,2);write(Nama Nobp Rata-rata Indeks);
gotoxy(2,3);write(~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~);
{ 2345678901234567890123456789012345678
1 2 3 }
FOR i := 1 to n do
BEGIN
clrscr;
gotoxy (2, 3+i); write(nama[i]);
gotoxy (11, 3+i); write(nobp[i]);
gotoxy (22, 3+i); write(rata[i]);
gotoxy (33, 3+i); write(indeks[i]);
END;
gotoxy(2,4+i);write(~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~);
END.
RECORD
WITH mhs DO
BEGIN
Write ('Nama : '); readln (nama);
Write ('Nobp : '); readln (nobp);
Write ('Umur : '); readln (umur);
END ;
For i := 1 to 5 do
BEGIN
WITH mhs[ i ] DO
BEGIN
Write ('Nama : '); writeln (nama);
Write ('Nobp : '); writeln (nobp);
Write ('Umur : '); writeln (umur);
END;
END ;
END.