• Tidak ada hasil yang ditemukan

Algoritma dan Struktur Data II

N/A
N/A
Protected

Academic year: 2017

Membagikan "Algoritma dan Struktur Data II"

Copied!
90
0
0

Teks penuh

(1)

ALGORITMA dan STRUKTUR DATA II dan Struktur Data   

V3/2009‐2010  1  Pertemuan 1 

 

Waktu       :   menit 

Tujuan Pembelajaran  : Mahasiswa mampu menjelaskan konsep algoritma dan     struktur data 

Substansi Materi    : Konsep Algoritma dan Struktur Data   

Tabulasi Kegiatan Perkuliahan   

No  Kegiatan Tahap  Kegiatan Pengajar  Mahasiswa Kegiatan  Media & Alat  Waktu    Pendahuluan  . Membuka Pertemuan

. Menjelaskan peta kompetensi dan  tujuan pembelajaran 

. Memberikan rancangan  pembelajaran 

. Memberikan daftar referensi  kuliah 

Menyimak

Bertanya  Papan Tulis  Menit

  Penyajian 

Materi  . . Definisi AlgoritmaDefinisi Struktur Data 

. Konsep Algoritma dan Struktur  Data 

. Contoh penerapan Algoritma dan  Struktur Data 

Menyimak Bertanya  Menjawab  Pertanyaan 

Papan Tulis  Menit

  Penutup  . Menyimpulkan materi pertemuan . Memberikan tugas kecil 

. Menutup pertemuan 

Menyimak Papan tulis   Menit

   

Definisi Algoritma 

Ditinjau dari asal usul katanya kata Algoritma sendiri mempunyai sejarah yang aneh. Orang  hanya  menemukan  kata  Algorism  yang  berarti  proses  menghitung  dengan  angka  arab.  Anda dikatakan Algorist jika anda menghitung menggunakan Angka Arab. Para ahli bahasa  berusaha menemukan asal kata ini namun hasilnya kurang memuaskan. Akhirnya para ahli  sejarah  matematika  menemukan  asal  kata  tersebut  yang  berasal  dari  nama  seorang  ahli  matematika  dari  Uzbekistan  Abu  Abdullah  Muhammad  )bnu  Musa  Al‐Khuwarizmi  ‐

. Al‐Khuwarizmi dibaca orang barat menjadi Algorism. Al‐Khuwarizmi menulis buku  yang  berjudul  Kitab  Al  Jabar  Wal‐Muqabala  yang  artinya  Buku  pemugaran  dan 

(2)

ALGORITMA dan STRUKTUR DATA II dan Struktur Data   

V3/2009‐2010  2  pengurangan   The  book  of  restoration  and  reduction .  Dari  judul  buku  itu  kita  juga  memperoleh  akar  kata  Aljabar   Algebra .  Perubahan  kata  dari  Algorism  menjadi  Algorithm  muncul  karena  kata  Algorism  sering  dikelirukan  dengan  Arithmetic,  sehingga  akhiran  –sm  berubah  menjadi  –thm.  Karena  perhitungan  dengan  angka  Arab  sudah  menjadi  hal  yang  biasa.  Maka  lambat  laun  kata  Algorithm  berangsur‐angsur  dipakai  sebagai metode perhitungan  komputasi  secara 

umum, sehingga kehilangan makna kata aslinya. Dalam Bahasa )ndonesia, kata Algorithm  diserap menjadi Algoritma. 

 

Kita bisa mendefinisikan algoritma sebagai berikut: 

 Algoritma adalah logika, metode dan tahapan  urutan  sistematis yang digunakan untuk  memecahkan suatu permasalahan.  

 

Dan kamus besar bahasa )ndonesia  Balai Pustaka   secara formal mendefinisikan  algoritma sebagai berikut: 

Algoritma adalah urutan logis pengambilan putusan untuk pemecahan masalah.    

Hubungan Algoritma dan Struktur Data 

Program adalah kumpulan instruksi komputer, sedangkan metode dan tahapan sistematis  dalam  program  adalah  algoritma.  Program  ini  ditulis  dengan  menggunakan  bahasa  pemrograman.  Jadi  bisa  kita  sebut  bahwa  program  adalah  suatu  implementasi  bahasa  pemrograman. Beberapa pakar memberi formula bahwa: 

program = struktur data + algoritma   

(3)

ALGORITMA dan STRUKTUR DATA II dan Struktur Data   

V3/2009‐2010  3  memungkinkan suatu permasalahan dipecahkan dengan metode dan logika yang berlainan.  Lalu  bagaimana  mengukur  mana  algoritma  yang  terbaik  ?  Beberapa  persyaratan  untuk  menjadi algoritma yang baik adalah: 

