Pages

Kamis, 09 Juni 2011

Rangkuman Algoritma Struktur data II


Rangkuman Algoritma Struktur Data II
TYPE DATA LAIN
1)      Sub Jangkauan (sub range type)
Tipe subjangkauan merupakan tipe yang mendifinisikan jangkauan dari nilai-nilai ordinal sebagai contoh seperti nilai-nilai ordinal char, integer.
Sala satu contoh sub jangkauan :
        Type
                        Huruf    = ‘A’ .. ’Z’ ;
                        Angka   = ‘0’ .. ’9’ ;
        Var
                        Inisial     : Huruf ;
                        Nilai       : Angka ;
Selain dengan cara mendeklarasikan terlebih dahulu type data yang baru digunakan dalam pendeklarasian variabel. Type sub jangkauan dapat langsung dibuat pada bagian pendeklarasian variabel seperti :
        Var
                        Nilai       = ‘0’ .. ‘100’ ;
Selain itu, Type sub jangkauan langsung dapat digunakan dalam program misalnya menentukan inputan angka atau hurufkemudian melakukan pemilihan, apakah setelah ada selection antara kondisi serta inputan yang diberikan dapat membaca angka ataupun huruf.
        Var
                        A : char ;
        Begin
                        Write (‘ input = ‘) ; readln (A) ;
        Case A  of
                        ‘a’ .. ‘z’ , ‘A’ .. ‘Z’ : write (‘Anda Input Banyak’)
        Else
                        ‘0’ .. ‘9’ : writeln (’Anda Input Angka’);
        End;
        End.
2)      Tipe Anumerasi
Mendifinisikan sekumpulan nilai dan diberi nama dan diebut satu persatu berdasarkan nilainya.
-          Pendeklarasian type Anumerasi adalah ;
Type
                NamaTipe  = (Nilai1,Nilai2, .. NilaiN);
Nama pada pendeklarasian type menjadi konstanta type Anumerasi dengan constanta tersebut mempunyai nilai ordinal mulai dari 0 dengan demikian, nilai 1 mempunyai nilai ordinal 0, nilai 2 mempunyai nilai ordinal 1 dan seterusnya.
Contoh pendeklarasian type Anumerasi :
        Type
                        Angka = (Nol, Satu, Dua, Tiga);
3)      Type Set (Himpunan)
Merupakan termasuk tipe data yang terstruktur dan aturan pendeklarasiannya adalah :
        Type
                        Nama Type = Set of Tipe
Jumlah nilai type tidak boleh lebih dari 256 nilai dan contohnya adalah :
        Type
                        Angka = Set of 0 .. 9   /   Huruf = Set of a .. z
4)      Type String
Variabel bertype string adalah serangkaian karakter dengan panjang yang berubah dan panjang maksimalnya 1 -255.
-          Pendeklarasian string (variabel yang bertype string yang akan digunakan seperti variabel lainnya harus dideklarasikan terlebih dahulu), Contohnya :
Var
                Nama Variabel : String ;
Atau
                Nama Variabel : String [konstanta] ;
String dapat dianggap sebagai sebuah Array karakter harus setiap elemen string dapat diakses dengan mengetahui indeksnya yang menyatakan urutan karakter dalam sebuah string, Contoh :
        Var
                        S          : String ;
                        C1,C2 : Char ;
        Begin
                        S    := ‘Mahasiswa’ ;
                        C1 := S [1] ;
                        C2 := S [3] ;
        End.
Fungsi dan Procedure Untuk Menipulasi String :
1.       Length          = Mengirimkan panjang String.
2.       Concat          = Menggabungkan 2 / lebih String menjadi 1 string.
3.       Delete          = Procedure untuk menghapus String.
4.       Copy              = Mengirimkan siting dari sebuah String.
5.       Insert            = Menyisipkan siting dari sebuah String.
6.       Post               = Mengirimkan posisi dari sebuah sub string.

ALGORITMA REKURSIF
Rekursip adalah sebuah perulangan dan definisinya merupakan sebuah object disebut berulang (rekursif) jika setiap object mengandung dirinya sendiri atau didefinisikan dengan dirinya sendiri. Bis a dikatakan fungi dan fungsinya sendiri atau fungsi yang dipakai untuk fungsinya sendiri. Dalam Matematika definisi Rekursif sebuah fungsi adalah definisi fungsi yang menggunakan fungsi tersebut. Dalam proses perulangan yang terjadi dalam algoritma Rekursif harus ditentukan sebuah kondisi kapan perulangan berhenti. Perulangan (Rekention) memegang peranan penting dalam banyak definissi Matemika. Beberapa contoh definisi matematika tersebut adalah bilangan asli  (Natural Number) dan fungsi factorial.
1.       Bilangan Asli
-          1 adalah bilangan asli
-          Suksesor bilangan asli adalah bilangan asli.
2.       Fungsi faktorial, n! (untuk integer non-Negatif).
a.       0! =1
b.      Jika n > 0 , maka n! = n x (n-1)

