Menjelaskan konsep data dan informasi dalam konteks komputasi.
Mendefinisikan pengertian struktur data dan tujuannya.
Mengidentifikasi empat jenis struktur data dasar: Array, Stack (Tumpukan), Queue (Antrean), dan Linked List (Senarai Berantai).
Membedakan karakteristik dan cara kerja dari masing-masing struktur data tersebut melalui analogi.
Memberikan contoh penerapan struktur data dalam kehidupan sehari-hari dan aplikasi digital.
Memilih struktur data yang tepat untuk menyelesaikan masalah sederhana.
Kamar Berantakan: Semua barang (baju, buku, sepatu) dilempar begitu saja di lantai. Saat kalian butuh kaos kaki sebelah kanan warna biru, berapa lama waktu yang dibutuhkan untuk mencarinya? Pasti lama dan merepotkan!
Kamar Rapi: Baju dilipat di lemari, buku disusun di rak berdasarkan genre, sepatu diletakkan di rak sepatu. Saat butuh barang yang sama, kalian tahu persis harus mencari di mana. Prosesnya cepat dan efisien.
Komputer, dalam mengelola data, juga seperti itu. Data yang berantakan akan membuat komputer bekerja lambat dan tidak efisien. Di sinilah kita butuh "lemari" dan "rak" khusus untuk data. Konsep inilah yang disebut STRUKTUR DATA.
Struktur Data adalah cara menyimpan, mengatur, dan mengakses data di dalam komputer agar dapat digunakan secara efisien
Data adalah fakta mentah atau representasi dari objek dan kejadian. Contoh: 85, "Budi", "Bengkulu", 170.5. Data ini belum memiliki arti yang jelas jika berdiri sendiri. Ketika diolah, ia menjadi informasi. Contoh: Nama siswa "Budi" dari "Bengkulu" memiliki nilai 85 dan tinggi 170.5 cm.
Tujuan utamanya adalah EFISIENSI.
Efisiensi Waktu: Mempercepat proses pencarian, penambahan, dan penghapusan data. Bayangkan Google harus mencari satu informasi dari miliaran situs tanpa struktur data, pasti butuh waktu berhari-hari!
Efisiensi Memori: Mengatur penggunaan memori komputer agar tidak boros.
Data linear berarti data disimpan secara berurutan, satu setelah yang lain.
Konsep: Kumpulan elemen data sejenis yang disimpan dalam lokasi memori yang berdekatan.
Analogi: Rak telur atau rak buku bernomor.
Setiap lubang telur punya nomor urut (disebut indeks), dimulai dari 0.
Kita bisa langsung mengambil telur di posisi ke-5 tanpa harus memeriksa telur ke-1, 2, 3, dan 4.
Ukurannya tetap, kita tidak bisa tiba-tiba menambah lubang baru di rak telur.
Karakteristik:
Akses data sangat cepat jika kita tahu nomor indeksnya.
Ukuran bersifat statis (ditentukan di awal).
Menambah atau menghapus data di tengah-tengah itu sulit (harus menggeser semua elemen lain).
Contoh Nyata: Daftar kontak di HP, daftar siswa dalam absensi kelas.
Konsep: Struktur data yang mengikuti prinsip LIFO (Last-In, First-Out). Data yang terakhir masuk adalah data yang pertama kali keluar.
Analogi: Tumpukan piring kotor atau tumpukan kartu.
Saat menumpuk piring, piring terakhir yang kamu letakkan di atas akan menjadi piring pertama yang kamu ambil untuk dicuci.
Karakteristik:
Penambahan (disebut Push) dan penghapusan (disebut Pop) data hanya bisa dilakukan di satu ujung, yaitu "atas" (top).
Contoh Nyata:
Tombol Undo (Ctrl+Z): Perintah terakhir yang kamu lakukan (misal: menebalkan teks) akan menjadi yang pertama dibatalkan.
Histori Browser (Tombol Back): Halaman yang terakhir kamu kunjungi adalah yang pertama muncul saat kamu klik "Back".
Konsep: Struktur data yang mengikuti prinsip FIFO (First-In, First-Out). Data yang pertama masuk adalah data yang pertama kali keluar.
Analogi: Antrean di kasir supermarket atau loket bioskop.
Orang yang pertama datang dalam antrean adalah orang yang pertama kali dilayani.
Karakteristik:
Penambahan data (disebut Enqueue) dilakukan di ujung "belakang" (rear).
Penghapusan data (disebut Dequeue) dilakukan di ujung "depan" (front).
Contoh Nyata:
Antrean Cetak (Print Queue): Dokumen yang kamu kirim pertama ke printer akan dicetak lebih dulu.
Chat WhatsApp: Pesan yang dikirim lebih dulu akan berada di urutan atas.
Konsep: Kumpulan data di mana setiap elemen (disebut node) tidak harus disimpan bersebelahan di memori. Setiap node berisi data dan "petunjuk" (pointer) ke node berikutnya.
Analogi: Rangkaian gerbong kereta api atau permainan berburu harta karun (treasure hunt).
Setiap gerbong (node) terhubung dengan gerbong di depannya. Kita bisa dengan mudah menambah atau melepas gerbong di tengah-tengah rangkaian tanpa membongkar seluruh kereta.
Setiap petunjuk dalam perburuan harta karun (node) memberitahu kita lokasi petunjuk berikutnya.
Karakteristik:
Ukuran bersifat dinamis (bisa ditambah atau dikurangi kapan saja).
Fleksibel dalam menambah atau menghapus data di tengah.
Akses data lebih lambat dari Array, karena harus menelusuri dari node pertama.
Contoh Nyata: Playlist musik di Spotify. Kamu bisa dengan mudah menambah lagu baru di tengah playlist atau menghapus lagu tanpa mengganggu urutan lagu lainnya.
Sekarang, mari kita pecahkan beberapa masalah nyata di sekitar kita dengan ilmu struktur data! Bentuklah kelompok yang terdiri dari 4-5 orang. Bacalah setiap cerita di bawah ini, diskusikan dalam kelompok, dan tentukan struktur data (Array, Stack, Queue, atau Linked List) yang paling ideal untuk menjadi solusi dari setiap kasus.
Siapkan argumen dan alasan yang kuat untuk setiap pilihanmu!
Studi Kasus 1: Kopi Kekinian di Kafe Tepi Danau ☕
Rina dan teman-temannya baru saja membuka sebuah kafe kopi populer di dekat Danau Dendam Tak Sudah, Bengkulu. Saat akhir pekan, kafe sangat ramai. Pesanan datang terus-menerus melalui aplikasi kasir. Barista mereka, Kak Budi, sempat kebingungan. Ada pesanan "Kopi Semendo Gula Aren", lalu masuk lagi "Matcha Latte", disusul "Red Velvet". Kak Budi khawatir ada pelanggan yang merasa dilayani tidak adil karena pesanannya dilewati. Ia ingin sistem di komputernya memastikan bahwa pesanan yang masuk lebih dulu adalah yang akan ia buat lebih dulu.
Pertanyaan Diskusi: Untuk menciptakan sistem yang adil dan teratur bagi Kak Budi, struktur data apa yang paling cocok untuk mengelola daftar pesanan yang masuk? Jelaskan mengapa struktur data tersebut adalah pilihan terbaik!
Studi Kasus 2: Petualangan Desain Poster Festival Tabut 🎨
Ahmad, seorang siswa SMAN 10 Bengkulu, ditugaskan membuat poster digital untuk acara Festival Tabut di sekolahnya. Ia menggunakan aplikasi desain grafis. Pertama, ia menambahkan gambar Benteng Marlborough. Lalu, ia menulis judul "Gempita Tabut 2025". Setelah itu, ia menambahkan logo OSIS. Tiba-tiba, ia merasa logo OSIS ukurannya kurang pas. Ia ingin membatalkan (undo) tindakan terakhirnya (menambahkan logo) untuk memperbaikinya. Setelah logo diperbaiki, ia sadar tulisan judulnya juga salah font, ia ingin membatalkan lagi tindakannya yang sebelumnya.
Pertanyaan Diskusi: Di balik layar aplikasi desain yang digunakan Ahmad, struktur data apa yang paling mungkin digunakan untuk menyimpan riwayat tindakan sehingga fitur "Undo" bisa bekerja dengan sempurna? Mengapa prinsip kerja struktur data itu sangat sesuai?
Studi Kasus 3: Pengaturan Tempat Duduk Bus Wisata Sekolah 🚌
Pak Guru Hendra sedang merencanakan wisata edukasi untuk 30 siswa kelas X ke Museum Negeri Bengkulu. Ia menyewa sebuah bus mini dengan kapasitas tepat 30 kursi yang sudah diberi nomor urut dari 1 sampai 30. Sebelum berangkat, untuk memudahkan pengecekan, Pak Hendra ingin mencatat nama setiap siswa akan duduk di kursi nomor berapa. Selama perjalanan, ia harus bisa dengan cepat memeriksa, "Siapa yang duduk di kursi nomor 15?" atau "Rani duduk di kursi nomor berapa?". Denah tempat duduk ini tidak akan berubah selama perjalanan.
Pertanyaan Diskusi: Untuk menyimpan dan mengelola data denah tempat duduk siswa di bus, struktur data apa yang paling efisien bagi Pak Guru Hendra? Berikan alasan mengapa struktur data ini unggul untuk kebutuhan akses cepat dan data yang cenderung tidak berubah!
Studi Kasus 4: Playlist Musik Penambah Semangat Belajar Kelompok 🎵
Kelompok belajar Citra sedang mempersiapkan ujian akhir. Agar suasana belajar lebih santai, mereka membuat "Playlist Semangat" di aplikasi musik. Awalnya hanya ada 5 lagu. Lalu, Budi menyarankan untuk menambahkan lagu baru di antara lagu ke-2 dan ke-3. Kemudian, Rani merasa ada satu lagu yang tidak cocok dan meminta untuk menghapusnya dari tengah-tengah playlist. Terakhir, mereka semua setuju untuk memindahkan lagu terakhir menjadi lagu pembuka. Mereka ingin semua perubahan ini bisa dilakukan dengan mudah tanpa harus membuat ulang seluruh daftar dari awal.
Pertanyaan Diskusi: Melihat kebutuhan playlist yang sangat dinamis (sering diubah, ditambah, dihapus, dan diatur ulang urutannya), struktur data apa yang menjadi fondasi paling fleksibel untuk fitur playlist musik ini? Jelaskan keunggulannya dibandingkan struktur data lain!
Studi Kasus 5: Rak "Buku Baru" di Perpustakaan Sekolah 📚
Ibu Santi, pustakawan sekolah, membuat program "Baca Buku Baru Minggu Ini". Ia menyediakan satu rak khusus di dekat pintu masuk yang hanya bisa menampung tepat 10 buku. Setiap hari Senin, ia akan meletakkan 10 buku baru di rak tersebut. Ketika seorang siswa meminjam satu buku dari rak itu, slot di rak menjadi kosong. Ibu Santi kemudian akan mengisi slot kosong tersebut dengan buku baru lainnya dari dalam kardus persediaan. Sistem perpustakaan digitalnya harus bisa merepresentasikan rak ini. Sistem harus bisa menangani penambahan buku baru dan penghapusan buku yang dipinjam dengan efisien.
Pertanyaan Diskusi: Kasus ini cukup unik. Di satu sisi, kapasitas rak sudah pasti (10 buku). Di sisi lain, isinya sering berubah. Menurut kelompokmu, struktur data apa yang lebih baik untuk mengelola rak "Buku Baru" ini? Apakah Array karena ukurannya yang tetap, atau Linked List karena isinya yang dinamis? Berikan argumen untuk pilihanmu dan diskusikan kemungkinan kelemahan dari setiap pilihan!
Struktur Data adalah cara efisien untuk menyimpan dan mengatur data.
Array itu seperti rak telur: akses cepat, ukuran tetap.
Stack itu seperti tumpukan piring: yang terakhir masuk, yang pertama keluar (LIFO).
Queue itu seperti antrean kasir: yang pertama datang, yang pertama dilayani (FIFO).
Linked List itu seperti gerbong kereta: fleksibel, ukuran dinamis.
Pemilihan struktur data yang tepat akan membuat program komputer berjalan lebih cepat dan efisien.
Data: Fakta mentah yang belum diolah.
Indeks: Nomor urut posisi data dalam sebuah Array, biasanya dimulai dari 0.
FIFO: First-In, First-Out. Prinsip antrean.
LIFO: Last-In, First-Out. Prinsip tumpukan.
Node: Satu elemen dalam Linked List yang berisi data dan penunjuk ke elemen berikutnya.
Petunjuk Pengerjaan:
Bacalah setiap soal dengan teliti.
Jawablah pertanyaan di bawah ini dengan jelas dan terstruktur menggunakan pemahaman dan bahasamu sendiri.
Kaitkan jawabanmu dengan konsep dan analogi yang telah kita diskusikan di kelas.
Soal Esai (Waktu Pengerjaan: 15 Menit)
Konsep Fundamental Jelaskan dengan bahasamu sendiri, mengapa sebuah aplikasi seperti Google Maps atau Instagram membutuhkan struktur data? Apa masalah utama yang akan terjadi jika data lokasi atau postingan hanya disimpan secara acak tanpa aturan?
Perbandingan Kunci: Statis vs. Dinamis Bandingkan struktur data Array dan Linked List. Jelaskan satu situasi di mana Array akan menjadi pilihan yang lebih baik, dan satu situasi lain di mana Linked List akan lebih unggul. Gunakan contoh yang jelas untuk kedua situasi tersebut.
Perbandingan Kunci: Prinsip Urutan Jelaskan perbedaan mendasar antara prinsip LIFO (Last-In, First-Out) pada Stack dan prinsip FIFO (First-In, First-Out) pada Queue. Berikan masing-masing satu contoh nyata dari cara kerja kedua prinsip tersebut dalam aplikasi atau aktivitas sehari-hari.
Pemecahan Masalah: Sistem Notifikasi Bayangkan kamu sedang merancang sistem notifikasi untuk sebuah aplikasi media sosial. Notifikasi (seperti like, komentar, atau follow) harus muncul di layar pengguna sesuai urutan waktu kedatangannya. Notifikasi yang paling dulu masuk harus menjadi yang pertama dibaca. Struktur data apa (Stack atau Queue) yang akan kamu pilih untuk mengelola antrean notifikasi ini? Jelaskan alasanmu secara logis!
Analisis Aplikasi Pribadi Pikirkan satu aplikasi atau game yang paling sering kamu gunakan. Pilih satu fitur spesifik dari aplikasi tersebut (contoh: history video yang ditonton di YouTube, playlist lagu di Spotify, fitur Undo saat mengedit foto, dll.). Analisislah, kira-kira struktur data apa yang paling mungkin bekerja di balik fitur tersebut? Jelaskan mengapa kamu berpikir demikian.