Evaluasi Tengah Semester Struktur Data 2021

Anggota kelompok : Adelia Hasna Putri (5025201200)
                                  Nabila Zakiyah Khansa' Machrus (5025201139)
                                  Sarah Alissa Putri (5025201272)


1. Jelaskan perbedaan struktur data primitif dengan Non primitif, berikan contohnya dalam program sederhana.

Primitive data type adalah tipe data yang telah terdefinisi(supported) di suatu bahasa pemrograman. Contohnya pada java adalah byte, short, int, long, char, float , double dan boolean. Non primitive data type adalah tipe data yang tidak terdefinisi secara default (supported) oleh suatu bahasa pemrograman melainkan didefinisikan sendiri oleh programmer tersebut atau biasannya juga disebut sebagai references object. Contoh dari non primitive data type ini adalah array, string, class, dan interface

  • Source code primitif:
    class Test {
    public static void main(String[] args) {
    double b = 123.43555;
    char c = 'e';
    boolean d = true;
    System.out.println("Double: " + b);
    System.out.println("Character: " + c);
    System.out.println("Boolean: " + d);
    }
    }
    view raw Primitif hosted with ❤ by GitHub
    output:





  • Source code Nonprimitif:
    import java.util.*;
    class I3 {
    public static void main(String[] args) {
    Scanner s1 = new Scanner(System.in);
    System.out.println("Enter your first name");
    String f = s1.next();
    System.out.println("Enter your last name");
    String l = s1.next();
    System.out.println("Your name is " + f + " " + l);
    }
    }
    view raw non prim hosted with ❤ by GitHub
    Output:








2. Jika diketahui notasi infiks = “A + B * C ^ D – E / F” bagaimana bentuk notasi postfiks dari notasi infiks tersebut jika menggunakan operasi stack. Tuliskan dalam bentuk program , dan tampilkan screenshotnya


source code:
import java.util.Stack;
class Test
{
static int Prec(char ch)
{
switch (ch)
{
case '+':
case '-':
return 1;
case '*':
case '/':
return 2;
case '^':
return 3;
}
return -1;
}
static String infixToPostfix(String exp)
{
String result = new String("");
Stack<Character> stack = new Stack<>();
for (int i = 0; i<exp.length(); ++i)
{
char c = exp.charAt(i);
if (Character.isLetterOrDigit(c))
result += c;
else if (c == '(')
stack.push(c);
else if (c == ')')
{
while (!stack.isEmpty() &&
stack.peek() != '(')
result += stack.pop();
stack.pop();
}
else
{
while (!stack.isEmpty() && Prec(c)
<= Prec(stack.peek())){
result += stack.pop();
}
stack.push(c);
}
}
while (!stack.isEmpty()){
if(stack.peek() == '(')
return "Invalid Expression";
result += stack.pop();
}
return result;
}
public static void main(String[] args)
{
String exp = "A+B*C^D–E/F";
System.out.println(infixToPostfix(exp));
}
}
view raw ETS NO 2 hosted with ❤ by GitHub
output:


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.

a. Untuk membuat aplikasinya, struktur data apa yang tepat.

- Struktur data yg paling tepat digunakan adalah Queue

b. Tuliskan dan gambarkan struktur data untuk memuat informasinya

 Queue mengimplementasikan First in First Out

Untuk menambahkan data baru menggunakan method enque, pertama-tama harus mengambil nilai dari method input di class Bank. Lalu cek apakah isi queue nol. Apabila nol maka set nilai yang baru diinput sebagai head, apabila berisi set nilai yang baru diinput ke tail.

 Untuk menghapus data, menggunakan method dequeue, cek apakah isi queue nol. Apabila nol maka tampilkan pesan no entry, apabila berisi eksekusi queue mulai dari head paling awal/yang paling awal diinput.

 


c. Implementasikan aplikasi antrian tersebut. 

Source code:


package bank;
import java.util.Date;
import java.util.Scanner;
public class Bank {
String id;
String perlu;
Bank next;
static Scanner str=new Scanner(System.in);
public void input(){
System.out.print("Masukkan nomor antrian : ");
id=str.next();
System.out.print("Masukkan keperluan : ");
perlu=str.next();
next=null;
}
public void read(){
System.out.println("Nomor Antrian: "+id+" || Loket: "+perlu);
}
public static void main(String[] args){
int menu=0;
Linked que=new Linked();
que.header();
while(menu!=4){
System.out.println("1. To add list\n2. To show current list\n3. To show whole list\n4. Exit");
menu=str.nextInt();
if(menu==1)que.enque();
else if(menu==2)que.deque();
else if(menu==3)que.view();
else if(menu==4)System.out.println("- HAVE A GOOD DAY! -");
else System.out.println("- WRONG COMMAND -");
}
}
}
class Linked{
Bank head,tail;
public Linked(){
head=null;
tail=null;
}
public void header(){
Date waktu = new Date();
System.out.println(waktu.toString());
System.out.println("Info Kurs");
System.out.println("1 USD = Rp13.500");
System.out.println("1 RM = Rp3.000");
System.out.println("1 SGD = Rp10.000");
System.out.println("1 EURO= Rp20.000");
}
public void enque(){
Bank baru=new Bank();
baru.input();
if(head==null)head=baru;
else tail.next=baru;
tail=baru;
}
public void deque(){
if(head==null)System.out.println("NO ENTRY");
else{
System.out.println("Nomor Antrian : "+head.id);
System.out.println("Loket : "+head.perlu);
head=head.next;
}
}
public void view(){
if(head==null)System.out.println("NO ENTRI");
else{
System.out.println("Antrian || Loket \t");
for(Bank a=head; a!=null; a=a.next) a.read();
}
}
}
view raw ETS NO 3 hosted with ❤ by GitHub
output:



4. Buatlah dokumentasi dalam bentuk source code , screenshot hasil, dan video Demo Presentasi yang dipost ke Youtube , kemudian diembedded di Blog masing-masing.

Berikut adalah link video demo presentasi kelompok kami :

Komentar

Postingan populer dari blog ini

Tugas 1 - PPB F

Final Project - Eas