Latihan Tes Apple Academy
Materi · Pseudocode

Materi Pseudocode

Disusun bertahap dari dasar sampai tracing — tujuan akhirnya satu: membaca logika program baris demi baris dan menentukan output dengan benar, bukan menebak pola.

Notasi yang dipakai di semua contoh: ← untuk assignment (mis. x ← 5), keyword huruf besar (IF/THEN/ELSE/FOR/WHILE), MOD untuk sisa bagi, DIV untuk pembagian bulat, dan indeks array/string dimulai dari 1 (bukan 0).
Daftar Isi
Tahap 1 · Dasar
1. Variabel & Assignment 2. Tipe Data Dasar 3. Operator Matematika 4. Operator Perbandingan 5. Operator Logika
Tahap 2 · Percabangan
6. IF Sederhana 7. IF - ELSE 8. IF - ELSE IF - ELSE Berantai 9. Kondisi Gabungan (AND, OR, NOT)
Tahap 3 · Perulangan
10. FOR 11. WHILE 12. Kapan Loop Berhenti 13. Mengikuti Perubahan Nilai dalam Loop
Tahap 4 · Array
14. Array & Index 15. Mengakses Elemen 16. Mengubah Elemen 17. Loop + Array
Tahap 5 · Pseudocode Tracing
18. Teknik Trace Baris demi Baris 19. Melacak Percabangan (IF) 20. Melacak FOR & WHILE 21. Melacak Array dalam Loop 22. Latihan Gabungan: Output Akhir
Tahap 1 · Dasar
1

Variabel & Assignment

Variabel adalah tempat menyimpan nilai yang bisa berubah selama program berjalan, dikenali lewat namanya. Assignment adalah aksi mengisi/mengganti nilai variabel itu, ditulis dengan ← (bukan tanda sama-dengan matematika).

umur ← 20 umur ← umur + 1
Trace Baris 1: umur diisi 20. Baris 2: nilai LAMA umur (20) dibaca dulu, ditambah 1, hasilnya (21) baru disimpan kembali ke umur. Sekarang umur = 21.
Ini bukan persamaan matematika. umur ← umur + 1 tidak berarti "umur sama dengan umur tambah 1" secara aljabar — ini perintah "hitung sisi kanan pakai nilai SAAT INI, lalu timpa variabel di sisi kiri dengan hasilnya".
2

Tipe Data Dasar

Tiap nilai punya jenis (tipe). Tiga yang paling sering muncul:

Tipe menentukan operasi apa yang masuk akal. 5 + 3 jelas hasilnya 8, tapi "Halo" + 3 tidak selalu didefinisikan — kalau soal menulis begitu, biasanya itu memang sengaja dijadikan jebakan.
3

Operator Matematika

Dipakai untuk menghitung nilai baru dari angka-angka yang ada.

OperatorArtiContoh
+Penjumlahan7 + 2 = 9
-Pengurangan7 - 2 = 5
*Perkalian7 * 2 = 14
MODSisa bagi7 MOD 2 = 1
DIVPembagian bulat (dibulatkan ke bawah)7 DIV 2 = 3
Urutan pengerjaan tetap ikut aturan matematika biasa: perkalian/pembagian/MOD/DIV dikerjakan sebelum penjumlahan/pengurangan, kecuali ada tanda kurung yang mengubah urutan itu.
4

Operator Perbandingan

Membandingkan dua nilai, hasilnya selalu TRUE atau FALSE — inilah yang nanti dipakai di dalam kondisi IF/WHILE.

OperatorArtiContoh
=Sama dengan5 = 5 → TRUE
≠Tidak sama dengan5 ≠ 3 → TRUE
>Lebih besar5 > 3 → TRUE
<Lebih kecil5 < 3 → FALSE
≥Lebih besar atau sama dengan5 ≥ 5 → TRUE
≤Lebih kecil atau sama dengan5 ≤ 3 → FALSE
5

Operator Logika

Menggabungkan atau membalik nilai boolean (hasil perbandingan) untuk membentuk satu kondisi akhir.

OperatorArtiContoh
ANDHasilnya TRUE hanya kalau KEDUA sisi TRUETRUE AND FALSE → FALSE
ORHasilnya TRUE kalau SALAH SATU sisi TRUETRUE OR FALSE → TRUE
NOTMembalik nilai booleanNOT TRUE → FALSE
Ini baru pengenalan operatornya sendiri. Cara memakainya di dalam IF untuk menggabungkan beberapa syarat sekaligus dibahas di Tahap 2, bagian "Kondisi Gabungan".
Tahap 2 · Percabangan
6

IF Sederhana

Blok kode di dalam IF hanya dijalankan kalau kondisinya TRUE. Kalau FALSE, blok itu dilewati begitu saja.

nilai ← 80 IF nilai ≥ 75 THEN OUTPUT "Lulus" ENDIF
Trace nilai = 80. Cek 80 ≥ 75 → TRUE → OUTPUT "Lulus" dijalankan.
7

