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.
Sahabat. 2009. Natha Struktur Data. From https://www.nusinau.com/natha-struktur-data. 4 Juni 2009.
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.
Fitriani, Eva. 2015. Algoritma Cara Menyalakan Televisi. From
http://evatyuitriani.blogspot.co.id/2015/03/algoritma-cara-menyalakan-televisi.html. 12 Maret
2015.
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.