Monday, December 26, 2016

Bab 5. Soal & Penyelesaian Java


5
Perulangan






Statemen-statemen iterasi (perulangan) pada Java adalah while, for, dan do-while. Ketiga statemen inilah yang dinamakan dengan loop. Seperti yang Anda ketahui, loop secara berulang mengeksekusi sehimpunan instruksi sampai kondisi terminasi terpenuhi.

Statemen-Statemen Iterasi
Loop while merupakan statemen loop paling fundamental pada Java. Statemen ini mengeksekusi secara berulang suatu statemen atau blok statemen ketika ekspresi pengendali bernilai true. Berikut adalah format umumnya:

while (kondisi) {
    // tubuh loop
}

Loop do-while selalu mengeksekusi tubuhnya minimal sebanyak sekali, karena ekspresi kondisional berada di bawah loop. Format umunya adalah

do {
    // tubuh loop
} while (kondisi)

Setiap iterasi pada loop do-while pertama-tama mengeksekusi tubuh loop dan kemudian mengevaluasi ekspresi kondisional. Jika ekspresi ini bernilai true, maka loop akan berulang. Sebaliknya, loop akan berhenti. Sama seperti semua loop Java, kondisi harus merupakan ekspresi Boolean.

Berikut adalah format umum dari statemen for:

for (inisialisasi; kondisi; iterasi) {
    // tubuh loop
}

Jika hanya ada satu statemen yang akan dieksekusi secara berulang, maka kurung kurawal ({ dan }) tidak diperlukan.



Soal dan Penyelesaian
1.       Tulislah sebuah program yang menggunakan loop while untuk menghitung mundur dari 10, kemudian menampilkan sepuluh baris yang memuat “tik”.

Penyelesaian

//Demo while
public class DemoWhile {
    public static void main(String args[]) {
        int n = 10;

        while(n > 0) {
            System.out.println("tik " + n);
            n--;
        }
    }
}

Keluaran Program

tik 10
tik 9
tik 8
tik 7
tik 6
tik 5
tik 4
tik 3
tik 2
tik 1

2.       Tubuh loop while (atau loop Java lainnnya) bisa kosong. Ini karena statemen null (yang hanya merupakan titik-koma) secara sintaks valid pada Java. Tulislah program untuk mengilustrasikan situasi ini.

Penyelesaian

//Tubuh loop bisa kosong
public class TubuhWhileKosong {
    public static void main(String args[]) {
        int i, j;
        i = 100;
        j = 200;

        // mencari titik tengah antara i dan j
        while(++i < --j) ; // tidak ada tubuh loop ini

        System.out.println("Titik-tengah adalah " + i);
    }
}

Keluaran Program

Titik-tengah adalah 150

3.       Tulislah sebuah program yang membaca suatu masukan dari pengguna yang akan dipakai sebagai bagian dari ekspresi kondisional pada loop while.

Penyelesaian

import java.util.Scanner;
public class DemoWhileBaca {
    public static void main(String[] args) {
        int kounter, angka;

        System.out.println("Masukkan sebuah angka");
        Scanner papantik = new Scanner(System.in);

        angka = papantik.nextInt();
        kounter = 1;

        while (kounter <= angka) {
            System.out.print(kounter + ", ");
            kounter++;
        }

        System.out.println();
        System.out.println("Hidup Indonesia!.");
    }
}

Keluaran Program

Masukkan sebuah angka
3
1, 2, 3,
Hidup Indonesia!.

4.       Tulislah sebuah program yang menggunakan loop while untuk menghasilkan runtun Fibonacci yang bernilai kurang dari 1000. Runtun Fibonacci didefinisikans sebagai


Penyelesaian

public class WhileUntukFibonacci {
    public static void main(String[] args) {
        System.out.print(0);
   
        int fib0 = 0;
        int fib1 = 1;
        int fib2 = fib1 + fib0;

        while (fib2 < 1000) {
            fib0 = fib1;
            fib1 = fib2;
            fib2 = fib1 + fib0;
            System.out.print(", " + fib1);
        }
    }
}

Keluaran Program

0, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987

5.       Tulislah sebuah program yang menggunakan loop while untuk menguji keprimaan suatu angka.

