Fondasi Pemrograman Struktur Data Stack Queue with java























- Slides: 23
Fondasi Pemrograman & Struktur Data Stack & Queue with java API Random Generators, Simulation AER – 2011/2012 Universitas Pembangunan Jaya – SIF_TIF 1
Tujuan Pertemuan Memahami Java API untuk Stack Mampu membuat program stack dengan java API Memahami Java API untuk Queue Memahami Java API untuk Linked. List dan Linked. List Method() • Mampu membuat program queue dengan java API • Mampu membuat angka random dengan memanfaatkan java API. • • AER – 2011/2012 Universitas Pembangunan Jaya – SIF_TIF 2
Stack dengan Java API • Kita sudah mengetahui algoritma stack (tumpukan). Algoritma stack tersebut perlu diketahui terkait kebutuhan akses data yang sifatnya berupa tumpukan. • Java library telah memiliki method yang efisien, general, dan tepat untuk digunakan pada stack. • Method stack pada java library tersebut adalah: java. util. Stack; AER – 2011/2012 Universitas Pembangunan Jaya – SIF_TIF SIF 1213 - 3
Stack dengan Java API Penggunaan • Sebelum menggunakan method Stack java API, lakukan import dengan menuliskan: import java. util. Stack; • Selanjutnya buat object dengan type Stack: Stack tumpukan. Buku = new Stack(); • Selanjutnya gunakan method sesuai fungsinya Method Summary boolean empty() Tests if this stack is empty. E E E int AER – 2011/2012 peek() Looks at the object at the top of this stack without removing it from the stack. pop() Removes the object at the top of this stack and returns that object as the value of this function. push(E item) Pushes an item onto the top of this stack. search(Object o) Returns the 1 -based position where an object is on this stack. Universitas Pembangunan Jaya – SIF_TIF SIF 1213 - 4
Stack dengan Java API Penggunaan import java. util. Stack; public class stack. Of. Strings. API { public static void main(String[] args) { Stack tumpukan. Buku = new Stack(); tumpukan. Buku. push("buku 1"); tumpukan. Buku. push("buku 2"); tumpukan. Buku. push("buku 3"); System. out. println(tumpukan. Buku. search("buku 3")); System. out. println("Posisi teratas: " + tumpukan. Buku. peek()); System. out. println(tumpukan. Buku. pop() + " diangkat"); System. out. println("Posisi teratas: " + tumpukan. Buku. peek()); } } AER – 2011/2012 Untuk menambahkan item pada tumpukan Untuk mencari posisi suatu item pada tumpukan Untuk mengeluarkan item pada tumpukan teratas dari tumpukan Universitas Pembangunan Jaya – SIF_TIF SIF 1213 - 5
Stack dengan Java API Latihan Penggunaan • Buat program dengan menggunakan stack, dengan ketentuan sbb: • Program menumpukkan buku dengan urutan Buku Disain Buku HTML Buku Java Buku Algoritma Buku Database • Program menampilkan tumbukan buku sesuai urutan tumpukan (buku yg pertama diletakkan berada paling bawah, seperti contoh di atas ) • Program memfasilitasi user untuk mengambil salah satu buku dengan menuliskan judul buku yang akan diambil • Program menampilkan tumpukan buku setelah satu buku diambil user AER – 2011/2012 Tumpukan sekarang: Buku Disain Buku HTML Buku Java Buku Algoritma Buku Database Masukkan judul buku yang ingin diambil: Buku Java Tumpukan sekarang: Buku Disain Buku HTML Buku Algoritma Buku Database Universitas Pembangunan Jaya – SIF_TIF SIF 1213 - 6
Queue dengan Java API • Kita sudah mengetahui algoritma queue (antrian). Algoritma atrian tersebut perlu diketahui terkait kebutuhan akses data yang sifatnya berupa antrian. • Java library telah memiliki method yang efisien, general, dan tepat untuk digunakan pada queue. • Method queue pada java library tersebut adalah: java. util. Queue; • Untuk menggunakan method Queue juga diperlukan Linked. List, mengingat queue menggunakan Linked. List sebagai node dalam antrian. java. util. Linked. List; AER – 2011/2012 Universitas Pembangunan Jaya – SIF_TIF SIF 1213 - 7
Queue dengan Java API Penggunaan • Sebelum menggunakan method Queue java API, lakukan import dengan menuliskan: Method Summary boolean add(E e) Inserts the specified element into this queue if it is possible to do so immediately without violating capacity restrictions, returning true upon success and throwing import java. util. Queue; an Illegal. State. Exception if no space is currently available. import java. util. Linked. List E element() Retrieves, but does not remove, the head of this queue. boolean offer(E e) Inserts the specified element into this queue if it is possible to do so immediately without Queue tumpukan. Buku = new Linked. List(); violating capacity restrictions. E peek() Retrieves, but does not remove, the head of this queue, or returns null if this queue is empty. E poll() Retrieves and removes the head of this queue, or returns null if this queue is empty. E remove() Retrieves and removes the head of this queue. AER – 2011/2012 Universitas Pembangunan Jaya – SIF_TIF SIF 1213 - 8 • Selanjutnya buat object dengan type Queue: • Selanjutnya gunakan method sesuai fungsinya
Queue dengan Java API Penggunaan import java. util. Queue; import java. util. Linked. List; Untuk menambahkan item pada antrian public class queue. API { public static void main(String[] args) { Queue antrian = new Linked. List(); System. out. println(antrian. add("budi")); antrian. add("ani"); antrian. add("Rani"); antrian. add("Stella"); antrian. add("Martha"); System. out. println("Posisi Depan: " + antrian. element()); System. out. println(antrian. remove() + " Selesai. "); System. out. println("Posisi Depan: " + antrian. element()); } } AER – 2011/2012 Untuk membaca item head pada antrian. Untuk mengeluarkan item head dari antrian. Universitas Pembangunan Jaya – SIF_TIF SIF 1213 - 9
Linked. List API • Sebelum menggunakan method Linked. List java API, lakukan import dengan menuliskan: import java. util. Linked. List • Selanjutnya buat object dengan type Queue: Linked. List<Integer> the. List = new Linked. List<Integer>( ); • Selanjutnya gunakan method sesuai fungsinya AER – 2011/2012 Universitas Pembangunan Jaya – SIF_TIF SIF 1213 - 10
Linked. List Method() Method Summary void add(int index, Object element) Inserts the specified element at the specified position in this list. boolean add(Object o) Appends the specified element to the end of this list. boolean add. All(Collection c) Appends all of the elements in the specified collection to the end of this list, in the order that they are returned by the specified collection's iterator. boolean add. All(int index, Collection c) Inserts all of the elements in the specified collection into this list, starting at the specified position. void add. First(Object o) Inserts the given element at the beginning of this list. void add. Last(Object o) Appends the given element to the end of this list. void clear() Removes all of the elements from this list. Object clone() Returns a shallow copy of this Linked. List. boolean contains(Object o) Returns true if this list contains the specified element. Object get(int index) Returns the element at the specified position in this list. Object get. First() Returns the first element in this list. Object get. Last() Returns the last element in this list. AER – 2011/2012 intindex. Of(Object o) Returns the index in this list of the first occurrence of the specified element, or -1 if the List does not contain this element. intlast. Index. Of(Object o) Returns the index in this list of the last occurrence of the specified element, or -1 if the list does not contain this element. List. Iteratorlist. Iterator(int index) Returns a list-iterator of the elements in this list (in proper sequence), starting at the specified position in the list. Objectremove(int index) Removes the element at the specified position in this list. booleanremove(Object o) Removes the first occurrence of the specified element in this list. Objectremove. First() Removes and returns the first element from this list. Objectremove. Last() Removes and returns the last element from this list. Objectset(int index, Object element) Replaces the element at the specified position in this list with the specified element. intsize() Returns the number of elements in this list. Object[]to. Array() Returns an array containing all of the elements in this list in the correct order. Object[]to. Array(Object[] a) Returns an array containing all of the elements in this list in the correct order; the runtime type of the returned array is that of the specified array. Universitas Pembangunan Jaya – SIF_TIF SIF 1213 - 11
Random Numbers • Random numbers digunakan dan sangat diperlukan dalam beberapa penggunaan, diantaranya: – cryptography, – simulation, and – program testing. • Angka yang dihasilkan oleh proses random oleh komputer sangat tergantung pada algoritma yang digunakan untuk menghasilkan angka-angka tersebut dan tidak random secara penuh (pseudorandom). AER – 2011/2012 Universitas Pembangunan Jaya – SIF_TIF SIF 1213 - 12
Random Numbers Method Summary protected int next(int bits) Generates the next pseudorandom number. boolean next. Boolean() Returns the next pseudorandom, uniformly distributed boolean value from this random number generator's sequence. void next. Bytes(byte[] bytes) Generates random bytes and places them into a user-supplied byte array. double next. Double() Returns the next pseudorandom, uniformly distributed double value between 0. 0 and 1. 0 from this random number generator's sequence. float next. Float() Returns the next pseudorandom, uniformly distributed float value between 0. 0 and 1. 0 from this random number generator's sequence. AER – 2011/2012 Universitas Pembangunan Jaya – SIF_TIF SIF 1213 - 13
Random Numbers Method Summary double next. Gaussian() Returns the next pseudorandom, Gaussian ("normally") distributed double value with mean 0. 0 and standard deviation 1. 0 from this random number generator's sequence. int next. Int() Returns the next pseudorandom, uniformly distributed int value from this random number generator's sequence. int next. Int(int n) Returns a pseudorandom, uniformly distributed int value between 0 (inclusive) and the specified value (exclusive), drawn from this random number generator's sequence. long next. Long() Returns the next pseudorandom, uniformly distributed long value from this random number generator's sequence. void set. Seed(long seed) Sets the seed of this random number generator using a single long seed. AER – 2011/2012 Universitas Pembangunan Jaya – SIF_TIF SIF 1213 - 14
Random Numbers Contoh import java. util. Random; public class random 1 { public static void main(String[] args) { byte[] angka=new byte[5]; Random rand = new Random(); System. out. print("Random Integer: "); for(int i=1; i<=5; i++) { System. out. print(rand. next. Int(100) + " "); } } } Membuat object random dengan nama rand Generate angka random dengan tipe integer Random Integer: 78 76 36 59 94 System. out. print("n. Random byte isi ke array: "); Generate angkat random for(int i=1; i<=5; i++) { dengan type byte dan menyimpannya dalam rand. next. Bytes(angka); array dengan nama angka } for(int i=0; i<=4; i++) { Random byte isi ke array: 73 115 -5 -98 -87 System. out. print(angka[i] + " "); } AER – 2011/2012 Mencetak isi array Universitas Pembangunan Jaya – SIF_TIF SIF 1213 - 15
Simulation Josephus Problem • Game simulation dengan The Josephus problem : – n orang duduk membentuk lingkaran; – Dimulai dari orang nomor 1 memegang benda, kemudian benda tersebut pindah ke orang nomor berikutnya dan seterusnya; – Setelah beberapa kali (m) pindah, apabila m sesuai dengan angka eliminasi maka orang yg memegang benda tersebut tereliminasi. – Selanjutnya dimulai lagi dari orang yang berada disebelah orang yg tereliminasi tersebut dengan hitungan m reset dari awal. AER – 2011/2012 Universitas Pembangunan Jaya – SIF_TIF SIF 1213 - 16
Simulation Josephus Problem • Terdapat sejumlah n orang dalam suatu lingkaran dengan kesepakatan (ketentuan), bahwa setiap mth orang akan dieksekusi dari lingkaran dan seterusnya sampai hanya tinggal 1 orang, cari posisi L(n, m) dimana posisi yang aman agar menjadi orang terakhir dalam lingkaran (pemenang). (Ball and Coxeter 1987). • Gambar di bawah mencerminkan sequence (aliran) dari proses Josephus Problem. Misal: n=4 men dengan nomer 1 to 4 Dan setiap m=2 langkah terjadi eksekusi. 1 AER – 2011/2012 2 3 4 Universitas Pembangunan Jaya – SIF_TIF SIF 1213 - 17
Josephus Problem Code dengan Linked. List • Code Josephus Problem dengan array. List • Code Josephus Problem dengan Linked. List AER – 2011/2012 Universitas Pembangunan Jaya – SIF_TIF SIF 1213 - 18
Josephus Problem Code dengan Linked. List import java. util. Collection; import java. util. Iterator; import java. util. Linked. List; while( people-- != 1 ) { for( int i = 1; i <= passes; i++ ) { if( !itr. has. Next( ) ) itr = the. List. iterator( ); itr. next( ); } System. out. println(the. List. to. String()); itr. remove( ); } public class josephus. Dari. Buku_main { public static void main(String[] args) { int the. Last. Men = josephus(7, 4); System. out. print(the. Last. Men); } public static int josephus( int people, int passes ) { Collection<Integer> the. List = new Linked. List<Integer>( ); itr = the. List. iterator( ); return itr. next( ); // Construct the list for( int i = 1; i <= people; i++ ) the. List. add( i ); } } // Play the game; Iterator<Integer> itr = the. List. iterator( ); AER – 2011/2012 Universitas Pembangunan Jaya – SIF_TIF SIF 1213 - 19
Simulation Josephus Problem W i n n e r 2 4 1 3 M= 5 1 2 5 4 AER – 2011/2012 K = 4, 3, 5, 4 3 Universitas Pembangunan Jaya – SIF_TIF SIF 1213 - 20
Simulation Event Driven Simulation • Untuk simulasi event driven ini kita misalkan simulasi operasi perbankan dengan k tellers untuk menghitung jumlah minimum k (teller) untuk mendapatkan waktu pelayanan yang layak. • Dengan menggunakan komputer untuk simulasi ini ada beberapa manfaat yang didapatkan: 1. 2. 3. Informasi yang diharapkan bisa didapat tanpa melibatkan pelanggan sesungguhnya. Simulasi dengan komputer lebih cepat dari implementasi aktual, karena kecepatan dari proses perhitungan komputer. Simulasi dengan komputer mudah di replikasi, untuk keperluan uji coba dengan beberapa sample dan struktur data untuk mendapatkan. AER – 2011/2012 Universitas Pembangunan Jaya – SIF_TIF SIF 1213 - 21
Simulation Event Driven Simulation • Misal; untuk menghitung secara statistik tentang berapa lama rata-rata seorang pelanggan harus menunggu dan seberapa persen waktual yang terpakai oleh tellers dalam melayani pelanggan. • Terkait hal tersebut terdapat 2 events: 1) Pelanggan datang ke teller. 2) Pelanggan meninggalkan teller dan teller bebas. AER – 2011/2012 Universitas Pembangunan Jaya – SIF_TIF SIF 1213 - 22
See You Next Session • Thank’s AER – 2011/2012 Universitas Pembangunan Jaya – SIF_TIF SIF 1213 - 23