• Tidak ada hasil yang ditemukan

Slide IST101 Fondasi Pemrograman Struktur Data 13 Stack Queue Simulation with Java API

N/A
N/A
Protected

Academic year: 2017

Membagikan "Slide IST101 Fondasi Pemrograman Struktur Data 13 Stack Queue Simulation with Java API"

Copied!
23
0
0

Teks penuh

(1)

Fondasi Pemrograman &

Struktur Data

Stack & Queue with java API

Random Generators, Simulation

(2)

Tujuan Pertemuan

Memahami Java API untuk Stack

Mampu membuat program stack dengan

java API

Memahami Java API untuk Queue

Memahami Java API untuk LinkedList dan

LinkedList Method()

Mampu membuat program queue dengan

java API

Mampu membuat angka random dengan

memanfaatkan java API.

(3)

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;

(4)

Stack dengan Java API

Penggunaan

Sebelum menggunakan method Stack java API,

lakukan import dengan menuliskan:

AER – 2011/2012 Universitas Pembangunan Jaya – SIF_TIF SIF1213 - 4

import java.util.Stack;

import java.util.Stack;

Selanjutnya buat object

dengan type Stack:

Stack

tumpukanBuku

= new Stack();

Stack

tumpukanBuku

= new Stack();

Selanjutnya gunakan

method sesuai

fungsinya

Method Summary  boole

an

empty()

Tests if this stack is empty.  E peek()

Looks at the object at the top of this stack without removing it from the stack.

 E pop()

Removes the object at the top of this stack and returns that object as the value of this function.

 E push(E item)

Pushes an item onto the top of this stack.

 int search(Object o)

(5)

Stack dengan Java API

Penggunaan

AER – 2011/2012 Universitas Pembangunan Jaya – SIF_TIF SIF1213 - 5

import java.util.Stack;

public class stackOfStringsAPI {

public static void main(String[] args) {

Stack tumpukanBuku = new Stack();

tumpukanBuku.push("buku1");

tumpukanBuku.push("buku2"); tumpukanBuku.push("buku3");

System.out.println(tumpukanBuku.search("buku3")); System.out.println("Posisi teratas: " +

tumpukanBuku.peek());

System.out.println(tumpukanBuku.pop() + " diangkat");

System.out.println("Posisi teratas: " + tumpukanBuku.peek());

System.out.println(tumpukanBuku.pop() + " diangkat");

System.out.println("Posisi teratas: " +

tumpukanBuku.peek()); }

}

import java.util.Stack;

public class stackOfStringsAPI {

public static void main(String[] args) {

Stack tumpukanBuku = new Stack();

tumpukanBuku.push("buku1");

tumpukanBuku.push("buku2"); tumpukanBuku.push("buku3");

System.out.println(tumpukanBuku.search("buku3")); System.out.println("Posisi teratas: " +

tumpukanBuku.peek());

System.out.println(tumpukanBuku.pop() + " diangkat");

System.out.println("Posisi teratas: " + tumpukanBuku.peek());

System.out.println(tumpukanBuku.pop() + " diangkat");

System.out.println("Posisi teratas: " +

tumpukanBuku.peek()); }

}

Untuk menambahkan item pada tumpukan

Untuk menambahkan item pada tumpukan

Untuk mencari posisi suatu item pada tumpukan

Untuk mencari posisi suatu item pada tumpukan

Untuk mengeluarkan item pada tumpukan teratas dari tumpukan

Untuk mengeluarkan item pada tumpukan teratas dari tumpukan

Untuk mengeluarkan item pada tumpukan teratas dari tumpukan

(6)

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

AER – 2011/2012 Universitas Pembangunan Jaya – SIF_TIF SIF1213 - 6

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 salah

satu buku diambil user

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 Tumpukan sekarang: Buku Disain Buku HTML Buku Java Buku Algoritma Buku Database

(7)

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

LinkedList, mengingat queue menggunakan

LinkedList sebagai node dalam antrian.

java.util.LinkedList;

(8)

Queue dengan Java API

Penggunaan

Sebelum menggunakan method

Queue java API, lakukan import

dengan menuliskan:

AER – 2011/2012 Universitas Pembangunan Jaya – SIF_TIF SIF1213 - 8

import java.util.Queue;

import java.util.LinkedList

import java.util.Queue;

import java.util.LinkedList

Selanjutnya buat object

dengan type Queue:

Queue

tumpukanBuku

= new LinkedList();

Queue

tumpukanBuku

= new LinkedList();

Selanjutnya gunakan

method sesuai

fungsinya

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  an IllegalStateException if no space is  currently available.

 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  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() 

(9)

Queue dengan Java API

Penggunaan

AER – 2011/2012 Universitas Pembangunan Jaya – SIF_TIF SIF1213 - 9 import java.util.Queue;

