Anda di halaman 1dari 49

Materi Pascal

PERULANGAN ( LOOPING )
Di dalam bahasa Pascal, dikenal tiga macam
perulangan, yaitu dengan menggunakan
pernyataan For, While-Do, dan Repeat…Until.
1. Struktur Perulangan For
Perulangan dengan pernyataan For digunakan
untuk mengulang pernyataan atau satu blok
pernyataan berulang kali sejumlah yang
ditentukan. Perulangan dengan pernyataan For
dapat berbentuk perulangan positif, perulangan
negatif dan perulangan tersarang.
LOOPING ( FOR )
• Perulangan positif.
For variabel-kontrol:=nilai awal To nilai akhir Do pernyataan

Contoh
Var
I:Integer;
Begin
For I:= 1 to 5 Do Writeln(‘Pascal’);
End.
LOOPING ( FOR )
• Perulangan negatif
For variabel-kontrol:=nilai awal DownTo nilai akhir Do penyataan

Contoh
Var
I:integer;
Begin
For I:=5 downto 1 do
Begin
Writeln(I);
End;
End.
LOOPING ( FOR )
• Perulangan tersarang
Perulangan tersarang adalah perulangan yang
berbeda di dalam perulangan yang lainnya.
Perulangan yang lebih dalam akan diproses
terlebih dahulu sampai habis, kemudian
perulangan yang lebih luar baru akan akan
bertambah, mengerjakan perulangan yang lebh
dalam lagi mulai dari nilai awalnya dan
seterusnya.
Contoh
Var Bila program dijakankan
I,J:Integer; akan menghasilkan:
Begin • 11 12 13
For I:=1 to 5 Do • 21 22 23
Begin • 31 32 33
For j:=1 to 3 Do • 41 42 43
Begin • 51 52 53
Write(I:8,J:3);
End;
Writeln;
End;
• End.
LOOPING ( While ... Do )
• Struktur Perulangan While-Do
Perulangan ini menggunakan pernyataan
While—Do. Pernyataan While—Do digunakan
untuk melakukan proses perulangan suatu
pernyataan atau blok pernyataan terus-
menerus selama kondisi ungkapan logika pada
While masih bernilai logika benar.
BU : While kondisi ungkapan Do Pernyataan
Contoh
Var Bila program dijalankan
I:Integer; akan menghasilkan:
Begin 0
I:=0; 1
While I<5 Do 2
Begin 3
Writeln(I); 4
I:=I+1;
End;
End.
LOOPING ( Repeat ... Until )
• Struktur Repeat...Until
Struktur Repeat…Until digunakan untuk
mengulang pernyataan-pernyataan atau blok
pernyataan sampai kondisi yang diseleksi di
Until terpenuhi.

Bentuk mumnya adalah:


Repeat pernyataan Until
Contoh
Var Bila program dijalankan
I:Integer akan menghasilkan:
Begin 1
I:=0; 2
Repeat 3
I:=I+1; 4
Writeln(I); 5
Until I=5;
End.
Penyeleksian Kondisi
• Dengan menyeleksi suatu kondisi, program
dapat menentukan tindakan apa yang harus
dikerjakan, bergantung dari hasil kondisi yang
diseleksi tersebut. Untuk menyeleksi suatu
kondisi, di dalam bahasa Pascal dapat
dipergunakan pernyataan IF dan CASE.
Penyeleksian Kondisi ( IF )
• Pernyataan IF
Struktur pernyataan IF dapat berupa If—Then
atau If—Then—Else dengan bentuk umum:
If ungkapan Then pernyataan
• Ungkapan adalah kondisi yang akan diseleksi
oleh pernyataan If. Bila kondisi yang diseleksi
terpernuhi, maka pernyataan yang mengikuti
Then akan diproses. Sebaliknya, bila kondisi
tidak terpenuhi, maka yang akan diproses
adalah pernyataan berikutnya
Contoh
Var {Penyeleksian kondisi}
Nilai:ral; If Nilai>60 Then
Ket : string[11]; Ket:=’Lulus’;
Begin Writeln(Ket);
Ket:’Tidak Lulus’; End.
Write(‘Nilai Ujian = ‘);
Readln(Nilai);
Penyeleksian Kondisi ( IF )
If kondisi Then pernyataan1;
Else pernyataan2;

• Pernyataan1 akan diproses apabila kondisi


