Salah satu bagian penting yang wajib dipahami oleh para programmer adalah Struktur Data dan Algoritma. Struktur ini memudahkan pengguna mengakses data yang dibutuhkan secara cepat dan tepat. Karena struktur data memiliki format khusus yang berfungsi untuk mengatur, memproses, mengambil, dan menyimpan data.
Struktur Data menentukan bahasa pemrograman dan algoritma mana yang cocok untuk diimplementasikan. Maka dari itu, harus dipelajari dan difahami oleh programmer.
Nah, kali ini kita akan membahas secara tentang pengenalan struktur data dan algoritma dalam pemrograman.
Pengertian Struktur Data
Struktur data adalah pengaturan data di dalam memori komputer, cara menyimpan dan mengatur data secara terstruktur pada database atau sistem komputer agar lebih mudah diakses. Secara teknis, data bisa berupa angka, huruf, simbol, dan lainnya.
Dalam menyusun data, terdapat beberapa istilah yang perlu Anda pahami, yaitu indeks dan node.

- Indeks, yaitu objek dalam sistem database yang bisa mempercepat proses pencarian data.
- Node, yaitu elemen yang terdapat dalam struktur data. Setiap node berisi pointer ke node selanjutnya.
Struktur data bisa digunakan untuk mengelola database, melakukan kompres file, hingga mengolah data lainnya. Struktur data ini menjadi hal yang wajib dipelajari karena dapat membantu Anda untuk menyatukan berbagai elemen data secara efektif. Apalagi, struktur data juga akan mempengaruhi ketepatan algoritma pemrograman.
Manfaat Struktur Data
Di bawah ini ada beberapa manfaat dari penerapan struktur data yaitu sebagai berikut.
- Agar diperoleh sebuah pemprograman lebih efisien, mudah, dan elegan. Struktur data dapat digunakan untuk membuat perintah melalui bahasa pemrograman secara mudah.
- Supaya data yang disimpan dapat lebih mudah/efisien dalam pengaksesan/pemrosesan data tersebut. Manfaat penerapan struktur data adalah jadi lebih mudah menyimpan dan mengatur data secara efisien dan terorganisir.
- Pertukaran data menjadi lebih mudah karena kita bisa membagi informasi dengan cepat antar aplikasi.
- Meningkatkan kualitas algoritma. Dengan menggunakan struktur data dan menerapkan penyusunan data yang terorganisir, maka dapat berpengaruh pada tingkat efektivitas algoritmanya.
- Mengantisipasi masalah coding. Ketika menggunakan struktur data dan kamu menemukan error, maka error tersebut bisa lebih cepat ditemukan.
- Mengelola sumber daya dan layanan. Sumber daya dan layanan dalam sistem operasi dapat diatur melalui struktur data, struktur data tersebut biasanya memuat manajemen direktori file, alokasi memori, dan masih banyak lagi.
- Pengindeksan. Struktur data dapat digunakan untuk mengindeks objek yang disimpan pada database.
- Searching. Indeks yang terdapat pada struktur data dapat mempercepat proses pencarian data tertentu.
- Skalabilitas. Struktur data digunakan untuk mengalokasikan serta mengelola penyimpanan data di seluruh lokasi penyimpanan. Sehingga sebuah aplikasi big data dapat terjamin performa dan kemampuan upgrade-nya.
Contoh Masalah dan Solusinya
Perhatikan program untuk menghitung jumlah kemunculan angka 1 sampai 500 dalam sebuah file:
if (a == 1) c001++;
if (a == 2) c002++;
...
if (a == 500) c300++;
Program di atas benar walaupun tidak efisien, sangat besar (300 lines of code), dan sulit dipelihara.
Solusi sederhananya gunakanlah array integer yang terdiri dari 300 elemen:
int c[300];
c[a]++;
Macam-macam Operasi
Record
Record adalah kumpulan dari beberapa elemen atau komponen yang berbeda yang terkait satu sama lain dan membentuk entitas tunggal. Setiap elemen dalam record disebut sebagai field, dan setiap field berisi informasi spesifik.
Array
Array adalah salah satu jenis struktur data linear. Struktur data sendiri digunakan agar programmer tak perlu lagi melacak alamat memori data.
Set
Set adalah struktur data berisi kumpulan data tak terurut (unordered). Set bersifat mutable, kita dapat menambah maupun mengurangi data yang ada di dalamnya. Elemen di dalam set harus unik, tidak boleh ada duplikasi elemen pada set. Elemen di dalam set harus berupa eleman yang immutable, setiap elemen yang ada tidak boleh berubah (bedakan dengan set-nya sendiri yang mutable). Ini berarti, Elemen set hanya dapat berupa string, number, dan tuple.
List
List adalah salah satu struktur data dalam bahasa pemrograman python. List dapat kita gunakan untuk menyimpan kumpulan objek/nilai, yang kemudian kita sebut sebagai elemen list. Elemen pada list tersimpan menurut urutan (sequence) tertentu. Isi sebuah list dapat dimanipulasi sehingga dapat berubah (mutable). Ini artinya elemen list dapat ditambah maupun dikurangi.
Stack
Stack atau dalam Bahasa Indonesia diartikan tumpukan, adalah struktur data linier yang mengikuti prinsip Last In First Out (LIFO). Artinya elemen yang terakhir disisipkan akan menjadi elemen pertama yang keluar.
Queue
Queue (antrian) adalah salah satu list linier dari struktur data yang beroperasi dengan cara First In First Out (FIFO) yaitu elemen pertama yang masuk merupakan elemen yang pertama keluar. Data-data di dalam antrian dapat bertipe integer, real, record dalam bentuk sederhana atau terstruktur.
Deque
Deque adalah antrian dimana elemennya bisa masuk dan keluar lewat kedua ujungnya (berbeda dengan queue yang hanya bisa masuk lewat ujung belakang dan keluar lewat ujung depan). Biasanya deque disajikan dengan menggunakan double link list yang memiliki dua buah pointer yang menunjuk ke posisi sebelumnya dan sesudahnya.
Tree
Tree adalah tipe struktur data yang sifatnya non-linier dan berbentuk hierarki. Mengapa tree disebut sebagai struktur data non-linier? Alasannya karena data pada tree tidak disimpan secara berurutan. Sebaliknya, data diatur pada beberapa level yang disebut struktur hierarkis. Karena itu, tree dianggap sebagai struktur data non-linear.
Graph
Graph adalah jenis struktur data umum yang susunan datanya tidak berdekatan satu sama lain (non-linier). Graph terdiri dari kumpulan simpul berhingga untuk menyimpan data dan antara dua buah simpul terdapat hubungan saling keterkaitan.
String
String adalah char yang lebih dari 1 digit karakter, atau disebut juga dengan kumpulan beberapa karakter.
Pengertian Algoritma
Algoritma merupakan urutan langkah yang sistematis untuk menyelesaikan suatu masalah yang tersusun secara logis, khususnya pada komputer.
Manfaat Algoritma
- Membantu memecahkan masalah tertentu dengan cara yang logis dan sistematis. Algoritma dapat digunakan lebih dari satu kali untuk menyelesaikan masalah yang sama. Algoritma juga dapat digunakan untuk membantu memecahkan masalah yang kompleks dengan lebih sederhana.
- Data perlu distrukturkan agar dapat diperoleh algoritma yang sederhana dan/atau berkinerja unggul.
- Algoritma tidak dapat dipisahkan dengan struktur data yang dipilih dalam mempresentasikan data persoalan.
- Algoritma dirancang untuk menyelesaikan suatu persoalan spesifik dengan usaha paling minimal.
Ciri-ciri Algoritma
- Input: masukan, terdapat nol masukan atau lebih yang diberikan.
- Output: keluaran, sedikitnya terdapat satu keluaran yang dihasilkan.
- Definite: jelas, harus secara sempurna menyatakan apa yang dilakukan.
- Effective: setiap instruksi harus dapat dilakukan secara manual selama sejumlah waktu yang berhingga.
- Terminate: berakhir, harus berhenti setelah sejumlah operasi.
Ekspresi Algoritma
Tiga alternatif yang paling sering digunakan, yaitu:
- Bahasa alami (seperti bahasa Indonesia, bahasa Inggris).
- Pseudocode, atau
- Bahasa pemrograman.
Pengertian Data
Data adalah informasi yang sering kita jumpai, yang menggambarkan entitas baik fisik atau tidak dari sesuatu objek.
Contoh :
Data pribadi seorang mahasiswa:
- NIM
- Nama
- Alamat
- Tanggal lahir
- dll
Dasar Pemrograman yang Baik
Analisis dan spesifikasi masalah
Pertama program harus dianalisis dan dirumuskan dengan spesifikasi yang lengkap, presisi, jelas dan tidak ambigu.
Perancangan sistem
Kriteria perancangan yang baik yang harus dicapai misalnya kejelasan (clarity), guna ulang (reusability), keterbacaan (readibility), dan sebagainya. Kriteria-kriteria yang bertentangan harus dikompromikan sehingga memperoleh kinerja/ kualitas sistem yang optimal berdasarkan waktu, biaya, dan usaha yang dilakukan.
Pengkodean atau pemrograman, serta integrasi
Proses mempersiapkan program tidak hanya menguntungkan secara ekonomi dan ilmiah tapi juga merupakan pengalaman estetika yang mengasyikkan.
Verifikasi dan validasi
Program yang telah dihasilkan harus diperiksa terhadap pemenuhan spesifikasi. Pengujian sebanyak mungkin ditujukan untuk menemukan cacat di program.
Pemeliharaan sistem
Program harus selalu dikelola agar dapat berevolusi mengikuti perubahan lingkungan dimana program bekerja
Satuan Ukuran Data
Bit
Ukuran terkecil data dalam sebuah komputer. Bit biasanya hanyalah merupakan pilihan antara 0 dan 1. Dimana 0 biasanya berarti ‘Off’ dan 1 berarti ‘On’. Bit merujuk pada sebuah digit dalam sistem angka biner. Sebagai contoh, angka 1001011 memiliki panjang 7 bit. Digit biner hampir selalu digunakan sebagai satuan terkecil dalam penyimpanan dan komunikasi informasi di dalam teori komputasi dan informasi digital.
Byte
Satuan untuk menyatakan banyaknya data, ukuran/besarnya file, kapasitas memori atau media simpan (misalnya hard disk, flash disk, compaq disk dll). kumpulan unit dari 8 bit, di mana setiap bit menunjukkan nilai biner 1 atau 0.
- Kilobyte(KB) : Kilobyte adalah sekitar 1.000 Bytes (ukuran sebenarnya adalah 1.024 Bytes). 1 Kilobyte bisa menjadi ukuran teks dalam paragraf saat ini anda baca sekarang.
- Megabyte (MB) : Megabyte adalah 1024 kilobyte, Dahulu, megabyte digunakan untuk menyebut ukuran Floppy disk yang dapat menyimpan 1,44 megabyte.
- Gigabyte (GB) : Ukuran Gigabyte adalah sekitar 1.000 Megabyte (tepatnya 1024 Mb).
Field : Sebuah kolom dalam sebuah table, menyimpan satu jenis data. Maka jika terdapat field misalnya seperti NomerBarang atau NamaBarang.
Record : Kumpulan logic dari field pada sebuah table sering di sebut row. dan biasanya dihitung dalam satuan baris.
File : Kumpulan dari record-record yang menggambarkan dari satu kesatuan data yang sejenis. Misalnya seperti file nama barang berisikan data tentang semua nama barang yang ada.

Bank Data : Sebuah tempat penyimpanan data setiap data penting, Bank data dapat juga disebut sebagai database/basis data. Merupakan kumpulan data yang saling berhubungan. Hubungan antar data dapat ditunjukan dengan adanya field/kolom kunci dari tiap file/tabel yang ada.
Database merupakan kumpulan informasi yang disimpan di dalam komputer secara sistematik sehingga dapat diperiksa menggunakan suatu program komputer untuk memperoleh informasi dari basis data tersebut.

Referensi
• Bambang Hariyanto, IR, MT. Struktur Data: Pondasi Membuat Program yang Elegan dan Efisien. Informatika: Bandung. 2008
• Fathurrochman, M.Kom. Pemrograman Berorientasi Objek dengan Bahasa Java. UIN-Malang Press. 2008
• Siswanto. Algoritma & Struktur Data Liner dengan Java. Graha Ilmu. 2010