• Tingkat kepercayaannya tinggi  realibility . (asil yang diperoleh dari proses harus  berakurasi tinggi dan benar. 

• Pemrosesan yang efisien  low cost . Proses harus diselesaikan secepat mungkin dan  jumlah kalkulasi yang sependek mungkin. 

• Bersifat general. Bukan sesuatu yang hanya untuk menyelesaikan  satu kasus saja,  tapi juga untuk kasus lain yang lebih general. 

• Bisa  dikembangkan  expandable .  (aruslah  sesuatu  yang  dapat  kita  kembangkan  lebih jauh berdasarkan perubahan requirement yang ada. 

• Mudah dimengerti. Siapapun yang melihat, dia akan bisa memahami algoritma anda.  Sulit dimengertinya suatu program akan membuat sulit pengelolaan. 

• Portabilitas  yang  tinggi  portability .  Bisa  dengan  mudah  diimplementasikan  di  berbagai platform komputer. 

 

Contoh Algoritma dan Implementasinya 

Sebagai  contoh  sederhana,  mari kita  berlatih  melihat  permasalahan,  mencoba  menyusun  algoritma, dan menerapkan dalam bahasa Pascal. 

 

Permasalahan : 

Bagaimana  mengkonversi  nilai  yang  diraih  mahasiswa  peserta  kuliah  Algoritma  dan  Struktur Data )) menjadi (uruf Mutu  A / B / C / D / E  ? 

 

Untuk memecahkan masalah tersebut maka dapat disusun algoritma sebagai berikut :  . Buat satu variable  misalnya Nilai  

. Bandingkan nilai dengan rentang huruf mutu dengan menggunakan selection  . Tampilkan huruf mutu 

(4)

ALGORITMA dan STRUKTUR DATA II dan Struktur Data   

V3/2009‐2010  4  Lalu  jika  diimplementasikan  dengan  menggunakan  program  Pascal,  maka  dibawah  ini  adalah listing programnya : 

{ Program Huruf Mutu } 

Uses crt;  Var n : integer;  Begin 

  Clrscr; 

  Write ‘Nilai Anda : ‘ ; 

  Repeat 

    GoToXY , ; ClrEol; 

    Read n ; 

  Until  n>=  and  n<= ;    Case n of 

     . .   : write ‘ Anda mendapat (uruf Mutu A ‘ ;       . .     : write ‘ Anda mendapat (uruf Mutu B ‘ ;       . .     : write ‘ Anda mendapat (uruf Mutu C ‘ ;      Else write ‘ Anda mendapat (uruf Mutu D ‘ ; 

  End; 

  ReadKey; 

End.   

Output : 

  Nilai Anda :   

  Anda mendapat (uruf Mutu A   

Algoritma Tidak Tergantung Bahasa Pemrograman Dan Mesin Komputer 

(5)

ALGORITMA dan STRUKTUR DATA II dan Struktur Data   

V3/2009‐2010  5  Mengapa  demikian?  Karena  setiap  juru  masak  sebagai  pemroses   dapat  melakukan  operasi  dasar  yang  sama,  seperti  mengocok  telur,  menimbang  berat  gula,  dan  lain  sebagainya. Demikian juga halnya dengan komputer. Meskipun setiap komputer berbeda  teknologinya,  tetapi  secara  umum  semua  komputer  dapat  melakukan  operasi‐operasi  dasar dalam pemrograman seperti operasi pembacaan data, operasi perbandingan, operasi  aritmatika, dan sebagainya. Perkembangan teknologi komputer tidak mengubah operasi‐ operasi dasar itu, yang berubah hanyalah kecepatan, biaya, atau tingkat ketelitian. Pada sisi  lain  setiap  program  dalam  bahasa  tingkat  tinggi  selalu  diterjemahkan  kedalam  bahasa  mesin  sebelum  akhirnya  dikerjakan  oleh  CPU.  Setiap  instruksi  dalam  bahasa  mesin  menyajikan  operasi  dasar  yang  sesuai,  dan  menghasilkan  efek  yang  sama  pada  setiap  komputer. 

(6)

ALGORITMA dan STRUKTUR DATA II M O D U L 

 

V3/2009‐2010  1  Pertemuan 2 

 

Waktu       :   menit 

Tujuan Pembelajaran  : Mahasiswa mampu menjelaskan teknik pemrograman             menggunakan Modul. 

Substansi Materi    : Modul  Tabulasi Kegiatan Perkuliahan   

No  Tahap 

Kegiatan  Kegiatan Pengajar 

Kegiatan  Mahasiswa 

Media & 

Alat  Waktu    Pendahuluan  . Membuka pertemuan

. Mengulang materi pertemuan  sebelumnya 

Menyimak

Bertanya  Papan Tulis   Menit

  Penyajian 

Materi  .. Definisi procedureKegunaan procedure  . Definisi fungsi  . Kegunaan fungsi 

. Contoh program yang menggunakan  procedure dan fungsi 

. Contoh soal procedure dan fungsi 

Menyimak Bertanya  Menjawab  Pertanyaan 

Papan Tulis  8  Menit

  Penutup  . Menyimpulkan materi pertemuan . Memberikan tugas kecil 

. Menutup pertemuan 

Menyimak Papan tulis   Menit

   

PROCEDURE 

Procedure  berguna  untuk  mengumpulkan  statement‐statement  yang  dapat  dijalankan  menjadi  satu  dalam  suatu  blok  dan  untuk  menjalankannya  kembali  hanya  dengan  menuliskan  nama  procedure  yang  menampungnya.  Selain  itu  procedure  juga  banyak  dipakai  untuk  menampung  baris‐baris  perintah  yang  sering  dipakai  dalam  sebuah  program. 

Untuk mendeklarasikan procedure dapat dilakukan dengan dua cara, yaitu : 

• (eader procedure tanpa parameter  • (eader procedure dengan parameter 

(7)

ALGORITMA dan STRUKTUR DATA II M O D U L 

 

V3/2009‐2010  2  Header procedure tanpa parameter 

Bentuk umum : 

  Procedure <NamaProcedure>; 

 

Contoh : 

  Procedure BuatKotak;    Procedure )nput;    Procedure Output;   

Penulisan  header  procedure  tanpa  parameter  diawali  dengan  kata  baku Procedure dan  diikuti dengan nama procedure serta diakhiri dengan tanda titik koma  ; . 

Berikut digambarkan struktur blok program beserta procedure tanpa parameter. 

 

     

Gambar  . Struktur blok program beserta procedure tanpa parameter 

 

Contoh program pemanfaatan procedure tanpa parameter 

Program (itung;  Var p, q, x, y : byte; 

  Procedure TambahKali;    Begin 

  P := x + y; 

Program <NamaProgram>

[image:7.612.165.441.417.497.2]
(8)

ALGORITMA dan STRUKTUR DATA II M O D U L 

 

V3/2009‐2010  3    Q := x * y; 

  Writeln ‘ X + Y = ‘, p ;    Writeln ‘ X * Y = ‘, q ;    End; 

Begin 

  Write ‘ X = ‘ ; ReadLn x ;    Write ‘ Y = ‘ ; ReadLn y ; 

  TambahKali; {Untuk menjalankan procedure TambahKali}  End. 

 

Dari listing program diatas dapat dilihat bahwa Procedure TambahKali hanya berisi baris‐ baris program yang dapat dijalankan, dan pada procedure itu sendiri tidak ada hasil yang  ditampungnya. 

 

Header procedure dengan parameter 

Bentuk umum : 

  Procedure <NamaProcedure> <daftar parameter> ;   

Contoh : 

  Procedure (itung a, b : byte ; c : real ;    Procedure Lingkaran x, y, jari : integer ;   

(9)

ALGORITMA dan STRUKTUR DATA II M O D U L 

 

V3/2009‐2010  4  dipisahkan  dengan  koma  beserta  dengan  tipe  datanya  serta  diakhiri  dengan  tanda  titik  koma  ; . 

 

Berikut digambarkan struktur blok program beserta procedure tanpa parameter. 

       

Gambar  . Struktur blok program beserta procedure dengan parameter   

Contoh program pemanfaatan procedure dengan parameter 

Program (itung;  Var p, q, x, y : byte; 

  Procedure TambahKali a, b : byte ;    Begin 

  P := x + y;    Q := x * y; 

  Writeln ‘ X + Y = ‘, p ;    Writeln ‘ X * Y = ‘, q ;    End; 

Begin {Program Utama} 

  Write ‘ X = ‘ ; ReadLn x ;    Write ‘ Y = ‘ ; ReadLn y ; 

  TambahKali x,y ; {Untuk menjalankan procedure TambahKali}  End. 

Program <NamaProgram>

[image:9.612.166.443.203.284.2]
(10)

ALGORITMA dan STRUKTUR DATA II M O D U L 

 

V3/2009‐2010  5  FUNCTION 

Function  tidak  hanya  dapat  dipakai  untuk  mengelompokan  baris‐baris  perintah  seperti  halnya procedure, tetapi function itu sendiri dapat menampung nilai yang disimpan pada  nama function. (al tersebut merupakan perbedaan utama antara fungsi dan prosedur. 

Seperti procedure, penulisan header function pun dapat dilakukan dengan dua cara  sesuai  dengan kebutuhan , yaitu : 

• (eader function tanpa parameter  • (eader function dengan parameter   

Header Function Tanpa Parameter 

Bentuk umum : 

  Function<NamaFunction> : TipeData;   

Contoh : 

  Function (itung : integer;    Function Nama : string;    Function Check : Boolean;   

(eader  function  selalu  diawali  dengan  kata  baku  Function  dan  diikuti  dengan  nama  function  serta  tipe  datanya  yang  dipisahkan  dengan  tanda  titik  dua  : .  Berikut  digambarkan struktur blok program serta function tanpa parameter. 

 

   

Gambar  . Blok program serta function tanpa parameter  Program <NamaProgram>

[image:10.612.164.438.603.683.2]
(11)

ALGORITMA dan STRUKTUR DATA II M O D U L 

 

V3/2009‐2010  6  Contoh program pemanfaatan function tanpa parameter 

Program (itung;  Var x, y : byte; 

  Function Tambah:byte;    Begin 

  Tambah := x + y;    End; 

  Function Kali:byte;    Begin 

  Kali := x * y;    End;    Begin 

  Write ‘ X = ‘ ; ReadLn x ;    Write ‘ Y = ‘ ; ReadLn y ;    WriteLn  ‘ X + Y = ‘, Tambah ;    WriteLn ‘ X * Y = ‘, Kali ;  End. 

 

Function tambah dan kali pada contoh diatas dapat menampung hasil dari perkalian antara  x dan y sehingga variable p dan q hanya dipakai sebagai penampung sementara, sedangkan  pada  procedure  tidak  dapat  demikian.  )nilah  salah  satu  perbedaan  function  dengan  procedure seperti yang telah dijelaskan sebelumnya  

 

Header Function dengan Parameter 

Bentuk umum : 

(12)

ALGORITMA dan STRUKTUR DATA II M O D U L 

 

V3/2009‐2010  7  Contoh : 

  Function (itung a, b : byte  : integer; 

  Function CheckPosisi x, y : integer  : Boolean;   

Penulisan  function  dengan  parameter  tidak  jauh  berbeda  dengan  function  tanpa  parameter, hanya saja perlu ditambahkan parameter‐parameter yang ditulis di dalam  . 

Berikut digambarkan struktur blok program beserta function dengan parameter.    

 

 

 

Gambar  . Struktur blok program beserta function dengan parameter   

Contoh program pemanfaatan function dengan parameter 

Program (itung;  Var x, y : byte; 

  Function Tambah x, y : byte  : byte;    Begin 

  Tambah := x + y;    End; 

  Function Kali x, y : byte  :byte;    Begin 

  Kali := x * y;    End;    Begin 

Program <NamaProgram>

[image:12.612.169.445.268.349.2]
(13)

ALGORITMA dan STRUKTUR DATA II M O D U L 

 

V3/2009‐2010  8    Write ‘ X = ‘ ; ReadLn x ; 

  Write ‘ Y = ‘ ; ReadLn y ; 

  WriteLn  ‘ X + Y = ‘, Tambah x,y ;    WriteLn ‘ X * Y = ‘, Kali x,y ;  End. 

 

Perbedaan antara Function  dan Procedure, sebagai berikut : 

• Jika membuat suatu procedure maka harus mendeklarasikan dengan reserved word  Procedure , sedangkan jika ingin membuat suatu function maka harus 

mendeklarasikan dengan reserved word  Function . 

• Function harus dideklarasikan dengan tipenya, sedangkan procedure tidak. (al ini  menunjukkan bahwa pada function itu sendiri dapat menampung nilai, sedangkan  procedure tidak. 

Persamaan antara Function dan Procedure, terletak pada fungsinya, yaitu : 

• Memecah  sebuah  program  besar  menjadi  beberapa  bagian  modul   sehingga  memudahkan pembagian tugas jika program tersebut dibuat oleh lebih dari   orang.  Selain itu juga mempermudah pengecekan kesalahan / error. 

• Jika terdapat perintah‐perintah yang sama yang akan dipakai dalam suatu program,  maka sebaiknya perintah‐perintah tersebut dipisahkan dalam suatu modul program  dengan  menggunakan  procedure,  sehingga  jika  ingin  memakainya  hanya  tinggal  memanggil nama procedure tersebut. 

• Mempermudah proses dokumentasi. 

(14)

ALGORITMA dan STRUKTUR DATA II M O D U L   

V3/2009‐2010  1  Pertemuan 3 

 

Waktu       :   menit 

Tujuan Pembelajaran  : Mahasiswa mampu menjelaskan teknik pemrograman  

          menggunakan Modul. 

Substansi Materi    : Modul 

Tabulasi Kegiatan Perkuliahan   

No  Kegiatan Tahap  Kegiatan Pengajar  Mahasiswa Kegiatan  Media & Alat  Waktu 

  Pendahuluan  . Membuka pertemuan

. Mengulang materi pertemuan  sebelumnya 

Menyimak

Bertanya  Papan Tulis  Menit

  Penyajian 

Materi  . . Variabel dan Konstanta LokalParameter formal dan aktual  . Transfer Parameter 

. Nested Procedure  . Rekursif 

. Contoh program   . Contoh soal Modul 

Menyimak Bertanya  Menjawab  Pertanyaan 

Papan Tulis  Menit

  Penutup  . Menyimpulkan materi pertemuan . Memberikan tugas kecil 

. Menutup pertemuan 

Menyimak Papan tulis   Menit

   

VARIABEL DAN KONSTANTA LOKAL 

Pada kedua contoh pada materi sebelumnya, variable p, q, x dan y semuanya bersifat global  sehingga  dapat  dikenal  baik  pada  program  utama  dan  pada  procedure  TambahKali  sedangkan pada dua listing program terakhir, variable x dan y juga bersifat global namun  variable  p  dan  q  tidak  diperlukan  dali  karena  digantikan  oleh  function  itu  sendiri  yang  dapat menampung nilai. 

Ada baiknya membatasi suatu variable atau konstanta hanya pada batas local saja karena  beberapa factor seperti kemudahan dalam mengecek jika terjadi kesalahan, memudahkan 

(15)

ALGORITMA dan STRUKTUR DATA II M O D U L   

V3/2009‐2010  2 

pengontrolan, dapat memakai variable dengan nama yang sama tetapi dengan fungsi atau  procedure yang berbeda. 

Jika mendeklarasikan variable atau konstanta local di dalam suatu procedure atau function,  maka  variable  atau  konstanta  tersebut  hanya  dapat  digunakan  pada  procedure  atau  function  yang  bersangkutan  dan  tidak  dapat  digunakan  pada  procedure  atau  function  lainnya ataupun pada program utama. 

Contoh 1 : 

Program (itung;  Var x, y : byte; 

  Procedure TambahKali; 

  Var p, q : byte; 

Begin 

  P := x + y; 

  Q := x * y; 

  Writeln  X + Y =  , p ; 

  Writeln  X * Y =  , q ; 

  End; 

Begin 

  Write  X =  ; ReadLn x ; 

  Write  Y =  ; ReadLn y ; 

  TambahKali; {Untuk menjalankan procedure TambahKali} 

End.     

 

x,y adalah  variable global 

(16)

ALGORITMA dan STRUKTUR DATA II M O D U L   

V3/2009‐2010  3  Contoh 2 : 

Program (itung;  Var x, y : byte; 

  Function Tambah:byte; 

  Var p : byte; 

Begin  P := x + y; 

  Tambah := p; 

  End; 

  Function Kali:byte; 

  Var q : byte; 

Begin  q := x * y; 

  Kali := q; 

  End;   

Begin 

  Write  X =  ; ReadLn x ; 

  Write  Y =  ; ReadLn y ; 

  WriteLn    X + Y =  , Tambah ; 

  WriteLn  X * Y =  , Kali ; 

End.   

Pada kedua contoh diatas, variable x dan y bersifat variable global sehingga dapat dikenal  baik pada program utama maupun pada procedur TambahKali atau function Tambah dan  Kali. Sedangkan variable p dan q bersifat variable local, sehingga hanya dapat dikenal pada 

P adalah  variable lokal 

(17)

ALGORITMA dan STRUKTUR DATA II M O D U L   

V3/2009‐2010  4 

procedure TambahKali saja dan function Tambah serta Kali. Apabila variable local tersebut  dipaksakan berada pada program utama, maka jika decompile akan diberikan pesan error  unknown  identifier   yang  menandakan  bahwa  variable  P  dan  Q  tersebut  tidak  dikenal  pada program utama. 

 

Parameter Formal dan Aktual 

Jika sebuah modul, baik procedure ataupun function memiliki parameter yang berada di  dalam kurung    , maka parameter tersebut disebut dengan parameter formal, sedangkan  parameter  yang  terdapat  pada  baris  perintah  pemanggil  modul  tersebut  disebut  sebagai  parameter actual. 

Untuk lebih jelasnya lihat penjelasan dibawah ini :   

Program (itungLuas; 

  Procedure (itung a, b : byte; c : integer ; 

  Begin 

  ………. 

  End; 

{Program Utama} 

Var hasil : byte;  Begin 

  (itung  ,  , hasil ; 

  ………. 

End.   

a,b,c adalah  Parameter Formal 

(18)

ALGORITMA dan STRUKTUR DATA II M O D U L   

V3/2009‐2010  5 

Pada contoh diatas procedure (itung memiliki parameter a, b dan c yang disebut sebagai  parameter  formal.  Procedure  hitung  tersebut  dipanggil  pada  program  utama  dengan  parameter  ,    dan  hasil.  Parameter  ,    dan  hasil  dikenal  sebagai  parameter  actual.  Kemudian  parameter  actual  ,    dan  hasil  tersebut  masing‐masing  ditransfer  kepada  parameter formal a, b dan c sesuai dengan urutannya. Sehingga pada procedure hitung a  bernilai  , b bernilai  , dan c berisi variable penampung hasil. 

Transfer parameter akan dijelaskan lebih lanjut pada bagian berikutnya.  Program Gambar; 

  Function CheckPosisi x, y : byte ; Data : string  : Boolean; 

  Begin 

  ………. 

  End; 

{Program Utama} 

Begin 

  )f CheckPosisi ,  , *  then 

  Write Posisi Telah Benar ; 

  ……… 

End.   

Pengertian  parameter  formal  dan  actual  pada  function  tidak  berbeda  dengan  yang  dijelaskan sebelumnya pada procedure. Function CheckPosisi mempunyai parameter X, Y  dan  Data.  Ketiga  parameter  tersebut  dikenal  sebagai  parameter  formal.  Function  CheckPosisi dipanggil dalam program utama dengan parameter  ,  , dan  * . Parameter  ,  ,  dan  *   tersebut  dikenal  sebagai  parameter  actual.  Pada  saat  function  CheckPosisi  dijalankan,  parameter  X  akan  berisi  nilai  ,  Y  berisi  nilai  ,  dan  Data  berisi  karakter  *.  Setelah  function  selesai  dijalankan,  hasil  akhir  dari  proses  function  CheckPosisi  akan 

Parameter Formal 

(19)

ALGORITMA dan STRUKTUR DATA II M O D U L   

V3/2009‐2010  6 

disimpan pada function itu sendiri, yaitu pada  CheckPosisi  yang bertipe Boolean. Karena  CheckPosisi bertipe Boolean, maka sudah dapat dipastikan bahwa nilai yang ditampungnya  adalah  True  atau  False . Lalu nilai true atau false itu akan dikirimkan kembali pada baris  program pemanggilnya, yaitu : 

  )f CheckPosisi ,  , *  then 

  Write Posisi Anda Benar ; 

Jika CheckPosisi bernilai true maka pada layar akan dicetak  Posisi Anda Benar .   

Transfer Parameter 

Pada  saat  memanggil  suatu  modul  procedure  /function   dengan  parameter  sebenarnya  telah  terjadi  pengiriman  parameter  dari  parameter  actual  yang  terdapat  memangil  procedure /function   ke parameter formal  yang terdapat pada procedure atau function  tersebut  pengiriman parameter tersebut dapat dilakukan dengan dua cara , yaitu: 

• Transfer parameter by value   secara nilai   

• Transfer parameter by location /reference  secara acuan   

 

Transfer Parameter by Value 

Nilai  yang  tersimpan  dalam  parameter  dikirim  ke  modul    procedure/  function   untuk  diolah tetapi tidak minta hasil olahan tersebut untuk dikembalikan dalam mode ini terjadi  aliran   arah yaitu dari pemangil procedure ke procedure itu. 

Contoh 1: 

Program (itung;  Var x, y : byte; 

  Procedure TambahKali p, q : byte ; 

  Begin 

(20)

ALGORITMA dan STRUKTUR DATA II M O D U L   

V3/2009‐2010  7 

  Q := x * y; 

  Writeln  X + Y =  , p ; 

  Writeln  X * Y =  , q ; 

  End; 

Begin 

  Write  X =  ; ReadLn x ; 

  Write  Y =  ; ReadLn y ; 

  TambahKali x,y ; {Untuk menjalankan procedure TambahKali} 

End.   

Contoh 2 : 

Program (itung;  Var x, y : byte; 

  Function Tambah p, q : byte  : byte; 

Begin 

  Tambah := x + y ; 

  End; 

  Function Kali p, q :byte : byte; 

  Begin 

  Kali := x * y; 

  End;   

Begin 

  Write  X =  ; ReadLn x ; 

(21)

ALGORITMA dan STRUKTUR DATA II M O D U L   

V3/2009‐2010  8 

  WriteLn    X + Y =  , Tambah x, y ; 

  WriteLn  X * Y =  , Kali x, y ; 

End. 

 

Transfer parameter by location  

Transfer parameter by location sering dikenal juga dengan transfer parameter by reference  secara  acuan    dalam  kasus  ini yang  ditransfer  hanya lokasinya  saja    dapat  berisi data  atau kosong   untuk di olah , dan meminta hasil olahan tersebut untuk dikembalikan dan  disimpan pada lokasi yang telah ditransfer tersebut dalam mode ini dapat terjadi aliran    arah dari pemanggil procedure ke procedure itu dan sebaliknya . 

 

Contoh 1: 

Program (itung;  Var x, y : byte; 

  Procedure TambahKali var p, q : byte ; 

  Begin 

  P := x + y; 

  Q := x * y; 

  End; 

Begin 

  Write  X =  ; ReadLn x ; 

  Write  Y =  ; ReadLn y ; 

  TambahKali x,y ;  

  WriteLn X + Y =  , x ; 

(22)

 

 

Contoh 2

Program Var x, y,    P B   Z   Z   E Begin    W   W   T   W   W End.   

Nested p

Nested p Bentuk U        

2 : 

m (itung; 

z , z  : byte Procedure T Begin   := x + y;   := x * y;  nd;  Write  X =  Write  Y =  TambahKali WriteLn    X 

WriteLn  X *

procedure (

procedure a Umum :  Progra AL e;  ambahKali ; ReadLn x ; ReadLn y x, y, Z , Z + Y =  , Z ;

* Y =  , Z ; 

( Procedure

adalah proce

am <NamaProgram

Procedure

Pro

LGORITMA d

p, q : byte; v ;  ;  ;    eTersarang edure yang 

By Value 

m>

e <NamaProcedure

ocedure<Na

dan STRUKTU

var z , z  : 

g) 

terdapat di 

By

e>

maProcedur

UR DATA II

byte  ; 

dalam proc

y Location 

re>;

M

V3/200

cedure yang

M O D U L 

09‐2010  9 

(23)

ALGORITMA dan STRUKTUR DATA II M O D U L   

V3/2009‐2010  10 

Gambar  . Nested Procedure   

Procedure /function rekursif 

Procedure/function  rekursif  adalah  procedure  /function  yang  dapat  memanggil  dirinya  sendiri procedure/function rekursif ini dipakai karena memiliki kelebihan yaitu penulisan  baris  program  dapat  menjadi  lebih  singkat  ,  tetapi  juga  memiliki  kekurangan  yaitu  membutuhkan  banyak  memori  karena  setiap  kali  program  bagian  dipanggil  oleh  dirinya  sendiri dibutuhkan sejumlah ruang memori tambahan. 

 

Contoh : 

Var   n:byte; 

Procedure rekursif;  Begin 

     Writeln n ;       N:=n‐ ; 

     )f  n>  then rekursif;  End; 

{program utama}      

(24)

ALGORITMA dan STRUKTUR DATA II POINTER   

V3 / 2009‐2010  1  Pertemuan 4 

 

Waktu       :   menit 

Tujuan Pembelajaran  : Mahasiswa mampu menjelaskan teknik pemrograman             menggunakan Pointer. 

Substansi Materi    : Variabel Pointer  Tabulasi Kegiatan Perkuliahan 

 

No  Kegiatan Tahap  Kegiatan Pengajar  Mahasiswa Kegiatan  Media & Alat  Waktu 

  Pendahuluan  . Membuka pertemuan

. Mengulang materi pertemuan  sebelumnya 

Menyimak

Bertanya  Papan Tulis  Menit

  Penyajian 

Materi  . . Variabel PointerArray Vs Pointer 

. Deklarasi Variabel Pointer  . Latihan Soal 

 

Menyimak Bertanya  Menjawab  Pertanyaan 

Papan Tulis 8  Menit

  Penutup  . Menyimpulkan materi pertemuan . Memberikan tugas kecil 

. Menutup pertemuan 

Menyimak Papan tulis   Menit

 

TIPE DATA POINTER 

Variabel Pointer 

Pada modul sebelumnya telah dijelaskan mengenai variable bertipe array, suatu tipe data  yang  bersifat  statis  ukuran  dan  urutannya  sudah  pasti .  Selain  itu  ruang  memory  yang  dipakai  olehnya  tidak  dapat  dihapus  bila  variable  bertipe  array  tersebut  sudah  tidak  digunakan lagi pada saat program dijalankan. Untuk memecahkan masalah tersebut, maka  digunakan variable pointer. Tipe data pointer bersifat dinamis, variable akan dialokasikan  hanya pada saat dibutuhkan dan sesudah tidak dibutuhkan dapat didealokasikan kembali. 

(25)

ALGORITMA dan STRUKTUR DATA II POINTER   

V3 / 2009‐2010  2  Variabel  pointer  adalah  suatu  variable  yang  menunjuk  ke  alamat  yang  digunakan  untuk  menampung data yang akan diproses.  

 

[image:25.612.64.548.253.339.2]

Array Vs Pointer 

Tabel dibawah ini memberikan perbedaan antara variable bertipe  array dengan variable  bertipe pointer. 

Kriteria  Array  Pointer 

Sifat  Statis  Dinamis 

Ukuran  Pasti  Sesuai Kebutuhan 

Alokasi Variabel  Saat  program  dijalankan  sampai dengan selesai 

Dapat  diatur  sesuai  dengan  kebutuhan 

 

Deklarasi Variabel Pointer 

Bentuk Umum : 

  Var <NamaVar> : <^TipeData> 

Contoh : 

  Var 

     JumlahData : ^integer;       NamaSiswa : ^string[ ]; 

     NilaiSiswa : ^real;   

 

 

(26)

ALGORITMA dan STRUKTUR DATA II POINTER   

V3 / 2009‐2010  3  Deklarasi dalam record  

Bentuk Umum : 

  Type 

     <NamaPointer> = <^NamaRecord>; 

     <NamaRecord> = record 

        <item >:<TipeData >;          <item >:<TipeData >; 

        ……….. 

        <itemN>:<TipeDataN>; 

          End; 

  Var 

     <NamaVar> : <NamaPointer>; 

 

Contoh : 

  Type 

     PointMhs = ^RecMhs;       RecMhs = record 

      Nama : string[ ]; 

      N)M : string[ ];        Alamat : string[ ];        )PK : real; 

      End; 

  Var 

(27)

ALGORITMA dan STRUKTUR DATA II LINKED LIST   

V3/2009‐2010  1  Pertemuan 5 

 

Waktu       :  5 menit 

Tujuan Pembelajaran  : Mahasiswa mampu menjelaskan teknik pemrograman             menggunakan Linked List. 

Substansi Materi    : Single Linked List, L)FO, F)FO  Tabulasi Kegiatan Perkuliahan 

 

No  Tahap 

Kegiatan  Kegiatan Pengajar 

Kegiatan  Mahasiswa 

Media & 

Alat  Waktu    Pendahuluan  . Membuka pertemuan

. Mengulang materi pertemuan  sebelumnya 

Menyimak Bertanya 

Papan Tulis   Menit

  Penyajian  Materi 

. Singled Linked List . Last in first out  . First in first out 

Menyimak Bertanya  Menjawab  Pertanyaan 

Papan Tulis  8  Menit

  Penutup  . Menyimpulkan materi pertemuan . Memberikan tugas kecil 

. Menutup pertemuan 

Menyimak Papan tulis  5 Menit

 

[image:27.612.53.561.258.429.2]

Single Linked List 

Gambar  berikut  menunjukan  sebuah  data  terletak  pada  sebuah  lokasi  memory.  Tempat  yang disediakan pada suatu area memory tertentu untuk menyimpan data dikenal dengan  sebutan node / simpul. Pada setiap node memiliki pointer penunjuk  yang menunjuk ke  simpul  berikutnya  sehingga  terbentuk  suatu  untaian  dan  dengan  demikian  hanya  diperlukan  sebuah  variable  pointer.  Susunan  berupa  untaian  ini  disebut  dengan  Single  Linked List. Nil tidak memiliki nilai apapun. Setiap linked list pada akhirnya akan menunjuk  ke Nil. 

 

(28)

ALGORITMA dan STRUKTUR DATA II LINKED LIST   

V3/2009‐2010  2   

Dalam pembuatan Single Linked List dapat menggunakan   Metoda : 

L)FO   Last )n First Out  , aplikasinya : Stack  Tumpukan  F)FO   First )n First Out  , aplikasinya : Queue  Antrian    

LIFO ( Last In First Out ) 

L)FO  adalah  suatu  metoda  pembuatan  Linked  List  dimana  data  yang  masuk paling  akhir  adalah  data  yang  keluar  paling  awal.  (al  ini  dapat  dianalogikan  dengan  menumpukan  barang  pada  kehidupan  sehari‐hari.  Pembuatan  simpul  pada  suatu  linked  list  disebut  dengan  istilah  )NSERT.  Jika  linked  list  dibuat  dengan  Metoda  L)FO  maka  penambahan/insert simpul dilakukan di BELAKANG. 

 

Procedure Insert 

)stilah  )NSERT  berarti  menambahkan  sebuah  simpul  baru  ke  dalam  suatu  linked  list.  Berikut  adalah  deklarasi  tipe  data  dan  variabel  yang  dapat  digunakan  sebagai  deklarasi  awal dan penggalan procedure insert. 

 

 

Memory 

Aku 

Belajar 

Pointer 

 

Aku  0100 

0200 

0300 

…… 

FFFF 

(29)

ALGORITMA dan STRUKTUR DATA II LINKED LIST   

V3/2009‐2010  3   

First In First Out 

F)FO  adalah  suatu  metoda  pembuatan  Linked  List  dimana  data  yang  masuk  paling  awal  adalah data yang keluar paling awal juga. Jika linked list dibuat dengan menggunakan F)FO,  maka terjadi penambahan / )nsert simpul di depan. 

 

Type 

    Point = ^RecPoint;      RecPoint = Record    )si : TipeData;    Next : Point; 

  End; 

Var 

    (ead, Tail, Now : Point;

 

Procedure )NSERT elemen:TipeData ;  Var Now : Point; 

    Begin 

     New Now ; 

  Now^.)si := Elemen;    )f (ead = Nil Then        Now^.Next := Nil;    Else 

      Now^.Next := (ead;    (ead := Now; 

(30)

ALGORITMA dan STRUKTUR DATA II LINKED LIST   

V3/2009‐2010  4  Procedure dan function Linked List lainnya 

Selain  procedure  insert  diatas,  pada  linked  list  juga  masih  terdapat  procedure  serta  function lainnya. Dibawah ini diberikan procedure‐procedure serta function umum dalam  linked list. 

Create 

Membuat  sebuah  linked  list  yang  baru  dan  masih  kosong.  Procedure  ini  wajib  dipanggil untuk menggunakan linked list. 

                     

Procedure )NSERT elemen:TipeData ;  Var Now : Point; 

    Begin 

     New Now ;    )f (ead = Nil Then       (ead := Now;    Else 

      Tail^.Next := now;    Tail := Now; 

  Tail^.Next := Nil;    Now^.)si := Elemen;  End; 

Procedure Create;  Begin 

(31)

ALGORITMA dan STRUKTUR DATA II LINKED LIST   

V3/2009‐2010  5  Empty 

Function untuk menentukan apakah linked list kosong atau tidak.   

           

Find First 

Mencari elemen pertama dari linked list   

       

Find Next 

Mencari elemen sesudah elemen yang ditunjuk Now   

     

Retrieve 

Mengambil elemen yang ditunjuk oleh now. Elemen tersebut lalu ditampung pada  suatu variabel, dalam potongan procedure ini ditampung dalam variabel r. 

     

Function Empty : Boolean;  Begin 

    )f head = nil then        Empty := true      else 

      Empty := false;  End;

 

Procedure Find_First;  Begin 

    Now := (ead;  End;

 

Procedure Find_Next;  Begin 

    )f Now^.Next <> Nil then        Now := Now^.next;  End;

 

Procedure Retrieve var r : TipeData ;  Begin 

(32)

ALGORITMA dan STRUKTUR DATA II LINKED LIST   

V3/2009‐2010  6  Update 

Mengubah  elemen  yang  ditunjuk  oleh  now  dengan  isi  dari  suatu  variabel  dalam  contoh ini digunakan variabel u . 

         

Delete Now 

Menghapus elemen yang ditunjuk oleh now. Jika yang dihapus adalah elemen yang  pertama dari linked list  head , maka head akan berpindah ke elemen berikutnya.   

                                   

Procedure UpDate u :TipeData ;  Begin 

    Now^.)si := U;  End;

 

Procedure DeleteNow;  Var x : point; 

Begin 

    )f Now <> (ead then      Begin 

  X := head; 

  While x^.next <> now do        X := x^.next; 

  X^.next := now^.next;      End 

    Else head := head^.next;        Dispose now ;      Now := head; 

(33)

ALGORITMA dan STRUKTUR DATA II LINKED LIST   

V3/2009‐2010  7  Delete Head 

Menghapus  elemen  yang  ditunjuk  oleh  head.  (ead  akan  berpindah  ke  elemen  sesudahnya. 

                  Clear 

Untuk menghapus linked list yang sudah ada. Wajib dilakukan bila ingin mengakhiri  program yang menggunakan linked list. Jika tidak ada data‐data yang dialokasikan  ke memory pada program sebelumnya akan tetap tertinggal di dalam memory.   

           

Procedure Delete(ead;  Begin 

    )f head <> nil then    Begin 

  Now := (ead;    (ead := (ead^.Next;    Dispose Now ;    Now := (ead; 

  End; 

End;

 

Procedure Clear;  Begin 

    While head <> nil do    Begin 

  Now := head;    (ead := head^.next;    Dispose now ; 

  End; 

(34)

ALGORITMA dan STRUKTUR DATA II DOUBLE LINKED LIST   

V3/2009‐2010  1  Pertemuan 6 

 

Waktu       :   menit 

Tujuan Pembelajaran  : Mahasiswa mampu menjelaskan teknik pemrograman  

          menggunakan Double Linked List. 

Substansi Materi    : Doubled Linked List, Circullar Double Linked List 

Tabulasi Kegiatan Perkuliahan   

No  Tahap 

Kegiatan  Kegiatan Pengajar 

Kegiatan  Mahasiswa 

Media & 

Alat  Waktu    Pendahuluan  . Membuka pertemuan

. Mengulang materi pertemuan  sebelumnya 

Menyimak

Bertanya  Papan Tulis   Menit

  Penyajian 

Materi  .. Teori Double Linked ListOperasi‐operasi pada Double Linked  List 

. Teori Circullar Double Linked List  . Operasi‐operasi pada Circullar Double 

Linked List 

Menyimak Bertanya  Menjawab  Pertanyaan 

Papan Tulis  8  Menit

  Penutup  . Menyimpulkan materi pertemuan . Memberikan tugas kecil 

. Menutup pertemuan 

Menyimak Papan tulis   Menit

 

Double

 

Linked

 

List

 

Salah  satu  kelemahan  dari  single  linked  list  adalah  pointer  penunjuk   hanya  dapat  bergerak satu arah saja, maju atau mundur, kanan atau kiri. Sehingga pencarian data pada  single  linked  list  hanya  dapat  bergerak  dalam  satu  arah  saja.  Untuk  mengatasinya  maka  digunakan metode double linked list. Linked list seperti ini dikenal dengan nama linked list  berpointer ganda atau Double Linked List. 

   

(35)

ALGORITMA dan STRUKTUR DATA II DOUBLE LINKED LIST   

V3/2009‐2010  2   

  Aku 

  Belajar 

  Pointer 

………   

………   

 

Gambar  . )lustrasi Double Linked List 

 

Operasi­operasi pada Double Linked List 

Insert

¾ )nsert After

Procedure  insert  berguna  untuk  menambah  simpul  dibelakang  sebelah  kanan  pada sebuah double linked list. Berikut penggalan procedure insert  after. 

 

nil  nil 

Procedure )nsertAfter e:Elemen_Type ;  Var Now : Point; 

    Begin 

      New now ;    Now^.)si := e;    )f (ead=Nil then        Begin 

    (ead := Now;      Tail := Now;      Now^.Next := Nil;      Now^.Prev := Nil;        End 

  Else        Begin 

    Tail^.next := now;      Now^.Prev := Tail;      Tail := Now;      Tail^.Next := Nil;        End; 

[image:35.612.193.475.90.188.2]
(36)

ALGORITMA dan STRUKTUR DATA II DOUBLE LINKED LIST   

V3/2009‐2010  3 

¾ )nsert Before

Sesuai dengan namanya, procedure )nsert Before berguna untuk menambah  simpul  di  depan  sebelah  kiri .  Procedure  ini  tidak  berbeda  jauh  dengan  procedure )nsert After. 

                           

Procedure )nsertBefore e:Elemen_Type ;  Var Now : Point; 

    Begin 

      New now ;    Now^.)si := e;    )f (ead=Nil then        Begin 

    (ead := Now;      Now^.Next := Nil;      Now^.Prev := Nil;        End 

  Else        Begin 

    (ead^.prev := now;      Now^.next := head;      (ead := Now;      (ead^.Prev := Nil;        End; 

(37)

ALGORITMA dan STRUKTUR DATA II DOUBLE LINKED LIST   

V3/2009‐2010  4  Delete

¾ Delete After

Procedure  Delete  After  berguna  untuk  menghapus  simpul  dari  belakang.  Procedure  ini  merupakan  kebalikan  dari  procedure    )nsert  After  yang  menambahkan simpul dibelakang. 

                                                 

Procedure DeleteAfter;  Var Now : Point;      Begin 

      Now := Tail; 

  )f Now <> (ead then        Begin 

    Tail := Now^.Prev;      Tail^.Next := Nil;        End 

  Else        Begin 

    Tail := Nil;      (ead := Nil;        End; 

(38)

ALGORITMA dan STRUKTUR DATA II DOUBLE LINKED LIST   

V3/2009‐2010  5  ¾ Delete Before

Procedure Delete Before merupakan kebalikan dari procedure Delete After  yang akan menghapus simpul dari depan  sebelah kiri . 

Procedure DeleteBefore;  Var Now : Point; 

    Begin 

      Now := (ead;    )f Now <> (ead then        Begin 

    (ead := Now^.Next;      (ead^.Prev := Nil;        End 

  Else        Begin 

    Tail := Nil;      (ead := Nil;        End; 

(39)

ALGORITMA dan STRUKTUR DATA II DOUBLE LINKED LIST   

V3/2009‐2010  6  ¾ Delete at Position

Procedure  at  Position,  sesuai  dengan  namanya,  berguna  untuk  menghapus  simpul  pada  posisi  yang  diinginkan.  Untuk  melakukannya  diperlukan  bantuan    variabel  pointer  yang  pada  modul  ini  diberi  nama  Bantu   dan  Bantu . Nama tersebut boleh diganti. 

                     

   

               

Procedure DeleteAtPos;  Var Bantu , Bantu  : Point;      Begin 

  Bantu  := Now^.Prev;    Bantu  := Now^.Next;         

  )f Bantu  <> Nil then        Bantu ^.Next := Bantu ;    Else 

      (ead := Bantu ;  )f Bantu  <> Nil Then         Bantu ^.Prev := Bantu ;    Else 

(40)

ALGORITMA dan STRUKTUR DATA II DOUBLE LINKED LIST   

V3/2009‐2010  7 

Circullar

 

Double

 

Linked

 

List

 

Merupakan  double  linked  list  yang  simpul  terakhirnya  menunjuk  ke  simpul  awal  dan  simpul awalnya menunjuk ke simpul akhir sehingga membentuk suatu lingkaran. 

 

Operasi­operasi pada Circullar Double Linked List 

Insert 

¾ Insert After 

Procedure  )nsert  After  berguna  untuk  menambah  simpul  di  belakang  sebelah kanan  pada sebuah double linked list. 

                                     

Procedure )nsertAfter e:Elemen_Type ;  Var Now : Point; 

    Begin 

      New now ;    )f (ead=Nil then        Begin 

    (ead := Now; 

    else 

    Now^.Prev := Tail;      Tail^.Next := Now;        End; 

    Now^.)si := e;      Tail := Now; 

(41)

ALGORITMA dan STRUKTUR DATA II DOUBLE LINKED LIST   

V3/2009‐2010  8  ¾ Insert Before 

Procedure  )nsert  Before  berguna  untuk  menambahkan  simpul  di  depan  sebelah  kiri .  Procedure  ini  tidak  berbeda  jauh  dengan  procedure  )nsert  After yang telah dijelaskan sebelumnya. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Procedure )nsertBefore e:Elemen_Type ;      Begin 

      )f (ead=Nil then        Begin 

    (ead := Now;      Tail := Now; 

End else  Begin 

    Now^.Prev :=(ead;      (ead^.Next := Now;        End; 

(42)

ALGORITMA dan STRUKTUR DATA II DOUBLE LINKED LIST   

V3/2009‐2010  9  Delete 

¾ Delete After 

Procedure  Delete  After  berguna  untuk  menghapus  simpul  dari  belakang.  Procedure  ini  merupakan  kebalikan  dari  Procedure  )nsert  After  yang  menambah simpul di belakang. 

                                                 

Procedure DeleteAfter;  Var Now : Point;      Begin 

      Now := Tail;    )f (ead=Nil then        Begin 

    Tail := Nil;      (ead := Nil;      End else 

    Begin 

    Tail := Now^.Prev;      Tail^.Next := (ead;      (ead^.Prev := Tail;        End; 

(43)

ALGORITMA dan STRUKTUR DATA II DOUBLE LINKED LIST   

V3/2009‐2010  10  ¾ Delete Before 

Procedure Delete Before merupakan kebalikan dari procedure Delete After  yang akan menghapus simpul dari belakang, sedangkan Delete Before akan  menghapus simpul dari depan  sebelah kiri . 

                                                   

Procedure DeleteBefore;  Var Now : Point; 

    Begin 

      Now := Tail;    )f (ead=Tail then        Begin 

    Tail := Nil;      (ead := Nil;         End else 

       Begin 

    (ead := Now^.Next;      (ead^.Prev := Tail;      Tail^.Next := (ead;        End; 

(44)

ALGORITMA dan STRUKTUR DATA II DOUBLE LINKED LIST   

V3/2009‐2010  11  ¾ Delete at Position 

Procedure Delete at Position berguna untuk menghapus simpul pada posisi  yang diinginkan. Untuk itu diberikan bantuan   buah variabel pointer yang  diberi nama Bantu  dan Bantu . 

                                Update 

Procedure update berguna untuk mengganti isi suatu simpul dengan data yang lain.  Procedure  update  ini  memanfaatkan  suatu  procedure  cari  untuk  mencari  posisi  simpul yang akan diganti isinya tersebut. Setelah ketemu, barulah diganti isinya.   

Procedure DeleteAtPos;  Var Bantu , Bantu  : Point;      Begin 

  Bantu  := Now^.Next;    Bantu  := Now^.Prev;         

  )f Bantu  <> Now  then    Begin 

      Bantu ^.Next := Bantu ;        Bantu ^.Prev := Bantu ; 

      )f Bantu  = Tail then (ead := Bantu ;        )f Bantu  = (ead then Tail := Bantu ;    End else 

  Begin 

      (ead := Nil;        Tail := Nil;        End; 

  )f Now <> Nil then        Dispose Now ;      End;

 

Procedure Update x,y : elemen_Type ;  Begin 

(45)

ALGORITMA dan STRUKTUR DATA II STACK   

V3/2009‐2010  1  Pertemuan 7 

 

Waktu       :  5 menit 

Tujuan Pembelajaran  : Mahasiswa mampu menjelaskan teknik pemrograman             menggunakan Stack. 

Substansi Materi    : Stack  Tabulasi Kegiatan Perkuliahan   

No  Kegiatan Tahap  Kegiatan Pengajar  Mahasiswa Kegiatan  Media & Alat  Waktu    Pendahuluan  . Membuka pertemuan 

. Mengulang materi pertemuan  sebelumnya 

Menyimak 

Bertanya  Papan Tulis  Menit  

  Penyajian 

Materi  .. Pengertian stack Jenis‐jenis stack  . Stack dengan Array 

 

Menyimak  Bertanya  Menjawab  Pertanyaan 

Papan Tulis  8   Menit 

  Penutup  . Menyimpulkan materi  pertemuan 

. Memberikan tugas kecil  . Menutup pertemuan 

Menyimak  Papan tulis  5  Menit 

 

STACK 

Stack  adalah  suatu  tumpukan.  Konsep  utama  dari  stack  adalah  L)FO  Last  )n  First  Out ,  yaitu  benda  yang  terakhir  masuk  ke  dalam  stack  akan  menjadi  benda  pertama  yang  dikeluarkan  dari  tumpukan.  Dalam  pascal  ada  dua  cara  penerapan  stack,  yaitu  dengan  array dan linked list. 

 

 

 

(46)

ALGORITMA dan STRUKTUR DATA II STACK   

V3/2009‐2010  2  Single Stack dengan Array 

Sesuai  dengan  sifat  stack,  maka  pengambilan/penghapusan  elemen  dalam  stack  harus  dimulai  dari  elemen  teratas.  Deklarasi  konstanta,  tipe,  dan  variable  yang  akan  dipakai  dalam penjelasan operasi‐operasi stack dengan array adalah : 

  Const 

  Max = {jumlah tumpukan}    Type 

    TipeData = {   }; 

    Stack = array [ ..Max] of TipeData;    Var 

    Top : TipeData;   

Operasi­operasi pada Single Stack dengan Array Create : Membuat stack baru yang masih kosong 

Procedure Create;     Begin 

  Top :=  ;     End; 

 

Full : Fungsi untuk memeriksa apakah stack yang ada sudah penuh  Function Full : Boolean; 

   Begin 

     Full := False; 

(47)

ALGORITMA dan STRUKTUR DATA II STACK   

V3/2009‐2010  3 

Push : Menambahkan sebuah elemen‐elemen ke dalam stack. Tidak bisa dilakukan  lagi jika stack sudah penuh. 

Procedure Push elemen:TipeData ;     Begin 

     )f not Full then       Begin 

    Top := Top+ ; { atau )nc Top  }      Stack[Top] := elemen; 

     End;     End; 

 

Empty : Fungsi untuk menentukan apakah stack kosong atau tidak.  Function Empty : Boolean; 

   Begin 

   Empty := False; 

   )f Top =   then Empty := True;     End; 

 

Pop : Mengambil elemen teratas dari stack. Stack tidak boleh kosong.  Procedure Pop elemen:TipeData ; 

   Begin 

  )f not Empty then       Begin 

       Elemen := stack[Top]; 

    Top := Top‐ ; { atau Dec Top  }       End; 

(48)

ALGORITMA dan STRUKTUR DATA II STACK   

V3/2009‐2010  4 

Clear : Mengosongkan stack   Jika top =  , maka stack dianggap kosong   Procedure Clear; 

   Begin 

  Top :=  ;     End; 

 

Double Stack dengan Array 

Merupakan  teknik  yang  dikembangkan  untuk  menghemat  pemakaian  memory  dalam  pembuatan  dua  stack  dengan  array.  )ntinya  adalah  menggunakan  sebuah  array  untuk  menampung dua stack. 

Contoh  deklarasi  konstanta,  tipe,  dan  variable  yang  akan  dipakai  dalam  operasi‐operasi  double stack array. 

  Const 

  Max = {jumlah tumpukan}    Type 

    TipeData = {   }; 

    Stack = array [ ..Max] of Byte;    Var 

    Top : array[ .. ] of Byte;   

Operasi­operasi pada Double Stack dengan Array Create : Membuat stack baru yang masih kosong 

Procedure Create;     Begin 

(49)

ALGORITMA dan STRUKTUR DATA II STACK   

V3/2009‐2010  5     End; 

 

• Full : Fungsi untuk memeriksa apakah stack yang ada sudah penuh  Function Full : Boolean; 

   Begin 

     Full := False; 

  )f top[ ]+  > = top[ ] then Full := True;     End; 

 

Push : Menambahkan sebuah elemen‐elemen ke dalam stack. Tidak bisa dilakukan  lagi jika stack sudah penuh. 

Procedure Push elemen:TipeData; NoStack : Byte ;     Begin 

     )f not Full then       Begin 

    Case NoStack of 

     : Top[ ] := Top[ ] +  ;       : Top[ ] := Top[ ] ‐ ;       Stack[Top[NoStack]] := elemen;       End; 

   End;   

 

 

(50)

ALGORITMA dan STRUKTUR DATA II STACK   

V3/2009‐2010  6 

Empty : Fungsi untuk menentukan apakah stack kosong atau tidak.  Function Empty NoStack : Byte  : Boolean; 

   Begin 

   Empty := False;     Case NoStack of 

   : if Top[ ]=  then       Empty := True; 

   : if Top[ ] = Max +   then       Empty := True; 

   End;     End;   

Pop : Mengambil elemen teratas dari stack. Stack tidak boleh kosong.  Procedure Pop var elemen:TipeData; NoStack:Byte ; 

   Begin 

  )f not Empty NoStack  then       Begin 

       Elemen := stack[Top[NoStack]];      Case NoStack of 

         : Top[ ] := Top[ ] ‐ ;           : Top[ ] := Top[ ] + ; 

    End; 

     End;     End; 

 

(51)

ALGORITMA dan STRUKTUR DATA II STACK   

V3/2009‐2010  7 

Clear : Mengosongkan stack   Jika top =  , maka stack dianggap kosong   Procedure Clear NoStack:Byte ; 

   Begin 

  Case NoStack Of         : Top[ ] :=  ;         : Top[ ]:= Max +  ;    End; 

(52)

ALGORITMA dan STRUKTUR DATA II STACK   

V3/2009‐2010  1 

Pertemuan 8   

Waktu       :  5 menit 

Tujuan Pembelajaran  : Mahasiswa mampu menjelaskan teknik pemrograman  

          menggunakan Stack. 

Substansi Materi    : Stack 

Tabulasi Kegiatan Perkuliahan   

No  Tahap 

Kegiatan  Kegiatan Pengajar 

Kegiatan  Mahasiswa 

Media & 

Alat  Waktu 

  Pendahuluan  . Membuka pertemuan 

. Mengulang materi pertemuan 

sebelumnya 

Menyimak 

Bertanya  Papan Tulis  Menit  

  Penyajian 

Materi  .. Stack dengan Linked List Deklarasi stack dengan linked  list 

. Operasi‐operasi stack dengan 

linked list   

Menyimak  Bertanya  Menjawab  Pertanyaan 

Papan Tulis  8   Menit 

  Penutup  . Menyimpulkan materi 

pertemuan 

. Memberikan tugas kecil 

. Menutup pertemuan 

Menyimak  Papan tulis  5 

Menit 

 

Stack dengan Single Linked List 

)mplementasi  stack  dengan  Single  Linked  List  hampir  sama  dengan  stack  pada  array.  Keunggulannya  terletak  pada  penggunaan  alokasi  memory  yang  dinamis  sehingga  menghindari pemborosan memory. Misalnya pada stack dengan array disediakan tempat  untuk stack berisi  5  elemen, sementara ketika dipakai oleh user hanya diisi 5  elemen, 

maka telah terjadi pemborosan memori untuk sisa   tempat elemen yang tak terpakai. 

Dengan  penggunaan  linked  list  maka  tempat  yang  disediakan  akan  sesuai  dengan  banyaknya  elemen  yang  mengisi  stack.  Karena  itu  pula  dalam  linked  list  tidak  dikenal 

(53)

ALGORITMA dan STRUKTUR DATA II STACK   

V3/2009‐2010  2 

dengan istilah Full, sebab biasanya program tidak menentukan jumlah elemen stack yang  mungkin ada. 

 

Deklarasi tipe, dan variable yang akan dipakai dalam penjelasan operasi stack. 

  Type 

    TipeData = Byte; 

    Point = ^Simpul; 

    Simpul = record 

      )si : TipeData; 

      Next : Point; 

    End; 

  Var 

    Top : Point; 

 

Operasi­operasi pada Stack dengan Single Linked List 

Create : Membuat stack baru yang masih kosong 

Procedure Create;     Begin 

  Top := nil; 

   End;   

Empty : Fungsi untuk menentukan apakah stack yang ada masih kosong atau tidak. 

Function Empty : Boolean;     Empty := False; 

(54)

ALGORITMA dan STRUKTUR DATA II STACK   

V3/2009‐2010  3 

     Empty := True; 

End;   

Push : Memasukan elemen baru ke dalam stack 

Procedure Push elemen:TipeData ;  Var Now : Point; 

   Begin 

  New Now ; 

  Now^.isi := elemen; 

  )f empty then 

     Now^.next := nil; 

  Else 

     Now^.next := top; 

  Top:= Now; 

   End;   

Pop : Mengambil elemen teratas dari stack.  

Procedure Pop elemen:TipeData ;     Var 

  Now : Point; 

  Begin 

  )f not Empty then 

     Begin 

       Elemen := Now^.isi; 

    Now := Top; 

(55)

ALGORITMA dan STRUKTUR DATA II STACK   

V3/2009‐2010  4 

    Dipose Now ; 

     End; 

   End;   

Clear : Mengosongkan stack   Jika top =  , maka stack dianggap kosong  

Procedure Clear;  Var 

   Trash = TipeData;     Begin 

  While not empty do Pop  Trash ; 

(56)

ALGORITMA dan STRUKTUR DATA II QUEUE   

V3/2009‐2010  1  Pertemuan 9 

 

Waktu       :   menit 

Tujuan Pembelajaran  : Mahasiswa mampu menjelaskan teknik pemrograman             menggunakan Queue. 

Substansi Materi    : Queue  Tabulasi Kegiatan Perkuliahan   

No  Tahap 

Kegiatan  Kegiatan Pengajar 

Kegiatan 

Mahasiswa  Media & Alat  Waktu    Pendahuluan  . Membuka pertemuan 

. Mengulang materi pertemuan  sebelumnya 

Menyimak  Bertanya 

Papan Tulis   Menit

  Penyajian 

Materi  . . Queue Queue dengan array 

. Queue dengan circular array 

Menyimak  Bertanya  Menjawab  Pertanyaan 

Papan Tulis   Menit

  Penutup  . Menyimpulkan materi pertemuan  . Memberikan tugas kecil 

. Menutup pertemuan 

Menyimak  Papan tulis   Menit

 

QUEUE / ANTRIAN 

Secara  harfiah  queue  dapat  diartikan  sebagai  antrian.  Queue  merupakan  kumpulan  data  dengan penambahan data hanya melalui satu sisi, yaitu belakang  tail  dan penghapusan  data hanya melalui sisi depan  head . Berbeda dengan stack yang bersifat L)FO maka queue  bersifat  F)FO First  )n  First  Out ,  yaitu  data  yang  pertama  masuk  akan  keluar  terlebih  dahulu dan data yang terakhir masuk akan keluar terakhir. Berikut ini adalah gambaran  struktur data queue.  

 