benarn(terpenuhi) sedang pernyataan2 akan
diproses apabila kondisi tidak terpenuhi.
Contoh
Var
Nilai:Real;
Begin
Writeln(‘Nilai Ujian = ‘);
Readln(Nilai);
If Nilai>60 Then Writeln(‘Lulus’);
Else Writeln(‘Tidak Lulus’);
End.
Penyeleksian Kondisi ( Case )
• Pernyataan Case
Pernyataan Case dapat berbentuk struktur Case—Of
atau Case—Of…. Else.
Struktur Case—Of mempunyai suatu ungkapan logika
yang disebut dengan selector dan sejumlah
pernyataan yang diawali dengan suatu label
permasalahan yang mempunyai tipe sama dengan
selector. Pernyataan yang mempunyai label
permasalahan yang bernilai sama dengan nilai
selector akan diproses sedang pernyataan yang
lainnya tidak.
Penyeleksian Kondisi ( Case )
• Bentuk dari struktor Case—Of adalah:
Case ungkapan Of
daftar case-label1:pernyataan1;
daftar case-label2:pernyataan2;
daftar case-label3:pernyataan3;
.
daftar case-labeln:pernyataann;
End;
• Daftar case label (label permasalahan) dapat berupa
konstanta, atau range (himpunan) dari konstanta
yang bukan bertipe real.
Contoh
Var
Nilai:Char;
Begin
Writeln(‘Nilai huruf yang didapat = ‘);Readln(Nilai);
Case Nilai of
‘A’:Writeln(‘Sangat Baik’);
‘B’:writeln(‘Baik’);
‘C’:Writeln(‘Cukup’);
‘D’:Writeln(‘Kurang’);
‘E’:Writeln(‘Gagal’);
End; End.
Penyeleksian Kondisi ( Case )
• Struktur Case—Of…Else merupakan pengembangan
dari struktur Case—Of dan juga merupakan
pengembangan dari standar Pascal. Pada struktur
Case—Of bila tidak ada kondisi yang terpenuhi
berarti tidak ada pernyataan di lingkungan Case—Of
yang diproses. Dengan struktur Case—Of…Else, bila
Tidak ada kondisi yang terpenuhi, maka pernyataan
yang akan diproses di dalam lingkungan Case—Of
adalah pernyataan yang ada di Else.
Contoh
Var
Bersih,Beli,potong:Integer;
Begin
Writeln(‘Total Pembelian = ‘); Readln(beli);
Case Beli of
0..1000:potong:=100;
1001..5000:potong:=200;
Else potong:=500;
End;
Bersih:=beli-ptong;
Writeln(‘Potongan = ‘, potongan);
Writeln(‘Jumlah Bersih = ‘, Bersih);
End.
Procedure
• Prosecure adalah suatu program terpisah
dalam blok sendiri yang berfungsi sebagai
subprogram (program bagian). Prosedur
diawali dengan kata cadangan Procedure di
dalam bagian deklarasi prosedur. Prosedur
dipanggil dan digunakan di dalam blok
program yang lainnya dengan menyebutkan
judul prosedurnya.
Procedure
• Prosedur banyak digunakan pada program yang
terstruktur, karena:
1. Merupakan penerapan konsep program modular,
yaitu memecah-mecah program yang rumit menjadi
program-program bagian yang lebih sederhana
dalam bentuk prosedur-prosedur.
2. Untuk hal-hal yang sering dilakukan berulang-ulang,
cukup dituliskan sekali saja dalam prosedur dan
dapat dipanggil atau dipergunakan sewaktu-waltu
bila diperlukan.
Contoh prosedur tanpa acuan
Procedure Hitung; Writeln(‘Nilai Y= ‘, y:6;2);
Var End;
x,y:real;
Begin Begin
Writeln(‘Nilai x: ‘); Hitung;
Readln(x); End.
Y:=x*x;
Contoh prosedur secara acuan
Procedure Hitung(var Var
a,b,c); X,y,z:integer;
Begin Begin
C:=a+b; X:=2;Y;=3;
Writeln(c); Hitung(x,y,z);
End; End.
Function
• Fungsi hampir sama dengan prosedur, hanya
fungsi harus dideklarasikan dengan tipenya.
Tipe deklarasi ini menunjukkan tipe hasil dari
fungsi. Tipe tersebut ditulis pada akhir
deklarasi fungsi yang didahului dengn titik
koma, sebagai berikut.

