Anda di halaman 1dari 10

BUKU JAWABAN UJIAN (BJU)

UAS TAKE HOME EXAM (THE)


SEMESTER 2020/21.1 (2020.2)

Nama Mahasiswa : KHAIRUL RIJAL

Nomor Induk Mahasiswa/NIM : 041558822

Tanggal Lahir : 06/07/1990

Kode/Nama Mata Kuliah : MSIM4202/STRUKTUR DATA

Kode/Nama Program Studi : 252/SISTEM INFORMASI (S1)

Kode/Nama UPBJJ : 14/PADANG

Hari/Tanggal UAS THE : SENIN/21 DESEMBER 2020

Tanda Tangan Peserta Ujian

Petunjuk

1. Anda wajib mengisi secara lengkap dan benar identitas pada cover BJU pada halaman ini.
2. Anda wajib mengisi dan menandatangani surat pernyataan kejujuran akademik.
3. Jawaban bisa dikerjakan dengan diketik atau tulis tangan.
4. Jawaban diunggah disertai dengan cover BJU dan surat pernyataan kejujuran akademik.

KEMENTERIAN PENDIDIKAN DAN KEBUDAYAAN


UNIVERSITAS TERBUKA
Surat Pernyataan
Mahasiswa
Kejujuran Akademik

Yang bertanda tangan di


bawah ini:

Nama Mahasiswa : KHAIRUL RIJAL

NIM : 041558822

Kode/Nama Mata Kuliah : MSIM4202/STRUKTUR DATA

Fakultas : SAINS DAN TEKNOLOGI

Program Studi : SISTEM INFORMASI (S1)

UPBJJ-UT : PADANG

1. Saya tidak menerima naskah UAS THE dari siapapun selain mengunduh dari aplikasi THE pada
laman https://the.ut.ac.id.
2. Saya tidak memberikan naskah UAS THE kepada siapapun.
3. Saya tidak menerima dan atau memberikan bantuan dalam bentuk apapun dalam pengerjaan soal
ujian UAS THE.
4. Saya tidak melakukan plagiasi atas pekerjaan orang lain (menyalin dan mengakuinya sebagai
pekerjaan saya).
5. Saya memahami bahwa segala tindakan kecurangan akan mendapatkan hukuman sesuai dengan
aturan akademik yang berlaku di Universitas Terbuka.
6. Saya bersedia menjunjung tinggi ketertiban, kedisiplinan, dan integritas akademik dengan
tidak melakukan kecurangan, joki, menyebarluaskan soal dan jawaban UAS THE melalui media
apapun, serta tindakan tidak terpuji lainnya yang bertentangan dengan peraturan akademik
Universitas Terbuka.

Demikian surat pernyataan ini saya buat dengan sesungguhnya. Apabila di kemudian hari terdapat
pelanggaran atas pernyataan di atas, saya bersedia bertanggung jawab dan menanggung sanksi akademik
yang ditetapkan oleh Universitas Terbuka.

LUBUK SIKAPING, 21 DESEMBER 2020

Yang Membuat Pernyataan

KHAIRUL RIJAL
1. Seorang pustakawan melakukan pencarian pada sebuah website perpustakaan, tujuannya adalah untuk
mendapatkan data jumlah buku dengan judul “Struktur Data” yang menjadi koleksi pada perpustakaan
tersebut. Pustakawan tersebut memasukkan kata kunci “Struktur Data” pada kolom pencarian, kemudian
menekan tombol “Pencarian”. Hasil pencarianpun menunjukkan terdapat 200 buku. Setiap buku memiliki
kode yang berbeda sesuai dengan rak tempat penyimpanan buku tersebut berada. Berdasarkan data
tersebut pustakawan tidak hanya dapat melihat jumlah buku saja, namun juga dapat melihat kode buku,
rak buku, jumlah buku disetiap rak, penulis, penerbit, jumlah halaman, dan kondisi buku. Dikarenakan
tujuan pencarian buku telah selesai, maka pustakawan pun segera melaporkan jumlah buku yang dimiliki
pada pihak terkait. Berdasarkan kasus tersebut, silahkan Anda!!

