Anda di halaman 1dari 41

#4

Constant, Conversion,
String
Outline
 Reference Type: String
 Conversion Types: Cast, Promotion
 Baca Input dari Keyboard
 Ringkasan

11/02/21 Algoritma & Pemrograman 2


Variabel dan Konstan
 Variabel:
 Agar program mudah dibaca / dimengerti
 Nilai variabel bisa berubah karena menunjuk ke
storage (tempat penyimpanan). Isi tempat
penyimpanan bisa berubah
 Konstan
 Setelah diberikan nilai (inisialisasi), variabel konstan
tidak dapat diubah nilainya
 Digunakan sebagai acuan nilai dan dijamin tidak akan
berubah nilainya
 Contoh:
 final double INCH_TO_CM = 2.54;

11/02/21 Algoritma & Pemrograman 3


Program Versi 1: No Constant
public class Volume
{
public static void main(String[] args)
{
int bottles = 4;
int cans = 10;

// compute total volume


double total = bottles * 2.0 + cans * 0.355;

// print result
System.out.print("The total volume is ");
System.out.println(total + " liters");
}
}

11/02/21 Algoritma & Pemrograman 4


Program Versi 2: Constants
public class Volume
{
public static void main(String[] args)
{ final double BOTTLE_VOLUME = 2.0;
final double CAN_VOLUME = 0.355;
int bottles = 4;
int cans = 10;

// compute total volume


double total = bottles * BOTTLE_VOLUME
+ cans * CAN_VOLUME;

// print result
System.out.print("The total volume is ");
System.out.println(total + " liters");
}
}

11/02/21 Algoritma & Pemrograman 5


Konstan [1]
 Constants dapat digunakan untuk membuat
program mudah dibaca dan diubah
 Mudah dibaca, dalam bentuk nama simbol.
 Mudah diupdate, jika nilai constant akan diganti maka
hanya satu tempat (deklarasi constant) yang perlu
diubah.
 Nilai yang berada di constants tidak dapat
diubah, oleh code sesudahnya.
final double BOTTLE_VOLUME = 2.0;
final double CAN_VOLUME = 0.355;
BOTTLE_VOLUME = 2.5;
CAN_VOLUME = 0.4;
 Compiler error!

11/02/21 Algoritma & Pemrograman 6


Konstan [2]
 Keyword: final, menunjukkan variabel tersebut
constant (konstan)
 Variabel konstan tidak
dapat lagi di-assigned
dengan nilai baru
setelah inisialisasi
pertama

11/02/21 Algoritma & Pemrograman 7


Aritmetika
 Dasar operasi: *, +, - , / dan %
 Sesuai dengan data types  int atau double
 Operasi arithmetika dapat dibantu oleh library
java: Math
 Contoh bantuan library Math:

x Math.sqrt(x)

11/02/21 Algoritma & Pemrograman 8


Penggunaan Konstan [1]
public class Coins3
{
public static void main(String[] args)
{
final int PENNY_VALUE = 1;
final int NICKEL_VALUE = 5;
final int DIME_VALUE = 10;
final int QUARTER_VALUE = 25;
final int DOLLAR_VALUE = 100;

int pennies = 8;
int nickels = 0; // no nickels
int dimes = 4;
int quarters = 3;

11/02/21 Algoritma & Pemrograman 9


Penggunaan Konstan [2]
// compute total value of coins
int total = pennies * PENNY_VALUE
+ nickels * NICKEL_VALUE
+ dimes * DIME_VALUE
+ quarters * QUARTER_VALUE;

int dollar = total / DOLLAR_VALUE;


int cents = total / CENT_VALUE;

// print result
System.out.print("Total value = ");
System.out.print(dollar + " dollars and ");
System.out.println(cents + " cents");
}
}

11/02/21 Algoritma & Pemrograman 10


Package / Library: Math [1]
 Contoh mendapatkan nilai bulat:
double price = 44.95;
int dollars = (int)(price + 0.5);
System.out.print ("The price is $");
System.out.println (dollars); // print 45
 Contoh dengan library Math (lebih baik):
int dollars = (int) Math.round(price);
 Math adalah suatu class, bukan object

11/02/21 Algoritma & Pemrograman 11


Package / Library: Math [2]
 Class method: Math.round()
 Static method, karena tidak perlu ada object yang
tempat method tersebut dijalankan
 Math  beroperasi pada bilangan
 Lebih sebagai fungsi (pemecahan formula) yang ingin
