Pengenalan Java

31
25/02/2013 1 Pengenalan Bahasa Pemrograman Pengenalan Bahasa Pemrograman Java Java 2 Apa yang Disebut Java ? Apa yang Disebut Java ? Bahasa pemrograman berorientasi objek murni yang dibuat berdasarkan kemampuan-kemampuan terbaik bahasa pemrograman objek sebelumnya (C++, Ada, Simula). Diciptakan oleh James Gosling, developer dari Sun Microsystems pada tahun 1991.

description

Selamat belajar

Transcript of Pengenalan Java

25/02/2013

1

Pengenalan Bahasa Pemrograman Pengenalan Bahasa Pemrograman

JavaJava

2

Apa yang Disebut Java ?Apa yang Disebut Java ?

• Bahasa pemrograman berorientasi objek

murni yang dibuat berdasarkan

kemampuan-kemampuan terbaik bahasa

pemrograman objek sebelumnya (C++,

Ada, Simula).

• Diciptakan oleh James Gosling,

developer dari Sun Microsystems pada

tahun 1991.

25/02/2013

2

3

KarakteristikKarakteristik JavaJava

• Sederhana, semudah C dan seampuh C++: berlawanan

dengan anggapan orang-orang bahwa bahasa Java sulit

untuk dipelajari, Java gampang untuk dipelajari terutama

untuk orang yang sudah mengenal pemrograman tapi

belum terlalu terikat pada paradigma pemrograman

prosedural. Tentu saja ini berarti bahwa kita harus siap

mempelajari salah satu teknologi yang berkembang paling

cepat di dunia dalam dua tahun terakhir ini dengan

banyak membaca tentunya baik dari buku maupun

melalui web.

KarakteristikKarakteristik JavaJava

• Sangat berorientasi obyek (OOP) dengan

implementasi yang sangat baik

• Arsitekturnya yang kokoh dan pemrograman

yang aman. Dalam Java program yang kita buat

tidak mudah untuk “hang” karena konflik pada

memori biasanya diselesaikan dengan

mengumpulkan obyek-obyek yang sudah tak

terpakai lagi secara otomatis oleh garbage

collector. Penanganan kesalahan juga

dipermudah dalam Java dengan konsep

Exception

4

25/02/2013

3

KarakteristikKarakteristik JavaJava

• Bukan sekedar bahasa tapi juga platform sekaligus arsitektur.

Java

• mempunyai portabilitas yang sangat tinggi. Ia dapat berada

pada smartcard, pager, POS (Point of Service), handphone, PDA,

palm, TV, Embedded device (PLC, micro controller), laptop, pc,

dan bahkan server). Menyadari akan hal ini Sun membagi

arsitektur Java membagi tiga bagian, yaitu:

• Enterprise Java (J2EE) untuk aplikasi berbasis web, aplikasi

sistem tersebar dengan beraneka ragam klien dengan

kompleksitas yang tinggi. Merupakan superset dari Standar Java

• Standard Java (J2SE), ini adalah yang biasa kita kenal sebagai

bahasa Java, dan merupakan fokus kita sekarang.

• Micro Java (J2ME) merupakan subset dari J2SE dan salah satu

aplikasinya yang banyak dipakai adalah untuk wireless

device/mobile device

5

KarakteristikKarakteristik JavaJava

• Program Java dijalankan menggunakan

interpreter melalui Java Virtual machine (JVM).

Hal ini menyebabkan source code Java yang

telah dikompilasi menjadi Java bytecodes dapat

dijalankan pada platform yang berbeda-beda.

• Fitur-fitur utama yang lain:

- Mendukung multithreading.

- Selalu memeriksa tipe obyek pada saat

runtime.

6

25/02/2013

4

7

Java Sun MicrosystemJava Sun Microsystem

• Java 2 Software Developer Kit (J2SDK)

� Windows

� SPARC

� X86 Solaris

� Linux

• Versi terbaru Java SE 7

8

Bagaimana Java Bekerja ?Bagaimana Java Bekerja ?

25/02/2013

5

9

Bagaimana Java Bekerja ? Bagaimana Java Bekerja ? ( lanjutan )( lanjutan )

10

Java PlatformJava Platform

• Platform dapat diartikan sebagai lingkungan perangkat

keras atau perangkat lunak dimana program dijalankan.

