Latihan Soal Algoritma dan Struktur Data
Soal :
1. Seorang progammer yang baik harus
mengetahui cara membuat program yang bagus.Berikan penjelasan tentang program
yang bagus itu seperti apa?
2. Struktur data merupakan suatu cara
menyimpan dan mengatur sebuah data supaya dapat digunakan secara efektif dan
efesien.Sebutkan dan jelaskan jenis-jenis struktur data secara umum?
3. Jelaskan beberapa aplikasi perangkat
lunak komputer yang menggunakan struktur data sebagai 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 program 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
dari satu algoritma.Rancang algoritma untuk program kalkulator yang dapat
melakukan operasi penjumlahan,pengurangan,perkalian dan pembagian?
7. Ukurlah komplektsitas algoritma yang
anda rancang menggunakan notasi Big O?
Jawab:
1.
Program yang
bagus :
●
Program
berjalan secara benar
●
Program mudah
dibaca dan dimengerti
●
Program mudah
di debug
●
Program mudah
dilakukan modifikasi
●
Output yang
dihasilkan tepat
2.
Jenis-jenis Struktur data
1.
Struktur data sederhana , meliputi:
a. 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 dan banyaknya elemen larik harus diketahui dahulu sebelum program dieksekusi.
b. Record (catatan)
Catatan adalah kumpulan data yang terdiri dari beberapa field (isian) dengan berbagai macam tipe data.
a. 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 dan banyaknya elemen larik harus diketahui dahulu sebelum program dieksekusi.
b. Record (catatan)
Catatan adalah kumpulan data yang terdiri dari beberapa field (isian) dengan berbagai macam tipe data.
2.
Struktur data majemuk, meliputi:
a. Linear
Queue (Antrian)
Queue (Antrian) adalah list linear yang dikenali elemen pertama (head) dan elemen terakhirnya (tail). Aturan penyisipan selalu dilakukan setelah elemen terakhir, dan aturan penghapusan selalu dilakukan pada elemen pertama. Antar elemen satu dengan yang lain dapat diakses melalui informasi next.
Stack (Tumpukan)
Stack (Tumpukan) adalah list linear yang dikenali elemen puncaknya (top). Aturan penyisipan selalu dilakukan diatas top, dan aturan penghapusan selalu dilakukan pada top. Elemen yang di tambahkan paling terakhir itulah elemen yang akan dihapus. Elemen stack tersusun secara LIFO (Last In First out).
List dan Multi-List (Daftar)
List dan Multi-List (Daftar) adalah sekumpulan list linear dengan elemen yang bertype sama dan memiliki urutan tertentu. Setiap elemennya memiliki 2 bagian.
b. Non Linear
Binary tree (Pohon Biner)
Binary tree (Pohon Biner) adalah himpunan terbatas yang mungkin kosong atau terdiri dari sebuah simpul yang disebut akar dan dua buah himpunan lain yang disjoint yang disebut sub pohon kiri (left) dan sub pohon kanan (right). Karakteristik pohon biner adalah setiap simpul paling banyak hanya memiliki dua buah anak dan mungkin tidak punya anak.
Graph (Graf)
Graph (Graf) adalah struktur data yang paling umum. Struktur graph memungkinkan keterhubungan tak terbatas antara entitas-entitas data.
a. Linear
Queue (Antrian)
Queue (Antrian) adalah list linear yang dikenali elemen pertama (head) dan elemen terakhirnya (tail). Aturan penyisipan selalu dilakukan setelah elemen terakhir, dan aturan penghapusan selalu dilakukan pada elemen pertama. Antar elemen satu dengan yang lain dapat diakses melalui informasi next.
Stack (Tumpukan)
Stack (Tumpukan) adalah list linear yang dikenali elemen puncaknya (top). Aturan penyisipan selalu dilakukan diatas top, dan aturan penghapusan selalu dilakukan pada top. Elemen yang di tambahkan paling terakhir itulah elemen yang akan dihapus. Elemen stack tersusun secara LIFO (Last In First out).
List dan Multi-List (Daftar)
List dan Multi-List (Daftar) adalah sekumpulan list linear dengan elemen yang bertype sama dan memiliki urutan tertentu. Setiap elemennya memiliki 2 bagian.
b. Non Linear
Binary tree (Pohon Biner)
Binary tree (Pohon Biner) adalah himpunan terbatas yang mungkin kosong atau terdiri dari sebuah simpul yang disebut akar dan dua buah himpunan lain yang disjoint yang disebut sub pohon kiri (left) dan sub pohon kanan (right). Karakteristik pohon biner adalah setiap simpul paling banyak hanya memiliki dua buah anak dan mungkin tidak punya anak.
Graph (Graf)
Graph (Graf) adalah struktur data yang paling umum. Struktur graph memungkinkan keterhubungan tak terbatas antara entitas-entitas data.
3.
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
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.
Cara menyalakan
TV
- Tancapkan steker ke sumber daya
- Tekan tombol power di TV
- Tekan tombol power di remot
- Tekan tombol angka untuk memilih saluran di TV
- Tekan tombol volume untuk mengatur besaran suara
Cara mematikan TV
- Tekan tombol power di remot
- Tekan tombol power di TV
- Cabut steker dari sumber daya
5.
Pendekatan
untuk merancang sebuah algoritma :
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.
Algoritma untuk
program kalkulator
#include<iostream>
using namespace std;
int tambah (float a, float b){
return ( a + b );
}
int kurang (float a, float b ){
return ( a - b );
}
int main (){
int bil1, bil2;
char pilihan;
cout<<"
========================================"<<endl;
cout<<" | Program
Kalkulator Sederhana |"<<endl;
cout<<"
========================================"<<endl;
cout<<endl;
cout<<"
========================================"<<endl;
cout<<" | Masukan Pilihan |"<<endl;
cout<<" ========================================"<<endl;
cout<<" | |"<<endl;
cout<<" | (A)
Tambah (B) Kurang |"<<endl;
cout<<" | |"<<endl;
cout<<"
========================================"<<endl;
cout<<" Masukan Pilihan :
";cin>>pilihan;
cout<<endl;
if ( pilihan == 'A' || pilihan == 'a' ) {
cout<<"
========================================"<<endl;
cout<<" |
Masukan Bilangan |"<<endl;
cout<<"
========================================"<<endl;
cout<<" | |"<<endl;
cout<<" |
Masukan Bilangan pertama : ";cin>>bil1;
cout<<" |
Masukan Bilangan kedua : ";cin>>bil2;
cout<<" | |"<<endl;
cout<<"
========================================"<<endl;
cout<<" |
Hasilnya Adalah : "<<tambah(bil1,bil2)<<" |"<<endl;
cout<<" ========================================"<<endl;
}
else if ( pilihan == 'B' || pilihan == 'b' ) {
cout<<"
========================================"<<endl;
cout<<" |
Masukan Bilangan |"<<endl;
cout<<"
========================================"<<endl;
cout<<" | |"<<endl;
cout<<" |
Masukan Bilangan pertama : ";cin>>bil1;
cout<<" |
Masukan Bilangan kedua : ";cin>>bil2;
cout<<" | |"<<endl;
cout<<"
========================================"<<endl;
cout<<" |
Hasilnya Adalah : "<<kurang(bil1,bil2)<<" |"<<endl;
cout<<"
========================================"<<endl;
}
cout<<endl;
}
Algoritma Kalkulator
Sederahana
Algoritma :
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
Algoritma :
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
7. input
: a, b dan
operator
if
operator = ‘+’ then
hasil ← a+b
else
operator = ‘-‘
then
hasil ← a-b
endif
//output :
nilai hasil
Referensi
: :
Komentar
Posting Komentar