Evaluasi Tengah Semester Struktur Data 2021

Soal :

  1. Jelaskan perbedaan struktur data primitif dengan Non primitif, berikan contohnya dalam program sederhana.
  2. Jika diketahui notasi infix = “A+B*C^D-E/F” bagaimana bentuk notasi postfix dari notasi infiks tersebut jika menggunakan operasi stack. Tuliskan dalam bentuk program , dan tampilkan screenshotnya
  3. Pada sebuah Bank, setiap nasabah yang datang diminta untuk mengambil antrian. Antrian tersebut memuat urutan layanan nasabah, dan jenis layanan yang dibutuhkan, apakah CS atau Teller.

    • Untuk membuat aplikasinya, struktur data apa yang tepat.
    • Tuliskan dan gambarkan struktur data untuk memuat informasinya
    • Implementasikan aplikasi antrian tersebut. (Link Antrian Bank)

4. Buatlah dokumentasi dalam bentuk source code, screenshot hasil, dan video Demo Presentasi yang dipost ke Youtube, kemudian diembedded di Blog masing-masing. Pengerjaan bisa berkelompok maksimal 3 orang, terakhir dikumpul 9 Mei 2021

1. Tipe data adalah atribut dari variabel yang memberi tahu compiler atau interpreter bagaimana programmer bermaksud menggunakan variabel tersebut. Ini mendefinisikan operasi yang dapat dilakukan pada data dan jenis nilai apa yang dapat disimpan. Pada artikel ini, saya (fadhil) akan memberi Anda wawasan singkat tentang berbagai tipe data di Java. Menurut properti yang dimilikinya, tipe data dibagi menjadi dua kelompok:
  1. Tipe Data Primitif
  2. Tipe Data Non-Primitif
Tipe Data Primitif: Tipe data primitif sudah ditentukan sebelumnya oleh bahasa pemrograman. Ukuran dan jenis nilai variabel ditentukan, dan tidak ada metode tambahan.

Tipe Data Non-Primitif: Tipe data ini sebenarnya tidak ditentukan oleh bahasa pemrograman tetapi dibuat oleh pemrogram. Mereka juga disebut "variabel referensi" atau "referensi objek" karena mereka mereferensikan lokasi memori yang menyimpan data.

Sekarang, mari melangkah lebih jauh dan masuk ke detail Jenis Data Primitif.

Tipe Data Primitif

Tipe data di Java diklasifikasikan menjadi 4 aspek yaitu int, float, character dan boolean. Namun secara umum ada 8 tipe data. Mereka adalah sebagai berikut:
  • tipe data boolean
  • tipe data byte
  • tipe data char
  • tipe data short
  • tipe data int
  • tipe data long
  • tipe data float
  • tipe data double
Anda dapat merujuk ke gambar di bawah ini untuk memahami tipe data yang berbeda sehubungan dengan memori yang dialokasikan untuk mereka.
Sekarang mari kita pahami masing-masing jenis data ini secara mendalam. Pertama saya akan memberi tahu Anda apa itu tipe data boolean.

tipe data boolean

Tipe data boolean terdiri dari sedikit informasi dan hanya dapat menyimpan nilai true atau false. Tipe data ini digunakan untuk melacak kondisi true/false. Sekarang mari kita buat program kecil dan pahami cara kerjanya.
1
2
3
4
5
6
7
8
9
10
class booleanDataType{
public static void main(String args[]){
// Mendefinisikan value untuk tipe data boolean
 
boolean Java = true;
boolean Python = false;
System.out.println(Java);   // Output akan true
System.out.println(Python);  // Output akan false
}
}
Itu semua tentang tipe data boolean. Saya harap Anda memahaminya. Sekarang mari kita melangkah lebih jauh dan memahami tipe data berikutnya, yaitu tipe data byte.

tipe data byte

Ini adalah contoh tipe data primitif. Tipe data byte adalah 8-bit signed two’s complement integer. Ini menyimpan bilangan bulat yang berada di antara -128 hingga 127. Tipe data byte berguna untuk menghemat memori dalam jumlah besar. Sekarang mari kita buat program kecil dan pahami cara kerjanya.

