Dunia digital terus berkembang pesat, dan kemampuan pemrograman menjadi salah satu skill yang semakin krusial. Bagi siswa kelas X semester 2, pemrograman dasar menjadi fondasi penting untuk memahami bagaimana teknologi bekerja dan membuka pintu menuju berbagai peluang di masa depan. Artikel ini akan membahas secara mendalam berbagai contoh soal pemrograman dasar yang sering dijumpai di kelas X semester 2, dilengkapi dengan penjelasan solusi yang mudah dipahami.
Semester 2 pemrograman dasar biasanya berfokus pada konsep-konsep inti yang lebih mendalam, seperti struktur kontrol lanjutan, array, fungsi, dan pengenalan awal pada pemrograman berorientasi objek (jika kurikulum mencakup). Tujuannya adalah agar siswa mampu memecahkan masalah yang lebih kompleks dengan menggunakan algoritma yang efisien.
Mari kita selami berbagai jenis soal latihan yang akan membekali Anda dengan pemahaman yang kokoh.

1. Struktur Kontrol Lanjutan: Perulangan Bersarang dan Kondisi Kompleks
Pada semester 1, Anda mungkin sudah akrab dengan perulangan for dan while serta pernyataan if-else. Semester 2 seringkali memperkenalkan variasi yang lebih kompleks, seperti perulangan bersarang (nested loops) dan kondisi yang melibatkan operator logika (AND, OR, NOT).
Contoh Soal 1.1: Membuat Pola Bintang Segitiga Siku-Siku Terbalik
Buatlah program yang menampilkan pola bintang berikut:
*****
****
***
**
*
Penjelasan Konsep:
Untuk membuat pola ini, kita memerlukan dua perulangan. Perulangan luar akan mengontrol jumlah baris yang dicetak. Perulangan dalam akan mengontrol jumlah bintang yang dicetak pada setiap baris. Perhatikan bahwa pada setiap baris baru, jumlah bintang berkurang satu.
Solusi (menggunakan pseudocode):
INTEGER jumlah_baris = 5
UNTUK baris DARI 1 SAMPAI jumlah_baris LAKUKAN
UNTUK bintang DARI jumlah_baris SAMPAI baris LANGKAH -1 LAKUKAN
CETAK "*"
AKHIR UNTUK
CETAK BARIS BARU
AKHIR UNTUK
Analisis Solusi:
- Perulangan luar (
UNTUK baris DARI 1 SAMPAI jumlah_baris) berjalan sebanyak 5 kali, mewakili 5 baris. - Perulangan dalam (
UNTUK bintang DARI jumlah_baris SAMPAI baris LANGKAH -1) pada setiap iterasi perulangan luar, akan mencetak bintang.- Saat
baris= 1,bintangakan berjalan dari 5 hingga 1 (mencetak 5 bintang). - Saat
baris= 2,bintangakan berjalan dari 5 hingga 2 (mencetak 4 bintang). - Dan seterusnya, hingga
baris= 5,bintangakan berjalan dari 5 hingga 5 (mencetak 1 bintang).
- Saat
CETAK BARIS BARUmemindahkan kursor ke baris selanjutnya setelah satu baris bintang selesai dicetak.
Contoh Soal 1.2: Menentukan Kategori Nilai dengan Kondisi Kompleks
Buatlah program yang meminta pengguna memasukkan nilai ujian seorang siswa (antara 0-100). Tampilkan kategori nilai siswa berdasarkan kriteria berikut:
- Jika nilai >= 90, maka "Predikat: A"
- Jika nilai >= 80 DAN nilai < 90, maka "Predikat: B"
- Jika nilai >= 70 DAN nilai < 80, maka "Predikat: C"
- Jika nilai >= 60 DAN nilai < 70, maka "Predikat: D"
- Jika nilai < 60, maka "Predikat: E"
- Jika nilai di luar rentang 0-100, tampilkan pesan error "Nilai tidak valid."
Penjelasan Konsep:
Soal ini menguji kemampuan Anda dalam menggunakan struktur if-else if-else dengan kombinasi operator logika (DAN atau &&). Penting untuk menangani semua kemungkinan rentang nilai, termasuk kasus input yang tidak valid.
Solusi (menggunakan pseudocode):
INTEGER nilai_ujian
CETAK "Masukkan nilai ujian (0-100): "
BACA nilai_ujian
JIKA nilai_ujian < 0 ATAU nilai_ujian > 100 MAKA
CETAK "Nilai tidak valid."
LAIN JIKA nilai_ujian >= 90 MAKA
CETAK "Predikat: A"
LAIN JIKA nilai_ujian >= 80 DAN nilai_ujian < 90 MAKA
CETAK "Predikat: B"
LAIN JIKA nilai_ujian >= 70 DAN nilai_ujian < 80 MAKA
CETAK "Predikat: C"
LAIN JIKA nilai_ujian >= 60 DAN nilai_ujian < 70 MAKA
CETAK "Predikat: D"
LAIN
CETAK "Predikat: E"
AKHIR JIKA
Analisis Solusi:
- Pertama, kita cek apakah nilai berada di luar rentang yang valid menggunakan operator
ATAU(OR). Jika ya, tampilkan pesan error. - Jika nilai valid, kita masuk ke serangkaian pemeriksaan
else if. - Urutan pemeriksaan penting. Kita mulai dari rentang tertinggi. Jika nilai >= 90, maka langsung cetak "A" dan selesai.
- Jika tidak, baru kita cek rentang berikutnya (>= 80 dan < 90).
- Penggunaan
DAN(AND) memastikan kedua kondisi harus terpenuhi untuk rentang B, C, dan D. - Klausa
LAIN(else) terakhir akan menangkap semua nilai yang tersisa (yang pasti di bawah 60 dan valid) untuk predikat E.
2. Array: Mengelola Kumpulan Data
Array adalah struktur data fundamental yang memungkinkan kita menyimpan kumpulan elemen dengan tipe data yang sama dalam satu variabel. Semester 2 biasanya memperkenalkan penggunaan array untuk menyimpan dan memanipulasi data dalam jumlah yang lebih besar.
Contoh Soal 2.1: Menghitung Rata-rata Nilai dari Array
Buatlah program yang mendeklarasikan sebuah array berisi 5 nilai integer (misalnya, nilai ujian siswa). Hitung dan tampilkan rata-rata dari nilai-nilai tersebut.
Penjelasan Konsep:
Untuk menghitung rata-rata, kita perlu menjumlahkan semua elemen dalam array, kemudian membagi jumlah tersebut dengan jumlah elemen array.
Solusi (menggunakan pseudocode):
DEKLARASI ARRAY nilai_siswa SEBAGAI INTEGER
INTEGER jumlah_elemen = 5
INTEGER total_nilai = 0
REAL rata_rata
// Mengisi array dengan nilai
nilai_siswa = 85
nilai_siswa = 90
nilai_siswa = 78
nilai_siswa = 92
nilai_siswa = 88
// Menjumlahkan semua elemen array
UNTUK i DARI 0 SAMPAI jumlah_elemen - 1 LAKUKAN
total_nilai = total_nilai + nilai_siswa
AKHIR UNTUK
// Menghitung rata-rata
rata_rata = CAST(total_nilai SEBAGAI REAL) / jumlah_elemen
CETAK "Nilai-nilai siswa: ", nilai_siswa
CETAK "Total nilai: ", total_nilai
CETAK "Rata-rata nilai: ", rata_rata
Analisis Solusi:
- Kita mendeklarasikan array
nilai_siswadengan ukuran 5. - Variabel
total_nilaidiinisialisasi dengan 0 untuk menyimpan hasil penjumlahan. - Perulangan
UNTUKdigunakan untuk mengakses setiap elemen array dari indeks 0 hinggajumlah_elemen - 1(yaitu, 4). - Di setiap iterasi, nilai elemen array ditambahkan ke
total_nilai. - Saat menghitung rata-rata, kita melakukan casting
total_nilaimenjadiREAL(bilangan desimal) sebelum membaginya denganjumlah_elemen. Ini penting agar hasil pembagian tidak terpotong jika hasilnya berupa desimal.
Contoh Soal 2.2: Mencari Nilai Terbesar dalam Array
Buatlah program yang mendeklarasikan sebuah array berisi 7 nilai integer. Cari dan tampilkan nilai terbesar dari elemen-elemen array tersebut.
Penjelasan Konsep:
Kita dapat mencari nilai terbesar dengan menginisialisasi sebuah variabel nilai_terbesar dengan elemen pertama array. Kemudian, kita bandingkan setiap elemen array berikutnya dengan nilai_terbesar. Jika elemen saat ini lebih besar dari nilai_terbesar, maka kita perbarui nilai_terbesar.
Solusi (menggunakan pseudocode):
DEKLARASI ARRAY angka SEBAGAI INTEGER
INTEGER jumlah_elemen = 7
INTEGER nilai_terbesar
// Mengisi array dengan nilai
angka = 23
angka = 45
angka = 12
angka = 56
angka = 34
angka = 89
angka = 21
// Menginisialisasi nilai_terbesar dengan elemen pertama
nilai_terbesar = angka
// Mencari nilai terbesar
UNTUK i DARI 1 SAMPAI jumlah_elemen - 1 LAKUKAN
JIKA angka > nilai_terbesar MAKA
nilai_terbesar = angka
AKHIR JIKA
AKHIR UNTUK
CETAK "Array angka: ", angka
CETAK "Nilai terbesar adalah: ", nilai_terbesar
Analisis Solusi:
- Array
angkadiisi dengan beberapa nilai integer. nilai_terbesardiinisialisasi denganangka(yaitu, 23).- Perulangan dimulai dari indeks 1.
- Pada setiap iterasi,
angka(misalnya,angka= 45) dibandingkan dengannilai_terbesar(saat itu 23). Karena 45 > 23, makanilai_terbesardiperbarui menjadi 45. - Proses ini berlanjut hingga akhir array. Akhirnya,
nilai_terbesarakan menyimpan nilai tertinggi yang ditemukan.
3. Fungsi (Prosedur/Metode): Memecah Masalah Menjadi Bagian Kecil
Fungsi adalah blok kode yang dirancang untuk melakukan tugas tertentu. Penggunaan fungsi sangat penting untuk membuat kode lebih terorganisir, mudah dibaca, dan dapat digunakan kembali (reusable). Semester 2 seringkali memperkenalkan konsep ini secara lebih mendalam.
Contoh Soal 3.1: Membuat Fungsi untuk Menghitung Luas Persegi Panjang
Buatlah sebuah program yang memiliki fungsi bernama hitungLuasPersegiPanjang. Fungsi ini menerima dua parameter, yaitu panjang dan lebar, dan mengembalikan nilai luasnya. Program utama kemudian memanggil fungsi ini untuk menghitung dan menampilkan luas persegi panjang dengan panjang 10 dan lebar 5.
Penjelasan Konsep:
Fungsi yang mengembalikan nilai disebut sebagai function atau method. Ia menerima input (parameter), melakukan perhitungan, dan memberikan output (nilai kembali).
Solusi (menggunakan pseudocode):
// Definisi Fungsi
FUNGSI hitungLuasPersegiPanjang(panjang: INTEGER, lebar: INTEGER) MENGEMBALIKAN INTEGER
INTEGER luas
luas = panjang * lebar
KEMBALIKAN luas
AKHIR FUNGSI
// Program Utama
INTEGER panjang_input = 10
INTEGER lebar_input = 5
INTEGER hasil_luas
// Memanggil fungsi
hasil_luas = hitungLuasPersegiPanjang(panjang_input, lebar_input)
CETAK "Panjang: ", panjang_input
CETAK "Lebar: ", lebar_input
CETAK "Luas Persegi Panjang: ", hasil_luas
Analisis Solusi:
- Bagian
FUNGSI hitungLuasPersegiPanjang(...)mendefinisikan fungsi. Ia menerimapanjangdanlebarsebagai input, menghitungluas, dan mengembalikannya menggunakanKEMBALIKAN. - Di
Program Utama, kita mendeklarasikan variabelpanjang_inputdanlebar_input. - Kita kemudian memanggil fungsi
hitungLuasPersegiPanjangdengan memberikan nilaipanjang_inputdanlebar_inputsebagai argumen. Nilai yang dikembalikan oleh fungsi disimpan dalamhasil_luas. - Terakhir, hasil luas ditampilkan.
Contoh Soal 3.2: Membuat Fungsi untuk Memeriksa Bilangan Genap atau Ganjil
Buatlah sebuah program yang memiliki fungsi bernama cekGenapGanjil. Fungsi ini menerima satu parameter integer dan mengembalikan string "Genap" jika bilangan tersebut genap, atau "Ganjil" jika bilangan tersebut ganjil. Program utama meminta pengguna memasukkan sebuah angka, kemudian memanggil fungsi ini untuk menampilkan hasilnya.
Penjelasan Konsep:
Fungsi ini akan menggunakan operator modulus (% atau MOD) untuk menentukan apakah sebuah bilangan habis dibagi 2.
Solusi (menggunakan pseudocode):
// Definisi Fungsi
FUNGSI cekGenapGanjil(angka: INTEGER) MENGEMBALIKAN STRING
JIKA angka MOD 2 == 0 MAKA
KEMBALIKAN "Genap"
LAIN
KEMBALIKAN "Ganjil"
AKHIR JIKA
AKHIR FUNGSI
// Program Utama
INTEGER input_angka
STRING hasil_cek
CETAK "Masukkan sebuah angka: "
BACA input_angka
// Memanggil fungsi
hasil_cek = cekGenapGanjil(input_angka)
CETAK "Angka ", input_angka, " adalah bilangan ", hasil_cek
Analisis Solusi:
- Fungsi
cekGenapGanjilmenerimaangka. - Operator
MOD 2akan menghasilkan sisa pembagianangkadengan 2. Jika sisanya 0, berarti angka tersebut genap. - Fungsi mengembalikan string "Genap" atau "Ganjil" sesuai hasil pemeriksaan.
- Di
Program Utama, kita membaca input pengguna dan memanggil fungsi, lalu menampilkan hasilnya.
4. Pengantar Pemrograman Berorientasi Objek (OOP) – Konsep Dasar
Meskipun pemrograman berorientasi objek (OOP) adalah topik yang lebih luas, semester 2 seringkali memperkenalkan konsep dasarnya, seperti class dan object.
Contoh Soal 4.1: Membuat Class ‘Mobil’ Sederhana
Buatlah sebuah class sederhana bernama Mobil yang memiliki atribut (properti) merk dan tahunProduksi, serta sebuah metode (fungsi dalam class) bernama tampilkanInfo. Metode tampilkanInfo akan mencetak informasi lengkap mobil tersebut. Kemudian, buatlah objek dari class Mobil dan panggil metodenya.
Penjelasan Konsep:
- Class: Adalah cetak biru (blueprint) untuk membuat objek. Ia mendefinisikan atribut dan metode yang akan dimiliki oleh objek-objek yang dibuat darinya.
- Object: Adalah instance (wujud nyata) dari sebuah class. Ia memiliki data (nilai atribut) dan perilaku (metode).
Solusi (menggunakan pseudocode):
// Definisi Class Mobil
CLASS Mobil
// Atribut
merk: STRING
tahunProduksi: INTEGER
// Konstruktor (opsional, untuk inisialisasi awal)
// CONSTRUCTOR Mobil(m: STRING, tahun: INTEGER)
// merk = m
// tahunProduksi = tahun
// AKHIR CONSTRUCTOR
// Metode
METODE tampilkanInfo()
CETAK "Merk Mobil: ", merk
CETAK "Tahun Produksi: ", tahunProduksi
AKHIR METODE
AKHIR CLASS
// Program Utama
// Membuat objek dari Class Mobil
// Menggunakan konstruktor (jika ada) atau set atribut secara manual
DEKLARASI objekMobil1 SEBAGAI Mobil
// Mengatur nilai atribut objekMobil1 (jika tidak menggunakan konstruktor)
objekMobil1.merk = "Toyota Avanza"
objekMobil1.tahunProduksi = 2022
// Memanggil metode dari objekMobil1
objekMobil1.tampilkanInfo()
// Contoh lain dengan objek kedua
DEKLARASI objekMobil2 SEBAGAI Mobil
objekMobil2.merk = "Honda Civic"
objekMobil2.tahunProduksi = 2023
objekMobil2.tampilkanInfo()
Analisis Solusi:
CLASS Mobil ... AKHIR CLASSmendefinisikan struktur classMobil.- Di dalamnya ada atribut
merkdantahunProduksi. - Metode
tampilkanInfo()mendefinisikan perilaku objekMobil, yaitu menampilkan informasi tentang dirinya sendiri. - Di
Program Utama,DEKLARASI objekMobil1 SEBAGAI Mobilmembuat sebuah objek dari classMobil. - Kita kemudian mengisi nilai atribut
merkdantahunProduksiuntukobjekMobil1. - Terakhir,
objekMobil1.tampilkanInfo()memanggil metode yang telah didefinisikan dalam class untuk menampilkan data objek tersebut.
Pentingnya Latihan dan Pemahaman
Contoh-contoh soal di atas hanyalah sebagian kecil dari materi yang mungkin Anda temui. Kunci utama untuk menguasai pemrograman adalah latihan yang konsisten. Cobalah untuk memahami logika di balik setiap solusi, bukan hanya menghafalnya.
Tips Tambahan:
- Pahami Pertanyaan: Baca soal dengan teliti. Identifikasi input, proses yang dibutuhkan, dan output yang diharapkan.
- Buat Pseudocode: Sebelum menulis kode sebenarnya, buatlah pseudocode atau diagram alur untuk merencanakan solusi Anda. Ini membantu mengorganisir pikiran dan mencegah kesalahan logika.
- Uji Coba dengan Berbagai Input: Setelah program selesai, uji dengan berbagai nilai input, termasuk kasus batas (misalnya, nilai minimum, maksimum) dan kasus yang tidak valid.
- Jangan Takut Bertanya: Jika Anda bingung, jangan ragu untuk bertanya kepada guru atau teman. Diskusi dapat membuka wawasan baru.
- Pelajari Bahasa Pemrograman: Contoh di atas menggunakan pseudocode agar lebih umum. Namun, Anda perlu menerjemahkannya ke dalam bahasa pemrograman yang diajarkan di sekolah Anda (misalnya, Python, Java, C++).
Dengan memahami dan melatih contoh-contoh soal ini, Anda akan membangun fondasi yang kuat dalam pemrograman dasar. Kemampuan ini akan menjadi aset berharga saat Anda melanjutkan ke jenjang pendidikan yang lebih tinggi atau memasuki dunia kerja. Selamat belajar dan bereksplorasi di dunia pemrograman!


Leave a Reply