Penyelesaian

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

        System.out.println("x = " + x);
        int n = (int)Math.floor(101*x);
        boolean apaPrima = (n > 1);
        int d = 2;

        while (apaPrima && d < n)
            apaPrima = (n % d++ != 0 );

        if (apaPrima) System.out.println(n + " adalah prima.") ;
        else System.out.println(n + " bukan prima.");
    }
}

Keluaran Program

x = 0.117919505
11 adalah prima.

6.       Tulislah sebuah program untuk menghitung logaritma biner diskrit berikut:


Logaritma atas sebuah angka positif x dengan basis b adalah b dipangkat y yang sama dengan x. Logaritma biner (basis 2) atas sebuah angka positif x adalah 2 dipangkat y yang sama dengan x. Jadi, logaritma biner diskrit atas sebuah angka positif x adalah integer terdekat dari 2 dipangkat dengan y yang kurang dari atau sama dengan x.

Penyelesaian

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

        float x = acak.nextFloat();
        x = 999999*x+2;
        int y = 0;
        int n = 1;

        while (n <= x) {
            n *= 2;
            ++y;
            System.out.println("n= "+ n + "\ty = " + y);
        }

        --y;
        System.out.println("                             x: "+ x);
        System.out.println("Logaritma biner diskrit atas x: " + y);
        float lgx = (float)(Math.log(x)/Math.log(2.0));
        System.out.println("Logaritma biner kontinya atas x: " + lgx);
    }
}

Keluaran Program

n= 2          y = 1
n= 4          y = 2
n= 8          y = 3
n= 16         y = 4
n= 32         y = 5
n= 64         y = 6
n= 128        y = 7
n= 256        y = 8
n= 512        y = 9
n= 1024              y = 10
n= 2048              y = 11
n= 4096              y = 12
n= 8192              y = 13
n= 16384      y = 14
n= 32768      y = 15
n= 65536      y = 16
n= 131072     y = 17
n= 262144     y = 18
n= 524288     y = 19
n= 1048576    y = 20
                             x: 925551.06
Logaritma biner diskrit atas x: 19
Logaritma biner kontinya atas x: 19.819954

7.       Tulislah sebuah program untuk menghitung GCD (greatest common divisor) dari dua angka yang dibangkitkan secara acak, menggunakan loop while.

Penyelesaian

import java.util.Random;
public class WhileGCD {
    public static void main(String[] args) {
        Random acak = new Random();
   
        float x = acak.nextFloat();
        int m = Math.round(999*x + 2);
        x = acak.nextFloat();
        int n = Math.round(999*x + 2);
        System.out.println("m= "+ m + "\t\t n= " + n);

        while (m > 0) {
            if (m < n) {
                int temp = m;
                m = n;
                n = temp;
                System.out.println("m= "+ m + "\t\t n= " + n);
            }
            m -= n;
        }
        System.out.println("GCD atas m dan n adalah " + n);
    }
}

Keluaran Program

m= 771        n= 291
m= 291        n= 189
m= 189        n= 102
m= 102        n= 87
m= 87         n= 15
m= 15         n= 12
m= 12         n= 3
GCD atas m dan n adalah 3

8.       Tulislah program versi do-while dari soal no.1.

Penyelesaian

//Demonstrasi loop do-while
public class DemoDoWhile {
    public static void main(String args[]) {
        int n = 10;

        do {
            System.out.println("tik " + n);
            n--;
        } while(n > 0);
    }
}

Keluaran Program

tik 10
tik 9
tik 8
tik 7
tik 6
tik 5
tik 4
tik 3
tik 2
tik 1

9.       Tulislah sebuah program yang menggunakan loop do-while untuk memproses seleksi pada suatu menu.

Penyelesaian

