Latihan Soal dan Jawaban UAS Struktur Data Teknik Informatika

1. Bagaimana Kriteria Algoritma itu ?
2. Sebutkan jenis-jenis algoritma ?
3. Struktur data adalah ?
4. Sebutkan Operasi terhadap data ?
5. Mengapa perlu struktur data ?
6. Apa manfaat struktur data ?
7. Tipe data adalah ?
8. Apa yang kalian ketahui tentang obyek data ?
9. Apa saja aktivitas struktur data ?
10. Sebutkan Hubungan antara struktur data dengan algoritma ?

Jawab :

1. Satu
a. input  b. output  c. definiteness  d. finiteness  e. effectiveness
2. Dua
a. Sequence process : Instruksi dikerjakan secara sekuensial,berurutan
b. Selection process : Instruksi dikerjakan jika memenuhi kriteria tertentu
c. Iteration process : Instruksi dikerjakan selama memenuhi suatu kondisi tertentu
d. Concurrent process : Beberapa instruksi dikerjakan secara bersama
3. Tiga
Struktur data adalah : Cara penyimpanan dan pengorganisasian data-data pada memori komputer maupun file secara efektif sehingga dapat digunakan secara efisien, termasuk operaasi-operasi di dalamnya.
4. Empat
a. Traversal : Mengunjungi setiap elemen struktur data
b. Pencarian : Menemukan elemen atau lokasi pada sturktur data
c. Penyisipan : Menambah elemen baru pada struktur data
d. Penghapusan : Menghapus elemen dari struktur data
5. Lima
a. Agar mengenal bentuk organisasi penyimpanan data dan pengoperasiannya
b. Menentukan kualitas informasi
c. Mengurangi duplikasi data (data redudancy)
d. Hubungan data dapat ditingkatkan (data relatability)
e. Mengurangi pemborosan tempat simpanan luar
6. Enam
a. Algoritma yang lebih jelas dan tepat, sehingga efisien dan sederhana
b. Program lebih ringkas, lebih bersih, lebih elegan, berkinerja tinggi
c. Program berjalan membutuhkan waktu beberapa detik
7. Tujuh
Tipe data adalah : Jenis data yang mampu ditangani oleh suatu bahasa pemrograman pada komputer
8. Delapan
Obyek data : Kumpulan elemen yang mungkin untuk suatu type data tertentu
9. Sembilan
1. Mendeskripsikan kumpulan obyek data yang sah sesuai dengan tipe data yang ada
2. Menunjukkan mekanisme kerja operasi-operasi nya
10. Sepuluh
- Dengan pemilihan struktur data yang baik, maka problem yang kompleks dapat diselesaikan sehingga algoritma dapat digunakan secara efisien, operasi-operasi penting dapat dieksekusi dengan sumber daya yang lebih kecil, memori lebih kecil, dan waktu eksekusi yang lebih cepat.
- Tidak semua struktur data baik dan sesuai. Contoh : untuk problem data bank : Pengupdatean harus cepat, sedangkan penambahan / penghapusan data boleh lebih lambat.

Program Prolog tentang Silsilah Keluarga

Berikut ini adalah contoh program prolog tentang silsilah keluarga.

anak(X,Y):-bapak(X,Y).
anak(X,Y):-ibu(X,Y).

cucu(X,Z):-bapak(X,Y),anak(Y,Z).
kakek(Z,X):-anak(Y,Z),bapak(X,Y).
nenek(Z,X):-anak(Y,Z),ibu(X,Y).


bapak(hadi,samsudin).
bapak(hadi,hambali).
bapak(hadi,syafii).
bapak(samsudin,mansyur).
bapak(samsudin,arfan).
bapak(samsudin,mahmudin).
ibu(diyah,samsudin).
ibu(suwarni,mansyur).
ibu(suwarni,arfan).
ibu(suwarni,mahmudin).

dengan output sebagai berikut : 

Welcome to SWI-Prolog (Multi-threaded, 32 bits, Version 6.4.0)
Copyright (c) 1990-2013 University of Amsterdam, VU Amsterdam
SWI-Prolog comes with ABSOLUTELY NO WARRANTY. This is free software,
and you are welcome to redistribute it under certain conditions.
Please visit http://www.swi-prolog.org for details.

For help, use ?- help(Topic). or ?- apropos(Word).

