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.
Topik-Topik Kunci PDTO Kelas 10 Semester 2
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:
- Perulangan (Looping):
for,while,do-while(tergantung bahasa pemrograman yang diajarkan). Penggunaanbreakdancontinue. - Percabangan (Conditional Statements) Lanjutan:
switch-case, penggunaan operator logika (&&,||,!) dan operator perbandingan dalam kondisi yang kompleks.
- Perulangan (Looping):
-
Array dan Tipe Data Terstruktur:
- Array satu dimensi dan multi-dimensi.
- Operasi pada array: deklarasi, inisialisasi, akses elemen, pencarian, pengurutan.
- Pengenalan tipe data terstruktur sederhana (misalnya, struct atau class dasar jika sudah dikenalkan).
-
Fungsi (Prosedur/Method):
- Deklarasi dan pemanggilan fungsi.
- Parameter fungsi (pass-by-value dan pass-by-reference jika relevan).
- Nilai balik (return value).
- Konsep rekusif (jika diajarkan).
-
Dasar-Dasar Teknologi Online:
- Pengenalan World Wide Web (WWW), HTML dasar (struktur dokumen, tag-tag umum seperti
<h1>,<p>,<a>,<img>,<ul>,<li>). - Konsep URL, HTTP/HTTPS.
- Pengenalan CSS dasar (selektor, properti, nilai) untuk menata tampilan web.
- Etika dan keamanan digital dasar.
- Pengenalan World Wide Web (WWW), HTML dasar (struktur dokumen, tag-tag umum seperti
Contoh Soal dan Pembahasan
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:
- Inisialisasi: Siapkan daftar harga buku.
- Perulangan: Iterasi melalui setiap harga dalam daftar.
- Percabangan: Untuk setiap harga, tentukan diskon yang berlaku menggunakan pernyataan
if-else if-else. - Perhitungan: Hitung jumlah diskon dan harga akhir.
- Output: Tampilkan harga asli, besaran diskon, dan harga akhir.
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:
- Kita menggunakan struktur perulangan
UNTUK setiap...DALAM...LAKUKANuntuk mengunjungi setiap nilai dalam arrayharga_buku. - Di dalam perulangan, kita mendeklarasikan variabel
diskondanharga_akhiruntuk setiap buku yang diproses agar nilainya tidak terbawa dari iterasi sebelumnya. - Pernyataan
JIKA-LAIN JIKA-LAINdigunakan untuk mengimplementasikan logika diskon. Perhatikan penggunaan operator perbandingan (>,>=,<=) dan operator logika (DAN). - Setelah menentukan
diskon,harga_akhirdihitung dengan mengurangihargaasli dengandiskon. - Terakhir, kita menampilkan informasi yang relevan untuk setiap buku.
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:
- Jumlahkan semua elemen array.
- Bagi total jumlah dengan jumlah elemen array.
b. Frekuensi: - Iterasi melalui array.
- Gunakan counter untuk menghitung setiap kali nilai yang dicari (85) ditemukan.
c. Nilai Tertinggi/Terendah: - Inisialisasi variabel
nilai_tertinggidannilai_terendahdengan elemen pertama array. - Iterasi melalui array mulai dari elemen kedua.
- Bandingkan setiap elemen dengan
nilai_tertinggidannilai_terendahsaat 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:
- Fungsi
PANJANG()(atau serupa) digunakan untuk mendapatkan jumlah elemen. - Untuk rata-rata, kita menggunakan perulangan untuk menjumlahkan semua nilai dan kemudian membaginya dengan jumlah elemen.
- Untuk frekuensi, kita menginisialisasi
jumlah_nilai_85menjadi 0 dan menambahkannya setiap kali nilai 85 ditemukan dalam perulangan. - Untuk nilai tertinggi dan terendah, kita menginisialisasi kedua variabel dengan elemen pertama, lalu membandingkan elemen berikutnya secara iteratif. Perhatikan bahwa kita memulai perulangan dari indeks 1 karena elemen 0 sudah digunakan untuk inisialisasi.
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! = 1
Pembahasan 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:
- Definisi Fungsi: Buat fungsi yang menerima
n. - Kasus Dasar: Jika
nadalah 0, kembalikan 1. - Perulangan: Jika
nlebih besar dari 0, gunakan perulangan untuk mengalikan bilangan dari 1 hinggan. - Kembalikan Nilai: Kembalikan hasil perkalian.
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:
- Definisi Fungsi: Buat fungsi yang menerima
n. - Kasus Dasar (Base Case): Jika
nadalah 0, kembalikan 1. Ini adalah kondisi berhenti agar rekursi tidak berjalan tanpa akhir. - Langkah Rekursif: Jika
nlebih besar dari 0, kembalikanndikalikan dengan hasil pemanggilan fungsi itu sendiri dengan argumenn-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:
- Iteratif: Fungsi ini menggunakan perulangan
UNTUKuntuk menghitung faktorial. Inisialisasihasil_faktorialke 1 penting karena perkalian apapun dengan 0 akan menghasilkan 0. Kasusn=0ditangani secara terpisah. - Rekursif: Fungsi ini memanggil dirinya sendiri.
hitungFaktorial_Rekursif(5)akan memanggilhitungFaktorial_Rekursif(4), yang memanggilhitungFaktorial_Rekursif(3), dan seterusnya, hingga mencapaihitungFaktorial_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:
- Judul utama (
<h1>) berwarna biru. - Paragraf (
<p>) dengan font Arial. - Gambar (
<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:
- Struktur HTML: Buat dokumen HTML dasar (
<!DOCTYPE html>,<html>,<head>,<body>). - Gunakan tag
<h1>untuk nama. - Paragraf: Gunakan tag
<p>untuk hobi dan pesan singkat. - Gambar: Gunakan tag
<img>dengan atributsrcuntuk menentukan sumber gambar danaltuntuk teks alternatif. - Styling (CSS Inline): Terapkan atribut
stylelangsung 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. Atributstyle="color: blue;"diterapkan untuk membuat teks berwarna biru.<p>: Tag untuk paragraf. Atributstyle="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:
- Tulisan "Nama: Budi Santoso" dalam ukuran judul besar dan berwarna biru.
- Tulisan "Hobi: Membaca buku dan bermain sepak bola." dalam font Arial.
- Gambar
profil_budi.jpg(jika ada) dengan lebar 200 piksel. - Tulisan "Pesan singkat: "Senang belajar hal baru setiap hari!"" dalam font Arial.
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:
- Panjang: Kata sandi yang kuat sebaiknya memiliki minimal 10-12 karakter. Semakin panjang, semakin sulit untuk ditebak atau dipecahkan dengan metode brute-force (mencoba semua kemungkinan kombinasi).
- Kombinasi Karakter: Menggunakan kombinasi huruf besar (A-Z), huruf kecil (a-z), angka (0-9), dan simbol (
!@#$%^&*()_+=-;':",./<>?) akan membuatnya jauh lebih kompleks. - Tidak Mudah Ditebak: Hindari penggunaan informasi pribadi yang mudah diketahui publik seperti nama, tanggal lahir, nama hewan peliharaan, atau kata-kata umum yang ada di kamus. Kata sandi yang kuat seringkali terasa acak dan tidak memiliki pola yang jelas.
Contoh Perilaku Tidak Etis di Internet:
- Cyberbullying (Perundungan Siber): Mengirim pesan yang mengancam, menghina, memfitnah, atau menyebarkan rumor jahat kepada orang lain melalui platform digital. Perilaku ini dapat menyebabkan trauma psikologis yang mendalam bagi korban.
- Plagiarisme: Mengambil karya orang lain (tulisan, gambar, musik, dll.) dan mengklaimnya sebagai milik sendiri tanpa memberikan atribusi yang jelas kepada penciptanya. Ini melanggar hak kekayaan intelektual dan merupakan tindakan ketidakjujuran akademis/kreatif.
Penutup
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!