(57)

ALGORITMA dan STRUKTUR DATA II QUEUE   

V3/2009‐2010  2   

Gambar  . )lustrasi Queue   

 

 

Gambar  . )lustrasi Queue   

Elemen  yang  pertama  kali  masuk  ke  dalam  queue  disebut  elemen  depan  front/head  of  queue ,  sedangkan  elemen  yang  terakhir  kali  masuk  ke  queue  disebut  elemen  belakang  rear/tail of queue . Perbedaan antara stack dan queue terdapat pada aturan penambahan  dan  penghapusan  elemen.  Pada  stack,  operasi  penambahan  dan  penghapusan  elemen  dilakukan di satu ujung. Elemen yang terakhir kali dimasukkan akan berada paling dekat  dengan  ujung  atau  dianggap  paling  atas  sehingga  pada  operasi  penghapusan,  elemen  teratas tersebut akan dihapus paling awal, sifat demikian dikenal dengan L)FO. Pada queue,  operasi tersebut dilakukan di tempat yang berbeda. Penambahan elemen selalu dilakukan  melalui salah satu ujung, menempati posisi di belakang elemen‐elemen yang sudah masuk  sebelumnya  atau  menjadi  elemen  paling  belakang.  Sedangkan  penghapusan  elemen  dilakukan di ujung yang berbeda, yaitu pada posisi elemen yang  masuk paling awal atau  elemen terdepan. Sifat yang demikian dikenal dengan F)FO. 

