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.

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.

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
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
7.       input :  a, b dan operator
 if  operator = ‘+’  then
     hasil ← a+b
else
    operator = ‘-‘ then
    hasil ← a-b
    endif
    //output : nilai hasil



Komentar

Postingan populer dari blog ini

Pengertian Linked List

Program Queue (Antrian)