1
2
3
4
5
6
7
8
9
class ByteExample {
public static void main(String[] args) {
byte n, a;
n = 127;
a=177;
System.out.println(n); // mencetak 127
System.out.println(a); // melempar kesalahan karena tidak dapat menyimpan lebih dari 127 bit }
}

Itu semua tentang tipe data byte. Sekarang mari melangkah lebih jauh dan memahami tipe data berikut, yaitu char.

tipe data char

Tipe data ini digunakan untuk menyimpan satu karakter. Karakter harus diapit dalam tanda kutip tunggal, seperti 'E' atau 'e'. Alternatifnya, Anda juga dapat menggunakan nilai ASCII untuk menampilkan karakter tertentu. Mari kita ambil contoh kecil dan lihat cara kerjanya.

1
2
3
4
5
6
7
8
char  alpha = 'J';
 
char a = 65, b = 66, c = 67;
System.out.println(alpha); // mencetak J
 
System.out.println(a); // Menunjukkan 65
System.out.println(b); // Menunjukkan 66
System.out.println(c); // Menunjukkan 67

Itu semua tentang tipe data char. Saya harap Anda memahaminya. Sekarang mari melangkah lebih jauh dan memahami jenis data berikutnya pada daftar, yaitu jenis data singkat.

tipe data short

Tipe data short lebih besar dari byte dalam hal ukuran dan kurang dari integer. Ini menyimpan nilai yang berkisar dari -32.768 hingga 32767. Ukuran default dari tipe data ini: 2 byte. Mari kita ambil contoh dan pahami tipe data singkat.

1
2
3
4
5
6
class ShortExample {
public static void main(String[] args) {
short n= 3435,
System.out.println(n); // mencetak nilai yang ada di n yaitu 3435
}
}

Ke depan, mari kita melangkah lebih jauh dan melihat tipe data berikutnya, yaitu tipe data int.

tipe data int

Tipe data ini dapat menyimpan bilangan bulat dari -2147483648 hingga 2147483647. Umumnya, int adalah tipe data yang disukai saat Anda membuat variabel dengan nilai numerik.

Sebagai contoh:

1
2
int num = 5464564;
System.out.println(num); // mencetak 5464564
Setelah memahami ini, sekarang mari kita lihat mana jenis data berikutnya dalam daftar.

tipe data long

Jenis data ini adalah bilangan bulat pelengkap dua 64-bit. Secara default, ukuran tipe data yang panjang adalah 64 bit dan nilainya berkisar dari -263 hingga 263-1.

Sebagai contoh:

1
2
long num = 15000000000L;
System.out.println(num); // mencetak 15000000000
Itu semua tentang tipe data yang panjang. Sekarang mari kita bergerak dan melihat tipe data mengambang.

Tipe Data Floating

Anda harus menggunakan tipe titik mengambang setiap kali Anda membutuhkan angka dengan desimal, seperti 8,88 atau 3,14515.

tipe data float

Tipe data ini dapat menyimpan bilangan pecahan dari 3.4e−038 hingga 3.4e+038. Perhatikan bahwa Anda harus mengakhiri nilai dengan "f". Mari kita ambil contoh kecil dan pahami jenis data ini secara mendetail.

1
2
float num =67;
System.out.println(num); // mencetak nilai angka floating

Jadi ini adalah bagaimana Anda bisa menggunakan tipe data float. Sekarang mari kita lihat satu lagi tipe data mengambang, yaitu double.

tipe data double

Tipe data double dapat menyimpan bilangan pecahan dari 1.7e−308 hingga 1.7e+308. Perhatikan bahwa Anda harus mengakhiri nilai dengan "d":

1
2
double num = 79.678d;
System.out.println(num); // mencetak nilai double

Itu semua tentang tipe data Double dan ini membawa kita ke bagian akhir dari Tipe Data Primitif. Sekarang mari kita cari tahu perbedaan antara tipe data primitif dan non-primitif.

Tipe Data Non-Primitif

Tipe data non-primitif merujuk ke objek dan karenanya disebut tipe referensi. Contoh tipe non-primitif termasuk String, Array, Class, Interface, dll. Gambar di bawah ini menggambarkan berbagai tipe data non-primitif.
Sekarang mari kita pahami tipe data non-primitif ini secara singkat.

String: String adalah urutan karakter. Namun di Java, string adalah objek yang merepresentasikan rangkaian karakter. Class java.lang.String digunakan untuk membuat objek string.

Array: Array di Java adalah struktur data homogen yang diimplementasikan di Java sebagai objek. Array menyimpan satu atau lebih nilai dari tipe data tertentu dan menyediakan akses terindeks untuk menyimpan yang sama. Elemen tertentu dalam array diakses oleh indeksnya.

Class: Class di Java adalah cetak biru yang mencakup semua data Anda. Class berisi bidang (variabel) dan metode untuk menggambarkan perilaku suatu objek.

Interface: Seperti kelas, antarmuka dapat memiliki metode dan variabel, tetapi metode yang dideklarasikan dalam antarmuka secara default abstrak (hanya tanda tangan metode, tidak ada isi).

Jadi itu semua tentang tipe data non-primitif. Sekarang mari kita pahami perbedaan antara tipe data primitif dan non-primitif.

Perbedaan antara tipe data primitif dan non-primitif

Perbedaan antara tipe data primitif dan non-primitif adalah sebagai berikut:
  • Jenis primitif sudah ditentukan sebelumnya di Java. Tipe non-primitif dibuat oleh programmer dan tidak ditentukan oleh Java.
  • Tipe Non Primitif bisa digunakan untuk memanggil metode untuk melakukan operasi tertentu, sedangkan tipe primitif tidak bisa.
  • Tipe primitif selalu memiliki nilai, sedangkan tipe non-primitif bisa nihil.
  • Tipe primitif dimulai dengan huruf kecil, sedangkan tipe non-primitif dimulai dengan huruf besar.
  • Ukuran tipe primitif bergantung pada tipe datanya, sedangkan tipe non-primitif memiliki ukuran yang sama.
2. 

Tujuan: Diberikan ekspresi Infix, tulis algoritma untuk mengubahnya menjadi ekspresi Postfix.

Contoh:

Input: Ekspresi Infix - A + B
Output: Ekspresi Postfix - AB+

Input: Ekspresi Infix - A+B*(C^D-E)
Output: Ekspresi Postfix - ABCD^E-*+

Menggunakan: Menggunakan Stack.

