MODUL PRAKTIKUM BASIS DATA PENGENALAN STRUKTUR DATA DAN KOMPLEKSITAS WAKTU

dokumen-dokumen yang mirip
MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA STACK

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA QUEUE

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

Gambar 1. Langkah-langkah pengurutan metode Insertion Sort (1)

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA BUBBLE SORT, SELECTION SORT, INSERTION SORT

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

Tes Asisten Praktikum Alpro Lanjut

Pertemuan 4 Halaman 1/1. Class Inheritance

Politeknik Elektronika Negeri Surabaya

SORTING DENGAN ALGORITMA DIVIDE AND CONQUER

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

Sequential Search (Linear Search)

Pemrograman. Pertemuan-3 Fery Updi,M.Kom

KARAKTERISTIK PEMROGRAMAN BERORIENTASI OBJEK (OOP) Pemrograman berorientasi Objek mempunyai karakterisitik sebagai berikut:

Politeknik Elektronika Negeri Surabaya

MODUL III ARRAYLIST TUGAS PENDAHULUAN

Politeknik Elektronika Negeri Surabaya

Politeknik Elektronika Negeri Surabaya

ANALISA RUNNING TIME

Bahasa Pemrograman :: Polimorfism and Abstraction

Algoritma dan Struktur Data. Queue

Politeknik Elektronika Negeri Surabaya

LAPORAN RESMI INHERITANCE

Metode Binnary Searching di Java Console

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

Inheritance dan Kata Kunci static

BAB VIII Pencarian(Searching)

Gambar 13.1 Ilustrasi proses algoritma sorting

BAHASA PEMROGRAMAN JAVA

BAHASA PEMROGRAMAN JAVA PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM YOGYAKARTA

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA GENERIC DAN IMPLEMENTASI COMPARETO()

LAPORAN RESMI PRAKTIKUM PEMROGRAMAN BERBASIS OBJEK (PBO) MODUL 5 INTERFACE

KENDALI PROSES. Untuk mengatur arus program, pemrograman java menyediakan struktur perulangan (looping), kondisional, percabangan, dan lompatan.

Membuat dan Menggunakan Class

PERCOBAAN 6 EXCEPTION

Politeknik Elektronika Negeri Surabaya

Konsep Lanjut Pemrograman Objek

Struktur Kontrol Pemrograman Java : PERCABANGAN

Arrays. Misalkan kita ingin menyimpan 100 buah integer Buat 100 variabel bertipe integer. Tidak efisien!

Praktikum Pemrograman. Pengantar OOP STMIK AMIKOM YOGYAKARTA. Bayu Setiaji, S.Kom

LAPORAN PRAKTIKUM ALGORITMA DAN PEMROGRAMAN ( Implementasi Rekursi Pada Java)

Percobaan 6 Exception

IF PEMROGRAMAN LANJUT ARRAY. Oleh : Andri Heryandi, M.T.

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

LAPORAN PRAKTIKUM PEMROGRAMAN DASAR TIPE-TIPE FUNGSI ATAU METHOD

PEMROGRAMAN BERORIENTASI OBJEK

Pemrograman Berorientasi. Class dan Obyek 2

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

PEMAHAMAN DASAR DASAR JAVA

Belajar ArrayList di Java

BAHASA PEMROGRAMAN. Untuk SMK. Kadarisman Tejo Yuwono Totok Sukardiyono Adi Dewanto. : Ratu Amilia Avianti. Perancang Kulit

IKG2I4 / Software Project I

Insertion Sort Dengan Algoritma Divide And Conquer

2 TIPE DATA DAN VARIABEL

PRAKTIKUM PEMROGRAMAN LANJUT MODUL 1

IKG2I4 / Software Project I

Operator, Statement kondisional, dan Iterasi pada Java

IKG2I4 / Software Project I

1. Latar Belakang Didalam pembuatan game java sering kali kita mendefinisikan banyak object seperti gambar, dan grafik geometri yang begitu banyak,

Modul 4: Iteratif & Rekursif, Binary Tree

Menghitung Inversion Pada Barisan Dengan Menggunakan Modifikasi Bubble Sort, Insertion Sort, dan Merge Sort

PERTEMUAN 2 ARRAY, PERCABANGAN, DAN PERULANGAN

Modul Praktikum 3 Pemograman Berorientasi Objek

TUGAS DASAR PEMROGRAMAN KELAS C DOSEN PENGAMPU : IKA ATSARI DEWI, STP, MP

