STRUKTUR ALGORITMA
Pada catatan
ini akan membahas mengenai “ Struktur Algoritma “. Pemrograman pascal merupakan
bahasa pemrograman terstruktur prosedural yang berarti pembacaan algoritma
dilakukan secara beurutan. Namun demikian, pemrograman Pascal juga menyediakan
alur pembacaan program yang melompat (seleksi).
STRUKTUR PEMROGRAMAN/
STRUKTUR KONTROL :
a) Runtutan/
Sequential
b) Seleksi/
Conditional
c) Perulangan/
Repetition/ Looping
1. SEQUENTIAL/ RUNTUTAN
Berfungsi mengontrol program sehingga berjalan secara berurutan. Program
dibaca dari mulai perintah yang pertama dituliskan kemudian turun ke perintah
selanjutnya demikian seterusnya sampai pada akhir perintah. Secara umum program
akan dibaca oleh compailer secara terurut.
Contoh :
Program_Selisih_Jam;
Uses crt;
var
j1,j2,m1,m2,d1,d2,B1,B2,J,M,S,Delta,sisa: integer;
begin
clrscr;
write('Baca jam mulai
=');readln(j1,m1,d1);
writeln;
write('Baca jam selesai
=');readln(j2,m2,d2);
B1:= 3600 * j1 + 60 * m1 + d1;
B2:= 3600 * j2 + 60 * m2 + d2;
Delta:= B2 - B1;
J:= Delta div 3600;
sisa:= Delta mod 3600;
M:= sisa div 60;
S:= sisa mod 60;
write('Selisih jam =',J);
writeln;
write('Selisih menit =',M);
writeln;
write('Selisih detik =',S);readln;
end.
Hasil
Run program:
Baca jam mulai = 3 23 29
Baca jam
selesai = 4 30 27
Selisih jam =
1
Selisih menit
= 6
Selisih
detik =58
Catatan
:
Tanda (:= ) disebut sebagai Operator
Penugasan.
2.
SELECTION/ CONDITION
Sistem
kontrol ini memungkinkan programmer untuk membuat program yang dapat
memilih
satu langkah di antara sejumlah langkah untuk dikerjakan.
Dalam Turbo
Pascal disediakan 2 buah struktur kontrol seleksi, yaitu:
a. Struktur
IF……THEN…..
b. Struktur
CASE…OF…
a). Struktur IF
Merupakan
struktur kontrol di mana suatu aksi dilaksanakan berdasarkan kondisi logikanya
(benar atau salah). Bentuk umum :
if
(kondisi) then aksi ;
{Jika kondisi benar maka aksi
akan dilaksanakan dan sebaliknya }
if
(kondisi) then aksi1 else aksi2 ;
{Jika kodisi
benar maka aksi1 diaksanakan, jika kondisi salah
maka aksi2 akan dilaksanakan}
if
(kondisi1) then aksi1 else
if
(kondisi2) then aksi2 else
……………………..
if
(kondisi-n) then aksi-n ;
{Jika
kondisi1 benar maka aksi1 dilaksanakan tanpa membaca
kondisi2 dan seterusnya. Jika
kondisi1 salah maka aksi2 dilaksanakan tanpa membaca aksi3 dan selanjutnya.
Demikian
seterusnya}
if
(kondisi1) then aksi1 ;
if
(kondisi2) then aksi2 ;
……………………….
if (kondisi-n) then
aksi-n ;
{Masing-masing
kondisi akan dibaca dan aksi akan tetap dilaksanakan. Jadi masing-masing
struktur terpisah satu dengan yang lain}
Contoh :
program_menghitung_akar_kwadrat:
uses
crt;
var
A,B,C:integer;
x1,x2,D:real;
begin
clrscr;
write('Baca
koofisien:');readln(A,B,C);writeln;
writeln(A,'x*x + (',B,') x +',C);
if A=0 then writeln('Bukan persamaan
kwadrat') else
begin
D:=(B*B)
- (4*A*C);
writeln('Determinannya
:',D:2:2);readln;
if
D>0 then
begin
writeln('Persamaan kwadrat mempunyai 2
akar yang berbeda');
x1:= (-B + sqrt(D))/(2*A);
x2:= (-B - sqrt(D))/(2*A);
writeln('Akar-akarnya
adalah:',x1:2:2,'dan',x2:2:2);
end
else
if
D=0 then
begin
writeln('Persamaan kwadrat mempunyai
akar yang sama'
x1:= -B/(2*A);
x2:= -B/(2*A);
writeln('Akar-akanya adalah:',x1:2:2);
end
else
writeln('Tidak memiliki akar riil');
end;
readln;
end.
Hasil Run Program :
-Baca koofisien: 1 -4 4
1x*x
+ (-4) x +4
Determinannya
:0.00
Persamaan
kwadrat mempunyai akar yang sama
Akar-akanya
adalah:2.00
-Baca koofisien: 1 -5 6
1x*x
+ (-5) x +6
Determinannya
:1.00
Persamaan
kwadrat mempunyai 2 akar yang berbeda
Akar-akarnya
adalah:3.00dan2.00
-Baca koofisien: 1 3 4
1x*x + (3) x +4
Determinannya
:-7.00
Tidak memiliki
akar riil
Program_Konversi_nilai:
Uses Crt;
var Nilai : Byte;
begin
clrscr;
write('Baca nilai :');readln(Nilai);
if nilai>=80
then write('Nilai = A') else
if nilai>=65 then write('Nilai = B') else
if nilai>=41 then write('Nilai = C')
else
if nilai>=26 then write('Nilai =
D') else
write('Nilai = E');
readln;
end.
Hasil
Run Program :
Baca nilai
: 90 Baca
nilai :55
Nilai = A Nilai
= C
Baca nilai :75 Baca nilai
:25
Nilai = B Nilai = E
Catatan :
Pada pernyataan else if ataupun else, tidak
diperkenankan didahului dengan menggunakan tanda titik koma (;)
b). Struktur CASE…OF..
Merupakan
peluasan dari struktur IF. Karena kalau dalam struktur IF hanya disediakan dua
pilihan (berdasarkan kondisi logikanya) maka dalam struktur Case ..of
dimungkinkan untuk memilih satu pilihan di antara banyak pilihan yang ada.
Bentuk
umumnya :
Case var.pilih of atau Case
var.pilih of
Pilih1
: aksi1 ; pilih1
: aksi1 ;
Pilih2
: aksi2 ; pilih2
: aksi2 ;
…………….
; …………….
;
pilih-n
: aksi-n ; pilih-n
: aksi n;
else aksi-n+1
end; end;
Catatan :
Ekspresi yang digunakan dalam statemen
Case adalah yang mempunyai tipe ordinal yaitu dengan batas antara (-32768 s/d
32767). Sehingga tipe lain seperti
integer yang bertipe longint, tipe string atau word tidak boleh digunakan.
Contoh :
Program_Konversi_nilai2;
Uses
Crt;
Var Nilai : integer;
begin
Clrscr;
write('Baca nilai =');readln(Nilai);
Case Nilai of
0..25 : writeln('Nilainya = E');
26..39 : writeln('Nilainya = D');
40..64 : writeln('Nilainya = C');
65..79 : writeln('Nilainya = B');
80..100: writeln('Nilainya = A');
else
writeln('Tidak ada nilai yang dimaksud');
end;readln;
end.
Catatan
:
Program ini akan memberikan nilai yang
sama persis dengan yang menggunakan struktur IF.
3.
PERULANGAN/ LOOPING/ REPETITION
Dalam
membuat suatu program kadang-kadang diinginkan agar program tersebut mampu
memproses hal yang sama secara berulang-ulang sampai ditemukan suatu nilai
tertentu yang diinginkan atau mencapai batas yang telah ditentukan. Untuk itu
maka Turbo Pascal telah menyediakan suatu struktur perulangan yang memudahkan
untuk melakukan proses tersebut, sehingga kode-kode dalam program menjadi lebih
sederhana. Ada
beberapa struktur perulangan, yaitu :
-
Struktur FOR….DO….
-
Struktur WHILE…DO……
-
Struktur REPEAT…UNTIL….
a). Struktur
FOR
-
Ascendant (Naik)
-
Descendant (Turun)
Naik
Format : For count := awal
to akhir do
aksi/ blok aksi ;
Catatan
: - awal <= akhir
-
Variabel count akan naik satu setelah menyelesaikan aksi
Turun
Format
: For count := awal downto akhir do
aksi1/ blok aksi ;
Catatan : -
awal >= akhir
-
Variabel count akan turun satu setelah menyelesaikan aksi
Struktur FOR hanya dpat
digunakan pada cacah perulangan yang diketahui (berapa kali perulangan tersebut
akan dilakukan).
Contoh :
Program
Latihan: Program
Latihan 2:
uses Crt; uses
Crt;
var N,i,j :integer; var
N, I, j, data : integer;
begin begin
clrscr; clrscr;
write('Baca nilai :
');readln(N); write(‘Baca nilai:’);
for i:= 1 to
N do readln(N);Data:=N;
begin for i:=1 to N do
for j:=1 to i
do begin
write(i:3); for j:=1 to N do
writeln; write(data:3);
end; writeln;
readln; data := data -1;
end. end;
End.
Hasil
Run Program : Hasi
Run Program :
Baca
nilai : 7 Baca
nilai : 7
1 7
2 2 6 6
3 3 3 5 5 5
4 4 4 4 4 4
4 4
5 5 5
5 5 3 3
3 3 3
6 6 6
6 6 6 2 2
2 2 2 2
7 7 7
7 7 7 7 1 1
1 1 1
1 1
b). Struktur WHILE
.. DO..
Format
: While (kondisi) do Aksi/blok aksi
Kondisi: Ekspresi Boolean
Pengecekan untuk melakukan perulangan
dilakukan pada awal proses dan perulangan akan dikerjakan selama kondisi benar.
Oleh karena itu, perlu adanya suatu proses yang dapat mengontrol kondisi agar
dapat menghentikan proses.
Contoh :
uses crt;
var i:integer;
begin
clrscr;
write('Masukkan angka :');readln(i);
while i<5 do
begin
write('Matematika UGM');
i:=i+1;
end;
readln;
end.
Hasil Run program :
Masukkan
angka :1
Matematika
UGMMatematika UGMMatematika UGMMatematika UGM
Matematika
UGM
Keterangan :
Program di
atas akan dilaksanakan jika angka yang kita masukkan kurang dari atau sama
dengan lima .
Dan dalam program di atas yang bertugas menghentikan perulangan adalah proses i:= i+1; sebab jika tidak ada statement
itu, apabila angka yang kita masukkan benar <= 5 maka program akan berulang
sampai tak hingga banyak.
Catatan :
Struktur
perulangan while..do dapat digunakan untuk melakukan perulangan baik yang
diketahui maupun yang tidak diketahui jumlah perulangannya.
c). Struktur REPEAT..UNTIL..
Format :
Repeat
aksi/ blok aksi until
(kondisi) ;
(kondisi) di sini berupa Boolean.
Perulangan
dilakukan terus-menerus hingga diperoleh kondisi bernilai benar. Dalam hal
inipun diperlukan adanya kondisi yang dapat mengontrol program agar program
dapat berhenti namun berbeda dengan while
do yang kontrolnya ditempatkan pada awal proses, maka repeat until kontrolnya diletakkan pada akhir proses.
Contoh :
PROGRAM CONTOH_REPEAT;
Uses crt;
var
n,tot,x: integer;
Mean: real;
begin
clrscr;
tot:=0;
n:=0;
write ('Baca data :');readln(x);
repeat
tot:= tot + x;
n:= n + 1;
write('Data lagi :');readln(x);
until x=0;
end.
Hasil Run Program :
Baca data
:12
Data lagi :3
Data lagi :4
Data lagi :5
Data lagi :0
{setelah dimasukkan nol maka
pembacaan akan berhenti dan akan kembali ke menu awal}
Catatan :
Pada
perulangan menggunakan repeat..until ini, proses pembacaan program dilaksanakan
paling tidak satu kali karena proses pengecekan syarat dilakukan pada akhir.
Tidak ada komentar:
Posting Komentar