//Menggunakan loop do-while untuk memproses suatu menu
public class DoWhileUntukMenu {
    public static void main(String args[])
        throws java.io.IOException {

        char pilihan;
        do {
            System.out.println("Silahkan pilih:");
            System.out.println(" 1. if");
            System.out.println(" 2. switch");
            System.out.println(" 3. while");
            System.out.println(" 4. do-while");
            System.out.println(" 5. for\n");
            System.out.println(" Pilih satu:");

            pilihan = (char) System.in.read();
        } while( pilihan < '1' || pilihan > '5');

        System.out.println("\n");

        switch(pilihan) {
            case '1':
                System.out.println("Statemen if:\n");
                System.out.println("if(kondisi) statemen;");
                System.out.println("else statemen;");
                break;

            case '2':
                System.out.println("Statemen switch:\n");
                System.out.println("switch(ekspresi) {");
                System.out.println(" case konstanta:");
                System.out.println(" runtun statemen");
                System.out.println(" break;");
                System.out.println(" // ...");
                System.out.println("}");
                break;

            case '3':
                System.out.println("Loop while:\n");
                System.out.println("while(kondisi) statemen;");
                break;

            case '4':
                System.out.println("Loop do-while:\n");
                System.out.println("do {");
                System.out.println(" statemen;");
                System.out.println("} while (kondisi);");
                break;

            case '5':
                System.out.println("Loop for:\n");
                System.out.print("for(inisialisasi; kondisi; iterasi)");
                System.out.println(" statemen;");
                break;
        }
    }
}

Keluaran Program

Silahkan pilih:
 1. if
 2. switch
 3. while
 4. do-while
 5. for

Pilih satu:
4


Loop do-while:

do {
 statemen;
} while (kondisi);

10.    Tulislah program versi do-while dari soal no.3.

Penyelesaian

import java.util.Scanner;
public class DoWhileBaca {
    public static void main(String[] args) {
        int kounter, angka;

        System.out.println("Masukkan sebuah angka");
        Scanner papantik = new Scanner(System.in);
        angka = papantik.nextInt();
        kounter = 1;

        do {
            System.out.print(kounter + ", ");
            kounter++;
        } while (kounter <= angka);

        System.out.println();
        System.out.println("Hidup Indonesia!");
    }
}

Keluaran Program

Masukkan sebuah angka
3
1, 2, 3,
Hidup Indonesia!

11.    Tulislah sebuah program yang menggunakan loop do-while untuk menghitung faktorial.

Penyelesaian

import java.util.Random;
public class DoWhileFaktorial {
    public static void main(String[] args) {
        Random acak = new Random();
   
        float x = acak.nextFloat();
        int n = Math.round(21*x);
        long f = 1;
        int k = 1;

        do
            f *= k++;
        while (k <= n);

        System.out.println(n+ " ! = " + f ) ;
    }
}

Keluaran Program

10 ! = 3628800

12.    Tulislah program versi do-while dari soal no.5.

Penyelesaian

import java.util.Random;
public class DoWhilePrima {
    public static void main(String[] args) {
        Random acak = new Random();
   
        float x = acak.nextFloat();
        System.out.println("x= " + x);
        int n = Math.round(97*x + 2);
        boolean apaPrima;
        int d = 2;

        do
            apaPrima = (n % d++ != 0);
        while (apaPrima && d < n);

        if (apaPrima) System.out.println(n + " adalah prima.");
        else System.out.println(n + " bukan prima.");
    }
}

Keluaran Program

x= 0.28035682
29 adalah prima.

13.    Tulislah sebuah program yang mengimplementasikan algoritma Babylonian menggunakan loop do-while untuk menghitung akar kuadrat.

Penyelesaian

import java.util.Random;
public class DoWhileBabylonian {
    public static void main(String[] args) {
        final double TOL = 0.5E-15;
   
        Random acak = new Random();
        double x = acak.nextDouble();
        System.out.println("\tx= " + x);

        do {
            x = (x + 2.0/x)/2;
            System.out.println("\tx = " + x);
        } while (Math.abs(x*x - 2.0) > TOL*2*x);

        System.out. println("sqrt(2.0) = " + Math.sqrt (2.0)) ;
    }
}

Keluaran Program

x= 0.10805864536113496
       x = 9.308263416194997
       x = 4.761563132766911
       x = 2.5907966333093677
       x = 1.6813799823490092
       x = 1.4354395483822262
       x = 1.4143704977461546
       x = 1.4142135710796933
       x = 1.414213562373095
sqrt(2.0) = 1.4142135623730951

14.    Tulislah program versi loop for dari soal no.1.

Penyelesaian

public class DemoFor {
    public static void main(String args[]) {
    int n;

    for(n=10; n>0; n--)
        System.out.println("tik " + n);
    }
}

