Selasa, 06 Maret 2018

STRUKTUR DATA

LATIHAN SOAL STRUKTUR DATA


1.    Seorang programmer yang baik harus mengetahui cara pembuatan program yang bagus. Berikan penjelasan tentang program yang bagus itu seperti apa!
JAWAB
a.         Definisikan Masalah
Definisikan masalah merupakan awal yang penting dalam membuat program. Dengan masalah yang terlalu global, kita tidak dapat membuat algoritma yang baik. Dengan mengidentifikasikan masalah, kita dapat mengetahui masalah secara lebih kompleks dan dapat merancang algoritma yang lebih baik dan runtut sesuai aplikasi yang diinginkan.
b.         Buat Algoritma Dan Struktur Penyelesaian
Jika masalahnya kompleks, maka dibagi ke dalam bagian-bagian. Dimulai dari masalah global yang diperinci menjadi masalah yang lebih kecil dan rinci. Cara ini efektif untuk pembuatan algoritma yang kompleks. Perincian masalah ini terus dilakukan hingga algoritma pas diproses oleh komputer.
c.         Menulis Program
Menulis program juga harus menggunakan format penulisan yang baik. Jadi kita harus memperhatikan cara penulisan kita dalam membuat suatu program agar bisa dipahami orang lain. Contohnya rata baris sesuai fungsi, deklarasi variabel sesuai fungsi yang dimaksud. Kesingkatan penulisan program tanpa mengurangi fungsi aplikasi juga merupakan salah satu agar program dapat dikatakan baik.
d.        Mencari Kesalahan
Mencari kesalahan program dengan teliti. Seperti kesalahan penulisan atau malah syntax yang salah dan tidak sesuai dengan fungsi aplikasi yang diinginkan. Proses ini sangat diperlukan agar program yang dibuat memiliki kesalahan minimum.
e.         Uji dan Verifikasi Program
Pertama kali harus diuji apakah program dapat dijalankan. Apabila program tidak dapat dijalankan maka perlu diperbaiki penulisan ssyntax.Dan bila program dapat dijalankan, maka harus diuji dengan menggunakan data-data yang biasa yaitu data yang diharapkan oleh sistem. Pastikan hasil uji coba sesuai dengan apa yang diharapkan.
f.          Pemeliharaan Program
Ketika program sudah selesai dan dapat dijalankan sesuai keinginan, kita perlu merawat dan melakukan maintenance agar program tetap berljalan sesuai keinginan. Atau kita dapat melakukan update agar aplikasi dapat berjalan dengan fungsi yang lebih.

2.    Struktur data merupakan suatu cara untuk menyimpan dan mengatur sebuah data supaya dapat digunakan secara efektif dan efisien. Sebutkan dan jelaskan jenis-jenis struktur data secara umum.
JAWAB
a.         Struktur Data Sederhana (Primitif)
                             i.          Integer = Tipe data ini untuk bilangan bulat yang membutuhkan memori sebesar 4 byte.
                           ii.          Short = Tipe data ini untuk bilangan bulat yang membutuhkan memori sebesar 2 byte. .
                         iii.          Long = Tipe data ini untuk bilangan bulat yang membutuhkan memori sebesar 4 byte.
                         iv.          Long Long = Tipe data ini untuk bilangan bulat yang membutuhkan memori sebesar 8 byte.
                           v.          Float = Tipe data ini untuk bilangan real yang membutuhkan memori sebesar 4 byte.
                         vi.          Double = Tipe data ini untuk bilangan real yang membutuhkan memori sebesar 8 byte.
                       vii.          Boolean = Tipe data ini untuk Nilai logika yang bernilai true (benar) dan false (salah). Tipe data ini membutuhkan memori sebesar 1 byte.
                     viii.          Character = Tipe data ini untuk sebuah karakter. Tipe data ini membutuhkan memori sebesar 1 byte. Tipe ini bisa digunakan untuk pembuatan password.

b.         Struktur Data Majemuk (Non-Primitif)
                             i.    Linear
