Games and Quiz PT II
by Dr. Putu Harry Gunawan, MSi.,MSc. phg-simulation-laboratory.com
Games 1 (a). Penyisipan selalu dilakukan di atas (b). Penghapusan selalu dilakukan pada elemen pertama (c). Penghapusan selalu dilakukan pada bagian atas (d). Penyisipan selalu dilakukan di akhir (e). Tersusun secara LIFO (Last In First Out) (f). Tersusun secara FIFO (First In First Out) (g). Terdapat operasi PUSH (h). Terdapat operasi ADD (i). Terdapat operasi DEL (j). Terdapat operasi POP (k). HEAD (l). TAIL (m). TOP (n). BOTTOM
Kelompokkan istilah disamping kedalam box Stack atau Queu dibawah ini: Stack
Queue
Games 1 (a). Penyisipan selalu dilakukan di atas (b). Penghapusan selalu dilakukan pada elemen pertama (c). Penghapusan selalu dilakukan pada bagian atas (d). Penyisipan selalu dilakukan di akhir (e). Tersusun secara LIFO (Last In First Out) (f). Tersusun secara FIFO (First In First Out) (g). Terdapat operasi PUSH (h). Terdapat operasi ADD (i). Terdapat operasi DEL (j). Terdapat operasi POP (k). HEAD (l). TAIL (m). TOP (n). BOTTOM
Kelompokkan istilah disamping kedalam box Stack atau Queu dibawah ini: Stack (a) (d) (e) (g) (j) (m) (n)
Queue (b) (c) (f) (h) (i) (k) (l)
Games 2 Representasi Stack secara lojik digambarkan sebagai list linier yang setiap tipe elemennya adalah Type ElmtS :
:
Jika S adalah sebuah stack, dan
P adalah sebuah address maka: Top(S) adalah ….............. …................................................. ...... Info(P) adalah ....................... ….......................... Next(P) adalah …..............
Games 2 Representasi Stack secara lojik digambarkan sebagai list linier yang setiap tipe elemennya adalah Type ElmtS :
:
Jika S adalah sebuah stack, dan
P adalah sebuah address maka: Top(S) adalah alamat elemen TOP, dimana operasi penyisipan dan penghapusan dilakukan Info(P) adalah informasi yang disimpan pada alamat P Next(P) adalah alamat suksesor P
Games 3 type address : ^ Data type Data < info : integer > type Stack < top : address > // HEADER PROSEDUR DAN FUNGSI procedure createEmpty(output S : Stack ) function alokasi(input infoX : integer) → address procedure dealokasi(input p :address ) function isEmpty(S :Stack) → boolean procedure pushAddress(input/output S :Stack , input p: address) procedure push(input/output S : Stack , input infoX : integer) procedure pop(input/output S : Stack; output infoX : integer)
Games 3 type address : ^ Data type Data < info : integer > type Stack < top : address > // HEADER PROSEDUR DAN FUNGSI procedure createEmpty(output S : Stack ) function alokasi(input infoX : integer) → address procedure dealokasi(input p :address ) function isEmpty(S :Stack) → boolean procedure pushAddress(input/output S :Stack , input p: address) procedure push(input/output S : Stack , input infoX : integer) procedure pop(input/output S : Stack; output infoX : integer)
Games 4 function alokasi(input infoX : integer) → address kamus : p : address Algoritma
Games 4 function alokasi(input infoX : integer) → address kamus : p : address Algoritma P(address)malloc(sizeof(m1)); if(p<>NULL) then p^.info ← infoX; p^.next ← NULL; endif → p;
Games 5 procedure pushAddress(input/output S :Stack , input p: address) kamus : q :address algoritma : qS.top p^.nextq Boleh menggunakan S.top p fungsi free(q) free (q); procedure push(input/outpt S : Stack , input infoX : integer) kamus p:address Algoritma : Palokasi(nimX,namaX,nilaiX); if(p=NULL) then output("Alokasi Gagal") Boleh menggunakan fungsi else alokasi() dan procedure pushAddress(S,p) pushAddress endif
Games 5 procedure pushAddress(input/output S :Stack , input p: address) kamus : q :address algoritma : q ← S.top p^.next ← q S.top ← p free (q); procedure push(input/outpt S : Stack , input infoX : integer) kamus p:address Algoritma : p ← alokasi(infoX); if(p=NULL) then output("Alokasi Gagal") else pushAddress(S,p) endif
Games 6 type address : ^tElmtMahasiswa type tElmtMahasiswa < nilai : integer > type Queue < head : address head tail :address tail > // HEADER PROSEDUR DAN FUNGSI procedure createEmpty(output Q : Queue) function alokasi(nilaiX : integer) → address procedure dealokasi(input p :address ) function isEmpty(input Q : Queue) → boolean procedure addAddress(input/output Q : Queue , input p : address ) procedure add(input/output Q : Queue , input nilaiX : integer) procedure del(input/output Q : Queue; output nilaiX: integer)
Games 6 type address : ^tElmtMahasiswa type tElmtMahasiswa < nilai : integer > type Queue < head : address head tail :address tail > // HEADER PROSEDUR DAN FUNGSI procedure createEmpty(output Q : Queue) function alokasi(nilaiX : integer) → address procedure dealokasi(input p :address ) function isEmpty(input Q : Queue) → boolean procedure addAddress(input/output Q : Queue , input p : address ) procedure add(input/output Q : Queue , input nilaiX : integer) procedure del(input/output Q : Queue; output nilaiX: integer)
Games 7 procedure addAddress(input/output Q : Queue , input p : address ) kamus algoritma if(isEmpty(Q)) then (Q).head ← p; (Q).tail ← p; Note: else Boleh pakai, (Q.tail)^.next ← p; (Q).tail ← p; IsEmpty() endif alokasi() procedure add(input/output Q : Queue , input nilaiX : integer) addAddress() del() Kamus : dealokasi() q : address Algoritma : q alokasi(nilaiX); addAddress(Q,q);
Games 7 procedure addAddress(input/output Q : Queue , input p : address ) kamus algoritma if(isEmpty(Q)) then (Q).head ← p; (Q).tail ← p; else (Q.tail)^.next ← p; (Q).tail ← p; endif procedure add(input/output Q : Queue , input nilaiX : integer) Kamus : q : address Algoritma : q alokasi(nilaiX); addAddress(Q,q);
Prepare for Quiz
Ready??
Quiz 1. Diberikan langkah logik sebagai berikut untuk konversi bilangan desimal ke biner : 1 Baca suatu angka Note: 2 Iterasi : While angka > 0 do Boleh pakai, a. hitung modulo 2 dari angka b. cetak hasilnya ke layar IsEmpty() c. bagi angka dengan 2 alokasi() 3 akhir iterasi pushAddress() push() Contoh : masukan angka = 23 (akan diubah menjadi bilangan biner) pop() while angka > 0 dealokasi() a. hitung modulo 2 dari angka TOP 1 b. cetak hasilnya ke layar 0 c. bagi angka dengan 2 1 end while 1 Algoritma tersebut akan menghasilkan 1 Jika sudah tersedia stack beserta primitifnya, buatlah algoritma sehingga konversi desimal ke biner diatas dapat diimplementasikan dengan benar!
Quiz 2. Buatlah fungsi untuk menguji apakah sebuah queue penuh / tidak function IsFullQ(Q:Queue, input Nmax: integer) → boolean {True Jika Q penuh sebanyak Nmax} Kamus: Algoritma:
Answers OOPS.... Next please....
Answers Answer 1 Kamus: S: Stack Angka: integer Mod: integer Algoritma: Angka <-- 23 while(Angka >0) do Mod<-- Angka%2 cetak("Mod",Mod) push(S,Mod) Angka<-- Angka/2 endwhile
Answer 2 Kamus: p: address i : integer Algoritma: if(Q.Head=Nil) then -->false else p<-- (Q).head i<-- 0 while(p<>Nil) do i<-- i+1 Endwhile if(i=Nmax) then --> true else --> false endif endif