Semester 2 mata pelajaran Pemrograman Dasar dan Teknologi Online (PDTO) bagi siswa kelas 10 merupakan tahap krusial dalam membangun fondasi digital yang kuat. Di semester ini, materi yang diajarkan biasanya semakin mendalam, menguji pemahaman siswa terhadap konsep-konsep pemrograman yang telah dipelajari di semester sebelumnya, serta mulai memperkenalkan aspek-aspek teknologi online yang relevan. Agar siswa dapat mempersiapkan diri dengan optimal, penting untuk memahami berbagai jenis soal yang mungkin dihadapi dan bagaimana cara menyelesaikannya.
Artikel ini akan menyajikan serangkaian contoh soal PDTO kelas 10 semester 2 yang mencakup berbagai topik penting, disertai dengan pembahasan jawaban yang rinci. Tujuannya adalah untuk memberikan gambaran yang komprehensif, membantu siswa mengidentifikasi area yang perlu diperkuat, dan menumbuhkan rasa percaya diri dalam menghadapi ujian atau evaluasi.
Sebelum kita masuk ke contoh soal, mari kita ulas kembali beberapa topik kunci yang umumnya dibahas di semester 2 PDTO kelas 10. Pemahaman mendalam terhadap topik-topik ini akan menjadi bekal utama dalam menjawab soal-soal berikut:
Struktur Kontrol Lanjutan:
for, while, do-while (tergantung bahasa pemrograman yang diajarkan). Penggunaan break dan continue.switch-case, penggunaan operator logika (&&, ||, !) dan operator perbandingan dalam kondisi yang kompleks.Array dan Tipe Data Terstruktur:
Fungsi (Prosedur/Method):
Dasar-Dasar Teknologi Online:
<h1>, <p>, <a>, <img>, <ul>, <li>).Mari kita mulai dengan contoh soal. Soal-soal ini dirancang untuk mencakup berbagai tingkat kesulitan dan jenis pemikiran.
Soal 1: Struktur Kontrol – Perulangan dan Percabangan
Sebuah toko buku ingin menampilkan daftar harga buku beserta diskonnya. Jika harga buku di atas Rp 100.000, maka akan mendapatkan diskon 10%. Jika harga buku antara Rp 50.000 hingga Rp 100.000, maka akan mendapatkan diskon 5%. Jika harga buku di bawah Rp 50.000, maka tidak mendapatkan diskon.
Buatlah pseudocode atau algoritma untuk menghitung dan menampilkan harga akhir dari daftar harga buku berikut: .
Pembahasan Soal 1:
Soal ini menguji pemahaman tentang perulangan untuk memproses setiap elemen dalam daftar dan percabangan untuk menentukan besaran diskon.
Pendekatan:
if-else if-else.Pseudocode:
// Daftar harga buku
harga_buku =
// Iterasi melalui setiap harga dalam daftar
UNTUK setiap harga DALAM harga_buku LAKUKAN:
// Inisialisasi variabel diskon dan harga_akhir
diskon = 0
harga_akhir = 0
// Tentukan besaran diskon berdasarkan harga
JIKA harga > 100000 MAKA:
diskon = harga * 0.10 // Diskon 10%
LAIN JIKA harga >= 50000 DAN harga <= 100000 MAKA:
diskon = harga * 0.05 // Diskon 5%
LAIN:
diskon = 0 // Tidak ada diskon
// Hitung harga akhir
harga_akhir = harga - diskon
// Tampilkan hasil
TAMPILKAN "Harga Asli: ", harga
TAMPILKAN "Diskon: ", diskon
TAMPILKAN "Harga Akhir: ", harga_akhir
TAMPILKAN "---" // Pemisah antar item
AKHIR UNTUK
Penjelasan Rinci:
UNTUK setiap...DALAM...LAKUKAN untuk mengunjungi setiap nilai dalam array harga_buku.diskon dan harga_akhir untuk setiap buku yang diproses agar nilainya tidak terbawa dari iterasi sebelumnya.JIKA-LAIN JIKA-LAIN digunakan untuk mengimplementasikan logika diskon. Perhatikan penggunaan operator perbandingan (>, >=, <=) dan operator logika (DAN).diskon, harga_akhir dihitung dengan mengurangi harga asli dengan diskon.Hasil Output (Simulasi):
Harga Asli: 150000
Diskon: 15000
Harga Akhir: 135000
---
Harga Asli: 75000
Diskon: 3750
Harga Akhir: 71250
---
Harga Asli: 40000
Diskon: 0
Harga Akhir: 40000
---
Harga Asli: 200000
Diskon: 20000
Harga Akhir: 180000
---
Harga Asli: 90000
Diskon: 4500
Harga Akhir: 85500
---
Soal 2: Array – Manipulasi dan Pencarian
Diberikan sebuah array berisi nilai-nilai hasil ulangan matematika siswa: nilai_matematika = .
a. Hitunglah nilai rata-rata dari seluruh nilai ulangan tersebut.
b. Tentukan berapa kali nilai 85 muncul dalam array tersebut.
c. Temukan nilai tertinggi dan terendah dalam array tersebut.
Pembahasan Soal 2:
Soal ini berfokus pada operasi dasar pada array, yaitu perhitungan total, pencarian frekuensi, serta identifikasi nilai ekstrem.
Pendekatan:
a. Rata-rata:
nilai_tertinggi dan nilai_terendah dengan elemen pertama array.nilai_tertinggi dan nilai_terendah saat ini, lalu perbarui jika perlu.Pseudocode:
nilai_matematika =
jumlah_elemen = PANJANG(nilai_matematika) // Mendapatkan jumlah elemen array
// Bagian a: Menghitung rata-rata
total_nilai = 0
UNTUK setiap nilai DALAM nilai_matematika LAKUKAN:
total_nilai = total_nilai + nilai
AKHIR UNTUK
rata_rata = total_nilai / jumlah_elemen
TAMPILKAN "Nilai Rata-rata: ", rata_rata
TAMPILKAN "---"
// Bagian b: Menentukan frekuensi nilai 85
jumlah_nilai_85 = 0
UNTUK setiap nilai DALAM nilai_matematika LAKUKAN:
JIKA nilai == 85 MAKA:
jumlah_nilai_85 = jumlah_nilai_85 + 1
AKHIR JIKA
AKHIR UNTUK
TAMPILKAN "Frekuensi nilai 85: ", jumlah_nilai_85
TAMPILKAN "---"
// Bagian c: Menemukan nilai tertinggi dan terendah
// Asumsikan elemen pertama adalah nilai tertinggi dan terendah awal
nilai_tertinggi = nilai_matematika
nilai_terendah = nilai_matematika
// Iterasi mulai dari elemen kedua (indeks 1)
UNTUK i DARI 1 HINGGA jumlah_elemen - 1 LAKUKAN:
JIKA nilai_matematika > nilai_tertinggi MAKA:
nilai_tertinggi = nilai_matematika
AKHIR JIKA
JIKA nilai_matematika < nilai_terendah MAKA:
nilai_terendah = nilai_matematika
AKHIR JIKA
AKHIR UNTUK
TAMPILKAN "Nilai Tertinggi: ", nilai_tertinggi
TAMPILKAN "Nilai Terendah: ", nilai_terendah
Penjelasan Rinci:
PANJANG() (atau serupa) digunakan untuk mendapatkan jumlah elemen.jumlah_nilai_85 menjadi 0 dan menambahkannya setiap kali nilai 85 ditemukan dalam perulangan.Hasil Perhitungan (Simulasi):
Total nilai = 85+92+78+88+95+72+80+90+85+78 = 843
Jumlah elemen = 10
Rata-rata = 843 / 10 = 84.3
Frekuensi nilai 85 = 2 (nilai pada indeks 0 dan 8)
Nilai Tertinggi = 95
Nilai Terendah = 72
Soal 3: Fungsi – Penggunaan dan Rekursi Sederhana
Buatlah sebuah fungsi bernama hitungFaktorial yang menerima satu argumen berupa bilangan bulat non-negatif n, dan mengembalikan nilai faktorial dari n. Faktorial dari n (ditulis n!) adalah hasil perkalian semua bilangan bulat positif dari 1 hingga n. Faktorial dari 0 adalah 1.
Contoh:
5! = 5 * 4 * 3 * 2 * 1 = 1200! = 1Pembahasan Soal 3:
Soal ini menguji kemampuan membuat dan menggunakan fungsi, serta pemahaman tentang konsep rekursi jika itu adalah bagian dari materi yang diajarkan. Kita akan menyajikan dua solusi: iteratif dan rekursif.
Pendekatan Iteratif:
n.n adalah 0, kembalikan 1.n lebih besar dari 0, gunakan perulangan untuk mengalikan bilangan dari 1 hingga n.Pseudocode (Iteratif):
FUNGSI hitungFaktorial_Iteratif(n):
JIKA n == 0 MAKA:
KEMBALIKAN 1
LAIN:
hasil_faktorial = 1
UNTUK i DARI 1 HINGGA n LAKUKAN:
hasil_faktorial = hasil_faktorial * i
AKHIR UNTUK
KEMBALIKAN hasil_faktorial
AKHIR JIKA
AKHIR FUNGSI
// Contoh pemanggilan fungsi:
bilangan = 5
faktorial_dari_5 = hitungFaktorial_Iteratif(bilangan)
TAMPILKAN "Faktorial dari ", bilangan, " adalah ", faktorial_dari_5
bilangan = 0
faktorial_dari_0 = hitungFaktorial_Iteratif(bilangan)
TAMPILKAN "Faktorial dari ", bilangan, " adalah ", faktorial_dari_0
Pendekatan Rekursif:
n.n adalah 0, kembalikan 1. Ini adalah kondisi berhenti agar rekursi tidak berjalan tanpa akhir.n lebih besar dari 0, kembalikan n dikalikan dengan hasil pemanggilan fungsi itu sendiri dengan argumen n-1.Pseudocode (Rekursif):
FUNGSI hitungFaktorial_Rekursif(n):
JIKA n == 0 MAKA:
KEMBALIKAN 1 // Kasus dasar
LAIN:
KEMBALIKAN n * hitungFaktorial_Rekursif(n - 1) // Langkah rekursif
AKHIR JIKA
AKHIR FUNGSI
// Contoh pemanggilan fungsi:
bilangan = 5
faktorial_dari_5 = hitungFaktorial_Rekursif(bilangan)
TAMPILKAN "Faktorial dari ", bilangan, " adalah ", faktorial_dari_5
bilangan = 0
faktorial_dari_0 = hitungFaktorial_Rekursif(bilangan)
TAMPILKAN "Faktorial dari ", bilangan, " adalah ", faktorial_dari_0
Penjelasan Rinci:
UNTUK untuk menghitung faktorial. Inisialisasi hasil_faktorial ke 1 penting karena perkalian apapun dengan 0 akan menghasilkan 0. Kasus n=0 ditangani secara terpisah.hitungFaktorial_Rekursif(5) akan memanggil hitungFaktorial_Rekursif(4), yang memanggil hitungFaktorial_Rekursif(3), dan seterusnya, hingga mencapai hitungFaktorial_Rekursif(0). Ketika kasus dasar tercapai, nilai mulai dikembalikan dan dikalikan mundur ke atas.Hasil Perhitungan (Simulasi):
Faktorial dari 5 adalah 120
Faktorial dari 0 adalah 1
Soal 4: Dasar-Dasar Teknologi Online – HTML dan CSS
Diberikan sebuah deskripsi sederhana mengenai profil diri. Buatlah kode HTML dasar untuk menampilkan informasi ini, dan tambahkan sedikit gaya menggunakan CSS inline untuk:
<h1>) berwarna biru.<p>) dengan font Arial.<img>) dengan lebar 200 piksel.Deskripsi Profil:
Nama: Budi Santoso
Hobi: Membaca buku dan bermain sepak bola.
Foto Profil: (Bayangkan ada file profil_budi.jpg)
Pesan singkat: "Senang belajar hal baru setiap hari!"
Pembahasan Soal 4:
Soal ini menguji pemahaman tentang struktur dasar dokumen HTML dan cara menerapkan gaya sederhana menggunakan atribut style pada tag HTML (CSS inline).
Pendekatan:
<!DOCTYPE html>, <html>, <head>, <body>).<h1> untuk nama.<p> untuk hobi dan pesan singkat.<img> dengan atribut src untuk menentukan sumber gambar dan alt untuk teks alternatif.style langsung pada tag HTML yang relevan untuk mengatur warna, font, dan lebar.Kode HTML dan CSS Inline:
<!DOCTYPE html>
<html>
<head>
<title>Profil Budi Santoso</title>
</head>
<body>
<h1 style="color: blue;">Nama: Budi Santoso</h1>
<p style="font-family: Arial;">Hobi: Membaca buku dan bermain sepak bola.</p>
<img src="profil_budi.jpg" alt="Foto Profil Budi Santoso" style="width: 200px;">
<p style="font-family: Arial;">Pesan singkat: "Senang belajar hal baru setiap hari!"</p>
</body>
</html>
Penjelasan Rinci:
<!DOCTYPE html>: Mendefinisikan dokumen sebagai HTML5.<html>: Elemen akar dari halaman HTML.<head>: Berisi metadata, seperti judul halaman (<title>).<body>: Berisi konten yang terlihat oleh pengguna.<h1>: Tag untuk judul utama. Atribut style="color: blue;" diterapkan untuk membuat teks berwarna biru.<p>: Tag untuk paragraf. Atribut style="font-family: Arial;" diterapkan untuk mengatur jenis font menjadi Arial.<img>: Tag untuk menyisipkan gambar.
src="profil_budi.jpg": Menentukan lokasi file gambar. Jika gambar berada di folder yang sama, cukup nama filenya.alt="Foto Profil Budi Santoso": Teks yang akan ditampilkan jika gambar gagal dimuat, atau dibaca oleh screen reader untuk aksesibilitas.style="width: 200px;": Mengatur lebar gambar menjadi 200 piksel.Tampilan Hasil (Deskripsi):
Ketika kode ini dibuka di browser web, akan muncul:
profil_budi.jpg (jika ada) dengan lebar 200 piksel.Soal 5: Konsep Keamanan Digital dan Etika
Jelaskan pentingnya penggunaan kata sandi yang kuat dan unik untuk akun online Anda. Berikan minimal tiga ciri-ciri kata sandi yang dianggap kuat. Selain itu, sebutkan dua contoh perilaku yang tidak etis di internet.
Pembahasan Soal 5:
Soal ini menguji pemahaman siswa tentang aspek praktis dan etika dalam menggunakan teknologi online, khususnya terkait keamanan dan perilaku yang bertanggung jawab.
Jawaban Rinci:
Pentingnya Penggunaan Kata Sandi yang Kuat dan Unik:
Kata sandi adalah gerbang utama untuk melindungi akun online kita dari akses yang tidak sah. Jika kata sandi lemah atau digunakan berulang kali di banyak akun, maka risiko akun kita dibobol oleh pihak yang tidak bertanggung jawab akan sangat tinggi. Pembobolan akun dapat berakibat pada pencurian identitas, penyalahgunaan data pribadi, kerugian finansial, atau bahkan penyebaran konten berbahaya atas nama kita. Menggunakan kata sandi yang kuat dan unik untuk setiap akun adalah salah satu langkah pencegahan paling mendasar dan efektif dalam menjaga keamanan digital.
Ciri-ciri Kata Sandi yang Kuat:
!@#$%^&*()_+=-;':",./<>?) akan membuatnya jauh lebih kompleks.Contoh Perilaku Tidak Etis di Internet:
Menguasai materi PDTO kelas 10 semester 2 memerlukan latihan yang konsisten dan pemahaman konsep yang mendalam. Contoh-contoh soal di atas mencakup berbagai aspek penting yang kemungkinan besar akan diujikan, mulai dari logika pemrograman dasar, manipulasi data, hingga penerapan teknologi web dan etika digital.
Disarankan bagi siswa untuk tidak hanya menghafal jawaban, tetapi benar-benar memahami alur berpikir di balik setiap solusi. Cobalah untuk memodifikasi soal, mencari variasi lain, dan bahkan mencoba mengimplementasikan algoritma yang telah dibuat ke dalam bahasa pemrograman yang sedang dipelajari. Dengan pendekatan yang proaktif dan tekun, siswa akan dapat membangun fondasi digital yang kuat dan siap menghadapi tantangan di masa depan.
Semoga artikel ini bermanfaat dan menjadi sumber belajar yang berharga bagi seluruh siswa kelas 10!