Latihan Soal

Disini, kita akan menemukan 2 contoh kasus berupa debugging program dan live coding yang nantinya akan sangat berguna pada waktu UAS.

Debugging

Soal 1

int N = 9;
int k = N-2;
for (int i = 1 ; i < N ; i++) {
    if ((i % 7 < 2) || (i % 2 > (N - 3))) {
        k *= (N & 3);
    } else if (i % 2 >= 4) {
        k -= (k + N);
    } else {
        k = k ^ 2;
    }
}

Berapakah nilai dari k?

Soal 2

int a = 2;
int b = 3 * ++a;

for (int i = 1 ; i <= b+2 ; i++) {
    if (i % 6 <= 2) {
        b += --a * 2 + i / 2;
    } else {
        b -= 7 + ++a;
    }
}

Berapakah nilai dari b?

Soal 3

int k = 2;
int t = (k *= 2) + 3;

while (k < 10) {
    if (t <= 2 && t >= 10) {
        t %= 2;
        break;
    } else {
        while (t <= 15) {
            t++;
        }
        if (t % 4 > 4) {
            k++;
        } else {
            k += 3;
        }
    }
}

Dalam kode diatas, berapa kali looping yang dijalankan?

Soal 4

int[] arr = {3,1,9,2,3,3,4,0,-1,10,8,8,7,4,8};
int k = -1;

for (int i = 0 ; i < arr.length ; i++) {
    k = arr[i];
    for (int j = i + 1 ; j < arr.length ; j++) {
        if (k % j <= 3) {
            int temp = arr[j];
            arr[i] = arr[j];
            arr[j] = temp;
            arr[k % 3] = temp + arr[j] * 2;
        } else {
            int temp = arr[i];
            arr[j] = arr[i];
            arr[i] = temp + arr[j & 6];
        }
    }
}

Berapakah nilai array sekarang setelah operasi diatas?

Soal 5

int[] arr = {3,1,9,2,3,3,4,0,-1,10,8,8,7,4,8};
int k = 0;

for (int i = 0 ; i < arr.length ; i++) {
    k = i;
    for (int j = i ; j < arr.length ; j++) {
        if (arr[k] >= arr[j]) {
            k = j;
        }
    }
    int temp = arr[k];
    arr[k] = arr[i];
    arr[i] = temp;
}

// anggap aja fungsi isPrima(int x) sudah didefinisikan untuk mengecek bilangan prima
for (int i = 0 ; i < arr.length ; i++) {
    if (!isPrima(arr[i])) {
        arr[i % 7] = i + 5;
    } else {
        arr[i % 4] = arr[i] + 4;
    }
}

Berapakah nilai array sekarang setelah operasi diatas?

Soal 6

public static void rusak(int n) {
    if (n == 0) {
        return;
    }

    for (int i = 1 ; i <= n ; i++) {
        System.out.println("Hello");
    }

    rusak((int)n/2);
}

Berapa kali string Hello dicetak setelah pemanggilan rusak(1000)?

Soal 7

public static void rusak(int n) {
    if (n == 0) {
        return;
    }

    for (int i = 0 ; i < n ; i++) {
        System.out.println("Hello");
    }

    rusak((int)n/2);
}

Berapa kali string Hello dicetak setelah pemanggilan rusak(1000)?

Soal 8

public static int halo(int[] array, int k, int b) {
    int c = array.length;

    for (int i = 0 ; i < array.length ; i++) {
        if (i % 3 >= 3) {
            array[i] += (++c + 3);
        } else {
            array[i] += c * k++;
        }
    }

    return array[c % 4];
}

Berapakah return value dari pemanggilan halo(new int[]{4,6,7,0,-1}, 3, 6)?

Soal 9

public static int roger(int k, int b) {
    if (b == 1) return 1;
    else if (k % b == 0) return 1 + roger(k, --b);
    else return 0 + roger(k, --b);
}

Berapakah return value dari pemanggilan roger(8,8)?

Soal 10

final int k = 4;
String s = (++k <= 9 || k-- >= 4) ? "halo" : "hai";

Apakah kode diatas legal/ilegal?

Soal 11

import static java.lang.System.out;

public class GanjilGenap {

    public static void main(String[] stbld) {
       int nilai, sisa;
       java.io.Scanner masukan = new java.io.Scanner(System.in);
       out.println("Nilai angka: ");
       nilai = masukan.nextLine();

       nilai % 2 = sisa;
       switch (sisa) {
            case 0;
              System.out.println(genap);
          default;
              System.out.println(ganjil);
          break;
       }
    }
}

Temukan kesalahan dari kode diatas.

Soal 12

int num = 1;
int k = num + 9 * ++num - 1;
if (num > 0) if (num < 10) num *= 10; else num = (k += 2) + 3; else k /= 10 + --num;

Berapakah nilai num dan k?

Dan benahi potongan kode diatas agar sesuai standar.

Live Coding

Soal 1

Diberikan sebuah string str. Hitung jumlah perkata dari string tersebut dan tampilkan pula kata yang memiliki jumlah terbanyak. Symbol dan karakter lain diabaikan, dan case insensitive.

Input (string memanjang)

aku seorang bajak laut di tengah laut Somalia, sedang merompak kapal para penjajah Afrika.
Namun aku takut dengan seorang penjajah dari Afrika keturunan India.

Output

aku : 2
seorang : 2
bajak : 1
di : 1
tengah : 1
somalia : 1
sedang : 1
merompak : 1
kapal : 1
para  : 1
penjajah : 2
afrika : 2
namun : 1
takut : 1
dengan : 1
dari : 1
keturunan : 1
india : 1

kata terbanyak :
- aku
- seorang
- penjajah
- afrika

Soal 2

Buatkan program yang akan menampilkan pola berikut

N = 5

01 02 03 04 05
10 09 08 07 06
11 12 13 14 15
20 19 18 17 16
21 22 23 24 25

Soal 3

Buatkan program yang akan menghitung jumlah uppercase, lowercase, angka dan symbol lainnya dalam suatu string.

Input

pemrogramanDasarJava1

Output

uppercase : 2
lowecase : 18
angka : 1
symbol : 0

PS : soal akan terus diupdate :3