MODUL Pemrograman 3_2

41
A. Pengenalan Array Disemester sebelumnya, kita telah mendiskusikan bagaimana cara pendeklarasian berbagai macam variabel dengan menggunakan tipe data primitif. Dalam pendeklarasian variabel, kita sering mengg unak an sebua h tipe data besert a nama vari abe l atau identifier yang uni k, dimana untuk menggunakan variabel tersebut, kita akan memanggil dengan nama identifier-nya. Sebagai contoh, kita memiliki tiga variabel dengan tipe data int yang memiliki identifier yang berbeda untuk tiap variabel. int number1; int number2; int number3; number1 = 1; number2 = 2; number3 = 3; Seperti yang dapa t Anda perhatika n pada contoh diatas , hanya untuk meng inisialisa si dan menggunakan variabel terutama pada saat variabel-variabel tersebut memiliki tujuan yang sama, dirasa sangat membingungkan. Di Java maupun di bahasa pemrograman yang lain, mereka memiliki ke ma mpua n un tuk me ng gu nak an sa tu va ria be l ya ng dap at me ny impa n se buah dat a lis t da n kemudian memanipulasinya dengan lebih efektif. Tipe variabel inilah yang disebut sebagai array. Array adalah struktur data yang digunakan untuk proses pengumpulan data yang semua tipe yang sama. Gambar 1: Contoh dari Integer Array Sebua h array akan menyimp an beberapa item data yang memiliki tipe data sama didalam sebuah blok mem ori yang berdekatan yang kemudian dibagai men jadi beberapa slot. Bayangkanlah array adalah sebuah variabel – sebuah lokasi memori tertentu yang memiliki satu nama sebagai identifier, akan tetapi ia dapat menyimpan lebih dari sebuah nilai.

Transcript of MODUL Pemrograman 3_2

Page 1: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 1/41

A. Pengenalan Array

Disemester sebelumnya, kita telah mendiskusikan bagaimana cara pendeklarasian berbagai

macam variabel dengan menggunakan tipe data primitif. Dalam pendeklarasian variabel, kita sering

menggunakan sebuah tipe data beserta nama variabel atau identifier yang unik, dimana untuk 

menggunakan variabel tersebut, kita akan memanggil dengan nama identifier-nya.

Sebagai contoh, kita memiliki tiga variabel dengan tipe data int yang memiliki identifier 

yang berbeda untuk tiap variabel.

int number1;

int number2;

int number3;

number1 = 1;

number2 = 2;

number3 = 3;

Seperti yang dapat Anda perhatikan pada contoh diatas, hanya untuk menginisialisasi dan

menggunakan variabel terutama pada saat variabel-variabel tersebut memiliki tujuan yang sama,

dirasa sangat membingungkan. Di Java maupun di bahasa pemrograman yang lain, mereka memiliki

kemampuan untuk menggunakan satu variabel yang dapat menyimpan sebuah data list dan

kemudian memanipulasinya dengan lebih efektif. Tipe variabel inilah yang disebut sebagai array.

Array adalah struktur data yang digunakan untuk proses pengumpulan data yang semua tipe

yang sama.

Gambar 1: Contoh dari Integer Array

Sebuah array akan menyimpan beberapa item data yang memiliki tipe data sama didalam

sebuah blok memori yang berdekatan yang kemudian dibagai menjadi beberapa slot. Bayangkanlaharray adalah sebuah variabel – sebuah lokasi memori tertentu yang memiliki satu nama sebagai

identifier, akan tetapi ia dapat menyimpan lebih dari sebuah nilai.

Page 2: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 2/41

B. Pendeklarasian Array

Array harus dideklarasikan seperti layaknya sebuah variabel. Apabila Anda mendeklarasikan

array, Anda harus membuat sebuah list dari tipe data, yang diikuti oleh tanda kurung buka dan

kurung tutup, yang diikuti oleh nama identifier. Sebagai contoh,

int [] nilai;

atau Anda dapat menempatkan kurung buka dan kurung tutupnya setelah identifier. Sebagaicontoh,

int nilai [];

Setelah pendeklarasian, kita harus membuat array dan menentukan berapa panjangnya

dengan sebuah konstruktor. Proses ini di Java disebut sebagai instantiation ( Kata dalam Java yang

 berarti membuat ). Untuk meng-instantiate sebuah obyek, kita membutuhkan sebuah konstruktor.

Kita akan membicarakan lagi mengenai instantiate obyek dan pembuatan konstruktor pada bagian

selanjutnya. Perlu dicatat, bahwa ukuran dari array tidak dapat diubah setelah Anda

menginisialisasinya. Sebagai contoh,

//deklarasi

int umur[ ];

//instantiate obyek 

umur = new int[100];

Page 3: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 3/41

atau bisa juga ditulis dengan,

//deklarasi dan instantiate obyek 

int umur [ ] = new int[100];

Pada contoh diatas, deklarasi akan memberitahukan kepada compiler Java, bahwa identifier  umur

akan digunakan sebagai nama array yang berisi data-data integer, dan kemudian untuk membuat

atau meng-instantiate sebuah array baru yang terdiri dari 100 elemen. Selain menggunakan sebuah

keyword baru untuk meng-instantiate array, Anda juga dapat secara otomatis mendeklarasikan array,

membangunnya, kemudian memberikan sebuah value/ nilai.

Sebagai contoh,

//membuat sebuah array yang berisi variabel-variabel //boolean pada sebuah identifier. Array ini

terdiri dari 4 //elemen yang diinisilisasikan sebagai value //{true,false,true,false}

boolean hasil [ ] ={ true, false, true, false };

//Membuat sebuah array yang terdiri dari penginisialisasian //4 variabel double bagi value

{100,90,80,75}

double [ ] nilai = {100, 90, 80, 75};

//Membuat sebuah array String dengan identifier days. Array //ini terdiri dari 7 elemen.

 String hari [ ] = { “Senin”, “Selasa”, “Rabu”, “Kamis”, “Jumat”, “Sabtu”, “Minggu”};

Page 4: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 4/41

Berikut ini adalah contoh, bagaimana untuk mencetak seluruh elemen didalam array. Dalam contoh

ini digunakanlah loop, sehingga kode kita menjadi lebih pendek.

Praktikum I

public class ContohArray {

public static void main( String [ ] args ) {

//deklarasi array

int [ ] umur = new int[100];

//melooping array hingga i<100

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

System.out.print( umur [i] );

 }

 }

 }

C. Panjang Array

Page 5: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 5/41

Untuk mengetahui berapa banyak element didalam sebuah array, Anda dapat menggunakan

length (panjang) field dalam array. Panjang field dalam array akan mengembalikan ukuran dari array

itu sendiri. Sebagai contoh,

arrayName.length

Pada contoh sebelumnya, kita dapat menuliskannya kembali seperti berikut ini,

Praktikum II

public class ContohSample {

public static void main( String [] args ) {

//deklarasi array

int[] umur = new int[100];

//melooping array sesuai dengan panjang (length) deklarasi array yang di atas

for( int i=0; i<umur . length ; i++ ){

System.out.print( umur[i] );

 }

 }

 }

D. Array Multidimensi

Page 6: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 6/41

Array multidimensi diimplementasikan sebagai array didalam array. Array multidimensi

dideklarasikan dengan menambahkan jumlah tanda kurung setelah nama array. Sebagai contoh,

// Elemen 512 x 128 dari integer array

int [][] twoD = new int[512][128];

// karakter array 8 x 16 x 24

char [][][] threeD = new char[8][16][24];

// String array 4 baris x 2 kolom

String [][] dogs = { { "terry", "brown" },

 { "Kristin", "white" },

 { "toby", "gray"},

 { "fido", "black"} };

Untuk mengakses sebuah elemen didalam array multidimensi, sama saja dengan mengakses array

satu dimensi. Misalnya saja, untuk mengakses element pertama dari baris pertama didalam array