Umumnya platform berdasarkan nama sistem operasi

yang digunakan, misalnya Windows 2000, Linux, Solaris,

atau MacOS.

• Platform Java mempunyai dua komponen, yaitu:

• Java Virtual machine (Java VM)

Merupakan fondasi untuk platform Java yang dapat

digunakan di berbagai platform perangkat keras.

• Java Application Programming Interface (Java API)

Kumpulan komponen-komponen perangkat lunak siap

pakai (ready-made software components) untuk berbagai

keperluan

25/02/2013

6

11

Membuat Program JavaMembuat Program Java

• Persiapan

� Download dan Instalasi J2SDK

� Setting jalur eksekusi

• Penulisan program:

� Menulis program

� Kompilasi

� Eksekusi

Identifier Identifier didi JavaJava

• Identifier adalah nama yang diberikan kepada variabel, method, kelas, paket, dan interface

• Adapun tatacara penamaan identifier:

1. Case sensitive, huruf kapital dan kecil dibedakan

2. Identifier yang diberikan oleh pemrogram tidak boleh sama dengan

keyword yang ada di Java

3. Dimulai dengan huruf atau underscore (garis bawah) atau tanda ($).

Namun sebisa mungkin diawali dengan huruf karena mungkin

identifier dengan awalan underscore dan ($) digunakan unruk

pemrosesan internal dan file import

4. Karakter berikutnya dapat berupa huruf atau angka 0 sampai 9.

Simbol-simbol seperti ‘+’ dan spasi tidak dapat digunakan

12

25/02/2013

7

Keywords Keywords didi JavaJava

• Keyword adalah identifier yang digunakan Java untuk suatu

tujuan khusus. Daftar keyword Java adalah sebagai berikut:

13

abstract do implements private thisboolean double import protected throwbreak else instanceof public throwsbyte extends int return transientcase false interface short truecatch final long static trychar finally native strictfp voidclass float new super volatilecontinue for null switch whiledefault if package synchronized

ContohContoh PenulisanPenulisan NamaNama VariabelVariabel

yang yang DiizinkanDiizinkan

• @2var

• _status

• tanggal

• jumlahBarang

• nama_kecil

• final_test

• int_float

14

25/02/2013

8

TipeTipe Data Data didi JavaJava

• Tipe data dalam Java dibagi dalam

dua kategori:

1. Sederhana (primitif)

2. Komposit (referensi)

15

TipeTipe data data sederhanasederhana ((primitifprimitif))

• Tipe data sederhana merupakan tipe inti. Tipe

sederhana tidak diturunkan dari tipe lain.

Terdapat delapan tipe data primitif di Java:

- Empat tipe adalah untuk bilangan

bulat (integer) : byte, short, int, long

- Dua untuk tipe angka pecahan (floating point):

float, double

- Satu untuk tipe karakter, yaitu char

- Satu untuk tipe boolean yang berisi nilai

logika: true/false

16

25/02/2013

9

TipeTipe data data sederhanasederhana ((primitifprimitif))

Tipe

DataPanjang Rentang Nilai Contoh Nilai

byte 8 bit -27 sampai 27 - 1

(-128 sampai 127 )

(256 kemungkinan nilai)

5

-126

short 16 bit -215 sampai 215 - 1

(-32.768 sampai 32.767)

(65.535 kemungkinan nilai)

9

-23659

int 32 bit -231 sampai 231 - 1

( -2.147.483.648 sampai 2.147.483.647)

(4.294.967.296 kemungkinan nilai)

2067456397

-1456398567

long 64 bit -2-63 sampai 263 - 1

( -9.223.372.036.854.775.808 sampai

9.223.372.036.854.775.807)

(18.446.744.073.709.551.616

kemungkinan nilai)

3L

-2147483648L

67L

17

Integer:

Floating Point:

Tipe data floating point merupakan tipe data untuk untuk

variabel yang nilai-nilainya adalah bilangan real (dapat

mempunyai pecahan desimal).

18

Tipe

DataPanjang

Contoh Penulisan Nilai yang

Diperbolehkan

float 32 bit 78F

-34736.86F

6.4E4F ( sama dengan 6,4 x

104 )

double 64 bit -2356

3.5E7

67564788965.567

TipeTipe data data sederhanasederhana ((primitifprimitif))

