Semester 2 di kelas 10 merupakan periode krusial dalam pembelajaran pemrograman dasar. Setelah melewati dasar-dasar sintaks dan konsep awal di semester 1, siswa dihadapkan pada tantangan yang lebih kompleks, mengasah kemampuan logika berpikir dan memecahkan masalah. Pemrograman bukan hanya sekadar menghafal perintah, melainkan bagaimana menerjemahkan alur berpikir menjadi instruksi yang dapat dipahami komputer. Artikel ini akan membahas beberapa contoh soal pemrograman dasar yang umum ditemui di kelas 10 semester 2, lengkap dengan penjelasan mendalam untuk membantu siswa memahami konsep di baliknya.
Memahami Konsep Kunci Semester 2
Sebelum melangkah ke contoh soal, penting untuk merefleksikan kembali konsep-konsep kunci yang biasanya menjadi fokus di semester 2. Konsep-konsep ini meliputi:

- Struktur Kontrol Lanjutan: Selain
if-elsedanswitch-casedasar, siswa akan mendalami perulangan (for,while,do-while) dengan berbagai variasinya, serta penggunaanbreakdancontinueuntuk mengontrol alur perulangan. - Array dan Struktur Data Sederhana: Pengenalan terhadap array (satu dimensi dan mungkin dua dimensi) sebagai cara untuk menyimpan sekumpulan data dengan tipe yang sama. Ini membuka jalan untuk manipulasi data dalam jumlah besar.
- Fungsi (Prosedur dan Fungsi): Memahami cara membuat dan memanggil fungsi untuk mengorganisir kode, mengurangi redundansi, dan meningkatkan keterbacaan. Konsep parameter, nilai kembalian, dan cakupan variabel (scope) juga menjadi penting.
- Logika Algoritma: Menerapkan algoritma dasar seperti pencarian (linear search, binary search jika sudah diperkenalkan) dan pengurutan (bubble sort, selection sort jika sudah diperkenalkan) untuk memanipulasi data dalam array.
- Dasar Input/Output yang Lebih Kompleks: Mengelola input dan output data dengan lebih dinamis, misalnya membaca dari file (jika diajarkan) atau menangani berbagai format input.
Contoh Soal dan Pembahasannya
Mari kita selami beberapa contoh soal yang mencakup konsep-konsep di atas:
Soal 1: Menghitung Rata-rata Nilai dalam Array
Deskripsi: Buatlah program yang meminta pengguna memasukkan sejumlah nilai (misalnya, 5 nilai) dan menyimpannya dalam sebuah array. Kemudian, hitung dan tampilkan rata-rata dari nilai-nilai tersebut.
Konsep yang Diuji: Array, perulangan, input/output, operasi aritmatika.
Contoh Bahasa Pemrograman (misalnya, Python):
# Meminta pengguna memasukkan jumlah nilai
jumlah_nilai = int(input("Masukkan jumlah nilai yang akan dihitung: "))
# Membuat array kosong untuk menyimpan nilai
nilai_siswa =
# Meminta pengguna memasukkan nilai-nilai
print("Masukkan nilai-nilai Anda:")
for i in range(jumlah_nilai):
nilai = float(input(f"Nilai ke-i+1: "))
nilai_siswa.append(nilai) # Menambahkan nilai ke dalam array
# Menghitung total nilai
total_nilai = 0
for nilai in nilai_siswa:
total_nilai += nilai
# Menghitung rata-rata
rata_rata = total_nilai / jumlah_nilai
# Menampilkan hasil
print(f"nNilai-nilai yang dimasukkan: nilai_siswa")
print(f"Total nilai: total_nilai")
print(f"Rata-rata nilai: rata_rata:.2f") # Format rata-rata hingga 2 angka desimal
Pembahasan:
- Input Jumlah Nilai: Program dimulai dengan meminta pengguna untuk menentukan berapa banyak nilai yang akan mereka masukkan. Variabel
jumlah_nilaiakan menyimpan angka ini. - Inisialisasi Array: Sebuah list kosong bernama
nilai_siswadibuat. Dalam Python, list berfungsi seperti array. - Perulangan Input Nilai:
for i in range(jumlah_nilai):memulai sebuah perulangan yang akan berjalan sebanyakjumlah_nilaikali. Di setiap iterasi, pengguna diminta memasukkan sebuah nilai. Nilai yang dimasukkan dikonversi menjadifloat(angka desimal) untuk fleksibilitas.nilai_siswa.append(nilai)menambahkan nilai tersebut ke dalam listnilai_siswa. - Menghitung Total Nilai: Perulangan kedua
for nilai in nilai_siswa:digunakan untuk menjumlahkan semua elemen yang ada di dalamnilai_siswa. Variabeltotal_nilaimengakumulasi jumlahnya. - Menghitung Rata-rata: Rata-rata dihitung dengan membagi
total_nilaidenganjumlah_nilai. - Menampilkan Hasil: Program menampilkan kembali nilai-nilai yang dimasukkan, total nilai, dan rata-rata nilai yang sudah dihitung.
:.2fdigunakan untuk memformat output rata-rata agar hanya menampilkan dua angka di belakang koma.
Soal 2: Mencari Elemen dalam Array dengan Fungsi
Deskripsi: Buatlah sebuah program yang memiliki sebuah array berisi beberapa angka. Buatlah sebuah fungsi terpisah yang menerima array dan sebuah angka target sebagai input. Fungsi ini harus mengembalikan True jika angka target ditemukan dalam array, dan False jika tidak.
Konsep yang Diuji: Array, fungsi (prosedur/fungsi), perulangan, logika pencarian.
Contoh Bahasa Pemrograman (misalnya, C++):
#include <iostream>
#include <vector> // Menggunakan vector sebagai pengganti array statis
// Fungsi untuk mencari elemen dalam vector
bool cariElemen(const std::vector<int>& arr, int target)
for (int elemen : arr) // Menggunakan range-based for loop (mirip Python)
if (elemen == target)
return true; // Ditemukan, kembalikan true
return false; // Tidak ditemukan setelah seluruh array diperiksa
int main()
// Array (vector) yang sudah diisi
std::vector<int> angka = 10, 25, 5, 42, 15, 8, 30;
int target_cari;
std::cout << "Masukkan angka yang ingin dicari: ";
std::cin >> target_cari;
// Memanggil fungsi cariElemen
if (cariElemen(angka, target_cari))
std::cout << target_cari << " ditemukan dalam array." << std::endl;
else
std::cout << target_cari << " tidak ditemukan dalam array." << std::endl;
return 0;
Pembahasan:
- Include Header:
iostreamuntuk input/output danvectoruntuk menggunakanstd::vectoryang lebih dinamis daripada array C++ statis. - Deklarasi Fungsi
cariElemen:bool cariElemen(...): Fungsi ini mengembalikan nilaibool(true/false).const std::vector<int>& arr: Menerima sebuahvectorinteger sebagai input.constberarti fungsi tidak akan mengubah isi vector, dan&berarti vector dilewatkan dengan referensi untuk efisiensi (tidak membuat salinan).int target: Menerima angka integer yang akan dicari.
- Logika Pencarian:
for (int elemen : arr): Ini adalahrange-based for loopyang sangat berguna. Ia akan mengiterasi melalui setiap elemen dalamarr, dan di setiap iterasi, nilai elemen tersebut akan dimasukkan ke dalam variabelelemen.if (elemen == target): Membandingkan elemen saat ini dengantarget. Jika cocok, artinya elemen ditemukan.return true;: Segera setelah elemen ditemukan, fungsi mengembalikantruedan berhenti bekerja.return false;: Jika perulangan selesai tanpa menemukantarget, makatargettidak ada dalam array, dan fungsi mengembalikanfalse.
- Fungsi
main:std::vector<int> angka = ...;: Mendefinisikan dan menginisialisasi vectorangka.- Meminta input
target_caridari pengguna. if (cariElemen(angka, target_cari)): Memanggil fungsicariElemendengan vectorangkadantarget_cari. Hasiltrueataufalsedari fungsi digunakan untuk menentukan pesan yang akan ditampilkan.
Soal 3: Mengurutkan Array Menggunakan Algoritma Sederhana (Bubble Sort)
Deskripsi: Buatlah program yang memiliki sebuah array berisi beberapa angka acak. Gunakan algoritma Bubble Sort untuk mengurutkan array tersebut dari nilai terkecil ke terbesar, lalu tampilkan hasilnya.
Konsep yang Diuji: Array, perulangan bersarang, logika pengurutan (Bubble Sort).
Contoh Bahasa Pemrograman (misalnya, Java):
import java.util.Arrays; // Untuk mencetak array dengan mudah
public class UrutkanArray
// Fungsi untuk mengurutkan array menggunakan Bubble Sort
public static void bubbleSort(int arr)
int n = arr.length;
boolean swapped; // Flag untuk optimasi
for (int i = 0; i < n - 1; i++)
swapped = false; // Reset flag di setiap pass luar
for (int j = 0; j < n - 1 - i; j++)
// Bandingkan elemen yang berdekatan
if (arr > arr)
// Tukar elemen jika tidak berurutan
int temp = arr;
arr = arr;
arr = temp;
swapped = true; // Set flag karena ada pertukaran
// Jika tidak ada pertukaran dalam satu pass, array sudah terurut
if (!swapped)
break;
public static void main(String args)
// Array yang belum terurut
int angka = 64, 34, 25, 12, 22, 11, 90;
System.out.println("Array sebelum diurutkan: " + Arrays.toString(angka));
// Memanggil fungsi bubbleSort
bubbleSort(angka);
System.out.println("Array setelah diurutkan (Bubble Sort): " + Arrays.toString(angka));
Pembahasan:
- Import
Arrays: Di Java,Arrays.toString()adalah cara yang nyaman untuk mencetak isi sebuah array. - Deklarasi Kelas dan Metode
main: Struktur dasar program Java. - Fungsi
bubbleSort:public static void bubbleSort(int arr): Fungsi ini menerima sebuah array integer (int arr) dan tidak mengembalikan nilai apa pun (mengubah array secara langsung).int n = arr.length;: Mendapatkan panjang array.- Outer Loop (
for (int i = 0; i < n - 1; i++)): Loop ini mengontrol jumlah "pass" atau putaran. Dalam setiap pass, setidaknya satu elemen (yang terbesar) akan "menggelembung" ke posisi yang benar di akhir array. Kita hanya perlun-1pass karena elemen terakhir pasti sudah di tempatnya setelahn-1pass. - Inner Loop (
for (int j = 0; j < n - 1 - i; j++)): Loop ini membandingkan elemen yang berdekatan.n - 1 - idigunakan karena elemen terakhir dari setiap pass (yang terbesar) sudah berada di posisinya yang benar dan tidak perlu diperiksa lagi. - Perbandingan dan Pertukaran (
if (arr > arr)): Jika elemen saat ini (arr) lebih besar dari elemen berikutnya (arr), maka keduanya ditukar. - Variabel
temp: Digunakan untuk menampung sementara nilaiarrsebelum ditimpa oleharr, agar nilai asliarrtidak hilang. - Variabel
swapped(Optimasi): Variabel boolean ini digunakan untuk mendeteksi apakah ada pertukaran yang terjadi dalam satu pass penuh dari inner loop. Jika tidak ada pertukaran sama sekali dalam satu pass, berarti array sudah sepenuhnya terurut, dan kita bisa menghentikan proses lebih awal menggunakanbreak.
mainMethod:- Array
angkadiinisialisasi dengan nilai acak. - Array sebelum diurutkan dicetak.
- Fungsi
bubbleSortdipanggil untuk mengurutkan array. - Array setelah diurutkan dicetak.
- Array
Soal 4: Menggunakan Struktur Kontrol Perulangan while dan Logika Kondisional
Deskripsi: Buatlah sebuah program yang mensimulasikan permainan tebak angka sederhana. Program akan menghasilkan sebuah angka acak antara 1 dan 100. Pengguna diminta menebak angka tersebut. Program akan memberikan petunjuk "Terlalu tinggi" atau "Terlalu rendah" hingga pengguna berhasil menebak angka yang benar.
Konsep yang Diuji: Perulangan while, input/output, logika kondisional (if-else if-else), penggunaan generator angka acak.
Contoh Bahasa Pemrograman (misalnya, C#):
using System;
public class TebakAngka
public static void Main(string args)
// Menghasilkan angka acak
Random random = new Random();
int angkaRahasia = random.Next(1, 101); // Angka acak antara 1 (inklusif) dan 101 (eksklusif)
int tebakanPengguna = 0;
int jumlahTebakan = 0;
Console.WriteLine("Selamat datang di permainan Tebak Angka!");
Console.WriteLine("Saya telah memilih sebuah angka antara 1 dan 100.");
// Perulangan while akan terus berjalan selama tebakan pengguna belum benar
while (tebakanPengguna != angkaRahasia)
Console.Write("Masukkan tebakan Anda: ");
string input = Console.ReadLine();
// Validasi input agar hanya angka
if (int.TryParse(input, out tebakanPengguna))
jumlahTebakan++; // Tambah jumlah tebakan
if (tebakanPengguna < angkaRahasia)
Console.WriteLine("Terlalu rendah!");
else if (tebakanPengguna > angkaRahasia)
Console.WriteLine("Terlalu tinggi!");
else
Console.WriteLine($"Selamat! Anda berhasil menebak angka angkaRahasia dalam jumlahTebakan tebakan.");
// Kondisi dalam while akan menjadi false, perulangan berhenti
else
Console.WriteLine("Input tidak valid. Mohon masukkan angka.");
Console.WriteLine("Terima kasih telah bermain!");
Pembahasan:
using System;: Mengimpor namespaceSystemyang berisi kelasRandomdan kelas untuk input/output konsol.Random random = new Random();: Membuat objekRandomuntuk menghasilkan angka acak.int angkaRahasia = random.Next(1, 101);: Menghasilkan angka integer acak.random.Next(min, max)menghasilkan angka darimin(inklusif) hinggamax(eksklusif). Jadi,random.Next(1, 101)akan menghasilkan angka dari 1 hingga 100.- Variabel
tebakanPenggunadanjumlahTebakan:tebakanPenggunaakan menyimpan tebakan dari pengguna, danjumlahTebakanuntuk menghitung berapa kali pengguna mencoba. - Perulangan
while (tebakanPengguna != angkaRahasia): Perulangan ini akan terus berjalan selama nilaitebakanPenggunatidak sama denganangkaRahasia. - Input Pengguna dan Validasi:
Console.Write(...)danConsole.ReadLine(): Digunakan untuk meminta input dari pengguna dan membacanya sebagai string.int.TryParse(input, out tebakanPengguna): Ini adalah cara yang aman untuk mengonversi string input menjadi integer. Jika konversi berhasil, ia mengembalikantruedan menyimpan hasilnya ditebakanPengguna. Jika gagal (misalnya pengguna mengetik huruf), ia mengembalikanfalse.
- Logika Tebakan (
if-else if-else):- Jika
tebakanPenggunalebih kecil dariangkaRahasia, cetak "Terlalu rendah!". - Jika
tebakanPenggunalebih besar dariangkaRahasia, cetak "Terlalu tinggi!". - Jika tidak keduanya (berarti
tebakanPenggunasama denganangkaRahasia), cetak pesan selamat, dan karena kondisitebakanPengguna != angkaRahasiasekarang menjadifalse, perulanganwhileakan berhenti.
- Jika
- Pesan Akhir: Setelah perulangan selesai, pesan terima kasih ditampilkan.
Tips untuk Menguasai Pemrograman Dasar:
- Pahami Logika, Bukan Sekadar Hafalan: Fokus pada "mengapa" suatu kode bekerja, bukan hanya "bagaimana" menuliskannya. Visualisasikan alur program.
- Latihan Soal Bervariasi: Jangan terpaku pada satu jenis soal. Cobalah berbagai skenario untuk memperluas pemahaman Anda.
- Gunakan Debugger: Jika bahasa pemrograman Anda menyediakan debugger, pelajari cara menggunakannya. Ini sangat membantu dalam melacak kesalahan (bug) pada kode Anda.
- Baca Kode Orang Lain: Membaca solusi dari programmer lain dapat memberikan wawasan baru dan cara-cara yang lebih efisien untuk menyelesaikan masalah.
- Jangan Takut Gagal: Kesalahan adalah bagian dari proses belajar. Analisis kesalahan Anda, pelajari darinya, dan coba lagi.
- Diskusi dan Kolaborasi: Bertukar pikiran dengan teman sekelas atau guru dapat membantu memecahkan kebuntuan dan memperdalam pemahaman.
Kesimpulan
Pemrograman dasar kelas 10 semester 2 adalah fondasi penting untuk perjalanan Anda di dunia teknologi. Dengan menguasai konsep-konsep seperti array, fungsi, perulangan lanjutan, dan algoritma sederhana, Anda sedang membangun kemampuan problem-solving yang sangat berharga. Contoh-contoh soal yang dibahas di atas hanyalah sebagian kecil dari apa yang mungkin Anda temui, namun dengan pemahaman yang kuat terhadap prinsip-prinsip dasarnya, Anda akan lebih siap untuk menghadapi tantangan pemrograman yang lebih kompleks di masa depan. Teruslah berlatih, bereksperimen, dan nikmati proses membangun sesuatu dengan kode!

Leave a Reply