dogs, kita akan menulis,

System.out.print( dogs[0][0] );

Kode diatas akan mencetak String “terry” di layar.

Page 7: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 7/41

Latihan:

Hari dalam seminggu

1. Buatlah sebuah String array yang akan menginisialisasi 7 hari dalam seminggu. Sebagai contoh,

String days[] = {“Monday”, “Tuesday”….}; gunakan while-loop, kemudian print semua nilai

dari array (Gunakan juga untuk do-while dan for-loop)Using a while-loop.

2. Buku Alamat Berikut ini adalah array multidimensi yang menyatakan isi dari sebuah buku

alamat: String entry = {{"Florence", "735-1234", "Manila"}, {"Joyce", "983-3333", "Quezon

City"}, {"Becca", "456-3322", "Manila"}};

Cetak buku alamat tersebut dalam format berikut ini:

Page 8: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 8/41

 

 Name : Florence

Tel. # : 735-1234

Address : Manila

 Name : Joyce

Tel. # : 983-3333

Address : Quezon City

 Name : Becca

Tel. # : 456-3322

Address : Manila

Page 9: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 9/41

Pengenalan Input/Output (I/O)

Program komputer bisa berguna jika ia bisa berinteraksi dengan dunia lain. Interaksi di sini

maksudnya input/output atau I/O. Pada bab ini, kita akan melihat input output pada file dan koneksi

  jaringan (network). Pada Java, input/output pada file dan jaringan dilakukan berdasarkan aliran

(stream), di mana semua objek dapat melakukan perintah I/O yang sama. Standar output

(System.out) dan standar input (System.in) adalah contoh aliran.

BufferedReader

Menggunakan BufferedReader untuk mendapatkan input

Pada bagian ini, kita akan menggunakan class BufferedReader yang berada di package

 java.io untuk mendapatkan input dari keyboard. Berikut ini adalah langkah-langkah yang diperlukan

untuk mendapatkan input dari keyboard:

1. Tambahkan di bagian paling atas code Anda:

import java.io.*;

2. Tambahkan statement berikut:

BufferedReader dataIn = new BufferedReader(new InputStreamReader( System.in) );

3. Deklarasikan variabel String temporary untuk mendapatkan input, dan gunakan fungsi readLine()

untuk mendapatkan input dari keyboard. Anda harus mengetikkannya di dalam blok try-catch:

try{

String temp = dataIn.readLine();

 }

catch( IOException e ){

System.out.println(“Error in getting input”);

 }

Berikut ini adalah source code lengkapnya:

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.io.IOException;

public class GetInputFromKeyboard

 {

public static void main( String[] args ){

BufferedReader dataIn = new BufferedReader(new

InputStreamReader( System.in) );

String name = "";System.out.print("Please Enter Your Name:");

try{

name = dataIn.readLine();

Page 10: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 10/41

}catch( IOException e ){

System.out.println("Error!");

 }

System.out.println("Hello " + name +"!");

 }

 }

Berikutnya akan penjelasan setiap baris dari code tersebut:

Statement,

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.io.IOException;

menjelaskan bahwa kita akan menggunakan class BufferedReader, InputStreamReader dan

IOException yang berada di  java.io package. Java Application Programming Interface (API)

 berisi ratusan class yang sudah didefinisikan sebelumnya yang dapat digunakan untuk program

Anda. Class-class tersebut dikumpulkan di dalam packages. Packages   berisi class yang

mempunyai fungsi yang saling berhubungan. Seperti pada contoh di atas,   java.io package

mengandung class-class yang memungkinkan program untuk melakukan input dan output data.

Pernyataan di atas juga dapat ditulis sebagai berikut,

import java.io.*;

NB : Perintah tersebut berarti mengimport semua kelas dalam paket java.io.*(tanda * berarti semua)

yang akan mengeluarkan semua class yang berada dalam package, dan selanjutnya kita bisa

menggunakan class-class tersebut dalam program kita.

Dua statement selanjutnya,

public class GetInputFromKeyboard

 {

public static void main( String[] args ){

kita sudah mempelajari pada pelajaran sebelumnya. Pernyataan ini mendeklarasikan class

 bernama GetInputFromKeyboard dan kita mendeklarasikan method main.

Dalam statement,

BufferedReader dataIn = new BufferedReader(new

InputStreamReader( System.in) );

kita mendeklarasikan sebuah variabel bernama dataIn dengan tipe class BufferedReader.

Jangan mengkhawatirkan tentang maksud dari syntax saat ini. Kita akan menjelaskannya pada

akhir pembahasan. Sekarang, kita akan mendeklarasikan variabel String dengan identifier name,

String name = "";

Page 11: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 11/41

Pernyataan di atas merupakan tempat untuk menyimpan input dari user. Nama variabel

diinisialisasi sebagai String kosong "". Sebaiknya kita selalu menginisialisasi sebuah variabel

setelah kita mendeklarasikannya. Baris berikutnya adalah memberikan output sebuah String

 pada layar yang menanyakan nama user.

System.out.print("Please Enter Your Name:");

Sekarang, blok di bawah ini merupakan try-catch block,

try{

name = dataIn.readLine();

 }catch( IOException e ){

System.out.println("Error!");

 }

Pada baris ini menjelaskan bahwa kemungkinan terjadi error pada pernyataan,

name = dataIn.readLine();

akan ditangkap. Kita akan membahas tentang penanganan exception pada bab selanjutnya dari

 pembahasan ini, tetapi untuk sekarang, Anda cukup mencatat bahwa Anda perlu menambahkan

kode ini untuk menggunakan method readLine() dari BufferedReader untuk mendapatkan input

dari user. Selanjutnya kembali ke pernyataan,

name = dataIn.readLine();

method diatas memanggil dataIn.readLine(), mendapatkan input dari user dan memberikan

sebuah nilai String. Nilai ini akan disimpan ke dalam variabel name, yang akan kita gunakan

 pada statement akhir untuk menyambut user,

System.out.println("Hello " + name + "!");

PRAKTIKUM 1

import java.io.*;

class TanpaArray

  { public static void main(String[] args)

{ int max=Integer.MIN_VALUE;

int min=Integer.MAX_VALUE;

int n=1, x, jml=0;

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

System.out.println("Masukkan data ke-"+n+" : ");

try

{ while((x=Integer.parseInt(br.readLine()))!=0)

{ if(x>max) max=x;if(x<min) min=x;

jml+=x;

System.out.println("Masukkan angka ke-"+(++n)+

Page 12: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 12/41

" [ketik 0 untuk STOP] :");

}

} catch(Exception e)

{

}

double rata2=(double) jml/(n-1);

System.out.println("Total : "+jml);System.out.println("Rata-rata : "+rata2);

System.out.println("Angka terkecil : "+min);

System.out.println("Angka terbesar : "+max);

}

 }

Praktikum II

import java.io.*;public class ProgramKasir

 {

public static void main(String args[])throws IOException

 {

//membuat turunan class untuk input dari user

BufferedReader dataIn=new BufferedReader(new InputStreamReader(System.in));

System.out.print("Berapa Harga Barang :");

int a = Integer.parseInt(dataIn.readLine());

System.out.print("Berapa Jumlah Barang yang diambil:");

int b = Integer.parseInt(dataIn.readLine());

int total =(a*b);

System.out.println("Harga barang = Rp "+a);

System.out.println("Jmlah barang = "+b);

System.out.println("Total harga sebelum diskon =Rp"+total);

if(total>10000 & total<=100000)

 {

System.out.print("Total harga yang harus dibayar (setelah diskon) =Rp ");

System.out.println(total-(total * 0));

 }

else if(total>100000 & total<=500000)

 {

System.out.print("Total harga yang harus dibayar (setelah diskon) =Rp ");

System.out.println(total-(total * 0.05));

 }

else if(total>500000 & total<=1000000)

 {

System.out.print("Total harga yang harus dibayar (setelah diskon) =Rp ");System.out.println(total-(total * 0.1));

 }

else

Page 13: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 13/41

 {

System.out.print("Total harga yang harus dibayar (setelah diskon) =Rp ");

System.out.println(total-(total * 0.15));

 }

 }

 }

Page 14: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 14/41

Jenis InputStream dan OutputStream

Package Java I/O

Java IO dibutuhkan ketika kita membaca dan menulis, baik ditampilkan pada layar maupundisimpan pada file.

Dalam pemrograman, java IO dibutuhkan ketika kita hendak mengirim data maupun membaca

data dari server.

Input/Output dalam java dipaketkan dalam java.io

Selain kelas-kelas, paket ni juga mengandung interface yang menangani aliran (stream) data

input dan output.

Ada 4 kelas abstrak dasar 

 – Reader

 – Writer

 – InputStream

 – OutputStream

Reader dan Writer digunakan untuk data Teks

InputStream dan OutputStream digunakan untuk data biner 

Interaksi suatu program dengan dunia lain sering disebut input/output atau I/O. Sejak dulu,

salah satu tantangan terbesar untuk mendesain bahasa pemrograman baru adalah mempersiapkan

fasilitas untuk melakukan input dan output.  Salah satu kemajuan terbesar dalam sejarah

 pemrograman adalah adanya konsep (atau abstraksi) untuk memodelkan perangkat I/O. Dalam Java,

abstraksi ini disebut dengan aliran (stream). Bagian ini akan memperkenalkan tentang aliran, akan

tetapi tidak menjelaskan dengan komplit. Untuk lebih lengkapnya, silakan lihat dokumen resmi

Java.

Stream adalah suatu abstraksi untuk data input dan output

 – Tidak peduli dari mana input berasal atau kemana output akan pergi

Page 15: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 15/41

Ketika berhubungan dengan input/output, kita harus ingat bahwa ada dua kategori data

secara umum : data yang dibuat oleh mesin, dan data yang bisa dibaca manusia. Data yang dibuat

mesin ditulis dengan model yang sama dengan bagaimana data tersebut disimpan di dalam

komputer, yaitu rangkaian nol dan satu. Data yang bisa dibaca manusia adalah data dalam bentuk 

rangkaian huruf. Ketika kita membaca suatu bilangan 3.13159, kita membacanya sebagai rangkaian

huruf yang kita terjemahkan sebagai angka. Angka ini akan ditulis dalam komputer sebagai

rangkaian bit yang kita tidak mengerti.

InputStream

Beberapa kelas turunan dari InputStream dapat dirangkum dalam tabel di bawah ini :

Kelas KegunaanArgumen yang dibutuhkan

untuk membuat objek 

ByteArrayInputStreamMenggunakan buffer pada memori

sebagai aliran input

Buffer yang akan digunakan

sebagai aliran input

StringBufferInputStreamMengubah string menjadi

InputStream

Suatu String (di dalamnya

sebenarnya menggunakan

StringBuffer)

FileInputStreamUntuk membaca informasi dari

dalam file

String yang berupa nama suatu

file, atau objek bertipe File atau

FileDescriptor

PipedInputStream Menghasilkan data yang ditulis

oleh PipedOutputStream.

Mengimplementasi konsep

Objek PipedOutputStream

Page 16: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 16/41

"piping". Bisa digunakan untuk 

multi-threading

SequenceInputStream

Menggabungkan dua atau lebih

InputStream menjadi satu

InputStream

Dua atau lebih objek bertipe

InputStream atau kontainer 

 bertipe Enumeration yang berisi

InputStream yang akan

digabungkan

FilterInputStream

Kelas abstrak yang merupakan

interface dari beberapa kelas bantu

untuk menggunakan InputStream

lain

 

FilterInputStream adalah lapisan di atas InputStream yang berguna untuk memberi landasan

 pada kelas-kelas dekorator di atas. Kenapa dekorator? Karena kelas-kelas ini hanya memberikan

fungsionalitas tambahan, akan tetapi tidak mengubah bagaimana I/O itu sendiri bekerja. Seperti

disebutkan sebelumnya, bahwa kelas dasar  InputStream dan OutputStream hanya memiliki

metode-metode paling sederhana. Kelas-kelas ini memperbanyak metode baca/tulis untuk 

kemudahan pemrograman.

Kelas FilterInputStream sendiri terdiri dari beberapa jenis, yang bisa dirangkum dalam tabel berikut ini :

Kelas Kegunaan

Argumen yang

dibutuhkan untuk 

membuat objek 

DataInputStream

Digunakan bersama-sama dengan

DataOutputStream sehingga kita bisa menulis

tipe data primitif, kemudian membacanya

kembali tanpa harus diformat sendiri

InputStream

BufferedInputStream

Digunakan untuk menghindari pembacaan

langsung dari media secara fisik setiap kali

 perintah read() diberikan. Atau dengan kata

lain "gunakan buffer" untuk baca tulis

InputStream dengan

kemungkinan

menentukan besar buffer 

sendiri

LineNumberInputStream

Mencatat nomor baris dalam InputStream. Kita

 bisa menggunakan perintah getLineNumber()

dan setLineNumber(int)

InputStream

PushBackInputStream Memiliki satu byte buffer sehingga kita bisa InputStream

Page 17: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 17/41

meletakkan kembali karakter yang sudah diambil

(dibaca)

OutputStream

Beberapa kelas turunan dari OutputStream dapat dirangkum dalam tabel di bawah ini :

Kelas KegunaanArgumen yang dibutuhkan

untuk membuat objek 

ByteArrayOutputStream

Membuat buffer dalam memori. Semua

data yang kita kirim akan disimpan di

memori ini.

Opsional untuk memberikan

 besar buffer yang akan

disiapkan

FileOutputStream Untuk menulis informasi ke dalam file

String yang berupa nama

suatu file, atau objek bertipe

File atau FileDescriptor

PipedOutputStream

Informasi yang kita kirim di aliran output

ini akan berakhir pada objek bertipe

PipedInputStream. Mengimplementasi

konsep "piping". Bisa digunakan untuk 

multi-threading

Objek PipedInputStream

FilterOutputStream

Kelas abstrak yang merupakan interface

dari beberapa kelas bantu untuk 

menggunakan OutputStream lain.

 

Kelas FilterOutputStream sendiri terdiri dari beberapa jenis, yang bisa dirangkum dalam tabel

 berikut ini :

Kelas Kegunaan

Argumen yang

dibutuhkan untuk 

membuat objek 

DataOutputStream

Digunakan bersama-sama dengan

DataInputStream sehingga kita bisa menulis

tipe data primitif, kemudian membacanya

kembali tanpa harus diformat sendiri

OutputStream

Page 18: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 18/41

PrintStream

Untuk mengeluarkan output yang sudah

diformat. DataOutputStream hanya

menangani bagaimana data disimpan sehingga

 bisa diambil kembali. PrintStream lebih

 berkonsentrasi pada "tampilan", sehingga data

yang ditulis bisa dibaca dengan baik.

OutputStream dengan

tambahan opsi boolean

untuk memerintahkan buffer 

akan dikosongkan (flush)

setiap kali baris baru ditulis.

BufferedOutputStream

Digunakan untuk menghindari penulisan

langsung dari media secara fisik setiap kali

 perintah write() diberikan. Atau dengan kata

lain "gunakan buffer" untuk baca tulis. Kita

 bisa menggunakan perintah flush() untuk 

mengosongkan buffer dan mengirimkan

hasilnya ke media fisik.

OutputStream dengan

kemungkinan menentukan

 besar buffer sendiri

Class Stream

Byte Stream : Kelas dan interface ini digunakan untuk menangani data biner.

Character Stream : kelompok kelas ini digunakan untuk menangani proses baca tulis

karakter, termasuk Unicode. Kelas ini merupakan pengembangan dari kelas byte steam

sehingga lebih efisien.

Stream Standard

Kelas java.lang.System berkaitan standar input, output dan error.

System.in merupakan objek dari InputStream

System.out dan System.err merupakan objek dari PrintStream.

Dalam java cara membaca inputan dari keyboard adalah menggunaka System.in. Agar 

mempermudah proses makan objek System.in dibungkus dengan objek BuffererReader.

BufferedReader br = new BufferedReader

(newInputStreamReader(System.in));

Kita telah memperoleh obyek untuk menangani aliran karakter (character stream) yang

memiliki method-method seperti misalnya read() untuk membaca inputan karakter. Jika mencapai

end of stream maka akan menghasilkan nilai -1.Contoh:

Page 19: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 19/41

PRAKTIKUM 2

import java.io.*;

 public class ObjectStreamExample{ 

 public static void main(String args[]){ 

try {  ObjectInputStream in = new ObjectInputStream(new FileInputStream(“myFile3.dat”));

String s = (String)in.readObject();

in.close();

System.out.println(s);

 }

catch(IOException e ) { 

System.out.println (“ Error reading the specified file. ” ) ;

 }

}

 }

Baca string dari text

import java.io.*;

class BacaStringDariFile { 

 public static void main(String args[]) { 

try { 

FileInputStream fstream = new FileInputStream("test.txt");//nama objeknya fsstream

DataInputStream dataInput = new DataInputStream(fstream);

while (dataInput.available() != 0)

String data=dataInput.readLine();

System.out.println (data);

}

dataInput.close();

}

catch (Exception e)

System.err.println("File input error");

 }} }

Tulis Ke File

import java.io.*;

class TulisKeFile

 public static void main(String args[])

{  FileOutputStream out; // declare a file output object 

PrintStream p; // declare a print stream object 

try

Page 20: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 20/41

out = new FileOutputStream("d:/myfile.doc");

// Connect print stream to the output stream

p = new PrintStream( out );

p.println ("ini string yang ditulis ke file");

p.println("bla,,,bla,,,");

p.close();}

catch (Exception e)

System.err.println ("Error writing to file");

}

System.out.println("Tulis ke file OK");

 }

 Harga Buncis

