Anda di halaman 1dari 36

LAPORAN PRAKTIKUM

PEMROGRAMAN BERORIENTASI OBJEK


Operator

Nama : Muhammad Ramadhan


NRP :3120600043
Kelas : 2 D4 ITB
Percobaan 1 : Melakukan increment dan decrement nilai
a. Liting
public class InDec {
public static void main(String[] args) {
int x=8,y=13;
System.out.println("x = " + x);
System.out.println("y = " + y);
System.out.println("x = " + ++x);
System.out.println("y = " + y++);
System.out.println("x = " + x--);
System.out.println("y = " + --y);

}
}

b. Output

Pada program diatas mencoba menerapkan operator increment dan decrement. Pada
cetakan pertama dan kedua hanya ditampilkan nilai dari x dan secara original tanpa ada
operator increment ataupun decrement. Kemudian pada cetakan ketiga digunakan operator
++x sehingga nilai akhir x akan dicetak ditambah 1 menjadi 9. Pada cetakan ke-4
digunakan operator y++, dimana nilai awal y =13, ketika dicetak dengan y++ , maka nilai
y akan tetap sejumlah 13 , namun jika dicetak nanti variable y maka nilainya akan menjadi
14. Untuk x-- , dimana tadi nilai x =9 , maka ketika variable dicetak pertama kali, tetap
akan muncul nilai 9, baru dilakukan decrement setelah variable x dicetak lagi setelah itu
menjadi 8. Kemudian, terakhir ketika digunakan operator --y, variable yang tadinya
bernilai 14 , maka akan langsung decrement ketika sekali dicetak menjadi 13.
Percobaan 2: Melakukan operasi bit
a. Listing
public class BitWise {
public static void main(String[] args) {
int x=5,y=6;
System.out.println("x = " + x);
System.out.println("y = " + y);
System.out.println("x & y = " + (x&y));
System.out.println("x | y = " + (x|y));
System.out.println("x ^ y = " + (x^y));

}
}

b. Ouput

Perintah diatas sepeti tanda &(AND) digunakan untuk operasi logical AND anatara 5 dan
6. Kemudian tanda |(OR) digunakan untuk operasi logical OR antara 5 dan 6. Kemudian
tanda ^(XOR) digunakan untuk operasi logical XOR antara 5 dan 6.
Percobaan 3: Melakukan operasi komplemen
a. Listing
public class BitWiseComplement {
public static void main(String[] args) {
int x=8;
System.out.println("x = " + x);
int y = ~x;
System.out.println("y = " + y);
}
}

b. Output

