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.
1 bit = a 1
or 0 (b)
4 bits = 1 nybble (?)
8 bits = 1 byte (B)
1024 bytes = 1 Kilobyte (KB)
1024 Kilobytes = 1 Megabyte (MB)
1024 Megabytes = 1 Gigabyte (GB)
1024 Gigabytes = 1 Terabyte (TB)
4 bits = 1 nybble (?)
8 bits = 1 byte (B)
1024 bytes = 1 Kilobyte (KB)
1024 Kilobytes = 1 Megabyte (MB)
1024 Megabytes = 1 Gigabyte (GB)
1024 Gigabytes = 1 Terabyte (TB)