INHERITANCE AND POLIMORPHISM PUTU INDAH CIPTAYANI JURUSAN SISTEM INFORMASI STMIK AMIKOM

MODUL 3. Inheritance, Abstract Class, Interface TUJUAN PRAKTIKUM LANDASAN TEORI. A. Inheritance

Pemrograman Berbasis Objek Operator dan Assignment

A. TUJUAN PEMBELAJARAN

SATUAN ACARA PERKULIAHAN(SAP)

Konsep Dasar Pemrograman Berorientasi Objek

Pemrograman Berorientasi Objek Danu Wira Pangestu

1. Mana diantara pilihan-pilihan berikut ini yang merupakan penulisan loop yang benar?

Metode Insertion Sort di Java Console

Pemrograman Lanjut. Class : Deeper Look 2

Grouping Object. Viska Mutiawani, M.Sc

Inheritance (Pewarisan) Pengertian dasar inheritance

Pemrograman Berorientasi Objek / Object Oriented Programming / (OOP) Nur Hasanah, M.Cs

TIPE DATA PADA JAVA. Pertemuan (K-04/L-04)

Polymorphism (Polimorfisme)

Modul Praktikum Algoritma dan Struktur Data

Bab 8 Array. x=a[9]; Untuk memasukkan data ke dalam array, sintak yang digunakan adalah : a[nomor_elemen] = data;

Modul Praktikum 4 Pemograman Berorientasi Objek

Algoritma dan Struktur Data

Overriding. Subclass yang berusaha memodifikasi tingkah laku yang diwarisi dari superclass. Tujuan: subclass memiliki tingkah laku yang lebih

Bahasa Pemrograman :: Inheritance

Dasar Pemrograman Java

1.Tujuan. 2. Latar Belakang. Mendefinisikan superclasses dan subclasses Override method dari superclasses Membuat method final dan class final

Pada akhir pembahasan, peserta diharapkan mampu untuk:

MODUL 9 EXCEPTION HANDLING

Obyektif : KONTROL ALUR PROGRAM

MODUL 3 PEWARISAN TUJUAN DASAR TEORI

Politeknik Elektronika Negeri Surabaya

Operator dan Assignment

SEKUEN, PERCABANGAN & PENGULANGAN

LAB PEMROGRAMAN I (JAVA FUNDAMENTAL) PERTEMUAN 3 Dosen : Bella Hardiyana S. Kom

5.Buatlah subclass world, beri nama subclass word :latar.pilih jalan.png sebagai image. Compile.

Pencarian pada Array. Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer UDINUS Semarang

Penggunaan Algoritma Backtrack dan Aturan Warnsdorff Untuk Menyelesaikan Knight s Tour Problem

Praktikum 4 Konsep Inheritance, Polymorphism, dan Encapsulation

Transkripsi:

Deskripsi Singkat MODUL PRAKTIKUM BASIS DATA PENGENALAN STRUKTUR DATA DAN KOMPLEKSITAS WAKTU Praktikum struktur data dan algoritma adalah praktikum yang mendukung mata kuliah struktur data dan algoritma. Praktikum ini akan menggunakan bahasa pemrograman Java sehingga mata kuliah Pemrograman Berorientasi Objek merupakan prasyarat bagi mata kuliah ini. Dalam istilah ilmu komputer, sebuah struktur data adalah cara penyimpanan, penyusunan dan pengaturan data di dalam media penyimpanan komputer sehingga data tersebut dapat digunakan secara efisien. Dalam matematika dan komputasi, algoritma merupakan kumpulan perintah untuk menyelesaikan suatu masalah. Perintah-perintah ini dapat diterjemahkan secara bertahap dari awal hingga akhir. Masalah tersebut dapat berupa apa saja, dengan catatan untuk setiap masalah, ada kriteria kondisi awal yang harus dipenuhi sebelum menjalankan algoritma. Algoritma sering mempunyai langkah pengulangan (iterasi) atau memerlukan keputusan (logika Boolean dan perbandingan) sampai tugasnya selesai. Kompleksitas dari suatu algoritma merupakan ukuran seberapa banyak komputasi yang dibutuhkan algoritma tersebut untuk menyelesaikan masalah. Secara informal, algoritma yang dapat menyelesaikan suatu permasalahan dalam waktu yang singkat memiliki kompleksitas yang rendah, sementara algoritma yang membutuhkan waktu lama untuk menyelesaikan masalahnya mempunyai kompleksitas yang tinggi. Tujuan 1. Membuat class ArrayTerurut dan ArrayTakTerurut beserta dengan method searchingnya. 2. Membuktikan kompleksitas waktu sequential searching dan binary searching. Materi 1 : Class ArrayTerurut, class ArrayTakTerurut dan Method Searching Pertama sekali kita akan memanfaatkan konsep inheritance dan abstract class untuk membuat hirarki class Arrays yang kemudian akan kita bedakan menjadi class ArrayTerurut dan class ArrayTakTerurut. Class Arrays digunakan untuk memaksa class turunannya untuk meng-override method insert dan delete. Class Arrays juga digunakan untuk membuat method display yang akan berlaku bagi semua subclass. Berikut code class Arrays. public abstract class Arrays // instance variables - replace the example below with your own //menampilkan semua data dalam array public void display(double[] a, int n)

for(int i=0; i<n; i++) System.out.println(a[i]); //method abstract untuk memasukkan data, //implementasinya pada subclass public abstract void insert(double value); //method abstract untuk menghapus data, //implementasinya pada subclass public abstract void delete(double value); Class ArrayTakTerurut merupakan tempat untuk menyimpan data bertipe double yang tidak terurut. Class ini memiliki method sequential searching (linear searching). Class ArrayTakTerurut merupakan subclass dari class Arrays sehingga class ini harus meng-override method insert dan delete. Berikut code class ArrayTakTerurut. public class ArrayTakTerurut extends Arrays // instance variables - replace the example below with your own private double[] a; // ref to array a private int nelems; // number of data items /** * Constructor for objects of class ArrayTakTerurut */ public ArrayTakTerurut(int max) // initialise instance variables a = new double[max]; // create the array nelems = 0; // no items yet //mengembalikan jumlah data yang ada dalam array public int size() return nelems; //menampilkan semua data dalam array public void display() super.display(a, nelems); //sequential searching. Mencari data dengan mencari data satu per satu public int sequentsearch(double searchkey)

int n = nelems; int i = 0; while(i < n) if(a[i] == searchkey) return i; i++; return n; @Override public void insert(double value) a[nelems] = value; nelems++; @Override public void delete(double value) int posisiindeks = this.sequentsearch(value); if(posisiindeks == nelems) System.out.println("Posisi data yang dihapus tidak ditemukan."); else //hapus data dengan menurunkan semua data for(int i=posisiindeks; i<nelems; i++) a[posisiindeks] = a[posisiindeks+1]; nelems--; Class ArrayTerurut merupakan tempat untuk menyimpan data bertipe double yang terurut. Untuk sementara class ini belum memiliki method sorting, sehingga saat class ini digunakan diharapkan data yang dimasukkan dalam keadaan terurut. Class ini memiliki method binary searching. Class ArrayTerurut merupakan subclass dari class Arrays sehingga class ini harus meng-override method insert dan delete. Berikut code class ArrayTerurut. public class ArrayTerurut extends Arrays // instance variables - replace the example below with your own private double[] a; // ref to array a

private int nelems; // number of data items /** * Constructor for objects of class ArrayTerurut */ public ArrayTerurut(int max) // initialise instance variables a = new double[max]; // create the array nelems = 0; // no items yet //mengembalikan jumlah data yang ada dalam array public int size() return nelems; //menampilkan semua data dalam array public void display() super.display(a, nelems); //binary searching. Mencari data dengan membagi dua public int binarysearch(double searchkey) int lowerbound = 0; int upperbound = nelems-1; int curin; while(true) curin = (lowerbound + upperbound ) / 2; if(a[curin]==searchkey) return curin; // found it else if(lowerbound > upperbound) return nelems; // can't find it else // divide range if(a[curin] < searchkey) lowerbound = curin + 1; // it's in upper half else upperbound = curin - 1; // it's in lower half // end else divide range // end while @Override public void insert(double value) int j;

for(j=0; j<nelems; j++) // find where it goes if(a[j] > value) // (linear/sequential search) break; //naikkan ke atas dulu untuk memasukkan data for(int k=nelems; k>j; k--) a[k] = a[k-1]; a[j] = value; // insert it nelems++; // increment size @Override public void delete(double value) int posisiindeks = this.binarysearch(value); if(posisiindeks == nelems) System.out.println("Posisi data yang dihapus tidak ditemukan."); else //hapus data dengan menurunkan semua data for(int i=posisiindeks; i<nelems; i++) a[posisiindeks] = a[posisiindeks+1]; nelems--; Kemudian kita buat class yang akan menggunakan class array tersebut di atas. Saat ini kita hanya akan mencoba memasukkan data (insert), menghapus data (delete) dan menampilkan data (display). Berikut contoh codenya. public class SearchingApp public static void main(string[] args) int maxsize = 20; //ukuran array //mencipta objek arrayterurut ArrayTerurut arr = new ArrayTerurut(maxSize); //mencipta objek arraytakterurut ArrayTakTerurut arrt = new ArrayTakTerurut(maxSize); //masukkan 5 data terurut ke dalam arr int k = 1; for(int i=0; i<5; i++)

arr.insert(k); k++; arr.display(); //masukkan 5 data acak ke dalam arrt for(int i=0; i<100000; i++) int x = 1 + (int) (Math.random() * 10); arrt.insert(x); arrt.display(); arr.delete(15.0); arr.display(); arrt.delete(15.0); arrt.display(); Materi 2 : Pembuktian Kompleksitas Waktu Dua Metode Searching Kali ini kita akan membuktikan kompleksitas waktu antara metode pencarian sekuensial dan pencarian binary. Secara teori, pencarian binary lebih cepat yaitu O(log n), sedangkan pencarian sekuensial O(n). Untuk pengujian tersebut kita akan membuat class TimeInterval yang berguna untuk menghitung interval waktu. Berikut code programnya. public class TimeInterval // instance variables - replace the example below with your own private long starttime, endtime; private long elapsedtime; // Time Interval in milliseconds /** * Constructor for objects of class TimeInterval */ public TimeInterval() // initialise instance variables //method untuk memulai menghitung waktu public void starttiming() elapsedtime = 0; starttime = System.currentTimeMillis(); //method untuk mengakhir penghitungan waktu

public void endtiming() endtime = System.currentTimeMillis(); elapsedtime = endtime - starttime; //method untuk mengembalikan interval waktu public double getelapsedtime() return (double) elapsedtime / 1000.0; Ubah method main pada class SearchingApp seperti code di bawah. int maxsize = 100; //ukuran array double nilaidicari = 13.0; int posisi = 0; //mencipta objek arrayterurut ArrayTerurut arr = new ArrayTerurut(maxSize); //mencipta objek arraytakterurut ArrayTakTerurut arrt = new ArrayTakTerurut(maxSize); //mencipta objek timeinterval untuk menghitung interval waktu TimeInterval ti = new TimeInterval(); //masukkan 100 data terurut ke dalam arr int k = 1; for(int i=0; i<maxsize; i++) arr.insert(k); k++; //arr.display(); //masukkan 100 data acak ke dalam arrt for(int i=0; i<maxsize; i++) int x = 1 + (int) (Math.random() * 10); arrt.insert(x); //arrt.display(); search //membuktikan kompleksitas waktu sequential search dan binary ti.starttiming(); posisi = arrt.sequentsearch(nilaidicari); ti.endtiming();

System.out.println("Posisi " +nilaidicari+ " di posisi " +posisi); System.out.println("Waktu yang diperlukan oleh sequential search: " +ti.getelapsedtime()); ti.starttiming(); posisi = arr.binarysearch(nilaidicari); ti.endtiming(); System.out.println("Posisi " +nilaidicari+ " di posisi " +posisi); System.out.println("Waktu yang diperlukan oleh binary search: " +ti.getelapsedtime()); LATIHAN 1 Untuk mencari interval waktu ini, kita akan memulai dari array dengan maxsize=100, cek hasilnya. Jika tidak ada perbedaan waktu, naikkan menjadi 1000, cek kembali. Naikkan kembali menjadi 10000, 100000, 1000000, 1000000. Catat perubahan waktu untuk masing-masing metode searching seperti tabel di bawah. Ukuran array (maxsize) Waktu sequential searching Waktu binary searching 100 1000 10000 100000 1000000 10000000 Apakah yang dapat anda simpulkan? LATIHAN 2 Kemudian hitung interval waktu untuk proses insert dan delete pada ArrayTerurut juga ArrayTakTerurut. Jika belum tampak perbedaan pada data yang kecil, ubah ukuran array (maxsize) menjadi lebih besar. Lalu amati perubahan pada masing-masing class ArrayTerurut dan ArrayTakTerurut. SOAL-SOAL 1.