import java.io.*;class HargaBuncis

 public static void main(String args[])

String x;

int harga=0,jumlah=0,n=0; // cobain kalau int harga,jumlah,n;

try

FileInputStream fstream = new FileInputStream("d:/hargabuncis.txt");

DataInputStream dataInput = new DataInputStream(fstream);

while (dataInput.available() !=0) { x=dataInput.readLine();

harga=Integer.parseInt(x);

n+=1;//n=n+1;

jumlah=jumlah+harga;

System.out.println ("Harga Buncis hari ke "+n+" "+harga);

}

dataInput.close();

}

catch (Exception e)

System.err.println("File input error");

}

double rata2= jumlah/n;

double rata3= (double) jumlah/n;

// cobain kalau pake double rata2=jumlah/n; hasilnya spt apa?

System.out.println ("Harga Buncis rata-rata "+rata2);

System.out.println ("Harga Buncis rata-rata "+rata3);

System.out.printf("harga buncis rata-rata adalah %.2f",rata3);

 }

 }

TANPA ARRAY 

Page 21: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 21/41

import java.io.*;

class TanpaArray

{ public static void main(String[] args)

{ int max=Integer.MIN_VALUE;

int min=Integer.MAX_VALUE;

int n=1, x, jml=0;

BufferedReader br = new BufferedReader(new InputStreamReader(System.in));System.out.println("Masukkan data ke-"+n+" : ");

try

{ while((x=Integer.parseInt(br.readLine()))!=0)

{ if(x>max) max=x;

if(x<min) min=x;

jml+=x;

System.out.println("Masukkan angka ke-"+(++n)+

" [ketik 0 untuk STOP] :");

}

} catch(Exception e)

{ }

double rata2=(double) jml/(n-1);

System.out.println("Total : "+jml);

System.out.println("Rata-rata : "+rata2);

System.out.println("Angka terkecil : "+min);

System.out.println("Angka terbesar : "+max);

}

 }

