Menguasai Pemrograman Dasar: Contoh Soal dan Pembahasan untuk Kelas 11 Semester 2

·

·

Menguasai Pemrograman Dasar: Contoh Soal dan Pembahasan untuk Kelas 11 Semester 2

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:

Menguasai Pemrograman Dasar: Contoh Soal dan Pembahasan untuk Kelas 11 Semester 2

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 dengan i dari 1 hingga N. range(1, N + 1) menghasilkan urutan angka 1, 2, …, N.
  • for j in range(1, i + 1):: Perulangan dalam akan beriterasi dengan j dari 1 hingga nilai i saat ini. Jika i adalah 3, maka j akan 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.

See also  Memahami Aqidah Akhlak Kelas 8 Semester 2: Contoh Soal dan Strategi Belajar Efektif

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, i mewakili angka pertama dalam perkalian (1 hingga 10).
  • for j in range(1, 11):: Perulangan dalam untuk kolom, j mewakili 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 variabel hasil sebagai 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 baris i selesai 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. i adalah 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 siswa i. j adalah indeks mata pelajaran.
  • total_nilai_siswa += nilai: Menambahkan nilai siswa i pada mata pelajaran j ke total_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:.1f memformat angka desimal dengan satu angka di belakang koma.
See also  Membangun Fondasi Keimanan: Contoh Soal Aqidah Kelas 2 Semester 1 (Kurikulum 2017) dan Relevansinya

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 i dari matriks asli, dan perulangan dalam mengiterasi kolom j dari matriks asli.
  • Penukaran Indeks: Elemen A ditempatkan ke transpose_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, dan for _ 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 baris i dan kolom j pada matriks A disalin ke baris j dan kolom i pada matriks transpose_A.
  • Blok for row in A: dan for 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.

See also  Memahami Pecahan Itu Asyik! Kumpulan Contoh Soal Matematika Lengkap untuk Kelas 3 SD

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 string kalimat.
  • karakter_lower = karakter.lower(): Mengubah karakter menjadi huruf kecil. Ini memastikan bahwa ‘P’ dan ‘p’ dihitung sebagai sama.
  • if 'a' <= karakter_lower <= 'z':: Memeriksa apakah karakter_lower berada 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 dictionary frekuensi.
    • 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 dictionary frekuensi, mengurutkannya secara alfabetis menggunakan sorted(), 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

Your email address will not be published. Required fields are marked *