• Tidak ada hasil yang ditemukan

Struktur Data & Algoritme (Data Structures & Algorithms)

N/A
N/A
Protected

Academic year: 2021

Membagikan "Struktur Data & Algoritme (Data Structures & Algorithms)"

Copied!
36
0
0

Teks penuh

(1)

Struktur Data & Algoritme

(

Data Structures & Algorithms

)

Fakultas Ilmu Komputer Universitas Indonesia Semester Genap - 2000/2001

Version 1.0 - Internal Use Only

Denny

[email protected] Review Java

Objectives

n Mengulas kembali konsep-konsep penting dalam Java

(2)

SDA/REVIEW-JAVA/DN/V1.0/3

Outline

n Review Latihan n Primitive Type

n Operator & Expresion

n Flow Control (Decision & Iteration) n References

n OOP

n Exception Handling n Input & Output

Java: strongly typed languages

n Variabel adalah tempat penyimpanan suatu nilai tertentu.

n var•i•a•ble

adj.

4 Math. having no fixed valuen.

4 Math., Physics a) a part of a mathematical

expression that may assume any value in a specific, related set of values b) a symbol for such a part:

(3)

SDA/REVIEW-JAVA/DN/V1.0/5

Tipe Data Primitif

n Terdapat dua jenis types:

n Primitive types: numeric type, boolean type

n Reference types: class, arrays dll.

tipe isi nilai default besar

boolean true, false false 1 bit

char unicode char \u0000 16 bit

byte signed integer 0 8 bit

short signed integer 0 16 bit

int signed integer 0 32 bit

long signed integer 0 64 bit

float IEEE 754/floating-point 0.0 32 bit

double IEEE 754/floating-point 0.0 64 bit

Operator & Ekspresi

n Apa outputnya? int ii = 1; int jj = 2;

double a = (ii + 1) / (jj + 1);

double b = (double) (ii + 1) / (jj + 1); double c = (ii + 1) / (double) (jj + 1); double d = (ii + 1.0) / (jj + 1.0);

System.out.println (a + " " + b); System.out.println (c + " " + d);

(4)

SDA/REVIEW-JAVA/DN/V1.0/7

Operator & Ekspresi (2)

n Apa outputnya? int width = 10; int a = 3 / 4 * width; System.out.println (a); int b = width * 3 / 4; System.out.println (b); int c = width / 4 * 3; System.out.println (c); n Ingat:

n tipe data hasil dari sebuah ekpresi, tergantung dari operator dan tipe operand-nya

n Urutan evaluasi tergantung dari presedensi operator-nya. Jika presedensi-nya sama, dilihat dari

asosiasinya.

Operator

n Berdasarkan jumlah operand-nya

n Unary

n Binary

n Berdasarkan operasinya

n Aritmatik

(5)

SDA/REVIEW-JAVA/DN/V1.0/9

Operator: Presedence & Associativity

n Nutshell, p. 34

Flow Control

n Branch

n Digunakan untuk memilih statement yang dieksekusi berdasarkan suatu kondisi.

n Loop - Iterasi

n Loop mengeksekusi sebuah blok kode secara berulang. Kondisi berhenti mengatur berapa banyak loop dilakukan.

(6)

SDA/REVIEW-JAVA/DN/V1.0/11

Flow Control:

if

n Kesalahan umum: if (x == 0);

System.out.println (“x adalah nol”);

if (x > 0) System.out.println (“x = “); System.out.println (x); if (condition) { statement; } next statement if (condition) { statement1 } else { statement2 } next statement

Flow Control:

switch

n Statement if-else-if yang membandingkan sebuah nilai konstan atau integer dapat menggunakan switch statement.

n Statement switch lebih efesien dibandingkan dengan if-else-if

int digit;

String digitName; ...