import java.io.*;

class HitungNilai

 public static void main(String[] args)

{ String str;

int tgs,uts,uas;

double nilai;

String nilaiHuruf;

try

{ FileReader fr = new FileReader("d:/coba.txt");

//FileReader fr = new FileReader("testdata.txt");

BufferedReader br = new BufferedReader(fr);

while((str=br.readLine()) != null)

{ tgs = Integer.parseInt(str.substring(1,3));

uts = Integer.parseInt(str.substring(4,6));

uas = Integer.parseInt(str.substring(7,9));

nilai=(20*tgs+30*uts+50*uas)/100.0;

// tambahin di sini untuk konversi jadi nilai huruf 

if (nilai > 80){ 

nilaiHuruf = "A";

} else if (nilai > 70){ 

nilaiHuruf = "B";

Page 22: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 22/41

} else if (nilai > 60){ 

nilaiHuruf = "C";

} else { 

nilaiHuruf = "E";

}

System.out.printf(" tugas %d uts %d uas %d nilai %.2f nilaiHuruf 

%s\n",tgs,uts,uas,nilai,nilaiHuruf);// %d mengambil type bil.bulat }

br.close();

} catch(IOException e)

{ System.err.println("File read error");

}

 }

 }

Kelas Reader/Writer

• Kelas Reader/Writer bekerja pada stream teks (bahasa apapun)

- Disebut juga character stream 

- Menangani konversi teks Unicode secara otomatis.

Berikut ini kelas WRITER  dan turunannya:

Kelas writer dan turunannya

Page 23: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 23/41

Berikut ini kelas READER dan turunannya

Java Scanner

Sebuah objek scanner dapat mengurai input yang dimasukkan melalui keyboard atau dari sebuah

file. Scanner memisahkan inputnya menjadi menjadi token terpisah (yang biasanya dipisahkan

dengan spasi), dan kemudian mengembalikannya pada satu waktu. Scanner menyediakan metode

untuk mengubah token menjadi nilai dari tipe yang berbeda.

Kita dapat menggunakan utility scanner dalam dua cara, yaitu :

1. Untuk membaca dari keyboard, menggunakan perintah di bawah ini

Scanner input = new Scanner(System.in);

2. Untuk membaca dari sebuah file, menggunakan perintah di bawah ini

Scanner input = new Scanner(new FileStream(“filename.txt”));

Page 24: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 24/41

Contoh program untuk input bilangan bulat (integer)

import java.util.Scanner;

class input2{ 

 public static void main(String[] args)

Scanner sc = new Scanner(System.in);

int luas;

System.out.print(“Masukkan Panjang : “); Integer panjang = sc.nextInt();

System.out.print(“Masukkan Lebar : “); Integer lebar = sc.nextInt();

luas = panjang * lebar;

System.out.println(“Luas Persegipanjang : “+ luas);

 }

 }

Contoh program untuk input string dan bilangan bulat 

import java.util.Scanner;

class input3

 public static void main(String[] args)

Scanner sc = new Scanner(System.in);

double Nilai_Akhir;

System.out.print(“Masukkan NIM Anda : “); String NIM = sc.next();

System.out.print(“Masukkan Nama Anda : “); String Nama = sc.next();

System.out.print(“Masukkan UTS : “); Integer UTS = sc.nextInt();

System.out.print(“Masukkan UAS : “); Integer UAS = sc.nextInt();

 Nilai_Akhir = 0.4*UTS + 0.6*UAS;

System.out.println(“”);

System.out.println(“”);

System.out.println(“NIM Anda : “+ NIM);

System.out.println(“Nama Anda : “+ Nama);

System.out.println(“UTS : “+ UTS);System.out.println(“UAS : “+ UAS);

System.out.println(“Nilai Akhir : “+ Nilai_Akhir);

 }

Page 25: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 25/41

 }

Contoh program untuk input bilangan pecahan

import java.util.Scanner;

class input4

 public static void main(String[] args)

Scanner sc = new Scanner(System.in);