dilaksanakan.
 Contoh: round(x), sqrt(x), dll
 Bedakan dengan:
 System.out.println();
 Method println, beroperasi pada object out, yang berada
pada class System
11/02/21 Algoritma & Pemrograman 12
Package / Library: Math [3]
1). ab
(a + b) / 2
2
2). b  b 2  4ac (-b + Math.sqrt (b * b – 4 * a * c)) / 2 *
2a a 2
b 2a4ac
b 2  4ac

b  b 2  4ac

b  b 2  4ac
2a
11/02/21 Algoritma & Pemrograman 13
Package / Library: Math [4]
Math.sqrt( x) square root of x ( x  0)
Math.pow( x, y ) x y ( x  0, or x  0 and y  0,
or x  0 and y is an integer)
Math.sin( x) sine of x ( x in radians)
Math.cos( x) cosine of x ( x in radians)
Math.tan( x) tangent of x ( x in radians)
Math.asin( x) (arc sine) sin -1 x  [  2,  2 ], x  [ 1,1]
Math.acos( x) (arc cosine) cos -1 x  [0,  ], x  [1,1]
Math.atan( x) (arc tangent) tan -1 x  [  2,  2 ]
Math.atan2(
11/02/21
y , x) (arc tangent) tan -1
Algoritma & Pemrograman
( y x)  [ ,  ], x may be140
Package / Library: Math [5]
Math.round( x) the closest integer to x (as a long)
Math.ceil( x) smallest integer  x (as a double)
Math.floor( x) largest integer  x (as a double)
Math.abs( x) absolute value x
Math.toDegrees( x) tangent of x ( x in radians)
Math.toRadians(x) converts x degrees to radians
(i.e. returns x  180)
Math.log( x) (natural log) ln( x), x  0
Math.exp( x) ex
11/02/21 Algoritma & Pemrograman 15
Java: Tipe Data (Review)
 Terdapat dua jenis tipe data:
 Primitive types: numeric type, boolean type

 Reference types: class, arrays, String, dll.

11/02/21 Algoritma & Pemrograman 16


Reference Type: String
 String:
 Kita dapat mendefinisikan suatu tipe yang berupa urutan
karakter
 Urutan karakter dibatasi oleh: “ … “ (double quote) di mana
double quote tidak termasuk dalam strings).
 Contoh: String nama = "Bambang";
Declare variabel nama untuk menyimpan strings “Bambang”
 Gunakan assigment untuk mengubah/menyimpan string ke
suatu variabel:
 nama = "Jos";
 String merupakan reference type (sebagai class)
 Perhatikan String diawali dengan huruf besar sesuai dengan
konvensi penamaan Class (beda dengan tipe primitif int,
double, dll)

11/02/21 Algoritma & Pemrograman 17


Methods pada String [2]
 String merupakan object (berbeda dengan tipe
primitif), maka terdapat berbagai methods yang
dapat digunakan untuk memudahkan operasi
pada strings.
 length() : mengetahui jumlah karakter pada strings
 int n = nama.length(); // panjang
 substring() : mengambil sebagian strings dari
suatu strings
String substring(int startIndex, int pastEnd);
 Contoh:
String greeting ="Hello,World!";
String sub = greeting.substring(0,4);
//sub is "Hell"
11/02/21 Algoritma & Pemrograman 18
String: substring
 Index String:
 Posisi (index) karakter string diawali dengan
index 0
 Posisi karakter terakhir dari string selalu lebih
kecil 1 dari panjang string
 Mengambil kata World dari kata “Hello,
World!”:

substr(7,5)
11/02/21 Algoritma & Pemrograman 19
String: concatenate
 Menggabung (concatenate) 2 string dengan operator +
String fname = "Bambang";
String lname = "Wijanarko";
String name = fname + lname;
 Hasilnya? name = "BambangWijanarko"
 Jika ingin name = "Bambang Wijanarko", maka
String name = fname + " " + lname;
 String juga melakukan konversi dari bilangan ke string
secara otomatis
String id = "Agent" + 7; // Hasilnya "Agent7"

11/02/21 Algoritma & Pemrograman 20


Example: substring & concatenate
public class MakePassword
{ public static void main(String[] args)
{ String firstName = "Harold";
String middleName = "Joseph";
String lastName = "Hacker";
// extract initials
String initials = firstName.substring(0,1)
+ middleName.substring(0,1)
+ lastName.substring(0,1);
int age = 19;
String password = initials.toLowerCase() + age;
System.out.println("Your password is "
+ password);
}
}
11/02/21 Algoritma & Pemrograman 21
Konversi Tipe Data
 Operator assignment (=) digunakan untuk
