Kuis tryout 1 mata kuliah Dasar-Dasar Pemrograman 2 Fasilkom UI berisi soal pilihan ganda dan esai tentang konsep-konsep dasar Java seperti tipe data, pewarisan, package, class, objek, dan string builder. Soal-soal tersebut bertujuan mengetes pemahaman mahasiswa terhadap materi pemrograman dasar yang telah diajarkan.
1 of 9
Download to read offline
More Related Content
[PUBLIC] quiz-01-midterm-solutions.pdf
1. F
a
s
i
l
k
o
m
U
I
KUIS TRYOUT 1 DASAR-DASAR PEMROGRAMAN 2 - FASILKOM UI
Tanggal: 2022.03.23
Waktu Pengerjaan: 70 menit
Penyusun Soal: Tim DDP 2 G
Catatan: Dilarang bekerja sama secara aktif dengan pihak lain, dilarang mencontek,
kejujuran akan sangat dihargai & kecurangan akan sangat merugikan Anda sendiri
PG (Urutan pilihan jawaban akan diacak pada LMS)
1. Manakah pernyataan yang benar terkait Java?
a. Pemeriksaan tipe dari sebuah variabel dilakukan saat proses kompilasi (sebelum program
berjalan).
b. Semua data/nilai adalah Object.
c. Source code dalam bahasa pemrograman Java tidak portable.
d. Java menggunakan interpreter untuk mentranslasikan source code menjadi byte code.
2. Apakah yang akan dicetak oleh potongan program berikut?
boolean x = false || (!!!false && true);
boolean y = !(true && (false || !!false));
System.out.println(x + " " + y);
a. true true
b. true false
c. false true
d. false false
3. Berikut adalah pernyataan yang benar mengenai konvensi penamaan pada Java, kecuali:
a. Kebab case digunakan untuk nama konstanta
b. Camel case digunakan untuk nama variabel
c. Pascal case digunakan untuk nama class
d. Camel case digunakan untuk nama fungsi
4. Manakah yang merupakan superclass dari java.lang.Integer?
Petunjuk: Pelajari https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/lang/Integer.html
a. java.lang.Number
b. java.lang.Subject
c. java.lang.Numeric
d. java.lang.BigInteger
2. F
a
s
i
l
k
o
m
U
I
5. Jenis pewarisan (inheritance) manakah yang paling tepat untuk kode Java berikut:
public class D { ..... }
public class E extends D { ..... }
public class F extends E { ..... }
public class G extends F { ..... }
a) Multilevel inheritance
b) Single inheritance
c) Hierarchical inheritance
d) Multiple inheritance
6. Perhatikan kode berikut ini. Pemanggilan method mystery() tersebut akan disimpan ke
dalam variabel result. Persamaan matematika apakah yang dapat dinyatakan dari program
tersebut?
public static long mystery(int a, int b) {
return mysteryHelper(a, b, 0);
}
public static long mysteryHelper(int a, int b, long count) {
if (b == -1) { // Base case
return count;
}
count += Math.pow(a, b);
b--;
return mysteryHelper(a, b, count);
}
a) result = ab
+ (a-1)b
+ (a-2)b
+ + (0)b
b) result = ab
+ (a-1)b
+ (a-2)b
+ + (0)b
+ (-1)b
c) result = ab
+ ab-1
+ ab-2
+ + a0
d) result = ab
+ ab-1
+ ab-2
+ + a0
+ a-1
3. F
a
s
i
l
k
o
m
U
I
7. Diketahui suatu proyek Java dengan susunan (layout) package dan class sebagai berikut:
Jika GroupPairing bukan merupakan subclass dari Student dan Student adalah suatu public
class, atribut dan method Student dengan access modifier apa saja yang bisa diakses dari
GroupPairing?
a. Public, protected, default (no modifier), private
b. Public, protected, default (no modifier)
c. Public dan protected saja
d. Public saja
ESAI
ESAI-01: Lengkapilah kode program di bawah ini agar program mencetak String "Halo!".
public static void main(String args[]) {
int v = 3;
int w = 7;
int x = 13;
int y = w * v % x / __ISIAN__++;
int z = ++y + x-- * --v / __ISIAN__;
if (z % 2 == __ISIAN__) {
System.out.println("Hai!");
} else {
System.out.println("__ISIAN__");
}
}
Jawaban:
public static void main(String args[]) {
int v = 3;
int w = 7;
int x = 13;
int y = w * v % x / v++;
int z = ++y + x-- * --v / w;
4. F
a
s
i
l
k
o
m
U
I
if (z % 2 == 1) {
System.out.println("Hai!");
} else {
System.out.println("Halo!");
}
}
ESAI-02:
Jelaskan dengan detail apa yang dilakukan oleh method doSomething() serta berikan dua
contoh input dan output dari method tersebut!
public static String doSomething(String input) {
return doSomethingHelper(input, true, "");
}
public static String doSomethingHelper(String input, boolean flag, String result) {
if (input.length() == 0) {
return "";
} else if (input.length() == 1) {
if (flag) {
result += input.charAt(0);
}
return result;
} else {
if (flag) {
result += input.charAt(0);
}
return doSomethingHelper(input.substring(1), !flag, result);
}
}
Jawaban:
Mencetak karakter berindeks genap pada String input.
Contoh:
- doSomething("01234567") mengembalikan "0246"
- doSomething("abcd") mengembalikan "ac"
ESAI-03:
Perhatikan kode Vehicle.java berikut:
5. F
a
s
i
l
k
o
m
U
I
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
package sc;
class Stuff {
public String toString() {
return "Stuff";
}
}
public class Vehicle extends Stuff {
public String toString() {
return "Vehicle";
}
public static void main(String[] args) {
Stuff s = new RareBicycle();
System.out.println(s);
}
}
class Bicycle extends Vehicle {
public String toString() {
return "Bicycle";
}
}
class RareBicycle extends Bicycle {
}
class Car extends Vehicle {
public String toString() {
return "Car";
}
}
Apa yang dicetak? Jelaskan jawaban Anda dalam kaitannya terhadap dynamic binding!
Jawaban tanpa penjelasan akan bernilai 0.
Jawaban:
Yang dicetak: Bicycle
6. F
a
s
i
l
k
o
m
U
I
Terjadi dynamic binding: Diberikan suatu method, misal m(), yang dipanggil pada suatu object
dari class C. Jika terdapat definisi method m() pada class C, panggil definisi method m()
tersebut. Jika tidak, cari method m() di parent class dari C (atau telusuri hierarki class sampai
definisi method m() ditemukan). Pada kasus kode di atas, dynamic binding terjadi pada method
toString() untuk object s.
ESAI-04:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package sc;
class AB {
static private int x = 1;
static int y = 2;
static protected int z = 3;
}
class C extends AB {
public static void f() {
System.out.println(AB.w);
System.out.println(AB.x);
System.out.println(AB.y);
System.out.println(AB.z);
}
}
Perhatikan kode di atas. Masalah-masalah apa saja yang terdapat pada kode di atas?
Jelaskan! Serta, jelaskan pula apa itu access modifier protected?
Jawaban:
Kode tersebut tidak dapat di-compile. Terdapat dua isu pada kode tersebut:
1) Baris 14 terkait System.out.println(AB.w) di mana w tidak dapat di-resolve.
2) Baris 15 terkait System.out.println(AB.x) di mana x tidak visible karena memiliki access
modifier private.
Access modifier protected: Field/method yang memakai protected hanya bisa diakses pada
package yang sama, atau subclassnya (yang bisa juga terdapat di package yang lain).
Sumber: https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html
7. F
a
s
i
l
k
o
m
U
I
ESAI-05:
Apa yang dicetak oleh kode berikut? Beri penjelasan line-by-line!
1
2
3
4
5
6
7
8
9
10
11
12
13
import java.util.Arrays;
public class Tes {
public static void main(String[] args) {
int[] arr1 = new int[]{5,7,13,4,9,23};
int[] arr2 = arr1;
arr2[3] = 17;
arr1[4] = 11;
int[] arr3 = Arrays.copyOf(arr1, 5);
arr1[2] = 9;
System.out.println(Arrays.toString(arr3));
}
}
Jawaban:
Yang dicetak adalah: [5, 7, 13, 17, 11]
Penjelasan:
Pada line ke-5, diinisiasi suatu array baru dengan tipe data integer ke variabel bernama arr1.
Pada line ke-6, dibuat variabel baru, yaitu arr2 yang menyimpan reference array arr1.
Pada line ke-7, indeks ke-3 dari arr2 diubah. Karena arr2 menyimpan reference array yang
sama dengan arr1, maka arr1 juga ikut terubah, sehingga keduanya jadi [5, 7, 13, 17, 9, 23].
Pada line ke-8, indeks ke-4 dari arr1 diubah. Sama seperti sebelumnya, karena reference
array-nya sama dengan arr2, maka arr2 juga ikut berubah sehingga keduanya menjadi [5, 7, 13,
17, 11, 23].
Pada line ke-9, dibuat variabel baru, yaitu arr3 yang melakukan penyalinan (via copyOf)
terhadap arr1 sepanjang 5, sehingga arr3 memiliki nilai [5, 7, 13, 17, 11].
Pada line ke-10, indeks ke-2 dari arr1 diubah. Perubahan ini memengaruhi arr2, tetapi tidak
untuk arr3 (karena arr3 merupakan hasil dari penyalinan via copyOf). Di sini, arr3 sekarang
menyimpan array yang berbeda dari arr1 dan arr2.
Pada line ke-11, akan dicetak array arr3 yang valuenya adalah [5, 7, 13, 17, 11].
ESAI-06:
Perhatikan kode mystery() berikut yang menerima parameter array 2 dimensi dengan ukuran
2x2.
8. F
a
s
i
l
k
o
m
U
I
public static int[][] mystery(int[][] array1, int[][] array2) {
int[][] array = new int[2][2];
for (int x = 0; x < 2; x++) {
for (int y = 0; y < 2; y++) {
for (int z = 0; z < 2; z++) {
array[x][y] += array1[x][z] * array2[z][y];
}
}
}
return array;
}
Diberikan suatu array1 = [[2, 4], [3,5]] dan array2 = [[3, 1], [4, 7]]. Apa isi array yang di-return
oleh method tersebut? Apa yang sebenarnya dilakukan oleh program tersebut?
Jawaban:
Array tersebut berisikan [[22, 30], [29,38]]. Program tersebut melakukan matrix multiplication.
ESAI-07:
Perhatikan kode berikut:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.util.Scanner;
public class Main {
public static StringBuilder process(StringBuilder s) {
// lengkapi method ini
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
StringBuilder s = new StringBuilder(7);
s.append(in.nextLine());
String p = process(s).toString();
System.out.println(p);
}
}
Apabila diberikan input "detar", program akan mencetak output "rated7". Apabila diberikan input
"rednow", program akan mencetak output "wonder7". Gunakan method-method yang terdapat
pada java.lang.StringBuilder untuk melengkapi method process() di atas.
Jawaban:
1
2
3
import java.util.Scanner;
public class Main
9. F
a
s
i
l
k
o
m
U
I
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
public static StringBuilder process(StringBuilder s) {
// lengkapi method ini
s.reverse();
s.append('7');
return s;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
StringBuilder s = new StringBuilder(7);
s.append(in.nextLine());
String p = process(s).toString();
System.out.println(p);
}
}
Penjelasan:
Misalnya input adalah "detar". Pada Baris 14, terjadi construction object StringBuilder kosong
dengan kapasitas 7, yang selanjutnya object tersebut di-assign ke variabel s. Lalu, "detar" akan
di-append ke s. Dalam process(), nilai s akan di-reverse menjadi "rated" dan di-append dengan
karakter '7' menjadi "rated7", yang di-return dan di-assign ke variabel p pada main() untuk
dicetak.
For further content of free Java programming course by Fasilkom UI, please visit:
https://ocw.ui.ac.id/course/view.php?id=47