Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][]...

35

Transcript of Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][]...

Page 1: Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][] matrik = new double ... pembeda fungsi dan prosedur hanya ada dan tidak adanya nilai
Page 2: Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][] matrik = new double ... pembeda fungsi dan prosedur hanya ada dan tidak adanya nilai

Contents Modul 1: Flowchart & PseudoCode ............................................................................................... 3

Modul 2: Pengantar Bahasa JAVA ............................................................................................... 12

Modul 3: Java Matrik .................................................................................................................... 20

Modul 4: Sorting ........................................................................................................................... 24

Modul 5: Binary Sorting dan Searching ....................................................................................... 30

Page 3: Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][] matrik = new double ... pembeda fungsi dan prosedur hanya ada dan tidak adanya nilai

Buku Ajar & Panduan Praktikum STRUKTUR DATA

Tujuan, 1. Mahasiswa dapat memahami alur algoritma pemrograman menggunakan flowchart dan

pseudocode

2. Mahasiswa dapat mengimplementasikan Mahasiswa dapat mengimplementasikan

pemrograman Java dan Tools pendukungnya untuk menyelesaikan program komputasi.

Modul Praktikum, 1. Flowchart dan Pseudocode

2. Pengantar Bahasa Java

3. Array dan matriks

4. Sorting

5. Binary Searching dan Sorting

6. Threading

Kebutuhan Software, 1. Java IDE :Netbeans Minimum V.6.0 atau Java Creator

2. Microsoft office atau Visio

3. Java Minimum SDK V.1.6 (direkomendasikan JDK keluaran SUN Oracle)

Page 4: Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][] matrik = new double ... pembeda fungsi dan prosedur hanya ada dan tidak adanya nilai

Modul 1: Flowchart & PseudoCode Tujuan Instruksi Khusus:

• Mahasiswa dapat memahami penggunaan standar diagram flowchart

• Mahasiswa dapat memahami penggunaan diagram flowchart untuk alur algoritma

Teori

1.1 Diagram Logika Flowchart

Untuk menggambarkan alur logika dalam komputasi digunakan standar dasar pemodelan

yaitu menggunakan flowchart. Flowchart menunjukkan aliran proses dari awal sampai

penyelesaian komputasi. Dalam standar yang lebih kompleks flowchart juga dapat dimodelkan

dalam Unified Modelling Language (UML) yaitu menggunakan diagram activity. Dimana

diagram activy adalah flowchart yang melibatkan berbagai interaksi pengguna ataupun domain

sistem.

Standar model flowchart,

Simbol Proses lojik

Process

Menunjukkan tahapan berjalannya proses

komputasi

Predefined

Process

Menunjukkan subproses atau subrutin dari

berjalannya proses, atau proses didalam

proses

Preparation

Menunjukkan langkah perulangan dari

aliran suatu proses

Decision

Menunjukkan alternatif pemilihan

keputusan proses

Page 5: Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][] matrik = new double ... pembeda fungsi dan prosedur hanya ada dan tidak adanya nilai

Alternate

Menunjukkan proses alternatif yang bisa

digunakan diluar proses normal

Delay

Menunjukan penundaan proses

Manual Operation

Menunjukkan proses manual yang

dilakukan oleh pengguna

Simbol Koneksi

Flow

Menunjukkan arah dan hubungan antar

proses

Terminator

Menunjukkan akhir selesainya

keseluruhan proses

Connector

Menunjukkan hubungan antar bagian

proses yang terputus

Or

Menunjukkan proses yang berbeda

Sum

Menunjukkan campuran proses yang bisa

berjalan bersamaan

Merge

Menunjukan penggabungan proses

Extract

Menunjukkan pemisahan

Page 6: Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][] matrik = new double ... pembeda fungsi dan prosedur hanya ada dan tidak adanya nilai

Simbol Input-Output

Data

Memberikan parameter input dan

menghasilkan output (I/O)

Manual Input

Input manual

Display

Menunjukkan tampilan di Layar

Document

Menunjukkan output dokumen manual

1.2 Flowchart Algoritma

Untuk menunjukkan proses algoritma pemrograman sehingga mudah untuk dimengerti

dapat menggunakan standar flowchart.

Percabangan,

Percabangan Kondisi

Terpenuhi?

Aksi 1

Aksi lain

Y

T

a

b

Page 7: Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][] matrik = new double ... pembeda fungsi dan prosedur hanya ada dan tidak adanya nilai

Contoh logika,

• Jika suhu panas pakailah T-Shirt berwarna cerah, Jika suhu dingin pakailah jaket

berwarna gelap.

Perulangan

Contoh logika,

• Selama 10 jam belajarlah didepan laptop untuk menguasai pemrograman.

• Sejauh 10 langkah kedepan cobalah lihat kanan-kiri untuk mencari kunci motormu

yang hilang.

Kondisi Terpenuhi

Aksi

Y

T

Selama Kondisi

b

c

Page 8: Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][] matrik = new double ... pembeda fungsi dan prosedur hanya ada dan tidak adanya nilai

Contoh implementasi,

Dari masukan bilangan bulat 1..10 tentukan keluaran bilangan ganjil, dan genap.

Mulai

Masukan bilangan bulat input 1..10

input modulus 2 == 0 ?

Masukkan daftar bilangan genap

Y

T

Selama Kondisi input

1 10

Input <= 10 ?

Tampilkan bilangan genap

Tampilkan bilangan ganjil

Masukkan daftar bilangan ganjil

Selesai

Page 9: Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][] matrik = new double ... pembeda fungsi dan prosedur hanya ada dan tidak adanya nilai

1.3 PseudoCode

Pseudocode adalah metode penulisan bahasa inggris sederhana yang merepresentasikan

lojik algoritma pemrograman. Pseudo berarti tiruan, sedangkan Code adalah kode program

sehingga pseudocode bisa disebut sebagai kode tiruan dari program sebenarnya yang dituliskan

dalam standar bahasa inggris untuk mendekatkan dengan perintah-perintah yang terdapat pada

bahasa pemrograman.

Pada dasarnya struktur pseudocode hanya dibagi atas 6 perintah yaitu :

1. Sequence, memiliki cakupan perintah yang luas untuk perintah eksekusi proses,contoh

diantara kata kunci yang sering digunakan

Input: READ, OBTAIN, GET

Contoh: READ height; READ Weights; OBTAIN range; GET radius

Output: PRINT, DISPLAY, SHOW

Perhitungan: COMPUTE, CALCULATE, DETERMINE

Inisialisasi: SET, INIT

Counter: INCREMENT, DECREMENT, DELAY

2. While, digunakan untuk menyatakan perulangan dengan pengujian kondisi diawal (*lebih

sesuai untuk perulangan tanpa batas yang tetap)

Contoh:

WHILE condition

Sequence

ENDWHILE

3. If-Then-Else, digunakan untuk menyatakan persyaratan lojik kebenaran atau disebut

BOOLEAN.

Contoh:

IF condition THEN

sequence 1

ELSE

sequence 2

ENDIF

Page 10: Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][] matrik = new double ... pembeda fungsi dan prosedur hanya ada dan tidak adanya nilai

4. Repeat-Until, digunakan untuk menyatakan perulangan dengan pengujian kondisi akhir.

Contoh:

REPEAT

Sequence

UNTIL condition

5. For, digunakan untuk menyatakan perulangan dengan batasan range sejumlah angka

tertentu.

Contoh:

FOR count=0 TO 10 DO sequence

ENDFOR

6. Case, digunakan untuk pilihan kondisi tertentu,

Contoh:

CASE grade OF

“A” : points = 4

“B” : points = 3

“C” : points = 2

“D” : points = 1

“F” : points = 0

ENDCASE

*Aturan dasar Penulisan pseudocode:

• Lebih mudah gunakan huruf kapital untuk menyatakan fungsi atau prosedur

• Gunakan huruh kecil untuk penulisan variable

Contoh pseudocode untuk memasak Indomie Goreng:

BEGIN

SET flavour IN plate

OBTAIN pan WITH 1l OF water

SET pan IN stove

BURN-UP stove

Page 11: Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][] matrik = new double ... pembeda fungsi dan prosedur hanya ada dan tidak adanya nilai

DELAY 30 Seconds

SET indomie IN pan

FOR 1..5 MINUTE DO

STIR-UP indomie

ENDFOR

FILTER indomie AND water

SET indomie IN plate

REPEAT

MIX indomie AND flavour

UNTIL average

END

Instruksi Praktikum,

1. Pelajari teori terkait pembahasan, gunakan pemodelan sederhana dengan menggunakan

M. Word untuk membuat flowchart

Tugas Pendahuluan,

1. Jawablah Pertanyaan berikut terkait algoritma:

Apa yang dimaksud persyaratan kondisi...?, apa perbedaan pada penggunaan

IF-THEN-ELSE dengan CASE. Ilustrasikan kondisi yang sesuai untuk

penggunaan kedua pseudocode tersebut.

Apa yang dimaksud dengan perulangan, jelaskan perbedaan pada perulangan

dengan menggunakan WHILE, REPEAT-UNTIL dan FOR. Ilustrasikan

kondisi yang sesuai untuk penggunaannya.

Tugas Praktikum,

1. Buatlah Flowchart dan PseudoCode untuk algoritma deret faktorial sebagai berikut,

faktorial(5) = 1*2*3*4*5

2. Buatlah Flowchart dan PseudoCode untuk algoritma membuat Omlet Telur.

3. Buatlah Flowchart dan Pseudocode untuk proses disekeliling anda yang anda ketahui.

Page 12: Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][] matrik = new double ... pembeda fungsi dan prosedur hanya ada dan tidak adanya nilai

Modul 2: Pengantar Bahasa JAVA Tujuan Instruksi Khusus:

• Mahasiswa dapat memahami penggunaan dasar bahasa pemrograman JAVA

• Mahasiswa dapat mentranslasikan flowcart dan pseudocode kedalam bahasa

pemrograman JAVA

Bahasa pemrograman yang dijadikan implementasi eksekusi algoritma dalam praktikum ini

adalah bahasa JAVA. Bahasa JAVA pada dasarnya adalah bahasa pemrograman berbasis obyek,

namun dalam praktikum ini penggunaan obyek diminimalisir.

Konsep dasar JAVA yang perlu dikuasai pada modul ini adalah:

1. Pengenalan Tipe Data

2. Lojik persyaratan dan perulangan

Teori

1.1 Pengenalan Tipe Data

Tipe data merupakan jenis ukuran dan tipe dari register memori yang digunakan oleh variabel untuk menyimpan nilai operan tertentu didalam program. Bentuk dasar tipe data dibagi atas dua jenis yaitu:

1. 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:

m

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

Page 13: Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][] matrik = new double ... pembeda fungsi dan prosedur hanya ada dan tidak adanya nilai

2. Tipe data komplek,

Yang digunakan pada praktikum ini hanya koleksi array, matriks dan List. Array dan

matriks adalah tipe data koleksi atau deret kelompok yang bersifat statis sedangkan List

bersifat dinamis.

Array,

public class array {

public static void main(String[] arg){

int index = 10;

int [] ary= new int[index];

ary[0] = 1;

ary[1] = 2;

ary[3] = 100;

System.out.println("Array indeks keempat menyimpan nilai

"+ary[3]);

}

}

public class Primitif {

public static void main(String[] args) {

String s = "Hello Java, I Love You ....";

char c = 'a';

int i = 1;

double f = 0.5;

double d = i/f;

System.out.println("Hasil Bagi "+i+" : "+f+" = "+d);

}

}

Page 14: Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][] matrik = new double ... pembeda fungsi dan prosedur hanya ada dan tidak adanya nilai

Matriks,

List,

public class Listi {

public static void main(String[] args) {

List<Integer> l = new ArrayList();

l.add(1);

l.add(2);

l.add(1000);

for (Integer i : l) {

System.out.print(i);

}

}

}

public class Matriks {

public static void main(String[] arg){

int bar = 10;

int kol = 10;

double [][] matrik = new double[bar][kol];

matrik[0][0] = 1;

matrik[0][1] = 0;

matrik[1][0] = 0;

matrik[1][1] = 1;

}

}

Page 15: Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][] matrik = new double ... pembeda fungsi dan prosedur hanya ada dan tidak adanya nilai

1.2 Lojik Percabangan dan Perulangan

Percabangan Lojik percabangan digunakan untuk menentukan pilihan aliran program yang akan dieksekusi sesusi dengan kondisi yang ditentukan. Terdapat dua kombinasi percabangan yaitu IF-THEN-ELSE dan Switch-Case, contoh: IF-THEN-ELSE

import java.util.ArrayList;

import java.util.List;

public class percabangan {

public static void main(String[] args) {

List<Integer> genap = new ArrayList<>();

List<Integer> ganjil = new ArrayList<>();

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

if(i%2==0){

System.out.println("genap");

genap.add(i);

}

else{

System.out.println("ganjil");

ganjil.add(i);

}

}

System.out.println("Daftar bilangan genap: ");

for(Integer i:genap){

System.out.println(i+",");

}

System.out.println("Daftar bilangan ganjil: ");

for(Integer i:ganjil){

System.out.println(i+",");

}

}

}

Page 16: Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][] matrik = new double ... pembeda fungsi dan prosedur hanya ada dan tidak adanya nilai

Switch-Case

public class switchcase {

public static void main(String[] args) {

int month = 6;

String monthString;

switch (month) {

case 1: monthString = "January";

break;

case 2: monthString = "February";

break;

case 3: monthString = "March";

break;

case 4: monthString = "April";

break;

case 5: monthString = "May";

break;

case 6: monthString = "June";

break;

case 7: monthString = "July";

break; // etc etc

default: monthString = "Invalid month";

break;

}

System.out.println(monthString);

}

}

Page 17: Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][] matrik = new double ... pembeda fungsi dan prosedur hanya ada dan tidak adanya nilai

Perulangan Terdapat tiga perulangan yang dapat digunakan di JAVA yaitu: While, do..While, dan For. While

Do-While

public class dowhile {

public static void main(String args[]){

int x = 10;

do{

System.out.print("value of x : " + x );

x++;

System.out.print("\n");

}while( x < 20 );

}

}

public class whileloop {

public static void main(String args[]) {

int x = 10;

while( x < 20 ) {

System.out.print("value of x : " + x );

x++;

System.out.print("\n");

}

}

}

Page 18: Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][] matrik = new double ... pembeda fungsi dan prosedur hanya ada dan tidak adanya nilai

For

Instruksi Praktikum,

1. Pelajari teori terkait pembahasan, jalankan program contoh di Java IDE Netbeans

Tugas Pendahuluan,

1. Jawablah Pertanyaan berikut terkait penulisan bahasa java:

• Sintaks apa sebagai pembatas BEGIN-END di Java

• Apa perbedaan operator “=” dan”==” di JAVA

• Apa perbedaan FOR statis dan FOR dinamis

2. Buatlah translasi dari flowchart preparation&decision kedalam penulisan program bahasa

java

3. Apa yang dimaksud dengan koleksi, sebutkan dan jelaskan tipe data koleksi tersebut...!

Tugas Praktikum,

1. Buatlah program JAVA untuk algoritma deret faktorial sebagai berikut,

faktorial(5) = 1*2*3*4*5

faktorial(4) = 1*2*3*4

faktorial(3) = 1*2*3

2. Buatlah program interaksi dengan input dan output untuk algoritma membuat Omlet

Telur.

3. Buatlah program sebagaimana kasus pada modul 1 yang anda tentukan sendiri.

public class forloop {

public static void main(String args[]) {

for(int x = 10; x < 20; x = x+1) {

System.out.print("value of x : " + x );

System.out.print("\n");

}

}

}

Page 19: Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][] matrik = new double ... pembeda fungsi dan prosedur hanya ada dan tidak adanya nilai
Page 20: Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][] matrik = new double ... pembeda fungsi dan prosedur hanya ada dan tidak adanya nilai

Modul 3: Java Matrik Tujuan Instruksi Khusus:

• Mahasiswa dapat memahami penggunaan algoritma pengolahan data matriks

Bahasa pemrograman yang dijadikan implementasi eksekusi algoritma dalam praktikum ini

adalah bahasa JAVA. Bahasa JAVA pada dasarnya adalah bahasa pemrograman berbasis obyek,

namun dalam praktikum ini penggunaan obyek diminimalisir.

Konsep dasar JAVA yang perlu dikuasai pada modul ini adalah:

1. Konsep array

2. Lojik perulangan

3. Pengenalan fungsi

Teori

3.1 Pengertian Matriks

Matriks adalah himpunan scalar dengan susunan segi empat siku-siku. Bilangan-bilangan dalam susunan tersebut dinamakan entri dalam matriks. Jika A adalah sebuah matriks, maka

akan menggunakan aij untuk menyatakan entri yang terdapat di dalam baris i dan kolom j dari matriks A. Secara umum matriks dituliskan sebagai berikut:

3.2 Operasional Matriks Penjumlahan Matriks

Operasional Penjumlahan matriks hanya bisa dilakukan untuk atriks dengan ukuran dimensi yang sama. Jika A dan B adalah sembarang dua matriks yang ukurannya sama, maka jumlah adalah matriks yang diperoleh dengan menambahkan bersama-sama entri yang bersesuaian dalam kedua matriks tersebut.

Page 21: Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][] matrik = new double ... pembeda fungsi dan prosedur hanya ada dan tidak adanya nilai

Contoh:

Perkalian Matriks

Perkalian matriks hanya dapat dilakukan untuk matriks sembarang dengan dimensi kolom matriks pertama sama dengan baris matriks berikutnya. Sedangkan hasil perhalian adalah penjumlahan antar perkalian entri baris matriks pertama dengan kolom matriks berikutnya. Contoh:

Perkalian entri antara baris dengan kolom: Baris ke-1 x kolom ke-1, X11 = (1.2) + (3.3) + (4.1) = 15 Baris ke-1 x kolom ke-2, X12 = (1.4) + (3.6) + (4.3) = 34 Baris ke-2 x kolom ke-1, X21 = (3.2) + (2.3) + (5.1) = 17 Baris ke-2 x kolom ke-2, X22 = (3.4) + (2.6) + (5.3) = 39

Page 22: Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][] matrik = new double ... pembeda fungsi dan prosedur hanya ada dan tidak adanya nilai

3.3 Matriks Java Matriks dijava direpresentasikan dalam array dua dimensi,

tipe_data [ ][ ] variable = new tipe_data[ukuran baris][ukuran kolom] contoh:

3.4 Fungsi dan Prosedur Fungsi dalam bahasa pemrograman adalah bagian struktur sub-program atau sub-rutin atau

dalam standar flowchart adalah predefined process yang memiliki kegunaan secara spesifik. Pembuatan fungsi dan prosedur digunakan untuk meningkan reusabilitas fungsi program, sehingga penulisan program dapat lebih efisien ketika digunakan kembali. Secara garis besar pembeda fungsi dan prosedur hanya ada dan tidak adanya nilai kembalian, dimana fungsi memiliki nilai kembalian sedangkan prosedur tidak. Fungsi Contoh:

public double[][] entri_matriks(){

int m = this.bar;

int n = this.kol;

double [][] r = new double[bar][kol];

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

for(int j=0; j<n; j++){

System.out.print("Masukan Baris ke-"+i+" Kolom ke-"+j+" =");

Scanner s = new Scanner(System.in);

double x = s.nextInt();

r[i][j] = x;

}

}

return r;

}

public class Matriks {

public static void main(String[] arg){

int bar = 10;

int kol = 10;

double [][] matrik = new double[bar][kol];

matrik[0][0] = 1;

matrik[0][1] = 0;

matrik[1][0] = 0;

matrik[1][1] = 1;

}

}

Page 23: Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][] matrik = new double ... pembeda fungsi dan prosedur hanya ada dan tidak adanya nilai

Prosedur

Instruksi Praktikum,

1. Pelajari teori terkait pembahasan, jalankan program contoh di Java IDE Netbeans

Tugas Pendahuluan,

1. Jawablah Pertanyaan berikut terkait penulisan bahasa java:

• Apa itu fungsi ? kapankah fungsi secara tepat digunakan

• Apa itu prosedur ? kapankah prosedur secara tepat digunakan

• Apa persamaan dan perbedaan antara larik dan matrik

Tugas Praktikum,

1. Buatlah flowchart dan pseudocode Penjumlahan matrik

2. Buatlah program dengan komponen fungsi dan prosedur untuk penjumlahan matrik

3. Buatlah program dengan komponen fungsi dan prosedur untuk perkalian matrik

public void show_matriks(double[][] matrik){

for(int i=0; i<this.bar; i++){

System.out.print("|");

for(int j=0; j<this.kol; j++){

System.out.print(" "+matrik[i][j]);

}

System.out.println("|");

}

}

Page 24: Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][] matrik = new double ... pembeda fungsi dan prosedur hanya ada dan tidak adanya nilai

Modul 4: Sorting Tujuan Instruksi Khusus:

• Mahasiswa dapat memahami penggunaan sorting pada data array

Pemilihan pengunaan algoritma sangat menentukan efisiensi baik pada penggunaan ruang meori

maupun kecepatan komputasi. Pada modul ini mahasiswa mempelajari beragam algoritma

sorting yang menentukan kecepatan komputasi yang diperlukan saat eksekusi program.

Konsep dasar JAVA yang perlu dikuasai pada modul ini adalah:

1. Array

2. Preparation & decision

3. Void

Teori

Pengertian Sorting

Sorting merupakan salah satu algoritma terpenting dalam pengolahan data. ditujukan untuk

mengurutkan data sesuai dengan nilai yang terdapat pada tiap-tiap indeks. Sorting dibagi menjadi

dua pola yaitu ascending yang terurut dari nilai terkecil sampai nilai terbesar dan descending

yang terurut terbalik dari besar ke kecil.

Sedangkan metode sorting yang dipelajari adalah sorting dasar pada data primitif array

yang terdiri atas bubble sorting, selection sorting, insertion sorting. Dari ke-3 algoritma sorting

ini dilakukan analisa untuk mengukur kinerja kecepatan dari masing-masing algoritma.

Bubble Sorting, Merupakan algoritma sorting yang paling sederhana dengan melakukan pertukaran data

antar indeks pada keseluruan indeks secara terus-menerus sampai tidak terjadi pertukaran yang

menandakan semua data yang tersimpan telah terurut.

Page 25: Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][] matrik = new double ... pembeda fungsi dan prosedur hanya ada dan tidak adanya nilai

Contoh operasional bubble sort descending

4 2 3 5 1 6

4 3 5 2 6 1

4 5 3 6 2 1

5 4 6 3 2 1

5 6 4 3 2 1

6 5 4 3 2 1

Procedure BubbleSort(array OF number)

BEGIN

WHILE (flag IS TRUE)

SET flag IS FALSE

FOR j = 0 TO Length of array DO

IF number [j] < number [j+1] THEN

temp = number [j]

number [j] = number [j+1]

number [j+1] = temp

flag = true

ENDIF

ENDFOR

ENDWHILE

END

Page 26: Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][] matrik = new double ... pembeda fungsi dan prosedur hanya ada dan tidak adanya nilai

Insertion Sorting, Merupakan algoritma sorting dengan melokalisir deret yang disorting, sehingga pada deret

array akan dibagi menjadi dua yaitu: area tersorting dan area tidak tersorting.

Contoh operasional insertion sort descending

key

4 2 3 5 1 6

4 2 3 5 1 6

4 3 2 5 1 6

5 4 3 2 1 6

5 4 3 2 1 6

6 5 4 3 2 1

Procedure InsertionSort(array OF number)

BEGIN

SET i,j,key as number

FOR j = 1 TO Length of array DO

key = number [ j ]

FOR i = j-1 DOWN TO 0 AND number [ i ] < key DO

number [i + 1] = number [ i ]

ENDFOR

number [i + 1] = key

ENDFOR

END

Page 27: Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][] matrik = new double ... pembeda fungsi dan prosedur hanya ada dan tidak adanya nilai

Selection Sorting, Merupakan algoritma sorting yang mengkombinasikan pencarian dan pengurutan. Pada

pengurutan descending pertukaran dilakukan dengan melakukan pencarian indeks nilai terkecil,

setelah didapatkan nilai terkecil ditempatkan pada posisi indeks yang terakhir dan berlaku

sebaliknya untuk ascending.

Procedure SelectionSort(array OF number)

BEGIN

SET i, j, first, temp is number

FOR i = length OF array DOWN TO 1 DO

first = 0

FOR j = 1 TO i DO

IF (number [ j ] < number [ first] )

first = j

ENDIF

temp = number[ first ]

number[ first ] = number[ i ];

number[ i ] = temp;

ENDFOR

ENDFOR

END

Page 28: Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][] matrik = new double ... pembeda fungsi dan prosedur hanya ada dan tidak adanya nilai

Contoh operasional insertion sort descending

first

4 2 3 5 1 6

first

4 6 3 5 1 2

first

4 6 5 3 1 2

first

4 6 5 3 2 1

first

5 6 4 3 2 1

first

6 5 4 3 2 1

Untuk mendapatkan lama waktu berjalanya program dapat digunakan program pendeteksi awal

dan start program dalam skala timemillis contoh dengan kecepatan nano-time.

long now = System.nanoTime();

{algorithm}

long after = System.nanoTime();

long delta_time = after-now;

Page 29: Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][] matrik = new double ... pembeda fungsi dan prosedur hanya ada dan tidak adanya nilai

Instruksi Praktikum,

1. Pelajari teori terkait pembahasan, jalankan program contoh di Java IDE Netbeans

Tugas Pendahuluan,

1. Jawablah Pertanyaan berikut :

• Apakah efisiensi kecepatan kompilasi dan menjalankan program dipengaruhi oleh

algoritma ?

• Apakah ruang memori yang dialokasikan untuk menjalankan program juga

dipengaruhi oleh algoritma ?

2. Bagaimana cara bisa mengukur kecepatan suatu algoritma program dan bisa

membandingkannya dengan algoritma program lainnya ?

Tugas Praktikum,

1. Buatlah program java yang mempraktikan algoritma sorting Bubble, Insertion dan

Selection !

2. Buatlah program untuk menguji kecepatan algoritma tersebut untuk mensorting

10,100,1000,10000, dan 1000000 data integer acak. Buatlah table perbandingan

kecepatan masing-masing sorting Bubble, Insertion dan Selection.

3. Manakah yang terbaik untuk ketiga algoritma sorting tersebut?

Page 30: Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][] matrik = new double ... pembeda fungsi dan prosedur hanya ada dan tidak adanya nilai

Modul 5: Binary Sorting dan Searching Tujuan Instruksi Khusus:

• Mahasiswa dapat memahami penggunaan sorting dan searching pada data array secara

binary serta penerapan metode rekursif

Konsep dasar JAVA yang perlu dikuasai pada modul ini adalah:

1. Metode

2. Rekursif

Teori

Binary Sorting

Sorting sebelumnya menerapkan algoritma sekuensial dalam melakukan pengurutan

dimana analisa time complexity bigO dari algoritma tersebut cenderung N2 dari jumlah data N,

maka untuk berikutnya digunakan pendekatan sorting secara binary untuk mengurangi bigO

menjadi Nlog2N.

Untuk algoritma yang kompleks pada operasional binary, metode rekursif sangat efektif

untuk mengganti operasi perulangannya. Metode rekursif menggantikan perulangan dengan

melakukan pemanggilan method secara berulang sampai ditemukan solusi terkecil yang

merupakan akhir dari sebuah permasalahan perulangan.

Algoritma Iteratif dan Rekursif Untuk menyelesaikan permasalahan perulangan didalam algoritma

pemrograman dapat menggunakan dua metode yaitu iteratif dan rekursif. Iteratif

merupakan penyelesaian umum untuk penyelesaian perulangan baik untuk

perulangan dengan batasan pasti menggunakan statemen For ataupun tanpa batasan

pasti menggunakan While. Berbeda dengan iteratif, rekursif tidak memiliki statemen

penggunaan perulangan tetapi perulangan dilakukan dengan pemanggilan methode

secara berulang sampai ditemukan solusi dasar dari sebuah permasalahan.

Page 31: Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][] matrik = new double ... pembeda fungsi dan prosedur hanya ada dan tidak adanya nilai

Contoh untuk menyelesaikan permasalahan faktorial sederhana berikut dapat

dibedakan solusi untuk iteratif dan rekursif.

Persamaan n! = faktorial(n) :

Untuk solusi faktorial menggunakan iteratif dapat ditentukan sebagaimana

algoritma berikut pada Gambar 1.

Gambar 1, Listing program solusi faktorial secara iteratif

Sedangkan solusi faktorial menggunakan rekursif dapat ditentukan sebagaimana

algoritma berikut pada Gambar 2.

public int iteration(int n){

int result=1;

if(n==0){

return result;

}

else{

for(int i=n; i>0; --i){

result *= i;

}

}

return result;

}

Page 32: Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][] matrik = new double ... pembeda fungsi dan prosedur hanya ada dan tidak adanya nilai

Gambar 2, Listing program solusi faktorial secara rekursif

Secara umum setiap permasalahan perulangan dapat dilakukan secara iteratif

maupun rekursif, namun dari efektivitas program memiliki kecenderungan

bahwasanya untuk solusi permasalahan yang sederhana, proses yang kecil serta

penyelesaian dengan batasan pasti direkomendasikan untuk menggunakan iteratif.

Sedangkan untuk solusi permasalahan yang komplek dan tanpa batasan pasti

menggunakan rekursif.

Binary Sorting (Quick Sort)

Algoritma pengurutan yang menerapkan metode binary adalah Quick Sort. Pengurutan

menggunakan Quick sort dilakukan dengan membagi deret menjadi dua bagian kiri dan kanan

oleh pivot. Untuk operasional ascending, dimana bagian kiri dianggap kumpulan nilai yang lebih

kecil dari pivot dan kanan lebih besar dari pivot. Apabila terdapat nilai yang lebih besar pada

bagian kiri maka perlu ditukar dengan bagian kanan dari pivot atau sebaliknya. Proses dilakukan

secara rekursif sampai pergeseran nilai indeks kiri lebih besar dari indeks kanan yang

menandakan semua telah terurut.

i pivot j

6 5 4 3 2 1

i pivot j

1 5 4 3 2 6

i pivot j

1 5 4 3 2 6

i,pivot j

1 2 4 3 5 6

public int recursion(int n){

if(n==0){

return 1;

}

else

return n * recursion(n-1);

}

Page 33: Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][] matrik = new double ... pembeda fungsi dan prosedur hanya ada dan tidak adanya nilai

i,pivot j

1 2 4 3 5 6

i,pivot j

1 2 3 4 5 6

i, pivot, j

1 2 3 4 5 6

Listing program Java Quick Sort

public class QuickSorting {

public void asc(int[] data, int left, int right) {

int pivot = data[left + (right - left) / 2];

int i = left;

int j = right;

while (i <= j) {

while (data[i] < pivot) {

i++;

}

while (data[j] > pivot) {

j--;

}

if (i <= j) {

int temp=data[i];

data[i]=data[j];

data[j]=temp;

i++;

j--;

}

}

if(left < j)

asc(data,left,j);

if(i < right)

asc(data,i,right);

}

}

Page 34: Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][] matrik = new double ... pembeda fungsi dan prosedur hanya ada dan tidak adanya nilai

Binary Searching

Algoritma binary searching pada array hanya bisa diimplementasikan pada data yang sudah

terurut. Dimana pencarian dilakukan dengan membagi data berdasarkan pivot indeks tengah

sampai ditemukan atau pencarian berhenti karena indeks kiri > dari indeks kanan yang

menandakan tidak ditemukannya data.

Cari nilai 5 didalam data,

i pivot j

1 2 3 4 5 6

i pivot j

1 2 3 4 5 6

i, pivot j

1 2 3 4 5 6

i pivot j

1 2 3 4 5 6

pivot ditemukan data yang dicari

1 2 3 4 5 6

Instruksi Praktikum,

1. Pelajari teori terkait pembahasan, jalankan program contoh di Java IDE Netbeans

Tugas Pendahuluan,

1. Jawablah Pertanyaan berikut :

• Apa yang dimaksud dengan perulangan secara Rekursif ?

• Kapan rekursif sesuai untuk digunakan daripada menggunakan iterative ?

• Apa perbedaan kecepatan kompleksitas waktu bigO antara operasional sekuensial

dengan binary?

Tugas Praktikum,

1. Buatlah program java yang mempraktikan algoritma sorting Quck Sort dan Mergesort.

2. Buatlah program binary searching secara iteratif dan rekursif.

Page 35: Contents · PDF filedigunakan diluar proses normal Delay . ... int kol = 10; double [][] matrik = new double ... pembeda fungsi dan prosedur hanya ada dan tidak adanya nilai

Referensi 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.

3. Mathbits.com, http://mathbits.com/MathBits/Java/arrays/arrays.htm, Diakses

11/11/2013.