penugasan / pemberian nilai kepada variabel
dengan tipe yang sama
 double pecahan = 7.75;

double double

 Jika tipe nilai dan tipe variabel tidak compatible,


maka akan terjadi compiler error.
 double total = “banyak”; // error
double String

11/02/21 Algoritma & Pemrograman 22


Konversi Tipe Data: Conversion
 Jika tipe nilai dan tipe variabel compatible,
maka tidak akan terjadi error.
int dollars = 2;
double total = dollars; // compatible type
 Terjadi promotion, widening conversion (otomatis) dari
suatu tipe hasil ekspresi ke tipe variabel
 Contoh promotion / conversion:
 int  long, float, double
 char  int, long, float, double
 char hanya mempunyai bilangan bulat positif, sedangkan
int bisa positif atau negatif

11/02/21 Algoritma & Pemrograman 23


Konversi Tipe Data: Casting
 Terdapat “strict conversion” pada Java
 Casting adalah konversi yang dilakukan secara
eksplisit oleh programmer
 Misalkan dari floating point ke integer dengan cast:
double dollars = 2.5;
int total = (int) dollars; // cast double ke int
 Casting menyebabkan perubahan tipe data
 cast double ke int: nilai double menjadi bilangan bulat (int)
 Casting merupakan narrow conversion karena dengan
casting mungkin terdapat informasi hilang
 Nilai variabel total menjadi 2, padahal semula nilainya 2.5.

11/02/21 Algoritma & Pemrograman 24


Casting: Pengaruh Urutan
 Terdapat urutan dalam casting
 Urutan berbeda mungkin saja menyebabkan
hasil berbeda
 Cara 1:
double dollars = 2.75;
int total = (int) (dollars * 10); // Total  27
 Cara 2:
double dollars = 2.75;
int total = (int) dollars * 10; // Total  20

11/02/21 Algoritma & Pemrograman 25


Casting: Penggunaan Kurung
 Cara 1:
double dollars = 2.75;
int total = (int) (dollars * 10);
 Urutan:
 (dollars * 10)  masih berisi 27.5 (bertipe double)
 (int)  cast dari double ke int, var. total berisi 27
 Cara 2:
double dollars = 2.75;
int total = (int) dollars * 10;
 Urutan:
 (int) dollars  cast dari double ke int, berisi 2 (bertipe int)
 [hasil casting] * 10  var. total berisi nilai (2 * 10) = 20
11/02/21 Algoritma & Pemrograman 26
String Conversion
 Java tidak memperbolehkan konversi dari type
reference ke tipe primitif
 Misalkan: Class System dikonversikan ke int.
 Sedangkan konversi dari tipe primitif ke
reference hanya diperbolehkan untuk konversi
ke String

11/02/21 Algoritma & Pemrograman 27


String Conversion: Example
Contoh konversi dari tipe primitif ke tipe String
melalui method System.out.println:

int i = (int)12.5f;
System.out.println("Nilai (int)12.5f: " + i);
float f = i;
System.out.println("Float widening f: " + f);

Output:
Nilai (int)12.5f: 12
Float widening f: 12.0

11/02/21 Algoritma & Pemrograman 28


Operasi Masukan & Keluaran
 Pada saat program Java dijalankan, ada 3
buah stream yang secara default
disediakan, yaitu:
 Stream System.in  menangani
pembacaan dari keyboard (standar input)
 Stream System.out  mengirimkan
keluaran ke layar (standar output)
 Stream System.err  mengirimkan
kesalahan (standar error)
11/02/21 Algoritma & Pemrograman 29
Import Paket di Java
 Stream-stream tersebut terdapat pada paket
java.lang (paket yang tidak perlu disebutkan
karena sudah diimpor oleh Java)
 Selain paket java.lang, paket lainnya harus di-
import. Import paket ditulis pada awal kode
program sebelum class-class pada paket
tersebut digunakan pada program
 Contoh:
import java.io.*; // mengimport paket io

11/02/21 Algoritma & Pemrograman 30


Membaca Input dari Keyboard
 Dalam bahasa Java standar, disediakan
object System.in yang
merepresentasikan input standar yaitu
keyboard
 Object System.in bertipe InputStream
 Class InputStream tidak mempunyai