Berfikir Rekursif
Seperti halnya perulangan, Algoritma/ hubungan rekursif memungkinkan perulangan yang tidak akan berhenti/ tak hingga olek karena itu apabila sebuah masalah dinyatakan dalam hubungan berulang maka kondisi berhenti (basis atau termanation) hubungan berulang tersebut harus jelas. Kegunaan hubungan berulang terletak pada kemampuannya yang memungkinkan menyatakan definisi yang tak hingga dengan pertanyaan yang hingga. Untuk memecahkan masalah menggunakan hubungan berulang harus dibentuk.
A.      Basis, yaitu kondisi berhenti rekursif. Kondisi berhenti ini harus jelas sehingga tidak terjadi perulangan yang tak hingga.
B.      Definisi rekursif yaitu untuk membuktikan sebuah definisi rekursif benar adalah jika definisi tersebut benar untuk sebuah nilai misalnya (n-1).

Program CariFaktorial ;
Var
        Angka, hasil : integer ;
Function fakt (n : integer) : integer;
Begin
        If  n = 0 Then
                        Fak := 1
        Else
                        Fakt := n* Fakt (n-1) ;
        End;
Begin
        Write (‘ Masukkan angka (>=0) =’) ; readln(angka) ;
        Hasil := Fakt (angka);
        Writeln (angka,’! =’, hasil) ;
        Readln ;
End.

PEMROSESAN FILE
File text adalah file yang terdiri dari karakter-karakter.karakter-karakter tersebut dapat dianggap sebagai data yang bertipe karakter, integer, real, atau string. Tergantung kepada tipe data yang digunakan untuk menyimpan hasil pembacaan dari file. Contoh 1:
                File beristensi Txt
                Program TulisAlamat ;
                Var
                                Falamat : text ;
                Begin
                                Assign (falamat,’D:\alamat.txt’) ;
                                Rewrite (falamat) ;
                                Writeln(falamat,’ sukirman’) ;
Writeln(falamat,’pinrang’) ;
Close (falamat) ;
Readln ;
                End.
Contoh 2 :
                Program baca alamat ;
                Var
                                Falamat : text ;
                                Temp : string ;
                Begin
                                Assign (falamat,’D:\Alamat,txt’);
                                Reset (falamat) ;
                                While not eof 9falamat) do
                Begin
                                Readln (falamat, temp) do
                                Writeln (tempt) ;
                End ;
                Close (falamat) ;
                End.
Contoh 3 :
                Var
                                F : File ;
                Begin
                                Assign (F,’D:\ Alamat.text’) ;
                                Erase (F) ;
                End.
Contoh 4 :
                Program GanjilGenap ;
                Uses crt ;
                Var   batas : integer ;   
                Begin
                    Clrscr ;
                                Write (‘Batas’) ; readln(batas) ;
                                For  a := 1 to batas do
                begin
                                if  a  mod  2 then
                                case a  of
                                0 : write (‘ genap ‘) ;
                                1 : write (‘ genap ‘) :
                End ;
                Readln ;
                End.

STRUKTUR DATA DINAMIS
Struktur data Dinamis dapat mengecil dan dapat membesar.
                Var
                                Contoh array : array [1 .. 100] ;
Atau
                Type
                                Nama type pointer : ^ tipe data ;

-          Untuk mendefinisikan struktur data dinamis digunakan tipe pointer
-          Pointer adalah variabel yang digunakan untuk menyimpan lokasi data pada memori.
-          Procedure New Dispose digunakan untuk menggunakan variabel dengan tipe data record harus dipesan terlebih dahulu ruang memori yang digunakan untuk menyimpan nilai yang diacuh pada variabel tersebut. Proses ini disebut dengan alokasi memori untuk melakukan prosesini di gunakan sebuah procedure built-in yaitu New sesuatu yang ada pada pascal mod, mid.
Contoh :
type
                Rec = record
                                Nilai1 : integer ;
                                Nilai2 : integer ;
                End ;
Var
                Rec1 : rec ;
                Rec2 : rec ;
                Rec3 : ^rec ;




Selasa, 26 April 2011

Algoritma Struktur Data 2

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.