Documente Academic
Documente Profesional
Documente Cultură
LAPORAN PENDAHULUAN
Latihan
1. Dengan menggunakan package stack collection, buatlah program/class untuk
a. Konversi dari nilai desimal ke nilai biner, oktal dan heksadesimal.
Contoh :
Masukkan nilai desimal = 25
Hasil nilai biner = 11001
Hasil nilai oktal = 31
Hasil nilai heksadesimal = 19
Source code
import java.util.Iterator;
import java.util.Scanner;
import java.util.Stack;
Output
Analisa
Percobaan diatas menggunakan stack collection untuk menghitung dari nilai desimal
menjadi nilai biner, oktal dan heksadesimal. Untuk mencari nilai biner
mendefinisikan method toBinary(), toOctal(), toHexa dengan parameter int des.
Analisa
Pada percobaan diatas menentukan inputan dari user termasuk dalam palindrom atau
bukan. Percobaan diatas menggunakan method tambahan yaitu method palindrom().
Pada method palindrom program akan memproses inputan dari user apakah kalimat
yang dimasukkan termasuk palindrom atau bukan.
2. Dari soal latihan 1 untuk soal yang sama tetapi menggunakan stack dengan array.
Source code
Stack.java
public interface Stack<T>{
abstract boolean isEmpty();
abstract T peek();
abstract T pop();
abstract void push(T item);
abstract int size();}
Latihan2.java
import java.util.EmptyStackException;
@Override
public boolean isEmpty() {
return topOfStack == 0;
}
@Override
public T peek() {
if(isEmpty()){
throw new EmptyStackException();
}
topOfStack--;
T temp = value[topOfStack];
topOfStack++;
return temp;
}
@Override
public T pop() {
if(isEmpty()){
throw new EmptyStackException();
}
topOfStack--;
return value[topOfStack];
}
@Override
public void push(T item) {
value[topOfStack] = item;
topOfStack++;
}
@Override
public int size() {
return topOfStack;
}
while(!stk.isEmpty()){
numStr += stk.pop().charValue();
}
return numStr;
}
}
import java.util.Scanner;
public class soal2b {
public static boolean palindrom(String kal){
int panj = kal.length();
Latihan2 <Character> stk = new Latihan2
<Character>(panj);
String str = "";
boolean status = false;
int count = 0;
do{
stk.push(kal.charAt(count));
count++;
} while(count < kal.length());
while(!stk.isEmpty()){
str += stk.pop().charValue();
}
System.out.println("Hasil : "+str);
if(str.equals(kal))
status = true;
return status;
}
public static void main(String[] args){
Scanner inp = new Scanner(System.in);
System.out.print("Masukkan kalimat : ");
String kal = inp.nextLine();
boolean status = palindrom(kal);
if(status)
System.out.println("Palindrom");
else
System.out.println("Bukan palindrom");
}
}
Output2a
Analisa
Pada class main menggunakan method tambahan yaitu baseString() dimana pada method
tersebut digunakan untuk menghitung inputan yang diberikan oleh user dari bilangan
desimal menjadi nilai biner, oktal dan desimal dengan menggunakan array.
Output 2b
Analisa
Pada percobaan diatas menentukan inputan dari user termasuk dalam palindrom atau
bukan. Percobaan diatas menggunakan method tambahan yaitu method palindrom().
Pada method palindrom program akan memproses inputan dari user apakah kalimat yang
dimasukkan termasuk palindrom atau bukan. Pada method main program akan
menampilkan hasil inputan dari user dengan menggunakan array.
3. Dari soal latihan 1 untuk soal yang sama tetapi menggunakan stack dengan arraylist.
Source code
Stack.java
public interface Stack<T>{
abstract boolean isEmpty();
abstract T peek();
abstract T pop();
abstract void push(T item);
abstract int size();
}
Latihan.java
import java.util.ArrayList;
import java.util.EmptyStackException;
import java.util.Iterator;
public Latihan(){
stackList = new ArrayList<T>();
}
@Override
public boolean isEmpty() {
return stackList.size() == 0;
}
@Override
public T peek() {
if(isEmpty()){
throw new EmptyStackException();
}
return stackList.get(stackList.size() - 1);
}
@Override
public T pop() {
if(isEmpty()){
throw new EmptyStackException();
}
return stackList.remove(stackList.size() - 1);
}
@Override
public void push(T item) {
stackList.add(item);
}
@Override
public int size() {
return stackList.size();
}
public Iterator<T> iterator(){
return stackList.iterator();
}
}
Latihan3a.java
import java.util.Scanner;
Latihan3b.java
import java.util.Scanner;
Output 3a
Analisa
Pada percobaan diatas sama dengan percobaan sebelumnya hanya saja pada percobaan
ini menggunakan ArrayList yang diimplementasikan. Pada main class terdapat method
baseString() yang digunakan untuk menerjemahkan inputan dari user menjadi nilai biner,
oktal dan heksadesimal.
Output 3b
Analisa
Pada percobaan diatas sama dengan percobaan sebelumnya hanya saja pada percobaan
ini menggunakan ArrayList yang diimplementasikan. Program diatas menentukan
inputan dari user termasuk dalam palindrom atau bukan. Percobaan diatas menggunakan
method tambahan yaitu method palindrom(). Pada method palindrom program akan
memproses inputan dari user apakah kalimat yang dimasukkan termasuk palindrom atau
bukan. Pada method main program akan menampilkan hasil inputan dari user.
public PostfixEval() {
}
operand.push(Integer.toString(Character.getNumericValue(tempTo
ken[i])));
} else if (isOperator(tempToken[i])) {
op.push(Integer.toString(tempToken[i]));
int right = Integer.parseInt(operand.pop());
int left = Integer.parseInt(operand.pop());
int hasilPerhitungan = compute(left, right,
tempToken[i]);
operand.push(Integer.toString(hasilPerhitungan));
} else {
throw new ArithmeticException("Stack Kosong");
}
}
return Integer.parseInt(operand.pop());
}
Latihan4.java
import java.util.Scanner;
Output
Analisa
Pada percobaan ini menginputkan sebuah infix expression lalu akan menampilkan
Postfix expressionnya dan hasil perhitungannya. Percobaan diatas
mengimplementasikan 2 kelas selain main class yaitu InfoxtoPostfix, PostfixEval. Pada
class PostfixEval digunakan untuk menghitung operand left dan right dengan operator.
KESIMPULAN
Salah satu struktur data yang paling dasar adalah array. Array hanya sejumlah item dari
jenis yang sama dan disimpan dalam rangka linear. Array memiliki batas yang ditetapkan pada
ukuran dan tidak bisa melampaui batas yang telah ditentukan. Pada percobaan ini kita membuat
program stack dengan menggunakan array. Array biasanya cenderung lebih muda dan lebih
efisien untuk mengorganisasi data.