method untuk membaca string atau
bilangan, hanya memiliki method read
untuk baca data byte per byte
11/02/21 Algoritma & Pemrograman 31
Membaca Input [1]
1. Object dari class InputStream membaca
byte, tetapi kita ingin membaca barisan
karakter (ingat 1 karakter Unicode = 2 byte).
Jadi kita perlu membuat object yang dapat
membaca barisan karakter. Dari object
System.in yang bertipe InputStream itu
dapat kita buat object bertipe
BufferedReader, dan kemudian kita dapat
panggil method readLine().

11/02/21 Algoritma & Pemrograman 32


Membaca Input [2]
2. Apabila method readLine() itu menemui
kesalahan (error) pada waktu membaca input,
ia akan membuat suatu exception. Kita harus
menyatakan dalam program apa yang akan
dilakukan jika terjadi exception.
3. Method readLine() me-return string. Kalau
kita ingin membaca input dalam bentuk
bilangan, kita harus mengubah string itu
menjadi bilangan.

11/02/21 Algoritma & Pemrograman 33


Pemecahan Masalah [1]
 Java menggunakan Unicode untuk mengkodekan
karakter. Tiap karakter terdiri dari 2 byte.
 Dalam terminologi Java, InputStream membaca
byte-per-byte, InputStream membaca karakter-
per-karakter. Kita perlu membuat suatu object
Reader dengan berawal dari System.in yang
bertipe InputStream.
 Ada class InputStreamReader yang dapat
mengubah input stream menjadi reader yang dapat
membaca karakter-per-karakter  (a)
11/02/21 Algoritma & Pemrograman 34
Pemecahan Masalah [2]
 Lalu ada class BufferedReader yang dapat
mengubah suatu input reader menjadi input
reader yang dapat membaca sebaris karakter
sekaligus  (b)
 Contoh:
InputStreamReader reader = new InputStreamReader
(System.in); // (a)
BufferedReader console = new BufferedReader
(reader); // (b)

11/02/21 Algoritma & Pemrograman 35


Pemecahan Masalah [3]
 Dalam proses membaca input dapat timbul kesalahan.
Apabila method readline() mengetahui ada
kesalahan, ia akan menggunakan suatu mekanisme
khusus yang disebut exception untuk memberitahu
program yang memanggilnya
 Agar program itu dapat di-compile dengan sukses,
program itu harus dapat menangani pemberitahuan
tersebut.
 Cara yang paling sederhana adalah “catch” exception
tersebut apabila terjadi
 Untuk catch suatu exception, statement-statement yang
dapat membangkitkan exception harus kita letakkan
dalam suatu try block

11/02/21 Algoritma & Pemrograman 36


Pemecahan Masalah [4]
try {
InputStreamReader reader =
new InputStreamReader (System.in);
BufferedReader console =
new BufferedReader (reader);
System.out.println (“Siapa nama anda?”);
String input = console.readLine ();
} catch (IOException ioe) {
System.err.println (ioe);
System.exit (1); // hentikan program
}

11/02/21 Algoritma & Pemrograman 37


Pemecahan Masalah [5]
 Objek bertipe BufferedReader itu dapat
membaca sebaris string dengan method
readLine.
 Kalau kita menginginkan bilangan, string
yang di-return oleh readLine perlu
dikonversi menjadi bilangan dengan
method Integer.parseInt atau
method Double.parseDouble.
11/02/21 Algoritma & Pemrograman 38
import java.io.*; // import paket io
public class BacaInput
{
public static void main (String[] args)
{
try {
InputStreamReader rdr =
new InputStreamReader (System.in);
BufferedReader console =
new BufferedReader (rdr);
System.out.println ("Siapakah nama anda?");
String nama = console.readLine();
System.out.println ("Hallo " + nama + ".");
System.out.println ("Tahun anda lahir (xxxx)?");
String input = console.readLine ();
int tahun = Integer.parseInt (input);
int umur = 2005 - tahun;
System.out.println ("Pada tahun 2005"
+ " umur anda: " + umur);
}
11/02/21 Algoritma & Pemrograman 39
catch (IOException ioe) {
System.err.println ("O..O.. ada
kesalahan");
System.err.println (ioe);
System.exit (1);
}
catch (NumberFormatException e) {
System.err.println (" O..O.. Ada kesalahan”
+ " input angka");
System.err.println (e);
System.exit (1);
}
}
}
11/02/21 Algoritma & Pemrograman 40
Ringkasan
 Konversi tipe data:
 Widening conversion / promotion (otomatis
jika tipe data compatible)
 Narrowing conversion (perlu casting yang
dilakukan oleh programmer)
 String adalah Reference type
 Baca input dari keyboard

11/02/21 Algoritma & Pemrograman 41

Anda mungkin juga menyukai