[image:57.612.73.506.80.235.2]
(58)

ALGORITMA dan STRUKTUR DATA II QUEUE   

V3/2009‐2010  3  Operasi‐operasi standar pada queue adalah: 

. membuat queue atau inisialisasi. 

. mengecek apakah queue penuh. 

. mengecek apakah queue kosong. 

. memasukkan elemen ke dalam queue atau )nQueue  )nsert Queue . 

. Menghapus elemen queue atau DeQueue  Delete Queue . 

 

Implementasi Queue dengan Linear Array 

Disebut juga queue dengan model fisik, yaitu bagian depan queue selalu menempati posisi  pertama  array.  Queue  dengan  linear  array  secara  umum  dapat  dideklarasikan  sebagai  berikut: 

 

Const 

  MaxQueue = {jumlah};  Type 

  TypeQueue = byte;  Var 

  Queue : Array[ ..MaxQueue] of TypeQueuel    (ead, Tail   : Byte; 

 

 

 

(59)

ALGORITMA dan STRUKTUR DATA II QUEUE   

V3/2009‐2010  4  Operasi‐operasi queue dengan linear array: 

. Create 

Procedure create berguna untuk menciptakan queue yang baru dan kosong yaitu  dengan cara memberikan nilai awal  head  dan nilai akhir  tail  dengan nol  . Nol  menunjukan bahwa queue masih kosong. 

  Procedure Create;    Begin 

    (ead :=  ; Tail :=  ;    End; 

 

. Empty 

Function empty berguna untuk mengecek apakah queue masih kosong atau sudah  berisi data. (al ini dilakukan dengan mengecek apakah tail bernilai nol atau tidak,  jika ya maka kosong. 

  Function Empty : Boolean;    Begin 

    )f Tail =   then        Empty := true 

    Else 

      Empty := False;    End; 

 

 

 

(60)

ALGORITMA dan STRUKTUR DATA II QUEUE   

V3/2009‐2010  5  . Full 

Function Full : Boolean;  Begin 

  )f Tail = MaxQueue then      Full := true    Else 

    Full := False  End; 

 

. EnQueue 

Procedure EnQueue berguna untuk memasukkan   elemen ke dalam queue. 

  Procedure Enqueue Elemen : Byte ;    Begin 

    )f Empty then 

    Begin 

      (ead :=  ;        Tail :=  ; 

      Queue[head] := Elemen; 

    End 

    Else 

    )f Not Full then 

    Begin 

      )nc Tail ; 

      Queue[tail] := Elemen; 

    End; 

