Teknik Pemrograman Lanjut

Slides:



Advertisements
Presentasi serupa
STRUKTUR DATA (10) tree manipulation
Advertisements

Queue (Antrian).
Single linked list.
LINKED LIST.
LINKED LIST.
STACK (Tumpukan) Tumpukan Koin Tumpukan Kotak.
LINKED LIST Single Linked List.
Flow Control & Exception Handling
Struktur Data & Algoritma Suryana Setiawan, Ruli Manurung & Ade Azurat (acknowledgments: Denny) ‏ 1 Fasilkom UI SUR – HMM – AAFasilkom UI - IKI20100/ IKI80110P.
Struktur Data & Algoritma Suryana Setiawan, Ruli Manurung & Ade Azurat (acknowledgments: Denny) ‏ 1 Fasilkom UI SUR – HMM – AAFasilkom UI - IKI20100/ IKI80110P.
Implementasi Binary Tree
Queue.
STACK (TUMPUKAN).
Algoritma dan Struktur Data
STACK.
Queue.
Queue.
STRUKTUR DATA (6) single linked list non circular
Struktur Data Stack.
Queue.
PELATIHAN JAVA FUNDAMENTAL
Struktur Data List Linear : Linked List (Double Linkedlist)
Algorithm and Data Structures.
Algoritma dan Struktur Data
Abstract Data Types dan Java Collections API
Linear Data Structures (Stack)
Algoritma dan Struktur Data
Abstract Data Type (C++ and Java)
Struktur Data List Linear : Linked List (Single Linkedlist)
Pemrograman Berorientasi Obyek Lanjut (IT251)
STRUKTUR DATA tree manipulation
IKI 20100: Struktur Data & Algoritma Ruli Manurung & Ade Azurat (acknowledgments: Denny, Suryana Setiawan) ‏ 1 Fasilkom UI Ruli Manurung & Ade AzuratFasilkom.
Matakuliah : T0534/Struktur Data Tahun : 2005 Versi : September 2005
ANTRIAN Farid Wajdi Yusuf Pendidikan Teknik Informatika dan Komputer
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.
STACK.
Pertemuan 9 Stack dengan Linked-list
Universitas Budi Luhur
ADT DINAMIS : SINGLY LINKED LIST DAN DOUBLE LINKED LIST
Pernyataan Pertemuan 3 Season 1
Stack.
Pemrograman Visual I Outline: ARRAY Array multidimensi
Sapta Candra Miarsa,S.T.,M.T.
Stack (Tumpukan) Pertemuan 4 Season 1
STRUKTUR DATA QUIZ.
Stack Stack atau tumpukan adalah suatu stuktur data yang penting dalam pemrograman Bersifat LIFO (Last In First Out) Benda yang terakhir masuk ke dalam.
Matakuliah : T0534/Struktur Data Tahun : 2005 Versi : September 2005
Defri Kurniawan QUEUE Defri Kurniawan
Fondasi Pemrograman & Struktur Data
Linear Data Structures (Stack)
STRUKTUR DATA – Pertemuan 6
Struktur Organisasi Data 2
Kelas-kelas Dasar di Java
STACK (Tumpukan).
Stack (Tumpukan) Sumber Kepustakaan : putuputraastawa.files.wordpress.com/.../pert_5_sta...
Struktur Data Khoiriya Latifa, M.Kom.
Pertemuan 5 Review Berbagai Struktur Data
Algoritma dan Struktur Data
STACK / TUMPUKAN Struktur Data.
Stack.
STACK Yohana Nugraheni.
Algoritme dan Stuktur Data
Stack.
QUEUE (ANTRIAN) Queue atau antrian didefinisikan sebagai kumpulan dari obyek-obyek yang homogen dengan operasi penambahan elemen (Enqueue) dan pengambilan.
STACK (TUMPUKAN) Stack atau tumpukan didefinisikan sebagai kumpulan dari obyek-obyek yang homogen dengan operasi penambahan dan pengambilan elemen melalui.
STRUKTUR DATA Stack atau Tumpukan.
STACK.
TIF 4201 Algoritma Dan Struktur Data Abstract Data Type
Algoritma dan Struktur Data
Transcript presentasi:

Teknik Pemrograman Lanjut

Topik Rekursif Tipe-Tipe Data Abstract Stack Queue Sequential dan Linked Representation Java Collection

Apa yang dimaksud dengan Rekursif ? Dapat digunakan ketika inti dari masalah terjadi berulang kali Sedikit lebih efisien dari iterasi tapi lebih elegan Method-methodnya dimungkinkan untuk memanggil dirinya sendiri Data yang berada dalam method tersebut seperti argument disimpan sementara kedalam stack sampai method pemanggilnya diselesaikan

Rekursif Vs. Iterasi Iterasi Dapat digunakan pada struktur kontrol pengulangan Proses diakhiri ketika kondisi loop gagal dilaksanakan Lebih cepat Rekursif Memanggil suatu method secara berulang-ulang Menggambarkan sebuah masalah kedalam lingkup yang lebih kecil dari pengulangan itu sendiri proses yang berakhir dengan kondisi tertentu disebut permasalahan dasar yang telah tercukupi oleh suatu pembatasan kondisi Permasalahan yang mendasar merupakan kejadian yang paling kecil dari sebuah masalah Mendorong proses pelatihan pemrograman yang baik

Rekursif Vs. Iterasi Keduanya dapat memastikan pengulangan yang tak terhingga Rekursif atau Iterasi?

Factorial: Contoh Definisi Rekursif : Contoh: factorial(n) = factorial(n-1) * n, n adalah suatu integer yang bernilai positif factorial(1) = 1 Contoh: factorial(2) = factorial(1)*2 = 2 factorial(3) = factorial(2)*3 = 2*3 = 6.

Factorial: Contoh

