Buku Ajar dan Panduan Praktikum Struktur Data Genap / 2014 ... · Buku Ajar dan Panduan Praktikum...

15
Buku Ajar dan Panduan Praktikum Struktur Data Genap / 2014 1 Hermawan, T. Informatika UTM 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)

Transcript of Buku Ajar dan Panduan Praktikum Struktur Data Genap / 2014 ... · Buku Ajar dan Panduan Praktikum...

Buku Ajar dan Panduan Praktikum Struktur Data

Genap / 2014

1

Hermawan, T. Informatika UTM

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)

Buku Ajar dan Panduan Praktikum Struktur Data

Genap / 2014

2

Hermawan, T. Informatika UTM

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.

Buku Ajar dan Panduan Praktikum Struktur Data

Genap / 2014

3

Hermawan, T. Informatika UTM

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)

Buku Ajar dan Panduan Praktikum Struktur Data

Genap / 2014

4

Hermawan, T. Informatika UTM

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,

Gambar 1. Tipe data Integer

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

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);

}

}

Buku Ajar dan Panduan Praktikum Struktur Data

Genap / 2014

5

Hermawan, T. Informatika UTM

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:

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.

Char: A(A) Char B:B

String S:AB

Char A:A

Char B:B

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);

System.out.println("Char A:"+ch_a);

ch_b = s.charAt(1);

System.out.println("Char B:"+ch_b);

}

}

Buku Ajar dan Panduan Praktikum Struktur Data

Genap / 2014

6

Hermawan, T. Informatika UTM

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

Name

Creation Access

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()

Gambar 3. Casting Variabel berbeda tipe data

nilai byte dari karakter a -> byte b: 65

nilai karakter konversi byte b -> char a: A

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);

}

}

Buku Ajar dan Panduan Praktikum Struktur Data

Genap / 2014

7

Hermawan, T. Informatika UTM

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

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.

Type

Str25 = String[25];

TBookRec =

Record

Title, Author,

ISBN : Str25;

Price : Real;

End;

Var

myBookRec : TBookRec;

Buku Ajar dan Panduan Praktikum Struktur Data

Genap / 2014

8

Hermawan, T. Informatika UTM

Contoh penggunaan tipe data abstrak dalam bahasa pemrograman Java:

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

Content of String for integer is: 33

Contents of String are: my age 33

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 );

}

}

Buku Ajar dan Panduan Praktikum Struktur Data

Genap / 2014

9

Hermawan, T. Informatika UTM

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

<key, value>.

Contoh tipe data Array,

Buku Ajar dan Panduan Praktikum Struktur Data

Genap / 2014

10

Hermawan, T. Informatika UTM

Array satu dimensi:

Gambar 6. Koleksi Array Satu Dimensi

9,4,6,1,1,9,3,10,0,5

class Array{

int index = 10;

int [] arr= new int[index];

public void setArray(int val){

for (int i=0;i<val;i++){

Random rand= new Random();

int randomNum = rand.nextInt(val + 1);

arr[i]= randomNum;

System.out.print(randomNum+",");

}

}

public int getArray(int index){

return arr[index];

}

public static void main(String[] arg){

Array myarray = new Array();

myarray.setArray(10);

}

}

Buku Ajar dan Panduan Praktikum Struktur Data

Genap / 2014

11

Hermawan, T. Informatika UTM

Array dua dimensi atau matriks:

Gambar 7. Koleksi Matriks Dua Dimensi

6|9|9|2|6|1|5|8|0|2

9|4|8|7|4|6|8|1|8|9

2|6|2|6|0|6|6|10|1|4

3|4|0|3|10|1|10|9|8|7

1|2|9|6|8|10|10|4|10|7

9|2|6|4|1|3|4|9|9|8

5|7|3|1|6|4|5|0|8|2

6|2|10|4|4|2|0|3|2|10

2|5|5|6|3|5|2|9|1|9

8|8|3|4|9|3|2|7|6|7

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<row;i++){ for (int j=0;j<col;j++){ Random rand= new Random(); int randomNum = rand.nextInt(val + 1); printMatrix(j,col,randomNum); mtr[i][j]= randomNum; } } } public double getMatrix(int row, int col){ return mtr[row][col]; } public void printMatrix(int index,int col, int val){ if(index!=col-1){ System.out.print(val+"|"); } else{ System.out.print(val+"\n"); } } public static void main(String[] arg){ Matrik myMatrik = new Matrik(); myMatrik.setMatrix(10, 10, 10); } }

Buku Ajar dan Panduan Praktikum Struktur Data

Genap / 2014

12

Hermawan, T. Informatika UTM

Koleksi List & Map

Gambar 8. Koleksi List dan Map

adi|technic|1

eko|technic|3

zaid|technic|5

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<result.size(); i++){ System.out.println(result.get(i).toString()); } } }

Buku Ajar dan Panduan Praktikum Struktur Data

Genap / 2014

13

Hermawan, T. Informatika UTM

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:

Buku Ajar dan Panduan Praktikum Struktur Data

Genap / 2014

14

Hermawan, T. Informatika UTM

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:

class mahasiswa

Studi

- fakultas: String

- prodi: String

Mahasiswa

- alamat: String

- nama: String

- tingkat: int

Prestasi

- ip: double

- semester: int1..*1

0..*

1

Buku Ajar dan Panduan Praktikum Struktur Data

Genap / 2014

15

Hermawan, T. Informatika UTM

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