Function namafungsi(daftar_parameter):type;
Contoh
Function Hitung(Var A,B : Readln(X);
integer): integer; Write(‘Nilai Y ? ‘);
Begin Readln(Y);
Hitung := A + B; Writeln;
End; Writeln(X,’ + ‘,Y,’ =‘,Hitung(X,Y));
End.
Var X,Y : integer;
Begin
Write(‘Nilai X ? ‘);
Perbedaan fungsi dengan prosedur
1. Pada fungsi, nilai yang dikirimkan balik
terdapat pada nama fungsinya (kalau pada
prosedur pada parameter yang dikirimkan
secara acuan).
2. Karena nilai balik berada di nama fungsi
tersebut, maka fungsi tersebut dapat langsung
digunakan untuk dicetak hasilnya Atau nilai
fungsi tersebut dapat juga langsung
dipindahkan ke pengenal variabel yang lainnya
Rekursif
• Suatu fungsi atau prosedur dalam bahasa
Pascal dapat bersifat rekursif. Artinya, fungsi
atau prosedur tersebut dapat memanggil
dirinya sendiri.
• Berikut ini sebuah contoh fungsi dan prosedur
yang rekursif.
function faktorial (nilai : integer) : integer; begin
if nilai <= 0 then faktorial := 1;
else faktorial := nilai * faktorial (nilai-1)
end;

Var
N : integer;
Begin
Write(‘Berapa faktorial ? ‘);
Readln(N);
Writeln(N,’ faktorial = ‘,faktorial(N):9:0);
End.
Function fibonacci ( n : integer ) : integer;
Begin
If n = 0 then fibonacci := 0
Else
If n := 1 then fibonacci := 1
Else fibonacci := fibonacci (n-1) + fibonacci (n-2);
End;
Var
N : integer;
Begin
Write(‘Berapa banyak ? ‘); Readln(N); fibonacci(n);
End.
Procedure reverse ( num : integer ); Begin
If num < 10 then write(num)
Else begin
Write(num mod 10);
Reverse(num div 10);
End; End;
Var
N : integer;
Begin
Write(‘Berapa nilai ? ‘); Readln(N); reverse(n);
End.
Array ( Larik )

Array Satu Dimensi


Array Dua Dimensi
Array Satu Dimensi

Array adalah sekumpulan data yang bertipe sama, yang


anggota-anggotanya dapat diakses berdasarkan nomor
indeks.

Misalnya ada 26 huruf, kita sebut saja array Abjad,


adalah sekumpulan 26 buah karakter yang berisi nama-
nama abjad latin. Anggota pertama adalah ‘A’, anggota
kedua adalah ‘B’ dan seterusnya hingga anggota ke 26
adalah ‘Z’.
• Dalam notasi algoritma kita tuliskan :
Abjad : array [1..26] of character

Pemberian nilainya bisa dilakukan dengan cara,


pertama pengisian satu-satu berdasarkan nomor
indeks :
Abjad [1]  ‘A’
Abjad [2]  ‘B’ dst sampai Abjad [26]  ‘Z’

• Dalam notasi algoritma , indeks array dimulai dari 1,


artinya jika kita punya array dengan 26 anggota,
indeksnya mulai dari 1,2,3…sampai 26.
• Berikut penulisan array dengan menggunakan
Pascal:

Abjad : array [1..26] of char;

Contoh pemberian nilai untuk array diatas


dengan menggunakan bahasa Pascal adalah :
Abjad [1] := ‘A’;
Abjad [2] := ‘B’ dst sampai Abjad [26] := ‘Z’
Program Nama_array;
Uses crt;
Contoh 1.1
Type
nameType = String[50];
ageType = 0..150; { age range: from 0 to 150 }
Var
name : nameType;
age : ageType;
Begin
Write('Enter your name: ');
Readln(name);
Write('Enter your age: ');
Readln(age);

Writeln;
Writeln('Your name:', name);
Writeln('Your age :', age);
Readln;

End.
Program P002; Contoh 1.2
uses crt;
var abjad : array [1..50] of char;
i,maks : integer;
begin
clrscr;
write ('Masukan jumlah data karakter : ');
readln(maks);
for i:=1 to maks do
begin
write ('Masukan karakter ke ',i,' : ');
readln(abjad[i]);
end;
write ('Karakter yang dinput : ');
for i:=1 to maks do
begin
write (abjad[i],’ ‘);
end;
readln;
end.
Program P003;
uses crt;
Contoh 1.3
var angka:array [1..50] of integer;
i,maks:integer;
begin
clrscr;
write ('Masukan jumlah data : ');
readln(maks);
for i:=1 to maks do
begin
write ('Masukan angka ke ',i,' : ');
readln(angka[i]);
end;
write ('Angka yang dinput : ');
for i:=1 to maks do
begin
write(angka[i]);
end;
readln;
end.
Program Contoh_Deklarasi_Array_Beragam;
Uses winCrt; Contoh 1.4
Var
NPM :array[1..20] of string[10];
Nama :array[1..20] of string[25];
Nilai : array[ 1. .20] of real;
Umur : array[1 . .20] of byte;
banyak,i : integer;
Begin
ClrScr;
Write('Isi berapa data array yang diperlukan :');
Readln(banyak);
For i := 1 to banyak Do
Begin
Write('NPM =');Readln(NPM[i]);
Write('Nama =');readln(Nama[i]);
Write('Nilai=');readln(Nilai[i]);
Write('Umur =');readln(Umur[i]);
End;
{cetak varibel array}
Writeln('NPM NAMA NILAI UMUR ');
For i:= 1 to banyak Do
Begin
Writeln(Npm[i]:1 0,Nama[i] :25,Nilai[i] :3:2,' ',Umur[i] :3); End;
Readln;
End.
Studi Kasus :
Buat sebuah program perhitungan nilai akhir 5 orang siswa ?

