Rangkuman Algoritma Struktur Data II

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;
if Data.
Rata_rata<50
Data.Rata_rata:=(75+70+60)/3;
E (‘TidakLulus’)
D (‘TidakLulus’)
C (‘Lulus’)
B (‘Lulus’)
A (‘Lulus’)
Cetak
if Data.
Rata_rata>=80
if Data.
Rata_rata>=70
if Data.
Rata_rata>=60
if Data.
Rata_rata>=50
End
 
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>


      Salah
Statemen1
Kondisi
           
Kondisi
Statemen
Statemen2

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.