SOAL :
1.Seorang
programmer yang baik harus mengetahui cara pembuatan program yang bagus.
Berikan penjelasan tentang program yang bagus itu seperti apa!
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.
3. Jelaskan beberapa
aplikasi perangkat lunak komputer yang menggunakan struktur data sebagai dasar
pengembangannya
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
5. Berikan penjelasan dan bandingkan beberapa pendekatan yang dapat
digunakan untuk merancang sebuah algoritma.
6. Sebuah program dapat memiliki lebih satu algoritma.
Rancang algoritma untuk program kalkulator yang dapat melakukan operasi
penjumlahan dan pengurangan.
7. Ukurlah kompleksitas
algoritma yang Anda rancang menggunakan notasi Big O!
JAWAB :
Nomor 1
Program yang bagus maupun baik
adalah program yang mudah penggunaannya dan bisa memudahkan penggunanya untuk
menyelesaikan masalah – masalah yang dihadapinya. Dalam membuat program yang
baik seperti ini, seorang programmer tidak hanya membutuhkan keahlian untuk
berkomunikasi dengan komputer saja, tetapi seorang programmer juga harus
bisa berkomunikasi dan mendefinisikan masalah yang sedang dihadapi oleh
kliennya, sehingga program tersebut bisa berfungsi dengan baik dan sesuai
dengan permintaan kliennya. Setelah tahap pendefinisian masalah selesai, yang
harus dilakukan oleh programmer selanjutnya adalah melakukan perencanaan
tentang program yang akan dibuat. Apabila masalah yang telah didefinisikan
tidak sesuai dengan bidang yang dikuasai oleh sang programmer, maka proses
perencanaan tidak akan berjalan lancar. Karena itu, usahakan untuk bekerja
sama dengan seseorang yang menguasai bidang dari permasalahan tersebut,
sehingga perencanaan program bisa lebih mudah dan terstruktur. Bentuk rencana
ini bisa dituangkan kedalam bentuk flowchart ataupun pseudo code. Setelah rencana
berhasil dibuat, implementasikan rencana ini dalam sebuah source code,
yang nantinya akan dijalankan.
Disini keahlian dalam melakukan coding cukup penting, supaya bisa menghemat
tenaga dan waktu. Setelah program berhasil dibuat, lakukan dokumentasi bila
perlu. Dokumentasi berfungsi untuk programmer di masa depan apabila code – code
dalam program tersebut ingin disisipkan ke dalam program yang baru, programmer
tersebut tidak perlu susah – susah mencari atau membuat lagi. Dalam tahap
akhir, lakukan testing terhadap program secara teliti,
dan apabila ditemukan bug atau error, segeralah untuk menyelesaikannya.
Nomor 2
- Struktur Data Sederhana
- 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 dieksekusi. Tipe elemen larik dapat berupa tipe sederhana, tipe terstruktur, atau tipe larik lain. Nama lain array adalah Larik, tabel, atau vektor - Record(Catatan)
ADT adalah definisi tipe dan sekumpulan primitif (operasi dasar) terhadap tipe tersebut. Tipe diterjemahkan menjadi tipe terdefinisi dalam bahasa pemrograman yang bersangkutan. - Struktur Data Majemuk
- Linier
- 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, topadalah 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).
- 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.
- 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.
- Non-Linier
- 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. - 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.
Nomor 3
Antrian pada kasir pada sebuah bank.
Ketika seorang pelanggan datang,
akan menuju ke belakang dari antrian.
Setiap pelanggan dilayani, antrian yang berada didepan
akan maju. Jika kita ada di antrian kedua, maka kita akan
menunggu antrian pertama melakukan prosesnya. Ketika selesai proses dari
antrian pertama dia akan pergi, dan giliran kita untuk maju untuk melakukan proses.
Begitu juga arti dari antrian dalam bahasan kali
ini, jika pengantri pertama datang maka dia juga yang akan keluar pertama kali atau FIFO(First
In First Out) dan FCFS (First Come First Serve).
Pembelian tiket kereta api, tiket pesa1at, tiket kapal laut,
pembayaran tiket tol, pembayaran listrik, pembayaran air, dan lain sebagainya.
Saat mengantri di loket untuk membeli tiket. Istilah yang cukup sering
dipakaiseseorang masuk dalam sebuah antrian adalah
DeQueue. Dalam suatu antrian, yang datang terlebih dahulu akan
dilayani lebih dahulu. Istilah yang sering dipakai bila seseorang keluar
dari antrian adalah deQueue.
Antrian Mobil di pintu Tol.
Ketika sebuah mobil datang, dari belakang akan menuju kedepandari antrian.
Setelah mobil mendapatkan karcis tol, antrian yang berada didepan akan
maju. Pada saat menempatkan data pada ujung (tail) dari queue disebut dengan
Enqueue. Pada saat memindahkan data dari kepala(head) sebuah queue
disebut dengan dequeue.
Nomor 4
Program Tiket_Di_Bioskop
Algoritma:
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
Nomor 5
Terdapat dua pendekatan secara umum yang bisa digunakan dalam merancang
algoritma, yakni pendekatan secara Top-Down, dan pendekatan secara Bottom-up
- Top-Down
pendekatan perancangan secara top-down dimulai dengan cara membagi
algoritma yang kompleks menjadi satu atau lebih dari satu modul. Modul yang
terbagi ini masih bisa diuraikan lagi menjadi beberapa sub-modal, dan proses
ini dilakukan berulang-ulang hingga kompleksitas modul yang diinginkan
terpenuhi. Metode perancangan top-down merupakan bentuk perbaikan secara
bertahap yang dimulai dengan modul paling atas kemudian secara bertahap
menambah modul lain yang dipanggil.
- Bottom-up
pendekatan perancangan bottom-up merupakan kebalikan dari pendekatan
top-down. Dimana dalam pendekatan ini dimulai dengan pembuatan modul paling
dasar, kemudian dilanjutkan ke perancangan modul tingkat yang lebih tinggi.
Modul yang memiliki tinggkat lebih tinggi diimplementasikan menggunakan operasi
yang dilakukan ikeh modul tingkat 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.
Nomor 6
x,y : integer
hasil : real
operator : char
begin
Input(x)
Input(operator)
Input(y)
begin
Input(x)
Input(operator)
Input(y)
if operator = ‘+’ {jika operator adalah +}
then
hasil ← x+y
else
if operator = ‘-‘ {jika operator adalah -}
then
hasil ← x-y
endif
endif
{menampilkan penginputan oleh user}
Output(x,operator,y)
{menampilkan hasil penghitungan}
Output(hasil)
then
hasil ← x+y
else
if operator = ‘-‘ {jika operator adalah -}
then
hasil ← x-y
endif
endif
{menampilkan penginputan oleh user}
Output(x,operator,y)
{menampilkan hasil penghitungan}
Output(hasil)
Nomor 7
input : x, y dan operator
if
operator = ‘+’ then
hasil ← x+y
else
operator = ‘-‘ then
hasil ← x-y
endif
//output
: nilai hasiln
endfunction
Referensi :