1)        Array (Larik)
Larik adalah struktur data statik yang menyimpan sekumpulan elemen yang  bertipe sama, misalnya tipe sederhana, tipe terstruktur dan lain-lain. Setiap  elemen  dapat diakses langsung melalui indeksnya. Indeks larik harus berupa  tipe data yang berurutan (misalnya integer atau karakter) dan banyaknya elemen larik harus diketahui dahulu sebelum program dieksekusi.
2)        Stack
Pengertian Stack atau Tumpukan adalah suatu stuktur data yang penting dalam pemrograman yang mempunyai sifat LIFO (Last In First Out), Benda yang terakhir masuk ke dalam stack akan menjadi benda pertama yang dikeluarkan dari stack. 
Stack (Tumpukan) adalah list linear yang dikenali elemen puncaknya (TOP) dan Aturan penyisipan dan penghapusan elemennya tertentu. Penyisipan selalu dilakukan “di atas“ TOP dan Penghapusan selalu dilakukan pada TOP.
3)        Queue
Queue pada Struktur Data atau antrian adalah sekumpulan data yang mana penambahan elemen hanya bisa dilakukan pada suatu ujung disebut dengan sisibelakang(rear), dan penghapusan(pengambilan elemen) dilakukan lewat ujung lain (disebut dengan sisi depan atau front). 
Queue atau antrian prinsip yang digunakan adalah “Masuk Pertama Keluar Pertama” atau FIFO (First In First Out). 
Queue atau antrian banyak kita jumpai dalam kehidupan sehari-hari, ex: antrian Mobil diloket Tol, Antrian mahasiswa Mendaftar, dll. Contoh lain dalam bidang komputer adalah pemakaian sistem komputer berbagi waktu (time-sharing computer system) dimana ada sejumlah pemakai yang akan menggunakan sistem tersebut secara serempak.
Pada Queue atau antrian Terdapat satu buah pintu masuk di suatu ujung dan satu buah pintu keluar di ujung satunya dimana membutuhkan variabel Head dan Tail ( depan/front, belakang/rear). 
4)        List dan Multi-List (Daftar)
List linear adalah sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu, yang setiap elemennya terdiri dari 2 bagian.

                           ii.          Non-Linear
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
Graph merupakan struktur data yang paling umum. Jika struktur linear 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.

3.  Jelaskan beberapa aplikasi perangkat lunak komputer yang menggunakan struktur data sebagai dasar pengembangannya.
JAWAB
a.         DBMS (Database Management System), model aplikasi jaringan antardata dilakukan menggunakan graph.
b.         Hierarki model menggunakan tree.
c.         RDMS (Relational Database Management System) menggunakan array.

4.     Abstract Data Type (ADT) merupakan cara untuk melihat struktur data, dengan fokus pada apa yang dilakukan dan mengabaikan proses yang terdapat didalamnya saat menjalankan eksekusi. Buatlah algoritma yang menganalogikan abstraksi perangkat elektronik.
JAWAB
type tiketBioskop: < nama_film : string,
kode_film : string,
jadwal_film : string,
harga_tiket : string,
quota : integer >
T : array [1..4] of tiketBioskop
type datapembeli: < nama_pembeli : string,
kode_pembelian : string >
D : array [1..9999] datapembeli
jumlah_pembeli : integer
pilihan : integer;
procedure lihatBioskop()
procedure beliTiket()
function  buatKodePembelian( T : tiketBioskop) -> string

5.  Berikan penjelasan dan bandingkan beberapa pendekatan yang dapat digunakan untuk merancang sebuah algoritma.
JAWAB
Terdapat dua pendekatan umumyang bisa digunakan dalam merancang algoritma, yaitu :
a.         Pendekatan perancangan secara top-down
Di mulai dengan cara membagi algoritma yang kompleks menjadi satu atau lebih dari satu modul. Modul yang terbagi ini masih bisa diuraikan lagi menjadi beberapa sub-modul, dan proses ini dilakukan berulang-ulang higga kompleksitas modul yang diinginkan terpenuhi. Metode perancangan top-down merupakan bentuk perbaikan secara bertahap menambah modul lain yang dipanggil. Oleh karena itu, pendekatan top-down di mulai dari desain abstrak, dan desain ini disempurnakan menjadi tingkat lebih konkret pada setiap langkah hingga tercapai suatu level yang tidakmemerlukan perbaikan lebih lanjut.
b.         Pendekatan perancangan secara bottom-up
Di mulai dengan pembuatan modul paling dasar, kemudian dilanjutkan keperancangan modul tingkat yang lebih tinggi. Modul yang memiliki tingkat lebih tinggi diimplementasikan menggunakan operasi yang dilakukan oleh modul tingkat yang lebih rendah. Dengan demikian, sub-modul pada pendekatan ini dikelompokkan secara bersama untuk membentuk tingkat modul yang lebih tinggi. Semua modul tingkat yang lebih tinggi dikumpulkan bersama-sama untuk membentuk modul tingkat yang lebih tinggi. Proses ini diulang hingga desain algoritma yang lengkap terpenuhi.