25/02/2013

10

Char:

Tipe data textual merupakan tipe data untuk variabel yang

nilai-nilainya adalah karakter tunggal. Tipe data yang

merupakan tipe data textual adalah char yang memiliki panjang

16 bit. Nilai variabel char ditulis dengan diberi tanda kutip

tunggal ‘...’. Berikut contoh penggunaan tipe data char :

public char alphabet = ‘A’;

public char ascii = ‘\111’; // jika dicetak, akan m enghasilkan

// huruf ‘I’;

19

TipeTipe data data sederhanasederhana ((primitifprimitif))

Logika (Boolean):

Tipe data logika adalah tipe data yang hanya memiliki 2

kemungkinan nilai, yaitu true atau false. Hanya satu tipe data

logika pada teknologi Java, yaitu boolean. Berikut contoh

penggunaan tipe data boolean :

public boolean status = true;

public boolean check = 10 < 5 ; // nilai check menj adi // false

20

TipeTipe data data sederhanasederhana ((primitifprimitif))

25/02/2013

11

TipeTipe Data Data KompositKomposit

Tipe data komposit merupakan tipe data yang

disusun dari tipe data sederhana atau tipe

komposit lain yang sudah ada. Tipe ini dapat

berupa array, string, kelas, dan interface.

Khusus untuk String pada Java dikenali sebagai

kelas, bukan sebagai array of character. String

pada Java diapit oleh tanda petik ganda

(“.....”), contoh:

String s=”Saya makan nasi”;

21

PromosiPromosi dandan CastingCasting

Promosi adalah proses pengubahan representasi bit variabel

primitif dari representasi bit yang lebih rendah ke

representasi bit yang lebih tinggi. Promosi dapat terjadi

apabila :

a. Jika terjadi assigning nilai dari tipe data dengan

representasi bit yang lebih kecil ke tipe data dengan

representasi bit yang lebih besar, seperti yang

diperlihatkan pada contoh berikut ini:

short a = 12;

int b = a ;

22

25/02/2013

12

PromosiPromosi dandan CastingCasting

b. Jika terjadi assigning nilai dari tipe data integral ke tipe

data floating-point, seperti yang diperlihatkan pada

contoh

int a = 30;

float b = a ;

23

PromosiPromosi dandan CastingCasting

Casting tipe merupakan proses pengubahan representasi

bit variabel primitif dari representasi bit yang lebih tinggi

ke representasi bit yang lebih rendah. Sintak dari type

casting adalah sebagai berikut :

identifier = (target_type) value ;

ket:

– identifier = nama variabel yang menjadi tempat

penyimpanan nilai;

– target_type­ = tipe data yang diinginkan menjadi tipe

data dari value;

– value = nilai yang akan di­-casting.

24

25/02/2013

13

PromosiPromosi dandan CastingCasting

Berikut contoh casting tipe

int num1 = 34;

int num2 = 45;

short num3 = (short)(num1 + num2 );

System.out.println(num3);

25

Operator Operator didi JavaJava

• Operator Unary

26

Arti Operator Operator Contoh Pemakaian

Pre-Increment ++operand int i = 8 ;

int j = ++i;

i bernilai 9, j bernilai 9

Post-Increment operand++ int i = 8;

int j = i++;

i bernilai 9, j bernilai 8

Pre-Decrement --operand int i = 8 ;

int j = --i;

i bernilai 7 , j bernilai 7

Post-Increment operand-- int i=8;

int j = i--;

i bernilai 7, j bernilai 8

25/02/2013

14

• Operator Binary

27

Arti Operator Operator Contoh Pemakaian Keterangan

Penjumlahan + sum=num1 + num2

Pengurangan - diff=num1 - num2

Perkalian * prod=num1 * num2

Pembagian / quot=num1 / num2 jika num1 dan num2 adalah integer,

pembagian akan menghasilkan nilai integer

tanpa mengikutsertakan sisa, jika terdapat

sisa.

Sisa

(modulus)

% mod=num1 % num2 Hasil operasi modulus adalah sisa dari

operasi num1 / num2.

Hasil operasi modulus memiliki tanda ( +/- )

yang sama dengan operand pertama

PrioritasPrioritas OperatorOperator

• operator yang berada dalam tanda kurung “( ... )” atau

disebut juga parantheses;