double luas;

System.out.print(“Masukkan Panjang : “); Double panjang = sc.nextDouble();

System.out.print(“Masukkan Lebar : “); Double lebar = sc.nextDouble();

luas = panjang * lebar;

System.out.println(“Luas Persegipanjang : “+ luas);

 }

 }

PRAKTIKUM 3

import java.util.Scanner;

 public class lingkaran{//kelas induknya

public static void main(String[] Xx){//method main

Scanner c = new Scanner(System.in);

double r; double Luas;

double phi=3.14;

 

System.out.println("masukkan jari= ");

r = c.nextDouble(); 

 Luas = phi*r*r;

System.out.println("Luas lingkaran adalah " +Luas);

 

 }

 }

import java.util.Scanner;//library

 public class luasSegitiga{ public static void main(String[]ok){ 

double alas,tinggi,Luas;

Scanner parto = new Scanner(System.in);

Page 26: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 26/41

 

System.out.print("masukkan nilai alas: ");

alas = parto.nextFloat();

System.out.print("masukkan nilai tinggi: ");

tinggi = parto.nextFloat();

  Luas = (alas*tinggi)/2;

System.out.println("hasilnya = "+Luas);

System.out.printf("hasilnya = %.2f",Luas);

 // %d, %f, %s, %c

}

 }

import java.util.Scanner;

 public class Kondisi{ 

public static void main(String[]test){ 

int nilai;

Scanner ujang = new Scanner(System.in);

System.out.println("masukkan nilai: ");

nilai = ujang.nextInt();

if(nilai>80){ 

System.out.println("LULUS");

}

else{ 

System.out.println("TIDAK LULUS");

}

 

 }

 }

import java.util.Scanner;

 public class nilai{ 

public static void main(String[]args){ 

double tugas,uts,uas,nilaiTotal;

String nilaiHuruf;

Scanner s= new Scanner(System.in);

 

System.out.println("masukkan nilai Tugas: ");

tugas = s.nextFloat();

tugas *= 0.2;// tugas = tugas * 0.2

System.out.println("pointnya adalah "+tugas);

System.out.println("masukkan nilai uts: ");

Page 27: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 27/41

uts = s.nextFloat();

uts *= 0.3;

System.out.println("pointnya adalah "+uts);

System.out.println("masukkan nilai uas: ");

uas = s.nextFloat();

uas *= 0.5;System.out.println("pointnya adalah "+uas);

 

nilaiTotal = tugas + uts + uas;

System.out.printf("jumlah nilai point anda %.2f\n",nilaiTotal);

if(nilaiTotal > 80){ 

nilaiHuruf = "A";

}

else if (nilaiTotal > 70){ 

nilaiHuruf = "B";

}

else if(nilaiTotal > 60){ 

nilaiHuruf = "C";

}

else{ 

nilaiHuruf = "E";

}System.out.println("nilai anda adalah "+nilaiHuruf);

}

 }

import java.util.Scanner;

 public class acak { 

 public static void main (String[]args){ 

String nama,npm,huruf;

double tugas,uts,uas,total;

Scanner S = new Scanner (System.in);

System.out.println("Masukan Nama Anda : ");

nama = S.nextLine();

System.out.println("Masukan NPM Anda : ");npm = S.nextLine();

System.out.println("Masukan Nilai Tugas : ");

tugas = S.nextDouble();

System.out.println("Masukan Nilai UTS : ");

uts = S.nextDouble();

System.out.println("Masukan Nilia UAS : ");

uas = S.nextDouble();

total =(tugas*0.2)+(uts*0.3)+(uas*0.5);

if (total >=80){ 

huruf="A";

 }else if(total >=70){ 

huruf ="B";

Page 28: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 28/41

 }else if(total >=60){ 

huruf ="C";

 }else if(total >=50){ 

huruf ="D";

 }else{ 

huruf ="E"; }

System.out.println("Nama Anda : "+nama);

System.out.println("NPM Anda : "+npm);

System.out.println ("Nilai Anda Adalah :"+total);

System.out.println ("Nilai Huruf : "+huruf);

 }

import java.util.*;

class Discont{ 

 public static void main(String[]args){ 

double diskon,total,bayar,jumlah;

String potongan,hadiah;

Scanner misro = new Scanner(System.in);

System.out.print ("Masukan TOTAL BAYAR :");

total = misro.nextDouble();

if (total >=1000000){ 

potongan ="20%";

diskon =total*0.2;

hadiah ="Payung";

bayar =(total-(total*0.2));

}else if (total >=500000){ 

potongan ="15%";

diskon =total*0.15;

hadiah ="Mangkok";

bayar =(total-(total*0.15));

 }else if(total >=200000){ potongan ="10";

diskon =total*0.1;

hadiah ="Gelas";

bayar =(total-(total*0.1));

 }else { 

potongan ="NGK ADA";

diskon =total*0;

hadiah ="Maaf anda belum beruntung";

bayar =(total-(total*0));

 }

Page 29: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 29/41

System.out.println ("Total belanja Sebelum Diskon :"+total);

System.out.println ("Diskon yang anda peroleh :"+potongan);

System.out.println ("Potongan Belanja :"+diskon);

System.out.println ("Total belanja harus dibayar :"+bayar);

System.out.println ("Hadiah :"+hadiah);

} }

import java.util.Scanner;

 public class InputOutput{ 

public static void main (String [] args){ 

double hargaSewaDVD = 5000, jumlahDVD, denda = 0.1, hargaTotal, lamaSewa, dendaNya;

Scanner s = new Scanner(System.in);

System.out.println("masukkan jumlah DVD: ");

jumlahDVD = s.nextFloat();

if (jumlahDVD <= 5){ 

System.out.println("masukkan lama sewa: ");

lamaSewa = s.nextFloat();

if (lamaSewa <= 3){ 

hargaTotal = hargaSewaDVD*jumlahDVD;

System.out.println("harga Total yang harus anda bayar adalah "+ hargaTotal);

}

else

dendaNya = (hargaSewaDVD*jumlahDVD)*denda;

hargaTotal = (hargaSewaDVD*jumlahDVD) + dendaNya;

System.out.println("denda anda adalah "+ dendaNya);

System.out.println("harga plus denda anda adalah "+hargaTotal);

}

}

else

{ System.out.println("DVD anda terlalu banyak...!!");

}

}

 }

DATA BASE MANAGEMENT SYSTEM

Pengertian Database

Page 30: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 30/41

Beberapa definisi tentang Database :

1. Menurut Gordon C. Everest :

Database adalah koleksi atau kumpulan data yang mekanis, terbagi/shared, terdefinisi secara

formal dan dikontrol terpusat pada organisasi.

2. Menurut C.J. Date :

Database adalah koleksi “data operasional” yang tersimpan dan dipakai oleh sistem aplikasi

dari suatu organisasi.

- Data input adalah data yang masuk dari luar sistem

- Data output adalah data yang dihasilkan sistem

- Data operasional adalah data yang tersimpan pada sistem

3. Menurut Toni Fabbri :

Database adalah sebuah sistem file-file yang terintegrasi yang mempunyai minimal primary

key untuk pengulangan data.

4. Menurut S. Attre :

Database adalah koleksi data-data yang saling berhubungan mengenai suatu organisasi /

enterprise dengan macam-macam pemakaiannya.

STRUCTURE QUERY LANGUAGE (SQL)

Structure Query Language (SQL) merupakan komponen bahasa relational database system.

SQL merupakan bahasa baku (ANSI/SQL), non procedural, dan berorientasi himpunan (set-oriented

language). SQL dapat digunakan baik secara interaktif atau ditempelkan (embedded) pada sebuah

 program aplikasi.

Banyak perintah dan fungsi SQL yang dapat digunakan untuk mendefenisikan maupun

memanipulasi database. Suatu rangkaian aktivitas yang berhubungan dengan pemulihan dan

 pengoptimalan perintah query di dalam database pada SQL dapat dituliskan fasilitas yang memiliki