1 ?- 
% c:/Users/Mansyur/Documents/Prolog/tugas.pl compiled 0.00 sec, 16 clauses
1 ?- bapak(X,mansyur).
X = samsudin.

2 ?- bapak(X,samsudin).
X = hadi.

3 ?- ibu(Y,mansyur).
Y = suwarni.

4 ?- anak(samsudin,L).
L = mansyur ;
L = arfan ;
L = mahmudin .

5 ?- ibu(Y,samsudin).
Y = diyah.

6 ?- anak(hadi,O).
O = samsudin ;
O = hambali ;
O = syafii .

7 ?- kakek(X,mansyur).
false.

8 ?- kakek(mansyur,X).
X = hadi .

9 ?- nenek(mansyur,X).
X = diyah .

10 ?- cucu(X,hadi).
false.

11 ?- cucu(hadi,C).
C = mansyur ;
C = arfan ;
C = mahmudin .


Semoga informasi ini membantu anda.


Program Nasm Hello World !!!

Dibawah ini adalah contoh program Nasm dengan menggunakan compiler geany. Program di bawah ini jika di jalankan di cmd akan menghasilkan output Hello World! .

Silahkan coba :

%include "asm_io.inc"

segment .data

testing db "Hello World!", 0
segment .bss
segment .text
global _asm_main
_asm_main:
enter 0,0
pusha
mov eax, testing
call print_string
popa
mov  eax, 0
leave
ret


Baca juga :

1. Program Array dengan bahasa C++

Mendeklarasikan Suatu Kelas Dengan Suatu Parameter

Metode memerlukan satu atau lebih parameter yang merepresentasikan informasi tambahan yang diperlukannya untuk melaksanakan tugas. Parameter-parameter tersebut didefinisikan di dalam suatu daftar parameter atau list parameter yang dipisahkan dengan koma, yang ditempatkan di dalam kurung (stelah nama metode). Setiap parameter harus menspesifikasi tipe dan nama variabel. Daftar parameter bisa memuat sejumlah argumen ataupun tidak memuat argumen apapun. Kurung kosong yang mengikuti nama metode mengindikasikan  bahwa suatu metode tidak memerlukan parameter apapun. 

Argumen Kepada Suatu Metode

Suatu pemanggil metode menyuplai nilai-nilai, yang dikenal dengan argumen, untuk setiap parameter metode. Sebagai contoh, metode System.out.println memerlukan suatu argumen yang menspesifikasi data untuk ditampilkan di dalam command window.

Deklarasi Kelas Dengan Metode yang Memiliki Satu Parameter

Sekarang kelas BukuNilai dideklarasikan dengan suatu metode tampilPesan yang menampilkan nama mata-kuliah sebagai bagian dari pesan. Metode baru ini memerlukan suatu parameter yang merepresentasikan nama mata-kuliah untuk ditampilkan.

Sebelum mendiskusikan fitur-fitur baru kelas BukuNilai, perlu diperhatikan bagaimana kelas baru tersebut digunakan dari metode main pada kelas UjiBukuNilai. Baris 12 menciptakan suatu Scanner yang dinamai masukan untuk membaca nama mata-kuliah dari pengguna. Baris 15 menciptakan objek BukuNilai, BukuNilaiKu. Baris 18 meminta pengguna untuk memasukkan suatu nama mata-kuliah. Baris 19 nama mata-kuliah dari pengguna dan menugaskannya kepada variabel namaMtKuliah, menggunakan metode Scanner, nextLine, untuk membaca masukan. Pengguna mengetikan nama mata-kuliah dan kemudian menekan ENTER untuk menyerahkannya kepada program. Penekanan ENTER akan meyisipkan suatu karakter garis-baru pada akhir dari karakter-karakter yang diketikkan oleh pengguna. Metode nextLine  membaca karakter-karakter yang diketikkan pengguna sampai ditemukannya karakter garis-baru, kemudian mengembalikan suatu String yang memuat karakter-karakter tersebut, tidak termasuk karakter garis-baru. 

Berikut adalah Kode Program Kelas BukuNilai : 

//Deklarasi kelas dengan satu metode yang memiliki satu parameter
package ujibukunilai;

public class BukuNilai 
{
    //menampilkan suatu pesan kepada pengguna BukuNilai
    public void tampilPesan(String namaMtKuliah)
    {

    System.out.printf("Selamat Datang untuk\n%s!\n",namaMtKuliah);

    } //akhir dari metode tampilPesan
    
} //akhir dari kelas BukuNilai 


