Monday, December 26, 2016

Bab 4. Soal & Penyelesaian Java


4
Percabangan







Statemen Percabangan

Java menyediakan statemen percabangan if, if-else, dan switch, yang bisa dipakai untuk membuat keputusan.

Sintaks statemen if adalah

if (kondisi) statemen;

dimana kondisi adalah suatu ekspresi boolean. Ekspresi boolean merupakan suatu ekspresi yang menghasilkan nilai bertipe boolean.

Statemen if-else memiliki format

if (kondisi)
    statemen1 (atau runtun statemen atau blok kode);
else
    statemen2 (atau runtun statemen atau blok kode);

Format umum statemen switch adalah:

switch (ekspresi) {
    case nilai1:
        // runtun statemen
        break;
    case nilai2:
        // runtun statemen
        break;
    ...
    case nilaiN:
        // runtun statemen
        break;
    default:
        // runtun statemen default
}

Soal dan Penyelesaian
1.       Tulislah sebuah program untuk membangkitkan angka-angka secara acak. Program kemudian melaporkan bila integer yang dihasilkan adalah angka negetif.

Penyelesaian

import java.util.Random;
public class BangkitAcak {
    public static void main(String[] args) {
        Random acak = new Random();
   
        int n = acak.nextInt();
        System.out.println("n = " + n);
       
        if (n < 0)
            System.out.println("****n < 0");
           
        System.out.println ("Selamat Jalan") ;
    }
}

Keluaran Program

n = -294149811
****n < 0
Selamat Jalan

2.       Tulislah sebuah program untuk menerapkan statemen if-else.

Penyelesaian

import java.util.Scanner;
public class GunakanIfElse {
    public static final double BIAYA_ADMIN = 8000;
    public static final double SUKU_BUNGA = 0.02;

    public static void main(String[] args) {
        double saldo;
        System.out.print("Masukkan saldo Anda: Rp. ");
        Scanner keyboard = new Scanner(System.in);
        saldo = keyboard.nextDouble();
        System.out.println("Saldo awal Rp. " + saldo);

        if (saldo >= 0)
            saldo = saldo + (SUKU_BUNGA * saldo);
        else
            saldo = saldo - BIAYA_ADMIN;

        System.out.print("Setelah berjalan satu bulan ");
        System.out.println("dengan pertimbangan bunga dan biaya admin,");
        System.out.println("saldo baru Anda adalah Rp. " + saldo);
    }
}

Keluaran Program

Masukkan saldo Anda: Rp. -50000
Saldo awal Rp. -50000.0
Setelah berjalan satu bulan dengan pertimbangan bunga dan biaya admin,
saldo baru Anda adalah Rp. -58000.0

Masukkan saldo Anda: Rp. 50000
Saldo awal Rp. 50000.0
Setelah berjalan satu bulan dengan pertimbangan bunga dan biaya admin,
saldo baru Anda adalah Rp. 51000.0

3.       Tulislah sebuah program yang menggunakan objek dari kelas Random untuk membangkitkan dua integer acak, m dan n. Program kemudian menentukan integer terkecil dari kedua integer yang dibangkitkan.

Penyelesaian

import java.util.Random;
public class BangkitAcak2 {
    public static void main(String[] args){
        Random random = new Random();
        int m = random.nextInt();

        System.out.println("m= " + m);
        int n = random.nextInt();
        System.out.println("n= " + n);

        if (m < n)
            System.out.println("Nilai minimum adalah " + m);
        else
            System.out.println("Nilai minimum adalah " + n);
    }
}

Keluaran Program

m= 283235071
n= -1279684961
Nilai minimum adalah -1279684961

4.       Tulislah sebuah program yang menggunakan if-else-if bertangga atau if-else bersarang untuk menentukan musim dalam setahun.

Penyelesaian

//mendemonstrasikan if-else-if bertangga
public class DemoIfElse {
    public static void main(String args[]) {
        int bulan = 4; // April
        String musim;

        if(bulan == 12 || bulan == 1 || bulan == 2)
            musim = "Musim Dingin";
        else if(bulan == 3 || bulan == 4 || bulan == 5)
            musim = "Musim Semi";
        else if(bulan == 6 || bulan == 7 || bulan == 8)
            musim = "Musim Panas";
        else if(bulan == 9 || bulan == 10 || bulan == 11)
            musim = "Musim Gugur";
        else
            musim = "Bulan tidak valid";
       
        System.out.println("April adalah musim " + musim + ".");
    }
}

Keluaran Program

       April adalah musim Musim Semi.

5.       Tulislah sebuah program menggunakan if-else bersarang untuk menentukan nilai huruf dari ujian mahasiswa.

Penyelesaian