Symbol `~ ini merupakan syimbol invers dimana semula nilai variabel x = 8 akan
diinvers menjadi -9., menggunakan rumus ~x=-x-1.
Percobaan 4: Melakukan operasi shift
a. Listing
public class Shift {
public static void main(String[] args) {
int x=7;
System.out.println("x = " + x);
System.out.println("x >> 2 = " + (x >> 2));
System.out.println("x << 1 = " + (x << 1));
System.out.println("x >>> y = " + (x >>> 1));

}
}

b. Ouput

nilai x yang semula 7 pada cetakan kedua dikeser kekanan sebanyak 2 bit sehingga nilai
binary 7 yang semulai 0111 menjadi 0001 atau desimalnya sama dengan 1. Kemudian
cetakan ketiga diman shifted kekiri sebanyak 1 bit dimana x=7 , nilai binary 7 yang semulai
0111 menjadi 01110 atau desimalnya sama dengan 14. Kemudian cetakan terakhir
melakukan unsigned shift kanan (>>>) nilai x semula 7 dengan binary 0111 dipress
menjadi 3.
Percobaan 5: Menggunakan logical operator
a. Listing
public class LogicalOperator {
public static void main(String[] args) {
int x=7,y=11, z=11;
System.out.println("x = " + x);
System.out.println("y = " + y);
System.out.println("z = " + z);
System.out.println("x < y = " + (x < y));
System.out.println("x > z = " + (x > z));
System.out.println("y <= z = " + (y <= z));
System.out.println("x >= y = " + (x >= y));
System.out.println("y == z = " + (y == z));
System.out.println("x != z = " + (x != z));

}
)

b. Output

Pada program diatas untuk mengecek kondisi nilau yang terdapat pada variable x,y dan
z. keiga variable tersebut akan dibandingkan, dengan menggunakan operator
perbandingan dan persamaan sehingga akan menghasilkan suatu nilai yang true jika
kondisinya benar, dan akan false jika kondisi salah.
Percobaan 6: Menggunakan operator boolean and
a. Listing
public class BooleanAnd {
public static void main(String[] args) {
int a =5, b=7;
if((a<2)&(b++<10))
b+=2;
System.out.println(b);
}
}

b. Output

Pada saat pengecekan nilai b = 7, namun karena pada pengecekan terdapat b++ , maka nilai
final b = 8 saat dicetak, meskipun kondisi false karena a tidak lebih kecil dari 2.
Percobaan 7 : Menggunakan operator boolean and short-circuit
a. Listing
public class BooleanAnd {
public static void main(String[] args) {
int a =5, b=7;
if((a<2)&&(b++<10)) b+=2;
System.out.println(b);
}
}

b. Output

Pada program ini digunakan if untuk mengecek kondisi variable a dan b apakah memenuhi
persyaratan yang ditentukan, namun kondisi akhirnya false sehingga yang tercetak
hanyalah b dengan nilai 7. Bedanya pada program sebelumnya terdapat operator AND yang
sempurna yaitu && sehingga proses increment di nilai final x tidak akan dijalankan.
Percobaan 8: Menggunakan boolean or
a. Listing
public class BooleanAnd {
public static void main(String[] args) {
int a =5, b=7;
if((a>2)|(b++<10)) b+=2;
System.out.println(b);
}
}

b. Output

Pada saat pengecekan nilai b = 7, namun karena pada pengecekan terdapat b++ , maka nilai
final b = 8. Saat dicetak,nilai x akan ditambah 2,sehingga x =10 disebabkan kondisi true.
Percobaan 9: Menggunakan boolean or short-circuit
a. Listing
public class BooleanAnd {
public static void main(String[] args) {
int a =5, b=7;
if((a>2)||(b++<10)) b+=2;
System.out.println(b);
}
}

b. Output

Pada program ini digunakan if untuk mengecek kondisi variable a dan b apakah memenuhi
persyaratan yang ditentukan, namun kondisi akhirnya true sehingga yang tercetak hanyalah
b dengan nilai 7+2=9. Bedanya pada program sebelumnya, pada program ini terdapat
operator OR nya sempurna yaitu || sehingga proses increment di nilai final x tidak akan
dijalankan.
Percobaan 10 : Menggunakan operator kondisi
a. Listing
public class Conditional {
public static void main(String[] args) {
int x =0;
boolean isEven = false;
System.out.println("x = " + x);
x = isEven ? 4 : 7;
System.out.println("x = " + x);
}
}

b. Output

Pada program tersebut mulanya var x diinisialisasikan dengan nilai 0. Kemudia dibuat
variable isEven tipe Boolean denga nilai berupa false. Kemudian nilai x dicetah
sehingga cetaka pertama keluar nilai 0. Kemudian var isEven di assign ke var x dengan
menggunakan pengkondisian sederhana dan singkat yang jika true genap maka akan
terpilih 4 , jika false maka ketika dicetak akan 7. Namun karena diawal telah
diinisialisasikan bahwa var isEven nilaina false maka , hasil akhir ketika var x dicetak
merupakan bukan bilangan genap atau false nya yaitu nilai 7.
Latihan 1 : Menampilkan representasi biner dari bilangan desimal bertipe int
Buatlah suatu program untuk menampilkan susunan bit dari suatu bilangan desimal. Nilai bilangan
input yang dimasukkan adalah bertipe int.
a. Listing yang menggunakan array
import java.util.Scanner;
public class DecToBin {
public static void main(String[] args) {
Scanner inp = new Scanner(System.in);
int x,r;
int biner[]=new int[20];
int i=0,j=0;
System.out.print("Masukan Decimal :");
x= inp.nextInt();
while(x!=0){
j=i;
r=x%2;
biner[i]=r;
x=x/2;
i++;
}
System.out.print("0");
for(i=j;i>=0;i--)
System.out.print(+biner[i]);
}
}

b. Output
Atau dapat juga menggunakan listing yang menggunakan syntax konversi langsung ini:
import java.util.Scanner;
public class DecToBin {
public static void main(String[] args) {
Scanner inp=new Scanner(System.in);
int x;
System.out.print("Masukan Decimal\t: ");
x= inp.nextInt();
String binNumber = Integer.toBinaryString(x);
System.out.print("Biner\t: "+binNumber);

}
}

Output :

Pada program, dilakukan penginputan nilai dengan tipe integer oleh user yang kemudian dikonvert
menjadi kode binary nya menggunakan syntax/perintah Integer.toBinaryString();.
Latihan 2 : Menampilkan representasi biner dari bilangan decimal bertipe byte
Buatlah suatu program seperti diatas untuk menampilkan susunan bit dari suatu bilangan desimal,
akan tetapi nilai bilangan input yang dimasukkan adalah bertipe byte.
a. Listing
import java.util.Scanner;

public class ByteToBiner {


public static void main(String[] args) {
Scanner inp=new Scanner(System.in);
byte x;
System.out.print("Masukan Decimal\t: ");
x= inp.nextByte();
String binNumber =Integer.toBinaryString(x);
System.out.print("Biner\t: "+binNumber);

}
}

b. Output

Pada output program ini, karena menggunakan tipe data byte , maka saat dikonversi
menjadi kode binary digunakan command Integer.toBinarString juga. Namun jika sudah
melewati Batasan dari tipe data byte, maka akan terjadi error seperti dibawah ini:
Tugas 1 : Mencari representasi biner dari suatu bilangan
Tuliskan representasi bit dari nilai –19? Jelaskan.
Jawab:
a. Listing
import java.util.Scanner;
public class DecToBin {
public static void main(String[] args) {
Scanner inp=new Scanner(System.in);
int x;
System.out.print("Masukan Decimal\t: ");
x= inp.nextInt();
String binNumber = Integer.toBinaryString(x);
System.out.print("Biner\t: "+binNumber);

}
}

b. Output

Pada output pertama, saya mencoba meng-compile secara manual pada cmd dengan masuk ke
tempat file java disimpan , kemudian menuliskan javac.exe DecToBin.java untuk
mengcompile file tersebut. Kemudian untuk run program tinggal menulis command java
DecToBin.Pada program ini juga menginputkan bilangan int yang kemudian dikonversi
menjadi binary menggunakan syntax Integer.toBinarString().
Tugas 2 : Menganalisa pergeseran bit dari operasi shift
Jelaskan apa yang terjadi pada potongan program berikut ini:
byte a=-1; a=(byte) (a >>> 2);
Jawab:
a. Listing
public class OperasiShift {
public static void main(String[] args) {
byte a =1;
a=(byte) (a>>>2);
System.out.print(a);
}
}

b. Output

Output Menggunakan cmd

Output menggunakan Intellij IDEA.


Pada program ini mencoba menggeser nilai byte a yang semula bernilai 1 dengan nilai
binary 0000 0001, kemudian digeser menggunakan syntax unsigned shift kanan sebanak 2
kali sehingga nilai binary nya bergeser kekanan menjadi 0000 0000 atau sama dengan 0.
LAPORAN PRAKTIKUM
PEMROGRAMAN BERORIENTASI OBJEK
Kondisional &
Perulangan

Nama : Muhammad Ramadhan


NRP :3120600043
Kelas : 2 D4 ITB
Tugas Pendahuluan
1. Sebutkan dan jelaskan berbagai macam sintaks percabangan yang digunakan di Java!
Jawab :
1. Percabangan IF
Percabangan ini hanya memiliki satu pilihan. Artinya, pilihan di dalam IF hanya akan
dikerjakan kalau kondisinya benar.
2. Percabangan IF/ELSE
Percabangan IF/ELSE memiliki pilihan alternatif kalau kondisinya salah. “Jika
kondisi benar maka kerjakan ini, kalau salah maka kerjakan yang itu, setelah itu
lanjut”
3. Percabangan IF, ELSE IF dan SWITCH/CASE
Jika percabangan IF/ELSE hanya memiliki dua pilihan saja. Maka percahangan
IF/ELSE/IF memiliki lebih dari dua pilihan.Percabangan SWITCH/CASE
sebenarnya adalah bentuk lain dari IF/ELSE/IF. Bedanya, percabangan ini
menggunakan kata kunci switch dan case.Formatnya juga berbeda, tapi cara kerjanya
sama.

2. Sebutkan dan jelaskan berbagai macam sintaks perulangan yang digunakan di Java!
Jawab:
1. Perulangan FOR digunakan untuk perulangan yang sudah diketahui batas
berhentinya/loopingnya.
2. Perulangan WHILE digunakan untuk perulangan yang mengecek kondisi loopingnya
diawal,jika kondisi false diawal maka looping akan berhenti dan keluar.
3. Perulangan DO-WHILE digunakan untuk perulangan yang mengecek kondisi
loopingnya diakhir. Bedanya pada do-while pada saat nanti kondisi false di akhir , maka
looping ini akan berhenti dan mencetak nilai terebut meskipun false. Do-while
digunakan pada saat tidak tau kapan looping akan berhenti, kecuali user mau berhenti.
4. Perulangan FOR each digunakan untuk perulangan pada array yang tidak kosong
indeksnya.
Percobaan 1:Percabangan menggunakan if, if-else dan else-if
a. Listing
public class IfElseName {
public static void main(String[] args) {
char firstInitial= 'a';
System.out.println("Masukan huruf awal nama Anda:");
try{
firstInitial=(char)System.in.read();
} catch(Exception e){
System.out.println("Error: "+ e.toString());
}

if(firstInitial == 'a')
System.out.println("Nama anda pasti Asep");
else if(firstInitial == 'b')
System.out.println("Nama anda pasti Brodin");
else if(firstInitial == 'c')
System.out.println("Nama anda pasti Cecep");
else
System.out.println("Nama anda tidak terkenal");
}

b. Output

Pada program diatas menggunakan pengkondisian if, else if, dan juga else. Bila kondisi
pertama false, program akan mengecek else if, jika else if false, maka else lah yang akan
dijalankan. Begitulah siklusnya.
Percobaan 2
Percabangan menggunakan switch
a. Listing
public class SwitchName {
public static void main(String[] args) {
char firstInitial= 'a';
System.out.println("Masukan huruf awal nama Anda:");
try{
firstInitial=(char)System.in.read();
} catch(Exception e){
System.out.println("Error: "+ e.toString());
}
switch (firstInitial){
case 'a' :
System.out.println("Nama anda pasti Asep");
case 'b' :
System.out.println("Nama anda pasti Brodin");
case 'c' :
System.out.println("Nama anda pasti Cecep");
default:
System.out.println("Nama anda tidak terkenal");
}

}
}

b. Output

Pada program diatas menggunakan pengkondisian switch case. Pada switch case agak
berbeda cara penulisanna dibandingkan dengan penggunaan kondisi if , else if dan else.
Namu switch case pada case tidak cocok untuk operasi bilangan integer/float/double,
pengkondisian switch case cocok untuk yang melibatkan karater dan string . Namun satu
hal yang harus diingat ketika case pertama telah selesai dibuat maka harus digunakan
syntax break untuk menutup case tersebut, jika tidak dilakukan demikian , maka akan
terjadi seperti program diatas, dimana seharusnya yang muncul Cuma nama yang huruf
awalnya a, namun final prosesnya tampil seluruh nama yang ada di seluruh pengkondisian.
Percobaan 3:Percabangan menggunakan switch dengan break
a. Listing
public class SwitchName {
public static void main(String[] args) {
char firstInitial= 'a';
System.out.println("Masukan huruf awal nama Anda:");
try{
firstInitial=(char)System.in.read();
} catch(Exception e){
System.out.println("Error: "+ e.toString());
}
switch (firstInitial){
case 'a' :
System.out.println("Nama anda pasti Asep");
break;
case 'b' :
System.out.println("Nama anda pasti Brodin");
break;
case 'c' :
System.out.println("Nama anda pasti Cecep");
break;
default:
System.out.println("Nama anda tidak terkenal");
}
}
}

b. Output

Satu hal yang harus diingat ketika case pertama telah selesai dibuat maka harus digunakan
syntax break untuk menutup case tersebut, sehingga jika kondisi tersebut true, maka kan
langsung keluar dari program atau lompat keluar dari pengkondisian.
Percobaan 4:Perulangan menggunakan for
a. Listing
public class ForCOunt {
public static void main(String[] args) {
int count = 1;
for(int i=0;i<9;i++){
for(int j=0;j<i+1;j++){
System.out.print(count);
}
count++;
System.out.println();
}
}
}

a. Output

Pada program ini menggunakan perulangan jenis nested loop for dimana for pertama(outer
loop) akan dilakukan lebih dauhulu, kemudian pada loop ke-2 akan dilooping, baru setelah
itu nilai count dicetak dan kemudian kembali ke loop ke-2 hingga kondisi loop ke-2 false,
maka nilai count bertamabah 1 dan i++. Begitu seterusnnya hingga kondisi pada loop for
1 false.
Percobaan 5:Perulangan menggunakan while
a. Listing
public class WhileCount {
public static void main(String[] args) {
int count=1;
int i=0;
while(i<9){
int j=0;
while(j<i+1){
System.out.print(count);
j++;
}
count++;
System.out.println();
i++;
}
}
}

b. Output

Pada program ini menggunakana perulangan jenis nested loop while dimana while
pertama(outer loop) akan dilakukan lebih dauhulu, kemudian pada loop ke-2 akan
dilooping, baru setelah itu nilai count dicetak dan kemudian kembali ke loop ke-2 hingga
kondisi loop ke-2 false, maka nilai count bertamabah 1 dan i++. Begitu seterusnnya
hingga kondisi pada loop while ke-1 false.
Percobaan 6 : Perulangan dengan break
a. Listing
public class BreakLoop {
public static void main(String[] args) {
int i=0;
do{
System.out.println("Iterasi ke "+i);
i++;
if(i>10) break;
}while(true);
}
}

b. Output

Penggunaan command break dalamm looping langsung membuat program menjadi akhir.
Pada program diatas menggunakan loopngdo while yang tida diberi ketentuan nilai berapa akan
berhenti, namun karena ada pengkondisian ketika nilai telah 10 maka break, maka iterasi hanya
sampai ke 10 dan program berhenti.
Percobaan 7
Perulangan dengan continue
a. Listing
public class ContinueLoop {
public static void main(String[] args) {
int a,b;
for(a=0;a<2;a++)
for (b=0;b<3;b++){
if(b==1) continue;
System.out.println("a=" +a+" ; b="+b);
}
}
}

b. Output

Pada program diatas menggunakan nested loop for dimana dalam loop tersebut terdapat command
continue. Pada program diatas program akan di continue ketika nilai b=1, sheingga kerika di run
programna, maka nilai b yang sama dengan 1 akan dilewati untuk dibaca oleh compiler ehingga
output b tidak aka nada yang nilainya = 1.
Percobaan 8
Pemakaian label pada kondisi break
a. Listing
public class BreakLabel {
public static void main(String[] args) {
int a,b;
Mulai:
for(a=0;a<2;a++)
for (b=0;b<3;b++){
if(b==1) break Mulai;
System.out.println("a=" +a+" ; b="+b);
}
}
}

b. Output

Label Mulai : diatas dituliskan sebelum nested for yang ada sehingga mencakupi bagian
tersebut. Pada saat didalam loop dituliskan pengkondisian jika nlai b sama dengan 1 maka
label Mulai akan di break. Karena mencakup seluruh nested loop for, maka program
langsung exit dan hanya menampilkan nilai a dan b yang sama sama bernilai 0
Percobaan 9
Pemakaian label pada kondisi continue
a. Listing
public class ContinueLabel {
public static void main(String[] args) {
int a,b;
Mulai:
for(a=0;a<2;a++)
for (b=0;b<3;b++){
if(b==1) continue Mulai;
System.out.println("a=" +a+" ; b="+b);
}
}
}

a. Output

Label Mulai : diatas dituliskan sebelum nested for yang ada sehingga mencakupi bagian
tersebut. Pada saat didalam loop dituliskan pengkondisian jika nlai b sama dengan 1 maka
label Mulai akan di continue. Karena mencakup seluruh nested loop for, maka program
langsung melewati nilai b=1 dan hanya menampilkan nilai a dan b yang sama sama bernilai
0 dan nilai a=1 ,b=0.
Latihan Soal
Latihan 1 : Pengecekan kelompok karakter
Buatlah program untuk menentukan kelompok suatu karakter yang dimasukkan melalui keyboard.
Kelompok karakter tersebut adalah huruf kecil, huruf besar, angka, dan karakter khusus (tanda
baca, operator dan sebagainya).
a. Listing
import java.util.Scanner;

public class GroupOfChar {


public static void main(String[] args) {
Scanner inp=new Scanner(System.in);
char kar;
System.out.print("Masukkan karakter\t: ");
kar=inp.next().charAt(0);

if(kar>=65 && kar<=90)


System.out.print(kar+" adalah Huruf Besar");
else if(kar>=97 && kar<=122)
System.out.print(kar+" adalah Huruf Kecil");
else if(kar>=48 && kar<=57)
System.out.print(kar+" adalah Angka");
else
System.out.print(kar+" adalah Simbol");

}
}

b. Output

Untuk menentukan kelompok suatu karakter, maka kita harus mengetahu kode ASCII dari
maing -masing dari angka , huruf kapital, huruf biasa maupun soimbol lainnya. Sehingga
pada saat pengkondisian kita bisa memanfaatkan itu untuk mengelompokkan bilangan
yang diinputkan apakah masuk range ASCII angka , ataupun yan lainnya
Latihan 2 : Menampilkan bilangan faktorial
Bilangan bulat faktorial n, ditulis dengan n! adalah dihasilkan dari mengalikan dari 1 sampai
dengan n. Contohnya 5! = 1 x 2 x 3 x 4 x 5 =120. Buatlah program untuk menampilkan tabel hasil
faktorial darisuatu bilangan yang diinputkan (tampilan bilangan rata kanan)
a. Listing
import java.util.Scanner;

public class Faktorial {


public static void main(String[] args) {
int i = 0;
int bil,num;
Scanner inp = new Scanner(System.in);
System.out.print("Masukkan faktoriral\t: !");
bil = inp.nextInt();
num=bil;
int temp1, temp2=1;
System.out.println("n" + " " +"n!");
System.out.println("------------");
for (i = 1; i <=bil; i++) {
temp1 = (bil-(num-1));
System.out.println(i + " " +temp1*temp2);
temp2*=temp1;
num--;

}
}
}

b. Output

Pada programa diatas variable i adalah variable untuk iterasi. Kemudian variable bil
diganakan untuk menampung nilai inputan angka factorial oleh user. Kemudian, saya
membuat variable num digunakan untuk menampung nilai dari var bil. Kemudian
dilakukan loop for dimana i=1 dengan batas i tidak boleh lebih dari sama dengan jumlah
variable bil. Didalam loop for saya menginsialisasikan nilai variable temp1 untuk
menampung nilai bil-(num-1). Kemudian saya cetak nilai faktorialnya dengan menggunak
variable temp1*temp2 dimana temp2 sebelum loopt telah diinisialisasikan =1. Setelah
tercetak loop pertama maka, temp2*=temp1, guna menimpa nilai dari temp1 sebelumnya.
Kemudian num saya decrement. Dan loop berputar kembali hingga kondisi false dan
mencetak nilai faktorialnya sesuai dengan tampilan yang diminta soal.

Contoh iterasinya: missal factorial !3


Masukan factorial : ! 3
Maka, bil =3
num=bil -> maka nilai num=3
temp1=0,temp2=1
iterasi temp1=bil- temp2 temp1*temp2 num
(num-1)
1 3-(3-1) = 1 1 1 3
2 3-(2-1) = 2 1 (temp2*=temp1) 2 2
3 3-(1-1) = 3 2(temp2*=temp1) 6 1
Latihan 3 : Deret Fibonacci
Buatlah program untuk menampilkan deret Fibonacci
Contoh tampilan :
Masukkan berapa deret Fibonacci? 8
8 deret Fibonacci = 1 1 2 3 5 8 13 21
a. Listing
import java.util.Scanner;

public class Fibbonaci {


public static void main(String[] args) {
int i = 0;
//int j = 0;
int bil;
int temp1=1,temp2=0;
int jumlah=0;
Scanner inp = new Scanner(System.in);
System.out.print("Masukkan deret fibbonaci\t: ");
bil = inp.nextInt();
for(i=0;i<bil;i++){
jumlah=temp1+temp2;
System.out.print(" "+jumlah);
temp1=temp2;
temp2=jumlah;
}

}
}

b. Output

Pada program diata mencari deret bilangan fibonaci menggunakan loop for
Pada program diatas jika dianalisakan secara iterasi maka akan seperti ini:
Iterasi( i ) bil temp1 temp2 Jumlah=temp1+temp2
0 8 1 0 1
1 8 0 (temp1=temp2) 1(temp2=jumlah) 1
2 8 1 1 2
3 8 1 2 3
4 8 2 3 5
5 8 3 5 8
6 8 5 8 13
7 8 8 13 21
8 (false) 8 13 21 34
Karena pada iterasi sudah false, maka akan dicteka jumlah dari iterasi ke -0 hingga ke-7.
Latihan 4 : Menampilkan deret bilangan genap
Buatlah program untuk menampilkan deret bilangan genap dari 2sampai dengan 20 kecuali
kelipatan 6.
Contoh tampilan :
2 4 8 10 14 16 20
a. Listing
public class EvenNumber {
public static void main(String[] args) {
int i;
for(i=2;i<=20;i++)
if(i%6==0) continue;
else
if(i%2==0)
System.out.print(i+" ");
}
}

b. Output

Untuk menampilkan deret bilangan genap dari 2sampai dengan 20 kecuali kelipatan
amaka dalam loop diberi kondisi jika nantinya bilangan tersebut bila dimodulus 6 habis
atau 0 maka continue.
TUGAS
Tugas 1 : Menghitung nilai determinan dan mencari akar persamaan kuadrat
Buatlah program untuk menghitung determinan dan mencari akar-akar dari persamaan kuadrat :
ax2 + bx + c = 0 , dengan ketentuan sebagai berikut :
D = b2- 4ac
Jika D = 0 , maka terdapat 2 akar real yang kembar, yaitu : x1 = x2 = -b / 2a
Jika D > 0 , maka terdapat 2 akar real yang berlainan, yaitu :
x1 = (-b + D) / 2a
x2 = (-b - D) / 2a
Jika D < 0 , maka terdapat 2 akar imaginer yang berlainan, yaitu :
x1 = -b / 2a + ( D / 2a) i
x2 = -b / 2a - ( D / 2a) i
Input : a, b, c (int)
Output : Nilai Determinan serta nilai akar-akar persamaan tsb (x1 dan x2).
Petunjuk : Gunakan Math.pow(x,0.5) untuk mencari akar dari x.

a. Listing
import java.util.Scanner;
public class DeterminanKuadrat {
public static void main(String[] args) {
int a,b,c;
double x1,x2,D;
Scanner inp=new Scanner(System.in);
//persamaan kuadrat : ax2 + bx + c = 0
//D = b2- 4ac
System.out.print("Masukan a\t:");
a= inp.nextInt();
System.out.print("Masukan b\t:");
b= inp.nextInt();
System.out.print("Masukan c\t:");
c= inp.nextInt();
D=(b*b)-(4*a*c);
if(D==0){
x1=-b/(2*a);
x2=x1;
System.out.println("Kedua akar real yang kembar");
System.out.println("Nilai x1\t:"+x1);
System.out.println("Nilai x2\t:"+x2);
}else if(D>0){
x1=(-b+Math.sqrt(D))/(2*a);
x2=(-b-Math.sqrt(D))/(2*a);
System.out.println("Kedua akar real yang berlainan");
System.out.println("Nilai x1\t:"+x1);
System.out.println("Nilai x2\t:"+x2);
}else if(D<0){
x1=(-b/(2*a))+(Math.sqrt(D)/(2*a))*Math.sqrt(-1.00);
x2=(-b/(2*a))-(Math.sqrt(D)/(2*a))*Math.sqrt(-1.00);
System.out.println("Kedua akar nya Imajiner");
System.out.println("Nilai x1\t:"+ x1);
System.out.println("Nilai x2\t:"+ x2);
}
else
System.out.print("Nothing");

}
}

b. Output

Pada program diatas, menerapkan pengkondisian if , else if dan else. Ketika nilai a, b dan
c yang dimasukkan kedalam nila variable D=-b2-4ac, maka nilai D akan dibuat menjadi
suatu kondisi, bila nanti D==0 , maka akarnya kembar. Kemudian bila nanti hail akhir dari
D >0, maka akarnya berlainan. Dan jika nanti D<0, maka aka-akarnya imajiner.
Tugas 2 : Menentukan tahun kabisat
Buatlah program untuk menentukan suatu tahun kabisat atau bukan dimana tahun dibatasi mulai
dari tahun 1900 sampai dengan tahun 2005.
a. Listing
import java.util.Scanner;

public class TahunKabisat {


public static void main(String[] args) {
int year;
Scanner inp= new Scanner(System.in);
System.out.print("Masukkan tahun (1900-2005)\t: ");
year= inp.nextInt();
if(year>2005){
System.out.println("Maaf, tahun yang diinput diatas 2005");
}
else if(year<1900){
System.out.println("Maaf, tahun yang diinput dibawah
1900");
}
else{
if(year%400==0 || year%100==0 || year%4==0)
System.out.println(year+" adalah tahun kabisat");
else
System.out.println(year+" adalah bukan tahun kabisat");
}

}
}
/*Terdapat algoritme mudah untuk menentukan apakah suatu tahun termasuk
tahun kabisat atau bukan sebagai berikut:

Jika angka tahun itu habis dibagi 400, maka tahun itu sudah pasti tahun
kabisat.
Jika angka tahun itu tidak habis dibagi 400 tetapi habis dibagi 100,
maka tahun itu sudah pasti bukan merupakan tahun kabisat.
Jika angka tahun itu tidak habis dibagi 400, tidak habis dibagi 100
akan tetapi habis dibagi 4, maka tahun itu merupakan tahun kabisat.
Jika angka tahun tidak habis dibagi 400, tidak habis dibagi 100, dan
tidak habis dibagi 4, maka tahun tersebut bukan merupakan tahun
kabisat.*/

b. Output
Pada program diatas, cukup menggunakan pengkondisian dengan menerapkan algoritma
menentukan tahun kabisat. Terdapat algoritme mudah untuk menentukan apakah suatu
tahun termasuk tahun kabisat atau bukan sebagai berikut:

-Jika angka tahun itu habis dibagi 400, maka tahun itu sudah pasti tahun kabisat.
-Jika angka tahun itu tidak habis dibagi 400 tetapi habis dibagi 100, maka tahun itu sudah
pasti bukan merupakan tahun kabisat.
-Jika angka tahun itu tidak habis dibagi 400, tidak habis dibagi 100 akan tetapi habis
dibagi 4, maka tahun itu merupakan tahun kabisat.
-Jika angka tahun tidak habis dibagi 400, tidak habis dibagi 100, dan tidak habis dibagi 4,
maka tahun tersebut bukan merupakan tahun kabisat.

Anda mungkin juga menyukai