• operator-operator increment atau decrement;

• operator - operator perkalian atau pembagian, yang

urutan operasinya dari kiri ke kanan;

• operator-operator penjumlahan atau pengurangan, yang

urutan operasinya dari kiri ke kanan;

28

25/02/2013

15

• Contoh

int c = 12 * 3 +5 / (8 - 3) ;

Maka urutan operasinya adalah sebagai berikut :

int c = 12 * 3 + 5 / 5 ;

int c = 36 + 5 / 5;

int c = 36 + 1 ;

int c = 37;

29

• Operator Relasi

30

Condition Operator Example

Is equal to

(atau “is the same as”)==

int i = 1;System.out.println(i==1); // (output : true)

Is not equal to

(atau “is not the same

as”)

!=

int i = 1;System.out.println(i!=1); // (output : false)

Is less than <

int i = 1;System.out.println(i<1); // (output : false)

Is less than or equal to <=

int i = 1;System.out.println(i<=1); // (output : true)

Is greater than >

int i = 1;System.out.println(i>1); //( output : false)

Is greater than or equal

to>=

int i = 1;System.out.println(i>=1); // (output : true)

25/02/2013

16

Operator kondisional

31

Condition Operator Example

If one condition AND another

condition

&& int i = 1;int j = 2;System.out.println((i<1)&&(j>0));// (output : false)

If either condition OR another

condition

|| int i = 1;int j = 2;System.out.println((i<1)||(j>0));// (output : true)

NOT ! int i = 1;System.out.println(!(i<3));// (output : false)

KataKata KunciKunci FinalFinal

Dalam aplikasi terkadang

dibutuhkan suatu variabel yang

dicegah untuk dimodifikasi oleh

program lainnya. Hal ini dilakukan

untuk menjaga agar logika program

tetap terjaga. Untuk membuat

konstanta, digunakan sebuah

modifier final.

32

25/02/2013

17

KataKata KunciKunci FinalFinal

• Contoh

class Lingkaran{

final double pi = 3.14; //konstanta yg nilainya tid ak // dapat diubah lagi oleh //program lain

double jari2;

double luas;

public double hitungLuas(){

luas = pi*jari2*jari2;

return luas;

}

public double hitungKeliling(){

return 2*pi*jari2;

}

}

33

KonstruksiKonstruksi PengambilanPengambilanKeputusanKeputusan

Konstruksi if

Konstruksi if merupakan bentuk konstruksi pengambilan

keputusan dengan 2 kemungkinan keputusan. Kemungkinan-

kemungkinan keputusan itu akan dipilih berdasarkan suatu

kondisi yang diperiksa. Kondisi tersebut merupakan suatu

ekspresi boolean / boolean­­ expression.

Sintaks dasarnya:

if ( boolean_expression ){

code block;

}

34

25/02/2013

18

35

Contoh:

public class HasilUjian{

public static void main(String[] args){

int nilai1 = 8;

int nilai2 = 7;

int nilai3 = 5;

float rata_rata = (float)(nilai1 + nilai2 + nilai3) /3;

if(rata_rata<5){

System.out.println(“Tidak Lulus”);

}

System.out.println(“Nilai Rata-rata = ”+rata_rata);

}

}

36

25/02/2013

19

Konstruksi if..else..

Konstruksi if / else digunakan sebagai konstruksi

pengambilan keputusan yang memiliki beberapa

kemungkinan keputusan. Sintak dasarnya adalah seperti

berikut :if ( boolean_expression_1 ){

code block 1;} else if ( boolean_expression_2 ){

code block 2;}...else{

code block n;} 37

38

25/02/2013

20

Contoh

public class HasilUjian{

public static void main(String[] args){

int nilai1 = 8;

int nilai2 = 7;

int nilai3 = 5;

float rata_rata = (float)(nilai1 + nilai2 + nilai3)/3;

if(rata_rata<5){

System.out.println(“Tidak Lulus”);

} else if ((rata_rata>=5) && (rata_rata<6)){

System.out.println(“Harus ikut ujian perbaikan”);

} else { // rata_rata >= 6

System.out.println(“Lulus”);

}

System.out.println(“Nilai Rata-rata = ” + rata_rata);

}

}39

Konstruksi Switch

Konstruksi switch adalah konstruksi pengambilan keputusan