import java.util.Scanner;
public class DemiIfElseBersarang {
    public static void main(String[] args) {
        int skor;
        char nilai;

        System.out.println("Masukkan skor Anda: ");
        Scanner papanKetik = new Scanner(System.in);
        skor = papanKetik.nextInt();

        if (skor >= 90)
            nilai = 'A';
        else if (skor >= 80)
            nilai = 'B';
        else if (skor >= 70)
            nilai = 'C';
        else if (skor >= 60)
            nilai = 'D';
        else
            nilai = 'F';
       
        System.out.println("Skor = " + skor);
        System.out.println("Nilai = " + nilai);
    }
}

Keluaran Program

Masukkan skor Anda:
95
Skor = 95
Nilai = A

6.       Tulislah sebuah program menggunakan if-else bersarang untuk menentukan urutan dari tiga angka.

Penyelesaian

import java.util.Random;
public class UrutTigaAngka {
    public static void main(String[] args) {
        Random acak = new Random();
   
        float a = acak.nextFloat();
        System.out.println("a= " + a);
        float b = acak.nextFloat();
        System.out.println("b= " + b);
        float c = acak.nextFloat();
        System.out.println("c = " + c);

        if (a < b)
            if (b < c) System.out.println("a < b < c");
            else
                if (a < c) System.out.println("a < c < b");
                else System.out.println("c< a < b");
        else
            if (a < c) System.out.println("b< a < c");
            else
                if (b < c) System.out.println("b < c < a");
                else System.out.println("c< b < a");
    }
}

Keluaran Program

a= 0.9178046
b= 0.6348381
c = 0.99280906
b< a < c

7.       Permasalahan pada soal no.6 menjadi rumit karena menggunakan statemen if-else bersarang yang terlalu berlebihan. Kode tersebut dapat digantikan dengan menggunakan beberapa statemen if secara paralel.

Penyelesaian

import java.util.Random;
public class IfParalel {
    public static void main(String[] args) {
        Random acak = new Random();
        float a = acak.nextFloat();

        System.out.println("a= "+ a);
        float b = acak.nextFloat();
        System.out.println("b= "+ b);
        float c = acak.nextFloat();
        System.out .println("c = " + c);

        if (a < b && b < c) System.out.println("a < b < c");
        if (a < c && c < b) System.out.println("a < c < b");
        if (b < a && a < c) System.out.println("b < a < c");
        if (b < c && c < a) System.out.println("b < c < a");
        if (c < a && a < b) System.out.println("c < a < b");
        if (c < b && b < a) System.out.println("c < b < a");
    }
}

Keluaran Program

       a= 0.34742516
b= 0.26004654
c = 0.16779184
c < b < a

8.       Tulislah sebuah program yang menggunakan statemen if-else, dimana operator ||  dipakai di dalam kondisi.

Penyelesaian

import java.util.Random;
public class DemoIfElseOperator {
    public static void main(String[] args) {
        Random acak = new Random();
   
        float t = acak.nextFloat();
        System.out.println("t= " + t);

        if (t < 0.25 || t >= 0.75 )
            System.out.println("t < 0.25 atau t >= 0.75");
        else
            System.out.println("0.25 <= t < 0.75");
    }
}

Keluaran Program

t= 0.3158868
0.25 <= t < 0.75

9.       Tulislah sebuah program yang menggunakan statemen if, dimana operator ||  dipakai di dalam kondisi yang merupakan penggabungan beberapa ekspresi boolean.

Penyelesaian

public class IfOperatorGabung {
    public static void main(String[] args) {
        final int PJG = 255;
        byte penyangga[] = new byte[PJG];
        System.out .print ("Masukkan nama depan Anda: " ) ;

        try { System.in.read(penyangga,0, PJG); }
        catch (Exception e) { }

        String nama = new String(penyangga);
        System.out.println("Hai, " + nama.trim());

        char c = nama.charAt(0);
        System.out.println("Huruf pertama pada nama Anda adalah " + c);
   
        if ( c == 'A' || c == 'E' || c == 'I' || c == 'O' || c == 'U')
            System.out .println ("Yang merupakan huruf vokal.") ;
    }
}

Keluaran Program

Masukkan nama depan Anda: Osuka
Hai, Osuka
Huruf pertama pada nama Anda adalah O
Yang merupakan huruf vokal.

10.    Tulislah sebuah program yang mengilustrasikan penggunaan sederhana atas statemen switch.

Penyelesaian

