Buku Penunjang Praktek Pascal
(High level language)I. Sekilas Struktur Pascal
Secara ringkas, struktur suatu program Pascal terdiri dari:
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.
Penulisan Program Pascal
Program Pascal tidak mengenal aturan penulisan dikolom tertentu seperti pada Cobol ataupun RPG, jadi boleh ditulis mulai dari kolom keberapapun.
Suatu program Pascal yang paling sederhana hanya terdiri dari sebuah bagian pernyataan saja yang merupakan bagian terakhir dari suatu blok.
begin {awal bagian pernyataan }
end . {akhir bagian pernyataan yang harus diakhiri titik }
Bentuk umum dari bagian pernyataan ini adalah sebagai berikut:
begin .
statement ; { harus diakhiri titik koma } .
*) Dapat disimpulkan sementara bahwa dalam program Pascal harus dimulai dari Begin dan diakhiri End
Contoh penulisan program:
programcontoh ; { judul program yang bersifat optional menggunakan kata kunci program } usescrt ; { 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
procedurehitung (x, y : integer); { deklarasi prosedur menggunakan kata kunci procedure }
kumpulan parameter begin { awal prosedur }
end; { akhir prosedur yang harus diakhiri titik koma }
nama fungsi
kumpulan parameter
functionpangkat ( x, y : real) : real; { deklarasi fungsi menggunakan kata kunci function }
tipe fungsi begin {awal fungsi }
end; { akhir fungsi yang harus diakhiri titik koma }
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
a. Ketik 1 (Kamu buka editor Pascalnya, ketiklah program berikut ! )
Program cetak1 (output); Begin
Write (‘Be’);
Write (‘la’);
Write (‘jar’); End
Coba di Run !
Hasil: Apakah dalam baris yang sama ?
Coba lagi program tersebut cuma write diganti dengan writeln
Hasil: ?
Kesimpulan: ?
b. Ketik 2
program cetak2 (output); begin
write (‘My name is’);
wrriteln(‘Jean Claude Van Dame.’); write(‘what yours?’);
end
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
Latihan: Penggunaan write dan writeln
Buatlah program yang hasilnya sbb:
1. * * * * * * * * * * * * * * * *
2. + + + + + x x x x x - - - - - / / / / /
3. * * * * * * * * * * * * * * * * * * * * * * * *
4. Cetak hasil akhir dari rumus berikut 2 + 3 42
i. 6 x --- ii. ---- x 52 + 6 X 3 + 4 4 + 5 7
d. Ketik 4
Program cetak3kali (output);
Procedure c3k; {bahasan tentang Procedure ini akan dilanjutkan
Lebih mendalam, makanya tolong dilihat betul fungsi dan unjuk kerjanya}
begin
writeln(‘? ? ? ?’); writeln(‘? ?’); writeln(‘? ?’); writeln(‘? ? ? ?’); end;
begin
c3k; { memanggil procedure dengan nama c3k}
writeln;
c3k; { memanggil lagi untuk yang kedua }
writeln; c3k; end
Hasil: ?
*) Bila sdr ingin menambah cetakannya, di panggil aja nama procedurenya sering-sering, OK !.
II. 1 Pengulangan Mencetak dengan Satement FOR
a.Ketik 5
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
program cetak5 (output);
var k:integer;
.
.
.
dst
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
Program bilangan1 (output); Var
K:integer; Begin
For K := 1 to 10 do
Writeln (2*K);
Writeln (‘Analisa dech ya !”); End
Hasil: ? Kesimpulan: ?
d. Ketik 8
program graph; var
gr:integer;
procedure datar;
var
pjg:integer; begin
for pjg:= 1to 8 do write (‘#’); writeln;
end
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
Latihan:
PENGULANGAN dengan FOR dibantu sistem Procedure
Tentukan program Pascalnya bila output yang diinginkan sbb:
5. # # # #
# # # # # # # # # # # # # # # # # # # # # # # #
6 faktorial adalah . 7 faktorial adalah . 8 faktorial adalah . 9 faktorial adalah . 10 faktorial adalah .
sebagai bantuan dan harap dilengkapi ! .
. .
writeln (0, ‘Faktorial adalah’, 1);
b:= 1;
7. Dari Latihan 6, modifikasi programnya agar tampilan/outputnya menjadi:
0! = 1 = 1
II.2 Pengulangan mencetak dengan Sistem NESTING LOOP
Pengertian sederhananya dari Nesting Loop adalah Ada Loop dalam Loop
a. Ketik 9
End
Hasil: ? Kesimpulan: ?
Bagaimana dengan program berikut,
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;
Latihan: Nesting Loop
8. Tentukan hasil cetakan program berikut
For foo:= 1 to 7 do Begin
For bar:= 1 to 5 do
Write(‘ada-ada’); Writeln(‘aja’);
End.
9. Tentukan programnya untuk mencetak
+ # # # # # # # # # + + # # # # # # # # + + + # # # # # # # + + + + # # # # # # + + + + + # # # # # + + + + + + # # # # + + + + + + + # # # + + + + + + + + # # + + + + + + + + + # + + + + + + + + + +
*) Sdr boleh menggunakan statement For kolom := baris + 1 to 10 do
10. Tentukan program untuk mencetak hasil berikut :
+ + + + + + + + + + + + + + +
+ + + + + + + + + + + + + + +
*) 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: ?
*) Kembali lihat soal 10
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
Program hasilakh (input,output); Const
Jumbil=5; Var
Jumakh:integer; Bilinput :integer;
Index :integer; Begin
Jumakh = 0;
Write (‘inputkan bilangannya : ‘); For index::= 1 to jumbil do Begin
Read(bilinput); Write(bilinput);
Jumakh:=jumakh+bilinput; End;
Writeln;
Write(‘ Hasil akhir adalah : ‘,jumakh); End.
Run programnya, lalu ketikan nilai sembarang (yaitu nilai bilinput) dari keyboard Hasil: ?
Kesimpulan: ?
b. Ketik 14
Lengkapi dulu….!
Read(nilai);
Writeln(‘Nilai sekarang adalah : ‘,nilai); For index :=4 to 7 do
Begin
Write(index); Read(next); Write(next);
Nilai:=nilai+next mod index; Writeln(nilai);
End
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
Bentuk Umum : If kondisinya apa (condition)
Thenapa prosesnya (statement)
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
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
Read jumlah nilai-nilai yang akan di test
Read pembanding
Set counter to nol
Kerjakan sebanyak jumlah nilai-nilai yang akan ditest Baca nilai input
If nilai input > comparand
Then tambah 1 ke counter Cetak nilai akhir counter
Kita konversi ke Pascal, OK !
Program compare(input,output);
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
Writeln (‘ Maka ada ‘, greater, ‘ nilai lebih besar.’); End.
*) Sorry, nama-nama variablenya tidak A, B, C,….tetapi pakai kata-kata yang panjang, dan bahkan ada yang bahasa inggris, seperti greater, comparand, dll. Kalau jadi tambah susah, ganti aja dengan yang mudah diingat
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.
Kita ubah sedikit program ketik 17 dengan menyisipkan logika else….
c. Ketik 18
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
Hasil: ?
Kesimpulan: ngerti enggak ? IF ngerti, modifikasi lah program itu Sesuai keinginan dan khayalan sdr.
ELSE
Pelajari lagi dech…….!
Yang lebih seru lagi……
Dalam IF-THEN-ELSE ini juga ada logika nested-loop. Dengan bentuk umum
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*)
Atau lagi……, dengan mem-fungsikan ELSE dari IF pertama
IF begini (*kondisi1*)
THEN IF begini-begini (*kondisi2*)
THEN begitu (*statement1*)
ELSE begitu-begitu (*statement2*)
ELSE begitu-begitu-begitu (*statement3*)
d. Ketik 19
writeln (‘Posisi pada(‘, padabrs, ‘, ‘,padacol, ‘) .’); For baris :=1 to 8 do
e. Ketik 20
sama dengan ketik 19 tetapi modifikasi statement IF nya dengan IF (padabrs=baris) AND (padacol=colom)
THEN write (‘ #’); .
. dst
*) Belum pernah belajar fungsi AND ya….., makanya belajar dari buku lain dulu.
ARRAY
- Setiap variabel yang dinyatakan sebagai ARRAY harus dideklarasikan pada
blok VAR
- Hal yang perlu dinyatakan adalah nama variabel, indeks variabel dan tipe
variabel
- Deklarasi ini juga akan melakukan pemesanan tempat/ memori dari setiap
variabel ARRAY tersebut.
-
Contoh deklarasi seperti dibawah ini:
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;
Contoh penggunaan ARRAY
Dibuat program Pascal untuk mengolah data nilai mahasiswa. Setiap mahasiswa mempunyai data:
- Nama - NOBP
- Nilai midtest
Dari data tersebut akan diolah sehingga mendapatkan nilai indeks. Jumlah mahasiswa adalah n orang, sehingga variabel dinyatakan sebagai ARRAY.
PROGRAM mhs (input, output); USES crt;
VAR
nama : array [1..10] of string[15];
nobp
: array[1..10] of longint;
quiz,mid,akhir,rata : array [1..10] of real;
indeks
: array[1..10] of string[1];
i,n,k :
integer;
BEGIN
clrscr;
write (‘Jumlah Mahasiswa
: ‘);readln(n);
FOR i := 1 to n do
gotoxy (30, 5); readln(nama);
gotoxy (30, 6); readln(nobp);
gotoxy (30, 7); readln(quiz);
gotoxy (30, 8); readln(mid);
gotoxy (30, 9); readln(akhir);
END;
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
• Record merupakan type data terstruktur yang harus dideklarasikan sendiri
• Record terdiri dari beberapa field dimana setiap field harus dinyatakan namanya dan type dari field tersebut
• Deklarasi dari record dapat dinyatakan pada bagian blok TYPE dan pada blok VAR
• Untuk melakukan pengolahan terhadap field dapat dilakukan dengan 2 cara: - perintah titik
- statement WITH
• Dibawah ini adalah contoh deklarasi record:
TYPE mahasiswa = RECORD Nama : string [15] ; BP : string [8] ; Umur : integer ; END;
VAR mhs : mahasiswa; { hanya untuk 1 orang mahasiswa }
Membaca field dengan menggunakan perintah titik:
Kalau menggunakan statement WITH:
WITH mhs DO BEGIN
Write ('Nama : '); readln (nama); Write ('Nobp : '); readln (nobp); Write ('Umur : '); readln (umur); END ;
• Untuk lebih dari satu mahasiswa (misalkan 5 orang mahasiswa)
TYPE mahasiswa = RECORD Nama : string [15] ; BP : string [8] ; Umur : integer ; END;
VAR mhs : array [1..5] of mahasiswa; i : byte;
BEGIN
For i := 1 to 5 do BEGIN
WITH mhs[ i ] 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.