Mekanisme Eksekusi Kondisional Dan Loop
Mekanisme Eksekusi Kondisional Dan Loop
STRUKTUR PENGULANGAN
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;
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.
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.
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
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.
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.
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
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
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
13
Procedure Balik (X : integer);
Var Sisa : integer;
Begin;
write (X mod 10);
Sisa := X div 10;
If Sisa <> 0 Then Balik(Sisa);
End;
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