a. Lakukan identifikasi dan jelaskan kandidat proses atau kandidat data


Kandidata Data: data buku, data rak
Kandidat Proses :
Data buku = read(), update(), delete(), find(), create()
Data rak = read(), update(), delete(), find(), create()

b. Jelaskan keterkaitan antar proses/data hasil point a


Setiap rak memiliki buku dengan hubungan one to many -> sehingga setiap rak memiliki banyak buku.

c. Tuliskan deklarasi variabel dari data pada point a, lengkap dengan tipe data sesuai dengan kaidah
pendeklarasian variabel dengan menggunakan bahasa pemrograman Java!.

class Main {
public static void main(String args[]) {
String kode_buku;
String judul;
String rak;
int jml_buku;
String penerbit
int jml_halaman;
String kondisi;

String kode_rak;
String nama_rak;
}
2. Coding mengenai stack;

1 Class operasiStack{
2 Public static void main(String[]args) {
3 LinkedList nomor = new LinkedList();
4 nomor.add(“1”);
5 nomor.addFirst(“2”);
6 nomor.addFirst(“3”);
7 nomor.add(2, “4”);
8 nomor.addFirst(“5”);
9 nomor.addLast(“6”);
10 nomor.addFirst(“7”);
11 nomor.add(3, “8”);
12 nomor.remove(0);
13 for(Object stackList : nomor){
14 System.out.print(stackList+”->”);
15 }
16 }
17 }

Penjelasan per baris program operasiStack adalah sebagai berikut:

Baris ke-1 class operasiStack{

Menunjukan sebah class bernama operasiStack , yang memiliki tanda pembuka class yaitu { dan tanda
penutup class tersebut terdapat pada baris ke-17

Baris ke-2 public static void main(String[] args) {

Menunjukan sebuah main program yang ditandai dengan public static void main(Strings[] args), kemudian
terdapat tanda pembuka main program { dan tanda penutup } terdapat pada baris ke-16

Baris ke-3 LinkedList nomor = new LinkedList();

Menunjukan adanya pembuatan variabel sebagai tempat untuk tumpukan data, nama variabel tersebut
adalah ‘nomor’. Coding awal yaitu menuliskan fungsi LinkedList yang dimiliki oleh Java, yaitu untuk
membuat sebuah tempat untuk serangkaian data. Selanjutnya menuliskan nama variabel list tersebut yaitu
variabel ‘nomor’ yang diikuti dengan tanda penunjuk nilai ‘=’. Berikutnya yaitu new yang merupakan
standard coding untuk membuat objek baru, adapun list yang digunakan tersebut adalah LinkedList() dan
deklarasi ditutup dengan tanda ; .

Baris ke-4 nomor.add(“1”);

Setelah sebelumnya disediakan tempat untuk menampung tumpukan data, berikutnya pada baris ke-4 akan
dilakukan penambahan data angka ‘1’ pada awal tumpukan, data tersebut disimpan pada awal antrian
yaitu indeks ke-0 dari tempat antrian tersebut. Coding tersebut diawali dengan menuliskan nama variabel
‘nomor’ diikuti tanda titik ‘.’ yang merupakan pemanggilan fungsi yang ada pada variabel list tersebut yaitu
fungsi add, kemudian penulisan data yang diapit oleh tanda kurung buka dan kurung tutup tanda kutip dua
‘(“1”)’, selanjutnya diberi tanda ; sebagai tanda penutup statement.
Baris ke-5 nomor.addFirst(“2”);

Kita menambahkan data ‘2’ pada tumpukan teratas, sehingga data tersebut tersimpan pada tumpukan
indeks ke-0. Coding penambahan data pada tumpukan teratas tersebut yaitu menuliskan variabel ‘nomor’
yang diikuti tanda titik ‘.’ , kemudian menuliskan fungsi addFirst sebagai tanda akan ditambahkannya data
pada tumpukan teratas. Selanjutnya penulisan data yang diapit oleh tanda kurung buka dan kurung tutup
serta didalamnya diapit oleh tanda kutip dua ‘(“2”)’, kemudian diberi tanda ; sebagai tanda penutup
statement.

Baris ke-6 nomor.addFirst(“3”);

Kita menambahkan data ‘3’ pada tumpukan teratas, sehingga data tersebut tersimpan pada tumpukan
indeks ke-0. Coding penambahan data pada tumpukan teratas tersebut yaitu menuliskan variabel ‘nomor’
yang diikuti tanda titik ‘.’ , kemudian menuliskan fungsi addFirst sebagai tanda akan ditambahkannya data
pada tumpukan teratas. Selanjutnya penulisan data yang diapit oleh tanda kurung buka dan kurung tutup
serta didalamnya diapit oleh tanda kutip dua ‘(“3”)’, kemudian diberi tanda ; sebagai tanda penutup
statement.

Baris ke-7 nomor.add(2, “4”);

Kita menambahkan data “4” pada tumpukan indeks ke-2. Coding penambahan data pada tumpukan indeks
ke-2 tersebut yaitu menuliskan variabel ‘nomor’ yang diikuti tanda titik ‘.’, kemudian menuliskan fungsi add
sebagai tanda akan ditambahkannya data. Selanjutnya penulisan data yang diapit oleh tanda kurung buka
dan kurung tutup serta didalamnya diapit oleh tanda kutip dua ‘(2, “4”)’ , kemudian diberi tanda ; sebagai
tanda penutup statement. Dimana angka ‘2’ menunjukkan indeks yang dituju untuk menambahkan data ‘
4’, yaitu indeks ke-2. Perlu kita ingat bahwa awal indeks dalam stack diawali dari indeks ke-0.

Baris ke-8 nomor.addFirst(“5”);

Kita menambahkan data ‘5’ pada tumpukan teratas, sehingga data tersebut tersimpan pada tumpukan
indeks ke-0. Coding penambahan data pada tumpukan teratas tersebut yaitu menuliskan variabel ‘nomor’
yang diikuti tanda titik ‘.’ , kemudian menuliskan fungsi addFirst sebagai tanda akan ditambahkannya data
pada tumpukan teratas. Selanjutnya penulisan data yang diapit oleh tanda kurung buka dan kurung tutup
serta didalamnya diapit oleh tanda kutip dua ‘(“5”)’, kemudian diberi tanda ; sebagai tanda penutup
statement.

Baris ke-9 nomor.addLast(“6”);

Kita menambahkan data ‘6’ pada tumpukan terbawah, sehingga data tersebut tersimpan pada tumpukan
indeks ke-n. Coding penambahan data pada tumpukan terbawah tersebut yaitu menuliskan variabel
‘nomor’ yang diikuti tanda titik ‘.’ , kemudian menuliskan fungsi addLast sebagai tanda akan
ditambahkannya data pada tumpukan terbawah. Selanjutnya penulsan data yang diapit oleh tanda kurung
buka dan kurung tutup serta di dalamnya diapit oleh tanda kutip dua ‘(“6”)’ , kemudian diberi tanda ;
sebagai tanda penutup statement.

Baris ke-10 nomor.addFirst(“7”);

Kita menambahkan data ‘7’ pada tumpukan teratas, sehingga data tersebut tersimpan pada tumpukan
indeks ke-0. Coding penambahan data pada tumpukan teratas tersebut yaitu menuliskan variabel ‘nomor’
yang diikuti tanda titik ‘.’ , kemudian menuliskan fungsi addFirst sebagai tanda akan ditambahkannya data
pada tumpukan teratas. Selanjutnya penulisan data yang diapit oleh tanda kurung buka dan kurung tutup
serta didalamnya diapit oleh tanda kutip dua ‘(“7”)’, kemudian diberi tanda ; sebagai tanda penutup
statement.

Baris ke-11 nomor.add(3, “8”);

Kita menambahkan data “8” pada tumpukan indeks ke-3. Coding penambahan data pada tumpukan indeks
ke-3 tersebut yaitu menuliskan variabel ‘nomor’ yang diikuti tanda titik ‘.’, kemudian menuliskan fungsi add
sebagai tanda akan ditambahkannya data. Selanjutnya penulisan data yang diapit oleh tanda kurung buka
dan kurung tutup serta didalamnya diapit oleh tanda kutip dua ‘(3, “8”)’ , kemudian diberi tanda ; sebagai
tanda penutup statement. Dimana angka ‘3’ menunjukkan indeks yang dituju untuk menambahkan data ‘
8’, yaitu indeks ke-3. Perlu kita ingat bahwa awal indeks dalam stack diawali dari indeks ke-0.

Baris ke-12 nomor.remove(0);

Pada baris ini dilakukan penghapusan data yang berada pada indeks-0. Coding penghapusan data tersebut
yaitu dengan menuliskan variabel antrian yaoti ‘nomor’ yang diikuti tanda titik ‘.’ , kemudian menuliskan
remove sebagai fungsi untuk menghapus tumpukan, adapun posisi indeks antrian indeks ke-0 yang akan
dihapus dituliskan dalam tanda kurung buka dan kurun gutup yaitu ‘(0)’ , berikutnya diberi tanda ; sebagai
tanda penutup statement.

Baris ke-13 for(Object stackList : nomor){

Pada baris ini akan dilakukan perulangan. Perulangan ini berbeda dengan perulangan pada implementasi
arrat sebelumnya. Pada perulangan kali ini tidak memiliki kondisi awal perulangan, kondisi akhir
perulangan, maupun omncrement perulangan. Hal tersebut karena perulangan ini merupakan
impelementasi stack dengan menggunakan list, sehingga tidak perlu dilakukan pemesanan jumlah indeks
yang akan digunakan, akan tetapi jumlah indeks tersebut tidak terbatas. Maka cukup dilakukan
pemanggilan objek queueList yang diasumsikan menggunakan data dari variabel ‘nomor’. Langkah coding
perulangan tersebut adalah menuliskan for, kemudian menuliskan tanda ‘(‘ sebagai tanda awal perulangan.
Selanjutnya menulsikan kondisi antri Object stackList, berikutnya tanda ‘:’ untuk memanggil data dari
‘nomor’. Berikutnya menuliskan tanda akhir perulangan yaitu ‘)’ yang diikuti dengan tanda pembuka
perulangan yaitu ‘{‘ , sedangkan tanda penutup perulangan terdapat pada baris ke-15.

Baris ke-14 System.out.print (stackList +”->”);

Pada baris ini, kita menampilkan isi data pada tumpukan dengan menambahkan tanda ‘->’ sebagai pemisah
antar data tersebut. Coding tersebut diawali dengan menuliskan paket untuk menampilkan data pada layar
komputer yaitu System.out.println(…) yang diakhiri tanda penutup statement yaitu ; . Pada area yang diapit
oleh tanda kurung tutup dan kurung buka tersebut dituliskan stackList sebagai perintah untuk memanggil
data yang telah dimasukkan oleh variabel antrian ‘nomor’

Baris ke-15 }

Baris ini merupakan sebuah tanda penutup perulangan ‘for’ yang diberi tanda ‘}’ , dimana tanda pembuka
perulangan for tersebut terdapat pada baris ke-13.

Baris ke-16 }
Baris ini merupakan sebuah tanda penutup perulangan ‘for yang diberi tanda ‘}’, dimana tanda pembuka
main program tersebut terdapat pada baris ke-2.

Baris ke-17 }

Baris ini merupakan sebuah tanda penutup class operasiStack yang diberi tanda ‘}’ , dimana tanda pembuka
class tersebut terdapat pada baris ke-1.

Operasi Stack dalam tabel;

3. Seorang peserta ujian sedang melihat daftar nomor ujian pada halaman website, dikarenakan peserta
ujian adalah para peserta yang telah lulus diujian pertama, maka pada ujian kali ini hanya terdapat 8
peserta dengan nomor ujian (27, 12, 20, 19, 13, 7, 85, 21). Ujian akan dilakukan secara offline di gedung
instansi terkait, dan kursi tempat duduk peserta akan diurutkan dari terkecil hingga terbesar berdasarkan
nomor ujian. Dengan demikian untuk mengetahui di kursi urutan berapa peserta tersebut akan melakukan
ujian, maka peserta harus mengurutkan daftar nomor ujian dari terkecil hingga terbesar. Berdasarkan kasus
tersebut, silahkan anda asumsikan nomor ujian peserta dengan memilih salah satu nomor dari daftar
nomor ujian, kemudian lakukan pengurutan/sorting data terhadap nomor ujian tersebut untuk mengetahui
diurutan kursi ke berapa peserta tersebut akan melakukan ujian? Sorting dengan menggunakan algoritma
Merge-sort.

Langkah-langkah untuk menyelesaikan hal tersebut;

i. Pertama pecah data menjadi 2 bagian {27,12,20,19} dan {13,7,85,21}

ii. Tahap kedua, pecah data pada bagian pertama menjadi 2 bagian sehingga setiap blok hanya memiliki 1
data

iii. Setelah itu digabungkan kembali dengan membandingkan pada blok yang sama, apakah data pertama
lebih besar daripada data ke-tenga+1, jika yam aka data ke-tengah+1 dipindah sebagai data pertama,
kemudian data ke-pertama sampai ke-tengah digeser menjadi data ke-dua sampai ke-tengah+1, demikian
seterusnya sampai menjadi satu blok utuh seperti awalnya.
Agar lebih jelas, berikut ini visual dari penjelasan diatas;

Setelah tempat duduk peserta ujian terurut dari nomor ujian peserta terkecil hingga terbesar dengan
algoritma merge sort yaitu {7,12,13,19,20,21,27,85}, maka;

peserta ujian nomor 7 berada di kursi urutan ke-1


peserta ujian nomor 12 berada di kursi urutan ke-2
peserta ujian nomor 13 berada di kursi urutan ke-3
peserta ujian nomor 19 berada di kursi urutan ke-4
peserta ujian nomor 20 berada di kursi urutan ke-5
peserta ujian nomor 21 berada di kursi urutan ke-6
peserta ujian nomor 27 berada di kursi urutan ke-7
peserta ujian nomor 85 berada di kursi urutan ke-8

Saya asumsikan nomor ujian peserta, dengan nomor ujian 13. Dari semua penjelasan diatas, maka peserta
dengan nomor ujian 13 berada dikursi urutan ke-3
4. Berdasarkan potongan main program pada soal tersebut

Bentuk graph awal BFS

Alur proses pada g.BFS(1)

Pada baris ke-3 terdapat deklarasi objek g dengan tipe Graph yaitu dengan coding Graph g = new Graph(4);

Pada baris ke-4 terdapat pemanggilan method addEdge pada objek g yaitu dengan coding g.addEdge(0, 0);
Untuk merelasikan vertex 0 ke vertex 0

Pada baris ke-5 terdapat pemanggilan method addEdge pada objek g yaitu dengan coding g.addEdge(0, 2);
Untuk merelasikan vertex 0 ke vertex 2

Pada baris ke-6 terdapat pemanggilan method addEdge pada objek g yaitu dengan coding g.addEdge(1, 0);
Untuk merelasikan vertex 1 ke vertex 0

Pada baris ke-7 terdapat pemanggilan method addEdge pada objek g yaitu dengan coding g.addEdge(1, 3);
Untuk merelasikan vertex 1 ke vertex 3

Pada baris ke-8 terdapat pemanggilan method addEdge pada objek g yaitu dengan coding g.addEdge(2, 1);
Untuk merelasikan vertex 2 ke vertex 1

Pada baris ke-9 terdapat pemanggilan method addEdge pada objek g yaitu dengan coding g.addEdge(3, 2);
Untuk merelasikan vertex 3 ke vertex 2

Pada baris ke-10 terdapat sebuah coding untuk menampilkan huruf dilayar komputer. Teks yang akan
ditampilkan adalah ‘BFS dengan vertex awal 1’.

Pada baris ke-11 terdapat sebuah pemanggilan method BFS yang diisi dengan parameter 1, yaitu dengan
coding g.BFS(1); , sehingga awal traversal BFS dimulai dari vertex 1.

Hasil dari coding tersebut akan menampilkan teks ‘BFS dengan vertex awal 1’ dan vertex yang dikunjungi
dengan algiritma BFS adalah 1 0 3 2

Anda mungkin juga menyukai