Factorial: Contoh Kode yang menggunakan teknik iterasi : class FactorialIter { static int factorial(int n) { int result = 1; for (int i = n; i > 1; i--) { result *= i; } return result; public static void main(String args[]) { int n = Integer.parseInt(args[0]); System.out.println(factorial(n));

Factorial: Contoh Kode yang menggunakan rekursif : class FactorialRecur { static int factorial(int n) { if (n == 1) { /* Kasus utama */ return 1; } /* Definisi Rekursif; Proses terhadap dirinya sendiri */ return factorial(n-1)*n; public static void main(String args[]) { int n = Integer.parseInt(args[0]); System.out.println(factorial(n));

Tulis dalam beberapa Base : Contoh Lain Ingat: Gunakan repetitive division dan untuk menulis sisa perhitungannya Proses akan berakhir ketika sisa hasil pembagian kurang dari base yang ditetapkan 1010 = 128 16510 = A516

Tulis dalam beberapa Base : Contoh Lain Kode Iteratif : class DecToOthers { public static void main(String args[]) { int num = Integer.parseInt(args[0]); int base = Integer.parseInt(args[1]); printBase(num, base); } //bersambung...

Tulis dalam beberapa Base : Contoh Lain static void printBase(int num, int base) { int rem = 1; String digits = "0123456789abcdef"; String result = ""; while (num!=0) { rem = num%base; num = num/base; result = result.concat(digits.charAt(rem) +""); } for(int i = result.length()-1;i >= 0;i--){ System.out.print(result.charAt(i));

Tulis dalam beberapa Base : Contoh Lain Kode Rekursif: class DecToOthersRecur { static void printBase(int num, int base) { String digits = "0123456789abcdef"; /* Langkah rekursif*/ if (num >= base) { printBase(num/base, base); } /* kasus utama: num < base */ System.out.print(digits.charAt(num%base)); //bersambung...

Tulis dalam beberapa Base : Contoh Lain public static void main(String args[]) { int num=Integer.parseInt(args[0]); int base=Integer.parseInt(args[1]); printBase(num, base); }

Abstract Data Types (ADT) kumpulan dari elemen-elemen data yang disajikan dengan satu set operasi yang digambarkan pada elemen-elemen data tersebut Contoh-contoh: Stack Queue Binary trees

ADT: Stack Definisi: Aplikasi Perintah pengumpulan data secara linier yang disebut “last in, first out” (LIFO) Manipulasi data dari elemen-elemen hanya diperbolehkan pada tumpukan teratas dari stack Aplikasi Pengenalan Pola (pattern recognition) Pengkonversian antar notasi infix, postfix dan prefix

ADT: Stack Dua operasi: Analogi Push Pop Tumpukan piring-piring Memasukkan elemen pada bagian paling atas stack Pop Membuang elemen yang letaknya pada bagian paling atas stack. Analogi Tumpukan piring-piring Kasus Kumparan

ADT: Stack Ilustrasi: Kondisi untuk sebuah stack penuh: Bagian paling atas == n-1. Kondisi untuk sebuah stack kosong: Bagian paling atas == -1

ADT: Queue Definisi: Analogi: Enqueue Dequeue Memasukkan pada bagian akhir dari antrian Dequeue Menghapus elemen bagian depan dari antrian Analogi: Antrian atau sebuah barisan

ADT: Queue Ilustrasi: Kondisi untuk antrian penuh : Bagian paling Akhir == n-1 Kondisi untuk antrian kosong : Bagian paling akhir < front

Representasi sekuensial & Linked Representasi Sequensial Lebih mudah diimplementasikan dengan menggunakan array Ukuran yang tidak fleksibel kekurangan atau kelebihan space memory Representasi Linked Sedikit lebih sulit untuk diimplementasikan Fleksibel

Representasi Sequensial dari Stack Integer class SeqStack { int top = -1; /* stack kosong */ int memSpace[]; /* penyimpanan untuk integers */ int limit; /* ukuran dari memSpace */ SeqStack() { memSpace = new int[10]; limit = 10; } SeqStack(int size) { memSpace = new int[size]; limit = size; //bersambung...

Representasi Sequensial dari Stack Integer boolean push(int value) { top++; /* menguji apakah stack penuh */ if (top < limit) { memSpace[top] = value; } else { top--; return false; } return true; //bersambung...

Representasi Sequensial dari Stack Integer int pop() { int temp = -1; /* menguji apakan stack kosong */ if (top >= 0) { temp = memSpace[top]; top--; } else { return -1; } return temp; //bersambung...

Representasi Sequensial dari Stack Integer public static void main(String args[]) { SeqStack myStack = new SeqStack(3); myStack.push(1); myStack.push(2); myStack.push(3); myStack.push(4); System.out.println(myStack.pop()); }

Linked Lists Definisi: Node: Struktur Dinamis Kumpulan node-node Ukurannya Dapat tumbuh dan menyusut Kumpulan node-node Suatu node terdiri atas beberapa data dan sebuah link atau sebuah pointer ke node berikutnya pada list Node:

Linked Lists non-empty linked list dengan 3 node : Implementasi class Node : class Node { int data; /* data integer dalam node */ Node nextNode; /* node berikutnya dalam list */ }

Linked Lists Test class Node: class TestNode { public static void main(String args[]) { Node emptyList = null; /* list kosong */ /* titik head ke node pertama dalam list */ Node head = new Node(); /* inisialisasi node pertama dalam list */ head.data = 5; head.nextNode = new Node(); head.nextNode.data = 10; //bersambung...

Linked Lists /* tanda null pada akhir list */ head.nextNode.nextNode = null; /* Mencetak elemen-elemen list */ Node currNode = head; while (currNode != null) { System.out.println(currNode.data); currNode = currNode.nextNode; }

Representasi Linked dari Stack Integer class DynamicIntStack{ private IntStackNode top; //head stack class IntStackNode { //class Node int data; IntStackNode next; IntStackNode(int n) { data = n; next = null; } //bersambung...

Representasi Linked dari Stack Integer void push(int n){ /* tidak perlu diuji untuk overflow */ IntStackNode node = new IntStackNode(n); node.next = top; top = node; } //bersambung...

Representasi Linked dari Stack Integer int pop() { if (isEmpty()) { return -1; /* dapat melempar exception user-defined*/ } else { int n = top.data; top = top.next; return n; } boolean isEmpty(){ return top == null;

Representasi Linked dari Stack Integer public static void main(String args[]) { DynamicIntStack stack = new DynamicIntStack(); stack.push(5); stack.push(10); /* Mencetak elemen-elemen stack */ IntStackNode currNode = stack.top; while (currNode!=null) { System.out.println(currNode.data); currNode = currNode.next; } System.out.println(stack.pop());

Java Collections Java Collections Class-class dan interface Java built-in collection Dapat ditemukan dalam package java.util Contoh-contoh class-class collection: Stack LinkedList ArrayList HashSet TreeSet

Java Collections Interface Collection Definisi Collection: Root dari semua interface collection Tidak ada implementasi yang sifatnya built-in Contoh : Queue (J2SE 5.0) Definisi Collection: Kumpulan object-object, disebut juga elemen-elemen Memungkinkan duplikasi dan mengharuskan tidak adanya perintah yang spesifik

Java Collections Collection interface yang built-in subinterface Set Interface Collection yang tidak dipesan dan tidak ada penggandaan didalamnya Implementasi class dari Set interface : HashSet, LinkedHashSet dan TreeSet List Interface Collection yang dipesan dari elemen-elemen dimana juga diperbolehkannya penggandaan Implementasi class dari List interfaces : ArrayList, LinkedList dan Vector

Java Collections Hirarki Java Collections

Method-method Java Collection: Java 2 Platform SE v1.4.1

Method-method Java Collection: Java 2 Platform SE v1.4.1

Java Collections: LinkedList import java.util.*; class LinkedListDemo { public static void main(String args[]) { LinkedList list = new LinkedList(); list.add(new Integer(1)); list.add(new Integer(2)); list.add(new Integer(3)); System.out.println(list+",size = "+list.size()); list.addFirst(new Integer(0)); list.addLast(new Integer(4)); System.out.println(list); System.out.println(list.getFirst() + ", " + list.getLast());

Java Collections: LinkedList //lanjutan... System.out.println(list.get(2)+", "+list.get(3)); list.removeFirst(); list.removeLast(); System.out.println(list); list.remove(new Integer(1)); list.remove(3); list.set(2, "one"); }

Java Collections: ArrayList Definisi: Merupakan versi fleksibel dari array biasa Mengimplementasikan List interface Contoh: import java.util.*; class ArrayListDemo { public static void main(String args[]) { ArrayList al = new ArrayList(2); System.out.println(al+", size = "+al.size()); al.add("R"); //bersambung...

Java Collections: ArrayList al.add("U"); al.add("O"); System.out.println(al+", size = "+al.size()); al.remove("U"); ListIterator li = al.listIterator(); while (li.hasNext()) System.out.println(li.next()); Object a[] = al.toArray(); for (int i=0; i<a.length; i++) System.out.println(a[i]); }

Java Collections: HashSet Definisi: Implementasi dari Set interface menggunakan sebuah hash table Hash table Menggunakan suatu rumusan untuk menentukan dimana suatu objek disimpan Keuntungan menggunakan hash table Lebih mudah dan cepat untuk melihat lebih detail elemen-elemen yang ada

Java Collections: HashSet import java.util.*; class HashSetDemo { public static void main(String args[]) { HashSet hs = new HashSet(5, 0.5f); System.out.println(hs.add("one")); System.out.println(hs.add("two")); System.out.println(hs.add("three")); System.out.println(hs.add("four")); System.out.println(hs.add("five")); System.out.println(hs); }

Java Collections: TreeSet Definisi: sebuah implementasi dari Set interface yang menggunakan tree Memastikan bahwa yang disortir akan diurutkan secara ascending Representasi Tree

Java Collections: TreeSet import java.util.*; class TreeSetDemo { public static void main(String args[]) { TreeSet ts = new TreeSet(); ts.add("one"); ts.add("two"); ts.add("three"); ts.add("four"); System.out.println(ts); }

Kesimpulan Rekursif Type Data Abstract Definisi Rekursif Vs. Iterasi Stack Queue Representasi Sequential dan Linked

Kesimpulan Java Collections Collection Linked List ArrayList HashSet TreeSet