Struktur Data dan Manfaatnya
Pernahkan kita membuat program sederhana yang menyimpan nama seseorang pada sebuah variabel String
? Perhatikan contoh kode program berikut:
Kode program di atas cukup mudah untuk dipahami, kan? Namun, program seperti di atas tentu tidak begitu bermanfaat selain hanya untuk kebutuhan belajar pemrograman. Nyatanya kode program tersebut tidak menyelesaikan masalah apapun. Tentunya bukan itu tujuan sebenarnya kita membuat program.
Tujuan Membuat Program
Seharusnya, ketika kita membuat program, ada tujuan tertentu yang harus tercapai, atau ada permasalahan yang dapat diselesaikan dengan program tersebut. Misalnya:
- Mencari mahasiswa yang berprestasi
- Mencari langkah penyelesaian labirin
- Mencari jalur terpendek dari dan menuju ke suatu tempat
- Memprediksi langkah permainan catur
- Menyusun puzzle
- dsb
Mengetahui tujuan membuat program akan memudahkan dalam membuat program itu sendiri. Kita dapat melakukan persiapan yang sesuai untuk mencapai tujuan tersebut.
Namun, tujuan membuat program bisa saja menjadi sangat kompleks ketika permasalahan yang dipecahkan semakin rumit. Sebagai contoh dalam mencari langkah menyusun puzzle gambar atau prediksi langkah permainan catur.
Bukan hanya algoritma pencariannya yang rumit dan sulit dipahami, namun sebelum itu, cara membuat variabel yang merepresentasikan papan catur atau puzzle gambar ke dalam sebuah variabel inilah yang membuat pemrogramannya menjadi lebih rumit.
Kenalan Dengan Data Yang Berstruktur
Ketika kita ingin mencari sebuah data di dalam kumpulan data yang banyak, tentu kita membutuhkan sebuah kumpulan data-data yang menyimpan berbagai data yang ingin dicari. Misalnya data mahasiswa di sekolah.
Anggap saja kita ingin mencari mahasiswa yang berprestasi di sekolah. Tentu kita butuh lebih dari sekedar nama mahasiswa. Kita butuh nilai Matematika, nilai Bahasa Inggris dan nilai lainnya sebagai bahan pertimbangan untuk memilih mahasiswa berprestasi. Belum lagi data NIM, alamat, nomorHP dan jurusan mahasiswa.
Sehingga membuat program yang menyimpan banyak data mahasiswa tidak dapat dilakukan hanya dengan mengandalkan variabel String
saja. Tetapi perlu Tipe Data lain yang lebih kompleks dan lebih terstruktur. Perhatikan contoh Class berikut:
Class Mahasiswa
di atas merupakan Tipe Data Referensi yang dirancang untuk menyimpan berbagai data mahasiswa yang dibutuhkan untuk menghitung prestasi. Inilah yang disebut dengan Data Berstruktur.
Ada banyak sekali data-data yang harus dibuat berstruktur seperti data pada class Mahasiswa
di atas. Misalnya: data barang di supermarket, data kendaraan, data lokasi, data penduduk, dan sebagainya.
Namun, perlu diingat bahwa data-data yang banyak tersebut hanya merepresentasikan 1 (satu) data saja. Misalnya class Mahasiswa
hanya mewakili 1 (satu) orang mahasiswa setiap object/variable nya. Bagaimana jika di dalam sebuah kelas terdapat banyak mahasiswa?
Koleksi Data Array
Ketika Data Berstruktur dari disimpan menjadi kumpulan data-data dalam bentuk koleksi, maka Array adalah salah satu Tipe Data yang dapat digunakan untuk menyimpan semua jenis Tipe Data Berstruktur. Dengan Array, kita dapat menyimpan semua data Mahasiswa ke dalam sebuah variabel atau objek, sehingga memudahkan dalam proses pencarian dan proses lainnya.
Berikut adalah ilustrasi sebuah koleksi data yang berisi kumpulan data Mahasiswa yang berstruktur.
Setiap data Mahasiswa memiliki struktur data yang sama, yang terdiri dari: (1) nama; (2) nim; (3) jurusan; (4) alamat; dan (5) nomorHp.
Sehingga dengan demikian akan memungkinkan untuk melakukan proses pencarian data Mahasiswa berdasarkan kriteria tertentu. Misalkan proses mencari mahasiswa yang beralamat di "jalan Sudirman" atau mahasiswa "jurusan Teknik Informatika".
Struktur Data Berelasi
Ada kalanya setiap data dengan data lainnya memiliki relasi yang cukup kompleks dari sekedar kumpulan data pada Array. Bayangkan jika ada permasalahan di dalam pemrograman yang membutuhkan kumpulan data yang saling berelasi dengan cara yang berbeda. Misalnya adalah hubungan pertemanan Mahasiswa di dalam kelas seperti ilustrasi berikut.
Dari ilustrasi di atas ada beberapa Mahasiswa yang saling berteman satu dengan yang lain, namun ada juga Mahasiswa yang hanya berteman dengan satu orang Mahasiswa lainnya. Struktur Data seperti ini memungkinkan kita melakukan proses pencarian Mahasiswa yang paling berpengaruh dan yang tidak.
Selain itu, permasalahan dalam mencari rute terpendek juga merupakan permasalahan yang membutuhkan struktur data tertentu untuk diselesaikan. Tanpa struktur data tersebut, akan sangat sulit sekali untuk diselesaikan menggunakan pemrograman.
Itulah alasannya mengapa kita perlu Struktur Data yang sesuai dengan kebutuhan. Untuk contoh di atas kita dapat menggunakan Tree atau Graph untuk menghasilkan data dengan Struktur Data berelasi seperti di atas. Pembahasan lebih rinci tentang Tree dan Graph dipisahkan pada pembahasan tersendiri.
Manfaat Struktur Data
Dari penjelasan di atas dapat disimpulkan beberapa manfaat Struktur Data dalam pemrograman, antara lain:
- Memudahkan dalam merepresentasikan sebuah data yang kompleks di dalam bahasa pemrograman.
- Memudahkan untuk menyelesaikan masalah pemrograman yang lebih kompleks, dan membutuhkan data dengan struktur tertentu.
Tentunya, selain manfaat-manfaat di atas, masing-masing Tipe Data Abstrak memiliki manfaatnya tersendiri. Misalnya Stack dapat digunakan untuk validasi sintaks pemrograman, atau menyelesaikan pencarian rute terpendek dari dan menuju ke suatu lokasi. Begitu juga Tree yang dapat digunakan untuk mencari jalan keluar dari sebuah labirin.
Selanjutnya
Kita sudah mengetahui secara umum tentang Struktur Data dan berbagai Tipe Data Abstrak yang ada beserta manfaatnya. Selanjutnya kita dapat memulai mempelajari tentang berbagai Tipe Data Abstrak beserta Struktur Datanya menggunakan bahasa pemrograman Java.