6.      Sebuah program dapat memiliki lebih dari satu algoritma. Rancang algoritma untuk program kalkulator yang dapat melakukan operasi penjumlahan dan pengurangan.
JAWAB
a.         Pseudocode
Start
Inisialisaikan bil1, bil2, oprs, hasil
Input nilai a, b
Pilih salah satu operasi dari (+),(-)
Jika anda memilih operasi (+), maka hasil = a + b
Jika anda memilih operasi (-), maka hasil = a – b
Cetak hasil
End
b.         Flowchart




7.        Ukurlah kompleksitas algoritma yang Anda rancang menggunakan notasi Big O!
JAWAB
Pernyataan “f(x) adalah O(g(x))”, biasa ditulis f(x) = O(g(x)). Pernyataan ini adalah penyalahgunaan notasi. Persamaan dari dua buah fungsi tidak dinyatakan. Properti O(g(x)) tidaklah simetrik. Karena alasan ini, beberapa penulis lebih memilih menggunakan notasi himpunan dan menulis. Menganggap O(g) sebagai himpunan dari fungsi-fungsi yang didominasi oleh g. Dalam penggunaan yang lebih rumit, O( ) dapat muncul pada tempat yang berbeda di dalam sebuah persamaan, bahkan beberapa kali untuk masing-masing sisi.
Misalnya, pernyataan berikut benar untuk (n + 1)2 = n2 + O(n) nO(1) = O(en)
Maksud dari pernyataan diatas adalah :
Untuk setiap fungsi yang memenuhi untuk setiap O( ) pada sisi kiri, terdapat fungsi-fungsi yang memenuhi masing-masing O( ) pada sisi kanan, melakukan substitusi untuk semua fungsi-fungsi ini ke dalam persamaan menyebabkan kedua sisi menjadi sama. Misalnya, persamaan ke-3 diatas berarti: “Untuk setiap fungsi f(n) = O(1), terdapat fungsi-fungsi g(n) = O(en) sehingga nf(n) = g(n)”




REFERENSI :
Wantoro, Jan dan Sukirman. 2017. ALGORITMA & STRUKTUR DATA DALAM BAHASA C/C++. Surakarta: Muhammadiyah University Press.
Andilau. 2014. Pengertian dan penjelasan Struktur Data, Stack, Queue, Sorting (Bubble Sort & Selection Sort). From http://bekokmarley.blogspot.co.id/2014/01/pengertian-dan-penjelasan-struktur-data.html. 8  Januari 2014.
Ridahani. S, Lutfiana. 2017. PENGERTIAN DAN JENIS-JENIS STRUKTUR DATA. From  http://lutfianaridahani.blogspot.co.id/2017/02/normal-0-false-false-false-en-us-x-none.html. Februari 2017.
Maulana. F, Ghifary. 2017. Bagaimana cara membuat program yang baik?. From https://www.dictio.id/t/bagaimana-cara-membuat-program-yang-baik/12809. 1 Oktober 2017.
Tyo, Mboreinz. 2013. Algoritma dan Flowchart Kalkulator Sederhana. From http://mbor3inz.blogspot.co.id/2013/10/algoritma-dan-flowchart-kalkulator.html. 19 Oktober 2013.
Nur Cholis, Azis. 2014. Penggunaan “Notasi Big-O” Untuk Menganalisa Efisiensi Algoritma. From https://azisnurc.wordpress.com/2014/12/28/penggunaan-notasi-big-o-untuk-menganalisa-efisiensi-algoritma/. 28 Desember 2014.
Risky Saputra, Fiqih. 2014. Program Tiket Bioskop Linked List Dengan Pascal. From http://liu-fiq.blogspot.co.id/2015/09/program-tiket-bioskop-linked-list.html. 17 September 2015.

Template by:

Free Blog Templates