IF - ELSE

Menyediakan jalur alternatif kalau kondisinya FALSE. Selalu tepat satu dari dua blok yang jalan — tidak pernah dua-duanya, dan tidak pernah tidak ada sama sekali.

nilai ← 60 IF nilai ≥ 75 THEN OUTPUT "Lulus" ELSE OUTPUT "Tidak Lulus" ENDIF
Trace nilai = 60. Cek 60 ≥ 75 → FALSE → lompat ke ELSE → OUTPUT "Tidak Lulus".
8

IF - ELSE IF - ELSE Berantai

Aturan paling penting: kondisi dicek dari atas ke bawah, satu per satu. Begitu ketemu kondisi pertama yang TRUE, blok itu dijalankan dan langsung berhenti — semua kondisi di bawahnya TIDAK dicek lagi, sekalipun kondisi itu kebetulan juga TRUE.

harga ← 45000 IF harga > 100000 THEN OUTPUT "Mahal" ELSE IF harga > 30000 THEN OUTPUT "Sedang" ELSE OUTPUT "Murah" ENDIF
Trace harga = 45000. Cek harga > 100000 → FALSE. Cek harga > 30000 → TRUE → OUTPUT "Sedang", lalu berhenti (baris ELSE paling bawah tidak pernah dicek).
Kesalahan paling umum: mengira semua kondisi dicek satu-satu secara independen. Padahal begitu satu cabang TRUE dan dijalankan, sisanya diabaikan total — walau secara matematis kondisi di bawahnya juga benar.
9

Kondisi Gabungan (AND, OR, NOT)

IF tidak harus punya satu syarat saja — beberapa syarat perbandingan bisa digabung pakai AND/OR/NOT (dari Tahap 1) supaya jadi satu kondisi akhir.

umur ← 17 punyaKTP ← TRUE IF umur ≥ 17 AND punyaKTP = TRUE THEN OUTPUT "Boleh Memilih" ELSE OUTPUT "Belum Boleh Memilih" ENDIF
Trace Cek umur ≥ 17 → TRUE. Cek punyaKTP = TRUE → TRUE. TRUE AND TRUE → TRUE → OUTPUT "Boleh Memilih".
Dengan AND, kalau SATU SAJA dari syaratnya FALSE, seluruh kondisi gabungan langsung jadi FALSE — tidak peduli syarat lainnya TRUE. Dengan OR, sebaliknya: cukup satu syarat TRUE, seluruh kondisi gabungan sudah TRUE.
Tahap 3 · Perulangan
10

FOR

Dipakai kalau jumlah pengulangan sudah pasti diketahui dari awal — biasanya berbentuk "ulangi dari angka A sampai angka B".

hasil ← 1 FOR i ← 1 TO 4 hasil ← hasil * i NEXT i OUTPUT hasil
ihasil ← hasil × ihasil (setelah)
11 × 11
21 × 22
32 × 36
46 × 424

i sudah mencapai batas TO 4, loop selesai setelah putaran i=4. OUTPUT 24.

11

WHILE

Dipakai kalau jumlah pengulangan TIDAK diketahui dari awal — loop terus jalan selama kondisinya masih TRUE, berapa pun jumlah putarannya nanti.

n ← 50 langkah ← 0 WHILE n > 1 n ← n - 7 langkah ← langkah + 1 ENDWHILE OUTPUT langkah
Sebelumn > 1 ?n ← n − 7langkah
n=50ya431
n=43ya362
n=36ya293
n=29ya224
n=22ya155
n=15ya86
n=8ya17
n=1tidak—berhenti

OUTPUT langkah = 7.

12

Kapan Loop Berhenti

FOR berhenti begitu variabel penghitungnya melewati batas akhir yang ditentukan (mis. TO 4 berarti berhenti setelah i=4 selesai diproses, tidak lanjut ke i=5).

WHILE berhenti tepat pada saat kondisinya dicek dan hasilnya SALAH — pengecekan ini dilakukan ULANG setiap akhir putaran, bukan cuma sekali di awal.

Kesalahan paling sering: mengira WHILE berhenti "pas nilainya kelihatan sudah dekat" ke suatu angka. Padahal aturannya kaku: begitu kondisi FALSE, badan loop TIDAK dijalankan lagi sama sekali untuk putaran itu, walau nilainya sudah sangat dekat dengan target.
13

Mengikuti Perubahan Nilai dalam Loop

Jangan pernah menebak hasil akhir loop hanya dengan membaca kodenya sekilas. Cara amannya: bikin tabel iterasi — satu baris per putaran, catat nilai tiap variabel yang berubah, sampai loop benar-benar berhenti (seperti dua tabel di atas). Ini teknik yang sama persis yang akan dipakai terus di Tahap 5.