yang mengevaluasi kemungkinan-kemungkinan nilai dari

variabel yang dievaluasi. Bentuk umum syntax konstruksi

switch adalah sebagai berikut:switch( variabel ) {

case nilai_literal_1 :code_block_1;break;

case nilai_literal_2 :code_block_2;break;

.

.default:code_block_default;break;

} 40

25/02/2013

21

Keterangan:

– switch adalah kata kunci yang mengindikasikan dimulainya

konstruksi switch;

– variabel adalah variabel yang nilainya akan dievaluasi.

variabel hanya dapat bertipe-data char, byte, short, atau

int;

– case adalah kata kunci yang mengindikasikan sebuah nilai

yang diuji. Kombinasi kata kunci case dan nilai_literal

disebut case label;

– nilai_literal_k adalah nilai yang mungkin akan menjadi nilai

variabel. nilai_literal_k tidak dapat berupa variabel,

ekspresi, atau method, tetapi dapat merupakan konstanta.

k = {default, 1,2,...,n };

– break adalah pernyataan yang sifatnya opsional, yang

mengakibatkan aliran program keluar dari blok switch. Jika

setelah code_block_k tidak terdapat pernyataan break,

maka aliran program akan masuk ke case berikutnya. k =

{default, 1,2,3,...,n};

– default adalah kata kunci yang mengindikasikan

code_block­_default akan dieksekusi jika semua case yang

diuji tidak sesuai dengan nilai variabel . 41

Contoh:public class HasilUjian{

public static void main(String[] args){

int nilai1 = 8;

int nilai2 = 7;

int nilai3 = 5;

float rata_rata = (float)(nilai1 + nilai2 + nilai3)/3;

switch((int)rata_rata){

case 0 :

case 1 :

case 2 :

case 3 :

case 4 :

System.out.println(“Tidak Lulus”);

break;

case 5 :

System.out.println(“Ikut ujian perbaikan”);

break;

default :

System.out.println(“Lulus”);

break;

}

System.out.println(“Nilai Rata-rata = ” + rata_rata);

}

}

42

25/02/2013

22

KonstruksiKonstruksi PengulanganPengulangan (looping)(looping)

While

Konstruksi while adalah konstruksi pengulangan yang jumlah

perulangannya tergantung pada suatu kondisi logika

tertentu. Bentuk umum konstruksi while adalah sebagai

berikut :

while(boolean_expression){

code_block;

} //akhir dari konstruksi while

43

Pada konstruksi while, langkah-langkah proses

perulangannya adalah sebagai berikut :

• Sistem memeriksa boolean_expression.

• Jika nilai boolean_expression adalah true, maka

code_block akan dieksekusi. Jika tidak, maka code_block

tidak dieksekusi.

• Jika di dalam code_block terdapat pernyataan kondisi

yang menyebabkan proses harus keluar dari blok while,

maka proses akan keluar dari pengulangan, meskipun

boolean_expression masih bernilai true.

44

25/02/2013

23

Contoh:

public class Contoh1{

public static void main(String[] args){

int num1 = 0;

int num2 = 23;

int num3 = num1+num2;

while(num3 > num1){

num2-=3;

num1+=2;

num3 = num1+num2;

System.out.println(“num1=”+num1+”,num3=“+num3);

}

}

}

45

public class Contoh9_2 {

public static void main(String[] args){

int variable = 20;

while(true){ System.out.println(“Nilai variable = ”+variable);

--variable;

if(variable<10){

break;

}

}

}

}

46

25/02/2013

24

Konstruksi for

Bentuk umum dari konstruksi loop menggunakan for adalah :

for(initialize[,initialize]; boolean_expression; update[,update]){

code_block;

}

• bagian inisialisasi, yang berisi pernyataan pemberian

nilai awal untuk suatu variabel parameter;

• bagian boolean_expression, yang berisi pernyataan logika

yang akan diperiksa, sebagai syarat pengulangan terus

dilanjutkan. Pengulangan akan dilanjutkan jika nilai

ekspresi boolean pada segmen ini bernilai true.

• bagian update, yang berisi pernyataan updating

parameter ketika satu putaran pada pengulangan selesai

dieksekusi.47

• bagian inisialisasi dapat diisi dengan

lebih dari 1 pernyataan inisialisasi;

• bagian boolean_expression hanya