switch (digit) {

case 0: digitName = “nol”; break; case 1: digitName = “satu”; break; case 2: digitName = “dua”; break; case 3: digitName = “tiga”; break;

(7)

SDA/REVIEW-JAVA/DN/V1.0/13

Flow Control: conditonal operator

?

testExpr ? yesExpr : noExpr

n Digunakan untuk mempersingkat if-else yang sederhana. n Contoh: double x; double y; if (x > 100) { y = x * 0.9; } else { y = x; } n ekuivalen dengan: y = (x > 100) ? (x * 0.9) : x;

Flow Control:

while

while (kondisi) {

statement; ...

}

/* Pasca kondisi: ~kondisi */

n Selama evaluasi dari ekspresi kondisi adalah true,

statement dieksekusi. Kemudian kondisi

di-evaluasi lagi.

n Jika evaluasi dari ekspresi kondisi adalah false, maka loop berakhir (statement tidak dieksekusi lagi).

(8)

SDA/REVIEW-JAVA/DN/V1.0/15

Flow Control:

do - while

do {

statement;

...

} while (kondisi);

/* Pasca kondisi: ~kondisi */

n statement dieksekusi terlebih dahulu, kemudian

kondisi di-evaluasi. statement minimal 1 kali dieksekusi.

n Jika kondisi true ⇒⇒ statement dijalankan kembali.

n Jika kondisi false⇒ loop selesai/keluar dari loop.⇒

n Sering terdapat kebutuhan untuk melakukan

statement pada loop terlebih dahulu, setelah itu baru menguji kondisi.

Flow Control:

for

for (inisialisasi; kondisi; update) { statement;

}

n Equivalen dengan while statement

inisialisasi; while (kondisi) {

statement;

update; }

(9)

SDA/REVIEW-JAVA/DN/V1.0/17

Flow Control:

break

n Digunakan untuk keluar dari loop terdalam (innermost).

n Tidak baik dalam programming (poor design) n Contoh: while (...) { ... if (something) { break; } ... }

Flow Control:

continue

n Digunakan untuk melanjutkan ke iterasi selanjutnya tanpa mengeksekusi sisa statement yang ada. n Tidak baik dalam programming (poor design) n Contoh:

for (int ii = 1; ii <= 100; ii++) { if (ii % 10 == 0) {

continue;

}

System.out.println (i); }

(10)

SDA/REVIEW-JAVA/DN/V1.0/19

Flow Control: Latihan

n Exercises 1.19

n Buat sebuah program yang dapat mencetak semua pasangan integer positif (a, b) dimana

a < b < 1000 dan (a2 + b2 + 1)/(ab) adalah sebuah integer.

Object Oriented Programming

n kelas (class)

n gabungan data-data dan operasi-operasi (method) dengan pembatasan akses

n satu class membentuk satu type tersendiri n obyek (object)

n personifikasi/instance dari suatu tipe kelas

n setiap object memiliki:

•suatu keadaan (state) ⇒ variable instance / field

(11)

SDA/REVIEW-JAVA/DN/V1.0/21

Class

n Class mencakup:

n Implementasi detil (blue print) dari suatu objek yang akan dibuat (create) ⇒ sejenis pabrik objek.⇒

n Class: menampung “methods” dengan sifat “static” dan objek-objek yang dibuat.

n Class: mendefinisikan implementasi detil dari objek

n semua method dan field

n instruksi/kode dari methods tersebut ⇒⇒ perilaku/behaviour

n Berdasarkan definisi class object dapat dibuat.

Object

n Membuat object

n operator new:

•mengalokasikan tempat untuk object yang baru

•mengisialisasi object tersebut dengan memanggil constructor yang sesuai

•memberikan/mengembalikan alamat dari object yang dibuat.

n Contoh: new Integer (20);

n Mendeklarasikan variabel reference

n ClassName varName;

n Ingat: mendeklarasikan variabel reference saja tidak berarti membuat object-nya

(12)

SDA/REVIEW-JAVA/DN/V1.0/23

Object (2)

n Menyimpan alamat dari sebuah object

n Alamat dari object perlu disimpan supaya bisa digunakan kembali.

n Gunakan operator =

n Contoh: Integer x = new Integer (20);

n Ingat: operator = tidak menduplikasi object n Mengakses field dan menggunakan method

n gunakan operator . (dot/titik)

n Contoh: Dimension size; size = getSize (); System.out.println (size.width); System.out.println (size.getWidth());

Field

n Digunakan untuk menyimpan keadaan / state sebuah object/kelas

n Terdapat dua jenis macam field

n Instance variable

•Setiap object memiliki instance variable yang berbeda

⇒ variabel object

n Static variable

•Satu class hanya memiliki satu variable statik ⇒⇒

(13)

SDA/REVIEW-JAVA/DN/V1.0/25

Method

n Definisi Method terdiri dari:

n header

penentu akses/access specifier (misalkan: public )

•tipe data yang dikembalikan: return type (mis.:

double or void)

•nama dari method (mis. deposit )

•daftar dari parameters method n body (implementasi dari method)

n Method yang tidak memiliki body/implementasi method abstract

Method (2)

n Sama halnya dengan field, terdapat dua jenis method

n method non-static/instance

•method yang dipanggil harus ada obyeknya ⇒ method⇒

obyek

•selalu terdapat parameter implisit this ⇒ method⇒

dapat mengakses variabel instance n method static

•method yang dapat digunakan tanpa harus ada obyeknya ⇒ method kelas⇒

•tidak terdapat parameter implisit this ⇒ method⇒

TIDAK dapat mengakses variabel instance

n Penyaluran Parameter

n pass by value / call by value

(14)

SDA/REVIEW-JAVA/DN/V1.0/27

Reference Type

n Sebuah variabel reference dalam Java adalah variabel yang menyimpan alamat dimana sebuah object

disimpan.

n Bandingkan dengan variabel primitif dalam Java: variabel yang menyimpan nilai suatu tipe data primitif.

n Dengan kata lain, variabel referenceTIDAK

menyimpan object-nya, sedangkan variabel primitif menyimpan ‘object’-nya.

n Jadi tipe data non-primitif / reference dalam Java adalah Object.

Reference Type (2)

n Operator ==

n Untuk tipe data primitif, operator == dapat digunakan untuk memeriksa apakah dua buah variabel memiliki nilai yang sama.

n Untuk tipe data reference, operator == dapat digunakan untuk mengetahui apakah dua variabel reference menunjuk ke object yang sama. BUKAN

untuk memeriksa apakah dua object yang berbeda memiliki keadaan (state) yang sama.

(15)

SDA/REVIEW-JAVA/DN/V1.0/29

Array

n Deklarasi variabel array (array adalah object juga)

int [] array1;

n Ingat: mendeklarasikan variabel reference tidak mengalokasikan tempat / membuat objectnya. n Membuat array

array1 = new int[100];

int[] array2 = { 2, 3, 7, 5 };

n Untuk mengakses elemen array gunakan indeks

array1[0] = 20;

n Karena array adalah object juga, maka operator = tidak berarti menduplikasi array

int[] lhs = new int[100]; int[] rhs = new int[100]; ...

lhs = rhs;

Dynamic Array Expansion

n Misalkan kita ingin membaca barisan integer dari sebuah file dan kita simpan dalam array untuk diproses kemudian.

n Untuk membuat sebuah array, kita diwajibkan untuk menyatakan besar array tersebut supaya kompilator dapat mengalokasikan tempat yang sesuai.

n Jika kita tidak mengetahui berapa banyak integer yang akan dibaca, hal ini akan menyulitkan bagi kita untuk menentukan besar array tsb.

(16)

SDA/REVIEW-JAVA/DN/V1.0/31

Dynamic Array Expansion (2)

n Contoh:

int[] a = new int[10];

n jika array tidak cukup, kita lakukan pembesaran array sebagai berikut:

int[] original = a;

a = new int[original.length * 2];

for (int ii = 0; ii < original.length; ii++) { a[ii] = original[ii];

}

Array Multidimensi

n Array yang diakses dengan menggunakan lebih dari satu index.

int[][] x = new int[2][5];

n Soal:

n Buatlah sebuah fungsi cantor (diberikan besarnya) yang membuat matriks segitiga (array 2 dimensi), mengisinya dengan angka bertipe double yang bernilai seperti di bawah ini, dan mengembalikannya. Misalnya: untuk parameter besar = 5, maka yang dikembalikan adalah nilai-nilai seperti di bawah ini (dalam decimal/tipe double, bukan dalam pecahan ).

(17)

SDA/REVIEW-JAVA/DN/V1.0/33

public static double[][] cantor (int besar) {

double[][] result = new double[besar][]; for (int ii = 0; ii < besar; ii++) { result[ii] = new double[besar - ii];

for (int jj = 0; jj < result[ii].length; jj++) { result[ii][jj] = (ii + 1.0) / (jj + 1.0); // perhatikan tipe dari operasinya.

// (ii + 1) / (jj + 1) menghasilkan integer }

}

return result; }

Konsep OOP

n Berdasarkan empat prinsip utama:

n abstraksi (abstraction)

•proses penentuan ciri-ciri/detil-detil yang penting dari sebuah objek

n pembungkusan (encapsulation)

•Penggabungan data dan operasi-operasi yang bersesuaian menjadi satu kesatuan

•keutuhan data dijaga dengan adanya pengendalian akses (information hiding)

n pewarisan (inheritance)

•Membuat kelas baru dari kelas yang sudah ada

dengan mengembangkannya (extends).

•Kelas yang baru dapat menambahkan field dan method baru.

(18)

SDA/REVIEW-JAVA/DN/V1.0/35

Polymorfism

n “banyak bentuk”

n Dalam Java ada 2 macam polimorfisme:

n overloading: polimorfisme trivial

n overriding: polimorfisme sejati

Overloading

n penggunaan satu nama untuk beberapa method (fungsi) yang berbeda dalam suatu kelas

n method-method yang sama namanya itu dibedakan satu dengan yang lain berdasarkan signature-nya n Signature suatu fungsi (method) ditentukan oleh:

n jumlah argumen

n tipe argumen

n urutan argumen

(19)

SDA/REVIEW-JAVA/DN/V1.0/37

Overriding

n poliformisme jenis ini ditangani pada runtime

n terjadi apabila suatu class mempunyai suatu method yang nama dan signature-nya sama dengan nama dan signature dari suatu method dari superclass ybs. n Method dalam class turunan itu menimpa (override)

method dalam superclass-nya.

n Method mana yang dipanggil pada waktu run (runtime) tergantung pada tipe objek yang bersangkutan

Polymorfisme

n Dalam mendefinisikan method untuk suatu subclass, ada 3 kemungkinan:

n Meng-override method dari superclass. Yaitu: apabila method yang dibuat mempunyai signature yang sama (nama sama dan daftar parameternya sama) dengan suatu method dari superclass-nya.

n Meng-inherit method dari superclass. Method dari superclass yang tidak di-override akan diwariskan secara otomatis kepada subclass.

(20)

SDA/REVIEW-JAVA/DN/V1.0/39

Polymorfisme

n Ketika terjadi pemanggilan sebuah method,

class/type dari object tersebut yang menentukan implementasi method mana yang digunakan. n Ada tidaknya sebuah method ditentukan dari tipe

variabel reference-nya

n Dalam mengakses sebuah field, ditentukan dari tipe variabel reference-nya

n Keyword “super” berlaku sebagai reference ke object tetapi dianggap sebagai instance dari superclass-nya.

n Polimorfisme juga berarti bahwa suatu object dapat mempunyai berbagai bentuk, yaitu: sebagai object dari classnya sendiri ataupun sebagai object dari superclassnya.

Kelas Abstract

n Kelas abstract berguna untuk menampung semua aspek umum yang dimiliki oleh semua subclass-nya. n Suatu method dapat didefinisikan tanpa

mengimplementasikannya dengan membuat method itu abstract. Method abstract tidak punya body; body-nya diganti dengan tanda titik koma (;).

n Class yang mengandung method abstract harus menjadi class abstract.

(21)

SDA/REVIEW-JAVA/DN/V1.0/41

Kelas Abstract

n Jika subclass dari class abstract tidak

mengimplementasikan semua method abstract yang diwariskan dari superclass-nya, maka subclass itu bersifat abstract juga.

public abstract class Bentuk {

public abstract double luas (); public abstract double keliling (); }

public class Lingkaran extends Bentuk {

protected double radius; public Lingkaran (double r) { radius = r;

}

public Lingkaran () { this (1.0); }

public double luas ()

{ return Math.PI * radius * radius; }

public double keliling ()

{ return 2 * Math.PI * radius; }

(22)

SDA/REVIEW-JAVA/DN/V1.0/43

public class SegiEmpat extends Bentuk {

protected double lebar, tinggi;

public SegiEmpat (double lebar, double tinggi) { this.lebar = lebar; this.tinggi = tinggi; } public SegiEmpat () { this (1.0, 1.0); }

public double luas () { return lebar * tinggi; }

public double keliling ()

{ return 2 * (lebar + tinggi); }

public double getLebar () { return lebar;

}

public double getTinggi () { return tinggi;

} }

public class BujurSangkar extends SegiEmpat

{

public BujurSangkar (double sisi) {

super (sisi, sisi);

}

public BujurSangkar () {

this (1.0);

}

(23)

SDA/REVIEW-JAVA/DN/V1.0/45

public class CobaBentuk {

public static void main (String args[]) {

Bentuk[] bentuk2 = new Bentuk[3]; bentuk2[0] = new Lingkaran (3.0); bentuk2[1] = new SegiEmpat (1.0, 2.0); bentuk2[2] = new BujurSangkar (4.0); double luasTotal = 0.0;

double kelilingTotal = 0.0;

for (int ii = 0; ii < bentuk2.length; ii++) { luasTotal += bentuk2[ii].luas();

kelilingTotal += bentuk2[ii].keliling(); }

System.out.println ("Luas total = " + luasTotal); System.out.println ("Keliling total = "

+ kelilingTotal); }

}

Insertion Sort (1)

n Masih ingat cara mengurutkan dengan cara menyisipkan? Seperti bermain kartu.

n

8 | 5 9 2 6 3

n

5 8 | 9 2 6 3

n

5 8 9 | 2 6 3

n

2 5 8 9 | 6 3

n

2 5 6 8 9 | 3

n

2 3 5 6 8 9 |

(24)

SDA/REVIEW-JAVA/DN/V1.0/47

Insertion Sort (2)

n Insertion sort untuk mengurutkan array integer

public static void insertionSort (int[] a) {

for (int ii = 1; ii < a.length; ii++) { int jj = ii;

while (( jj > 0) && (a[jj] < a[jj - 1])) { int temp = a[jj];

a[jj] = a[jj - 1]; a[jj - 1] = temp; jj--; } } }

n Perhatikan: ternyata nilai di a[jj] selalu sama dapat dilakukan efisiensi di sini.

Insertion Sort (3)

n Insertion sort yang lebih efisien

public static void insertionSort2 (int[] a) {

for (int ii = 1; ii < a.length; ii++) { int temp = a[ii];

int jj = ii;

while (( jj > 0) && (temp < a[jj - 1])) { a[jj] = a[jj - 1];

jj--; }

(25)

SDA/REVIEW-JAVA/DN/V1.0/49

Insertion Sort (4)

n Bagaimana jika diperlukan method untuk mengurutkan array dari String, array dari Lingkaran (berdasarkan radiusnya) ?

n Apakah mungkin dibuat suatu method yang bisa dipakai untuk semua jenis object?

n Ternyata supaya object bisadiurutkan, harus bisa dibandingkan dengan object lainnya (mempunyai

behavior bisa dibandingkan - comparable method). n Solusinya:

n Gunakan interface yang mengandung method yang dapat membandingkan dua buah object.

Interface

n Suatu class selain bisa meng-extends satu

superclass, ia bisa meng-implements satu atau lebih

interface.

n Aspek-aspek umum “comparable” dituangkan dalam suatu interface dalam package java.lang:

public interface Comparable {

public int compareTo (Object ob); }

n Akan mengembalikan nilai integer:

•negatif: object-nya lebih kecil dibandingkan dengan parameternya.

•0: sama besarnya

(26)

SDA/REVIEW-JAVA/DN/V1.0/51

Interface: Contoh

public class LingkaranComparable extends Lingkaran implements Comparable

{

public LingkaranComparable (double r) { super (r);

}

public int compareTo (Object other) {

LingkaranComparable otherLingkaran = (LingkaranComparable) other;

if (radius < otherLingkaran.getRadius ()) { return -1;

} else if (radius > otherLingkaran.getRadius ()) { return 1; } else { return 0; // kasus == } } }

Insertion Sort: umum

n Insertion sort yang umum

public static void insertionSort3 (Comparable[] a) {

for (int ii = 1; ii < a.length; ii++) { Comparable temp = a[ii];

int jj = ii; while (( jj > 0)

&& (temp.compareTo (a[jj - 1]) < 0)) {

(27)

SDA/REVIEW-JAVA/DN/V1.0/53

import java.util.*;

public class SortLingkaran

{ public static void main (String args[]) { LingkaranComparable[] ling =

new LingkaranComparable[20]; Random generator = new Random ();

for (int ii = 0; ii < ling.length; ii++) { ling[ii] = new LingkaranComparable ( 1 + generator.nextInt (100));

System.out.print (ling[ii].getRadius () + " "); }

System.out.println (); Sort.insertionSort3 (ling);

for (int ii = 0; ii < ling.length; ii++) {

System.out.print (ling[ii].getRadius () + " "); } System.out.println (); } }

Interface

n Semua method dalam interface bersifat abstract. (Keyword abstract bisa ditulis kalau mau.)

n Semua variabel dalam interface harus bersifat static

dan final (konstan)

n Suatu class meng-implements suatu interface, berarti class itu harus memberikan implementasi untuk setiap method dari interface tersebut.

n Seperti class, interface adalah tipe data. n Interface sering dipakai untuk mendefinisikan

(28)

SDA/REVIEW-JAVA/DN/V1.0/55

Interface

n Suatu interface dapat meng-extends satu atau lebih interface lain. Suatu sub-interface mewarisi semua method abstract dan variabel dari super-interface-nya, dan belum mendefinisikan method abstract baru dan variabel (konstanta) baru.

n Contoh:

public interface DrawingObject

extends Drawable, Transformable { ... }

public class Bentuk

implements DrawingObject { ... }

Exception (1)

n Exception menyatakan bahwa suatu keadaan luar

biasa (exceptional) telah terjadi.

n Object Exception menyimpan informasi tentang suatu kejadian yang diluar keadaan normal.

n throw suatu exception menimbulkan exception n catch suatu exception menangkap exception dan

mengambil tindakan yang diperlukan untuk mengatasi keadaan

(29)

SDA/REVIEW-JAVA/DN/V1.0/57

Exception (2)

n throws menyatakan exception yang dipropagasikan. Digunakan untuk method yang tidak catch exception yang diperiksa (checked exception)

n Exception yang tidak di-catch akan menjalar naik

melewati block dari method, sesuai dengan stack pemanggilan method.

n Exception yang sama sekali tidak di-catch akan

menjalar naik sampai ke method main() dan interpreter Java akan mengeluarkan pesar

error/exception dan stack-trace kemudian berhenti.

Exception

n Exception = suatu objek dari suatu subclass dari class java.lang.Throwable

n Error ⇒ kondisi tak terpulihkan; misalnya: linkage⇒

problem, out of memory

n Exception ⇒ kondisi dapat terpulihkan; misalnya:⇒

EOFException,

ArrayIndexOutOfBoundException. Throwable

Exception Error

(30)

SDA/REVIEW-JAVA/DN/V1.0/59

Exception Handling

n menggunakan statement try/catch/finally

n try menandai block perintah (disebut dengan blok

try) yang mungkin menimbulkan exception yang perlu ditangani.

n Blok try diikuti oleh nol atau lebih blok catch yang bertugas me-catch (“menangkap”) dan menangani tipe exception tertentu.

n Setelah blok catch, boleh ada blok finally yang biasanya berisi perintah-perintah untuk clean-up. Statement-statement dalam blok finally pasti dilaksanakan tak peduli apa yang terjadi dalam blok

try.

n Jika kontrol meninggalkan blok try karena statement

break, continue atau return; blok finally

dilaksanakan sebelum pindah ke tujuan baru.

Contoh Pola Exception Handling

try {

// statement-statement di sini biasanya berjalan tanpa // masalah, tetapi kadang-kadang bisa timbul exception }

catch (SuatuException e1) {

// menangani exception yang bertipe SuatuException atau // sub-kelasnya. Informasi tentang exception terdapat // pada object yang di-reference oleh e1

}

catch (ExceptionLain e2) {

// menangani exception yang bertipe ExceptionLain atau // sub-kelasnya. Informasi tentang exception terdapat // pada object yang di-reference oleh e2

(31)

SDA/REVIEW-JAVA/DN/V1.0/61

Input Output

n Package: java.io

n Bekerja berdasarkan konsep stream

n Stream adalah: suatu barisan (sequence) data yang mempunyai sumber (source) atau tujuan

(destination).

n Stream yang mempunyai sumber disebut input-stream

n Stream yang mempunyai tujuan disebut output-stream

Stream

n Steram: n byte-stream •1 byte = 8 bit n char-stream

•1 char = 16 bit dalam Unicode

n Input stream yang terdiri dari barisan character (dalam format teks) disebut Reader.

n Output stream yang terdiri dari barisan character (dalam format teks) disebut Writer.

(32)

SDA/REVIEW-JAVA/DN/V1.0/63

Akses File

n I/O dalam format teks lebih mudah bagi manusia dan bisa di-edit dengan suatu text-editor (mis: vi, vim, emacs, edit, notepad, pico, dll)

n I/O dalam format binary lebih kompak (ringkas) dan lebih efisien.

n File adalah suatu barisan data dalam format (record tertentu) yang terekam pada suatu medium storage (disk, tape, CD, dll.)

Akses File Teks

n Untuk membaca data teks dari suatu file, kita buat suatu object bertipe FileReader

n Contoh:

FileReader rd =

new FileReader (“input.txt”);

n Untuk menulis data teks ke suatu file, kita buat suatu object bertipe FileWriter

n Contoh:

(33)

SDA/REVIEW-JAVA/DN/V1.0/65

Akses File Biner

n Untuk membaca data biner dari suatu file, kita buat suatu object bertipe FileInputStream

n Contoh:

FileInputStream fis =

new FileInputStream (“input.dat”);

n Untuk menulis data biner ke suatu file, kita buat suatu object bertipe FileOutputStream.

n Contoh:

FileOutputStream fos =

new FileOutputStream (“output.dat”);

Contoh: Pembaca File Teks

import java.io.*; public class BacaFile {

public static void main (String[] args) {

FileReader rd = null;

BufferedReader buffer = null; try {

rd = new FileReader (args[0]); buffer = new BufferedReader (rd); String line = buffer. readLine (); while (line != null) {

System.out.println (line); line = buffer.readLine (); }

(34)

SDA/REVIEW-JAVA/DN/V1.0/67

catch ( FileNotFoundException e) {

System.out.println ("File tidak ditemukan"); }

catch ( IOException e) {

System.err.println ("IO Exception terjadi"); e.printStackTrace ();

}

catch (Exception e) {

System.err.println ("Exception terjadi"); e.printStackTrace (); } finally { if (buffer != null) { try { buffer.close (); } catch (IOException e) { } } } } }

Summary

n Tipe data dalam Java: primitif & reference n Dalam evaluasi sebuah ekspresi, perhatikan

presedensi dan asosiasi operator, tipe operand. n Flow Control: branch

n if, if-else-if

n switch: untuk if-else-if dengan kondisi ==, lebih efisien

n operator ?: untuk if-else sederhana n Flow Control: looping

(35)

SDA/REVIEW-JAVA/DN/V1.0/69

Summary (2)

n Class & Object

n Object adalah personifikasi dari class.

n Perilaku dari object direpresentasikan dalam method.

n Keadaan dari object direpresentasikan dalam field/variabel instance.

n Tidak efisien untuk memperbesar array n Class abstract

n Interface

n Exception digunakan untuk mengindikasikan suatu keadaan luar biasa telah terjadi.

n Input output

Further Reading

n http://pala.acad.cs.ui.ac.id/

n Bahan-bahan KP1

n Data Structures & Problem Solving using Java. Chapter 1 - 4

(36)

SDA/REVIEW-JAVA/DN/V1.0/71

What’s Next

Referensi

Dokumen terkait

Kepala Bagian Industri Kimia Agro dan Hasil Hutan (IKAHH), mempunyai tugas membantu Kepala Dinas dalam bidang pemberian bimbingan sarana, usaha, produksi, pembinaan industry kecil

Pendidikan Kecakapan Hidup (PKH) bagi Lembaga Kursus dan Pelatihan dan satuan pendidikan lainnya adalah program yang diselenggarakan oleh Lembaga Kursus dan Pelatihan maupun

Untuk membuat positif cetakan apabila negatif cetakan sudah benar - benar selesai, dari negatif cetakan tadi pertama kita olesi bahan pemisah kemudian tunggu satu

S : - Klien mengatakan kadang – kadang lupa cara control halusinasi Kalo habis di ECT - Klien mengatakan sudah mengerti untuk cara control halusinasi

Lalu memberikan advisnya tentang tata ruang yang lebih membuat sirkulasi udara rumah kita menjadi lebih bagus, maka insya Allah kita akan mengubah tata letak rumah kita

Penelitian ini menggunakan prinsip dasar etik yang menjadi landasan penelitian yaitu, menghormati orang (respect for person) yaitu peneliti tidak memaksa responden

Kode Kegiatan/ Output/ Sub Output/ Paket/ Sub Paket Vol Satuan Pemanfaat Tahun Atribut Kesiapan DED

• Lakukan gerak langkah arah mistar dan lakukan tolakan tegak lurus ke atas dengan posisi badan membelakangi mistar, lalu mendarat pada matras menggunakan punggung