(61)

ALGORITMA dan STRUKTUR DATA II QUEUE   

V3/2009‐2010  6  . DeQueue 

Procedure  DeQueue  berguna  untuk  mengambil    elemen  dari  Queue,  operasi  ini  sering  disebut  juga  SERVE.  (al  ini  dilakukan  dengan  cara  memindahkan  semua  elemen satu langkah ke posisi di depannya, sehingga otomatis elemen yang paling  depan akan tertimpa dengan elemen yang terletak dibelakangnya. 

  Procedure DeQueue;    Var ) : Byte; 

  Begin 

  )f Not Empty then 

    Begin 

    For ) := (ead to Tail‐  do        Queue[)] := Queue[)+ ];        Dec Tail ; 

    End; 

  End;   

. Clear 

Procedure  clear  berguna  untuk  menghapus  semua  elemen  dalam  queue  dengan  jalan  mengeluarkan  semua  elemen  tersebut  satu  per  satu  sampai  kosong  dengan  memanfaatkan procedure DeQueue. 

  Procedure Clear;    Begin 

    While Not Empty then 

      DeQueue; 

(62)

ALGORITMA dan STRUKTUR DATA II QUEUE   

V3/2009‐2010  7  Implementasi Queue dengan Circular Array 

Salah  satu  variasi  array  adalah  array  melingkar  circular  array ,  artinya  array  dapat  diakses  mulai  dari  sembarang  indeks  indeks  awal   ke  arah  indeks  terakhir  maksimum  array ,  lalu  memutar  ke  indeks  pertama  hingga  kembali  ke  indeks  awal.  Circular  array  adalah array yang dibuat 