//Sebuah contoh statemen switch sederhana
public class SwitchSederhana {
    public static void main(String args[]) {
        for(int i=0; i<6; i++)
            switch(i) {
                case 0:
                    System.out.println("i adalah nol.");
                    break;
                case 1:
                    System.out.println("i adalah satu.");
                    break;
                case 2:
                    System.out.println("i adalah dua.");
                    break;
                case 3:
                    System.out.println("i adalah tiga.");
                    break;
                default:
                    System.out.println("i lebih besar dari 3.");
            }
    }
}

Keluaran Program

i adalah nol.
i adalah satu.
i adalah dua.
i adalah tiga.
i lebih besar dari 3.
i lebih besar dari 3.

11.    Tulislah sebuah program yang menggunakan statemen switch, dimana pengguna memasukkan jumlah anak yang dipunyai, kemudian program akan meresponnya dengan alternatif-alternatif respon yang tergantung dari jumlah anak yang dimiliki pengguna.

Penyelesaian

import java.util.Scanner;
public class BanyakAnak {
    public static void main(String[] args) {
        int jumBayi;
        System.out.print("Masukkan jumlah bayi: ");
        Scanner papanketik = new Scanner(System.in);
        jumBayi = papanketik.nextInt();

        switch (jumBayi) {
            case 1:
                System.out.println("Selamat!.");
                break;
            case 2:
                System.out.println("Wow. Kembar!.");
                break;
            case 3:
                System.out.println("Wow. Kembar Tiga!.");
                break;
            case 4:
            case 5:
                System.out.print("Hebat! ");
                System.out.println(jumBayi + " bayi.");
                break;
            default:
                System.out.println("Saya tidak percaya!.");
                break;
        }
    }
}

Keluaran Program

Masukkan jumlah bayi: 3
Wow. Kembar Tiga!.

12.    Statemen break bersifat opsional. Jika Anda mengabaikan statemen break, maka eksekusi program akan dilanjutkan ke case berikutnya. Tulislah suatu program untuk mengilustrasikan situasi seperti ini.

Penyelesaian

//Statemen break bersifat opsional
public class BreakOpsional {
    public static void main(String args[]) {
        for(int i=0; i<12; i++)
            switch(i) {
                case 0:
                case 1:
                case 2:
                case 3:
                case 4:
                    System.out.println("i kurang dari 5");
                    break;
                case 5:
                case 6:
                case 7:
                case 8:
                case 9:
                    System.out.println("i kurang dari 10");
                    break;
                default:
                    System.out.println("i bernilai 10 atau lebih");
        }
    }
}

Keluaran Program

i kurang dari 5
i kurang dari 5
i kurang dari 5
i kurang dari 5
i kurang dari 5
i kurang dari 10
i kurang dari 10
i kurang dari 10
i kurang dari 10
i kurang dari 10
i bernilai 10 atau lebih
i bernilai 10 atau lebih

13.    Tulislah suatu program untuk memperbaiki kode pada soal no.4 dengan menggunakan statemen switch.

Penyelesaian

public class MusimDenganSwitch {
    public static void main(String args[]) {
        int bulan = 4;
        String musim;
       
        switch (bulan) {
            case 12:
            case 1:
            case 2:
                musim = "Musim Dingin";
                break;
            case 3:
            case 4:
            case 5:
                musim = "Musim Semi";
                break;
            case 6:
            case 7:
            case 8:
                musim = "Musim Panas";
                break;
            case 9:
            case 10:
            case 11:
                musim = "Musim Gugur";
                break;
            default:
                musim = "Bulan tidak valid";
        }
       System.out.println("April adalah " + musim + ".");
    }
}

Keluaran Program

April adalah Musim Semi.

14.    Tulislah suatu program untuk menentukan nilai huruf, menggunakan statemen switch.

Penyelesaian

import java.util.Random;
public class NilaiHurufSwitch {
    public static void main(String[] args) {
        Random acak = new Random();
   
        float x = acak.nextFloat();
        System.out.println("x= " + x);
        int skor = Math.round(50*x + 50);
        System.out.println("Skor Anda adalah " + skor);

        switch (skor/10) {
            case 10:
                System.out.print("Anda mendapat nilai A+" ) ;
                break;
            case 9:
                System.out.print("Anda mendapat nilai A" ) ;
                break;
            case 8:
                System.out.print("Anda mendapat nilai B" ) ;
                break;
            case 7:
                System.out.print("Anda mendapat nilai C");
                break;
            case 6:
                System.out.print("Anda mendapat nilai D");
                break;
            default:
                System.out.print("Anda mendapat nilai F");
        }
       
        if (skor >= 60 && skor < 100)
            if (skor %10 > 7 ) System.out.print("+");
            else if (skor %10 < 2) System.out.print("-");
    }
}

Keluaran Program

x= 0.3172546
Skor Anda adalah 66
Anda mendapat nilai D





2 comments: