Monday, 14 March 2016

Sejarah Struktur data



MAKALAH
Sejarah Struktur data

Disusun oleh : AZJIMAN
Nim : 150180049
Kelas : A2



JURUSAN SISTEM INFORMASI
FAKULTAS TEKNIK
UNIVERSITAS MALIKUSSALEH
2016


KATA PENGANTAR

Segala puji bagi Allah SWT yang telah memberikan nikmat Iman dan Islam kepada kita semua, sehingga kita dapat berkumpul dalam pertemuan yang Insya Allah dimuliakan oleh Nya.
Shalawat dan Salam semoga tetap terlimpah curah kepada junjunan kita Nabi Muhammad SAW. Kepada para sahabatnya para Tabi’it Tabi’innya dan semoga kepada kita selaku ummatnya mendapatkan syafa’atul udzma di Yaumil Jaza.
Harapan penulis  semoga makalah ini membantu menambah pengetahuan dan pengalaman bagi para pembaca, sehingga Penulis dapat memperbaiki bentuk maupun isi makalah ini sehingga kedepannya dapat lebih baik.
Makalah ini penulis akui masih banyak kekurangan karena pengalaman yang penulis miliki sangat kurang. Oleh karena itu penulis  harapkan kepada para pembaca untuk memberikan masukan-masukan yang bersifat membangun untuk kesempurnaan makalah ini.




Bukit Indah,  7  Maret  2016



                   Penulis



DAFTAR ISI


                                             Hal                                                              
KATA PENGANTAR  ..........................................................................................      i
DAFTAR ISI ...........................................................................................................     ii

BAB I       PENDAHULUAN

A.    Latar  Belakang  ................................................................................     1
B.    Tujuan Penulis ...................................................................................     1
C.    Rumusan Masalah ......................................................................... ....     1

BAB II      LANDASAN TEORI

A.    Pengertian  Struktur Data..................................................................     2
B.     Hubungan Struktur Data Dengan Algoritma................................ ....     3
C.     Sejarah Struktur Data........................................................................     5
1.      Pengenalan Struktur Data............................................................     5
2.      Pengenalan Algoritma..................................................................     6
3.      Array............................................................................................     6
4.      Pointer .........................................................................................     7
D.    Kegunaan  Struktur Data.............................................................. ....     9
E.     Tujuan Struktur Data ........................................................................   10
F.      Konsep Antrian ............................................................................ ....   10
1.      Antrian (Queue)...........................................................................   10
2.      Contoh pengaplian Sehari-hari.....................................................   11     
3.      Operasi  Antrian...........................................................................   11
4.      Contoh Jika Antrian Penuh..........................................................   12



BAB III    PENUTUP

A.  Kesimpulan  ....................................................................................    13
B.  Saran-saran ......................................................................................    14

DAFTAR PUSTAKA

BAB I
PENDAHULUAN
A.    LATAR BELAKANG
Struktur data adalah sebuah skema organisasi, seperti struktur dan array, yang diterapkan pada data sehingga data dapat diinterprestasikan dan sehingga operasi-operasi spesifik dapat dilaksanakan pada data tersebut.
Struktur data sangat erat hubungannya denganAlgoritma dan Program, yaitu;
Struktur data dan algoritma adalah  langkah-langkah dan tata susunan dalam suatu proses yang mempunyai tujuan yang sama yaitu program. Jadi dengan ini dapat disimpulkan bahwa hubungan antara struktur data ,dan algoritma dengan program adalah sangat erat.

B.     TUJUAN PENULIS

            Tulisan ini disusun dengan maksud untuk memberikan tambahan pengetahuan berupa wawasan kepada Mahasiswa di Universitas dengan harapan :
a)      Lebih memahami materi yang telah diberikan oleh Dosen untuk Mahasiswa dan beberapa pengembangannya, terutama masalah Struktur Data dan Array dan.
b)      Dapat digunakan sebagai salah satu referensi masalah-masalah pengajaran dan pengetahuan di Kampus serta penerapan pada kehidupan sehari-hari.
c)      Memperluas wawasan keilmuan dalam ilmu pemograman, Data Base sehingga Dosen dapat memilih strategi pembelajaran yang sesuai dengan kondisi di lapangan, sehingga mudah diterima oleh Mahasiswa.

C.    RUMUSAN MASALAH
Apa yang dimaksud dengan Struktur Data ?
Apa saja tujuan dari Struktur Data tersebut?
Hubugan apa saja yang yang terdapat Struktur Data dengan Algoritma?
Kegunaan Struktur Data itu sendiri !
Konsep-konsep antrean (queue)

BAB II
LANDASAN TEORI
A.    PENGERTIAN STRUKTUR DATA
Struktur adalah urutan yang digunakankan dalam suatu operasi. Sedangkan Data adalah Bahan yang dipergunakan dalam suatu operasi yang menghasilkan informasi yang berguna. Jadi Struktur data adalah urutan/tata pengaturan  bahan/data yang berada didalam suatu system operasi yang akan menghasilkan tujuan tertentu.
Struktur data dapat dikatakan juga  cara menyimpan atau merepresentasikan data di dalam komputer agar bisa dipakai secara efisien. Sedangkan data adalah representasi dari fakta dunia nyata. Fakta atau keterangan tentang kenyataan yang disimpan, direkam atau direpresentasikan dalam bentuk tulisan, suara, gambar, sinyal atau simbol. Secara garis besar type data dapat dikategorikan menjadi Type data sederhana.
o   Type data sederhana tunggal, misalnya :
Integer, real, boolean, dan karakter
o   Type data sederhana majemuk, misalnya :
String Struktur Data, meliputi
ü  Struktur data sederhana, misalnya;
- array dan Record.
ü  Struktur data majemuk, yang terdiri;
-Linier : Stack, Queue, serta List dan Multilist
-Non Linier : Pohon Biner dan Graph
Pemakaian struktur data yang tepat di dalam proses pemrograman akan menghasilkan algoritma yang lebih jelas dan tepat, sehingga menjadikan program secara keseluruhan lebih efisien dan sederhana.
Struktur data yang ″standar″ yang biasanya digunakan dibidang informatika adalah;
ü  ADT , Array , Struk
ü  List linier (Linked List) dan variasinya
ü  Multilist
ü  Stack (Tumpukan)
ü  Queue (Antrian)
ü  Tree ( Pohon )
ü  Graph
B.     HUBUNGAN STRUKTUR DATA DAN ALGORITMA
Program adalah kumpulan instruksi komputer, sedangkan metode dan tahapan sistematis
dalam program adalah algoritma. Program ini ditulis dengan menggunakan bahasa pemogragraman. Jadi bisa kita sebut bahwa program adalah suatu implementasi bahasa pemrograman. Beberapa pakar memberi formula bahwa: program = struktur data + algoritma. Bagaimanapun juga struktur data dan algoritma berhubungan sangat erat pada sebuah program. Algoritma yang baik tanpa pemilihan struktur data yang tepat akan membuat program menjadi kurang baik, semikian juga sebaliknya. Menilai Sebuah Algoritma Ketika manusia berusaha memecahkan masalah, metode atau teknik yang digunakan untuk memecahkan masalah kemungkinan bisa lebih dari satu. Dan kita memilih mana yang terbaik diantara teknik-teknik itu. Hal ini sama juga dengan algoritma, yang memungkinkan suatu permasalahan dipecahkan dengan metode dan logika yang berlainan. Lalu bagaimana mengukur mana algoritma yang terbaik ?
Beberapa persyaratan untuk menjadi algoritma yang baik adalah:
*      Tingkat kepercayaannya tinggi (realibility). Hasil yang diperoleh dari proses
harus berakurasi tinggi dan benar.
*      Pemrosesan yang efisien (low cost). Proses harus diselesaikan secepat
mungkin dan jumlah kalkulasi yang sependek mungkin.
*      Bersifat general. Bukan sesuatu yang hanya untuk menyelesaikan satu kasus
saja, tapi juga untuk kasus lain yang lebih general.
*      Bisa dikembangkan (expandable). Haruslah sesuatu yang dapat kita
kembangkan lebih jauh berdasarkan perubahan requirement yang ada.
*      Mudah dimengerti. Siapapun yang melihat, dia akan bisa memahami algoritma
anda. Sulit dimengertinya suatu program akan membuat sulit pengelolaan.
*      Portabilitas yang tinggi (portability). Bisa dengan mudah diimplementasikan
di berbagai platform komputer.
Contoh Algoritma dan Implementasinya Sebagai contoh sederhana, mari kita berlatih melihat permasalahan, mencoba menyusun algoritma, dan menerapkan dalam bahasa C. Permasalahan Ada seorang guru SD yang ingin membuat rangking nilai ujian 9 orang murid. Nilai ujian murid adalah sebagai berikut:
56 78 43 96 67 83 51 74 32

Bagaimana algoritma dalam pembuatan rangking nilai tersebut? Untuk memecahkan masalah di atas, kita bisa menyusun algoritma sebagai berikut:
*      Buat satu variable (misalnya rangking).
*      Set variable rangking = 1.
*       Ambil satu nilai sebagai data yang ke a, misalnya 56.
*      Cek nilai dari paling depan (56) sampai paling belakang (32) (b=0-8).Apabila nilaitersebut lebih tinggi daripada nilai ke a (56), maka set variable rangking = ranking + 1.
*      Ulangi proses nomor 2 dengan mengambil data ke (a) berikutnya. Kemudian
mari kita implementasikan algoritma di atas dalam program bahasa C.
Program: Rangking Nilai Ujian
#include
#define banyaknya_nilai 9
main()
{
static int nilai[]={56, 78, 43, 96, 67, 83, 51, 74, 32};
int rangking[banyaknya_nilai];
int a,b;
for (a=0;a<banyaknya_nilai;a++){
rangking[a]=1;
for (b=0;bnilai[b])
rangking[a]++;
}
}
printf(“Nilai Ujian \t Rangking\n”);
for (a=0;a<banyaknya_nilai;a++){
printf("%d \t\t %d\n",nilai[a], rangking[a]);
}
}
Hasil
Nilai Ujian Rangking
56 4
78 7
43 2
96 9
67 5
83 8
51 3
74 6
32                                                                                                                                    1


C.    PENGENALAN SEJARAH STRUKTUR DATA

v  Pengenalan Struktur Data
Struktur data adalah sebuah skema organisasi, seperti struktur dan array, yang diterapkan pada data sehingga data dapat diinterprestasikan dan sehingga operasi operasi spesifik dapat dilaksanakan pada data tersebut.


v  Pengenalan Algoritma
Algoritma adalah barisan langkah-langkah perhitungan dasar yang mengubah masukan (dari beberapa fungsi matematika) menjadi keluaran.
v  Array
Array adalah organisasi kumpulan data homogen yang ukuran atau jumlah elemen
maksimumnya telah diketahui dari awal. Array umumnya disimpan di memori computer
secara kontigu (berurutan). Deklarasi dari array adalah sebagai berikut:
int A[5]; artinya variabel A adalah kumpulan data sebanyak 5 bilangan bertipe
integer.
Operasi terhadap elemen di array dilakukan dengan pengaksesan langsung.
Nilai di masing-masing posisi elemen dapat diambil dan nilai dapat disimpan tanpa melewati
posisi-posisi lain.
Terdapat dua tipe operasi, yaitu:
1)      Operasi terhadap satu elemen/posisi dari array.
2)      Operasi terhadap array sebagai keseluruhan
Dua operasi paling dasar terhadap satu elemen/posisi adalah:
1)      Penyimpanan nilai elemen ke posisi tertentu di array.
2)      Pengambilan nilai elemen dari posisi tertentu di array

ü  Penyimpanan dan Pengambilan Nilai
Biasanya bahasa pemrograman menyediakan sintaks tertentu untuk penyimpanan dan pengambilan nilai elemen pada posisi tertentu di array.
Contoh:
A[10] = 78, berarti penyimpanan nilai 78 ke posisi ke-10 dari array A
C = A[10], berarti pengambilan nilai elemen posisi ke-10 dari array A
ü  Keunggulan dan Kelemahan Array
o   Keunggulan array adalah sebagai berikut:
(1)   Array sangat cocok untuk pengaksesan acak. Sembarang elemen di array dapat diacu secara langsung tanpa melalui elemen-elemen lain.
(2)   Jika berada di suatu lokasi elemen, maka sangat mudah menelusuri ke elemenelemen tetangga, baik elemen pendahulu atau elemen penerus.
(3)   Jika elemen-elemen array adalah nilai-nilai independen dan seluruhnya harus terjaga, maka penggunaan penyimpanannya sangat efisien
o   Kelemahan array adalah sebagai berikut:
Array mempunyai fleksibilitas rendah, karena array mempunyai batasan sebagai berikut:
(1)   Array harus bertipe homogen. Kita tidak dapat mempunyai array dimana satu elemen adalah karakter, elemen lain bilangan, dan elemen lain adalah tipe-tipe lain.
(2)   Kebanyakan bahasa pemrograman mengimplementasikan array statik yang sulit diubah ukurannya di waktu eksekusi. Bila penambahan dan pengurangan terjadi terus-menerus, maka representasi statis.
*      Tidak efisien dalam penggunaan memori.
*      Menyiakan banyak waktu komputasi.
*      Pada suatu aplikasi, representasi statis tidak dimungkinkan.

v   Pointer
Misalnya kita ingin membuat beberapa penunjuk ke blok penyimpan yang berisi
integer. Deklarasi pada C adalah:
int *IntegerPointer; Tanda asterik (*) yang berada sebelum nama variable Integer Pointer menandakan ‘pointer pada suatu int’. Jadi deklarasi diatas berarti ‘definisikan sebuah tipe yang terdiri dari pointer bertipe integer yang bernama IntegerPointer’. Apabila didepannya ditambahkan typedef sebagai berikut;
*      Typedef int *IntegerPointer;Berarti IntegerPointer merupakan suatu tipe pointer berbentuk integer. Apabila akan mendeklarasikan dua variable A dan B sebagai penunjuk ke bilangan integer :
IntegerPointer A, B; Berarti kompiler C akan berisi nilai dari variable A dan B yang ‘menunjuk ke integer’. Untuk membuat beberapa penunjuk ke beberapa penyimpan integer yang kosong dan untuk membuat A dan B menunjuk tempat tersebut, digunakan prosedur dinamis untuk alokasi penyimpan yang disebut malloc A = (IntegerPointer *) malloc (sizeof(int)); B = (int *) malloc (sizeof(int)); Misalnya kita akan menyimpan integer 5 pada blok penyimpan yang ditunjuk pointer pada variable A. Untuk menuimpan angka 5 pada blok penyimpan integer itu melalui pointer A, digunakan pernyataan :
*A = 5;
Linked list adalah salah satu struktur data yang paling fundamental. Linked list
terdiri dari sejumlah kelompok elemen (linked) dengan urutan tertentu. Linked list sangat
berguna untuk memelihara sekelompok data, semacam array, tetapi linked list lebih
menguntungkan dalam beberapa kasus. Linked list lebih efisien dalam proses
penyisipan (insertion) dan penghapusan (deletion). Linked list juga menggunakan
pengalokasian penyimpan secara dinamis, dimana penyimpan dialokasikan pada saat
waktu berjalan (runtime).
v  Struktur
Struktur adalah koleksi dari variabel yang dinyatakan dengan sebuah nama,
dengan sifat setiap variabel dapat memiliki tipe yang berlainan. Struktur biasa dipakai
untuk mengelompokkan beberapa informasi yang berkaitan menjadi sebuah satu kesatuan. Contoh sebuah struktur adalah informasi data tanggal, yang berisi: tanggal, bulan dan tahun. Mendeklarasikan Struktur Contoh pendefinisian tipe struktur adalah sebagai berikut: struct data_tanggal.
{
            int tanggal;55
int bulan;
int tahun;
};
yang mendefinisikan tipe struktur bernama data_tanggal, yang terdiri dari tiga buah elemen (field) berupa : tanggal, bulan dan tahun. Pendefnisian dan pendeklarasian struktur dapat juga ditulis sebagai berikut: struct data_tanggal
{
int tanggal;
int bulan;
int tahun;
tgl_lahir;
}
Bentuk umum dalam mendefinisikan dan mendeklarasikan struktur adalah sebagai berikut struct nama_tipe_struktur
{
tipe field1;
tipe field2;
tipe fieldn;
}
variabel_struktur1, … , variabel_strukturM;
Masing-masing tipe dari elemen struktur dapat berlainan. Adapun variabel_struktur1
sampai dengan variabel_strukturM menyatakan bahwa variabel struktur yang
dideklarasikan bisa lebih dari satu. Jika ada lebih dari satu variabel, antara variabel
struktur dipisahkan dengan tanda koma.
Mengakses Elemen Struktur Elemen dari struktur dapat diakses dengan menggunakan bentuk
variabel_struktur.nama_field
Antara variabel_struktur dan nama_field dipisahkan dengan operator titik (disebut operator anggota struktur). Contoh berikut merupakan instruksi untuk mengisikan data pada field tanggal tgl_lahir.tanggal = 30;

D.    KEGUNAAN STRUKTUR DATA
Struktur data digunakan untuk meningkatkan efisiensi penggunaan memori pada saat program komputer sedang bekerja. Penggunaan struktur data yang tepat pada pemrograman 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.

E.     TUJUAN STRUKTUR DATA
Tujuan  dari struktur data adalah sebagai information hiding atau ancapsulatioan diantara sebagai berikut:
*      Perubahan implementasi struktur data tidak merubah teks program yang menggunakan struktur data bila interface pada struktur data telah dirancang baik tidak brubah
*      Pemakaian dan pembuatan struktur data dapat dilakukan secra terpisah, yang hanya perlu kesepakatan yang interface pemakai struktur data tersebut
*      Struktur data merupakan sarana pemograman modular dan menjadi landasan terbentuknya tim pemograman.
Tujuan lainnya ialah:
Salah satu Tujuan Struktur data ialah Agar mahasiswa mampu memahami teori dasar sistem pengorganisasian data pada memori komputer dan manajamen file (berkas) pada media penyimpanan termasuk cara pengorganisasiannya. Mahasiswa  juga mampu membuat program dengan menggunakan salah satu bahasa pemograman generasi ke-3 (c/c++/pascal) untuk membuat berbagai struktur data (pointer, linked list, sorting, antrian, pohon binary, searching) yang baik,efesien dan cepat.

F.     KONSEP ANTRIAN (QUEUE)

Ø  Queue (Antrian)
  1. Dikenali data pertama (Head) dan data terakhirnya (Tail).
  2. Aturan penambahan dan penghapusan datanya didefinisikan sebagai berikut:
-Penambahan selalu dilakukan dari belakang.
- Penghapusan selalu dilakukan dari depan.
  1. Satu data dengan data lain dapat diakses melalui informasi.
  2. Pada queue prinsip yang digunakan adalah “Masuk Pertama Keluar Pertama” atau FIFO (First In First Out).
  3. Data-data di dalam antrian dapat bertipe integer, real, record.
Ø  Contoh aplikasi queue dalam kehidupan sehari-hari:

1)      Antrian di jalan tol
2)      Antrian saat mengantri di loket
3)      Antrian reservasi tiket kereta api, dll  Semua itu menggunakan aturan FIFO (First In, First Out).

Ø  Operasi-operasi pada Antrian (queue):
1)      Create() Untuk menciptakan dan menginisialisasi Queue Dengan cara membuat Head dan Tail =-1.
2)      IsEmpty() Untuk memeriksa apakah antrian masih kosong atau sudah terisi Dengan cara memeriksa nilai tail, jika tail = -1 maka empty Pergerakan pada Antrian terjadi dengan penambahan data Antrian kebelakang, yaitu menggunakan nilai tail.
3)      IsFull() Untuk mengecek apakah Antrian sudah penuh atau belum
Dengan cara mengecek nilai tail, jika tail >= MAX-1 (karena MAX-1 adalah batas data
array pada C) berarti sudah penuh.
4)      Enqueue() Untuk menambahkan data ke dalam antrian, penambahan data selalu ditambahkan di data paling belakang Penambahan data selalu menggerakan variabel tail dengan cara increment counter tail.
5)      Dequeue() Digunakan untuk menghapus data terdepan dari Antrian dengan cara mengurangi counter tail dan menggeser semua data antrian kedepan. Penggeseran dilakukan dengan menggunakan looping.
6)      Clear()  Untuk menghapus semua data Antrian dengan cara membuat tail dan head = -1 Penghapusan data-data antrian sebenarnya tidak menghapus arraynya, namun hanya mengeser indeks pengaksesannya ke nilai -1 sehingga data-data Antrian tidak lagi terbaca.
7)      Tampil()  Untuk menampilkan nilai-nilai data Antrian menggunakan looping dari head s/d tail

Ø  Contoh jika antrian penuh :
Queue  adalah sekumpulan elemen yang jika ada elemen baru yang ditambahkan, maka elemen tersebut akan berada di bagian belakang antrian Jika ada elemen yang harus dihapus atau keluar dari antrian, maka elemen yang keluar adalah elemen yang berada di sisi depan antrian. Atau konsep ini sering juga disebut dengan konsep FIFO (First In First Out).
evans-blog-praktikum-struktur-data-bahasa-java-queue copy
Pada queue hanya terdapat satu pintu masuk di salah satu ujung dan satu pintu keluar diujung lainnya,  maka ada pointer yang menunjuk pada first dan last.
BAB III
PENUTUP
A.    KESIMPULAN
Dari semua pemaparan di atas dapat disimpulkan bahwa:
ü  Struktur data merupakan salah satu bahan dasar pembuatan program. Pemakaian struktur data yang tepat di dalam proses pemrograman, akan menghasilkan algoritma yang jelas dan tepat sehingga menjadikan program secara keseluruhan lebih sederhana.
ü  Didalam sebuah antrian, terdapat sebuah operasi bernama add_priority. Dalam hal ini antrian tidak lagi menerapkan konsep antrian murni, namun menjadi antrian berprioritas. Dimana terdapat prioritas tertentu pada elemen, dan elemen yang baru ditambah tidak mesti berada di akhir. Mungkin didunia nyata elemen yang masuk melalui add priority adalah orang yang masuk lewat jalur exclusive jadi beliau mendapat fasilitas agar di dahulukan atau diprioritaskan.
ü  Array merupakan bagian dari struktur data yaitu termasuk kedalam struktur data sederhana yang dapat di definisikan sebagai pemesanan alokasi memory sementara pada komputer. Apabila kita membuat program dengan data yang sudah kita ketahui batasnya maka kita menggunakan Array (type data statis), namun apabila datanya belum kita ketahui batasnya maka gunakan pointer (type data dinamis).
ü  Salah satu Tujuan Struktur data ialah Agar mahasiswa mampu memahami teori dasar sistem pengorganisasian data pada memori komputer dan manajamen file (berkas) pada media penyimpanan termasuk cara pengorganisasiannya. Mahasiswa  juga mampu membuat program dengan menggunakan salah satu bahasa pemograman generasi ke-3 (c/c++/pascal) untuk membuat berbagai struktur data (pointer, linked list, sorting, antrian, pohon binary, searching) yang baik,efesien dan cepat.
ü  Operasi penting dalam queue atau antrian adalah :
-          Add yang berfungsi menambahkan sebuah elemen ke dalam antrian
-          Delete yang berfungsi menghapus atau mengeluarkan elemen dari antrian.
ü  Algoritma tidak akan  baik tanpa pemilihan struktur data yang tepat, dan akan membuat program menjadi kurang baik, demikian juga sebaliknya.


B.     SARAN
Dari pemaparan Bab-bab tadi, penulis menyarankan;
Ø  Mahasiswa  harus lebih meningkatkan pengetahuan tentang  pengertian Pengertian Struktur Data dan Sejarah Perkembangannya agar bisa menjadi Analis Algoritme Programming yang berguna bagi bangsa dan negara dan tentunya bisa membangun sistem informasi nantinya.
Ø  Semoga mahasiswa Lulusan sistem informasi UNIMAL mampu bersaing di dunia kerja Nasional maupun Internasional.
Ø  Semua yang telah di lampirkan dibab-bab sebelumnya, semoga menjadi ilmu tambahan bagi Pembaca dan pengetahuan tambahan bagi kita semua.















DAFTAR PUSTAKA

No comments:

Post a Comment