Bagian I. Studi Kasus [82] Tanda tangan:

dokumen-dokumen yang mirip
List Linier. IF2030/Algoritma dan Struktur Data. 11/6/2009 FNA+WDS/IF2030/Sem

A. Bagian I. Studi Kasus [82]

A. Bagian I. Studi Kasus

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

Variasi List Linier (Bagian 2)

List Linier (Bag. I) IF2121/Algoritma dan Struktur Data Sem. I 2016/ /25/2017 IF2121/Sem I 2017/2018 1

LIST LINIER 1. DEFINISI

Representasi Logic List Linier

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

Kode : IF2121 NIM :... Matakuliah : Algoritma dan Struktur Data Nama :... Hari, Tanggal : Senin, 13 November 2017 Waktu : 150 Menit

IKG2A3/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Variasi List Linier

Variasi List Linier. Nisa ul Hafidhoh, MT

IKG2A3/ Pemrograman Terstruktur 2

Struktur Data. Queue (Antrian)

RESUME A B C D. Gambar 1 Double Linked list dengan Empat Simpul

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Stack (Tumpukan)

GANJIL 2009/2010 NIM: Algoritma dan Struktur Data / CS2014 Nama :

3. DOUBLE LINK LIST. Lab. Teknik Informatika Struktur Data 1

MODUL 6 SINGLE & DOUBLE LINKED LIST

MODUL PRAKTIKUM STRUKTUR DATA Modul ke-1, Pertemuan ke-1 Nama file : P01-XXX (XXX adalah 3 digit terakhir NIM) Deskripsi: Senarai, Traversal

Lab. Teknik Informatika Struktur Data 1

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Queue (Antrian)

BAB 1 PENGANTAR KE STRUKTUR DATA

Algoritma dan Struktur Data. Pertemuan 9 Circular Linked List

DIKTAT KULIAH STRUKTUR DATA. Disusun oleh: Sri Primaini A.

BAB II STACK Atau TUMPUKAN

ALGORITMA & PEMROGRAMAN

LAPORAN PRAKTIKUM IX. Oleh:

4 LINKED LIST. 4.1 Istilah-istilah 1. Simpul Simpul terdiri dari dua bagian, yaitu : Bagian data Bagian pointer yang menunjuk ke simpul berikutnya.

Array (Tabel) Tim Pengajar KU1071 Sem /11/3 TW/KU1071 1

: Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Linked List. Single Linked List

LATIHAN UTS Tim Pengajar KU1071 Sem

ARRAY DINAMIS. Type. Pengenal = Simpul Simpul = Type. (Nama var) : ( Type data)

Masukan Judul... Infotype àsebuah tipe terdefinisi yang menyimpan informasi sebuah elemen list

BAB IX LINKED LIST (SENARAI BERANTAI)

BAB XI Manipulasi Binary Tree

PENGENALAN List merupakan sebuah pemikiran/konsep struktur data yang sangat dasar pada pemrograman agar lebih fleksibel. Setiap elemen akan ditambahka

BAB IX LINKED LIST (SENARAI BERANTAI)

SENARAI BERANTAI (LINK LIST)

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA LINKED LIST (BAGIAN 1)

List Linear (Linked List) Farah Zakiyah Rahmanti 2014

LIST. Dewi Sartika, M.Kom

Algoritma dan Struktur Data. Pertemuan 7 Linked List

Kode MK/ Pemrograman Terstruktur 2

Modul Praktikum Algoritma dan Struktur Data BAB 6 LINKED LIST

PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING)

QUEUE (ANTRIAN) Struktur Data - Queue

LOGO STRUKTUR DATA QUEUE

Algoritma dan Struktur Data. Pertemuan 8 Doubly Linked List

UJIAN AKHIR SEMESTER GANJIL 2005/2006 ALGORITMA & STRUKTUR DATA / CS2014

PENGULANGAN Bagian 1 : Notasi. Tim Pengajar KU1071 Sem

STRUKTUR DATA. Pengajar Jaidan Jauhari,, MT. Alamat Halaman 1

STRUKTUR DATA. Pengajar Jaidan Jauhari,, MT. Alamat Halaman 1

PENGULANGAN SKEMA PEMROSESAN SEKUENSIAL. Tim Pengajar KU1071 Sem

Algoritma dan Struktur Data

Linked List. Bandung 2013

Double Linked List. Brigida Arie Minartiningtyas, M.Kom

Senarai berantai. linked list. Pertemuan keenam Struktur data st3telkom.ac.id. by : tenia wahyuningrum & Sisilia Thya Safitri

Menghapus Pointer Statement yang digunakan untuk menghapus pointer adalah Dispose, yang mempunyai bentuk umum : Dispose(peubah) ;

KERUGIAN DAN KEUNTUNGAN LINKED LIST

PENGANTAR KOMPUTER & SOFTWARE II

ALGORITMA DAN STRUKTUR DATA

Gambar 3.1. Circular Single Linked List. Deklarasi bisa dilihat kembali di Single Linked List atau Double Linked List.

Games and Quiz PT II. Dr. Putu Harry Gunawan, MSi.,MSc. phg-simulation-laboratory.com

DIKTAT KULIAH ALGORITMA dan STRUKTUR DATA II. : Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Queue.

Double linked list. Gambar 1. Double linket list dengan empat simpul Deklarasi Double Linked List di dalam Pascal :

Implementasi Struktur Data Stack (Tumpukan) dalam Tower of Hanoi Game

DASAR PEMROGRAMAN. Institut Teknologi Sumatera

VARIABEL, TIPE DATA, KONSTANTA, OPERATOR DAN EKSPRESI. Pemrograman Dasar Kelas X Semester 2

Pembahasan Kuis. KU1071/Pengantar Teknologi Informasi A Sem /2011

IKG2A3/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Mesin Abstrak

LINKED LIST. Altien Jonathan Rindengan, S.Si, M.Kom

DIG1G3 Implementasi Struktur Data

Pohon Biner Bagian 2 (Pohon Seimbang, Pohon Biner Terurut, Pembangunan Pohon Biner dari Pita Karakter/String)

A B C D E F. Gambar 1. Senarai berantai dengan 6 simpul

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN

PERULANGAN P E N G A N TA R P R O G R A M S T U D I. Institut Teknologi Sumatera

Linked List dan Implementasinya dalam Bahasa Java

4. STACK / TUMPUKAN TEORI PENUNJANG

Linked List 6.3 & 7.3 NESTED LOOP

Algoritma dan Struktur Data. Linked List

PENGANTAR KOMPUTER & SOFTWARE II

Algoritma Pemrograman & Struktur Data

Algoritma dan Pemrograman Searching/Pencarian

Array (Tabel) bagian 2

Mesin Abstrak. Tim Pengajar KU1071 Sem

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Tree (Pohon)

SOAL C++ Created by Yuli Astuti,S.Kom Copyright 2009

SATUAN ACARA PERKULIAHAN MATA KULIAH PEMROGRAMAN PASCAL * (TK) KODE / SKS: KK /2 SKS

MODUL PRAKTIKUM PERCABANGAN DAN PENGULANGAN

(3) BAHAN KAJIAN (materi ajar)

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

LINKED LIST. TUJUAN UMUM Memahami konsep linked list TUJUAN KHUSUS

Struktur Data II. Bekerja Dengan Form.

Aplikasi Rekursif dalam Analisis Sintaks Program

BAB 1 KONSEP DASAR. Algoritma adalah urutan langkah-langkah logis untuk menyelesaikan sebuah masalah yang disusun secara sistematis.

Kode MK/ Pemrograman Terstruktur 2

Penggunaan Graf dalam Pemodelan Matematis Permainan Delapan Jari

CCH1A4 / Dasar Algoritma & Pemrogramanan

ALGORITMA DAN PEMROGRAMAN

Transkripsi:

UJIAN TENGAH SEMESTER GANJIL NIM: 2010/2011 dan Struktur Data / CS2014 Nama : HARI : Kamis, 30 Oktober 2009 WAKTU : 110 menit DOSEN : TIM SIFAT : Tutup Buku, No Electronic Device Tanda tangan: Petunjuk: Periksalah kelengkapan halaman soal. Tidak ada toleransi penilaian bagi mahasiswa yang tidak lengkap halaman soalnya. Soal terdiri atas dua bagian dengan rincian: tiga soal studi kasus dan lima soal pilihan ganda, dan semua dikerjakan pada lembar soal ini. Bagian I. Studi Kasus [82] Studi Kasus 1. Property Warna RGB Diperlukan sebuah struktur data untuk menyimpan property warna RGB sebuah gambar digital. Struktur data yang akan digunakan adalah sebuah list linier. Dalam list tersebut disimpan property warna pixel yang terdapat dalam gambar, dan sebuah kombinasi RGB hanya disimpan 1 kali (unik). Properti warna yang disimpan terdiri dari Red,Green,Blue dengan rentang nilai 0-255. 1. Buatlah definisi type List Warna (list linier sederhana) Type InfoType : <red : integer, {nilai integer komponen Red} green : integer, {nilai integer komponen Green} blue : integer> {nilai integer komponen Blue} Type ElmtList : <info : InfoType, next : Address> {komponen sebuah elemen list} Type Address : pointer to ElmtList Type ListWarna: <First : Address> 2. Tuliskan implementasi prosedur InvertColor yang akan melakukan inverse warna (per komponen, Red, Green, dan Blue). Misal nilai komponen Red sebuah elemen 0, maka inverse-nya adalah 255, nilai komponen Green sebuah elemen 10, maka inversenya adalah 245, dan nilai komponen Bluenya adalah 230, maka inversenya adalah 25. Procedure InvertColor(input/output LW : ListWarna) {I.S : ListWarna terdefinisi, TIDAK kosong, minimal terdapat 1 elemen} {F.S: nilai komponen Red, Green, dan Blue tiap elemen diubah menjadi inverse dari nilai awal} P : address Halaman 1 dari 10

P First(LW) {awal traversal List} repeat info(p).red 255 (^P.info).red{invers nilai komponen Red} info(p).green 255 - info(p).green{invers nilai komponen Green} info(p).blue 255 - info(p).blue{invers nilai komponen Blue} P next(p) {next elemen} Until (P=Nil){kondisi berhenti} 3. Tuliskan implementasi prosedur untuk menambahkan sebuah kombinasi warna. Pastikan terlebih dahulu bahwa kombinasi warna tersebut belum ada di list awal. Procedure AddElmt(input/output LW : ListWarna, input r,g,b : integer) {I.S : ListWarna terdefinisi, mungkinkosong} {F.S: menambahkan sebuah elemen dengan info r,g,b, jika pada list belum terdapat kombinasi RGB tersebut} {asumsi : alokasi elemen baru pasti berhasil} Prev,P,PNew : address Found : Boolean {true jika sebuah elemen nilai rgbnya=rgb yg akan diinsert} Prev Nil {inisialisasi} P First(LW) {awal traversal List} If (P=Nil)then{list kosong} else {insert first} Alokasi(P) Info(P).red r Info(P).green g Info(P).blue b Next(P) Nil First(LW) P Halaman 2 dari 10

found false {inisialisasi} repeat if ((info(p).red=r) and (info(p).green=g) and (info(p).blue=b))then {cek apakah rgb current=rgb yang akan diinsert} Found true Else Prev P {next element} Until (P=Nil OR found){kondisi berhentinya di Prev sbg Elmt terakhir yg bukan Nil} If (not found) {insert last} Alokasi(PNew) {alokasi} Info(PNew).red r{set atribut elemen baru} Info(PNew).green g {set atribut elemen baru} Info(PNew).blue b{set atribut elemen baru} Next(PNew) Next(Prev) {insert last} Next(Prev) PNew 4. Tulisakan implementasi fungsi yang akan menghitung jumlah kombinasi warna dengan nilai komponen RGB yang sama, misal R=100,G=100,B=100. Function GetCountEqElmt(LW : ListWarna) integer {mengembalikan 0 jika List kosong} count : integer {variable untuk menyimpan jumlah sementara} P : address {inisialisasi} P First(LW) count 0 While (P<>Nil){kondisi perulangan} Halaman 3 dari 10

If ((Info(P).red= Info(P).green) and (Info(P).red= Info(P).blue))then{kondisi penjumlahan} count count+1 {next element} count {terminasi} Studi Kasus 2 : Kelola Data Macebook Suatu sistem harus mengelola informasi keanggotaan jejaring Macebook yang dapat mengelola anggota, dan relasi (hubungan pertemanan antar anggota). Aturan yang ada adalah anggota harus terdaftar pada list anggota. Masing-masing member bisa berteman dengan member yang lain. Hubungan ini didaftarkan pada suatu list relasi. List Anggota List Relasi IDAnggota Nama 001 Spongebob 002 Patrick 003 Mr Crab 004 Squidward RelasiA 002 001 002 004 003 001 001 003 RelasiB Pada list relasi, Relasi A menyatakan pointer ke member yang meminta hubungan pertemanan, sedangkan relasi B merupakan pointer ke member yang menyetuijui pertemanan. Jika informasi di atas direpresentasikan dengan struktur data internal akan terlihat seperti gambar di bawah ini : 1. Tuliskan kamus untuk representasi struktur data di atas! Jawab: kamus type ElmtAnggota : <IDAnggota: string; nama: string; nextanggota : adranggota > type ElmtRelasi : <RelasiA: adranggota; RelasiB : adranggota; Halaman 4 dari 10

NextRelasi : adrrelasi> type adranggota : ^ElmtAnggota type adrrelasi : ^ElmtRelasi type ListAnggota : <FirstAngg: adranggota> type ListRelasi LAnggota LRelasi : <FirstRel: adrrelasi> : ListAnggota : ListRelasi b. Tuliskan algoritma procedure untuk menampilkan seluruh daftar pertemanan (siapa berteman dengan siapa)! Procedure PrintPertemanan(input LAnggota: ListAnggota, input LRelasi: ListRelasi) {Menuliskan daftar pertemanan pada data Macebook I.S: List Anggota & List Relasi terdefinisi, mungkin kosong. F.S: Menuliskan seluruh daftar pertemanan pada media output. Jika list anggota kosong, tuliskan List Anggota kosong, Jika list relasi kosong, tuliskan List Relasi kosong, } pang: adranggota prel: adrrelasi {mengecek apakah list anggota kosong} if FirstAngg(LAnggota)= nil then output( List Anggota kosong ) elseif FirstRelasi(LRelasi) = nil then {mengecek apakah list relasi kosong} else output( List Relasi kosong ) prel FirstRelasi(LRelasi) repeat {mengambil dan mengoutputkan nama peminta Pertemanan } pang RelasiA(pRel) output(namaanggota(pang)) Halaman 5 dari 10

{mengambil dan mengoutputkan nama yang menyetujui Pertemanan } pang RelasiB(pRel) output(namaanggota(pang)) {memproses relasi berikutnya} prel nextrel(prel) until ( prel=nil ) c. Tuliskan algoritma procedure untuk menampilkan jumlah pertemanan (number of friends)! Procedure printcountrelasi(input LAnggota: ListAnggota, input LRelasi: ListRelasi) {Menuliskan jumlah pertemanan member yang terdaftar pada data Macebook I.S: List Anggota & List Relasi terdefinisi, asumsi tidak kosong. F.S: Menuliskan jumlah pertemanan dari semua member pada media output. Relasi bisa berupa permintaan atau persetujuan terhadap pertemanan. } pang: adranggota; prel: adrrelasi; count : Integer pang FirstAnggota(LAnggota) repeat {Inisialisasi loop} Count 0; prel FirstRelasi(LRelasi) {menuliskan nama anggota yang akan dihitung} output(namaanggota(pang)) While prel <> Nil do If ( pang = RelasiA(pRel)) or ( pang = RelasiB(pRel)) then Count Count + 1 prel nextrel(prel) {proses relasi berikutnya} output(count) {menampilkan jumlah} pang nextang(pang) {proses anggota berikutnya} until ( pang=nil ) d. Tuliskan algoritma procedure untuk menampilkan daftar teman dari seseorang anggota! Procedure printteman(input LAnggota: ListAnggota, input LRelasi: ListRelasi, Halaman 6 dari 10

input NamaMember : string) {Menuliskan semua teman oleh seorang member yang diinputkan pada parameter. I.S: List Anggota & List Relasi terdefinisi, asumsi tidak kosong. NamaMember terdefinisi F.S: Menuliskan semua nama teman dari seorang member (NamaMember) ke media output. } pang: adranggota prel: adrrelasi pang FirstAnggota(LAnggota) while (NamaAnggota(pAng) <> NamaMember) and (nextang(pang) <> Nil) do pang nextang(pang) // bila pang = nil program akan NULL POINTER EXCEPTION if (NamaAnggota(pAng) <> NamaMember) then else output( bukan anggota member ) prel FirstRelasi(LRelasi) while prel <> Nil do If ( pang = RelasiA(pRel)) then output(namaanggota(relasib(prel))) If ( pang = RelasiB(pRel)) then output(namaanggota(relasia(prel))) prel nextrel(prel) Halaman 7 dari 10

Bagian II. Pilihan Ganda [18] Berilah tanda silang (X) pada jawaban yang tepat. Poin setiap soal adalah 3 1. Sebuah modul ADT dalam bahasa C terdiri atas beberapa file. Definisi type dituliskan dalam file : a. Main b. Driver c. Header d. Implementasi e. Dictionary 2. Suatu list direpresentasikan sebagai berikut : Misal last adalah address yang akan melakukan traversal sampai menemukan elemen list terakhir, maka skema traversal yang benar adalah : a. Last First(L) b. Last First(L) While last <> nil do Last next(last) c. Last First(L) While next(last) <> First(L) do Last next(last) e. Last First(L) While next(last) <> A do Last <-- next(last) While next(last) <> nil do Last next(last) d. Last First(L) While last <> First(L) do Last next(last) 3. Diketahui penggalan algoritma berikut ini : Procedure Tebak(input/output L : List, output P : address) {IS. Terdefinisi List L dan address P} {FS. Silahkan ditebak} Last, PrecLast : address Last First(L) While (Next(Last) nil)do Halaman 8 dari 10

PrecLast Last Last Next(Last) {end while} P Last if (PrecLast = NIL) then First(L)=NIL else Next(PrecLast)=NIL di atas melakukan proses : a. Delete first pada circular list b. Delete last pada circular list c. Delete first pada linear list d. Delete last pada linear list e. Delete first pada linear list dengan first dan last 4. Perhatikan ilustrasi double linked list berikut ini: Ilustrasi di atas adalah ilustrasi untuk insert after pada double linked list. Mana dari pernyataan berikut yang benar untuk proses algoritma insert after. a. {a, b, c, d} b. {a, d, c, b} c. {a, c, b, d} d. {d, c, b, a} e. Jika urut-urutan langkah di atas dikerjakan tidak ada yang benar. 5. Apa yang menjadi kesamaan antara representasi data Sigle Circular List dengan Linear List? a. Struktur Datanya b. Algortima InsertFirst-nya c. Algortima InsertLast-nya d. DeleteFirst-nya e. DeleteLast-nya Halaman 9 dari 10

6. Berikut ini cara yang paling tepat untuk menghapus elemen terakhir ialah... a. P First(L) While Next(P)<>First(L) do Next(P) First(L) Last(L) P b. P First(L) While Next(P)<>Last(L) do Last(L) P Next(P) Last(L) c. P First(L) While Next(Next(P))<>First(L) do Next(P) Next(Next(P)) Last(L) Next(P) d. P First(L) While Next(P)<>First(L) do Last(L) P Next(P) First(L) e. P First(L) While Next(P)<>Last(L) do Next(P) First(L) Last(L) P Halaman 10 dari 10