1 Bagian 1: Mencetak isi binary tree

dokumen-dokumen yang mirip
Buku Rancangan Pengajaran. Struktur Data dan Algoritma. Fakultas Ilmu Komputer Universitas Indonesia

Modul II Object Oriented Programming

Politeknik Elektronika Negeri Surabaya

OPERASI LOGIKA PADA GENERAL TREE MENGGUNAKAN FUNGSI REKURSIF

Pengenalan Program Java

Struktur Data dan Algoritma

LAPORAN PRAKTIKUM ALGORITMA DAN PEMROGRAMAN ( Implementasi Rekursi Pada Java)

Politeknik Elektronika Negeri Surabaya

KUM 6 IMPLEMENTASI BINARY TREE

Struktur Data & Algoritma

Penggunaan Struktur Data Pohon Berakar dalam XML

Dasar Pemrograman Web. Pemrograman Web. Adam Hendra Brata

Binary Tree kosong Gambar 1. Binary Tree dalam kondisi kosong

A. TUJUAN Mahasiswa diharapkan mampu : 1. Memahami Konsep Binary Search Tree 2. Mengimplementasaikan Binary Search Tree

BAB 1 PENDAHULUAN. Dalam pengembangan perangkat lunak, tim developer membangun cetak

Sekarang, kita akan mencoba untuk menganalisa program Java pertama : public class Hello {

Silsilah keluarga Hasil pertandingan yang berbentuk turnamen Struktur organisasi dari sebuah perusahaan. B.1 Pohon Biner (Binary Tree)

SUMBER BELAJAR PENUNJANG PLPG

Pengenalan Script. Definisi HTML

TEKNIK DOCUMENT OBJECT MODEL (DOM) UNTUK MANIPULASI DOKUMEN XML. Kusnawi ABSTRACT

@copyright by Emy PENGANTAR ALGORITMA & PROGRAM & PROGRAM PENGERTIAN ALGORITMA NOTASI UNTUK ALGORITMA

IF PEMROGRAMAN LANJUT TUGAS 1. Oleh : Andri Heryandi, M.T.

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK. Maimunah, S.Si,M.Kom

Modul Praktikum 4 Pemograman Berorientasi Objek

TPI4202 e-tp.ub.ac.id

Java Application. Menampilkan Tulisan

Dasar Pemrograman Java

Pemrograman Algoritma Dan Struktur Data

HTML DOM #1 Yosef Murya Kusuma Ardhana. ST., M.Kom

Dasar-Dasar Pemrograman Java

MODUL 1 PENGENALAN OOP

PRAKTEK 1 CLASS, ATTRIBUTE, METHOD, DAN OBJEK

TREE STRUCTURE (Struktur Pohon)

Struktur Data dan Algoritma IKI10400 Semester Gasal 2010/2011 Fakultas Ilmu Komputer Universitas Indonesia

PEMROGRAMAN BERORIENTASI OBJEK

Java Application. Aplikasi: Menampilkan Tulisan

Tabel 1. Instruksi untuk menampilkan teks No. Bahasa Pemrograman Instruksi 1. Pascal WRITE ( Bahasa pemrograman itu mudah );

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

Pemrograman dengan Java

BAB II LANDASAN TEORI

IT234 Algoritma dan Struktur Data. Tree

MODUL PEMOGRAMAN WEB I STMIK IM BANDUNG MODUL PEMOGRAMAN WEB I. Oleh: CHALIFA CHAZAR. Chalifa Chazar edu.script.id

BAB I PENDAHULUAN 1.1 Latar Belakang

PHP (HYPERTEXT PREPROCESSOR)

Praktikum Algoritma dan Setruktur Data

Penerapan Divide and Conquer dalam Membandingkan Alur Proses 2 Source Code

Heap Tree dan Kegunaannya dalam Heap Sort

Struktur Data & Algoritma

Gambar Use Case Diagram

Modul Praktikum Bahasa Pemrograman 1

PEMROGRAMAN WEB. 11 XML, XHTML dan JSON. Andi WRE

XML extensible Markup Language. Oleh: Nisa Miftachurohmah, S. Kom

BAB 5 Mendapatkan Input dari Keyboard

BAB 5 Mendapatkan Input dari Keyboard

DOM (Document Object Model) dan Event

13/12/2013. Binary Tree. Contoh Tree

2. Pilih instruksi yang dapat digunakan dalam method actionperformed untuk membedakan antara tombol buttonone dan buttontwo.

Algoritma Pemrograman [BS204]

Algoritma dan Pemrograman PROSEDUR. Oleh: Eddy Prasetyo N

Team project 2017 Dony Pratidana S. Hum Bima Agus Setyawan S. IIP

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

Everybody in this country should learn how to program a computer because it teaches you how to think. Steve Jobs

Algoritma dan Struktur Data. Tree

MODUL PRAKTIKUM TI014 STRUKTUR DATA Season 1

Modul Praktikum Pemrograman

DESAIN WEB STATIS DAN HTML. Dahlan Abdullah Website :

Mahasiswa memahami Pengertian, fungsi, aplikasi untuk menjalankan JavaScript, cara menjalankan kode, cara memasukkan kode JavaScript ke dalam HTML

BAB III DASAR TEORI 3.1 Sistem Informasi

Konsep Pemrograman Berbasis Obyek

2. Software yang dibutuhkan Untuk membuat sebuah program java, minimal yang dibutuhkan adalah:

PERTEMUAN III OBJEK DAN CLASS TUJUAN PRAKTIKUM

TPI4202 e-tp.ub.ac.id

Dasar Pemrograman Web. Pemrograman Web. Adam Hendra Brata

IKG2I4 / Software Project I

Pemrograman Berbasis Web Pertemuan 5 XML & DTD. Program Diploma IPB - Aditya Wicaksono, S.Komp 1

MODUL 2 Constructor. Tujuan: Mahasiswa dapat mengenal dan memahami konsep constructor dan overloading constructor

ANALISIS ALGORITMA BINARY SEARCH

Membuat Tab Layout Menggunakan Android Material Design

Jobsheet 09. Overloading and Overriding Method

PEMROGRAMAN BERORIENTASI OBJEK

LAPORAN PERCOBAAN V ( APLIKASI NILAI MAHASISWA) BERBASIS JAVA

Program Kalkulator Sederhana Menggunakan Java Netbeans

Pengenalan JavaScript

Aplikasi Rekursif dalam Analisis Sintaks Program

BAB 2 INPUT DARI KEYBOARD

Ujian Tengah Semester Struktur Data dan Algoritma Fakultas Ilmu Komputer, Universitas Indonesia 9 November 2006

Dasar Pemrograman Java

TUGAS AKHIR APLIKASI KALKULATOR BOLA BERBASIS JAVA

Pemrograman Web I (HTML) Oleh: Devie Rosa Anamisa

Bab 9. Mengetahui teknik yang berbeda dalam optimisasi aplikasi mobile

XML. Apakah XML XML vs HTML XML Struktur DTD XLST

Pertemuan 4 Array pada Java

Dasar Pemrograman Java. H. Risdiandri Iskandar, SKom,MM 1

Pemrograman Berorientasi. Class dan Obyek 2

Pemrograman Lanjut. Class dan Object. Aryo Pinandito, ST, M.MT Team Teaching Pemrograman Lanjut

LAPORAN PERCOBAAN IV PEMBUATAN CALCULATOR ( MENGHITUNG GAJI KARYAWAN DAN TUNJANGANNYA) BERBASIS JAVA

PRAKTIKUM OBJECT ORIENTED PROGRAMING

MINGGU II : DASAR C# Tujuan Pembelajaran. Materi

ALGORITMA PEMOGRAMAN SEMESTER GENAP 2017/2018

Dasar-Dasar OOP di Java

Transkripsi:

IKI 20100: Struktur Data & Algoritma 2007/2008 Semester Ganjil Tugas 2: Mencetak tree dalam file XML Pada tugas ini anda diminta untuk membuat program yang dapat mencetak isi sebuah tree ke file dengan penataan yang rapi dan terstruktur. Informasi mengenai bentuk dan isi sebuah tree akan dibaca dari sebuah file XML. XML (extensible Markup Language) 1 adalah sebuah format standar untuk menyimpan informasi yang kini sangat banyak digunakan di industri, dan bisa dikatakan merupakan contoh baik pengaplikasian struktur data tree yang sudah kita pelajari di kuliah. Untuk membantu anda, di SCeLE tersedia sebuah program yang sudah mendefinisikan struktur data binary node dan binary tree, serta cara untuk membaca sebuah file XML. Tugas ini terdiri dari dua bagian. Pada bagian pertama, anda diminta untuk melengkapi program yang sudah diberikan agar ia dapat mencetak isi binary tree sesuai ketentuan di bawah. Pada bagian kedua, anda diminta untuk membuat class-class baru sehingga anda dapat membaca dan mencetak isi tree pada umumnya, yaitu tree yang boleh memiliki n anak, n 0. 1 Bagian 1: Mencetak isi binary tree Setiap node dalam binary tree memiliki sebuah String yang harus dicetak. ditaati adalah sebagai berikut: Peraturan yang harus Isi node root selalu dicetak pada baris pertama, dan dimulai pada awal baris. Setiap node yang isinya dicetak harus diikuti oleh isi subtree kirinya, lalu diikuti oleh isi subtree kanannya. Isi node anak kiri dan anak kanan selalu dicetak dengan jarak indentasi 5 karakter ke kanan dibandingkan parent-nya. Sebuah subtree kosong dinyatakan dengan mencetak string [NULL]. Harus ada tepat satu baris yang dilongkap antara setiap baris yang berisi isi node. Harus terbentuk garis yang menghubungkan sebuah node dengan kedua anak kiri dan kanannya dengan menggunakan untaian karakter garis tegaklurus ( ), strip ( - ), dan simbol plus ( + ). Agar lebih jelas, lihat contoh di bawah. Sebagai contoh, perhatikan gambar binary tree berikut: Program yang anda buat harus bisa mencetak isi tree ini sesuai dengan ketentuan-ketentuan di atas, sehingga menghasilkan output sebagai berikut: 1 http://en.wikipedia.org/wiki/xml 1

salak +----rambutan +----jeruk +----[NULL] +----manggis +----[NULL] +----[NULL] +----apel +----[NULL] +----[NULL] +----durian +----mangga +----nangka +----[NULL] +----[NULL] +----[NULL] +----pisang +----[NULL] +----[NULL] Anda diberikan sekumpulan file.java di dalam package iki20100.tugas2 sebagai berikut: BinaryTree.java: class ini mendefinisikan sebuah binary tree. BinaryTreeNode.java: class ini mendefinisikan sebuah node pada binary tree. XMLTreeBuilder.java: class ini menyediakan fasilitas untuk me-load sebuah BinaryTree dari sebuah file XML. Untuk bagian pertama ini, anda belum perlu memusingkan diri dengan class XMLTreeBuilder. Anda hanya perlu tahu bahwa ia menyediakan sebuah static method sebagai berikut: public static BinaryTree loadbinarytree(string filename) Jika diberikan pathname sebuah file XML yang berisi definisi binary tree, ia akan mengembalikan instantiation BinaryTree yang sesuai, misalnya: BinaryTree treeku = XMLTreeBuilder.loadBinaryTree("c:/dataku/sda/binarytree1.xml"); Pada class BinaryTree, terdapat method sebagai berikut: public void cetaksaya(string filename) Definisi method ini masih kosong, jadi anda harus melengkapinya agar ia dapat mencetak isi BinaryTree tersebut ke dalam file yang pathname-nya adalah parameter yang diberikan, misalnya: treeku.cetaksaya("c:/dataku/sda/binarytree1.txt"); Jika dirasa perlu, anda juga boleh menambahkan method lain, baik di class BinaryTree maupun BinaryTreeNode. 2

2 Bagian 2: Membaca dan mencetak tree umum Setelah berhasil menyelesaikan bagian pertama di atas, pada bagian kedua ini anda diminta untuk membuat generalisasi dari program di atas, sehingga dapat dihasilkan program yang mencetak isi sebuah tree yang tidak harus bersifat binary tree, atau boleh memiliki n anak, n 0. Peraturan yang harus ditaati sangat mirip dengan peraturan untuk binary tree di atas, namun ada sedikit perbedaan: Isi node root selalu dicetak pada baris pertama, dan dimulai pada awal baris. Setiap node yang isinya dicetak harus diikuti oleh isi semua subtree-nya, dimulai dengan anak pertama, anak kedua, anak ketiga, dan seterusnya. Isi node anak selalu dicetak dengan jarak indentasi 5 karakter ke kanan dibandingkan parent-nya. Subtree kosong tidak dicetak sama sekali. Harus ada tepat satu baris yang dilongkap antara setiap baris yang berisi isi node. Harus terbentuk garis yang menghubungkan sebuah node dengan semua anak-anaknya dengan menggunakan untaian karakter garis tegaklurus ( ), strip ( - ), dan simbol plus ( + ). Agar lebih jelas, lihat contoh di bawah. Sebagai contoh, perhatikan gambar binary tree berikut: Program yang anda buat harus bisa mencetak isi tree ini sesuai dengan ketentuan-ketentuan di atas, sehingga menghasilkan output sebagai berikut: salak +----rambutan +----jeruk +----manggis +----kedondong +----gandaria +----apel +----durian +----mangga +----nangka +----pisang +----nanas Untuk bagian kedua ini, anda harus melakukan hal-hal berikut: Buatlah class Tree dan TreeNode yang mendefinisikan tree dan node pada tree di mana sebuah node bisa memiliki n anak, n 0. Anda dapat menghasilkan kedua class ini dengan sedikit memodifikasi class BinaryTree dan BinaryTreeNode yang sudah ada. 3

Pada class Tree, buatlah method sebagai berikut: public void cetaksaya(string filename) Seperti halnya pada BinaryTree, method ini harus dapat mencetak isi Tree tersebut ke dalam file yang pathname-nya adalah parameter yang diberikan, misalnya: treeku.cetaksaya("c:/dataku/sda/tree1.txt"); Jika dirasa perlu, anda juga boleh menambahkan method lain, baik di class Tree maupun TreeNode. Tambahkan sebuah static method pada class XMLTreeBuilder dengan signature sebagai berikut: public static Tree loadtree(string filename) Jika diberikan pathname sebuah file XML yang berisi definisi tree, method ini harus mengembalikan instantiation Tree yang sesuai, misalnya: Tree treeku = XMLTreeBuilder.loadTree("c:/dataku/sda/tree1.xml"); 3 Format file XML XML (extensible Markup Language) adalah sebuah format standar untuk menyimpan informasi dalam sebuah file. Pada dasarnya, sebuah file XML adalah text file biasa, di mana sepotong teks dapat diawali oleh opening tag dan diakhiri oleh closing tag, dan disebut sebagai elemen. Sebuah elemen dapat terletak di dalam elemen lain yang lebih besar, dan hal ini berarti bahwa sebuah file XML bisa dianggap merepresentasikan informasi yang memiliki struktur tree. Setiap file XML memiliki tepat satu buah root element (kadang disebut document element. Jika membutuhkan informasi lebih banyak mengenai XML, silahkan cari di Google (ada banyak sekali website dengan informasi lengkap mengenai XML). 3.1 Format file binary tree Untuk file XML yang berisi binary tree pada bagian pertama tugas ini, digunakan ketentuan sebagai berikut: Setiap elemen memiliki atribut dengan nama data, yang berisi sebuah string. Setiap elemen dapat memiliki tepat satu elemen left dan tepat satu elemen right. Elemen teratas diberi nama root. Contohnya, file binarytree1.xml berikut mendefinisikan binary tree yang digunakan sebagai contoh pada bagian pertama di atas: <?xml version= 1.0?> <root data="salak"> <left data="rambutan"> <left data="jeruk"> <right data="manggis"/> </left> <right data="apel"/> </left> <right data="durian"> <left data="mangga"> <left data="nangka"/> </left> <right data="pisang"/> </right> </root> 4

3.2 Format file tree Untuk file XML yang berisi tree pada bagian kedua tugas ini, digunakan ketentuan sebagai berikut: Setiap elemen memiliki atribut dengan nama data, yang berisi sebuah string. Setiap elemen dapat memiliki nol atau lebih elemen node. Elemen teratas juga diberi nama node. Contohnya, file tree1.xml berikut mendefinisikan tree yang digunakan sebagai contoh pada bagian kedua di atas: <?xml version= 1.0?> <node data="salak"> <node data="rambutan"> <node data="jeruk"> <node data="manggis"/> <node data="kedondong"/> <node data="gandaria"/> <node data="apel"/> <node data="durian"> <node data="mangga"> <node data="nangka"/> <node data="pisang"/> <node data="nanas"/> 4 Command-line parameter Program anda tidak perlu mengimplementasikan sebuah user interface yang interaktif, melainkan cukup menyediakan fasilitas di mana ia dapat menerima nama file input dan output melalui command-line parameter sebagai berikut: java BinaryTree <pathname file input> <pathname file output> java Tree <pathname file input> <pathname file output> Contohnya, jika program anda dijalankan dengan memanggil perintah java Tree tree1.xml tree1.txt maka program anda akan membaca file input seperti terdefinisi di atas dan menulis isinya secara rapi seperti terdefinisi pada bagian kedua. Perhatikan definisi method main pada class BinaryTree. 5 Catatan dan informasi tambahan Untuk mengimplementasikan class TreeNode, coba pikirkan ADT apa yang paling cocok untuk merepresentasikan sejumlah anak dari node tersebut? Class XMLTreeBuilder menggunakan fasilitas memroses file XML yang sudah disediakan oleh Java. Hanya dengan mempelajari source code-nya, anda mungkin sudah cukup mendapatkan pengertian untuk bisa mengerjakan bagian kedua tugas ini. Pada dasarnya, method private static Document parsefile(string filename) membaca sebuah file XML dan menghasilkan sebuah object org.w3c.dom.document. Object ini berisi sebuah struktur data tree, di mana setiap node merepresentasikan sebuah komponen di dalam file XML. Node yang menyatakan elemen-elemen XML (misalnya, <left data="mangga"/>) adalah instance object org.w3c.dom.element. Pelajari method buildbinarytree yang secara rekursif menghasilkan sebuah BinaryTree berdasarkan informasi dalam sebuah Element XML, dan method-method getchild dan getchildren yang mengembalikan Element dengan nama tag yang spesifik. 5

Berilah komentar yang sejelas mungkin pada program anda. Jadikan komentar yang sudah ada sebagai pedoman. Lihatlah dokumentasi API Java yang tersedia di https://telaga.cs.ui.ac.id/webkuliah/iki20100/docs/api untuk contoh dokumentasi yang baik. Anda TIDAK diperbolehkan menjiplak program lain, baik dari teman atau sumber lain, tanpa mengerti konsep isinya dan bagaimana cara kerjanya. Tentunya anda boleh mendiskusikan tugas ini dengan peserta kuliah lainnya, tetapi program yang anda submit harus merupakan hasil kerja anda sendiri. Peserta yang terbukti men-submit hasil pekerjaan orang lain akan mendapatkan hukuman keras. 6 Komponen penilaian Kebenaran program (output benar untuk test case yang diuji): 40% Kaidah-kaidah pemrograman (modularitas, rekursif, penggunaan generics): 20% Komentar dan dokumentasi program (kejelasan dokumentasi): 40% 7 Pengumpulan tugas Yang perlu dikumpulkan adalah file source code BinaryTree.java, BinaryTreeNode.java, Tree.java, TreeNode.java, dan XMLTreeBuilder.java, diletakkan dalam subdirectory yang sesuai dengan spesifikasi package-nya (iki20100.tugas2). Gabungkan semua file di atas ke dalam sebuah arsip ZIP yang diberi nama NPM anda, mis: 0606123456.zip. Batas akhir pengumpulan tugas adalah jam 16:00, hari Rabu, 14 November 2007. Pengumpulan dilakukan melalui SCeLE (untuk detail-nya, lihat homepage kuliah Struktur Data & Algoritma di SCeLE). Selamat bekerja! 6