Anda di halaman 1dari 15

Bagian 6

STRUKTUR PENGULANGAN

6.1 Struktur Pengulangan


Struktur pengulangan secara umum :
<inisialisasi>
awal pengulangan
badan pengulangan
akhir pengulangan
<terminasi>
Awal dan akhir pengulangan tergantung pada struktur pengulangan yang digunakan.
Terdapat tiga macam struktur pengulangan, yaitu :
1. Struktur FOR
2. Struktur WHILE
3. Struktur REPEAT
6.2 Struktur FOR
Bentuk umum struktur FOR ada dua macam, yaitu : menaik atau menurun.
1. FOR menaik :
for pencacah := awal to akhir do
aksi;
Keterangan :
a. Pencacah haruslah dari tipe data yang memilik predecessor dan successor, yaitu
integer, karakter, subrange, dan enumerasi.
b. Aksi adalah satu atau lebih instruksi yang diulang. Jika ada lebih dari satu aksi, maka
dimulai dengan pernyataan BEGIN dan diakhiri dengan END; .
c. Nilai awal lebih kecil atau sama dengan nilai akhir.
d. Pada mulanya, pencacah diinisialisasi dengan nilai awal, kemudian secara otomatis
bertambah satu, sampai akhirnya nilai pencaca sama dengan nilai akhir.
e. Jumlah pengulangan adalah nilai akhir-nilai awal + 1.

1
Contoh program menghitung nilai faktorial.
Program HitungFaktorial;
Var i,n : integer;
Faktorial : longint;
Begin
write(‘Nilai faktorial berapa ?’); readln(n);
Faktorial :=1;
For i:= 1 to n do
Faktorial :=Faktorial * i;
write(‘Nilai faktorial ‘,N,’ adalah =’,Faktorial);
end.

2. FOR menurun :
Bentuk umum :
for pencacah := akhir downto awal do
aksi;
Keterangan :
a. Pencacah haruslah dari tipe data yang memilik predecessor dan successor, yaitu
integer, karakter, subrange, dan enumerasi.
b. Aksi adalah satu atau lebih instruksi yang diulang. Jika ada lebih dari satu aksi, maka
dimulai dengan pernyataan BEGIN dan diakhiri dengan END; .
c. Nilai awal lebih kecil atau sama dengan nilai akhir.
d. Pada mulanya, pencacah diinisialisasi dengan nilai akhir, kemudian secara otomatis
berkurang satu, sampai akhirnya nilai pencaca sama dengan nilai awal..
e. Jumlah pengulangan adalah nilai akhir - nilai awal + 1.
6.3 Struktur WHILE
Bentuk umum struktur WHILE :
while kondisi do
aksi;

Aksi akan dilaksanakan berulangkali selama kondisi bernilai true.

2
Contoh program menghitung nilai faktorial :
Program HitungFaktorial;
Var i,n : integer;
Faktorial : longint;
Begin
write(‘Nilai faktorial berapa ?’); readln(n);
Faktorial :=1; i:=1;
While i<=n do
begin
Faktorial :=Faktorial * i;
i:=i + 1;
end;
write(‘Nilai faktorial ‘,N,’ adalah =’,Faktorial);
end.

6.4 Struktur REPEAT

Bentuk umum struktur REPEAT :


Repeat
aksi;
Until kondisi;

Aksi akan dilaksanakan berulangkali sampai kondisi bernilai true.

3
Contoh program menghitung nilai faktorial :
Program HitungFaktorial;
Var i,n : integer;
Faktorial : longint;
Begin
write(‘Nilai faktorial berapa ?’); readln(n);
Faktorial :=1; i:=1;
Repeat
Faktorial :=Faktorial * i;
i:=i + 1;
Until i > n;
write(‘Nilai faktorial ‘,N,’ adalah =’,Faktorial);
end.

Latihan
1. Terdapat sejumlah N mahasiswa. Setiap mahasiswa memiliki nilai UTS dan UAS
antara 0-100. Misalkan untuk merubah nilai angka menjadi nilai huruf mengikuti
aturan :
- Jika Nilai rata-rata UTS dan UAS >= 80, maka nilainya A.
- Jika 80 > Nilai rata-rata UTS dan UAS >= 65, maka nilainya B.
- Jika 65 > Nilai rata-rata UTS dan UAS >= 50, maka nilainya C.
- Jika 50 > Nilai rata-rata UTS dan UAS >= 35, maka nilainya D.
- Jika 35 > Nilai rata-rata UTS dan UAS >= 0, maka nilainya E.

