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
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
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
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
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.
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
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]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 ;
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]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]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 :
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]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.
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
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
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
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
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
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
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 ;
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 ;
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
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}
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.
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;
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
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.
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
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;
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
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
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;
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;
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.
ALGORITMA dan STRUKTUR DATA II DOUBLE LINKED LIST
V3/2009‐2010 2
Aku
Belajar
Pointer
………
………
Gambar . )lustrasi Double Linked List
Operasioperasi 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]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;
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;
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;
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
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.
Operasioperasi 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;
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;
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;
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;
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
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.
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;
Operasioperasi 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;
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;
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;
Operasioperasi pada Double Stack dengan Array • Create : Membuat stack baru yang masih kosong
Procedure Create; Begin
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;
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;
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;
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
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;
Operasioperasi 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;
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;
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 ;
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.
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]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;
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;
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;
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;
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