antarmuka grafis yaitu Query Analyzer. Beberapa aktivitas yang dimaksud,

antara lain :

Melakukan query pada databese SQL dengan menggunakan perintah-perintah SQL untuk 

melihat teks atau grid.

• Melihat representasi grafik dari langkah-langkah untuk mengakses query

Page 31: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 31/41

• Melakukan analisa kinerja indeks

• Menjalankan skrip Transact SQL dari prosedur tersimpan.

Secara umum perintah-perintah pada SQL dibagi menjadi dua kelompok yaitu :

1. DDL (Data Definition Language)

DDL merupakan bagian dari SQL yang digunakan untuk mendefenisikan data dan proyek 

database. Perintah digunakan untuk mendefenisikan suatu proyek, yaitu membuat,

mengubah, menghapus dan memberikan izin.

Beberapa perintah pada SQL yang temasuk DDL, seperti :

Create Table untuk Membuat Tabel 

Create Index untuk Membuat Index

Create View untuknMembuat View

Alter Table untuk Mengubah atau menyisipkan ke dalam table

Drop Table untuk Menghapus Tabel 

Drop Index untuk Menghapus Index

Drop View untuk Menghapus View

Grant untuk Memberi izin akses kepada user 

2. DML (Data Manipulation Language)

DML merupakan bagian dari SQL yang digunakan untuk memanipulasi data. Perintah-

 perintah ini bertugas untuk melakukan query dan perubahan yg dilakukan dalam suatu tabel

Beberapa perintah SQL yang termasuk DML, Seperti

Select diigunakan untuk memilih data dari suatu tabel atau view

Insert digunakan untuk Menyisipkan baris dari suatu table

Delete digunakan untuk Menghapus baris dari suatu table

UpDate digunakan untuk Mengubah isi dari kolom (field) pada suatu table

Commit digunakan untuk Menuliskan perubahan ke dalam disk 

Rollback  dingunakan untuk Membatalkan perubahan yang dilakukan setelah perintah

Commit yang berakhir .

Perintah SQL pada SQLite

SQLite adalah Relational Database Management Server (RDBMS) alternatif yang portable

(tidak perlu install), cepat, gratis, dan banyak disupport oleh bahasa pemrograman. Contoh RDBMS

yang lain adalah MySQL, Oracle, Ms. Access, Postgree SQL, dan Ms. SQL.

Kelebihan SQLite dibandingkan RDBMS lain (dari sudut pandang penulis) adalah :

Page 32: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 32/41

Portable tidak perlu install, cukup menggunakan satu file sqlite3.exe

1 database 1 file (flat file)

Mendukung transaction dan view

Sangat cepat, karena berupa flat file jadi pengaksesannya lebih cepat

SQLite menggunakan Query Language yang mirip dengan RDBMS yang lain, sehingga

 pengguna yang terbiasa menggunakan MySQL, Ms. SQL, dan lain sebagainya tidak perlu bersusah

 payah untuk beradaptasi. Meskipun, pada beberapa bagian ada sedikit perbedaan dan ada juga

  beberapa perintah yang tidak disupport oleh SQLite. Pada tulisan ini, yang dijelaskan adalah

 penggunaan SQLite pada satu sistem operasi yaitu Windows, agar pembahasan lebih fokus.

Cara Penggunaan SQLite

Untuk menggunakan SQLite, sebelumnya kita harus mendownload sqlite3.zip (untuk windows)

yang dapat didapatkan pada sqlite.org. Setelah download, anda cukup mengekstrak file sqlite3.exe

dan mengaksesnya melalui command prompt. SQLite siap beraksi.

Membuat database

mysql> create database nama_db

d:/sqlite/> sqlite3 nama_db

Untuk membuat database pada SQLite, kita langsung mengakses file sqlite3.exe dan menuliskan

nama database. Jika tidak ditemukan database tersebut maka SQLite akan membuatkan untuk kita,

  jika ditemukan SQLite akan mengakses database tersebut dan masuk ke dalam console SQLite

(tambahkan ‘ini adalah menggunakan dua DBMS MySql dan Sqlite untuk perbandingan)

mysql> drop database nama_db

Tidak perlu menggunakan perintah, cukup hapus file database tersebut 

 Membuat table

mysql> create table nama_tabel (nama_field tipe_data(ukuran));

 sqlite> create table nama_tabel (nama_field tipe_data(ukuran)); 

 Perintah yang sama persis antara MySQL dan SQLite

mysql> show tables;

 sqlite> .tables

 Menghapus table

mysql> drop table nama_tabel;

 sqlite> drop table nama_tabel;

 Menampilkan deskripsi (skema) tabel 

mysql> desc nama_tabel;

Page 33: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 33/41

 sqlite> .schema nama_tabel 

 Menambahkan field baru pada tabel 

mysql> alter table nama_tabel add nama_field tipe_data(ukuran)

 sqlite> alter table nama_tabel add nama_field tipe_data(ukuran)

 Mengubah nama tabel 

mysql> alter table nama_tabel rename nama_tabel_baru;

 sqlite> alter table nama_tabel rename nama_tabel_baru;(tambahin query di alter add)

 Menghapus field 

mysql> alter table nama_tabel drop nama_field;

 Pada sqlite tidak ada perintah untuk menghapus field (coba cari

 Menginputkan data

mysql> insert into nama_tabel values (nilai_1,nilai_2,nilai_3); sqlite> insert into nama_tabel values (nilai_1,nilai_2,nilai_3);

 Menghapus data

mysql> delete from nama_tabel [where kondisi]

mysql> delete from nama_tabel [where kondisi]

Cara penggunaan kondisi pada MySQL dan SQLite juga tidak berbeda

 Mengubah data

mysql> update nama_tabel set nama_field1 = nilai1, nama_field2 = nilai2 [where

kondisi]

mysql> update nama_tabel set nama_field1 = nilai1, nama_field2 = nilai2 [where

kondisi]

 Menampilkan data

mysql> select [nama_field|*] from nama_tabel [where kondisi]

 sqlite> select [nama_field|*] from nama_tabel [where kondisi]

 Penggunaan kondisi (contoh menggunakan select)

mysql> select * from nama_tabel where nama_field1 = nilai and nama_field2 like

“string%”

 sqlite> select * from nama_tabel where nama_field1 = nilai and nama_field2 like

“string%”

 Natural Join (relasi sederhana)

mysql> select * from nama_tabel1 join nama_tabel2 on (nama_tabel2.field =

nama_tabel1.field)

 sqlite> select * from nama_tabel1 join nama_tabel2 on (nama_tabel2.field =

nama_tabel1.field)

Page 34: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 34/41

 Right Join

mysql> select * from nama_tabel1 right join nama_tabel2 on (nama_tabel2.field =

nama_tabel1.field)

Sayangnya SQLite juga tidak mensupport right join dan full outer join

Perintah Dasar SQL dengan Fungsinya

Perintah SELECT

Berfungsi untuk menampilkan data dari tabel, sintak dasarnya seperti berikut :

SELECT namakolom, namakolom,… FROM namatabel WHERE kriteria;

Contoh :

a. SELECT nis,nama,kelas FROM siswa;

b. SELECT * FROM siswa;

c.  SELECT nis,nama,kelas FROM siswa WHERE kelas = ‘3C’;

d.  SELECT * FROM siswa WHERE nama like ‘AN%’ ORDER BY nama ASC;

Keterangan :

1) Perintah WHERE merupakan Optional tidak harus disertakan seperti SELECT dan FROM.

2) Contoh ‘a’ menampilkan semua informasi nis,nama,kelas dari data siswa.

3) Contoh ‘b’ menampilkan semua data siswa.

4) Contoh ‘c’ menampilkan semua informasi nis,nama,kelas dari data siswa kelas 3C

5) Contoh ‘d’ menampilkan semua data siswa yang namanya diawali dengan “AN” dan