Buatlah program untuk membaca nilai UTS dan UAS dari N mahasiswa,
kemudian menghitung berapa mahasiswa yang mendapat nilai A, B, C, D, atau E.
2. Buatlah program untuk menampilkan semua solusi bilangan bulat tidak negatif
dari persamaan :
X + Y + Z = 25
3. Buatlah program mengisi password. Program akan terus meminta masukan
password selama kata kunci yang dimasukkan salah.

4
Bagian 7
PROSEDUR

Dalam bahasa pemrograman prosedural, program bisa terdiri dari beberapa sub
program. Dengan membuat sub program, penulisan kode program yang sama
berulangkali bisa dihindarkan, juga memudahkan menulis dan menemukan kesalahan
program.
Dalam Bahasa Pascal terdapat dua subprogram, yaitu Prosedur dan Fungsi. Sub
program ini hanya perlu ditulis sekali, tetapi dapat dipanggil berkali-kali oleh program
utama atau sub program lain.

7.1 Pendeklarasian Prosedur


Bentuk deklarasi prosedur (tanpa parameter) adalah :

Procedure NamaProsedur;
Bagian deklarasi;
Begin
Bagian pernyataan;
End;

Contoh :
Procedure HitungLuasSegitiga;
Var alas, tinggi, Luas : real;
Begin
write(‘Masukkan panjang alas segi tiga :’); readln(alas);
write(‘Masukkan tinggi segi tiga :’); readln(tinggi);
Luas:=(1/2)*alas*tinggi;
write(‘Luas segi tiga = ‘,Luas);
End;

5
7.2 Pemanggilan Prosedur
Prosedur bukan program yang berdiri sendiri, jadi tidak bisa dieksekusi secara
langsung. Prosedur baru dilaksanakan dengan cara memanggil namanya dari program
utama atau sub program lain.
Ketika nama prosedur dipangil, kendali program secara otomatis akan berpindah
ke prosedur tersebut. Instruksi di dalam prosedur dilaksanakan. Setelah semua selesai,
kendali program berpindah secara otomatis ke instruksi sesudah pemanggilan tersebut.
Contoh program utama untuk memanggil prosedur HitungLuasSegitiga di atas :
Begin
HitungLuasSegitiga;
End.
7.3 Variabel Global dan Lokal
Variabel yang dideklarasikan dalam prosedur hanya dikenal di badan prosedur
tersebut, sehingga disebut variabel Lokal.
Sedangkan variabel yang dideklarasikan di dalam program utama bersifat Global,
karena dikenali di semua bagian program.
Program TukarNilai;
Var A, B : integer; {A,B variabel global}
Procedure Tukar;
Var temp : integer;{temp variabel lokal}
begin
temp:= A;
A:= B;
B:=temp;
end;
Begin
write(‘Masukkan nilai A = ‘);readln(A);
write(‘Masukkan nilai B = ‘);readln(B);
Tukar;
writeln(‘Nilai A sesudah ditukar = ‘,A);
writeln(‘Nilai B sesudah ditukar = ‘,B);
End.

6
7.4 Parameter
Kebanyakan program memerlukan pertukaran informasi antara prosedur (atau
fungsi) dengan pemanggilnya.Tiap item data ditransfer antara parameter aktual dan
parameter formal yang bersesuaian.
Parameter aktual adalah parameter yang disertakan waktu pemanggilan,
sedangkan parameter formal adalah parameter yang dideklarasikan di dalam bagian
Nama Prosedur.
Berdasarkan maksud penggunaannya, terdapat tiga jenis parameter formal yang
disertakan di dalam prosedur :
1. parameter masukan
2. parameter keluaran
3. parameter masukan/keluaran

Parameter masukan adalah parameter yang nilainya berlaku sebagai masukan


