Evaluasi Tengah Semester Struktur Data
1. Jelaskan perbedaan struktur data primitif dengan Non primitif, berikan contohnya dalam program sederhana?
- Primitif adalah tipe data yang telah terdefinisi(supported) di suatu bahasa pemrograman. Contohnya adalah byte, short, int, long, char, float , double dan boolean.
- import java.util.Scanner;
- public class primitive{
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- int A,B,C;
- A=120000;
- B=600000;
- C =(int)( A+B);
- System.out.println(C);
- System.out.println("masukan nilai 1");
- int D=sc.nextInt();
- System.out.println("masukan nilai 2");
- int E=sc.nextInt();
- int F=(int)(D+E);
- System.out.println("hasil "+ F);
- }
- }
Output
- 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. Contohnya adalah Array, List, Stack, dan Queue.
Source Code
- import java.util.Scanner;
- public class nonprimitive{
- public static void main(String[] args){
- Scanner scanner = new Scanner(System.in);
- System.out.print("Masukan jumlah siswa : ");
- int a = scanner.nextInt();
- String nama[] = new String[a];
- String status[] = new String[a];
- int nilai[] = new int[a];
- for (int i=0; i<a; i++){
- System.out.println("Siswa ke : "+(i+1));
- System.out.print("Nama : ");
- nama[i] = scanner.next();
- System.out.print("Nilai : ");
- nilai[i] = scanner.nextInt();
- if (nilai[i] <= 50){
- status[i] = "Tidak Lulus";
- }
- else{
- status[i] = "Lulus";
- }
- }
- System.out.println ("Daftar Nilai Siswa");
- System.out.println("====================");
- System.out.println("No Nama Nilai Status ");
- for (int i=0; i<a; i++){
- System.out.println((i+1)+ " "+nama[i]+ " "+nilai[i]+ " "+status[i]);
- }
- }
- }
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 :
- Infiks : "A + B * C ^ D – E / F"
- Postfiks : "A B C D ^ * + E F / -"
Source Code
- import java.util.Stack;
- public class InfixPostFix {
- static int precedence(char c){
- switch (c){
- case '+':
- case '-':
- return 1;
- case '*':
- case '/':
- return 2;
- case '^':
- return 3;
- }
- return -1;
- }
- static String infixPostFix(String expression){
- String result = "";
- Stack<Character> stack = new Stack<>();
- for (int i = 0; i <expression.length() ; i++) {
- char c = expression.charAt(i);
- if(precedence(c)>0){
- while(stack.isEmpty()==false && precedence(stack.peek())>=precedence(c)){
- result += stack.pop();
- }
- stack.push(c);
- }
- else if(c==')'){
- char x = stack.pop();
- while(x!='('){
- result += x;
- x = stack.pop();
- }
- }
- else if(c=='('){
- stack.push(c);
- }
- else{
- result += c;
- }
- }
- for (int i = 0; i <=stack.size() ; i++) {
- result += stack.pop();
- }
- return result;
- }
- public static void main(String[] args) {
- String exp = "A+B*C^D-E/F";
- System.out.println("Infix : " + exp);
- System.out.println("Postfix : " + infixPostFix(exp));
- }
- }
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.
Queue adalah salah satu implementasi dari linked list. Queue menerapkan konsep FIFO (First In First Out) atau FCFS (First Come, First Serve). Berbeda dengan Stack yang menerapkan konsep LIFO (Last In, First Out).
b. Tuliskan dan gambarkan struktur data untuk memuat informasinya.
queue memiliki limitasi dalam storage-nya. Itulah kenapa disebut queue, yang berarti antrian. Yakni suatu manajemen penyimpanan sementara untuk menunggu ketika value di depannya sedang di proses. Dalam komputer pun juga ada antrian, namun karena kecepatan proses sangat cepat, jadi seolah olah seluruh instruksi dijalankan bersama – sama.
c. Implementasikan aplikasi antrian tersebut. (Link Antrian Bank)
Source Code
- import java.util.Scanner;
- public class Antrian{
- int nomerantrian;
- String nama,perlu,tanggal;
- Antrian next;
- static Scanner in=new Scanner(System.in);
- static Scanner str=new Scanner(System.in);
- public void input(){
- System.out.print("Masukkan nomer antrian: ");
- nomerantrian=in.nextInt();
- System.out.print("Masukkan nama: ");
- nama=str.nextLine();
- System.out.print("Masukkan keperluan: ");
- perlu=str.nextLine();
- System.out.print("Masukkan Tanggal: ");
- tanggal=str.nextLine();
- next=null;
- }
- public void read(){
- System.out.println(" " +nomerantrian+ " \\t " +nama+ " \\t " +perlu+ " \\t" +tanggal+ "\\t");
- }
- public static void main(String[] args){
- int menu=0;
- linked que=new linked();
- while(menu!=4){
- System.out.print("1.Enqueue\\n2.Dequeue\\n3.View\\n4.Exit\\n : ");
- menu=in.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("- keluar -");
- else System.out.println("- Salah -");
- System.out.println("");
- }
- }
- }
- class linked{
- Antrian head,tail;
- public linked(){
- head=null;
- tail=null;
- }
- public void enque(){
- Antrian baru=new Antrian();
- baru.input();
- if(head==null)head=baru;
- else tail.next=baru;
- tail=baru;import java.util.Scanner;
- public void enque(){
- Antrian baru=new Antrian();
- baru.input();
- if(head==null)head=baru;
- else tail.next=baru;
- tail=baru;
- }
- public void deque(){
- if(head==null)System.out.println("- Kosong -");
- else{
- System.out.println("Keluar Data Dengan Nomer Antrian : "+head.nomerantrian);
- head=head.next;
- }
- }
- public void view(){
- if(head==null)System.out.println("- Kosong -");
- else{
- System.out.println(" Id \\t Nama \\t Keperluan \\t");
- for(Antrian a=head; a!=null; a=a.next) a.read();
- }
- }
- }
- }
- public void deque(){
- if(head==null)System.out.println("- Kosong -");
- else{
- System.out.println("Keluar Data Dengan Nomer Antrian : "+head.nomerantrian);
- head=head.next;
- }
- }
- public void view(){
- if(head==null)System.out.println("- Kosong -");
- else{
- System.out.println(" Id \\t Nama \\t Keperluan \\t");
- for(Antrian a=head; a!=null; a=a.next) a.read();
- }
- }
- }
Output
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
Komentar
Posting Komentar