Algoritma adalah kumpulan instruksi/perintah yang dibuat secara jelas dan
sistematis berdasarkan urutan yang logis (logika) untuk penyelesaian suatu masalah.
French,C.S. (1984) menyatakan sejumlah konsep yang mempunyai relevansi
dengan masalah rancangan program yaitu kemampuan komputer, kesulitan dan ketepatan.
Penerapan dari konsep tersebut biasanya digunakan dalam rancangan algoritma. Dalam
merancang sebuah algoritma, Fletcher (1991) memberikan beberapa cara atau metode yaitu
kumpulan perintah, ekspresi, tabel instruksi, program komputer, kode semu dan flow chart,
sedangkan Knuth (1973) menyarankan algoritma fundamental. Untuk keperluan
matematika dan program komputer metode yang sering digunakan yaitu :
1. Diagram Alir (Flow Chart)
2. Kode Semu (Pseudo Code)
3. Algoritma Fundamental
Contoh :
Algoritmanya :
Ø Judul program
Ø Deklarasi Type
Data_Nilai_siswa = Record
Ø Inisialisasi variable
Data : Data_Nilai_siswa
Ø Input
Nim,nama,UAS,UTS,Tugas
Ø Proses
Rata_rata:=(75+70+60)/3;
Ø Menghitung kondisi Nilai Rata-rata
Rata-rata >= 80 nilai huruf A keterangan Lulus
Rata-rata >= 70 nilai huruf B keterangan Lulus
Rata-rata >= 60 nilai huruf C keterangan Lulus
Rata-rata >= 50 nilai huruf D keterangan Tidak Lulus
Rata-rata < 50 nilai huruf E keterangan Tidak Lulus
Programnnya adalah :
Data_Nilai_Siswa=record Nim : longint Nama : string[10] UTS,UAS,Tgs : integer Rata_rata : real |
Var Data : Data_Nilai_Siswa |
Data.Nim := 1302100372; Data.Nama := 'SUKIRMAN'; Data.Nilai_UTS:= 75; Data.Nilai_UAS:= 70; Data.Nilai_Tugas:= 60; |
Data.Rata_rata:=(75+70+60)/3; |
SELECTION
Selection merupakan salah satu proses program di samping sequential (pengerjaan secara berurut) dan repetition / looping. Dalam selection, program akan memilih bagian yang akan dijalankan (sehingga terdapat bagian yang tak dijalankan).
Umumnya selection menggunakan IF ... THEN ... ELSE ..., akan tetapi terdapat pula CASE ... OF. Penggunaan IF lebih umum digunakan bila terdapat pilihan yang tidak terlalu banyak dan eksekusi baris program yang panjang.Blok pertama untuk IF dijalankan bila condition yang digunakan bernilai TRUE, sedangkan blok ELSE dijalankan bila nilai conditionnya adalah FALSE.
Contoh:
uses crt;
var bil1, bil2: integer;
begin
clrscr;
write('Masukkan bilangan 1 : ');readln(bil1);
write('Masukkan bilangan 2 : ');readln(bil2);
if bil1<bil2 then begin
writeln('Bilangan 1 lebih kecil');
end
else begin
writeln('Bilangan 2 lebih kecil');
end
readkey;
end.
Penggunaan IF dapat dikombinasikan sehingga suatu blok IF dapat menampung blok IF yang lainnya (nested selection). Penggunaan IF tidak selalu harus selalu bersama ELSE (simple selection). IF juga dapat digunakan lebih dari satu kondisi setelah ELSE (linear selection) atau pada IF yang sama menggunakan operator logika / logical operator (combined selection). Contohnya adalah seperti baris program di bawah:
if (condition1) then begin
if (condition2) then begin
statement1;
stetement2;
end
else if (condition3) then begin
statement3;
statement4;
end
else begin
statement5;
end;
statement6;
statement7;
if (condition4) then begin
statementx;
statementy;
end;
end
else if (conditionx AND conditiony OR conditionz) begin
statement01;
statement02;
end;
Penting: Ada baiknya setiap blok IF selalu dipisahkan dan ditandai dengan spasi kosong atau menggunakan TAB untuk menghindari kebingungan dalam pembuatan blok statement.
REPETITION / LOOPING (Perulangan)
Repetition dapat digunakan untuk menjalankan suatu bagian program secara berulangulang sesuai dengan kondisi yang ada. Looping pada Pascal menggunakan beberapa keyword seperti FOR...DO, WHILE...DO dan REPEAT...UNTIL.
FOR...DO dipergunakan ketika nilai yang akan digunakan sudah diketahui dengan nilai yang ada di dalamnya selalu ditambah atau dikurangi satu ketika mengalami perulangan.
Sintaks:
FOR variable := startindex (TO/DOWNTO) endindex DO BEGIN
statement;
END;
Dari sintaks di atas, terdapat dua jenis perubahan yang dapat digunakan, yaitu TO dan DOWNTO. TO akan menghasilkan nilai incremental atau penambahan satu setiap kali terjadi perulangan. Sedangkan DOWNTO akan menghasilkan nilai decremental atau pengurangan satu setiap kali terjadi perulangan.
Contoh penggunaan FOR...DO:
for i:=1 to 10 do begin
write(i,' ');
end;
for j:=10 downto 1 do begin
write(j,' ');
end;
WHILE...DO dapat digunakan tanpa harus ada perubahan pada nilai kondisi. Selama kondisi masih bernilai TRUE, maka perulangan akan dilakukan terus.
Sintaks:
WHILE (condition) DO BEGIN
statement;
END;
Contoh penggunaan WHILE...DO:
i:=10;
while i>2 do begin
i:=i-2;
writeln(i);
end;
REPEAT...UNTIL berfungsi hampir sama dengan WHILE...DO. Pada REPEAT...UNTIL, looping akan berhenti justru ketika kondisi bernilai TRUE. Selain itu kondisi akan diuji pada akhir perulangan sehingga blok di dalam perulangan akan dijalankan minimal satu kali walaupun kondisi yang ada masih FALSE.
Sintaks:
REPEAT
statement;
UNTIL (condition);
Contoh penggunaan REPEAT...UNTIL:
i:=10;
repeat
i:=i-3;
writeln(i);
until i<1;
Dari penggalan program di atas, dapat dilihat bahwa REPEAT...UNTIL tidak memerlukan BEGIN dan END untuk menjalankan suatu blok statement.
TIPS: Gunakan variabel i, j, k, dan seterusnya untuk menandai indeks perulangan atau
looping.
Struktur Perulangan (Loop)
Perulangan (loop) merupakan bentuk yang sering ditemui dalam suatu program aplikasi. Di dalam bahasa Pascal, dikenal tiga macam perulangan, yaitu dengan menggunakan statemen For, While-Do dan Repeat….Until.
Struktur Perulangan
Perulangan dengan statemen For digunakan untuk mengulang statemen atau satu blok statemen berulang kali sejumlah yang ditentukan. Perulangan dapat berbentuk perulangan positif, negatif dan tersarang.
1. Perulangan Positif
Merupakan perulangan dengan penghitung (counter) dari kecil ke besar. Pendeklarasian perulangan ini adalah sebagai berikut :
FOR variabel_kontrol := nilai_awal To nilai_akhir DO
Statemen
Variabel_kontrol, nilai_awal dan nilai_akhir harus mempunyai tipe yang sama, yaitu bertipe integer.
CONTOH : Program Perulangan_For_Positif;
Var i : byte;
Begin
For i := 1 To 5 Do
Writeln (i);
Readln;
End.
Bila statemen lebih dari satu perintah, maka blok perintah-perintah tersebut harus diawali dengan begin dan diakhiri dengan end.
CONTOH :
Program Perulangan_For_Positif;
Var i : byte;
Begin
For i := 1 To 5 Do
Begin
Write ('No ');
Writeln (i);
End;
Readln;
End.
2. Perulangan Negatif
Merupakan perulangan dengan penghitung (counter) dari besar ke kecil. Pendeklarasian perulangan ini adalah sebagai berikut :
FOR variabel_kontrol := nilai_awal DownTo nilai_akhir DO
Statemen
CONTOH :
Program Perulangan_For_Negatif;
Begin
For i := 5 DownTo 1 Do
Begin
Write ('No ');
Writeln (i);
End;
Readln;
End.
3. Perulangan Tersarang (Nested Loop)
Merupakan perulangan yang berada di dalam perulangan yang lainnnya. Pada sistem perulangan ini, perulangan yang lebih dalam akan diproses terlebih dahulu sampai habis, kemudian perulangan yang lebih luar baru akan bertambah, kemudian mengerjakan perulanan yang lebih dalam lagi mulai dari nilai awalnya, dan seterusnya.
CONTOH : Program Perulangan_For_Bersarang;
Var i : integer;
Begin { **** Perulangan Luar **** }
For i := 1 To 3 Do
Begin
Write ('Luar = ');
Writeln (i); { ---- Perulangan Dalam ---- }
For j := 1 To 5 Do Luar
Begin
Write ('Dalam = '); Dalam
Writeln (j);
End;
{ - Batas Perulangan Dalam - }
End;
{ * Batas Perulangan Luar * }
Readln;
End.
Struktur Perulangan While-Do
Struktur perulangan ini memiliki bentuk sebagai berikut :
WHILE ungkapan_logika DO
Statemen
Perulangan dengan statemen While-Do digunakan untuk melakukan perulangan suatu statemen atau blok statemen terus-menerus selama kondisi ungkapan_logika pada while masih bernilai logika benar.
CONTOH :
Program Perulangan_While_Do;
Var i : byte;
Begin
i := 1;
While i <= 5 Do
Begin
Write ('No ');
Writeln (i);
i := i + 1;
End;
Readln;
End.
Struktur Perulangan Repeat…Until
Struktur perulangan ini memiliki bentuk sebagai berikut :
REPEAT
Statemen
UNTIL ungkapan_logika
Perulangan dengan statemen Repeat…Until digunakan untuk melakukan mengulang (repeat) statemen-statemen sampai batas (until) kondisi yang diseleksi di until tidak terpenuhi.
CONTOH :
Program Perulangan_Repeat_Until;
Var i : byte;
Begin
i := 1;
Repeat
Write ('No ');
Writeln (i);
i := i + 1;
Until i > 5;
Readln;
End.
Catatan :
Proses perulangan tersarang berlaku pada perulangan For, While-Do maupun Repeat….Until. Perulangan tersarang tidak menutup kemungkinan untuk memadukan ketiga perulangan tersebut.
Pustaka
Jogiyanto H. M., Turbo Pascal 5.0, Jilid 1, Andi Offset, Yogyakarta, 1999.
Contoh program Pascal selection (intruksi pemilihan )
Pada penjual coto dengan diskon 20% atau 0.2 dan
Harga 1 mangkok Rp 5000,00
Uses crt;
Var
Jumlah,total:real;
Const harga=5000;
Const diskon=0.2;
Begin
Clrscr;
Write(‘masukkan banyaknya mangkok:’);readln(jumlah);
If jumlah>3 then
Total:=(jumlah*harga)-(jumlah*harga*diskon)
Else if jumlah<=3 then
Total:=(jumlah*harga);
Write(‘total yang di bayar adalah:’,total:8:2);
Readln;
End.
Dan Bentuk umum selection if serta penjelasannya yaitu :
a) Bentuk umum dari statement IF :
Ø if-then
if <kondisiBenar> then <doStatement>;
Ø if-then-else
if <kondisiBenar> then
<DoStatement1>
Else
<DoStatement2>
Dimana
kondisi benar : syarat yang akan ditest
dostatemen1, dostatemen2 : statemen yang akan dikerjakan sesuai dengan kondisi yang dipenuhi
Penjelasannya yaitu :
Bentuk umum di atas dapat dijelaskan sebagai berikut. Jika kondisi bernilai benar, maka akan dikerjakan.begitu juga jika salah satu dari tiga pilihan di belakang statemen THEN akan dikerjakan. Tetapi jika salah, ada dua kemungkinan yang bisa terjadi. Kemungkinan pertama adalah jika dalam statemen IF terdapat statemen ELSE, maka salah satu dari tiga pilihan di belakang statemen ELSE akan dikerjakan. Kemungkinan kedua adalah jika statemen ELSE tidak ditulis. Dalam hal ini proses eksekusi akan langsung melompat ke baris di bawah statemen IF.
b) Bentuk umum dari statement case :
Ø Case
Case <variable> of
<kondisi1> : <Statement1>;
<kondisi2> : <Statement2>;
<kondisi3> : <Statement3>;
End;
Ø Case-else
Case <variable> of
<kondisi1> : <Statement1>;
<kondisi2> : <Statement2>;
<kondisi3> : <Statement3>;
Else
<DefaultStatement>;
End.
Penjelasannya yaitu :
1) Di belakang statemen THEN tidak boleh ada statemen apapun selain baris komentar. Jika anda menuliskan sesuatu statemen, kompiler akan menganggapnya sebagai statemen IF ... THEN ... ELSE satu baris.
2) Kata ELSE, ELSEI dan END IF hanya boleh diawali dengan nomor baris atau label baris. Jika tidak, maka kata ini harus merupakan kata awal dari baris tersebut.
3) Blok IF harus terletak sebagai statemen pertama dalam suatu baris.
4) Blok harus diakhiri dengan kata END IF.
» Bentuk umum selection case serta penjelasannya yaitu :
SELECT CASE ungkapan
CASE nilai1
[ statemen1 ]
[ CASE nilai2
[ statemen2 ] ]
·
·
[ CASE ELSE
statemenn] ]
END SELECT
Dimana variable : sembarang variable (numeris atau untai)
kondisi1, kondisi2, ... : nilai-nilai dari parameter ungkapan
statemen1, statemen2, ... : statemen –statemen yang akan dikerjakan.
Untuk menentukan ungkapan yang mempunyai jangkauan tertentu bias digunakan bentuk umum sebagai berikut :
CASE ungkapan TO ungkapan
CASE IS oprelasi ungkapan
Dimana oprelasi : sembarang ungkapan relasi ( <, <=, =, >=, >, < > )
Penjelasannya yaitu :
Statemen SLECT ... CASE mempunyai kegunaan yang hampir sama dngan statemen kendali IF ... THEN ... ELSE banyak baris. Statemen IF ... THEN ... ELSE dapat digunakan di sembarang tempat dimana statemen SELECT ... CASE digunakan.
Suatu perbedaan di antara keduanya adalah bahwa statemen SELECT ... CASE kondisi yang di test hanya sebuah , dan proses eksekusi akan diteruskan ke bagian tertentu dari suatu program berdasar nilai kondisi yang di test. Pada statemen IF ... THEN ... ELSE banyak baris dapat mentest lebih dari sebuah kondisi yang satu sama lain saling bebeda.