untuk prosedur. Pada bahasa pemrograman seperti Pascal, parameter masukan dinamakan
parameter by value.
Parameter keluaran adalah parameter yang menampung keluaran yang dihasilkan
oleh prosedur. Pada bahasa pemrograman seperti Pascal, parameter keluaran dinamakan
parameter by reference.
Parameter masukan/keluaran adalah parameter yang berlaku sebagai masukan
sekaligus keluaran bagi prosedur tersebut. Pada bahasa pemrograman seperti Pascal,
parameter masukan/keluaran termask dalam parameter by reference.
Pada bahasa Pascal, parameter formal by value tidak menggunakan kata VAR
dalam deklarasinya, sedangkan parameter by reference menggunakan kata VAR.

7
1. Parameter Masukan (By value)
Contoh program menggunakan parameter masukan dalam deklarasi prosedurnya:

Program SegitigaKarakter;
var M : integer;
K : char;
Proedure CetakSegitiga(C : char; N : integer);
var i,j : integer;
Begin
for i:=1 to N do
Begin
for j :=1 to i do
write(C);
writeln;
End;
End;

Begin
write(‘Masukkan karakter yang akan dicetak :’); readln(K);
write(‘Masukkan tinggi segi tiga :’); readln(M);
CetakSegitiga(K,M);
End.

2. Parameter Keluaran (By reference)


Bila prosedur menghasilkan satu atau lebih nilai yang digunakan oleh program
pemanggil, maka nilai keluaran ditampung di dalam parameter keluaran. Bila prosedur
yang mengandung parameter keluaran dipanggil, nama parameter aktual akan
menggantikan nama parameter formal yang bersesuaian (berlawanan dengan parameter
masukan, yang dalam hal ini, nilai parameter aktual yang di assign ke dalam parameter
formal).
Berikut contoh perbedaan parameter masukan dan keluran :

8
Program ABC;
Var A, B, C : integer;
Procedure XYZ(X,Y : integer; var Z : integer);
{X dan Y parameter masukan, Z parameter keluaran}
Begin
X:= X + 1;
Y:= Y + 1;
Z := X + Y;
End;

Begin
A:= 2;
B:= 5;
XYZ(A,B,C); {Pemanggilan prosedur XYZ}
writeln(A,’ ‘, B,’ ‘,C); {Menampilkan nilai A, B, dan C setelah pemanggilan prosedur}
End.

Pada Program ABC di atas, X dan Y adalah parameter masukan, sedangkan Z


adalah parameter keluaran. Ketika Prosedur XYZ dipanggil dengan parameter aktual A=2
dan B=5, maka nilai itu mengisi nilai parameter formal X dan Y. Sedangkan nama
parameter aktual C secara semu menggantikan nama parameter formal C (bukan nilainya
yang diisikan). Sehingga setelah pemanggilan, nilai variabel A dan B tetap, yaitu A=2
dan B =5. Sedangkan nilai variabel C berubah menjadi 9.

3. Parameter Masukan/Keluaran (By reference)


Parameter masukan/keluaran berfungsi sebagai masukan untuk prosedur sekaligus
menampung nilai keluaran prosedur. Sehingga bila keluarannya berbeda dengan
masukannya, maka hasilnya mengikuti nilai keluarannya.
Contoh Program TukarNilai berikut : 2 nilai integer A dan B merupakan
parameter formal Prosedur Tukar. Setelah instruksi di dalam prosedur dilaksanakan,
maka nilai keluaran A dan B berubah. Karena A dan B adalah parameter

9
masukan/keluaran, maka nilai parameter aktual pemanggilnya juga berubah sesuai nilai
keluaran yang dihasilkan prosedur.
Program TukarNilai;
Var X, Y : integer;
Procedure Tukar (var A,B : integer);
Var temp : integer;
Begin
temp := A;
A := B;
B:=temp;
End.
Begin
X:= 2; Y:= 5;
Tukar (X,Y);
writeln(‘Nilai X setelah ditukar = ‘,X);
writeln(‘Nilai Y setelah ditukar = ‘,Y);
End.

Latihan
1. Buatlah prosedur mencari bilangan terbesar dari 3 bilangan integer A, B, dan C.
2. Buatlah prosedur menghitung nilai rata-rata dari N buah bilangan.

10
Bagian 8
FUNGSI

8.1 Definisi Fungsi