diurutkan berdasarkan nama secara Ascending.

Perintah INSERT

Berfungsi untuk menambah informasi/data baru kedalam tabel. Sintak dasarnya

seperti berikut :

INSERT INTO namatabel (kolom) VALUES (value);

Contoh :

INSERT INTO siswa (nis,nama,kelas) VALUES (‘103099981’,’AIDA

AGUSTINA’,’3C’); Atau

INSERT INTO siswa VALUES (‘103099981’,’AIDA AGUSTINA’,’3C’);

Perintah DELETE

Berfungsi untuk menghapus informasi/data pada tabel. Sintaknya sebagai berikut :

DELETE FROM namatabel WHERE keriteria;

Contoh :

Page 35: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 35/41

DELETE FROM siswa WHERE nama = ‘AIDA AGUSTINA’;

Keterangan :

Menghapus data siswa yang memiliki nama “AIDA AGUSTINA”

Perintah UPDATE

Berfungsi untuk memperbaiki informasi/data pada tabel. Sintaknya sebagai berikut:

UPDATE namatabel SET namakolom=value WHERE keriteria;

Contoh :

UPDATE siswa SET nama=’HERDI’ WHERE nis=’10309965’;

Keterangan :

Mengganti nama menjadi “HERDI” untuk siswa yang mempunya nis “10309965”

Perintah SQL Lainnya

Membuat Database

CREATE DATABASE namadatabase;

Contoh : create database sekolah;

Ket : Membuat dabase baru dengan nama sekolah

Menghapus Database

DROP DATABASE namadatabase;

Contoh : drop database sekolah;

Ket : Menghapus database sekolah

Membuat Tabel

CREATE TABLE namatabel (namakolom typekolom(size),namakolom typekolom(size),

…);

Contoh : create table siswa (nis varchar(15),nama varchar(35),kelas int(3));

Ket : Membuat tabel baru dengan nama siswa yang terdiri dari 3 fields/kolom.

Kolom nis bertype string, kolom nama bertype string dan kelas bertype integer.

Mengapus Tabel

DROP TABLE namatabel;

Contoh : drop table siswa;

Ket : Menghapus tabel siswa

Mengganti Nama Tabel

RENAME namtabelyangdiganti TO namatabelbaru;

Contoh : rename siswa to mahasiswa;

Ket : Mengubah tabel siswa menjadi mahasiswa

Page 36: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 36/41

Menambah Kolom/Field

ALTER TABLE namatabel ADD namakolom typekolom(size);

Contoh : alter table siswa add alamat varchar(50);

Ket : Menambahkan kolom baru dengan nama alamat bertype string panjang 50

karakter.

Mengganti Nama Kolom/Field

ALTER TABLE namatabel CHANGE namakolomyangdiganti namakolombaru

typekolom(size);

Contoh : alter table siswa change alamat alamat_rumah varchar(50);

Ket : Mengubah kolom alamat menjadi alamat_rumah bertype string dengan

 panjang 50 karakter 

Mengganti Type atau Size Kolom/Field

ALTER TABLE namatabel MODIFY namakolom typekolom(size);

Contoh : alter table siswa modify nama varchar(40);

Ket : Mengubah panjang karakter nama dari tabel siswa menjadi 40 karakter.

Menghapus Kolom/Field

ALTER TABLE namatabel DROP namakolom;

Contoh : alter table siswa drop alamat_rumah;

Ket : Menghapus Kolom alamat_rumah dari tabel siswa.

Koneksi Database : SQL dan JDBC

Pengenalan

Perintah – perintah dalam lingkungan databases adalah :

Page 37: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 37/41

SELECT

Pernyataan SELECT digunakan untuk query database tentang informasi database yang mana

yang ditampilkan sebagai data. Format dasar dari pernyataan SELECT adalah:

SELECT kolom FROM namatabel where kondisi

Pernyataan SQL SELECT dimulai dengan kata kunci SELECT, diikuti oleh tanda koma dari kolom-

kolom yang akan ditampilkan, kemudian clause FORM yang menentukan tabel yang berisi datayang akan ditampilkan. Secara bebas, clause WHERE dapat ditambahkan pada pernyataan SELECT,

menjelaskan sebuah set dari kondisi yang harus ditemukan oleh data yang akan dikembalikan oleh

database. Clause WHERE tidak dipisahkan oleh koma; melainkan, dia tehubung oleh pernyataan

AND atau OR yang fungsinya sama dengan logik mereka.

Menetapkan * sebagai nama kolom memberitahu database server untuk meretrieve semua

kolom yang tersedia didalam tabel. Contoh, jika kita ingin meretrieve semua data yang terdapat pada

table yang bernama users :

SELECT * from users;

Jika kita hanya ingin melihat untuk users yang bernama belakang Smith, pernyataan SQL-nya

 berupa:

SELECT * from users where nama ='Smith';

SQL tidak bersifat case-sensitive pada kata kuncinya, SQL case-sensitive pada nilainya. Pernyataan

 berikut ini akan menghasilkan data yang berbeda jika dibandingkan dengan pernyataan diatas:

SELECT * from users where nama ='sMith';

Operator lain yang dapat digunakan pada conditional statements:

< - kurang dari

<= - kurang dari atau sama dengan

- lebih besar dari

>= - lebih besar dari atau sama dengan

like – sama dengan

INSERT

Pernyataan INSERT digunakan untuk memasukkan baris data yang baru dari informasi tabel

database yang aktif. Struktur dasar dari pernyataan INSERT adalah :

INSERT INTO nama-tabel VALUES(nilai1, nilai2, ...)

Dimana nama-tabel adalah nama dari tabel yang akan berisi baris data yang baru. Parameter yang

diberikan didalam kata kunci VALUES adalah daftar data dari nilai yang akan ditambahkan

kedalam tabel. Jika seperti ini dimana hanya tabel yang ditetapkan, SQL akan memasukkan nilaiyang diberikan pada pernyataan dengan field didalam database berdasarkan nilai yang dipesan dan

field yang ditentukan pada tabel database.

Jika, sebagai contoh, kita mempunyai tabel dengan nama users, dengan field userid, nama,

alamat(pada pemesanan), pada baris berikut ini akan menambahkan data yang baru ke tabel:

INSERT INTO users VALUES(199700651, 'Jeni Master', 'UP Ayala Technopark');

Penting untuk diingat bahwa semua panggilan untuk INSERT harus diikuti aturan integritas pada

tabel data. Oleh karena itu, jika sebuah field pada database ditetapkan non-null, berbagai usaha

untuk memasukkan ni;ai-null kedalam field tersebut akan menyebabkan error pada database.

UPDATE

Page 38: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 38/41

Pernyataan UPDATE akan mengupdate baris yang dipilih pada tabel, sebagai lawan dari

 pernyataan INSERT yang menambahkan baris data baru. Format dasar pernyataan UPDATE adalah:

UPDATE nama-tabel set nilai-kolom WHERE kondisi

Dimana nama-tabel adalah nama dari tabel yang berisi baris yang akan diupdate, dan nilai-kolom

adalah daftar data dari nama kolom dan nilainya. Secara bebas, daftar data dari kondisi dapat

ditambahkan secara spesifik dengan baris yang akan dimodofikasi pada tabel. Jika tidak diber kondisi, maka update data akan dilakukan pada tiap-tiap baris didalam tabel yang ditentukan.

Berbagai update harus disesuaikan dengan aturan integritas pada database. Sebagai contoh,

menyetting nilai null pada kolom yang sudah ditetapkan dengan nilai NOT NULL akan

menyebabkan pernyataan tidak akan dijalankan dan terdapat pesan error pada relasi database.

DELETE

Pernyataan DELETE menghapus baris data pada tabel yang dipilih. Struktur dasar dari

 pernyataan DELETE adalah :

DELETE FROM nama-tabel WHERE kondisi

