Menguasai Pemrograman Dasar: Kumpulan Contoh Soal Latihan Semester 2 Kelas 10

·

·

Menguasai Pemrograman Dasar: Kumpulan Contoh Soal Latihan Semester 2 Kelas 10

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)

Menguasai Pemrograman Dasar: Kumpulan Contoh Soal Latihan Semester 2 Kelas 10

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 batasBawah hingga batasAtas. Untuk setiap angka dalam iterasi ini (sebut saja angkaSaatIni):
      • Asumsikan angkaSaatIni adalah bilangan prima (setel boolean isPrime = true).
      • Jika angkaSaatIni kurang dari atau sama dengan 1, maka itu bukan bilangan prima (isPrime = false).
      • Jika angkaSaatIni lebih besar dari 1, lakukan iterasi dari 2 hingga akar kuadrat dari angkaSaatIni. 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 angkaSaatIni habis dibagi oleh angka dalam iterasi (yaitu, angkaSaatIni % i == 0), maka angkaSaatIni bukan bilangan prima (isPrime = false), dan Anda bisa menghentikan iterasi pengecekan untuk angkaSaatIni tersebut (menggunakan break).
      • Setelah selesai pengecekan, jika isPrime masih bernilai true, maka cetak angkaSaatIni.

Contoh Soal 1.3: Menghitung Nilai Rata-rata dan Menentukan Kelulusan

See also  Soal ulangan harian tema 7 kelas 3

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 jumlahSiswa kali 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.

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 nilaiTerbesar dan nilaiTerkecil dengan elemen pertama dari array.
    • Iterasi melalui array mulai dari elemen kedua.
    • Di setiap iterasi:
      • Jika elemen saat ini lebih besar dari nilaiTerbesar, perbarui nilaiTerbesar dengan elemen saat ini.
      • Jika elemen saat ini lebih kecil dari nilaiTerkecil, perbarui nilaiTerkecil dengan elemen saat ini.
    • Setelah perulangan selesai, tampilkan nilaiTerbesar dan nilaiTerkecil.

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.
    • Setelah selesai mengiterasi array, iterasi melalui dictionary frekuensi dan tampilkan setiap pasangan kunci-nilai dalam format yang diinginkan.
See also  Mendalami Matematika Kelas 3 Semester Ganjil: Panduan Lengkap Beserta Contoh Soal dan Pembahasan

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 kiri dengan elemen di posisi kanan.
      • Geser pointer kiri ke kanan (kiri++).
      • Geser pointer kanan ke kiri (kanan--).
    • Setelah perulangan selesai, array akan dalam urutan terbalik. Tampilkan array yang telah dibalik.

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.
    • Program Utama:
      • Panggil fungsi: hasilLuas = hitungLuasPersegiPanjang(10, 5).
      • Cetak hasilLuas.

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".
    • Program Utama:
      • Panggil fungsi beberapa kali, misalnya:
        • hasil1 = cekGenapGanjil(4)
        • hasil2 = cekGenapGanjil(7)
        • hasil3 = cekGenapGanjil(100)
      • Cetak hasil1, hasil2, dan hasil3.

Contoh Soal 3.3: Fungsi Rekursif untuk Menghitung Faktorial

See also  Menjelajahi Dunia Akar Pangkat 3: Panduan Lengkap dan Contoh Soal untuk Siswa Kelas 5 (Materi Pengayaan)

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 n sama dengan 0 atau 1, kembalikan 1. Ini adalah kondisi berhenti agar rekursi tidak berjalan selamanya.
    • Langkah Rekursif (Recursive Step): Jika n lebih besar dari 1, kembalikan n * 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.

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 Buku atau class Buku.
      • Deklarasikan anggota data: string judul;, string penulis;, int tahunTerbit;.
    • 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, dan bukuPertama.tahunTerbit.

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:

  1. Pahami Konsepnya, Bukan Hanya Menghafal Kode: Fokuslah pada "mengapa" sebuah kode bekerja, bukan hanya "bagaimana" menuliskannya.
  2. Tulis Kode Sendiri: Jangan hanya menyalin dari contoh. Coba ketik ulang kode tersebut dan pahami setiap barisnya.
  3. Debug Adalah Teman Anda: Kesalahan adalah bagian alami dari pemrograman. Belajarlah cara membaca pesan error dan memperbaikinya.
  4. 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.
  5. Berdiskusi dengan Teman: Belajar bersama teman dapat membantu Anda mendapatkan perspektif baru dan memecahkan masalah yang sulit.
  6. 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

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