Fungsi adalah sub program yang memberikan/mengembalikan sebuah nilai dari
tipe tertentu. Sebagaimana halnya prosedur, fungsi diakses dengan memanggil namanya.
Selain itu, fungsi juga dapat mengandung daftar parameter formal. Parameter formal pada
fungsi selalu berupa parameter masukan, karena parameter pada fungsi merupakan
masukan yang digunakan oleh fungsi tersebut untuk menghasilkan nilai.
8.2 Pendeklarasian Fungsi
Deklarasi fungsi adalah :
function NamaFungsi(daftar parameter masukan):tipe data;
bagian deklarasi
Begin
Bagian Pernyataan;
End;

8.3 Pemanggilan Fungsi


Fungsi diakses dengan cara memanggil namanya dari program utama atau sub
program lain, diikuti dengan daftar parameter aktual (jika ada). Karena fungsi
menghasilkan nilai, maka nilai tersebut dapat ditampung dalam suatu variabel (peubah)
yang bertipe sama dengan tipe fungsi.
(i). peubah := NamaFungsi(daftar parameter aktual);
atau dimanipulasi langsung seperti :
(ii) write(NamaFungsi(daftar parameter aktual));
(iii) if NamaFungsi(daftar parameter aktual) > 0 then....
(iv) y := 2* NamaFungsi(daftar parameter aktual) +3;

11
Contoh :
Program Terbesar
Var A,B,C,D,Z : integer;
Function Maks(X,Y : integer) : integer;
Begin
if X > Y then Maks:= X
else Maks := Y;
End;

Begin
A := 3; B := 6; C:= 10; D := 8;
writeln(‘Bilangan terbesar antara ‘,A, ‘ dan ‘, B,’ adalah ‘,Maks(A,B));
Z:= Maks(C,D); writeln(‘Bilangan terbesar antara ‘,C, ‘ dan ‘,D,’ adalah ‘, Z);
If Maks(A,B) > Maks(C,D) then writeln(‘Yang terbesar antara ‘, A,’ ‘,B,’ ‘,C,’
dan ‘,D,’ adalah = ‘, Maks(A,B))
else writeln(‘Yang terbesar antara ‘, A,’ ‘,B,’ ‘,C,’ dan ‘,D,’ adalah = ‘,
Maks(C,D));

End.

Latihan
1. Buatlah fungsi yang menerima masukan 2 titik A( x1, y1) dan B( x2, y2) dan
2 2
menghitung jarak kedua titik tersebut dengan rumus jarak = d  x1 x2 y1 y2

2. Buatlah fungsi untuk mengembalikan nilai mutlak X.

12
Bagian 9
REKURSI

Suatu subprogram tidak hanya bisa memanggil sub program lain, tetapi juga bisa
memanggil dirinya sendiri. Cara ini dikenal dengan sebutan rekursi.
Rekursi banyak dipakai pada persoalan yang dapat dipecahkan secara induktif.
Misalnya untuk menghitung faktorial.

1, jik a m 0
m! 
1x2 x3x4....xm jik a m 0

Pemecahan secara rekursif :


0!=1 (penghentian rekursi)
jika m > 0, m ! = m x (m-1) ! (langkah induksi)

9.1 Fungsi Rekursif


Fungsi yang memanggil dirinya sendiri disebut fungsi rekursif. Contoh fungsi
rekursif untuk menghitung faktorial.

Function FaktorialR(m:byte) : longint;


Begin
If m = 0 then FaktrialR:= 1
else FaktorialR:= m * FaktorialR(m-1);
End;

9.2 Prosedur Rekursif


Rekursi juga bisa diterapkan pada prosedur. Berikut contoh prosedur Balik :

13
Procedure Balik (X : integer);
Var Sisa : integer;
Begin;
write (X mod 10);
Sisa := X div 10;
If Sisa <> 0 Then Balik(Sisa);
End;

Jika prosedur di atas dipanggil dengan Balik(1024) apa hasilnya ?

Latihan
1. Lihat kembali Algoritma Euclidean untuk menghitung nilai FPB. Buatlah prosedur
untuk menghitung nilai FPB berdasarlan Algoritma Euclidean, secara rekursif.
2. Buatlah fungsi rekursif dan non rekursif untuk menghitung nilai XN, dengan X bilangan
riil dan N bilangan bulat.

14
15

Anda mungkin juga menyukai