import java.util.LinkedList;

public class queueAPI {

public static void main(String[] args) { Queue antrian = new LinkedList();

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());

System.out.println(antrian.remove() + " Selesai.");

System.out.println("Posisi Depan: " + antrian.element());

} }

import java.util.Queue; import java.util.LinkedList;

public class queueAPI {

public static void main(String[] args) { Queue antrian = new LinkedList();

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());

System.out.println(antrian.remove() + " Selesai.");

System.out.println("Posisi Depan: " + antrian.element());

} }

Untuk menambahkan item pada antrian

Untuk menambahkan item pada antrian

Untuk membaca item head pada antrian.

Untuk membaca item head pada antrian.

Untuk mengeluarkan item head dari antrian.

(10)

LinkedList API

AER – 2011/2012 Universitas Pembangunan Jaya – SIF_TIF SIF1213 - 10

Sebelum menggunakan method

LinkedList java API, lakukan

import dengan menuliskan:

import java.util.LinkedList

import java.util.LinkedList

Selanjutnya buat object

dengan type Queue:

LinkedList<Integer> theList =

new LinkedList<Integer>( );

LinkedList<Integer> theList =

new LinkedList<Integer>( );

Selanjutnya gunakan

(11)

LinkedList Method()

Method Summary

 voidadd(int index, Object element) 

Inserts the specified element at the specified position in this list.

 booleanadd(Object o) 

Appends the specified element to the end of this list.  booleanaddAll(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.  booleanaddAll(int index, Collection c) 

Inserts all of the elements in the specified collection into this list, starting at the specified position.

 voidaddFirst(Object o) 

Inserts the given element at the beginning of this list.  voidaddLast(Object o) 

Appends the given element to the end of this list.  voidclear() 

Removes all of the elements from this list.  Objectclone() 

Returns a shallow copy of this LinkedList.  booleancontains(Object o) 

Returns true if this list contains the specified element.  Objectget(int index) 

Returns the element at the specified position in this list.  ObjectgetFirst() 

Returns the first element in this list.  ObjectgetLast() 

Returns the last element in this list.

AER – 2011/2012 Universitas Pembangunan Jaya – SIF_TIF SIF1213 - 11

Method Summary

 intindexOf(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.

 intlastIndexOf(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.

  ListIterato r

listIterator(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.

 ObjectremoveFirst() 

Removes and returns the first element from this list.  ObjectremoveLast() 

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[]toArray() 

Returns an array containing all of the elements in this list in the correct order.

 Object[]toArray(Object[] a) 

(12)

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

)

.

(13)

Random Numbers

Methods

AER – 2011/2012 Universitas Pembangunan Jaya – SIF_TIF SIF1213 - 13

Method Summary

protected

 int nextGenerates the next pseudorandom number.(int bits)   boolean nextBoolean() 

Returns the next pseudorandom, uniformly distributed boolean value from this random number generator's sequence.

 void nextBytes(byte[] bytes) 

Generates random bytes and places them into a user-supplied byte array.  double nextDouble() 

Returns the next pseudorandom, uniformly distributed double value between 0.0 and 1.0 from this random number generator's sequence.  float nextFloat() 

(14)

Random Numbers

Methods

AER – 2011/2012 Universitas Pembangunan Jaya – SIF_TIF SIF1213 - 14

Method Summary

 double nextGaussian() 

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 nextInt() 

Returns the next pseudorandom, uniformly distributed int value from this random number generator's sequence.

 int nextInt(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 nextLong() 

Returns the next pseudorandom, uniformly distributed long value from this random number generator's sequence.

 void setSeed(long seed) 

(15)

Random byte isi ke array: 73 115 -5 -98 -87 Random byte isi ke array: 73 115 -5 -98 -87

Random Integer: 78 76 36 59 94 Random Integer: 78 76 36 59 94

Random Numbers

Contoh

import java.util.Random;

public class random1 {

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.nextInt(100) + " "); }

System.out.print("\nRandom byte isi ke array: ");

for(int i=1; i<=5; i++) { rand.nextBytes(angka); }

for(int i=0; i<=4; i++) {

System.out.print(angka[i] + " ");

} } }

import java.util.Random;

public class random1 {

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.nextInt(100) + " "); }

System.out.print("\nRandom byte isi ke array: ");

for(int i=1; i<=5; i++) { rand.nextBytes(angka); }

for(int i=0; i<=4; i++) {

System.out.print(angka[i] + " ");

} } }

AER – 2011/2012 Universitas Pembangunan Jaya – SIF_TIF SIF1213 - 15

Membuat object

random dengan nama rand

Membuat object

random dengan nama rand

Generate angka random dengan tipe integer

Generate angka random dengan tipe integer

Generate angkat random dengan type byte dan

menyimpannya dalam array dengan nama angka

