Anda di halaman 1dari 6

Latihan 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!

1.) Dalam membuat program, pemrograman adalah pokok dari proses pembuatan
program itu sendiri namun pemrograman bergantung dari pemahaman persoalan,
analisis sistem, perencanaan-perencanaan dalam mendesain program itu sendiri.
Selain pemrograman hal yang utama harus dilakukan adalah merencanakan
langkah-langkah yang harus diambil dalam menyelesaikan masalah. Karena
dengan mengetahui masalah dan langkah-langkah penyelesaikan berarti kita sudah
menyelesaikan program tersebut sebanyak 50% dari total pekerjaan, selanjutnya
adalah teknis pembuatan itu sendiri yang di kenal dengan
pemrograman/koding.Sebaliknya jika kita tidak bisa mengetahui masalah dan
belum bisa membuat perencanaan berarti kita sudah merencanakan kegalan itu
sendiri.

Dalam membuat sebuah program setidaknya ada beberapa hal yang perlu anda
lakukan:

1. MendefinisikanMasalah/Definingtheproblem
Masalah/Probem disini adalah kompenan apa saja yang diperlukan agar
program ini jalan dikenal dengan masukan/inputnya apa saja, mendefinisikan
apa yang nanti akan dilakukan oleh program dan bagaimana keluaran dari
program yang kita harapkan nantinya. Pada tahap ini juga dikenal requirement
analisis atau analisa kebutuhan.
2. Perencanaan/Planning/Desainsistem
Pada tahap ini adalah medefinisikan langkah-langkah apa saja yang dilakukan
oleh program dalam menyelesaikan permasalahan yang ada. Bentuk dari
perencanaan itu bisa berupa flowchart ataupun algoritma dari program,
sehingga kita akan tahu proses apa saja yang ada dalam program tersebut.
semakin detail flowchart atau algoritma yang dibuat semakin mudah juga pada
tahap implementasi/coding nantinya.

Flowchart adalah suatu diagram menggunakan simbol-simbol khusus yang


sudah menjadi standard internasional yang berisi langkah-langkah untuk
menyelesaikan suatu masalah. sedangkan algoritma kbukan merupakan simbol
tapi keterangan-keterangan yang sesuai dengan keinginan kita, tidak ada
standarnya. Oleh karena itu flowchart biasa juga disebut sebagai algoritma
dalam bentuk simbol-simbol khusus yang dihubungkan dengan anak panah.

Membuat flowchart terlebih dahulu akan lebih menghemat waktu daripada


langsung melakukan coding sambil mencoba-coba. Kegiatan mencoba-coba
akan menghabiskan waktu ketika implementasi/koding karena harus merubah
koding yang lumayan banyak. Karena itu, biasakan membuat flowchart
terlebih dahulu sebelum memecahkan suatu masalah.

3. Implementasi/Koding/Programming
Kini saatnya anda menulis program, tahap ini juga mencakup tahap perbaikan
error dan testing. Menulis program dengan terstruktur dan sesuai dengan
flowchart yang telah kita buat.
4. Dokumentasi/Documentation
Setelah tahap coding selesai, sangat disarankan bagi anda untuk membuat
semacam dokumentasi. Tambahkan komentar-komentar pada program anda
dan “bukukan” program yang akan anda buat. Hal ini akan bermanfaat jika
anda sudah membuat program yang begitu banyak, dan suatu ketika nanti
(mungkin bertahun-tahun kemudian) anda ingin mengambil sebagian dari code
program anda yang lama untuk disisipkan pada program anda yang baru.
Bayangkan jika anda tidak membuat dokumentasi, waktu anda akan sangat
terbuang dengan menelusuri program-program lama anda satu-persatu.
5. Testing
o UnitTesting
Menguji setiap unit dan modul yang terdapat dalam program tersebut
o IntegrationTesting
Menguji integrasi yang dilakukan kepada program seperti halnya
ketika program tersebut sudah diinstall di client kita yang
membutuhkan integrasi dengan sisitem yang lain seperti halnya
integrasi dengan database.
o ValidationTesting
menguji masukan yang diberikan kepada program. apapun
masukannya program harus bisa menyelesaikan dengan baik.
o SistemTesting
Pada tahap ini menguji permorfa dari program, apabila program
dijalankan dengan kondisi-kondisi tertentu bagaimana?
6. OperasionaldanMaintenance
Pada tahap ini sebenarnya bagaimana program yang telah kita buat dan testing
ini bekerja sebagaimana mestinya, update program, menyeselaikan bug yang
tidak ditemukan pada saat testing, serta pengembangan yang dapat dilakukan
dengan program tersebut.
2.) Jenis Struktur Data

1.StrukturDataSederhana
a.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,
atauvektor
b.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.StrukturDataMajemuk
1.LinierStack(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).

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.

2. 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. 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.

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.
Begitujugaartidariantriandalambahasankaliini, jika pengantri pertama datang maka di
a 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.
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

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.
6.) x,y : integer
hasil : real
operator : char
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)

7.) input : x, y dan operator


if operator = ‘+’ then
hasil ← x+y
else
operator = ‘-‘ then
hasil ← x-y
endif
//output : nilai hasiln
endfunction

Anda mungkin juga menyukai