Evaluasi Tengah Semester

Evaluasi Tengah Semester 2021

1. Perbedaan Struktur Data Primitif dan Non-Primitif


    Terdapat dua tipe struktur data yang terdapat pada dunia pemrograman, yaitu: tipe struktur data primitif dan tipe struktur data non-primitif. Tipe struktur data primitif merupakan tipe struktur data yang sudah tersedia dalam bahasa pemrograman. Tipe data ini tidak dapat dipecah lagi menjadi tipe data yang lebih simpel/ sederhana. Tipe struktur data primitif sendiri, terdiri dari beberapa tipe data, seperti :
  1. Tipe Data Logika, contohnya boolean,
  2. Tipe Data Karakter, contohnya char,
  3. Tipe Data Bilangan, yang terdiri dari:
    1. Bilangan Bulat, contohnya byte, short, int, long, dan lainnya,
    2. Bilangan Pecahan, contohnya float dan double
    Berbeda dengan tipe struktur data primitif, tipe struktur data non-primitif merupakan tipe data yang belum terdefinisi sebelumnya dalam bahasa pemrograman. Tipe data non-primitif adalah tipe data yang dibuat sendiri oleh programmer dan terdiri dari beberapa tipe data primitif. Hal ini dapat berarti tipe data non-primitif dapat dipecah menjadi tipe data yang lebih sederhana. Contoh tipe-tipe struktur data non-primitif adalah:
  1. Array, merupakan tipe data yang terdiri dari tipe data primitif yang sama. Misalnya, untuk menginisialisasi bilangan bulat yang sangat banyak, akan menjadi tidak efektif jika diinisialisasi satu per satu. Untuk mengatasinya, dibuatlah array;
  2. String, merupakan tipe data yang dapat menyimpan angka (integer) dan karakter (char) secara bersamaan. Sebagai contoh, data "Ac707*&#" tidak dapat disimpan pada array karena setiap elemen memiliki tipe data primitif yang berbeda-beda, maka dari itu, digunakan tipe data String untuk menyimpannya;
  3. Stack, merupakan tipe struktur data non-primitif yang memiliki konsep LIFO (Last In First Out). Tipe data ini menggunakan konsep dynamic array, dimana setiap node dari sebuah data, menyimpan alamat memori dari node selanjutnya dan selalu berkesinambungan. Untuk penjelasan lebih lanjut mengenai stack dan implementasinya, dapat dilihat pada link berikut. Penjelasan dan Implementasi Stack di Java;
  4. Queue, merupakan tipe struktur data non-primitif yang memiliki konsep FIFO (First In First Out). Tipe data ini juga menggunakan konsep dynamic array seperti stack. Untuk penjelasan lebih lanjut mengenai Queue dan implementasinya, dapat dilihat pada link berikut. Penjelasan dan Implementasi Queue di Java; dan lain sebagainya.
    Untuk mempermudah pemahaman mengenai perbedaan dari tipe data primitif dan non-primitif, dapat diperhatikan program dan penjelasan berikut.


    Dan berikut merupakan hasil output dari source code di atas.


    Untuk konklusinya, seperti pada source code di atas, semua tipe data primitif tidak harus dibuat lagi terlebih dahulu, sedangkan tipe data non-primitif harus dibuat terlebih dahulu.

2. Mengubah Ekspresi Infix menjadi Postfix pada Stack

    Ekspresi Infix merupakan ekspresi yang kita temui sehari-hari. Contoh notasi infix adalah sebagai berikut "A+B*C^D-E/F". Pada notasi notasi infix ini, kita dapat mengerti bahwa pangkat (^) dikerjakan terlebih dahulu. Kemudian pembagian (/) dan perkalian (*) dikerjakan selanjutnya. Setelah operasi telah dikerjakan, kemudian operasi positif (+) dan negatif (-) dikerjakan selanjutnya. Maka, jika ekspresi infix diubah menjadi ekspresi postfix, akan didapatkan ekspresi postfix " ABCD^*+EF/- ". Untuk lebih mudah memahaminya, dapat dilihat program mengubah ekspresi infix menjadi ekspresi postifix dibawah ini.

    Stack Methods


    Infix to Postfix Methods

    App Infix to Postfix

    Dan berikut merupakan hasil output dari App Infix to Postfix


    Dari source code di atas, didapatkan hasil dari ekspresi postfix dari ekspresi infix "A+B*C^D-E/F" adalah "ABCD^*+EF/-".

3. Membuat Program Antrian di Bank

    a. Antrian di Bank seperti yang kita ketahui memiliki sifat FIFO (First In First Out). Untuk membuat program antrian bank, kita akan membutuhkan struktur data yang juga memiliki sifat FIFO. Struktur data yang akan digunakan adalah Queue/Antrian.

    b. Berikut merupakan gambaran singkat bagaimana program akan dijalankan
   

       Seperti pada gambar diatas, nasabah yang datang ke bank harus mengambil antrian dahulu. Antrian tersebut akan memberitahukan nomor yang didapatkan oleh nasabah. Setelah nasabah telah mendapatkan nomor antrian, nasabah akan masuk ke antrian secara terurut.
       Setelah itu, pegawai bank akan melayani nasabah yang paling pertama. Setelah pelayanan telah selesai dilakukan, nama nasabah akan dihapus dari antrian, kemudian pegawai bank akan melayani yang selanjutnya dan begitu seterusnya.

    c. Untuk penjelasan pengimplementasiannya dalam sebuah program akan dibutuhkan flowchart program sebagai berikut.

 Flowchart

         Untuk pengimplementasiannya dalam sebuah program, dapat dilihat pada jawaban soal nomor 4.

4. Implementasi Program Antrian Bank di Java

    Untuk pengimplementasian antrian bank, akan digunakan 3 class. Class yang pertama merupakan class Queue. Class Queue ini akan berfungsi untuk menyimpan suatu keutuhan antrian. Class Queue sendiri terdiri dari beberapa method. Berikut method-method yang digunakan pada class Queue.
  1. Queue(), sebagai constructur class;
  2. enqueue(...), digunakan untuk meng-input data baru pada antrian;
  3. deque(), digunakan untuk menghapus data pada antrian;
  4. queue_size(), untuk mengembalikan nilai dari banyak pengantri; dan
  5. queue_view(), untuk menunjukkan antrian yang ada.
    Berikut merupakan source code dari class Queue.


    Class kedua yang digunakan adalah class NodeQueue. Class NodeQueue ini akan digunakan untuk menyimpan semua data dari pengantri. NodeQueue dapat menyimpan nama dan keperluan pengantri. Singkatnya, NodeQueue merupakan sebuah node dari setiap pengantri bank. Berbeda dengan class lainnya, class NodeQueue tidak memiliki method sendiri. Berikut merupakan source code dari class NodeQueue.


    Class selanjutnya, class AntrianApp merupakan class yang digunakan sebagai program utama menjalankan antrian. Program ini dimulai dengan menentukan user dari program tersebut. Jika user merupakan nasabah, maka nasabah akan memilih keperluan, dan jika user merupakan pegawai, maka nasabah akan memilih pelayanan dan seterusnya sesuai yang tergambar pada flowchart. Untuk lebih jelasnya berikut ini merupakan source code dari AntrianApp.


Setelah program di run dapat didapatkan hasil output sebagai berikut.


    Untuk pengimplementasian yang lebih jelas lagi, dapat dilihat pada video yang tertera pada link berikut ini. https://youtu.be/XzryNi1qKl8

Komentar

Postingan populer dari blog ini

Penjelasan Rekursif pada Tower of Hanoi

Array in Java