Dunia pemrograman web terus berkembang pesat, dan bagi siswa kelas 10 yang sedang menempuh semester 2, penguasaan dasar-dasar pemrograman web menjadi bekal krusial untuk masa depan. Memasuki semester kedua, materi yang diajarkan biasanya semakin mendalam, mencakup konsep-konsep yang lebih kompleks dan implementasi yang lebih praktis. Artikel ini hadir untuk membantu Anda memahami dan menguasai materi pemrograman web kelas 10 semester 2 melalui kumpulan contoh soal yang relevan beserta pembahasan mendalam.
Semester 2 pemrograman web biasanya fokus pada beberapa area kunci, di antaranya:
- Pengembangan Sisi Klien (Client-Side Development) yang Lebih Lanjut: Melanjutkan dari HTML dan CSS dasar, semester ini seringkali memperkenalkan JavaScript untuk membuat halaman web menjadi interaktif dan dinamis.
- Struktur Data dan Algoritma Dasar: Meskipun tidak sedalam mata kuliah khusus, pengenalan terhadap konsep-konsep ini penting untuk efisiensi dalam penulisan kode.
- Basis Data Dasar: Memahami bagaimana data disimpan dan dikelola menjadi komponen integral dalam pengembangan web.
- Konsep Keamanan Web Dasar: Memahami ancaman umum dan cara mitigasinya.
- Proyek Mini atau Studi Kasus: Mengaplikasikan semua yang telah dipelajari dalam sebuah proyek nyata.
Mari kita selami beberapa contoh soal yang mencakup area-area tersebut, lengkap dengan penjelasan yang akan membantu Anda tidak hanya menghafal jawaban, tetapi juga memahami logikanya.
Bagian 1: JavaScript untuk Interaktivitas Web
JavaScript adalah tulang punggung interaktivitas di web modern. Di semester 2, Anda mungkin akan mendalami variabel, tipe data, operator, struktur kontrol (if-else, loop), fungsi, dan cara memanipulasi elemen HTML (DOM Manipulation).
Contoh Soal 1: Perubahan Teks Berdasarkan Input Pengguna
Soal: Buatlah sebuah halaman web sederhana yang memiliki sebuah input teks ( <input type="text"> ) dan sebuah tombol ( <button> ). Ketika pengguna mengetikkan sesuatu di input teks dan mengklik tombol, teks yang ada di dalam sebuah elemen paragraf ( <p> ) akan berubah sesuai dengan teks yang diketikkan pengguna. Gunakan JavaScript untuk menangani logika ini.
Kode HTML (index.html):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Interaksi JavaScript</title>
<style>
body font-family: Arial, sans-serif;
#output margin-top: 20px; font-size: 1.2em; color: navy;
</style>
</head>
<body>
<h1>Contoh Interaksi JavaScript</h1>
<label for="userInput">Masukkan Teks:</label>
<input type="text" id="userInput" placeholder="Ketik sesuatu di sini...">
<button id="changeTextBtn">Ubah Teks Paragraf</button>
<p id="output">Teks awal di sini.</p>
<script src="script.js"></script>
</body>
</html>
Kode JavaScript (script.js):
// Mendapatkan referensi ke elemen-elemen yang dibutuhkan
const inputElement = document.getElementById('userInput');
const buttonElement = document.getElementById('changeTextBtn');
const outputElement = document.getElementById('output');
// Menambahkan event listener ke tombol
buttonElement.addEventListener('click', function()
// Mengambil nilai dari input teks
const inputText = inputElement.value;
// Memeriksa apakah input teks tidak kosong
if (inputText.trim() !== '')
// Mengubah teks pada elemen paragraf
outputElement.textContent = inputText;
else
// Memberikan pesan jika input kosong
outputElement.textContent = 'Mohon masukkan teks terlebih dahulu.';
);
Pembahasan:
-
HTML Setup:
- Kita memiliki
<h1>sebagai judul,<label>untuk deskripsi input,<input type="text">denganid="userInput"untuk tempat pengguna mengetik,<button>denganid="changeTextBtn"untuk memicu aksi, dan<p>denganid="output"yang akan menampilkan hasilnya. - Tag
<script src="script.js"></script>di akhir<body>memastikan bahwa JavaScript dijalankan setelah elemen HTML dimuat, sehingga elemen-elemen tersebut sudah ada saat script mencoba mengaksesnya.
- Kita memiliki
-
JavaScript Logic:
document.getElementById('elementId'): Fungsi ini digunakan untuk mendapatkan referensi ke elemen HTML berdasarkan ID-nya. Kita menyimpannya dalam variabelinputElement,buttonElement, danoutputElementagar mudah diakses.buttonElement.addEventListener('click', function() ... );: Ini adalah cara JavaScript untuk mendengarkan kejadian (event). Dalam kasus ini, kita mendengarkan eventclickpada tombol. Ketika tombol diklik, fungsi anonim di dalamnya akan dieksekusi.const inputText = inputElement.value;: Di dalam fungsi event listener, kita mengambil nilai teks yang saat ini ada di dalam elemen input menggunakan properti.valuedan menyimpannya dalam variabelinputText.if (inputText.trim() !== ''): Kita menggunakanifuntuk melakukan pengecekan..trim()digunakan untuk menghapus spasi kosong di awal dan akhir string. Ini memastikan bahwa jika pengguna hanya memasukkan spasi, itu tetap dianggap kosong. JikainputTextsetelah di-trim tidak sama dengan string kosong (''), maka blokifakan dijalankan.outputElement.textContent = inputText;: Jika input tidak kosong, kita mengubah isi teks dari elemen paragraf (outputElement) menggunakan properti.textContentdengan nilai dariinputText.else outputElement.textContent = 'Mohon masukkan teks terlebih dahulu.';: Jika kondisiiftidak terpenuhi (input kosong), maka pesan peringatan akan ditampilkan pada elemen paragraf.
Konsep yang Diuji:
- DOM Manipulation (mendapatkan elemen, mengubah teks).
- Event Handling (menangani event klik tombol).
- Variabel dan Tipe Data (string).
- Struktur Kontrol (if-else).
- Metode String (
.trim()).
Contoh Soal 2: Kalkulator Sederhana
Soal: Buatlah halaman web yang berfungsi sebagai kalkulator sederhana untuk penjumlahan dua angka. Halaman ini harus memiliki dua input teks untuk memasukkan angka, sebuah tombol "Jumlahkan", dan sebuah elemen paragraf untuk menampilkan hasilnya.
Kode HTML (kalkulator.html):
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Kalkulator Sederhana</title>
<style>
body font-family: Arial, sans-serif;
input width: 100px; margin: 5px; padding: 8px;
button padding: 10px 15px; margin: 5px; cursor: pointer;
#result margin-top: 20px; font-size: 1.5em; font-weight: bold; color: green;
</style>
</head>
<body>
<h1>Kalkulator Penjumlahan</h1>
<input type="number" id="num1" placeholder="Angka Pertama">
<span> + </span>
<input type="number" id="num2" placeholder="Angka Kedua">
<button id="calculateBtn">Jumlahkan</button>
<div id="result">Hasil: 0</div>
<script src="kalkulator.js"></script>
</body>
</html>
Kode JavaScript (kalkulator.js):
// Mendapatkan referensi ke elemen-elemen
const num1Input = document.getElementById('num1');
const num2Input = document.getElementById('num2');
const calculateButton = document.getElementById('calculateBtn');
const resultDisplay = document.getElementById('result');
// Menambahkan event listener ke tombol
calculateButton.addEventListener('click', function() );
Pembahasan:
-
HTML Setup:
- Kita menggunakan
input type="number"yang memberikan petunjuk pada browser untuk menampilkan keyboard numerik (terutama di mobile) dan validasi dasar. id="num1"danid="num2"untuk input angka.id="calculateBtn"untuk tombol.id="result"untuk menampilkan hasil.
- Kita menggunakan
-
JavaScript Logic:
const number1 = parseInt(num1Input.value);: Ini adalah bagian krusial. Nilai dari elemen input (.value) selalu berupa string. Untuk melakukan operasi matematika, kita perlu mengubahnya menjadi tipe data numerik.parseInt()mencoba mengkonversi string menjadi bilangan bulat. Jika string tidak dapat dikonversi menjadi angka, ia akan mengembalikanNaN(Not a Number).if (isNaN(number1) || isNaN(number2)): Kita menggunakan fungsiisNaN()untuk memeriksa apakah hasil konversiparseInt()adalahNaN. Jika salah satu atau kedua input bukan angka, pesan error akan ditampilkan.resultDisplay.style.color = 'red';: Kita juga memanipulasi gaya CSS dari elemen hasil untuk memberikan umpan balik visual kepada pengguna saat terjadi kesalahan.const sum = number1 + number2;: Jika kedua input adalah angka yang valid, kita melakukan operasi penjumlahan.resultDisplay.textContent =Hasil: $sum`;: Kita menampilkan hasil menggunakan *template literals* (string yang diawali dengan backtick ```) yang memungkinkan penyisipan variabel langsung ke dalam string menggunakan sintaks$variabel`.resultDisplay.style.color = 'green';: Mengembalikan warna teks ke normal.
Konsep yang Diuji:
- DOM Manipulation (mendapatkan elemen, mengubah teks, mengubah gaya).
- Event Handling.
- Tipe Data (string vs. number).
- Konversi Tipe Data (
parseInt()). - Validasi Input (
isNaN()). - Operator Aritmatika (
+). - Struktur Kontrol (if-else).
- Template Literals.
Bagian 2: Pengantar Basis Data
Meskipun pemrograman web front-end berfokus pada apa yang dilihat pengguna, di balik layar, data perlu disimpan. Di kelas 10 semester 2, Anda mungkin diperkenalkan pada konsep dasar basis data relasional, tabel, kolom, baris, dan mungkin sintaks SQL dasar (SELECT, INSERT).
Contoh Soal 3: Konsep Basis Data
Soal: Jelaskan perbedaan antara Tabel, Kolom (Atribut), dan Baris (Record) dalam konteks basis data relasional. Berikan contoh analogi sederhana.
Jawaban:
Dalam basis data relasional, data diorganisir dalam struktur yang mirip dengan tabel di spreadsheet.
-
Tabel (Table): Sebuah tabel adalah kumpulan data yang terstruktur mengenai satu entitas atau subjek tertentu. Setiap tabel memiliki nama unik.
- Analogi: Bayangkan sebuah buku telepon. Seluruh buku telepon itu adalah sebuah tabel yang menyimpan informasi tentang orang-orang.
-
Kolom (Column) / Atribut (Attribute): Kolom adalah deskripsi dari sebuah jenis informasi yang disimpan dalam tabel. Setiap kolom memiliki nama unik dalam tabel tersebut dan menentukan tipe data yang dapat disimpan di dalamnya (misalnya, teks, angka, tanggal).
- Analogi: Di dalam buku telepon, kolom-kolomnya adalah "Nama Depan", "Nama Belakang", "Nomor Telepon", "Alamat". Masing-masing kolom ini mendefinisikan jenis informasi yang akan Anda temukan untuk setiap orang.
-
Baris (Row) / Record (Record): Baris adalah satu instance atau entri data tunggal dalam sebuah tabel. Setiap baris berisi nilai-nilai untuk setiap kolom yang ditentukan dalam tabel tersebut.
- Analogi: Setiap entri individu untuk satu orang di buku telepon (misalnya, "Budi" | "Santoso" | "08123456789" | "Jl. Mawar No. 10") adalah sebuah baris atau record.
Contoh Tabel Basis Data (Siswa):
| ID_Siswa (Kolom) | Nama_Lengkap (Kolom) | Kelas (Kolom) | Tanggal_Lahir (Kolom) | |
|---|---|---|---|---|
| 101 | Siti Aminah | X-A | 2007-05-15 | (Baris 1) |
| 102 | Budi Pratama | X-B | 2007-09-22 | (Baris 2) |
| 103 | Ani Lestari | X-A | 2007-11-01 | (Baris 3) |
Dalam contoh di atas:
Siswaadalah nama tabel.ID_Siswa,Nama_Lengkap,Kelas,Tanggal_Lahiradalah kolom atau atribut.- Setiap baris yang berisi data satu siswa (misalnya, ID 101, Siti Aminah, X-A, 2007-05-15) adalah sebuah baris atau record.
Konsep yang Diuji:
- Pemahaman terminologi basis data relasional (Tabel, Kolom, Baris).
- Kemampuan memberikan analogi yang relevan.
Bagian 3: Konsep Keamanan Web Dasar
Keamanan adalah aspek penting dalam pengembangan web, bahkan di tingkat dasar. Siswa perlu memahami ancaman umum dan praktik terbaik untuk mencegahnya.
Contoh Soal 4: Ancaman Keamanan Web Umum
Soal: Sebutkan dan jelaskan dua ancaman keamanan web yang umum dihadapi oleh pengembang, serta berikan satu langkah pencegahan untuk masing-masing ancaman tersebut.
Jawaban:
-
Ancaman: Cross-Site Scripting (XSS)
- Penjelasan: XSS adalah jenis serangan di mana penyerang menyuntikkan skrip berbahaya (biasanya JavaScript) ke dalam halaman web yang dilihat oleh pengguna lain. Jika situs web tidak memiliki perlindungan yang memadai, skrip ini dapat dijalankan di browser korban, memungkinkan penyerang untuk mencuri informasi sensitif seperti cookie sesi, kata sandi, atau bahkan mengontrol tindakan pengguna di situs tersebut. Serangan ini sering terjadi ketika input pengguna ditampilkan kembali di halaman web tanpa disanitasi dengan benar.
- Langkah Pencegahan: Sanitasi Input dan Output (Input/Output Encoding). Pastikan semua data yang berasal dari pengguna (input) sebelum disimpan atau ditampilkan kembali di halaman web harus disanitasi. Ini berarti karakter-karakter khusus yang dapat ditafsirkan sebagai kode (seperti
<,>,",',&) harus diubah menjadi representasi aman (misalnya,<menjadi<). Ini memastikan bahwa kode yang disuntikkan ditampilkan sebagai teks biasa oleh browser, bukan dieksekusi.
-
Ancaman: SQL Injection
- Penjelasan: SQL Injection adalah serangan yang terjadi ketika penyerang menyisipkan atau "menyuntikkan" perintah SQL berbahaya ke dalam permintaan yang dikirimkan ke basis data. Jika aplikasi web menggunakan input pengguna secara langsung dalam kueri SQL tanpa validasi yang tepat, penyerang dapat memanipulasi basis data, seperti membaca data sensitif, mengubah atau menghapus data, atau bahkan mendapatkan kontrol penuh atas basis data.
- Langkah Pencegahan: Penggunaan Prepared Statements (dengan Parameterized Queries). Daripada membangun kueri SQL dengan menggabungkan string input pengguna secara langsung, gunakan prepared statements. Ini adalah cara aman untuk berinteraksi dengan basis data di mana kueri SQL dikirim ke server basis data terlebih dahulu dengan placeholder untuk nilai-nilai data. Nilai data kemudian dikirim secara terpisah. Basis data akan membedakan antara perintah SQL dan data, sehingga input berbahaya tidak akan pernah dieksekusi sebagai kode SQL.
Konsep yang Diuji:
- Pemahaman tentang ancaman keamanan web umum (XSS, SQL Injection).
- Pengetahuan tentang praktik pencegahan keamanan dasar.
- Kemampuan menjelaskan konsep teknis secara jelas.
Bagian 4: Proyek Mini / Studi Kasus
Semester 2 seringkali ditutup dengan proyek yang mengintegrasikan berbagai konsep yang telah dipelajari.
Contoh Soal 5: Merancang Struktur Proyek Mini
Soal: Anda diminta untuk membuat sebuah "Buku Tamu Sederhana" yang memungkinkan pengunjung meninggalkan pesan. Rancanglah struktur folder proyek Anda dan jelaskan file-file apa saja yang akan Anda buat beserta fungsinya.
Jawaban:
Untuk proyek "Buku Tamu Sederhana", kita bisa mengorganisir proyek dalam struktur folder yang logis.
Struktur Folder:
buku_tamu/
├── css/
│ └── style.css
├── js/
│ └── script.js
├── index.html
└── data_tamu.txt (Atau file penyimpanan data sederhana lainnya jika belum belajar database)
Penjelasan File:
-
index.html(File Utama Halaman Web):- Fungsi: File ini adalah halaman utama yang akan dilihat oleh pengunjung.
- Isi:
- Struktur dasar HTML (DOCTYPE, html, head, body).
- Di dalam
<head>: Metadata, judul halaman, dan tautan ke file CSS (<link rel="stylesheet" href="css/style.css">). - Di dalam
<body>:- Formulir (
<form>) untuk mengumpulkan input dari pengunjung (nama, pesan). - Input field (
<input type="text">) untuk nama. - Textarea (
<textarea>) untuk pesan. - Tombol submit (
<button type="submit">). - Bagian (
<div>atau<section>) untuk menampilkan daftar pesan tamu yang sudah ada. - Tautan ke file JavaScript (
<script src="js/script.js"></script>) di akhir<body>.
- Formulir (
-
css/style.css(File Gaya Cascading Style Sheets):- Fungsi: File ini berisi semua aturan styling untuk membuat halaman web terlihat menarik dan rapi.
- Isi: Aturan CSS untuk mengatur tampilan elemen-elemen HTML seperti font, warna, tata letak (layout), margin, padding, border, dll. Ini akan memastikan formulir dan daftar pesan tamu terorganisir dengan baik.
-
js/script.js(File Skrip JavaScript):- Fungsi: File ini menangani interaktivitas halaman web dan logika pemrosesan data.
- Isi:
- Event listener untuk mendengarkan ketika formulir dikirimkan.
- Mengambil nilai nama dan pesan dari input form.
- Melakukan validasi sederhana (misalnya, memastikan nama dan pesan tidak kosong).
- (Jika belum menggunakan database) Menulis data nama dan pesan ke dalam file
data_tamu.txtatau menyimpannya di Local Storage browser. - Memuat dan menampilkan pesan tamu yang sudah ada dari
data_tamu.txt(atau Local Storage) ke halamanindex.html. - Mungkin menambahkan efek visual atau konfirmasi kepada pengguna.
-
data_tamu.txt(File Penyimpanan Data Sederhana):- Fungsi: (Ini adalah alternatif jika belum belajar database atau backend). File ini berfungsi sebagai tempat penyimpanan sementara untuk pesan tamu. Setiap baris bisa mewakili satu entri tamu.
- Isi: Data nama dan pesan yang dipisahkan oleh pemisah tertentu (misalnya,
Nama: Budi, Pesan: Selamat Datang!). - Catatan: Mengelola data langsung di file teks di sisi klien (browser) memiliki keterbatasan keamanan dan skalabilitas. Ini lebih untuk tujuan pembelajaran konsep penyimpanan data. Dalam aplikasi nyata, ini akan digantikan oleh basis data yang dikelola di sisi server.
Konsep yang Diuji:
- Organisasi Proyek (Struktur Folder).
- Pemahaman fungsi setiap jenis file dalam pengembangan web (HTML, CSS, JS).
- Perencanaan Proyek.
- Pengenalan konsep penyimpanan data (meskipun sederhana).
Penutup
Menguasai materi pemrograman web kelas 10 semester 2 membutuhkan pemahaman konsep yang kuat dan latihan yang konsisten. Contoh soal di atas mencakup area-area penting yang sering diajarkan. Dengan memahami logika di balik setiap soal dan mencoba mengembangkannya sendiri, Anda akan membangun fondasi yang kokoh untuk menjelajahi dunia pemrograman web yang lebih luas.
Ingatlah bahwa kunci keberhasilan dalam pemrograman adalah praktik, praktik, dan praktik. Jangan ragu untuk memodifikasi contoh-contoh ini, mencoba fitur-fitur baru, dan membangun proyek-proyek kecil Anda sendiri. Selamat belajar dan selamat ngoding!


Leave a Reply