Keluaran Program

tik 10
tik 9
tik 8
tik 7
tik 6
tik 5
tik 4
tik 3
tik 2
tik 1

15.    Tulislah program versi loop for dari soal no.5.

Penyelesaian

public class ForPrima {
    public static void main(String args[]) {
        int angka;
        boolean apaPrima = true;
        angka = 14;

        for(int i=2; i <= angka/i; i++) {
            if((angka % i) == 0) {
              apaPrima = false;
              break;
            }
        }

        if(apaPrima) System.out.println("Prima");
        else System.out.println("Bukan Prima");
    }
}

Keluaran Program

Bukan Prima

16.    Ekspresi inisialisasi atau iterasi pada loop for bisa diabaikan. Tunjukkan hal tersebut pada sebuah program.

Penyelesaian

public class VariasiFor {
    public static void main(String args[]) {
        boolean selesai = false;
        int i;
        i = 0;

        for( ; !selesai; ) {
            System.out.println("i bernilai " + i);
            if(i == 10) selesai = true;
            i++;
        }
    }
}

Keluaran Program

i bernilai 0
i bernilai 1
i bernilai 2
i bernilai 3
i bernilai 4
i bernilai 5
i bernilai 6
i bernilai 7
i bernilai 8
i bernilai 9
i bernilai 10

17.    Tulislah sebuah program untuk menghasilkan keluaran daftar karakter dari suatu rentang nilai ASCII yang diberikan.

Penyelesaian

public class ForDaftarHuruf {
    public static void main(String[] args) {
        for(char c = 0; c < 128; c++)
            if(Character.isLowerCase(c))
                System.out.println("nilai: " + (int)c +
                                   " karakter: " + c);
    }
}

Keluaran Program

nilai: 97 karakter: a
nilai: 98 karakter: b
nilai: 99 karakter: c
nilai: 100 karakter: d
nilai: 101 karakter: e
nilai: 102 karakter: f
nilai: 103 karakter: g
nilai: 104 karakter: h
nilai: 105 karakter: i
nilai: 106 karakter: j
nilai: 107 karakter: k
nilai: 108 karakter: l
nilai: 109 karakter: m
nilai: 110 karakter: n
nilai: 111 karakter: o
nilai: 112 karakter: p
nilai: 113 karakter: q
nilai: 114 karakter: r
nilai: 115 karakter: s
nilai: 116 karakter: t
nilai: 117 karakter: u
nilai: 118 karakter: v
nilai: 119 karakter: w
nilai: 120 karakter: x
nilai: 121 karakter: y
nilai: 122 karakter: z

18.    Tulislah sebuah program yang menggunakan loop for untuk mengakumulasi penjumlahan.

Penyelesaian

import java.util.Random;
public class ForAkumulasi {
    public static void main(String[] args) {
        Random acak = new Random();
   
        float jum = 0;

        for (int i = 0; i < 5; i++) {
            float x = acak.nextFloat();
            jum += x;
            System.out.println("\tx= " + x + "\t\tjum= " + jum);
        }
    }
}

Keluaran Program

x= 0.70382637        jum= 0.70382637
x= 0.32614684        jum= 1.0299733
x= 0.9151373         jum= 1.9451106
x= 0.42224544        jum= 2.367356
x= 0.93935806        jum= 3.306714

19.    Tulislah program versi lain dari soal no. 15 untuk menguji keprimaan suatu angka.

Penyelesaian

import java.util.Random;
public class ForKeprimaan {
    public static void main(String[] args) {
        Random random = new Random();
   
        float x = random.nextFloat();
        System.out.println("x = " + x) ;
        int n = (int)Math.floor(99*x+2);

        for (int d = 2; d < n; d++)
            if (n%d == 0) {
                System.out.println(n + " bukan prima.");
                return;
            }
        System.out.println(n + " prima.");
    }
}

Keluaran Program

x = 0.11275619
13 prima.

20.    Tulislah sebuah program yang menggunakan statemen break untuk menghentikan loop for.

