Senin, 09 Mei 2011

Belajar ALGORITMA

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 := 1302100358;
     Data.Nama := 'miftah';
     Data.Nilai_UTS:= 76;
     Data.Nilai_UAS:= 75;
     Data.Nilai_Tugas:= 60;
if Data.
Rata_rata<50
Data.Rata_rata:=(76+75+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;

2 komentar: