Buku Ajar & Panduan Praktikum STRUKTUR DATA

dokumen-dokumen yang mirip
Modul 1: Flowchart & PseudoCode

Lab. Common Computing Universitas Trunojoyo Madura. Praktikum Pengantar Algoritma Pemrograman (ALPRO) [MODUL]

SUMBER BELAJAR PENUNJANG PLPG

Buku Ajar & Panduan Praktikum

Dasar Pemrograman Java

Percabangan & Perulangan

MODUL PRAKTIKUM PEMROGRAMAN BERORIENTASI OBJEK

1. Kompetensi Mengenal dan memahami algoritma percabangan yang komplek.

Percabangan dan Perulangan

Gambar 13.1 Ilustrasi proses algoritma sorting

Modul 4: Iteratif & Rekursif, Binary Tree

ALGORITMA, FLOWCHART dan PSEUDO-CODE

Java Basic. Variabel dan Tipe Data. Lokasi di dalam memori komputer yang digunakan untuk menyimpan suatu informasi (nilai)

Pemrograman. Pertemuan-3 Fery Updi,M.Kom

Apa Itu Algoritma? Algoritma berasal dari: ahli

Algoritma dan Struktur Data. Algoritma Pengurutan (Sorting)

Modul 3: Kendali program dan teknik. penyimpanan data

BAB 3 TYPE DATA, VARIABLE DAN OPERATOR

1. Kompetensi Mengenal dan memahami notasi-notasi algoritma yang ada.

Perulangan, Percabangan, dan Studi Kasus

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

2. Sebuah prosedur langkah demi langkah yang pasti untuk menyelesaikan sebuah masalah disebut : a. Proses b. Program c. Algoritma d. Prosesor e.

PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR

Pengenalan Algoritma

2 TIPE DATA DAN VARIABEL

PERTEMUAN 2 ALGORITMA & PEMROGRAMAN

BAB I PENGANTAR ALGORITMA

PERTEMUAN 2 ARRAY, PERCABANGAN, DAN PERULANGAN

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

Penyeleksi Kondisi / Percabangan

PERTEMUAN 7 REVIEW (QUIZ)

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

Algoritma Pemrograman Fery Updi,M.Kom

Identifier, Keywords, Variabel, Tipe Data Primitif dan Operator PBO. Ramos Somya

MATERI PRAKTIKUM STRUKTUR DATA

Tujuan : A. Percabangan Percabangan di dalam Java terdapat 2 macam, yaitu dengan memakai if dan switch.

Pengurutan (Sorting) Algoritma Pemrograman

Badiyanto, S.Kom., M.Kom. PBO java

Algoritma Pemrograman

if (ekspresi_boolean) { Pernyataan1; } else { Pernyataan2; }

MODUL III ARRAYLIST TUGAS PENDAHULUAN

Modul Praktikum Bahasa Pemrograman 1

Perulangan / Looping

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

ALGORITMA PENGURUTAN & PENCARIAN

LAPORAN PRAKTIKUM ALGORITMA DAN PEMROGRAMAN ( Implementasi Rekursi Pada Java)

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

SORTING. Hartanto Tantriawan, S.Kom., M.Kom

Algoritma Pemrograman

BAB II VARIABEL DAN TIPE DATA

MODUL PRAKTIKUM ALGORITMA DAN STRUKTUR DATA PERTEMUAN 1

Politeknik Elektronika Negeri Surabaya

Konstruksi Dasar Algoritma

if (ekspresi_boolean) {

Bahasa Pemrograman 2.

PERTEMUAN 2 ARRAY, PERCABANGAN, DAN PERULANGAN

Bahasa Pemrograman Java. Yudi Adha. ST. MMSI

MODUL IV PENCARIAN DAN PENGURUTAN

Modul Praktikum Algoritma dan Struktur Data

BAHASA PEMROGRAMAN JAVA

STRATEGI DIVIDE AND CONQUER

Algoritma & Pemrograman #1

A. TEORI ARRAY 1 DIMENSI

Tipe Data dan Operator

BAB VI Pengurutan (Sorting)

STRUKTUR DATA. Nama : Sulfikar Npm : STMIK Handayani Makassar

A. TEORI ARRAY 1 DIMENSI

BAB 1 KONSEP DASAR JAVA

JAVA BASIC PROGRAMMING Joobshet

PERTEMUAN II ARRAY, PERCABANGAN, DAN PERULANGAN TUJUAN PRAKTIKUM

Algoritma & Pemrograman #1. Antonius Rachmat C, S.Kom

Modul Praktikum 3 Pemograman Berorientasi Objek

ARRAY STATIS. Type namatype_array = array [1..maks_array] of tipedata. nama_var_array : namatype_array {indeks array dari 1 sampai maksimum array}

Modul 8 SORTING (PENGURUTAN)

Praktikum 7. Pengurutan (Sorting) Insertion Sort, Selection Sort POKOK BAHASAN: TUJUAN BELAJAR: DASAR TEORI:

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA STACK

Pengantar dalam Bahasa Pemrograman Turbo Pascal Tonny Hidayat, S.Kom

ALGORITMA PENGURUTAN. Oleh : S. Thya Safitri, MT

A. TUJUAN PEMBELAJARAN 1. Mengenal berbagai macam bentuk operator 2. Memahami penggunaan berbagai macam jenis operator yang ada di Java

Elemen Dasar Dalam Bahasa Java

Tujuan Instruksional. Mahasiswa mampu :

Studi Mengenai Perbandingan Sorting Algorithmics Dalam Pemrograman dan Kompleksitasnya

ARRAY. 7 th week Estu Sinduningrum ST,MT

6 Modul Praktikum Pemrograman Berorientasi Objek Common Laboratory 2009/2010

ALGORITMA DIVIDE AND CONQUER

PEMAHAMAN DASAR DASAR JAVA

SEKOLAH TINGGI MANAJEMEN INFORMATIKA & KOMPUTER JAKARTA STI&K SATUAN ACARA PERKULIAHAN

Quick Sort dan Merge Sort. Arna Fariza Yuliana Setiowati

Seri : Algoritma dan Pemrograman dengan Pascal

BAB 6. Struktur Kontrol

c. Membeli komputer d. Proses 2. Sebuah prosedur langkah demi langkah yang pasti untuk menyelesaikan sebuah masalah disebut : a. Proses b.

Array ARRAY BERDIMENSI SATU. Representasi (Pemetaan) di memori. Lihat gambar dibawah ini, nilai data A (18) dismpan mulai dari alamat 1136 di memori.

PEMROGRAMAN JAVA : VARIABEL DAN TIPE DATA

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

LAPORAN PRAKTIKUM PEMROGRAMAN DASAR TIPE-TIPE FUNGSI ATAU METHOD

Politeknik Elektronika Negeri Surabaya

IKG2I4 / Software Project I

MODUL 2 STRUKTUR KONTROL

SORTING DENGAN ALGORITMA DIVIDE AND CONQUER

Modul Praktikum 6 Pemograman Berorientasi Objek

Transkripsi:

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

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)

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 Preparation Menunjukkan subproses atau subrutin dari berjalannya proses, atau proses didalam proses Menunjukkan langkah perulangan dari aliran suatu proses Decision Menunjukkan alternatif pemilihan keputusan proses

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

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, a Percabangan Kondisi Terpenuhi? Y Aksi 1 T Aksi lain b

Contoh logika, Jika suhu panas pakailah T-Shirt berwarna cerah, Jika suhu dingin pakailah jaket berwarna gelap. Perulangan b Selama Kondisi Aksi Kondisi Terpenuhi Y T c 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.

Contoh implementasi, Dari masukan bilangan bulat 1..10 tentukan keluaran bilangan ganjil, dan genap. Mulai Masukan bilangan bulat input 1..10 Selama Kondisi input 1 10 input modulus 2 == 0? T Y Masukkan daftar bilangan genap Masukkan daftar bilangan ganjil Tampilkan bilangan genap Tampilkan bilangan ganjil Input <= 10? Selesai

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

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

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.

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)

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

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

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+",");

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

Perulangan Terdapat tiga perulangan yang dapat digunakan di JAVA yaitu: While, do..while, dan For. While 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"); 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 );

For 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"); 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.

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 a ij 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.

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, X 11 = (1.2) + (3.3) + (4.1) = 15 Baris ke-1 x kolom ke-2, X 12 = (1.4) + (3.6) + (4.3) = 34 Baris ke-2 x kolom ke-1, X 21 = (3.2) + (2.3) + (5.1) = 17 Baris ke-2 x kolom ke-2, X 22 = (3.4) + (2.6) + (5.3) = 39

3.3 Matriks Java Matriks dijava direpresentasikan dalam array dua dimensi, tipe_data [ ][ ] variable = new tipe_data[ukuran baris][ukuran kolom] contoh: 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; 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;

Prosedur 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(" "); 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

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.

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

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

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

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;

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?

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 N 2 dari jumlah data N, maka untuk berikutnya digunakan pendekatan sorting secara binary untuk mengurangi bigo menjadi Nlog 2 N. 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.

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. 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; Gambar 1, Listing program solusi faktorial secara iteratif Sedangkan solusi faktorial menggunakan rekursif dapat ditentukan sebagaimana algoritma berikut pada Gambar 2.

public int recursion(int n){ if(n==0){ return 1; else return n * recursion(n-1); 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

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

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.

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.