Dan ini adalah kode program pada kelas UjiBukuNilai :

//Menciptakan suatu objek BukuNilai dan melewatkan suatu string kepada metode tampilPesan
package ujibukunilai;

import java.util.Scanner; 
//program menggunakan scanner

public class UjiBukuNilai 
{
    //metode main memulai eksekusi program
    public static void main (String[] args) 
    {
        //menciptakan suatu Scanner untuk mendapatkan masukan dari             command window
        Scanner masukan = new Scanner (System.in);
        
        //menciptakan suatu objek BukuNilai dan menugaskannya pada             BukuNilaiKu
        BukuNilai BukuNilaiKu = new BukuNilai();
        
        //meminta pengguna memasukkan nama mata-kuliah
        System.out.println("Silahkan masukkan nama mata-kuliah: ");
        String namaMtKuliah = masukan. nextLine (); 
        //membaca sebaris teks
        System.out.println(); 
        //mengeluarkan suatu baris kosong
        
        //memanggil metode tampilPesan milik dari objek BukuNilaiKu
        dan melewatkan namaMtKuliah sebagai suatu argumen
        BukuNilaiKu.tampilPesan(namaMtKuliah);
    } //akhir dari metode main 
} //akhir dari kelas UjiBukuNilai



Berikut adalah Output dari Program di Atas :



Pada Gambar di atas terlihat output dari program yang kita buat.
Prosesnya sebagai berikut :
Pada saat program selesai kita save program kemudian kita run (jalankan program). Pada output akan muncul teks "Silahkan masukkan nama mata-kuliah: ". Dibawahnya kita ketikkan mata kuliah yang kita inginkan, misalnya di atas saya masukkan " Pemrograman Berbasis Objek ". Lalu setelah itu kita tekan ENTER, maka akan muncul kalimat dibawahnya,
" Selamat Datang untuk
  Pemrograman Berbasis Objek! "

Program pun selesai dan berjalan dengan baik.


Hal-hal pokok dalam pengenalan bahasa pemrograman Java

