Struktur Data dan Program Pascal

Struktur Data dan Program Pascal

Pada dasarnya struktur data merupakan metode untuk melakukan penyimpanan, penyusunan, dan pengaturan data pada media penyimpanan sehingga data tersebut dapat digunakan secara efisien. Dalam teknik pemrograman, struktur data berarti pengaturan dan penyusunan dari tata letak kolom-kolom data, baik kolom data yang tampak oleh pengguna program maupun tata letak kolom pada memori yang tidak tampak oleh pengguna, yang tidak tampak ini hanya digunakan untuk kepentingan proses dalam program saja.
Struktur data digunakan untuk meningkatkan efisiensi penggunaan memori pada saat program komputer sedang bekerja. Penggunaan struktur data yang tepat pada pemograman dapat membuat algoritma menjadi lebih mudah, kemudahan ini membuat program lebih efisien dan sederhana.
Meningkatkan efisiensi merupakan tujuan utama pengaplikasian struktur data. Dengan struktur data, proses reservasi memori yang tidak perlu akan diminimalisasi. Selain itu struktur data juga menjamin kemudahan pemahaman algoritma, sehingga untuk menyelesaikan permasalahan seperti perkalian matriks, visualisasi matriks dan tabel, akan menjadi lebih mudah dipahami.



A. Kegunaan dan Jenis Struktur Data
Pemakaian struktur data yang tepat di dalam proses pemograman akan menghasilkan algoritma yang lebih jelas dan tepat, sehingga menjadikan program secara keseluruhan lebih efisien dan sederhana. Jenis-jenis struktur data ada 2 macam yaitu :
1. Struktur Data Sederhana
1. Array (Larik)
Larik adalah struktur data statik yang menyimpan sekumpulan elemen yang bertipe sama. Setiap elemen diakses langsung melalui indeksnya. Indeks larik harus tipe data yang menyatakan keterurutan misalnya integer atau karakter. Banyaknya elemen larik harus sudah diketahui sebelum program dieksekjusi. Tipe elemen larik dapat berupa tipe sederhana, tipe terstruktur, atau tipe larik lain. Nama lain array adalah Larik, tabel, atau vector.
2. Record (Catatan)
ADT adalah definisi tipe dan sekumpulan primitif (operasi dasar) terhadap tipe tersebut. Tipe diterjemahkan menjadi tipe terdefinisi dalam bahasa pemrograman yang bersangkutan.

2. Struktur Data Majemuk
1. Linier
1. Stack (Tumpukan)
Stack (tumpukan) adalah list linier yang dikenali elemen puncaknya (top), aturan penyisipan dan penghapusan elemennya tertentu (penyisipan selalu dilakukan "di atas" (top), penghapusan selalu dilakukan pada top). Karena aturan penyisipan dan penghapusan semacam itu, top adalah satu-satunya alamat tempat terjadi operasi. Elemen yang ditambahkan paling akhir akan menjadi elemen yang akan dihapus. Dikatakan bahwa elemen stack akan tersusun secara LIFO (Last In First Out).
2. Queue (Antrian)
Queue (antrian) adalah list linier yang dikenali elemen pertama (head) dan elemen terakhirnya (tail); Aturan penyisipan dan penghapusan elemennya disefinisikan sebagai penyisipan selalu dilakukan setelah elemen terakhir, penghapusan selalu dilakukan pada elemen pertama; Satu elemen dengan elemen lain dapat diakses melalui informasi next.
3. List dan Multi-List (Daftar)
List linier adalah sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu, yang setiap elemennya terdiri dari 2 bagian. sebuah list linier dikenali dengan (1) elemen pertamanya, biasanya melalui alamat elemen pertama yang disebut (first); (2) Alamat elemen berikutnya (suksesor), jika kita mengetahui alamat sebuah elemen, yang dapat diakses melalui field next; (3) Setiap elemen mempunyai alamat, yaitu tempat elemen disimpan dapat diacu. Untuk mengacu sebuah elemen, alamat harus terdefinisi. Dengan alamat tersebut informasi yang tersimpan pada elemen list dapat diakses; (4) Elemen terakhirnya.

2. Non-Linier
1. Binary Tree (Pohon Biner)
Sebuah pohon biner (binary tree) adalah himpunan terbatas yang mungkin kosong atau terdiri dari sebuah simpul yang disebut sebagai akar dan dua buah himpunan lain yang disjoint yang merupakan pohon biner yang disebut sebagai sub pohon kiri (left) dan sub pohon kanan (right) dari pohon biner tersebut. Pohon biner merupakan tipe yang sangat penting dari struktur data dan banyak dijumpai dalam berbagai terapan. Karakteristik yang dimiliki oleh pohon biner adalah bahwa setiap simpul paling banyak hanya memiliki dua buah anak, dan mungkin tidak punya anak. Istilah-istilah yang digunakan sama dengan istilah pada pohon secara umum.
2. Graph (Graf)
Graph merupakan struktur data yang paling umum. Jika struktur linier memungkinkan pendefinisian keterhubungan sekuensial antara entitas data, struktur data tree memungkinkan pendefinisian keterhubungan hirarkis, maka struktur graph memungkinkan pendefinisian keterhubungan tak terbatas antara entitas data. Banyak entitas-entitas data dalam masalah-masalah nyata secara alamiah memiliki keterhubungan langsung (adjacency) secara tak terbatas demikian. Contoh: informasi topologi dan jarak antar kota-kota di pulau Jawa. Dalam masalah ini kota X bisa berhubungan langsung dengan hanya satu atau lima kota lainnya. Untuk memeriksa keterhubungan dan jarak tidak langsung antara dua kota dapat diperoleh berdasarkan data keterhubungan-keterhubungan langsung dari kota-kota lainnya yang memperantarainya. Representasi data dengan struktur data linier ataupun hirarkis pada masalah ini masih bisa digunakan namun akan membutuhkan pencarian-pencarian yang kurang efisien. Struktur data graph secara eksplisit menyatakan keterhubungan ini sehingga pencariannya langsung (straightforward) dilakukan pada strukturnya sendiri.