Penyelesaian

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

        float x = acak.nextFloat();
        System.out.println("x = " + x);
        int n = (int)Math.floor(101*x);
        boolean apaTidakPrima = (n < 2);

        for (int d = 2; d < n; d++) {
            apaTidakPrima = (n%d == 0);
            if (apaTidakPrima) break;
        }

        if (apaTidakPrima) System.out.println(n + " bukan prima.");
        else System.out.println(n + " prima.");
    }
}

Keluaran Program

x = 0.75748885
76 bukan prima.

21.    Tulislah sebuah program yang menampilkan isi dari suatu array menggunakan loop for-each.

Penyelesaian

//Demonstrasi loop for-each
public class DemoForEach {
    public static void main(String args[]) {
        int angka[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
        int jum = 0;

        // menggunakan gaya for-wach
        for(int x : angka) {
            System.out.println("Nilai adalah: " + x);
            jum += x;
        }

        System.out.println("Penjumlahan akumulasi: " + jum);
    }
}

Keluaran Program

Nilai adalah: 1
Nilai adalah: 2
Nilai adalah: 3
Nilai adalah: 4
Nilai adalah: 5
Nilai adalah: 6
Nilai adalah: 7
Nilai adalah: 8
Nilai adalah: 9
Nilai adalah: 10
Penjumlahan akumulasi: 55

22.    Dimisalkan Anda memiliki sebuah array float yang berisi nilai-nilai acak, gunakanlah loop for-each untuk menampilkan tiap elemen array tersebut.

Penyelesaian

import java.util.*;
public class ForEachFloat {
    public static void main(String[] args) {
        Random acak = new Random(47);

        float f[] = new float[10];
        for(int i = 0; i < 10; i++)
            f[i] = acak.nextFloat();

        for(float x : f)
            System.out.println(x);
    }
}

Keluaran Program

0.72711575
0.39982635
0.5309454
0.0534122
0.16020656
0.57799757
0.18847865
0.4170137
0.51660204
0.73734957

23.    Tulislah versi lain dari program pada soal no. 21, tetapi dengan memanfaatkan statemen break agar hanya lima nilai yang ditampilkan.

Penyelesaian

public class ForEachBreak {
    public static void main(String args[]) {
        int jum = 0;
        int angka[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

        // menampilkan nilai-nilai dan penjumlahan akumulatif
        for(int x : angka) {
            System.out.println("Nilai adalah: " + x);
            jum += x;
            if(x == 5) break; // menghentikan loop ketika x bernilai 5
        }

        System.out.println("Penjumlahan atas 5 elemen pertama: " + jum);
    }
}

Keluaran Program

Nilai adalah: 1
Nilai adalah: 2
Nilai adalah: 3
Nilai adalah: 4
Nilai adalah: 5
Penjumlahan atas 5 elemen pertama: 15

24.    Tulislah sebuah program untuk membuktikan bahwa loop for-each tidak dapat dipakai untuk memodifikasi isi suatu array.

Penyelesaian

public class ForEachTidakBisaModifikasi {
    public static void main(String args[]) {
        int angka[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

        for(int x : angka) {
            System.out.print(x + " ");
            x = x * 10; // tidak berpengaruh pada array angka
        }

        System.out.println();

        for(int x : angka)
            System.out.print(x + " ");
            System.out.println();
        }
}

Keluaran Program

1 2 3 4 5 6 7 8 9 10
1 2 3 4 5 6 7 8 9 10

25.    Tulislah sebuah program yang menggunakan loop for-each untuk menjelajah array dua-dimensi.

Penyelesaian

public class ForEachDuaDimensi {
    public static void main(String args[]) {
        int jum = 0;
        int angka[][] = new int[3][5];

        // mengisi array angka
        for(int i = 0; i < 3; i++)
            for(int j=0; j < 5; j++)
                angka[i][j] = (i+1)*(j+1);
               
        // menampilkan isi dan penjumlahan elemen-elemen array
        for(int x[] : angka) {
            for(int y : x) {
                System.out.println("Nilai adalah: " + y);
                jum += y;
            }
        }

        System.out.println("Penjumlahan akumulasi: " + jum);
    }
}

Keluaran Program

Nilai adalah: 1
Nilai adalah: 2
Nilai adalah: 3
Nilai adalah: 4
Nilai adalah: 5
Nilai adalah: 2
Nilai adalah: 4
Nilai adalah: 6
Nilai adalah: 8
Nilai adalah: 10
Nilai adalah: 3
Nilai adalah: 6
Nilai adalah: 9
Nilai adalah: 12
Nilai adalah: 15
Penjumlahan akumulasi: 90

26.    Tulislah sebuah program yang menggunakan statemen continue agar menyebabkan dua angka ditampilkan pada tiap baris.

Penyelesaian

public class DemoContinue {
    public static void main(String args[]) {
        for(int i=0; i<10; i++) {
            System.out.print(i + " ");
            if (i%2 == 0) continue;
                System.out.println("");
        }
    }
}

Keluaran Program

0 1
2 3
4 5
6 7
8 9

27.    Tulislah lagi program yang mengilustrasikan penggunaan statemen continue, dimana terdapat label di dalamnya.

Penyelesaian

public class DemoContinue2 {
    public static void main(String args[]) {
        luar: for (int i=0; i<10; i++) {
            for(int j=0; j<10; j++) {
                if(j > i) {
                    System.out.println();
                    continue luar;
                }

                System.out.print(" " + (i * j));
            }
        }

        System.out.println();
    }
}

Keluaran Program

0
 0 1
 0 2 4
 0 3 6 9
 0 4 8 12 16
 0 5 10 15 20 25
 0 6 12 18 24 30 36
 0 7 14 21 28 35 42 49
 0 8 16 24 32 40 48 56 64
 0 9 18 27 36 45 54 63 72 81

28.    Gunakan dua loop for bersarang untuk menampilkan tabel perkalian.

Penyelesaian

public class DemoForTabelKebenaran {
    public static void main(String[] args) {
        final int UKURAN = 15;

        for (int x = 1; x <= UKURAN; x++) {
            for (int y = 1; y <= UKURAN; y++) {
                int z = x*y;
                if (z < 10) System.out.print(" ");
                if (z < 100) System.out.print(" ");
                System.out.print(" " + z ) ;
            }
            System.out.println();
        }
    }
}

Keluaran Program

   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15
   2   4   6   8  10  12  14  16  18  20  22  24  26  28  30
   3   6   9  12  15  18  21  24  27  30  33  36  39  42  45
   4   8  12  16  20  24  28  32  36  40  44  48  52  56  60
   5  10  15  20  25  30  35  40  45  50  55  60  65  70  75
   6  12  18  24  30  36  42  48  54  60  66  72  78  84  90
   7  14  21  28  35  42  49  56  63  70  77  84  91  98 105
   8  16  24  32  40  48  56  64  72  80  88  96 104 112 120
   9  18  27  36  45  54  63  72  81  90  99 108 117 126 135
  10  20  30  40  50  60  70  80  90 100 110 120 130 140 150
  11  22  33  44  55  66  77  88  99 110 121 132 143 154 165
  12  24  36  48  60  72  84  96 108 120 132 144 156 168 180
  13  26  39  52  65  78  91 104 117 130 143 156 169 182 195
  14  28  42  56  70  84  98 112 126 140 154 168 182 196 210
  15  30  45  60  75  90 105 120 135 150 165 180 195 210 225

29.    Tulislah suatu program yang menggunakan loop for untuk menghitung


Penyelesaian

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

        float x = acak.nextFloat();
        System.out.println("x= " + x);
        int n = (int)Math.floor(99*x+2);
        System.out.println("n= " + n);
        int jum = 0;

        for (int i = 1; i <= n; i++)
            jum += i*i;

        int formula = n*(n+1)*(2*n+1)/6;
        System.out.println("jum= " + jum);
        System.out.println("n*(n+l)*(2*n+l)/6 = " + formula);
    }
}

Keluaran Program

x= 0.0011000633
n= 2
jum= 5
n*(n+l)*(2*n+l)/6 = 5








2 comments:

  1. Logika Pemrograman: Bab 5. Soal And Penyelesaian Java >>>>> Download Now

    >>>>> Download Full

    Logika Pemrograman: Bab 5. Soal And Penyelesaian Java >>>>> Download LINK

    >>>>> Download Now

    Logika Pemrograman: Bab 5. Soal And Penyelesaian Java >>>>> Download Full

    >>>>> Download LINK

    ReplyDelete