  • Operator stack: Stack ini akan digunakan untuk menjaga operasi (+, -, *, /, ^)

Urutan prioritas operasi

  1. ^ (Exponential)
  2. / *
  3. + –

Notebrackets ( ) digunakan untuk mengganti aturan ini.

Algoritma:

Inisialisasi hasil sebagai string kosong, ulangi melalui ekspresi yang diberikan, satu karakter pada satu waktu

  1. If karakter adalah operand, tambahkan ke hasil.
  2. If karakter adalah operator.
    • If operator stack kosong maka push ke operator stack.
    • Else If operator stack tidak kosong,
      • If prioritas operator lebih besar dari atau sama dengan prioritas operator stack, maka dorong karakter ke operator stack.
      • If prioritas operator kurang dari prioritas tumpukan atas operator stack maka "pop out operator dari stack dan tambahkan ke hasil sampai stack kosong atau prioritas operator lebih besar dari atau sama dengan prioritas stack bagian atas operator stack". kemudian push operator untuk stack.
  3. If karakternya adalah "(", lalu push ke operator stack.
  4. If karakternya adalah ")", lalu "pop out operator dari stack dan tambahkan ke hasil sampai "("ditemukan di operator stack. Sekarang pop out "(".

Setelah iterasi ekspresi selesai dan operator stack tidak kosong, "keluarkan operator dari stack dan tambahkan ke hasil" sampai operator stack kosong. Hasilnya adalah jawaban kita, ekspresi postfix.

Silakan lihat panduan di bawah ini untuk pemahaman lebih lanjut.

Kode Lengkap:

Output:

Ekspresi Infix : A+B*C^D-E/F
Ekspresi Postfix : ABCD^*+EF/-
3. 
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. 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.

b. 


c.
Source Code untuk Node :

Source Code untuk antrian bank:

Source Code untuk app antrian:

Hasil:


4.
Kelompok:   Mohammad Fadhil Rasyidin Parinduri (5025201131)
                     Stenly Saut Martua (5025201095)

Comments

Popular posts from this blog

Linked List in Java