Generate angkat random dengan type byte dan

menyimpannya dalam array dengan nama angka

Mencetak isi array

(16)

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.

(17)

Simulation

Josephus Problem

AER – 2011/2012 Universitas Pembangunan Jaya – SIF_TIF SIF1213 - 17

Terdapat sejumlah  

n

orang

dalam suatu

lingkaran dengan kesepakatan (ketentuan), bahwa setiap

 

m

th

orang akan di-eksekusi 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

(18)

Josephus Problem

Code dengan LinkedList

Code Josephus Problem dengan arrayL

ist

Code Josephus Problem dengan

LinkedList

(19)

Josephus Problem

Code dengan LinkedList

import java.util.Collection;

import java.util.Iterator; import java.util.LinkedList;

public class josephusDariBuku_main {

public static void main(String[] args) { int theLastMen = josephus(7,4); System.out.print(theLastMen);

}

public static int josephus( int people, int passes ) {

Collection<Integer> theList = new LinkedList<Integer>( );

// Construct the list

for( int i = 1; i <= people; i++ ) theList.add( i );

// Play the game;

Iterator<Integer> itr = theList.iterator( );

import java.util.Collection; import java.util.Iterator; import java.util.LinkedList;

public class josephusDariBuku_main {

public static void main(String[] args) { int theLastMen = josephus(7,4);

System.out.print(theLastMen); }

public static int josephus( int people, int passes ) {

Collection<Integer> theList = new LinkedList<Integer>( );

// Construct the list

for( int i = 1; i <= people; i++ )

theList.add( i );

// Play the game;

Iterator<Integer> itr = theList.iterator( );

AER – 2011/2012 Universitas Pembangunan Jaya – SIF_TIF SIF1213 - 19

while( people-- != 1 ) {

for( int i = 1; i <= passes; i++ ) {

if( !itr.hasNext( ) )

itr = theList.iterator( ); itr.next( );

}

System.out.println(theList.toString());

itr.remove( ); }

itr = theList.iterator( );

return itr.next( );

} }

while( people-- != 1 ) {

for( int i = 1; i <= passes; i++ ) {

if( !itr.hasNext( ) ) itr = theList.iterator( ); itr.next( );

}

System.out.println(theList.toString());

itr.remove( ); }

itr = theList.iterator( ); return itr.next( ); }

(20)

Simulation

Josephus Problem

AER – 2011/2012 Universitas Pembangunan Jaya – SIF_TIF SIF1213 - 20

1

1

5

5

3

3

4

4

2

2

K =

4

, 3,

5, 4

M

=

5

5

4

4

3

3

2

2

1

1

W

(21)

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. Informasi yang diharapkan bisa didapat tanpa melibatkan

pelanggan sesungguhnya.

2. Simulasi dengan komputer lebih cepat dari implementasi

aktual, karena kecepatan dari proses perhitungan komputer.

3. Simulasi dengan komputer mudah di replikasi, untuk keperluan

uji coba dengan beberapa sample dan struktur data untuk

mendapatkan.

(22)

Simulation

Event Driven Simulation

Misal; untuk menghitung secara statistik

tentang berapa lama rata-rata seorang

pelanggan harus menunggu dan

seberapa persen waktu aktual 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.

(23)

See You Next Session

Thank’s

Referensi

Dokumen terkait

PENERAPAN METODE GRUP INVESTIGASI DALAM PEMBELAJARAN MENULIS TEKS HASIL OBSERVASI Universitas Pendidikan Indonesia | repository.upi.edu |

Jika terdapat bangunan atau yang lainnya di dalam lokasi hotel ini, maka bangunan tersebut dianggap tidak ada. Jaringan-jaringan utilitas seta sarana infrastruktur

Menurut Hansen dan Mowen biaya kualitas yang terdiri dari biaya pencegahan dan biaya penilaian mempunyai pengaruh negatif terhadap produk rusak, sedangkan Feigenbaum

[r]

4 2007 Pembelajaran Kreatif Krisis dalam Pembelajaran Mata Kuliah Program Pendidikan Orang Dewasa 5 2007 Model Pembelajaran Tematik Pada Anak Jalanan. 6 2007 Strategi

(3) Ketentuan lebih lanjut mengenai pelaksanaan Pekerjaan Kefarmasian dalam Fasilitas Distribusi atau Penyaluran Sediaan Farmasi sebagaimana dimaksud pada ayat (1) dan ayat (2)

B (point i sampai dengan l): Praktik Kerja Lapangan dapat dilaksanakan menggunakan sistem blok selama setengah semester (sekitar 3 bulan); dapat pula dengan cara masuk 3 hari

Metode Mock merupakan model neraca air yang dapat menghitung debit bulanan dari data curah hujan, evapotranspirasi, kelembaban tanah dan tampungan air tanah.. Model neraca