Dimana nama-tabel adalah nama dari tabel yang berisi baris data yang akan dihapus. Daftar data darikondisi secara bebas dapat dispesifikasikan sebaik mungkin. Jika tidak diberi kondisi, maka

 pernyataan akan mneghapus semua baris data pada tabel yang telah ditentukan.

JDBC

Java menyediakan standard API untuk mengakses database yang disebut Java Database

Connectivity (JDBC) API. Dengan menggunakan ini, para pengembang memungkinkan dapat

mengakses database tanpa memperdulikan vendornya; para vendor menyediakan implementasi

untuk abstract interfaces yang dijelaskan didalam API, penyediaan tersebut sama dengan set dari

kemampuan koneksi untuk para pengembang. Berikut ini merupakan class kunci dari JDBC API,

semuanya akan dijelaskan secara detail kemudian :

  java.sql.Connection – membuat sebuah koneksi dengan database. Secara abstrakmemberikan

detail dari bagaimana cara untuk berkomunikasi dengan database server.

  java.sql.DriverManager – mengatur JDBC driver yang digunakan oleh aplikasi. Pada

hubungannya dengan proper driver URL dan proper authentication, dapat menyediakan aplikasi

dengan valid instances dari object koneksi.

 javax.sql.DataSource – memisahakan detail (URL, authentication details) dari bagaimana untuk 

memperoleh sebuah koneksi ke database. Merupakan method terbaru dan yang lebih disukai dari

obtaining Connection objects.   java.sql.Statement – menyediakan method untuk para pengembang dalam mengeksekusi

 pernyataan SQL.

  java.sql.ResultSet – menyediakan hasil dari sebuah pernyataan SQL. Objects ini sering

dikembalikan dari method yang terletak pada Statement object.

 

 java.sql.DriverManager

Dengan menggunakan class ini, pengembang dapat meretrieve sebuah Connection object

yang kemudian dapat dia gunakan untuk melakukan aktifitas database. Berikut ini dua langkah yang

dianjurkan:

Page 39: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 39/41

1. Pertama, JDBC driver harus diregistrasi dengan DriverManager. Hal ini dapat dikerjakan dengan

menggunakan method Class.forName untuk menge-load driver's class definition kedalam

memori.

2. Kedua, menggunakan method getConnection pada DriverManagerm untuk menyediakan JDBC

URL, sebaik username dan password supplying untuk akses database. URL harus mengikuti

syntax yang dianjurkan oleh implementasi database tertentu.

Dibawah ini adalah contoh dari bagaimana mendapatkan koneksi dari database PostgreSQL.

Sekali lagi, URL dan driver tepat untuk implementasi database yang digunakan. Untuk database

yang lain, periksalah dokumen yang disediakan.

String jdbcURL = jdbc:mysql://localhost:3306/databaseku";

String user = "root";

String password = "";

Connection conn = null;

try {

Class.forName("com.mysql.jdbc.Driver");

conn = DriverManager.getConnection(url, user, password);

...

} catch (SQLException e) {

// perform error handling here

}

Saat ini merupakan cara yang valid dari meretrieve sebuah Connection object, method ini

menganjurkan para pengembang untuk tetap mengikuti method tersebut dari seperti detail sebagai

driver class name, URL dianjurkan untuk akses ke database, sedangkan username dan password

tepat untuk penggunaan database. Detail-detail ini paling banyak dipakai pada berbagai aplikasi.

Dan juga, mengatur URL dan driver name pada kode membuatnya lebih sulit untuk aplikasi dalam

menukar implementasi database, jika hal itu diperlukan.

 javax.sql.DataSource

DataSource merupakan interface yang digambarkan pada JDBC API sejak versi 2 dari

spesifikasinya. Sekarang saatnya direkomendasikan untuk para pengembang dalam mendapatkan

Connection object. Retrieval dari Connection object terjadi secara langsung : cara sederhana

memanggil method getConnection() dalam kejadian yang valid dari DataSource. Hal tersebutmemperoleh sebuah kejadian dari DataSource yang sekarang dapat menyelesaikan sebuah masalah

untuk beberapa pengembang(developer).

Sejak DataSource merupakan sebuah interface, sebuah instance tidak dapat dibuat oleh

  pengembang dengan menggunakan operator yang baru secara sederhana. Hal tersebut

direkomendasikan jika kita memilih aplikasi server dengan menggunakan aturan pembuatan dari

DataSource objects untuk kita.

 java.sql.Connection / java.sql.Statement

Page 40: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 40/41

 java.sql.Connection objects menghadirkan connections yang nyata ke database. Sekali kita

mempunyai sebua instance dari object ini, kita dapat membuat sebuah instance dari sebuah

Statement object, dimana kemudian kita dapat menggunakan query SQL.

Statement object menyediakan beberapa method untuk mengeksekusi perintah SQL. Dua

method yang sering digunakan adalah :

- executeQuery – menggunakan pernyataan SELECT dan mengembalikan hasil dari operasi

sebagai ResultSet object

- execute Update – menggunakan pernyataan INSERT, UPDATE, atau DELETE dan

mengembalikan jumlah dari baris yang dipengaruhi sebegai integer primitive.

Dibawah ini adalah bagian dari contoh kode outlining prosedur, bersama dengan beberapa error 

yang sangat dasar - menangani prosedur.

Context ctxt = null;

DataSource ds = null;

Connection conn = null;

Statement stmt = null;

ResultSet rs = null;

try {

ctxt = new InitialContext();

ds = (DataSource)ctxt.lookup("jdbc/mySQL");

 

conn = ds.getConnection();

stmt = conn.createStatement()

rs = stmt.executeQuery(“SELECT * FROM USERS”);}catch(NamingException x)

System.err("Datasource tidak ditemukan);

} catch (SQLException x)

System.err("Terjadi error saat mengeksekusi query SQL”);

}

 java.sql.ResultSet

Sebuah ResultSet object merupakan hasil dari sebuah query ke database. Data di dalam

ResultSet object dapat divisualisasikan sebagai tabel, kemudian informasinya dapat diretrieve satu baris pada saat itu juga. Dengan ResultSet object menjaga proses tetap pada baris yang ditentukan.

Untuk iterasi di atas baris yang diarahkan pada ResultSet, telah disediakan method yang

disebut next(). Memanggil method next() memindahkan internal pointer menjaga ResultSetobject ke

 baris berikutnya. Method ini mengembalikan nilai true jika ditemukan baris berikutnya, dan nilai

false jika tidak ada baris berikutnya.

while (rs.next()) {

//membaca data dari baris sebelum disini }

Contoh dari iterasi ResultSet

Page 41: MODUL Pemrograman 3_2

8/2/2019 MODUL Pemrograman 3_2

http://slidepdf.com/reader/full/modul-pemrograman-32 41/41

Untuk meretrieve data dari tiap-tiap baris, ResultSet object menyediakan beberapa get

method. Yaitu sebuah method getString untuk meretrieve data sebagai String, method getInt untuk 

meretrieve data integer, method getBoolean untuk meretrieve data boolean, dll. Dalam berbagai

kasus, method-method ini juga menerima sebagai parameter nomer kolom yang berisi data, atau

nama kolom.

Context ctxt = null;

 DataSource ds = null;

Connection conn = null;

Statement stmt = null;

 ResultSet rs = null;

try { 

ctxt = new InitialContext();

ds = (DataSource)ctxt.lookup(“jdbc/mySQL”);

 

conn = ds.getConnection(); stmt = conn.createStatement();

rs = stmt.executeQuery("SELECT * FROM USERS);

while (rs.next()) { 

String userName = rs.getString("name");

String address = rs.getString(“address”);

int userID = = rs.getInt(userid);

 }

  }catch(NamingException ex){ 

System.err(“Nama datasourse tidak ditemukan”);

  }catch()SQLException ex{ 

System.err(“Terjadi error saat mengeksukesi perintah SQL”);}

(contoh coding java yg sudah terkoneksi dgn database)