Tahap 4 · Array
14

Array & Index

Array adalah satu variabel yang menyimpan banyak nilai sekaligus, berurutan. Tiap posisi punya nomor urut yang disebut index. Di latihan ini, index dimulai dari 1 (bukan 0).

warna ← ["Merah", "Kuning", "Hijau"]
IndexNilai
warna[1]"Merah"
warna[2]"Kuning"
warna[3]"Hijau"
15

Mengakses Elemen

Menggunakan nama[index] untuk MEMBACA nilai di posisi tertentu, tanpa mengubahnya.

warna ← ["Merah", "Kuning", "Hijau"] OUTPUT warna[2]
Trace warna[2] = "Kuning" → OUTPUT "Kuning".
16

Mengubah Elemen

Assignment juga berlaku untuk satu posisi array — nama[index] ← nilaiBaru MENGGANTI isi posisi itu saja, posisi lain tidak ikut berubah.

warna ← ["Merah", "Kuning", "Hijau"] warna[2] ← "Biru" OUTPUT warna[2]
Trace warna[2] awalnya "Kuning", ditimpa jadi "Biru". OUTPUT "Biru". warna[1] dan warna[3] tetap tidak berubah.
17

Loop + Array

Kombinasi paling sering muncul: FOR dipakai untuk mengunjungi tiap elemen array satu per satu, biasanya berbentuk FOR i ← 1 TO panjang.

angka ← [4, 8, 2, 6] total ← 0 FOR i ← 1 TO 4 total ← total + angka[i] NEXT i OUTPUT total
iangka[i]total ← total + angka[i]total (setelah)
140 + 44
284 + 812
3212 + 214
4614 + 620

OUTPUT total = 20.

Tahap 5 · Pseudocode Tracing
18

Teknik Trace Baris demi Baris

Ini tahap integrasi — menggabungkan semua yang sudah dipelajari (Tahap 1-4) jadi satu kemampuan: membaca pseudocode dari baris pertama sampai terakhir, dan tahu PERSIS apa yang terjadi di tiap baris, bukan menebak dari sekilas lihat.

Caranya: siapkan kolom untuk tiap variabel yang ada. Jalankan baris satu per satu, urut dari atas. Setiap kali sebuah variabel berubah nilai, catat nilai barunya di kolomnya. Jangan pernah melompati baris atau mengerjakan dua baris sekaligus di kepala.

19

Melacak Percabangan (IF)

Saat trace bertemu IF: hitung dulu nilai kondisinya pakai nilai variabel yang SUDAH terlacak sejauh itu, tentukan TRUE atau FALSE, lalu ikuti hanya SATU jalur yang sesuai. Baris-baris di cabang yang tidak diambil dianggap tidak pernah ada — jangan sampai ikut ditrace.

20

Melacak FOR & WHILE

Sama seperti di Tahap 3: bikin tabel iterasi, satu baris per putaran. Untuk FOR, berhenti otomatis setelah batas akhir tercapai. Untuk WHILE, cek ulang kondisinya di akhir SETIAP putaran — begitu FALSE, berhenti seketika itu juga, sisa kode setelah loop baru dilanjutkan.

21

Melacak Array dalam Loop

Saat variabel loop (mis. i) dipakai sebagai index array di dalam badan loop, di tiap putaran cek dulu nilai i saat itu, baru cari nilai array[i] yang sesuai — jangan menghitung dari ingatan/perkiraan urutan array.

22

Latihan Gabungan: Menentukan Output Akhir

Contoh yang menggabungkan variabel, IF, WHILE, dan array sekaligus — persis pola yang akan muncul di soal tracing sesungguhnya.

angka ← [3, 7, 2, 9, 4] i ← 1 total ← 0 WHILE i ≤ 5 IF angka[i] > 4 THEN total ← total + angka[i] ENDIF i ← i + 1 ENDWHILE OUTPUT total
iangka[i]angka[i] > 4 ?total (setelah)
13tidak0
27ya7
32tidak7
49ya16
54tidak16

Setelah i=5 diproses, i menjadi 6, dicek 6 ≤ 5 → FALSE → WHILE berhenti. OUTPUT total = 16.

Kesalahan yang sering terjadi di soal gabungan seperti ini: lupa bahwa IF di dalam loop dicek ULANG dari nol di SETIAP putaran (bukan cuma sekali), atau salah menganggap update i ← i + 1 terjadi SEBELUM IF-nya dicek padahal urutannya mengikuti urutan baris kode apa adanya.
Batasan materi: sengaja tidak membahas recursion, linked list, tree, graph, dynamic programming, algoritma kompleks, struktur data tingkat lanjut, design pattern, maupun software architecture — semua itu di luar cakupan fundamental pseudocode tracing untuk saat ini. Fokusnya murni pada membaca logika program, berpikir sistematis, dan menentukan output.
→ Mulai Latihan Kembali ke Beranda