Buku Ajar dan Panduan Praktikum Struktur Data Genap / 2014
Buku Ajar & Panduan Praktikum STRUKTUR DATA Tujuan, 1. Mahasiswa dapat memahami implementasi struktur data & algoritma pemrograman 2. Mahasiswa dapat mengimplementasikan struktur data secara efisien untuk membangun informasi secara dinamis 3. Mahasiswa dapat mengimplementasikan pemrograman Java dan Tools pendukungnya
Modul Praktikum, 1. Tipe data Primitif, Abstrak dan Collection 2. Manipulasi String dan File 3. Dynamic List, Stack & Queue 4. Binary Tree 5. Searching dan Sorting 6. Tree, Graph & Traversal
Kebutuhan Software, 1. Java IDE :Netbeans Minimum V.6.0 atau Java Creator 2. Java Minimum SDK V.1.6 (direkomendasikan JDK keluaran SUN Oracle)
1 Hermawan, T. Informatika UTM
Buku Ajar dan Panduan Praktikum Struktur Data Genap / 2014
Literatur, 1. Mark A l l e n Weiss. Data Structures and Algorithm Analysis in Java, Florida International University, Pearson 2012. 2. Michael T. Goodrich, Roberto Tamassia. Data Structures and Algorithms in Java Fifth Edition International Student Version , Department of Computer Science University of California, Irvine, John Willey & Son 2011.
2 Hermawan, T. Informatika UTM
Buku Ajar dan Panduan Praktikum Struktur Data Genap / 2014
Modul 1: Tipe data Primitif, Abstrak Dan Koleksi Tujuan Instruksi Khusus:
Mahasiswa dapat memahami penggunaan tipe data baik primitif, abstrak dan Koleksi
Mahasiswa dapat memahami penggunaan bahasa pemrograman Java secara sederhana dan Tools yang digunakan.
Teori Pada umumnya dalam setiap bahasa pemrograman berorientasi obyek terdapat tiga level tipe data, yaitu: 1. Tipe data primitif 2. Tipe data abstrak (Obyek) 3. Tipe data Collection
Tipe data Primitif Tipe data Primitif mulai dikenal pada bahasa pemrograman prosedural seperti: Pascal, C, atau Basic. Dimana tipe data ini memiliki ukuran memori yang tetap dan pasti, diantaranya: Integer : byte (8 byte), short (16 b), int (32 b), long (64 b) Floating point: float (32 byte), double(64 b), decimal(128 b), bigDecimal(256 b) Booleans: boolean(1 bit) Characters: char(1 byte) 3 Hermawan, T. Informatika UTM
Buku Ajar dan Panduan Praktikum Struktur Data Genap / 2014
String: (koleksi dari char )
Kita dapat melakukan pengujian penggunaan memori dari tipe data primitif, sebagaimana contoh pada listing bahasa pemrograman java berikut pada Gambar 1, Class IntegerTest{ public static void main(String[] args) { double d = Math.pow(2, 30); int i = (int)d; System.out.println("30 byte of integer used:"+i); System.out.println("30 byte of integer used:"+d); d = Math.pow(2, 32); i = (int)d; System.out.println("32 byte of integer used:"+i); d = Math.pow(2, 64); i = (int)d; System.out.println("64 byte of integer used:"+i); } } 30 byte of integer used:1073741824 30 byte of integer used:1.073741824E9 32 byte of integer used:2147483647 64 byte of integer used:2147483647 Gambar 1. Tipe data Integer
4 Hermawan, T. Informatika UTM
Buku Ajar dan Panduan Praktikum Struktur Data Genap / 2014
Dari listing program dan pengujiannya didapatkan bahwasanya ukuran memori untuk integer int(32 byte), sehingga apabila ditambahkan melebihi kapasitasnya akan berhenti pada nilai 2147483647 yang merupakan 232 – 1 yang mewakili nilai maksimal dari 32 byte. Contoh program lainnya Gambar 2 untuk operasional karakter dan string pada tipe data primitif: public class CharTest { public static void main(String[] arg){ char ch_a = 'A'; char ch_b = 'B'; char ch_c = 'ABC'; System.out.println("Char: A("+ch_a+") Char B:"+ch_b); String s = Character.toString(ch_a)+Character.toString(ch_b); System.out.println("String S:"+s); ch_a = s.charAt(0); A:"+ch_a); Char:System.out.println("Char A(A) Char B:B ch_b = s.charAt(1); String S:AB B:"+ch_b); CharSystem.out.println("Char A:A } B:B Char }
Gambar 2. Tipe data Karakter
Dari listing program Gambar 2 ditunjukkan hasil bahwasanya tipe data char hanya bisa diberikan satu karakter, sedangkan String merupakan set kumpulan dari karakter yang berindeks.
5 Hermawan, T. Informatika UTM
Buku Ajar dan Panduan Praktikum Struktur Data Genap / 2014
Operasional tipe data primitif terbatas pada jenis tipe datanya, sehingga diperlukan konversi atau Casting untuk merubahnya apabila dibutuhkan penggabungan operasional pada tipe data. Base Type
Class
Creation
Access
Name byte
Byte
n = new Byte((byte)34);
n.byteValueOf()
short
Short
n = new Short((short)10);
n.shortValueOf()
int
Integer
n = new Integer(1045);
n.intValueOf()
long
Long
n = new Long(10849L);
n.longValueOf()
float
Float
n = new Float(3.934F);
n.floatValueOf()
double
Double
N = new Double{3.934};
n.doubleValueOf()
Public class Casting { public static void main(String[] arg){ char ch_a = 'A'; byte b = (byte)ch_a; ch_a = (char)b; System.out.println("nilai byte dari karakter a -> byte b: "+b); System.out.println("nilai karakter konversi byte b -> char a: "+ch_a); } } nilai byte dari karakter a -> byte b: 65 nilai karakter konversi byte b -> char a: A
Gambar 3. Casting Variabel berbeda tipe data 6 Hermawan, T. Informatika UTM
Buku Ajar dan Panduan Praktikum Struktur Data Genap / 2014
Tipe Data Abstrak (Obyek) Tipe data Obyek mulai digunakan pada pemrograman prosedural pascal ataupun C dengan penggunaan tipe data abstrak dan pointer, yaitu record, struct untuk tipe data kelompok serta pointer untuk penciptaan tipe data dinamis. Pada perkembangannya bahasa pemrograman berorientasi obyek menggunakannya untuk tipe data Obyek dimulai pada bahasa pemrograman LISP dan kemudian disusul Java. Tipe data ini dapat merepresentasikan kelompok tipe data dengan beragam tipe primitif yang bisa diciptakan secara dinamis:
Contoh untuk Pascal Type Str25 = String[25]; TBookRec = Record Title, Author, ISBN : Str25; Price : Real; End; Var myBookRec : TBookRec;
Gambar 4. Tipe data Abstrak menggunakan Record pada Pemrograman Bahasa Pascal Sedangkan pada Java yang sepenuhnya berbasis obyek dengan menggunakan Class dimana obyek tidak hanya atribut variabel tetapi juga methode. 7 Hermawan, T. Informatika UTM
Buku Ajar dan Panduan Praktikum Struktur Data Genap / 2014
Contoh penggunaan tipe data abstrak dalam bahasa pemrograman Java: public class ObyekADT{ Object storedValue; public Object read( ) { return storedValue; } public void write( Object x ) { storedValue = x; } public static void main(String[] args) { ObyekADT adt1 = new ObyekADT(); adt1.write(33); String vi = (String) adt1.read().toString(); System.out.println( "Contents of String for integer is: " + vi ); ObyekADT adt2 = new ObyekADT(); adt2.write( "my age " ); String vs = (String) adt2.read(); System.out.println( "Contents of String are: " + vs + vi ); } } Content of String for integer is: 33 Contents of String are: my age 33 Gambar 5. Tipe data Abstrak menggunakan Object Java Dari hasil listing Gambar 5 didapatkan bahwasanya tipe data abstrak dapat diberikan masukan baik berupa angka Integer ataupun String sehingga bersifat
8 Hermawan, T. Informatika UTM
Buku Ajar dan Panduan Praktikum Struktur Data Genap / 2014
dinamis. Karena itu tipe data abstrak memiliki ukuran memori yang dinamis atau adaptif sesuai dengan masukan yang diberikan.
Tipe data Koleksi (Collection) Koleksi adalah tipe data yang berupa rangkaian atau kumpulan data ataupun obyek yang berindeks. Terdapat tiga tipe dasar koleksi di Java yaitu: 1. Array, koleksi statis dengan ukuran tetap dan hanya bisa mengelompokkan tipe data yang sama. 2. List, koleksi dinamis dengan ukuran adaptif dan bisa mengelompokkan tipe data yang sama ataupun berbeda 3. Map, koleksi dinamis dengan ukuran adaptif dan bisa mengelompokkan tipe data yang sama ataupun berbeda dengan menggunakan pasangan
. Contoh tipe data Array,
9 Hermawan, T. Informatika UTM
Buku Ajar dan Panduan Praktikum Struktur Data Genap / 2014
Array satu dimensi: class Array{ int index = 10; int [] arr= new int[index]; public void setArray(int val){ for (int i=0;i
Gambar 6. Koleksi Array Satu Dimensi
}
10 Hermawan, T. Informatika UTM
Buku Ajar dan Panduan Praktikum Struktur Data Genap / 2014
Array dua dimensi atau matriks: public class Matrik { int bar = 10; int kol = 10; double [][] mtr = new double[bar][kol]; public void setMatrix(int row,int col, int val){ for (int i=0;i
11
Buku Ajar dan Panduan Praktikum Struktur Data Genap / 2014
Koleksi List & Map import java.util.ArrayList; import java.util.HashMap; import java.util.List; public class Student { String name; String faculty; int level; static List listOfStudents = new ArrayList(); public String toString(){ return this.name+"|"+this.faculty+"|"+this.level; } Student(String pname, String pfaculty, int plevel){ this.name=pname; this.faculty=pfaculty; this.level=plevel; } public static void main(String[] args) { HashMap<String, List> mapOfStudents = new HashMap<String,List>(); List<Student> ls = new ArrayList<>(); Student s = new Student("adi", "technic", 1); ls.add(s); s = new Student("eko", "technic", 3); ls.add(s); s = new Student("zaid", "technic", 5); ls.add(s); mapOfStudents.put("mahasiswa teknik", ls);
}
}
List result = mapOfStudents.get("mahasiswa teknik"); for(int i=0; i
adi|technic|1 eko|technic|3 zaid|technic|5 Gambar 8. Koleksi List dan Map 12 Hermawan, T. Informatika UTM
Buku Ajar dan Panduan Praktikum Struktur Data Genap / 2014
Instruksi Praktikum, 1. Pelajari teori terkait pembahasan, dan lakukan pengujian kode program untuk mengerti pembahasan terkait dan implementasi pemrogramannya
Tugas Pendahuluan, 1. Jawablah Pertanyaan berikut terkait tipe data primitif dan tipe data abstrak:
Apa yang dimaksud dengan tipe data primitif dan tipe data abstrak,
jelaskan perbedaan antara kedua tipe data tersebut
Kapan anda bisa mengimplementasikan keduanya...?
2. Apa yang dimaksud dengan koleksi, sebutkan dan jelaskan tipe data koleksi tersebut...!
Tugas Praktikum, 1. Buatlah program java untuk pemetaan data mahasiswa yang memiliki daftar nilai prestasi akademik tiap semesternya sebagaimana ditunjukkan pada class diagram berikut:
13 Hermawan, T. Informatika UTM
Buku Ajar dan Panduan Praktikum Struktur Data Genap / 2014
class mahasisw a
Studi -
fakultas: String prodi: String 1 0..*
Mahasisw a -
alamat: String nama: String 1 tingkat: int
Prestasi 1..* -
ip: double semester: int
Gunakan konsep tipe data primitif, abstrak dan koleksi untuk mengolah entitas tersebut, sesuai dengan ketentuan yang diinginkan:
Program studi memiliki banyak mahasiswa, dan tiap-tiap mahasiswa memiliki daftar prestasi akademik tiap semesternya.
Tampilkan operasional program sehingga menghasilkan Struktur tampilan, sebagaimana contoh berikut:
14 Hermawan, T. Informatika UTM
Buku Ajar dan Panduan Praktikum Struktur Data Genap / 2014
Fakultas Teknik Prodi Informatika nama: Ahmad Haris nim : 120411100001 alamat: Surabaya tingkat: 4 IP semester 1 : 3.9 IP semester 2 : 3.4 IP semester 3 : 3.7 IP semester 4 : 3.8 nama: Nanda Nahdlyatur nim : 130411100002 alamat: Lamongan tingkat: 2 IP semester 1 : 3.8 IP semester 2 : 3.5
15 Hermawan, T. Informatika UTM