Struktur Data & Algoritma Suryana Setiawan, Ruli Manurung & Ade Azurat (acknowledgments: Denny) ‏ 1 Fasilkom UI SUR – HMM – AAFasilkom UI - IKI20100/ IKI80110P.

Slides:



Advertisements
Presentasi serupa
EXCEPTION HANDLING.
Advertisements

Pemrograman Berorientasi Objek (Project)
Pertemuan 5 Struktur Data
Praktikum Bahasa Pemrograman
LINKED LIST.
Dictionary (Icomparable dan IComparer) Eka, Erick, Reddy © Sekolah Tinggi Teknik Surabaya 1.
Oleh : Sukma Murdani, S.Kom. SILABUS PENDAHULUAN Pengenalan OOP Pengenalan JAVA OOP (Object Oriented Programming) JAVA Class, Java Interface Encapsulation.
Kompetensi : -Mahasiswa mampu menggunakan rutin yang ada dalam bahasa C++ menggunakan STL - Memahami “list” & aplikasinya #8 17 MEI 2013 (Kompetensi.
Java array.
Struktur Data & Algoritma Suryana Setiawan, Ruli Manurung & Ade Azurat (acknowledgments: Denny) ‏ 1 Fasilkom UI SUR – HMM – AAFasilkom UI - IKI20100/ IKI80110P.
Modul 1- Review Java.
Implementasi Binary Tree
Queue.
Pemrogramman Terstruktur
SLIDE OTOMATIS PINDAH DALAM WAKTU 4-5 MENIT. A:kiriB:kanan Deklarasikan sebuah variabel dengan nama ‘isi’ yang mempunyai type array of double dengan ukuran.
Quiz struktur data Genap 2013.
Ruli Manurung & Ade Azurat (acknowledgments: Denny, Suryana Setiawan) ‏ 1 Fasilkom UI Ruli Manurung & Ade AzuratFasilkom UI - IKI20100 IKI 20100: Struktur.
Algoritma dan Struktur Data
STACK (Tumpukan).
Struktur Data (Data Structure) – IS 2313
Pemrograman Berbasis Obyek Oleh Tita Karlita
QUEUE (antrian).
STRUKTUR DATA (4) Array Stack(Tumpukkan) dan Queue (Antrian)
Array, Class, Obyek, Method danConstructor.
Queue.
Pertemuan 8 Pemrograman Berbasis Obyek Oleh Tita Karlita
Algoritma dan Struktur Data
Mendapatkan Input dari Keyboard
Variabel, Method & Constructor Oleh : Nur Hayatin, S.ST Teknik Informatika – UMM 2011.
- PERTEMUAN 9 - BERBAGAI KELAS UTILITAS DI JAVA
STACK.
Diberikan pada Kuliah Sela Teknik Informatika - Universitas Muhammadiyah Malang Tahun 2011.
Struktur Data List Linear : Linked List (Double Linkedlist)
ADT Tree 2007/2008 – Ganjil – Minggu 8.
Implementasi ADT: Linked - List
Linear Data Structures (Queue)
Abstract Data Types dan Java Collections API
Linear Data Structures (Stack)
Abstract Data Type.
Struktur Data & Algoritma Suryana Setiawan, Ruli Manurung & Ade Azurat (acknowledgments: Denny) ‏ 1 Fasilkom UI SUR – HMM – AAFasilkom UI - IKI20100/ IKI80110P.
Abstract Data Type (C++ and Java)
Struktur Data List Linear : Linked List (Single Linkedlist)
Pemrograman Berorientasi Obyek Lanjut (IT251)
IKI 20100: Struktur Data & Algoritma Ruli Manurung & Ade Azurat (acknowledgments: Denny, Suryana Setiawan) ‏ 1 Fasilkom UI Ruli Manurung & Ade AzuratFasilkom.
Pertemuan 5 STACK & QUEUE
Apakah Stack itu ?. Apakah Stack itu ? Pengertian STACK Secara sederhana diartikan dengan : sebagai tumpukan dari benda sekumpulan data yang seolah-olah.
Pertemuan 7 stack jual [Valdo] Lunatik Chubby Stylus.
IKI 20100: Struktur Data & Algoritma Ruli Manurung & Ade Azurat (acknowledgments: Denny, Suryana Setiawan) 1 Fasilkom UI Ruli Manurung & Ade AzuratFasilkom.
03 Elemen Dasar Bahasa Java
STACK.
Algoritma dan Struktur Data
KELAS GENERIK.
Pemrograman Visual I Outline: ARRAY Array multidimensi
Stack (Tumpukan) Pertemuan 4 Season 1
Defri Kurniawan ADT STACK Defri Kurniawan
Abstract Data Type (ADT) and Stack Array
STRUKTUR DATA QUIZ.
Package dan package standard java
Fondasi Pemrograman & Struktur Data
STRUKTUR DATA – Pertemuan 6
Struktur Organisasi Data 2
Kelas-kelas Dasar di Java
Struktur Data Khoiriya Latifa, M.Kom.
TEAM 1 Cut Hayatul Wardani ( ) Saputri Phonna ( ) Azhary (140502)
Standard Template Library STL
Pemrograman Berorientasi Object
STACK / TUMPUKAN Struktur Data.
Package dan package standard java
Konsep Bahasa Pemrograman II Array Lanjutan
TIF 4201 Algoritma Dan Struktur Data Abstract Data Type
Transcript presentasi:

Struktur Data & Algoritma Suryana Setiawan, Ruli Manurung & Ade Azurat (acknowledgments: Denny) ‏ 1 Fasilkom UI SUR – HMM – AAFasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2008/2009 Abstract Data Types dan Java Collections API

2 SUR – HMM – AAFasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2008/2009 Abstract Data Type (ADT) adalah... Spesifikasi dari sekumpulan data termasuk operasi yang dapat dilakukan pada data tersebut. (Wikipedia) Sekumpulan data dan operasi terhadap data tersebut yang definisi-nya tidak bergantung pada implementasi tertentu. (/

3 SUR – HMM – AAFasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2008/2009 Interface Spesifikasi Abstract Data Type biasa disebut sebagai interface. Interface menyatakan apa yang dapat dilihat dan digunakan oleh programmer. Dalam Java, hal tersebut dinyatakan sebagai public method. Operasi-operasi yang dapat dilakukan pada abstract data type dituliskan dalam interface dan dinyatakan public.

4 SUR – HMM – AAFasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2008/2009 Pemisahan interface dengan implementasi Pengguna dari sebuah abstract data type hanya perlu memikirkan dan mempelajari interface yang diberikan tanpa perlu mengetahui banyak bagaimana implementasi dilakukan. (prinsip: enkapsulasi) Implementasi dapat saja berubah namun interface tetap. Dengan kata lain, implementasi dari sebuah abstract data type dapat saja berbeda-beda namun selama masih mengikuti interface yang diberikan maka program yang menggunakan abstract data type tersebut tidak akan terpengaruh.

5 SUR – HMM – AAFasilkom UI - IKI20100/ IKI80110P Struktur data = container Sebuah struktur data dapat dipandang sebagai tempat penyimpanan benda (container). Beberapa hal yang dapat dilakukan: Menaruh benda Mengambil benda Mencari benda tertentu Mengosongkannya (atau periksa apakah kosong) ‏ Container Data Contoh Interface struktur data : void add(Benda x); void remove(Benda x); Benda access(Benda x); void makeEmpty(); boolean isEmpty(); Contoh Interface struktur data : void add(Benda x); void remove(Benda x); Benda access(Benda x); void makeEmpty(); boolean isEmpty();

6 SUR – HMM – AAFasilkom UI - IKI20100/ IKI80110P ADT: List Sebuah List adalah kumpulan benda di mana setiap benda memiliki posisi. Setiap benda dalam List dapat diakses melalui indeks-nya. Contoh paling gampang: array! 1234 Indeks Contoh Interface list : void insert(int indeks, Benda x); void append(Benda x); void remove(int indeks); void remove(Benda x); Benda get(int indeks); Contoh Interface list : void insert(int indeks, Benda x); void append(Benda x); void remove(int indeks); void remove(Benda x); Benda get(int indeks);

7 SUR – HMM – AAFasilkom UI - IKI20100/ IKI80110P ADT: Stack Sebuah Stack adalah kumpulan benda di mana hanya benda yang most recently inserted dapat diakses. Bayangkan setumpuk koran. Benda yang paling terakhir ditambahkan ditaruh di atas tumpukan (top). Operasi pada Stack membutuhkan waktu konstan (O(1)). Least recent Most recent pushpop,top Contoh Interface stack : void push(Benda x); Benda pop(); Benda top(); Contoh Interface stack : void push(Benda x); Benda pop(); Benda top();

8 SUR – HMM – AAFasilkom UI - IKI20100/ IKI80110P ADT: Queue Sebuah Queue adalah kumpulan benda di mana hanya benda yang least recently inserted dapat diakses. Bayangkan antrian printer job pada jaringan. Benda yang paling awal ditambahkan berada di depan antrian (front). Operasi pada Queue membutuhkan waktu konstan (O(1)). enqueue Most recentLeast recent dequeue getFront Contoh Interface queue : void enqueue(Benda x); Benda dequeue(); Benda getFront(); Contoh Interface queue : void enqueue(Benda x); Benda dequeue(); Benda getFront();

9 SUR – HMM – AAFasilkom UI - IKI20100/ IKI80110P ADT: Set Set adalah struktur data yang tidak mengizinkan duplikasi data. Bandingkan dengan struktur data lain yang mengizinkan kita menyimpan dua data yang sama. Bayangkan peserta kuliah ini: Setiap peserta unik, tidak ada yang terdaftar dua kali! tambah Contoh Interface set : void add(Benda x); void remove(Benda x); boolean isMember(Benda x); Contoh Interface set : void add(Benda x); void remove(Benda x); boolean isMember(Benda x);

10 SUR – HMM – AAFasilkom UI - IKI20100/ IKI80110P ADT: Map Map adalah struktur data yang berisi sekumpulan pasangan nama (keys) dan nilai (values) dari nama tersebut. Nama (Keys) harus unik, tapi nilai (values) tidak. Bayangkan basis-data yang berisi informasi peserta kuliah. Apa yang menjadi “nama” (keys)? AbdulBettyChairulDian Nama: Nilai: Contoh Interface sebuah Map : void put(Kunci id, Nilai x); void remove(Kunci id); Nilai get(Kunci id); Contoh Interface sebuah Map : void put(Kunci id, Nilai x); void remove(Kunci id); Nilai get(Kunci id);

11 SUR – HMM – AAFasilkom UI - IKI20100/ IKI80110P ADT: Priority Queue Priority Queue adalah struktur data queue yang tiap elemen data dapat miliki nilai prioritas. Data dengan nilai prioritas tertinggilah yang dapat diakses terlebih dulu. Bayangkan sebuah antrian pada printer jaringan. Misalkan ada sebuah permintaan cetak untuk 100 halaman hanya beberapa detik lebih awal dari permintaan cetak selembar halaman. Highest priority insertdeleteMin findMin Contoh Interface sebuah Priority Queue : void insert(Benda x); (Menambahkan) void deleteMin(); (menghapus) Benda findMin(); (meng-akses) Contoh Interface sebuah Priority Queue : void insert(Benda x); (Menambahkan) void deleteMin(); (menghapus) Benda findMin(); (meng-akses)

12 SUR – HMM – AAFasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2008/2009 Java Collection API

13 SUR – HMM – AAFasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2008/2009 What is Collections? collection — di sebagian literatur disebut sebagai: container Dalam bahasa pemrograman Java, collection adalah sebuah object yang mengelompokkan beberapa element dalam satu unit. Collections digunakan untuk menyimpan, mengambil, memanipulasi dan untuk menghubungkan/menggabungkan data.

14 SUR – HMM – AAFasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2008/2009 API vs doing it yourself  Jika anda menggunakan Java collections framework, programmer lain dapat lebih mudah mengadaptasi program anda.  Jika anda membuat implementasi sendiri, maka programmer lain belum tentu dapat dengan mudah mempelajari program anda.  Namun demikian, sebagai mahasiswa/i ilmu komputer, perlu memahami bagaimana data tersusun dalam memory dan perlu memahami konsep-konsep apa yang mendasarinya.  Tidak menutup kemungkinan untuk meng- extend/meng-implement Collections

15 SUR – HMM – AAFasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2008/2009 Interfaces Java collections framework didasari pada sekumpulan interface yang mendikte metode-metode apa saja yang harus diimplementasikan dan membantu standarisasi penggunaan. Hubungan antara beberapa interface:

16 SUR – HMM – AAFasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2008/2009 The Collection interface  Interface Collection adalah interface utama yang menetapkan operasi-operasi dasar, antara lain: int size(); boolean isEmpty(); boolean contains(Object element); boolean add(E element); boolean remove(Object element); Iterator iterator();.....  E menyatakan tipe parameter.

17 SUR – HMM – AAFasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2008/2009 Primitive types  Collections adalah kumpulan dari referensi terhadap object dan tidak bisa berisi tipe primitif.  jika membutuhkan kumpulan data bertipe primitif misalnya characters, kita tidak bisa memparameterisasi collection dengan tipe char. kita harus menggunakan kelas: Character  Namun Java menyediakan fasilitas: boxing and unboxing  Jika hendak meletakkan data bertipe char dalam sebuah collection bertipe Character, maka Java akan secara otomatis melakukan “boxing” (membungkus) char dalam kelas Character  Jika hendak mendapatkan data char tersebut, Java akan secara automatis melakukan “unbox” dan memberikan data dalam tipe char.

18 SUR – HMM – AAFasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2008/2009 Collections in use import java.util.*; public class Example{ private List list public List getList(){ return list; } Example() { list = new ArrayList (); list.add(new String("Hello world!")); list.add(new String("Good bye!")); } import java.util.*; public class Example{ private List list public List getList(){ return list; } Example() { list = new ArrayList (); list.add(new String("Hello world!")); list.add(new String("Good bye!")); }

19 SUR – HMM – AAFasilkom UI - IKI20100/ IKI80110P Semester Ganjil – 2008/2009 public void printList() { for (Object s:list) { System.out.println(s); } public static void main(String argv[]) { Example e = new Example(); e.printList(); Collections.sort(e.getList()); e.printList(); } public void printList() { for (Object s:list) { System.out.println(s); } public static void main(String argv[]) { Example e = new Example(); e.printList(); Collections.sort(e.getList()); e.printList(); }

20 SUR – HMM – AAFasilkom UI - IKI20100/ IKI80110P Generic Collections

21 SUR – HMM – AAFasilkom UI - IKI20100/ IKI80110P Kebutuhan akan generic programming Terjadi run-time error! Apa yang salah dengan program berikut: void addStuffToCollection(Collection c){ c.add(new String("Hello world!")); c.add(new String("Good bye!")); c.add(new Integer(95)); printCollection(c); } void printCollection(Collection c){ Iterator i = c.iterator(); while(i.hasNext()){ String item = (String) i.next(); System.out.println("Item: "+item); } Apa yang salah dengan program berikut: void addStuffToCollection(Collection c){ c.add(new String("Hello world!")); c.add(new String("Good bye!")); c.add(new Integer(95)); printCollection(c); } void printCollection(Collection c){ Iterator i = c.iterator(); while(i.hasNext()){ String item = (String) i.next(); System.out.println("Item: "+item); }

22 SUR – HMM – AAFasilkom UI - IKI20100/ IKI80110P Pembatasan tipe collection Sebelum Java 5.0, tidak ada cara untuk menetapkan tipe elemen dari sebuah collection. Sehingga, kita harus melakukan variabel casting di berbagai tempat. Cumbersome: melakukan casting saat tidak diperlukan. Error-prone: dapat mengakibatkan run-time exception. Generics adalah sebuah konsep yang dapat digunakan untuk membatasi tipe elemen sebuah collection. Pada Java versi > 5.0, Collections adalah generic classes yang dapat menerima parameter tipe yang menentukan tipe dari elemennya.

23 SUR – HMM – AAFasilkom UI - IKI20100/ IKI80110P Instantiasi kelas generic Sebuah kelas collection generic dapat diinstantiasi melalui parameter tipe. Kita dapat saja membuat kelas generic sendiri dan menginstantiasi dengan berbagai tipe. List myList = new ArrayList ();

24 SUR – HMM – AAFasilkom UI - IKI20100/ IKI80110P Kebutuhan akan generic programming Dapat terdeteksi ketika compile-time ! Apa yang salah dengan program berikut: void addStuffToCollection(Collection c){ c.add(new String("Hello world!")); c.add(new String("Good bye!")); c.add(new Integer(95)); printCollection(c); } void printCollection(Collection c){ Iterator i = c.iterator(); while(i.hasNext()){ String item = i.next(); System.out.println("Item: "+item); } Apa yang salah dengan program berikut: void addStuffToCollection(Collection c){ c.add(new String("Hello world!")); c.add(new String("Good bye!")); c.add(new Integer(95)); printCollection(c); } void printCollection(Collection c){ Iterator i = c.iterator(); while(i.hasNext()){ String item = i.next(); System.out.println("Item: "+item); }

25 SUR – HMM – AAFasilkom UI - IKI20100/ IKI80110P Iterator Perhatikan kedua contoh sebelumnya menggunakan kelas Iterator: Iterator i = c.iterator(); Iterator i = c.iterator(); Hal yang umum dilakukan pada collection adalah membaca seluruh elemen. i adalah objek iterator yang mengendalikan iterasi pembacaan data pada collection c. Secara umum Iterator bekerja sebagai berikut: Mulai dengan mengatur iterator pada elemen pertama pada collection. Satu-persatu berlanjut pada elemen selanjutnya Berakhir ketika tidak ada lagi elemen pada collection yang belum dibaca.

26 SUR – HMM – AAFasilkom UI - IKI20100/ IKI80110P Ilustrasi: Iterator Iterator Collection User (program yang mengakses data)

27 SUR – HMM – AAFasilkom UI - IKI20100/ IKI80110P Contoh lain penggunaan iterator: void printCollection(Collection c){ Iterator itr = c.iterator(); for(itr = v.first(); itr.isValid(); itr.advance()) System.out.println(itr.getData()); } void printCollection(Collection c){ Iterator itr = c.iterator(); for(itr = v.first(); itr.isValid(); itr.advance()) System.out.println(itr.getData()); }