Professional Documents
Culture Documents
Paket 4 Soal
Paket 4 Soal
ALCINDONESIA
ROAD,TO.KSN:2022
po.alcindonesia.co.id
PAKET 4
KOMPUTER SMA
Soal
Catatan Tutor:
Materi dalam Pelatihan Online ini disusun bergantian antara Matematika dan Coding/
Pemrograman, karena memang materi uji KSNK meliputi keduanya, jadi materi pada minggu
ganjil (1,3,5,7…) adalah Matematika, sedangkan materi pada minggu genap (2,4,6,8,…) adalah
Coding/ Pemrograman
Modul 4: Percabangan
Materi dalam bagian ini memperkenalkan prinsip Percabangan serta penerapannya dalam C++.
Nama lain konsep ini adalah Pengambilan Keputusan atau Pemilihan Berkondisi.
1) Konsep Percabangan
Disebut konsep percabangan karena berdasarkan suatu kondisi/syarat, komputer bisa memilih
mengerjakan aksi A atau aksi B, jadi komputer bisa bercabang mengerjakan aksi yang berbeda.
Aksi A dikerjakan saat kondisi/ syarat terpenuhi (benar), sedangkan aksi B dikerjakan saat
kondisi/ syarat tidak terpenuhi (salah).
if (kondisi) {
// aksi A
} else {
// aksi B
}
Sering kali, suatu percabangan hanya memiliki aksi A saja, jadi aksi B nya tidak ada. Bentuk ini
dinyatakan sebagai konsep persyaratan (bukan percabangan, karena gak ada cabangnya, lha
cuma ada 1 aksinya).
if (kondisi) {
// aksi A
}
3) Decision Tree
Apabila dihadapi suatu percabangan dengan lebih dari 2 pilihan (misalnya 4 pilihan), maka
Programmer/ Coder akan dihadapkan dengan variasi bentuk Cabang Percabangan yang
berbeda-beda. Contoh misalnya di suatu sekolah berlaku aturan nilai A = 85 - 100, nilai B = 75 -
84, nilai C = 60 - 74 dan nilai D = 0 - 59, berarti dalam kondisi ini ada 4 pilihan aksi. Maka sebagai
contoh bisa dihasilkan Decision Tree seperti di bawah ini:
4) Multiple Percabangan
Dari pembahasan DT di atas, itu adalah contoh dari multiple percabangan (banyak
percabangan), dan ketiga DT di atas berturut-turut bisa diwujudkan sebagai Code berikut:
if (nilai >= 85) cout << "grade A"; else
if (nilai >= 75) cout << "grade B"; else
if (nilai >= 60) cout << "grade C"; else cout << "grade D";
Sedangkan untuk DT kedua:
if (nilai < 85)
if (nilai < 75)
if (nilai < 60) cout << "grade D"; else cout << "grade C";
else cout << "grade B";
else cout << "grade A";
Dan untuk DT ketiga:
if (nilai < 75)
if (nilai < 60) cout << "grade D"; else cout << "grade C";
else if (nilai < 85) cout << "grade B"; else cout << "grade A";
Dari ketiga contoh implementasi tersebut, tampak bahwa perbedaan pola pikir (pola DT) akan
menyebabkan variasi juga dalam implementasi program/ coding.
7) Gabungan Perbandingan/Kondisi
Untuk menggabungkan kondisi bisa dipakai operator-operator gabungan kondisi (bisa dibaca
ulang di Modul 3). Contoh kasusnya utk Multiple Percabangan di atas, juga bisa dikerjakan
dengan memakai 4 perintah If dengan Gabungan Kondisi, sekali pun kurang efisien:
if (nilai>=85 && nilai<=100) cout << "Grade A";
if (nilai>=75 && nilai<85) cout << "Grade B";
if (nilai>=60 && nilai<75) cout << "Grade C";
if (nilai>=0 && nilai<60) cout << "Grade D";
Jadi tampak memang, bahwa untuk permasalahan yang sama (contoh di atas mencetak Grade
nilai), bisa diselesaikan memakai Multiple Percabangan, Operator Ternary atau Gabungan
Kondisi.
Modul 5: Perulangan
Materi dalam bagian ini memperkenalkan prinsip Perulangan serta penerapannya dalam C++.
2) Perulangan while()
Bentuk perulangan while() adalah seperti ini:
while (syarat) {
// isi perulangan (statement yg akan diulangi)
}
Jadi kelihatan karena syarat dipasang di atas, jika syarat tidak terpenuhi, otomatis isi loop tidak
akan dikerjakan oleh komputer (top tested loop).
While() dapat dipakai untuk counted loop atau pun uncounted loop. Contoh berikut adalah
penerapan while() untuk counted loop:
int a=5;
while (a<=20) cout << a++ << endl;
3) Perulangan do-while()
Bentuk perulangan do-while() adalah seperti ini:
do {
// isi perulangan
} while (syarat);
Jadi dalam bentuk ini, mesin komputer akan mengerjakan (do) isi perulangan, baru syarat akan
diperiksa untuk menentukan apakah perulangan akan dilakukan kembali ataukah diakhiri.
Contoh do-while() untuk bentuk counted adalah:
int a = 10;
do cout << ++a << endl; while (a<=20);
Potongan code di atas merupakan bentuk one-liner, dan akan menghasilkan pola teratur yaitu
11, 12, 13, …, 21 (perhatikan letak ++ yg merupakan prefix, jadi akan dikerjakan duluan, baru
diikuti cetak). Sedangkan contoh untuk bentuk uncounted adalah:
int a;
do {
cin >> a;
cout << a << endl;
} while (a<=50);
Kelihatan dari code di atas, memang jika input a selalu <= 50, maka loop tersebut tidak akan
pernah berhenti, sehingga komputer tidak akan pernah tahu, berapa kali loop akan dijalankan.
Materi dalam bagian ini akan memperkenalkan mengenai dunia Competitive Programming
beserta konsep Online Judge yang sering dipakai dalam lomba/ kontes pemrograman.
1) Competitive Programming
Competitive Programming adalah salah satu cabang dari Programming (pemrograman/ coding)
yang fokusnya adalah:
* menghasilkan code yang efisien
* memakai algoritma/ metode yang tepat untuk memecahkan suatu problem
* dalam tempo pengerjaan yang terbatas
* dengan waktu eksekusi yang terbatas
* yang diselenggarakan sebagai suatu kontes/ lomba.
Berikut adalah Kontes/ Lomba CP yang terkenal:
* Kompetisi ITB, UI, UGM, ITS, Universitas Telkom, Universitas Bina Nusantara
* KSN (Kompetisi Sains Nasional)
* APIO (Asia Pasific Informatics Olympiad)
* IOI (International Olympiad in Informatics)
* ICPC (International Collegiate Programming Contest)
* Kompetisis Google, Microsoft, FaceBook, TopCoder
5) Buku/Materi Pendukung
Ada beberapa e-book gratis dan resmi yang dapat mendukung proses belajar dan persiapan CP
anda, yaitu:
1. E-book Pemrograman Kompetitif Dasar karya William Gozali dan Alham Fikri Aji, keduanya
adalah alumni Tim Olimpiade Komputer Indonesia, e-book ini bisa di-download dari
https://osn.toki.id/arsip/pemrograman-kompetitif-dasar.pdf
2. E-book Art of Programming Contest karya Ahmed Shamsul Arefin dari Bangladesh, salah satu
kontestan ICPC dari Dhaka, Bangladesh, e-book ini bisa di-download dari
https://e-booksdirectory.com/details.php?ebook=1051
3. E-book Competitive Programmer’s Handbook karya Antti Laaksonen dari Finlandia, yang
sudah disebutkan di poin 2, alamat download-nya https://cses.fi/book/index.php
Selain materi khusus CP, ada juga beberapa e-book Algoritma gratis dan resmi yaitu:
1. E-book Algorithms Notes for Professional, dari GoalKicker.com, bisa di-download dari alamat
https://books.goalkicker.com/AlgorithmsBook/
2. E-book Elementary Algorithms karya Larry Liu Xin Yu, bisa di-download dari
https://github.com/liuxinyu95/AlgoXY/releases/download/v0.618033/elementary-algorithms.pdf
Sedangkan untuk buku berbayar, yang direkomendasikan adalah:
1. Buku Competitive Programming (Edisi 4) karya Steven Halim, Felix Halim dan Suhendry
Effendy, beliau bertiga merupakan warga negara Indonesia yang banyak memberikan
sumbangsih bagi kemajuan dunia Competitive Programming baik secara nasional maupun
internasional, buku mereka dapat dibeli lewat website resmi https://cpbook.net/
Latihan Soal