Semester 2 di kelas 10 merupakan masa krusial dalam memahami fundamental pemrograman. Setelah diperkenalkan dengan konsep-konsep dasar di semester pertama, kini saatnya mengaplikasikannya dalam soal-soal yang lebih menantang. Kemampuan memecahkan masalah, berpikir logis, dan menerjemahkan ide menjadi kode adalah keterampilan yang akan diasah di tahap ini.
Artikel ini akan menyajikan beberapa contoh soal pemrograman dasar yang umum ditemui di kelas 10 semester 2, beserta penjelasan detail dan jawabannya. Tujuannya adalah untuk membantu siswa memperdalam pemahaman, mengidentifikasi area yang perlu ditingkatkan, dan membangun kepercayaan diri dalam menghadapi ujian atau tugas pemrograman.
Kita akan fokus pada beberapa topik penting yang biasanya menjadi materi di semester ini, antara lain:

- Struktur Kontrol Percabangan (If-Else, Switch-Case)
- Struktur Kontrol Perulangan (For, While, Do-While)
- Array (Satu Dimensi)
- Fungsi (Prosedur dan Fungsi)
Mari kita mulai dengan menjelajahi setiap jenis soal.
1. Struktur Kontrol Percabangan (If-Else, Switch-Case)
Struktur kontrol percabangan memungkinkan program untuk membuat keputusan berdasarkan kondisi tertentu. Ini adalah blok bangunan fundamental dalam logika pemrograman.
Contoh Soal 1:
Buatlah program sederhana yang meminta pengguna memasukkan nilai ujian (angka bulat dari 0-100). Program kemudian akan menampilkan predikat kelulusan berdasarkan kriteria berikut:
- Nilai >= 80: "Sangat Baik"
- 60 <= Nilai < 80: "Baik"
- 40 <= Nilai < 60: "Cukup"
- Nilai < 40: "Tidak Lulus"
Analisis Soal:
Soal ini meminta kita untuk menerapkan logika kondisional. Kita perlu membaca input dari pengguna, kemudian menggunakan serangkaian pernyataan if-else if-else untuk membandingkan nilai tersebut dengan rentang yang ditentukan dan menampilkan output yang sesuai.
Jawaban (menggunakan Python sebagai contoh bahasa pemrograman):
# Meminta input nilai dari pengguna
nilai_ujian_str = input("Masukkan nilai ujian Anda (0-100): ")
# Mengubah input string menjadi integer
try:
nilai_ujian = int(nilai_ujian_str)
# Memeriksa rentang nilai dan menentukan predikat
if 0 <= nilai_ujian <= 100: # Validasi input agar berada dalam rentang yang valid
if nilai_ujian >= 80:
predikat = "Sangat Baik"
elif nilai_ujian >= 60:
predikat = "Baik"
elif nilai_ujian >= 40:
predikat = "Cukup"
else:
predikat = "Tidak Lulus"
print(f"Nilai Anda: nilai_ujian")
print(f"Predikat: predikat")
else:
print("Error: Nilai harus berada di antara 0 dan 100.")
except ValueError:
print("Error: Masukkan hanya angka bulat untuk nilai ujian.")
Penjelasan Jawaban:
input("Masukkan nilai ujian Anda (0-100): "): Baris ini menampilkan pesan kepada pengguna dan menunggu mereka memasukkan sebuah nilai. Nilai yang dimasukkan akan disimpan sebagai string dalam variabelnilai_ujian_str.try...except ValueError: Blok ini digunakan untuk menangani potensi kesalahan jika pengguna memasukkan sesuatu yang bukan angka. Jika konversi keintgagal, pesan kesalahan akan ditampilkan.nilai_ujian = int(nilai_ujian_str): Mengubah nilai yang tadinya berupa string menjadi tipe data integer agar bisa dibandingkan secara numerik.if 0 <= nilai_ujian <= 100:: Ini adalah validasi awal untuk memastikan nilai yang dimasukkan berada dalam rentang yang diharapkan (0 hingga 100).if nilai_ujian >= 80:: Pernyataanifpertama memeriksa apakah nilai lebih besar dari atau sama dengan 80. Jika benar,predikatdiatur menjadi "Sangat Baik".elif nilai_ujian >= 60:: Jika kondisiifpertama tidak terpenuhi, program akan memeriksa kondisi ini.elif(singkatan dari "else if") berarti "jika tidak, jika". Ini memeriksa apakah nilai lebih besar dari atau sama dengan 60.elif nilai_ujian >= 40:: Lanjutan darielifsebelumnya, memeriksa rentang nilai 40-59.else:: Jika semua kondisiifdanelifsebelumnya tidak terpenuhi, berarti nilai pasti di bawah 40, sehinggapredikatdiatur menjadi "Tidak Lulus".print(f"Nilai Anda: nilai_ujian")danprint(f"Predikat: predikat"): Menampilkan hasil akhir kepada pengguna menggunakan f-string untuk format yang lebih mudah dibaca.
2. Struktur Kontrol Perulangan (For, While, Do-While)
Perulangan memungkinkan program untuk mengeksekusi blok kode berulang kali. Ini sangat berguna untuk memproses data dalam jumlah besar atau melakukan tugas yang berulang.
Contoh Soal 2:
Buatlah program yang menampilkan deret bilangan ganjil dari 1 hingga 20.
Analisis Soal:
Kita perlu mengulang proses penambahan nilai dan pengecekan apakah nilai tersebut ganjil, atau lebih efisien, langsung menghasilkan bilangan ganjil. Kita bisa menggunakan perulangan for atau while.
Jawaban (menggunakan Python dengan for loop):
print("Deret bilangan ganjil dari 1 hingga 20:")
# Menggunakan for loop untuk iterasi
# range(start, stop, step)
# start = 1 (mulai dari 1)
# stop = 21 (berhenti sebelum 21, jadi sampai 20)
# step = 2 (melompat 2 setiap kali, sehingga hanya menghasilkan bilangan ganjil)
for i in range(1, 21, 2):
print(i, end=" ") # Mencetak angka diikuti spasi, bukan baris baru
print() # Mencetak baris baru di akhir
Penjelasan Jawaban:
print("Deret bilangan ganjil dari 1 hingga 20:"): Menampilkan judul program.for i in range(1, 21, 2):: Ini adalah inti dari solusi.for i in ...: Memulai sebuah perulanganfor. Variabeliakan mengambil setiap nilai dari urutan yang dihasilkan olehrange().range(1, 21, 2): Fungsirange()menghasilkan urutan angka.- Argumen pertama (
1) adalah nilai awal (inklusif). - Argumen kedua (
21) adalah nilai akhir (eksklusif), jadi perulangan akan berhenti sebelum mencapai 21, yaitu sampai 20. - Argumen ketiga (
2) adalah langkah (step). Ini berarti setiap kali perulangan berjalan, nilaiiakan bertambah sebanyak 2. Dengan memulai dari 1 dan menambahkan 2, kita secara otomatis menghasilkan bilangan ganjil (1, 3, 5, 7, …, 19).
- Argumen pertama (
print(i, end=" "): Di dalam perulangan, baris ini mencetak nilaiisaat ini. Argumenend=" "menentukan bahwa setelah mencetak nilaii, program akan mencetak spasi, bukan karakter baris baru default. Ini membuat semua angka ganjil tercetak dalam satu baris yang sama.print(): Setelah perulangan selesai, baris ini mencetak satu karakter baris baru untuk memastikan output selanjutnya (jika ada) dimulai di baris yang baru.
Alternatif Jawaban (menggunakan while loop):
print("Deret bilangan ganjil dari 1 hingga 20:")
angka = 1
while angka <= 20:
print(angka, end=" ")
angka += 2 # Tambahkan 2 untuk mendapatkan bilangan ganjil berikutnya
print()
Penjelasan Alternatif Jawaban:
angka = 1: Menginisialisasi variabelangkadengan nilai awal 1.while angka <= 20:: Perulanganwhileakan terus berjalan selama kondisiangka <= 20bernilaiTrue.print(angka, end=" "): Mencetak nilaiangkasaat ini diikuti spasi.angka += 2: Menambahkan 2 ke variabelangka. Ini adalah bagian penting yang memastikan kita berpindah ke bilangan ganjil berikutnya. Tanpa ini, perulangan akan menjadi tak terbatas (infinite loop) karenaangkatidak pernah akan melebihi 20.
3. Array (Satu Dimensi)
Array adalah struktur data yang memungkinkan kita menyimpan sekumpulan elemen dengan tipe data yang sama di bawah satu nama variabel. Array satu dimensi adalah array yang paling dasar, seperti sebuah daftar.
Contoh Soal 3:
Buatlah program yang meminta pengguna untuk memasukkan 5 buah nama teman. Setelah semua nama dimasukkan, program akan menampilkan semua nama tersebut, diawali dengan nomor urut.
Analisis Soal:
Kita perlu sebuah wadah untuk menyimpan 5 nama. Array adalah pilihan yang tepat. Kemudian, kita akan mengulang untuk meminta input nama dan mengulang lagi untuk menampilkan nama-nama yang sudah tersimpan.
Jawaban (menggunakan Python):
# Membuat array kosong untuk menyimpan nama
nama_teman =
jumlah_teman = 5
print(f"Masukkan jumlah_teman nama teman Anda:")
# Perulangan untuk meminta input nama
for i in range(jumlah_teman):
nama = input(f"Nama teman ke-i+1: ")
nama_teman.append(nama) # Menambahkan nama ke dalam array
print("nDaftar Nama Teman Anda:")
# Perulangan untuk menampilkan nama dengan nomor urut
for i in range(len(nama_teman)):
print(f"i+1. nama_teman")
Penjelasan Jawaban:
nama_teman =: Mendeklarasikan sebuah list kosong di Python. Di banyak bahasa pemrograman lain, ini akan menjadi deklarasi array sepertistring nama_teman;. Di Python, list bersifat dinamis dan bisa menampung elemen dari berbagai tipe data, namun di sini kita menggunakannya sebagai array satu dimensi.jumlah_teman = 5: Menentukan berapa banyak nama yang akan diminta.for i in range(jumlah_teman):: Perulangan ini akan berjalan sebanyakjumlah_temankali (yaitu 5 kali). Variabeliakan bernilai 0, 1, 2, 3, 4.nama = input(f"Nama teman ke-i+1: "): Meminta input nama.i+1digunakan agar nomor urut yang ditampilkan kepada pengguna dimulai dari 1 (bukan 0).nama_teman.append(nama): Metode.append()digunakan untuk menambahkan elemen (nama) ke akhir dari listnama_teman.print("nDaftar Nama Teman Anda:"): Mencetak judul sebelum menampilkan daftar.nmembuat baris baru.for i in range(len(nama_teman)):: Perulangan kedua untuk menampilkan.len(nama_teman)mengembalikan jumlah elemen dalam list (dalam kasus ini, 5).iakan kembali bernilai 0, 1, 2, 3, 4.print(f"i+1. nama_teman"):i+1: Menampilkan nomor urut yang dimulai dari 1..: Mencetak titik sebagai pemisah nomor urut.nama_teman: Ini adalah cara mengakses elemen array (atau list di Python).nama_temanakan mengakses elemen pertama,nama_temanelemen kedua, dan seterusnya.
4. Fungsi (Prosedur dan Fungsi)
Fungsi adalah blok kode yang dapat digunakan kembali untuk melakukan tugas tertentu. Ini membantu memecah program besar menjadi bagian-bagian yang lebih kecil dan terkelola, serta meningkatkan keterbacaan dan efisiensi kode.
Contoh Soal 4:
Buatlah sebuah program yang memiliki dua fungsi:
a. hitungLuasPersegi(sisi): Menerima satu argumen (panjang sisi) dan mengembalikan luas persegi.
b. hitungKelilingPersegi(sisi): Menerima satu argumen (panjang sisi) dan mengembalikan keliling persegi.
Program utama kemudian akan meminta pengguna memasukkan panjang sisi persegi, lalu memanggil kedua fungsi tersebut untuk menampilkan luas dan kelilingnya.
Analisis Soal:
Kita perlu mendefinisikan dua fungsi terpisah yang melakukan perhitungan spesifik. Fungsi-fungsi ini akan menerima input, melakukan perhitungan, dan mengembalikan hasilnya. Program utama akan bertugas mengelola interaksi dengan pengguna dan memanggil fungsi-fungsi yang telah dibuat.
Jawaban (menggunakan Python):
# Definisi Fungsi 1: Menghitung Luas Persegi
def hitungLuasPersegi(sisi):
"""
Fungsi ini menghitung luas persegi.
Argumen:
sisi (int/float): Panjang sisi persegi.
Mengembalikan:
int/float: Luas persegi.
"""
luas = sisi * sisi
return luas
# Definisi Fungsi 2: Menghitung Keliling Persegi
def hitungKelilingPersegi(sisi):
"""
Fungsi ini menghitung keliling persegi.
Argumen:
sisi (int/float): Panjang sisi persegi.
Mengembalikan:
int/float: Keliling persegi.
"""
keliling = 4 * sisi
return keliling
# --- Program Utama ---
print("Program Penghitung Luas dan Keliling Persegi")
# Meminta input sisi dari pengguna
try:
panjang_sisi_str = input("Masukkan panjang sisi persegi: ")
panjang_sisi = float(panjang_sisi_str) # Menggunakan float untuk memungkinkan desimal
if panjang_sisi >= 0: # Memastikan sisi tidak negatif
# Memanggil fungsi untuk menghitung luas dan keliling
luas_hasil = hitungLuasPersegi(panjang_sisi)
keliling_hasil = hitungKelilingPersegi(panjang_sisi)
# Menampilkan hasil
print(f"nPanjang sisi persegi: panjang_sisi")
print(f"Luas persegi: luas_hasil")
print(f"Keliling persegi: keliling_hasil")
else:
print("Error: Panjang sisi tidak boleh negatif.")
except ValueError:
print("Error: Masukkan angka yang valid untuk panjang sisi.")
Penjelasan Jawaban:
def hitungLuasPersegi(sisi):: Mendefinisikan sebuah fungsi bernamahitungLuasPersegiyang menerima satu parametersisi.- Docstring (
""" ... """): Ini adalah dokumentasi untuk fungsi. Sangat baik untuk dijelaskan apa fungsi tersebut lakukan, argumennya, dan apa yang dikembalikannya. - *`luas = sisi sisi`**: Melakukan perhitungan luas persegi.
return luas: Kata kuncireturndigunakan untuk mengembalikan nilai hasil perhitungan dari fungsi. Ketikareturndieksekusi, fungsi berhenti berjalan dan mengembalikan nilai tersebut ke tempat di mana fungsi tersebut dipanggil.def hitungKelilingPersegi(sisi):: Mendefinisikan fungsi kedua dengan logika serupa untuk menghitung keliling.# --- Program Utama ---: Bagian ini adalah kode yang akan dieksekusi ketika program dijalankan.panjang_sisi = float(panjang_sisi_str): Mengubah input menjadi tipe datafloatuntuk memungkinkan input nilai desimal.if panjang_sisi >= 0:: Validasi untuk memastikan sisi persegi tidak negatif.luas_hasil = hitungLuasPersegi(panjang_sisi): Memanggil fungsihitungLuasPersegidengan nilaipanjang_sisisebagai argumen. Nilai yang dikembalikan oleh fungsi disimpan dalam variabelluas_hasil.keliling_hasil = hitungKelilingPersegi(panjang_sisi): Memanggil fungsihitungKelilingPersegidan menyimpan hasilnya.print(...): Menampilkan hasil yang didapatkan dari pemanggilan fungsi.
Kesimpulan
Memahami dan mampu mengerjakan contoh soal seperti di atas adalah kunci untuk menguasai pemrograman dasar di kelas 10. Setiap soal dirancang untuk menguji pemahaman Anda tentang konsep-konsep inti.
- Percabangan (
if-else,switch-case) mengajarkan logika pengambilan keputusan. - Perulangan (
for,while,do-while) melatih Anda untuk mengotomatisasi tugas-tugas berulang. - Array memperkenalkan cara menyimpan dan mengelola kumpulan data.
- Fungsi mengajarkan tentang modularitas, penggunaan kembali kode, dan organisasi program.
Jangan ragu untuk mencoba memodifikasi soal-soal ini, mengubah kondisinya, atau bahkan mencoba menyelesaikan soal yang sama dengan cara yang berbeda. Praktik adalah kunci. Jika Anda menemukan kesulitan, tinjau kembali materi pelajaran, cari referensi tambahan, dan diskusikan dengan guru atau teman. Dengan ketekunan, Anda akan semakin mahir dalam dunia pemrograman!


Leave a Reply