Gambar

Gambar �. Struktur blok program beserta procedure tanpa parameter 
Gambar �. Struktur blok program beserta procedure dengan parameter 
Gambar �. Blok program serta function tanpa parameter 
Gambar �. Struktur blok program beserta function dengan parameter 
+7

Referensi

Dokumen terkait

Gejala fisik maupun uji tes darah masukan dari user akan diolah dalam proses diagnosa menjadi hipotesa penyakit yang diderita menggunakan nilai certainty

02 Urusan Wajib Bukan Pelayanan Dasar Pemberdayaan Perempuan dan Perlindungan Anak. Organisasi

Jika terdapat bukti objektif bahwa kerugian penurunan nilai telah terjadi atas pinjaman yang diberikan dan piutang atau investasi dimiliki hingga jatuh tempo yang dicatat

Pada saat Peraturan Kepala Badan ini mulai berlaku, Pangan Olahan yang telah mendapatkan izin edar wajib menyesuaikan dengan Peraturan Kepala Badan ini paling lama 24

Kenaikan indeks harga yang dibayar petani terjadi diakibatkan kenaikan indeks harga pada subkelompok biaya produksi dan penambahan barang modal (BPPBM) sebesar 0,81

Serangan akut asma dapat terjadi karena gagal tatalaksana jangka panjang asma kronis atau dirangsang oleh pencetus asma seperti infeksi saluran nafas, aktivitas fisik,

Yakni jumlah panas yang dibutuhkan untuk menaikkan suhu satu unit volume atau massa tanah (kal/cm 3 / o C, kal/g/ o C).Untuk tanah mineral lembab, kapasitas panas bergantung pada

besarnya pengaruh antara Kemampuan verbal, Kemampuan berhitung dan Motivasi Belajar terhadap hasil belajar akuntansi siswa kelas XI SMA Negeri 7 Semarang 2010/2011 secara