Semester 2 kelas 11 menjadi momentum penting bagi para siswa untuk memperdalam pemahaman mereka tentang pemrograman dasar. Materi yang diajarkan pada semester ini biasanya mencakup konsep-konsep yang lebih kompleks seperti perulangan bersarang (nested loops), array multidimensional, struktur data dasar, dan mungkin pengantar objek orientasi pemrograman (OOP). Untuk membantu siswa menguasai materi ini, latihan soal yang bervariasi dan relevan sangatlah krusial.
Artikel ini akan menyajikan serangkaian contoh soal pemrograman dasar untuk kelas 11 semester 2, dilengkapi dengan pembahasan mendalam. Tujuannya adalah untuk memberikan pemahaman yang kokoh tentang logika pemrograman, cara mengimplementasikan algoritma, serta membiasakan siswa dengan sintaks dasar bahasa pemrograman yang umum digunakan di sekolah, seperti Python atau Pascal/Delphi (tergantung kurikulum sekolah).
Prasyarat:

Sebelum mendalami contoh soal ini, diasumsikan siswa telah memahami konsep dasar pemrograman seperti:
- Variabel dan tipe data.
- Operator aritmatika, relasional, dan logika.
- Struktur kontrol percabangan (if-else, switch-case).
- Perulangan tunggal (for, while, do-while).
- Array satu dimensi.
Bagian 1: Perulangan Bersarang (Nested Loops)
Perulangan bersarang adalah perulangan di dalam perulangan. Konsep ini sangat penting untuk memproses data yang terstruktur dalam bentuk tabel atau matriks, serta untuk membuat pola-pola visual.
Soal 1: Membuat Pola Bintang Segitiga Siku-Siku
Buatlah program yang menampilkan pola bintang seperti segitiga siku-siku ke kanan dengan tinggi N, di mana N diinputkan oleh pengguna.
Contoh Output untuk N = 5:
*
**
***
****
*****
Pembahasan:
Untuk membuat pola ini, kita memerlukan dua perulangan. Perulangan luar (outer loop) akan mengontrol jumlah baris yang akan dicetak. Perulangan dalam (inner loop) akan mengontrol jumlah bintang yang dicetak pada setiap baris.
- Perulangan Luar: Akan berjalan dari 1 hingga N (jumlah baris).
- Perulangan Dalam: Pada setiap iterasi perulangan luar, perulangan dalam akan berjalan dari 1 hingga nomor baris saat ini. Ini memastikan bahwa baris pertama mencetak 1 bintang, baris kedua mencetak 2 bintang, dan seterusnya.
Contoh Implementasi (Python):
N = int(input("Masukkan tinggi segitiga: "))
for i in range(1, N + 1): # Perulangan luar untuk baris
for j in range(1, i + 1): # Perulangan dalam untuk bintang per baris
print("*", end="") # Mencetak bintang tanpa pindah baris
print() # Pindah baris setelah satu baris bintang selesai dicetak
Penjelasan Kode:
N = int(input("Masukkan tinggi segitiga: ")): Meminta pengguna memasukkan nilai N dan menyimpannya sebagai integer.for i in range(1, N + 1):: Perulangan luar akan beriterasi denganidari 1 hinggaN.range(1, N + 1)menghasilkan urutan angka 1, 2, …, N.for j in range(1, i + 1):: Perulangan dalam akan beriterasi denganjdari 1 hingga nilaiisaat ini. Jikaiadalah 3, makajakan beriterasi 1, 2, 3.print("*", end=""): Mencetak karakter bintang.end=""digunakan agar kursor tidak berpindah ke baris baru setelah mencetak bintang, sehingga bintang-bintang dalam satu baris akan tercetak bersebelahan.print(): Setelah perulangan dalam selesai (artinya satu baris bintang telah tercetak), perintah ini akan memindahkan kursor ke baris berikutnya untuk mencetak baris bintang selanjutnya.
Soal 2: Menampilkan Tabel Perkalian
Buatlah program untuk menampilkan tabel perkalian dari 1×1 hingga 10×10 dalam format tabel.
Contoh Output:
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
...
10 20 30 40 50 60 70 80 90 100
Pembahasan:
Sama seperti soal sebelumnya, kita akan menggunakan perulangan bersarang.
- Perulangan Luar: Akan mengontrol baris tabel perkalian (misalnya, dari 1 hingga 10).
- Perulangan Dalam: Akan mengontrol kolom tabel perkalian (misalnya, dari 1 hingga 10).
Hasil perkalian baris * kolom akan dicetak pada setiap posisi di tabel. Penting untuk mengatur format output agar terlihat rapi, biasanya dengan menggunakan lebar kolom yang tetap.
Contoh Implementasi (Python):
for i in range(1, 11): # Perulangan luar untuk baris (angka yang dikalikan)
for j in range(1, 11): # Perulangan dalam untuk kolom (pengali)
hasil = i * j
print(f"hasil:4d", end="") # Mencetak hasil dengan lebar 4 karakter, rata kanan
print() # Pindah baris setelah satu baris tabel selesai
Penjelasan Kode:
for i in range(1, 11):: Perulangan luar untuk baris,imewakili angka pertama dalam perkalian (1 hingga 10).for j in range(1, 11):: Perulangan dalam untuk kolom,jmewakili angka kedua dalam perkalian (1 hingga 10).hasil = i * j: Menghitung hasil perkalian.print(f"hasil:4d", end=""): Ini adalah f-string formatting di Python.hasil:4d: Memformat variabelhasilsebagai bilangan bulat (d) dengan lebar minimal 4 karakter. Jika angka memiliki kurang dari 4 digit, spasi akan ditambahkan di depannya untuk mencapai lebar 4 karakter. Ini membantu meratakan kolom.end="": Agar tidak pindah baris setelah mencetak setiap angka.
print(): Pindah ke baris baru setelah semua kolom untuk barisiselesai dicetak.
Bagian 2: Array Multidimensional
Array multidimensional adalah array yang memiliki lebih dari satu dimensi, seperti array dua dimensi yang sering direpresentasikan sebagai matriks atau tabel.
Soal 3: Menghitung Nilai Rata-rata dari Matriks Nilai Siswa
Sebuah kelas memiliki 10 siswa dan 5 mata pelajaran. Nilai-nilai siswa disimpan dalam sebuah array dua dimensi nilai, di mana nilai adalah nilai siswa ke-i untuk mata pelajaran ke-j. Buatlah program untuk menghitung dan menampilkan rata-rata nilai untuk setiap siswa.
Contoh Input Data (representatif):
nilai = , # Nilai siswa 0
, # Nilai siswa 1
...
# Nilai siswa 9
]
Contoh Output yang Diharapkan:
Rata-rata nilai siswa 0: 84.2
Rata-rata nilai siswa 1: 78.8
...
Rata-rata nilai siswa 9: 91.6
Pembahasan:
Untuk menghitung rata-rata setiap siswa, kita perlu mengiterasi setiap baris (siswa) dalam array dua dimensi. Untuk setiap siswa, kita perlu menjumlahkan semua nilai mata pelajarannya, lalu membaginya dengan jumlah mata pelajaran.
- Perulangan Luar: Akan mengiterasi setiap siswa (baris array).
- Perulangan Dalam: Akan mengiterasi setiap mata pelajaran (kolom array) untuk siswa yang sedang diproses.
Contoh Implementasi (Python):
# Data nilai siswa (misal, 3 siswa dan 4 mata pelajaran untuk contoh yang lebih pendek)
nilai = ,
,
]
jumlah_siswa = len(nilai)
jumlah_mapel = len(nilai) # Asumsikan semua siswa memiliki jumlah mapel yang sama
for i in range(jumlah_siswa): # Iterasi per siswa (baris)
total_nilai_siswa = 0
for j in range(jumlah_mapel): # Iterasi per mata pelajaran (kolom)
total_nilai_siswa += nilai
rata_rata_siswa = total_nilai_siswa / jumlah_mapel
print(f"Rata-rata nilai siswa i: rata_rata_siswa:.1f") # Format 1 angka di belakang koma
Penjelasan Kode:
nilai =: Mendefinisikan array dua dimensi yang berisi nilai-nilai siswa.jumlah_siswa = len(nilai): Mendapatkan jumlah baris (siswa).jumlah_mapel = len(nilai): Mendapatkan jumlah kolom (mata pelajaran) dari baris pertama.for i in range(jumlah_siswa):: Perulangan luar untuk mengiterasi setiap siswa.iadalah indeks siswa.total_nilai_siswa = 0: Menginisialisasi variabel untuk menjumlahkan nilai siswa pada setiap iterasi perulangan luar.for j in range(jumlah_mapel):: Perulangan dalam untuk mengiterasi setiap mata pelajaran siswai.jadalah indeks mata pelajaran.total_nilai_siswa += nilai: Menambahkan nilai siswaipada mata pelajaranjketotal_nilai_siswa.rata_rata_siswa = total_nilai_siswa / jumlah_mapel: Menghitung rata-rata.print(f"Rata-rata nilai siswa i: rata_rata_siswa:.1f"): Mencetak hasil rata-rata.rata_rata_siswa:.1fmemformat angka desimal dengan satu angka di belakang koma.
Soal 4: Transpose Matriks
Diberikan sebuah matriks persegi A berukuran NxN. Buatlah program untuk menghasilkan matriks transpose dari A. Matriks transpose A^T adalah matriks yang diperoleh dengan menukar baris dan kolom dari matriks A. Artinya, elemen A^T sama dengan A.
Contoh Input Matriks A:
A = ,
,
]
Contoh Output Matriks Transpose A^T:
A^T = ,
,
]
Pembahasan:
Untuk menghasilkan matriks transpose, kita perlu membuat matriks baru dengan ukuran yang sama. Kemudian, kita akan mengiterasi matriks asli, dan menempatkan elemen A ke posisi A^T.
- Inisialisasi Matriks Transpose: Buat matriks baru (misalnya
transpose_A) dengan ukuran yang sama seperti matriks asli, awalnya diisi dengan nilai nol atau placeholder. - Perulangan untuk Mengisi Transpose: Gunakan perulangan bersarang. Perulangan luar mengiterasi baris
idari matriks asli, dan perulangan dalam mengiterasi kolomjdari matriks asli. - Penukaran Indeks: Elemen
Aditempatkan ketranspose_A.
Contoh Implementasi (Python):
# Matriks asli (contoh 3x3)
A = ,
,
]
N = len(A) # Ukuran matriks (karena persegi, N baris = N kolom)
# Inisialisasi matriks transpose dengan nol
transpose_A = for _ in range(N)]
# Mengisi matriks transpose
for i in range(N):
for j in range(N):
transpose_A = A
# Menampilkan matriks asli
print("Matriks A:")
for row in A:
print(row)
print("nMatriks Transpose A^T:")
# Menampilkan matriks transpose
for row in transpose_A:
print(row)
Penjelasan Kode:
A =: Mendefinisikan matriks asli.N = len(A): Mendapatkan dimensi matriks (misalnya, 3 untuk matriks 3×3).transpose_A = for _ in range(N)]: Ini adalah cara ringkas di Python untuk membuat matriks 2D berukuran NxN yang diisi dengan angka 0.membuat satu baris berisi N angka 0, danfor _ in range(N)mengulanginya sebanyak N kali untuk membuat N baris.for i in range(N):: Perulangan luar untuk baris matriks asli.for j in range(N):: Perulangan dalam untuk kolom matriks asli.transpose_A = A: Inilah inti dari proses transpose. Elemen dari barisidan kolomjpada matriksAdisalin ke barisjdan kolomipada matrikstranspose_A.- Blok
for row in A:danfor row in transpose_A:digunakan untuk mencetak matriks dengan format yang lebih mudah dibaca.
Bagian 3: Struktur Data Dasar (Pengantar String & Karakter)
Meskipun struktur data yang lebih kompleks seperti linked list atau stack mungkin diajarkan di semester selanjutnya, pemahaman mendalam tentang manipulasi string dan karakter seringkali menjadi dasar penting.
Soal 5: Menghitung Frekuensi Kemunculan Karakter dalam String
Buatlah program yang menerima sebuah kalimat dari pengguna, lalu menghitung dan menampilkan frekuensi kemunculan setiap karakter alfabet (baik huruf besar maupun kecil) dalam kalimat tersebut. Abaikan spasi dan karakter non-alfabet lainnya.
Contoh Input:
Masukkan sebuah kalimat: Pemrograman itu Menyenangkan!
Contoh Output:
Frekuensi karakter:
p: 1
e: 3
m: 2
r: 2
o: 2
g: 1
a: 2
n: 3
i: 1
t: 1
u: 1
s: 1
n: 1 (sudah dihitung)
g: 1 (sudah dihitung)
k: 1
a: 1 (sudah dihitung)
n: 1 (sudah dihitung)
! : diabaikan
Output yang lebih rapi akan menunjukkan setiap karakter alfabet unik hanya sekali, dengan total jumlah kemunculannya.
Contoh Output yang Lebih Rapi:
Frekuensi karakter:
p: 1
e: 3
m: 2
r: 2
o: 2
g: 1
a: 2
n: 3
i: 1
t: 1
u: 1
s: 1
k: 1
Pembahasan:
Untuk menghitung frekuensi karakter, kita bisa menggunakan sebuah struktur data yang dapat menyimpan pasangan key-value, di mana key adalah karakter dan value adalah jumlah kemunculannya. Di Python, dictionary adalah pilihan yang sangat cocok.
- Iterasi String: Lakukan perulangan untuk setiap karakter dalam kalimat input.
- Filter Karakter: Periksa apakah karakter tersebut adalah huruf alfabet. Jika bukan, abaikan.
- Normalisasi: Ubah huruf besar menjadi huruf kecil (atau sebaliknya) agar ‘A’ dan ‘a’ dihitung sebagai karakter yang sama.
- Penyimpanan Frekuensi:
- Jika karakter sudah ada di dictionary, tambahkan 1 ke nilai kemunculannya.
- Jika karakter belum ada, tambahkan karakter tersebut ke dictionary dengan nilai kemunculan awal 1.
Contoh Implementasi (Python):
kalimat = input("Masukkan sebuah kalimat: ")
frekuensi = # Dictionary untuk menyimpan frekuensi karakter
for karakter in kalimat:
# Ubah ke huruf kecil untuk normalisasi
karakter_lower = karakter.lower()
# Periksa apakah karakter adalah huruf alfabet
if 'a' <= karakter_lower <= 'z':
if karakter_lower in frekuensi:
frekuensi += 1
else:
frekuensi = 1
# Menampilkan hasil
print("nFrekuensi karakter:")
# Mengurutkan berdasarkan karakter alfabet untuk tampilan yang rapi
for char in sorted(frekuensi.keys()):
print(f"char: frekuensi")
Penjelasan Kode:
kalimat = input(...): Meminta input kalimat dari pengguna.frekuensi =: Menginisialisasi sebuah dictionary kosong. Key akan menjadi karakter, dan value adalah jumlah kemunculannya.for karakter in kalimat:: Mengiterasi setiap karakter dalam stringkalimat.karakter_lower = karakter.lower(): Mengubah karakter menjadi huruf kecil. Ini memastikan bahwa ‘P’ dan ‘p’ dihitung sebagai sama.if 'a' <= karakter_lower <= 'z':: Memeriksa apakahkarakter_lowerberada dalam rentang huruf alfabet kecil. Ini secara efektif mengabaikan spasi, angka, dan simbol.if karakter_lower in frekuensi:: Memeriksa apakah karakter tersebut sudah ada sebagai key dalam dictionaryfrekuensi.frekuensi += 1: Jika sudah ada, tambahkan 1 ke nilai yang terkait.else: frekuensi = 1: Jika belum ada, tambahkan karakter tersebut ke dictionary dengan nilai awal 1.
for char in sorted(frekuensi.keys()):: Mengambil semua key (karakter) dari dictionaryfrekuensi, mengurutkannya secara alfabetis menggunakansorted(), lalu mengiterasi hasilnya.print(f"char: frekuensi"): Mencetak karakter dan frekuensinya.
Kesimpulan:
Penguasaan konsep perulangan bersarang dan array multidimensional adalah kunci untuk menyelesaikan banyak masalah pemrograman yang lebih kompleks. Dengan berlatih soal-soal seperti yang disajikan di atas, siswa diharapkan dapat membangun logika berpikir algoritmik yang kuat dan mampu mengimplementasikannya ke dalam kode program. Jangan ragu untuk memodifikasi soal-soal ini atau mencari variasi lain untuk terus mengasah kemampuan pemrograman Anda. Ingatlah bahwa konsistensi dalam berlatih adalah kunci utama keberhasilan dalam belajar pemrograman.


Leave a Reply