Dunia teknologi informasi terus berkembang pesat, dan kemampuan pemrograman menjadi salah satu keterampilan paling berharga di era digital ini. Bagi siswa kelas 10 yang baru saja mendalami dunia pemrograman, semester kedua seringkali menjadi fase krusial untuk memperkuat pemahaman konsep-konsep dasar. Materi yang biasanya dibahas meliputi struktur kontrol lanjutan, array, fungsi, dan pengenalan objek atau struktur data yang lebih kompleks.
Artikel ini hadir untuk membantu Anda mengasah kemampuan pemrograman Anda. Kami akan menyajikan serangkaian contoh soal latihan yang mencakup berbagai topik penting dalam pemrograman dasar semester 2 untuk siswa kelas 10. Setiap soal dirancang untuk menguji pemahaman Anda tentang konsep-konsep kunci, serta kemampuan Anda untuk menerapkannya dalam solusi praktis. Mari kita mulai petualangan belajar ini!
Bagian 1: Struktur Kontrol Lanjutan (Perulangan dan Kondisi yang Lebih Kompleks)
Semester kedua seringkali memperkenalkan variasi dan penerapan struktur kontrol if-else dan for/while yang lebih mendalam. Soal-soal di bagian ini akan menguji kemampuan Anda dalam menangani skenario yang membutuhkan logika percabangan dan perulangan yang lebih canggih.
Contoh Soal 1.1: Pola Bintang Segitiga Terbalik
Buatlah program yang akan menampilkan pola bintang seperti di bawah ini, dengan jumlah baris yang ditentukan oleh pengguna. Jika pengguna memasukkan angka 5, maka outputnya akan seperti ini:
*****
****
***
**
*
Pembahasan:
Soal ini membutuhkan kombinasi dari perulangan bersarang (nested loops). Perulangan luar akan mengontrol jumlah baris yang dicetak, sementara perulangan dalam akan mengontrol jumlah bintang yang dicetak di setiap baris.
- Logika:
- Perulangan luar akan berjalan dari jumlah baris yang dimasukkan pengguna hingga 1 (misalnya, jika input 5, maka berjalan dari 5 ke 1).
- Di setiap iterasi perulangan luar, perulangan dalam akan berjalan dari 1 hingga nilai perulangan luar saat ini, mencetak karakter bintang (
*) di setiap iterasi. - Setelah perulangan dalam selesai untuk satu baris, pindah ke baris baru.
Contoh Soal 1.2: Bilangan Prima dalam Rentang Tertentu
Buatlah program yang meminta pengguna untuk memasukkan dua angka, yaitu batas bawah dan batas atas sebuah rentang. Program kemudian harus menampilkan semua bilangan prima yang ada dalam rentang tersebut (inklusif).
Pembahasan:
Konsep bilangan prima adalah sebuah bilangan asli yang lebih besar dari 1, yang faktor pembaginya adalah 1 dan bilangan itu sendiri. Soal ini membutuhkan logika pengecekan untuk menentukan apakah sebuah angka adalah bilangan prima, dan kemudian mengaplikasikannya pada setiap angka dalam rentang yang diberikan.
- Logika:
- Minta input batas bawah (
batasBawah) dan batas atas (batasAtas). - Iterasi dari
batasBawahhinggabatasAtas. Untuk setiap angka dalam iterasi ini (sebut sajaangkaSaatIni):- Asumsikan
angkaSaatIniadalah bilangan prima (setel booleanisPrime = true). - Jika
angkaSaatInikurang dari atau sama dengan 1, maka itu bukan bilangan prima (isPrime = false). - Jika
angkaSaatInilebih besar dari 1, lakukan iterasi dari 2 hingga akar kuadrat dariangkaSaatIni. Mengapa akar kuadrat? Karena jika sebuah angka memiliki faktor lebih besar dari akar kuadratnya, pasti ia juga memiliki faktor yang lebih kecil dari akar kuadratnya. Ini optimasi. - Dalam iterasi ini, jika
angkaSaatInihabis dibagi oleh angka dalam iterasi (yaitu,angkaSaatIni % i == 0), makaangkaSaatInibukan bilangan prima (isPrime = false), dan Anda bisa menghentikan iterasi pengecekan untukangkaSaatInitersebut (menggunakanbreak). - Setelah selesai pengecekan, jika
isPrimemasih bernilaitrue, maka cetakangkaSaatIni.
- Asumsikan
- Minta input batas bawah (
Contoh Soal 1.3: Menghitung Nilai Rata-rata dan Menentukan Kelulusan
Sebuah kelas memiliki sejumlah siswa. Guru ingin menghitung nilai rata-rata ulangan mereka dan menentukan siapa saja yang dinyatakan lulus. Syarat kelulusan adalah nilai rata-rata minimal 70. Buatlah program yang menerima input jumlah siswa, kemudian meminta input nilai ulangan untuk setiap siswa. Tampilkan nilai rata-rata kelas dan daftar nama siswa yang lulus beserta nilainya.
Pembahasan:
Soal ini menguji kemampuan Anda dalam mengelola sekumpulan data (nilai ulangan) dan melakukan perhitungan agregat (rata-rata), serta menerapkan kondisi untuk penyaringan data.
- Logika:
- Minta input jumlah siswa (
jumlahSiswa). - Buat sebuah struktur data (misalnya, array atau list) untuk menyimpan nilai ulangan.
- Lakukan perulangan sebanyak
jumlahSiswakali untuk:- Meminta input nama siswa dan nilai ulangannya. Simpan informasi ini (misalnya, dalam sebuah struktur data gabungan seperti objek atau dictionary).
- Jumlahkan semua nilai ulangan untuk menghitung total nilai.
- Setelah perulangan selesai, hitung nilai rata-rata:
rataRata = totalNilai / jumlahSiswa. Tampilkan nilai rata-rata ini. - Lakukan perulangan lagi pada data siswa yang telah disimpan. Untuk setiap siswa:
- Periksa apakah nilainya lebih besar atau sama dengan 70.
- Jika ya, cetak nama siswa dan nilainya sebagai siswa yang lulus.
- Minta input jumlah siswa (
Bagian 2: Array (Struktur Data Linear)
Array adalah salah satu struktur data fundamental dalam pemrograman. Semester kedua seringkali menjadi waktu untuk memperdalam pemahaman tentang manipulasi array, mulai dari pencarian, pengurutan, hingga operasi-operasi dasar lainnya.
Contoh Soal 2.1: Mencari Elemen Terbesar dan Terkecil dalam Array
Diberikan sebuah array berisi angka-angka integer. Buatlah program yang dapat menemukan dan menampilkan elemen terbesar serta elemen terkecil yang ada di dalam array tersebut.
Pembahasan:
Soal ini adalah latihan dasar untuk iterasi melalui array dan membandingkan nilai.
- Logika:
- Inisialisasi variabel
nilaiTerbesardannilaiTerkecildengan elemen pertama dari array. - Iterasi melalui array mulai dari elemen kedua.
- Di setiap iterasi:
- Jika elemen saat ini lebih besar dari
nilaiTerbesar, perbaruinilaiTerbesardengan elemen saat ini. - Jika elemen saat ini lebih kecil dari
nilaiTerkecil, perbaruinilaiTerkecildengan elemen saat ini.
- Jika elemen saat ini lebih besar dari
- Setelah perulangan selesai, tampilkan
nilaiTerbesardannilaiTerkecil.
- Inisialisasi variabel
Contoh Soal 2.2: Menghitung Frekuensi Kemunculan Elemen dalam Array
Buatlah program yang menerima sebuah array berisi karakter. Program harus menghitung berapa kali setiap karakter unik muncul dalam array tersebut dan menampilkannya.
Contoh Array:
Output yang Diharapkan:
a: 3 kali
b: 2 kali
c: 1 kali
d: 1 kali
Pembahasan:
Soal ini membutuhkan penggunaan struktur data bantu untuk menyimpan frekuensi. Sebuah dictionary atau map sangat cocok untuk kasus ini.
- Logika:
- Buat sebuah dictionary kosong (
frekuensi) untuk menyimpan pasangan karakter dan jumlah kemunculannya. - Iterasi melalui setiap karakter dalam array input.
- Untuk setiap karakter:
- Periksa apakah karakter tersebut sudah ada sebagai kunci dalam dictionary
frekuensi. - Jika sudah ada, tambahkan 1 ke nilai yang terkait dengan kunci tersebut.
- Jika belum ada, tambahkan karakter tersebut sebagai kunci baru ke dalam dictionary dengan nilai awal 1.
- Periksa apakah karakter tersebut sudah ada sebagai kunci dalam dictionary
- Setelah selesai mengiterasi array, iterasi melalui dictionary
frekuensidan tampilkan setiap pasangan kunci-nilai dalam format yang diinginkan.
- Buat sebuah dictionary kosong (
Contoh Soal 2.3: Membalik Urutan Elemen dalam Array
Tuliskan program yang dapat membalik urutan elemen dalam sebuah array tanpa menggunakan fungsi bawaan yang secara langsung melakukan pembalikan.
Contoh Array:
Output yang Diharapkan:
Pembahasan:
Ada beberapa cara untuk menyelesaikan ini. Salah satu cara yang efisien adalah dengan menukar elemen dari awal dan akhir array secara bertahap.
- Logika:
- Gunakan dua pointer, satu dimulai dari awal array (
kiri = 0) dan satu lagi dari akhir array (kanan = panjangArray - 1). - Lakukan perulangan selama
kiri < kanan. - Di setiap iterasi:
- Tukar elemen di posisi
kiridengan elemen di posisikanan. - Geser pointer
kirike kanan (kiri++). - Geser pointer
kananke kiri (kanan--).
- Tukar elemen di posisi
- Setelah perulangan selesai, array akan dalam urutan terbalik. Tampilkan array yang telah dibalik.
- Gunakan dua pointer, satu dimulai dari awal array (
Bagian 3: Fungsi (Modularitas dan Reusability)
Fungsi adalah blok kode yang dapat digunakan kembali untuk melakukan tugas tertentu. Penggunaan fungsi sangat penting untuk membuat program menjadi lebih terstruktur, mudah dibaca, dan mudah dikelola.
Contoh Soal 3.1: Fungsi untuk Menghitung Luas Persegi Panjang
Buatlah sebuah fungsi bernama hitungLuasPersegiPanjang yang menerima dua parameter: panjang dan lebar. Fungsi ini harus mengembalikan nilai luas persegi panjang tersebut. Panggil fungsi ini dalam program utama dengan nilai panjang 10 dan lebar 5, lalu tampilkan hasilnya.
Pembahasan:
Soal ini adalah pengenalan dasar tentang pembuatan dan pemanggilan fungsi dengan parameter dan nilai kembalian.
- Logika:
- Definisi Fungsi:
- Buat fungsi
hitungLuasPersegiPanjang(panjang, lebar). - Di dalam fungsi, hitung luas:
luas = panjang * lebar. - Kembalikan nilai
luas.
- Buat fungsi
- Program Utama:
- Panggil fungsi:
hasilLuas = hitungLuasPersegiPanjang(10, 5). - Cetak
hasilLuas.
- Panggil fungsi:
- Definisi Fungsi:
Contoh Soal 3.2: Fungsi untuk Mengecek Apakah Sebuah Angka Genap atau Ganjil
Buatlah sebuah fungsi bernama cekGenapGanjil yang menerima satu parameter berupa angka integer. Fungsi ini harus mengembalikan string "Genap" jika angka tersebut genap, dan "Ganjil" jika angka tersebut ganjil. Tampilkan hasil pemanggilan fungsi ini untuk beberapa angka yang berbeda.
Pembahasan:
Soal ini menggabungkan konsep fungsi dengan penggunaan operator modulo untuk menentukan paritas sebuah angka.
- Logika:
- Definisi Fungsi:
- Buat fungsi
cekGenapGanjil(angka). - Di dalam fungsi, gunakan operator modulo:
if (angka % 2 == 0). - Jika kondisi
true, kembalikan string "Genap". - Jika kondisi
false, kembalikan string "Ganjil".
- Buat fungsi
- Program Utama:
- Panggil fungsi beberapa kali, misalnya:
hasil1 = cekGenapGanjil(4)hasil2 = cekGenapGanjil(7)hasil3 = cekGenapGanjil(100)
- Cetak
hasil1,hasil2, danhasil3.
- Panggil fungsi beberapa kali, misalnya:
- Definisi Fungsi:
Contoh Soal 3.3: Fungsi Rekursif untuk Menghitung Faktorial
Faktorial dari sebuah bilangan bulat non-negatif n, dilambangkan dengan n!, adalah hasil perkalian semua bilangan bulat positif kurang dari atau sama dengan n. Misalnya, 5! = 5 4 3 2 1 = 120. Buatlah sebuah fungsi rekursif bernama hitungFaktorial untuk menghitung nilai faktorial.
Pembahasan:
Rekursi adalah teknik di mana sebuah fungsi memanggil dirinya sendiri. Ini bisa menjadi konsep yang menantang namun sangat kuat.
- Logika (Rekursif):
- Basis Kasus (Base Case): Jika
nsama dengan 0 atau 1, kembalikan 1. Ini adalah kondisi berhenti agar rekursi tidak berjalan selamanya. - Langkah Rekursif (Recursive Step): Jika
nlebih besar dari 1, kembalikann * hitungFaktorial(n - 1). - Fungsi akan terus memanggil dirinya sendiri dengan argumen yang semakin kecil hingga mencapai basis kasus, lalu hasil akan dikalikan kembali ke atas.
- Basis Kasus (Base Case): Jika
Bagian 4: Pengenalan Objek dan Struktur Data Sederhana (Opsional, tergantung kurikulum)
Beberapa kurikulum mungkin mulai memperkenalkan konsep dasar pemrograman berorientasi objek (OOP) atau struktur data yang lebih terorganisir seperti struct atau class sederhana.
Contoh Soal 4.1: Merepresentasikan Data Buku Menggunakan Struct/Class Sederhana
Buatlah sebuah struktur data (misalnya, struct atau class sederhana) yang bernama Buku. Struktur ini harus memiliki anggota data untuk menyimpan judul (string), penulis (string), dan tahunTerbit (integer). Buatlah sebuah instance dari struktur Buku di program utama, isi datanya, dan tampilkan informasi buku tersebut.
Pembahasan:
Ini adalah pengantar untuk membuat tipe data kustom Anda sendiri.
- Logika:
- Definisi Struct/Class:
- Definisikan
struct Bukuatauclass Buku. - Deklarasikan anggota data:
string judul;,string penulis;,int tahunTerbit;.
- Definisikan
- Program Utama:
- Buat objek dari
Buku:Buku bukuPertama;. - Isi datanya:
bukuPertama.judul = "Laskar Pelangi";,bukuPertama.penulis = "Andrea Hirata";,bukuPertama.tahunTerbit = 2005;. - Tampilkan datanya: Cetak
bukuPertama.judul,bukuPertama.penulis, danbukuPertama.tahunTerbit.
- Buat objek dari
- Definisi Struct/Class:
Penutup dan Tips Belajar
Mempelajari pemrograman membutuhkan latihan yang konsisten. Jangan ragu untuk mencoba memodifikasi soal-soal di atas, menambahkan fitur baru, atau mencoba kasus-kasus edge (kondisi khusus atau ekstrem). Berikut beberapa tips tambahan untuk memaksimalkan proses belajar Anda:
- Pahami Konsepnya, Bukan Hanya Menghafal Kode: Fokuslah pada "mengapa" sebuah kode bekerja, bukan hanya "bagaimana" menuliskannya.
- Tulis Kode Sendiri: Jangan hanya menyalin dari contoh. Coba ketik ulang kode tersebut dan pahami setiap barisnya.
- Debug Adalah Teman Anda: Kesalahan adalah bagian alami dari pemrograman. Belajarlah cara membaca pesan error dan memperbaikinya.
- Cari Sumber Belajar Tambahan: Jika Anda kesulitan memahami suatu topik, jangan ragu untuk mencari penjelasan dari sumber lain, seperti buku, tutorial online, atau forum pemrograman.
- Berdiskusi dengan Teman: Belajar bersama teman dapat membantu Anda mendapatkan perspektif baru dan memecahkan masalah yang sulit.
- Buat Proyek Kecil: Setelah menguasai dasar-dasar, cobalah membuat program sederhana yang menarik minat Anda. Ini akan menjadi motivasi terbesar.
Semoga kumpulan contoh soal ini memberikan Anda landasan yang kuat untuk menguasai pemrograman dasar di semester kedua kelas 10. Selamat belajar dan teruslah berkarya!


Leave a Reply