Hal – Hal Penting dalam Pengenalan Bahasa Pemrograman Java
  • Suatu komentar  yang dimulai dengan // disebut dengan komentar end-of-line
  • Komentar tradisional atau komentar beberapa baris dibatasi dengan /* dan */.
  • Komentar Javadoc, yang dibatasi dengan /** dan */, memampukan anda untuk menanamkan dokumentasi program di dalam kode. Program utilitas javadoc membangkitkan halaman-halaman HTML untuk komentar ini.
  • Baris kosong, karakter spasi, dan karakter tab disebut dengn spasi putih. Spasi putih dapat membuat program lebih mudah dibaca dan diabaikan oleh kompiler.
  • Kata kunci merupakan kata yang dikhususkan untuk Java dan selalu dikonstruksi dari huruf kecil.
  • Kata kunci class digunakan untuk mendeklarasikan suatu kelas.
  • Secara konvensional, nama kelas di dalam Java diawali dengan huruf kapital , dan bila terdiri atas beberapa kata, maka huruf awal dari setiap kata haruslah huruf kapital. Misalnya, ContohNamaKelas.
  •    Nama kelas Java disebut dengan identifier, yang merupakan deretan karakter, digit, garis-bawah (_), dan tanda dollar ($). Identifier tidak bisa diawali dengan digit dan tidak memuat spasi.
  • Java merupakan case-sensitive, yang artinya huruf kapital dan huruf kecil diinterpretasikan secara berbeda oleh kompiler.
  • Tubuh dari deklarasi setiap kelas dibatasi atau diapit oleh { dan }.
  • Deklarasi kelas public harus disimpan dengan nama sama dengan nama file, yan diikuti dengan ekstensi .Java.
  • Metode main merupakan titik awal dari semua aplikasi Java dan harus diawali dengan public static void main ( String [] args)
  • Kata kunci void mengindikasikan bahwa suatu metode akan melakukan suatu pekerjaan tanpa perlu mengembalikan informasi atau memiliki suatu nilai balik.
  • String yang diapit dengan kutip ganda sering disebut dengan string karakter atau literal string.
  • Metode System.out.println menampilkan argumennya di dalam command window yang diikuti oleh karakter garis-baru untuk memosisikan kursor keluaran di awal baris berikutnya.
  • Metode System.out.print menampilkan argumennya di dalam command window dan memosisikan kursor keluaran setelah karakter tertampilkan terakhir.
  • Metode System.out.printf menampilkan data terformat.
  • Deklarasi import membantu kompiler untuk mencari lokas suatu kelas yang digunakan di dalam suatu program.
  • Variabel merupakan suatu lokasi di dalam memori komputer dimana suatu nilai disimpan untuk digunakan selanjutnya. Semua variabel harus dideklarasikan dengan nama dan tipe sebelum digunakan.
  • Suatu Scanner (dalam paket java.util) memampukan suatu program untuk membaca data yang akan digunakan program. Sebelum Scanner digunakan, program harus menciptakannya dan menentukan sumber data.
  • Variabel harus diinisialisasi sebelum digunakan di dalam program.
  • Ekspresi new Scanner(System.in) menciptakan suatu Scanner yang membaca data dari objek masukan standar (System.in), biasanya dari papan ketik.
  • Tipe data int digunakan untuk menampung nilai integer. Rentang nilai suatu int adalah dari -2,147,483,648 ke +2, 147,483,647.
  • Tipe data float dan double dimanfaatkan untuk menampung nilai riil.
  • Tipe data char digunakan untuk menampung karakter.
  • Tipe-tipe data seperti int, float, double, dan char dikenal sebagai tipe data primitif.
  •  Operator – operator aritmatik adalah + (penjumlahan), - (pengurangan), * (perkalian), / (pembagian), dan % (operasi sisa).
  • Pembagian integer akan menghasilkan quotient (hasil-bagi) integer.
  • Operator modulus atau sisa (%) akan menghasilkan sisa dari pembagian integer.
  • Statemen if membuat keputusan berdasarkan nilai kondisi.
  • Kondisi di dalam statement if dapat di konstruksi menggunakan operator ekualitas (== dan !=) dan operator relasional (<, >, <=, dan >=).
  • Statement if diawali dengan kata kunci if, yang diikuti dengan suatu kondisi yang diapit oleh sepasang kurung dan satu atau lebih statement di dalam tubuh if.
  • Statement kosong merupakan statement yang tidak melakukan pekerjaan apa pun.


Mencari Bilangan Terbesar, Terkecil, Rata-rata, dan Standar Deviasi


Didalam perhitungan matematika ada kalanya kita bertemu dengan barisan nilai, angka , atau yang sering kita sebut deret. Di dalam deret tersebut kita sering kebingungan kalau di suruh mencari bilangan terkecil, bilangan terbesar, rata-rata, dan standard deviasi. Untuk itu kami memberikan kemudahan dalam menyelesaikan problem di atas, dengan bantuan bahasa pemrograman java kami membuatkan program java untuk mencari bilangan terkecil, bilangan terbesar, rata-rata, dan standard deviasi, sebagai berikut :

package asdos;
import java.io.*;
import java.math.*;

public class AsDos {
    public static void main(String[] args) {
        // TODO code application logic here 
        InputStreamReader isr = new InputStreamReader(System.in);
        BufferedReader br = new BufferedReader(isr);
        try {
            System.out.print("Masukkan 5 bilangan : ");
            String bil = br.readLine();
            String[] a = bil.split((" "));
            int pjg = a.length;
            double rata2 =0, deviasi=0 ;
            
            int max = -999999999, min = 999999999, total = 0 ;
            for (int i=0; i<pjg; i++) {
                total += Integer.parseInt(a[i]);
                if (Integer.parseInt(a[i]) > max)
                    max = Integer.parseInt(a[i]);
                if (Integer.parseInt(a[i]) < min)
                    min = Integer.parseInt(a[i]);
            }
            rata2 = (double) total/pjg;
            
            for (int i=0; i<pjg; i++) {
                deviasi += Math.pow((rata2 - Double.parseDouble(a[i])),2);
            }
            double akar = Math.sqrt(deviasi/((double)pjg -1));
            
            System.out.println("Bilangan terkecil = "+min);
            System.out.println("Bilangan terbesar = "+max);
            System.out.println("Rata - rata = "+rata2);
            System.out.println("Standart deviasi = "+akar);
        } catch (Exception e) {  
        }
    }
}

dengan output sebagai berikut :