B. Bagian Statement
Bagian statement merupakan bagian program yang berisi perintah yang akan dieksekusi/dijalankan. Pada bahasa Pascal, bagian statement selalu diawali dengan reserved word begin dan end. Apabila blok statement adalah blok utama program, maka reserved word end harus diakhiri dengan tanda titik(.), sebaliknya jika blok statement bukan blok utama program maka reserved word end diakhiri dengan tanda titik koma (;).
Berikut adalah penjelasan baris demi baris dari potongan kode Pascal:
1) uses crt; Reserved word uses digunakan untuk mengincludekan library ke dalam program. Terdapat cukup banyak Library/Unit standar yang ada pada Pascal, antara lain untuk menangani perhitungan matematika, manipulasi strings, dan sebagainya.
2) const phi = 3.14; Baris kedua ini digunakan untuk mendeklarasikan konstanta phi.
3) var diameter, radius, Luas : real; Baris ketiga ini digunakan untuk mendeklarasikan variable diameter, radius, dan luas dengan tipe data real (bilangan pecahan).
4) begin Baris ini menandakan blok statement dimulai.
5) readln(diameter); Baris kelima berisi perintah readln yang berfungsi untuk meminta input dari user, dan kemudian disimpan ke variable diameter.
6) radius := diameter/2; Baris keenam ini melakukan operasi pembagian diameter dengan dua, kemudian hasilnya disimpan pada variable radius (untuk mendapatkan jari-jari dari diameter).
7) Luas := phi * radius * radius; Baris ini kembali melakukan operasi matematika yang berfungsi untuk menghitung luas.
8) writeln(Luas); Baris ini digunakan untuk mencetak isi variable Luas ke layar.
9) end. Baris ini menandakan akhir dari blok statement utama.

C. Repeat Until
Pengulangan ini adalah kebalikan dari WHILE DO, jika pada WHILE DO, sebelum menjalankan statement, maka kondisi dicek terlebih dahulu. Maka sebaliknya, pada REPEAT UNTIL, program menjalankan statement dalam blok BEGIN END satu kali terlebih dahulu, baru di akhir dilakukan pengecekan kondisi. Jika kondisi terpenuhi, maka Blok statement akan diulang lagi, sampai kondisi sudah tidak terpenuhi. Jadi, minimal blok program dalam REPEAT UNTIL dijalankan satu kali.
Contoh penggunaan:
i:=1;
REPEAT
Writeln(i);
i:=i+5;
UNTIL i>5;

D. Program Sederhana Menggunakan Bahasa Turbo Pascal
PROGRAM NamaQMantulMantulSampaidiTekanEscape;
USES crt;
CONST
lebar=55;
tinggi=20;
xawal=1;
yawal=1;
VAR
x,y : byte;
dx,dy : shortint;
c : char;
BEGIN
{inisialisasi awal}
x:=xawal;
y:=yawal;
dx:=1;
dy:=1;
c:=#0;
REPEAT
clrscr; {bersihkan layar}
sound(1000);
gotoxy(x,y);
textcolor(3);
writeln('T.Mirwan Sahputra'); {mencetak bintang pada posisi X,Y}
x:=x+dx; {ubah koordinat x}
y:=y+dy; {ubah koordinat y}
gotoxy(x,y);
textcolor(4+128);
writeln(' ¬ ¬¬¬ ¬ ¬¬¬ ¬ ');
x:=x+dx; {ubah koordinat x}
y:=y+dy; {ubah koordinat y}
gotoxy(x,y);
textcolor(15+128);
writeln('Mahasiswa T.Informatika');
x:=x+dx; {ubah koordinat x}
y:=y+dy; {ubah koordinat y}
{cek, jika sudah sampai di batas layar,
maka ubah dx & dy untuk ganti arah}
IF (X>=lebar) OR (X<=1) THEN dx:=-dx;
IF (Y>=tinggi) OR (Y<=1) THEN dy:=-dy;
{jika ada penekanan tombol, maka tombol tersebut dideteksi}
IF keypressed THEN c:=readkey;
delay(700); {menunda selama 700ms}
NoSound;
UNTIL c=#27;
END.