dapat diisi oleh 1 pernyataan

logika;

• bagian update dapat diisi dengan

lebih dari 1 pernyataan update.

48

25/02/2013

25

Contoh

public class Contoh3{

public static void main(String[] args){

for(int variable=20; variable>=10;variable--){

System.out.println(“Nilai variable =”+ variable);

}

}

}

49

public class Contoh4{

public static void main(String[] args){

for(int variable1=20, variable2=0; variable1>=10&&variable2<=5;variable1--,variable2++){

System.out.println(“Nilai variable1= ”+ variable1);

System.out.println(“Nilai variable2= ”+variable2);

}

}

}

50

25/02/2013

26

public class Contoh5{

public static void main(String[] args){

int variable = 20;

for( ; ; ){

System.out.println(“Nilai variable1= ”+variable);

variable--;

if(variable<10)break;

}

}

}

51

Konstruksi do…while

Konstruksi Pengulangan do/while mirip dengan konstruksi

while. Perbedaannya adalah pada urutan prosesnya, yaitu :

• Looping dijalankan terlebih dahulu;

• Dilakukan pemeriksaan kondisi. public class Contoh6{

public static void main(String[] args){

int variable = 20;

do{

System.out.println(“Nilai variable1= ”+ variable);

variable--;

}while(variable>20);

}

}

52

25/02/2013

27

PerulanganPerulangan BersarangBersarang

Pengulangan bersarang / nested

loop adalah susunan pengulangan

bertingkat, di mana terdapat

minimal satu blok pengulangan di

dalam blok pengulangan yang lain.

53

ContohContoh PerulanganPerulangan BersarangBersarang

public class Contoh{public static void main(String[] args){

int j=0;for(int i=0;i<5;i++){

while(j<5){System.out.print(" @ ");j++;

}j=0;System.out.print("\n");

}}

}

54

25/02/2013

28

• Output

@@@@@

@@@@@

@@@@@

@@@@@

@@@@@

55

PernyataanPernyataancontinuecontinue

• Pada blok pengulangan terkadang

diperlukan untuk menghentikan

proses pengulangan pada iterasi

tertentu untuk dilanjutkan ke

iterasi berikutnya. Hal ini dapat

dilakukan pernyataan continue.

Berikut ini contoh penggunaan

continue.

56

25/02/2013

29

Contoh:

public class Continue{public static void main(String[] args){

for(int i=0;i<10;i++){System.out.print(i + " ");if (i%2 == 0) continue;System.out.println(“ ”);

}}

}

57

• Pada contoh tersebut digunakan System.out.print untuk mencetak variabel

i tanpa pindah baris. Kemudian digunakan

operator modulus (%) untuk memeriksa apakah

indeksnya genap atau ganjil. Jika genap,

pengulangan dilanjutkan tanpa mencetak

perpindahan baris. Hal ini berarti pernyataan System.out.ptintln(” ”) tidak dieksekusi

atau dilewatkan dan program melanjutkan ke iterasi berikutnya atau ke nilai i berikutnya.

58

25/02/2013

30

Continue Continue BerlabelBerlabel

• pernyataan continue dapat

dilengkapi dengan label untuk

menentukan pengulangan mana

yang harus dilanjutkan. Pernyataan

continue pada contoh berikut ini

menghentikan perulangan j dan

meneruskan iterasi selanjutnya

pada perulangan i.

59

public class ContinueLabel{

public static void main(String[] args){

outer : for(int i=0;i<10;i++){

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

if (j>i){

System.out.println(“ ”);continue outer;

}

System.out.print(“ “ + (i*j));

}

}

System.out.println(“”);

}

}

60

25/02/2013

31

PerbandinganPerbandinganKonstruksiKonstruksi

PengulanganPengulangan

• While digunakan untuk membuat iterasi dengan jumlah

iterasi yang tidak pasti dan untuk iterasi dari nol sampai

beberapa kali;

• Do/While, digunakan untuk membuat iterasi dengan

jumlah iterasi yang tidak pasti, dan untuk iterasi dari

satu sampai beberapa kali. Pada pengulangan ini

pernyataan di dalam blok pengulangan dijamin dieksekusi

minimal satu kali;

• For, lebih tepat digunakan untuk membuat iterasi dengan

jumlah iterasi yang pasti dan berhingga.

61