Input : nama, tugas, quiz, uts, dan uas


Proses : nilai = 10%*tugas + 20%*quiz + 30%*uts+ 40%*uas.

Output : nama, dan nilai ditampilan menurut index


Program Studi_Kasus; Jawaban.
Uses crt;
Var Nama:array[1..5]of string;
I,Tugas,Quiz,UTS,UAS:integer;
Nilai:array[1..5]of real;
Begin
for I:=1 to 5 do
begin
Clrscr;
write('Masukan Nama : ');readln(Nama[I]);
write('Masukan Tugas : ');readln(Tugas);
write('Masukan Quis : ');readln(Quiz);
write('Masukan UTS : ');readln(UTS);
write('Masukan UAS : ');readln(UAS);
Nilai[I]:=0.1*Tugas+0.2*Quiz+0.3*UTS+0.4*UAS;
end;
Clrscr;
for I:=1 to 5 do
writeln('Nama : ',Nama[I],' mendapat nilai:',nilai[i] :5:2);
readln;

End.
Array Dua Dimensi

Di dalam pascal Array dapat berdimensi lebih dari satu


yang disebut dengan array dimensi banyak
(Multidimensional array).

Array 2 dimensi dapat mewakili suatu bentuk tabel atau


matrik, yaitu indeks pertama menunjukkan baris dan
indeks ke dua menunjukkan kolom dari tabel atau
matrik.
Contoh Bentuk Tampilan
Let us have the 2 dimensional array defined first. Think of a
grid where each box is located by using horizontal and vertical
coordinates just in the example below:

1 2 3 4 5

3 3,4

5 5,3

An example of a 5 by 5 2D array illustrated on a grid


Having the vertical axis as the 1st dimension and the horizontal one as the 2nd
dimension, the above example is illustrated as follows:

Var
my2DArray : Array[1..3][1..5] of Byte;
Begin
my2DArray[2][4] := 10;
End.

1 2 3 4 5

2 10

3
Program Deklarasi_Array_Dua_Dimensi;
Uses Wincrt; Contoh 2.1
Var
Tabel : Array [1..3, 1..2] of Integer;
i,j : Integer;
Begin
ClrScr;
Tabel [1,1] :=1;
Tabel [1,2] :=2;
Tabel [2,1] :=3;
Tabel [2,2] :=4;
Tabel [3,1] :=5;
Tabel [3,2] :=6;
For I := 1 to 3 Do
Begin
For J:= 1 to 2 Do
Begin
Writeln ('Elemen ',i,',',j ,'= ',tabel [i,j] );
End;
End;
End.
Program penjumlahan_matrik; Contoh 2.2
Uses Wincrt;
Var
Matrik1,Matrik2, Hasil : Array[1..3,1..2] of Integer;
i,j : Integer;
Begin
ClrScr;
{ input matrik ke satu }
Writeln(' Elemen matrik satu');
For i := 1 to 3 Do
Begin
For j := 1 to 2 Do
Begin
Write('Elemen baris -',i,' Kolom -',j,'= ');
Readln(matrik1 [i,j]);
End;
End;
Contoh 2.2 cont…
{input matrik ke dua}
Writeln('input elemen matrik dua');
For i:= 1 to 3 Do
Begin
For j:= 1 to 2 Do
Begin
Write('Elemen baris -',i,' kolom -',j,'= ');
Readln(matrik2 [i,j]);
End;
End;
Contoh 2.2 cont…
{proses penjumlahan tiap elemen}
For i := 1 to 3 Do
Begin
For j:= 1 to 2 Do
Begin
Hasil[i,j] :=Matrik1 [i,j]+Matrik2[i,j];
End;
End;
Contoh 2.2 cont…
{proses cetak hasil}
For i:= 1 to 3 Do
Begin
For j:= 1 to 2 Do
Begin
Write(Hasil[i,j] :6);
End;
Writeln;
End;
Readln;
End.