KONSEP DASAR PEMROGRAMAN
PROGRAM : Merupakan himpunan atau kumpulan instruksi tertulis yang dibuat oleh programer atau suatu bagian executable dari suatu software.
PEMROGRAMAN : Suatu kumpulan urutan perintah ke komputer untuk mengerjakan sesuatu, dimana instruksi tersebut menggunakan bahasa yang dimengerti oleh komputer atau dikenal dengan bahasa pemrograman.
Mulai
Batasan Masalah
Pemrograman
Selesai
Dokumentasi
Pengujian Pembetulan Analisa
Tahap Pengembangan Pogram
Perbaikan Algoritma
Rancangan Algoritma
Pengembangan Model
DATA : Bahan mentah yang akan diolah menjadi informasi sehingga dapat dipergunakan oleh user atau pemakai.
Tipe data yang biasa digunakan adalah : 1. Tipe Data Dasar : merupakan tipe data primitif yang tidak terstruktur yang didefinisikan oleh bahasa pemrograman.
Tipe data dasar dibagi menjadi lima bagian yaitu : a. Tipe Data Numerik : disetiap bahasa pemrograman dapat dipastikan ada tipe data numerik yaitu menyimpan data berupa angka. Integer : merupakan bilangan bulat positif dan negatif Subrange : merupakan sebuah subtype dari tipe data integer dan terdiri dari urutan nilai-nilai integer dalam range yang tebatas. Floating-point Real : biasa disingkat dan disebut tipe data riil. Fixed-point Real : Bilangan fixwd-pont direpresentasikan dengan urutan digit
b. Enumerasi: adalah suatu urutan list dari nilai-nilai yang berbeda. c. Boolean : tipe data untuk merepresentasikan True atau False. d. Character: tipe data untuk menyimpan rangkaian karakter. e. Internationalization : disebut I18N
2. Tipe Data Terstruktur : merupakan tipe data campuran dari berbagai tipe data dasar, contohnya array, record, string, list dan file.
3. Tipe Data didefinisikan oleh Pemakai : tipe data ini biasanya disebut Enumerasi.
4. Tipe Data Penunjuk : contoh tipe data penunjuk adalah pointer.
MODEL KOMPUTASI
Model Komputasi : adalah suatu kumpulan dari nilai dan operasi-operasi.
Ada 3 dasar model komputasi : 1. Model Fungsional Model perhitungan yang fungsional terdiri dari satu set nilainilai, fungsi dan operasi
DEFINISI SINTAKS, SEMANTIK DAN PRAGMATIS
SINTAKS : Aturan gramatikal / komposisi suatu program yang mengatur tata cara penulisan huruf, angka dan karakter lain. Contoh : Pada pembuatan program Pascal antara 2 statement dipisahkan oleh ; (titik koma) X:=1; X:=X+1;
SEMANTIK : Mendefinisikan arti dari program yang benar secara sintaks dari bahasa pemrograman tersebut. Contoh : Pada pembuatan program C int vector[10] Arti semantiknya akan menyebabkan ruang sebanyak 10
PRAGMATIS : Menguraikan derajat tingkat sukses dengan suatu bahasa pemrograman kepada model perhitungan dalam kegunaannya untuk para programer.
Prinsip-prinsip Desain Bahasa Pemrograman a. Clarity, Simplicity dan Unity
Bahasa pemrograman harus dapat menolong programer untuk membuat suatu desain program jauh sebelum programmer melakukan coding. Kemudahan, kesederhanaan dan kesatuan merupakan suatu kombinasi yang membantu programmer mengembangkan suatu algoritma sehingga algoritma yang dihasilkan mempunyai kompleksitas yang rendah.
b. Orthogonality
Orthogonality menunjuk kepada suatu atribut yang dapat dikombinasikan dengan beragam fitur bahasa pemrograman sehingga setiap kombinasinya mempunyai arti dan dapat digunakan.
c. Kewajaran untuk Aplikasi
Bahasa pemrograman membutuhkan syntax yang tepat/cocok yang digunakan pada struktur program untuk merefleksikan struktur logika yang melandasi suatu algoritma.
d. Mendukung Abstraksi
Abstraksi merupakan suatu hal yang substansial bagi programmer untuk membuat suatu solusi dari masalah yang dihadapi. Kemudian abstraksi tersebut dapat dengan mudah diimplementasikan menggunakan fitur-fitur yang ada dalam bahasa pemrograman.
e. Kemudahan untuk Verifikasi Program
Verifikasi program merupakan hal penting bagi sebuah program karena dengan verifikasi yang mudah maka suatu program akan dengan mudah dibangun dan dikembangkan.
f. Lingkungan Pemrograman
Bahasa pemrograman yang mempunyai lingkungan pemrograman yang baik dan lengkap akan memudahkan programmer untuk mengimplementasikan abstraksi yang sudah disusunnya.
g. Portabilitas Program
Salah satu kriteria penting untuk proyek pemrograman adalah kemudahan program yang sudah jadi untuk dipindah-pindahkan dari komputer yang digunakan untuk membuat dan mengembangkan ke komputer lain yang akan menggunakannya.
h. Biaya Penggunaan
Biaya merupakan elemen penting dalam mengevaluasi suatu bahasa pemrograman. Ada beberapa biaya yang dapat diukur yaitu : 1. Biaya Eksekusi Program 2. Biaya Translasi/kompilasi Program 3. Biaya Penciptaan, Testing dan Penggunaan Program 4. Biaya Pemeliharaan Program
Kriteria bahasa pemrograman.
1. Clarity, simplicity, dan unity
Bahasa pemrograman harus dapat menolong programmer untuk membuat suatu desain program jauh sebelum programmer melakukan coding. Kemudahan, kesederhanaan, dan kesatuan merupakan suatu kombinasi yang membantu programmer mengembangkan algoritma sehingga algoritma yang dihasilkan mempunyai kompleksitas yang rendah.
Syntax bahasa pemrograman mempengaruhi kemudahan ketika program mulai
2. Orthogonality
Orthogonality menunjuk kepada sautu atribut yang dapat dikombinasikan dengan beragam fitur bahasa pemrograman sehingga setiap kombinasinya mempunyai arti dan dapat digunakan. Contohnya, suatu bahasa pemrograman mendukung suatu ekspresi yang dapat menghasilkan suatu nilai, dan bahasa pemrograman tersebut juga mendukung statemen kondisi yang mengevaluasi suatu ekspresi untuk mendapatkan nilai true atau false. Dua fitur dari bahasa
3. Kewajaran untuk Apikasi
Bahasa pemrograman membutuhkan syntax yang tepat dan cocok yang digunakan pada struktur program untuk merefleksikan struktur logika yang melandasi suatu algoritma. Bahasa pemrograman harus mempunyai struktur data, operasi-operasi, struktur kontrol, dan syntax alami yang tepat/cocok untuk memcahkan suatu masalah. Suatu bahasa pemrograman didesain secara khusus untuk kebutuhan tertentu, misalnya PROLOG digunakan untuk keperluan deduksi atau C++ untuk pemrograman berorientasi objek.
4. Mendukung Abstraksi
Abstraksi merupakan suatu hal yang substansial bagi programmer untuk membuat suatu solusi dari masalah yang dihadapi. Kemudian abstraksi tersebut dapat dengan mudah diimplementasikan menggunakan fitur-fitur yang ada dalam bahasa pemrograman.
5. Kemudahan untuk Verifikasi Program
Verifikasi program merupakan hal penting bagi subuah program karena denga verifikasi yang mudah maka suatu program akan dengan mudah dibangun dan dikembangkan. Kesederhanaan struktur semantic dan syntax merupakan aspek utama yang mempengaruhi kesederhanaan verifikasi program.
6. Lingkungan Pemrograman
Bahasa pemrograman yang mempunyai lingkungan pemrograman yang baik dan lengkap akan memudahkan programmer untuk mengimplementasikan abstraksi yang sudah disusunnya. Lingkungan pemrograman disini dapat berarti editor yang digunakan, documentasi yang baik dari bahasa pemrograman, fasilitas debugging, user interface yang baik, ataupun tool lain yang dapat digunakan untuk memudahkan
7. Portabilitas Program
Salah satu kriteria penting untuk proyek pemrograman adalah kemudahan program yang sudah jadi untuk dipindahkan dari komputer yang digunakan untuk membuat dan mengembangkan ke komputer lain yang akan menggunakannya.
8. Biaya Penggunaan
Biaya merupakan elemen penting dalam mengevaluasi suatu bahasa pemrograman. Ada beberapa biaya yang dapat di ukur, yaitu : 1) Biaya Eksekusi program Program yang sering dieksekusi akan membutuhkan suatu kode executable yang efisien sehingga cepat untuk dieksekusi. Sewmakin cepat suatu program dieksekusi maka akan semakin murah biaya eksekusi program. 2) Biaya Translasi/Kompilasi program Untuk pemlajaran, kecapatan translasi lebih
3) Biaya penciptaan. testing, dan penggunaan program Semakin baik dan lengkap lingkungan pemrgraman pada bahasa pemrograman maka ketiga biaya ini akan menjadi rendah. hal ini disebabkan tidak banyaknya waktu dan tenaga serta pikiran yang dicurahkan ke pembuatan program.
4) Biaya pemeliharaan program Pemeliharaan program termsuk perbaikan error yang muncul ketika program sudah digunakan, perubahan yang dibutuhkan pada program ketika hardware atau sistem operasi
Pemrograman PASCAL 1
KONSEP DASAR BAHASA PASCAL Pengertian Pemrograman / programming : adalah pekerjaan penulisan instruksi bagi komputer untuk menyelesaikan suatu masalah. Program
: adalah himpunan instruksi yang diperuntukkan bagi komputer, untuk menyelesaikan masalah yang diberikan.
Interpreter : menerjemahkan perintah baris demi baris dan langsung melaksanakannya. contoh : BASIC. Compiler
: menerjemahkan dulu seluruh perintah dalam bahasa mesin. Baru kemudian terjemahan tersebut dijalankan oleh komputer. Contoh : FORTRAN, C, PASCAL.
2.1. Sejarah Singkat Bahasa PASCAL Bahasa PASCAL pertama kali dikembangkan pada awal tahun 70-an oleh NICLAUS WIRTH di Technical University, Zurich – Swiss. Nama PASCAL diambil dari nama seorang ahli matematika bangsa Perancis, yaitu BLEISE PASCAL yang telah berjasa menemukan alat hitung mekanis pertama didunia pada abad ke-17. Bahasa pemrograman ini termasuk kategori “High Level Language”. Instruksi-instruksi yang digunakan dalam bahasa pemrograman ini sangat sistematis dan terstruktur. Pada Awalnya bahasa pemrograman ini diperkenalkan dengan tujuan untuk menjelaskan masalah pemrograman komputer bagi mahasiswa yang belajar pemrograman komputer. Ternyata dalam waktu singkat, nahasa pemrograman ini menjadi salah satu bahasa yang sangat populer dikalangan universitas, sehingga menjadi julukan sebagai bahasa universitas. Mulai dari awal perkembangannya hingga saat ini banyak sekali jenis bahasa pemrograman ini, masing-masing merupakan hasil pengembangannya, antara lain : UCSD Pascal Microsoft Pascal Apple Pascal Turbo Pascal dsb Diantara versi-versi yang ada, Turbo Pascal merupakan versi yang sangat populer saat ini.
Halaman : 1
Pemrograman PASCAL 1
2.2. Struktur Dan Komponen Dasar Program Pascal. Struktur dari suatu program Pascal terdiri dari sebuah judul program dan suatu blok program atau badan program. Blok program dibagi lagi menjadi dua bagian, yaitu bagian deklarasi dan bagian pernyataan (statement). 2.2.1. Struktur program : Judul Program Blok Program Bagian deklarasi - deklarasi label - deklarasi konstanta - deklarasi tipe - deklarasi variabel - deklarasi prosedur - deklarasi fungsi
PROGRAM nama-program;
LABEL nama-label; CONST…………..; TYPE …………….; VAR ……………...; PROCEDURE nama-prosedur; ……………………………….; FUNCTION nama-fungsi; ………………………….;
Bagian Pernyataan Begin (statement) …………; …………; end.
Contoh : Menghitung luas bidang berbentuk empat persegi panjang dengan panjang P dan lebar L. PROGRAM Luas; VAR P,L,Luas : real; BEGIN Read (P,L); Luas := P*L; Write (P,L,Luas); END.
{Judul} {Deklarasi variabel} {Statemant} {Statement} {Statement}
Judul program sifatnya adalah optional, dan bila ditulis, harus terletak pada awal dari program dan diakhiri dengan titik koma. Bagian deklarasi digunakan bila di dalam program digunakan pengenal ( identifier). Identifier dapat berupa label, konstanta, tipe, variabel, prosedur dan fungsi. Kalau suatu program menggunakan identifier, Pascal menuntut supaya identifier tersebut Halaman : 2
Pemrograman PASCAL 1
diperkenalkan terlebih dahulu sebelum digunakan, yaitu dideklarasikan terlebih dahulu pada bagian ini. Beberapa aturan dalam program Pascal :
Akhir sebuah program Pascal ditandai dengan tanda baca titik (.) setelah END yang paling akhir. Tanda titik koma (;) merupakan pemisah antar instruksi satu dengan lainnya. Beberapa statement boleh ditulis menjadi satu baris dipisahkan dengan tanda baca titk koma (;) Contoh : simpan := akhir; akhir := simpan + awal; Baris komentar diletakkan diantara tanda (* dan *) atau diantara tanda { dan } Contoh : Var rerata : real; (*nilai rata-rata*) Nil1 : real; {nilai ujian}
Statement (pernyataan) Adalah instruksi atau gabungan instruksi, yang menyebabkan komputer melakukan aksi.
Type statement dalam Pascal terdiri atas : 1. Sederhana : - menandai sebuah item data ke sebuah variabel (assigment statement) contoh : X := Y * 4.135 - pemanggilan procedure dan goto statement 2. Terstruktur: - Compound Statement contoh : Begin read (x) ; y := x + 5; write (y) End. - Repetitive Statement contoh : For I := 1 to 100 do write (count); - Conditional Statement contoh : If x > 100 then write (s) else write (p) ;
2.2.2. Komponen Dasar Program Pascal Pola susun bahasa Pascal dibentuk dengan menggunakan komponen bahasa pemrograman yang umum, yaitu : 1. Simbol Dasar
Halaman : 3
Pemrograman PASCAL 1
2. Reserved Word (kata pasti) 3. Identifier (penyebut) 1. Simbol Dasar. Simbol dasar terdiri atas : 1. Simbol huruf, yaitu huruf A sampai dengan Z atau a sampai dengan z. (huruf besar dan kecil). 2. Simbol angka atau digit yaitu : 0,1,2,3,4,5,6,7,8,9. 3. Simbol khusus, yaitu + - * / ; := , ‘ = < > <= >= <> : { } ( ) [ ] 2. Reserved Word (kata pasti) Reserved Word adalah suatu kata yang secara mutlak tidak boleh diartikan lain dan harus digunakan sebagaimana yang telah didefinisikan atau ditentukan kegunaanya oleh bahasa Pascal. Reserved word ini tidak boleh didefinisikan ulang oleh pemakai, sehingga tidak dapat dipergunakan sebagai pengenal (identifier) Reserved Word ini jumlahnya berbeda untuk masing-masing bahasa Pascal.
Contoh beberapa reserved word yang telah didefinisikan oleh bahasa pascal antara lain AND ARRAY BEGIN CASE CONST DO DOWNTO
ELSE END FUNCTION FOR GOTO IF IN
LABEL OF OR PROCEDURE VAR PROGRAM RECORD REPEAT
SET TYPE UNTIL WHILE WITH dsb
3. Identifier (sebutan/pengenal) Identifier merupakan sebuah kata yang digunakan sebagai nama atau sebutan terhadap sesuatu didalam program. Pemakai dapat mendefinisikan sendiri suatu nama sebagai identifier. Identifier ini terdiri atas : 1. Identifier Standar, yaitu identifier yang telah didefinisikan oleh bahasa pascal. Contoh dari Identifier standar ini antara lain: ABS LN ARCTAN ODB BOOLEAN PRED CHAR ROUND CHR READ COS READLN EOF SQR Halaman : 4
Pemrograman PASCAL 1
EOLN EXP Dan masih banyak lagi.
SQRT SUCC
2. Identifier Non Standar; yaitu identifier yang didefinisikan oleh pemakai bahasa pascal; misalnya; 3. nama suatu program 4. nama suatu konstanta 5. nama suatu variabel 6. nama suatu procedure Identifier ini bebas, tetapi dengan ketentuan-ketentuan sebagai berikut : 7. terdiri dari gabungan huruf dan angka dengan karakter pertama harus berupa huruf. Huruf besar dan huruf kecil dianggap sama. 8. Tidak boleh mengandung blank. 9. Tidak boleh mengandung simbol-simbol khusus, kecuali garis bawah. 10. Panjangnya bebas, tetapi hanya 63 karakter pertama yang dianggap signifikan. Contoh : Identifier GajiKaryawan No_Mhs P3K 1X A&B AB
Keterangan Benar Benar Benar Salah, karakter pertama harus huruf Salah, tidak boleh mengandung simbol khusus Salah, tidak boleh mengandung blank
2.3. Jenis – jenis data Jenis – jenis data yang dikenal dalam bahasa pascal antara lain yaitu: 1. Jenis data sederhana a. Jenis data yang standar; yaitu : Integer Real Karakter Boolean b. Jenis data yang non standar (user defined), yaitu; Enumerated Sub-range 2. Jenis data berstuktur, yaitu: a. Array b. Record c. Set
Halaman : 5
Pemrograman PASCAL 1
d. File 3. Jenis Data Pointer INTEGER Jenis data ini terdiri atas integer positif, integer negatif dan nol. Merupakan nilai bilangan bulat. Pada TURBO PASCAL jenis data ini di bagi atas beberapa bagian, yaitu :
Tipe BYTE SHORTINT INTEGER WORD LONGINT
Ukuran memori (dalam byte) 1 1 2 2 4
Jangkauan nilai 0..255 -128..127 -32768..32767 0..65535 -2147483648..2147483647
Operator Integer terdiri atas : + , - , * , / , DIV dan MOD Contoh : Var Jumlah : byte; Begin Jumlah := 200; WriteLn(‘Nilai JUMLAH = ‘,Jumlah); End. Hasilnya bila dijalankan : Nilai JUMLAH = 200 REAL
Penulisan untuk jenis data ini selalu menggunakan titik desimal. Nilai konstanta numerik real berkisar dari 1E-38 sampai dengan 1E+38 dengan mantissa yang signifikan sampai dengan 11 digit. E menunjukkan nilai 10 pangkat. Nilai konstanta numerik real menempati memori sebesar 6 byte. Contoh : 123.45 12345. salah, titik desimal tidak boleh dibelakang 12E5 12E+5
Halaman : 6
Pemrograman PASCAL 1
-12.34 .1234 salah, titik desimal tidak boleh dimuka Pada TURBO PASCAL, jenis data ini dibedakan atas : Tipe SINGLE DOUBLE EXTENDED COMP
Ukuran memori (dalam byte) 4 8 10 8
Jangkauan nilai
Digit signifikan
1.5x10E-45 .. 3.4x10E38 5.0x10E-324 .. 1.7x10E308 1.9x10E-4951 .. 1.1x10E4932 -2E+63+1 .. 2E+63-1
7-8 15-16 19-20 19-20
Operator untuk jenis data ini terdiri atas : + , - , * dan /
KARAKTER Yang dimaksud dengan jenis data ini adalah karakter tunggal atau sebuah karakter yang ditulis diantara tanda petik tunggal, seperti misalnya ‘A’,’a’,’!’,’5’ dsb. Dasarnya adalah ASCII CHARACTER SET. Misalnya : 032 pada tabel ASCII CHARACTER SET menunjukkan karakter. Blank. 033 048 076
! 0 L dst STRING
Nilai data string merupakan urut-urutan dari karakter yang terletak di antara tanda petik tunggal. Nilai data string akan menenpati memori sebesar banyaknya karakter stringnya ditambah dengan 1 byte. Bila panjang dari suatu string di dalam deklarasi variabel tidak disebutkan, maka dianggap panjangnya adalah 255 karakter. Contoh : Var Kampus : string[10]; Begin Kampus := ‘Gunadarma’; Write(Kampus); End. Halaman : 7
Pemrograman PASCAL 1
BOOLEAN Jenis data ini mempunyai nilai TRUE atau FALSE. Operator untuk jenis data ini adalah : 1. Logical Operator, yaitu : NOT, AND dan OR 2. Relational Operator, yaitu : >, <, >=, <=, <> dan = \ JENIS DATA NON-STANDARD (USER DEFINED) 1. ENUMERATED. Jenis data ini terdiri atas barisan identifier yang terurut dimana setiap identifier tersebut dianggap sebagai suatu individual data item (elemen data yang berdiri sendiri). Pada saat mendeklarasikan jenis data ini kita harus menuliskan semua elemenelemennya. Bentuk umum deklarasinya adalah : TYPE nama = (data_item_1, data_item_2, ……., data_item_n); Contoh : TYPE hari = (sen,sel,rab,kam,jum,sab,ming); TYPE warna = (red,blue,green,yellow,black,white); Setelah jenis data ini dideklarasikan, maka selanjutnya kita dapat mendeklarasikan suatu variabel yang berjenis data sama dengan jenis data ini. Misalnya : TYPE nama_hari = (sen,sel,rab,kam,jum,sab,ming); VAR libur : nama_hari; Fungsi standar yang dapat digunakan pada jenis data ini adalah : PRED, SUCC dan ORD Misalnya : PRED (sel) = sen Halaman : 8
Pemrograman PASCAL 1
SUCC (sen) = sel ORD (sen) = 0 ORD (sel) = 1 2. SUB-RANGE. Jenis data ini berupa range dari suatu kumpulan data yang mempunyai urutan.. Bentuk umum deklarasinya adalah : TYPE nama = data_item_pertama .. data_item_terakhir; Contoh : 1. TYPE
jam_kuliah = 1 .. 10; tanggal = 1 .. 31; abjad = ‘A’ .. ‘Z’;
2. TYPE
bulan = (jan,feb,mar,apr,mei,jun,jul,agt,sep,okt,nov,des); hari = (sen,sel,rab,kam,jum,sab,ming); ata = agt .. jan; pta = feb .. jun; hari_kerja = sen .. jum;
TANDA OPERASI Tanda operasi (operator) di dalam bahasa Pascal dikelompokkan ke dalam 9 kategori, yaitu 1. 2. 3. 4. 5. 6. 7. 8. 9.
Assignment operator. Binary operator. Unary operator. Bitwise operator. Relational operator. Logical operator. Address operator. Set operator. String operator.
Assignment operator Assignment operator (operator pengerjaan) menggunakan simbol titik dua diikuti oleh tanda sama dengan (:=). Contoh : Halaman : 9
Pemrograman PASCAL 1
A:=B;
Binary operator Digunakan untuk mengoperasikan dua buah operand. Operand dapat berbentuk konstanta ataupun variabel. Operator ini digunakan untuk operasi aritmatika yang berhubungan dengan nilai tipe data integer dan real. Opera Operasi tor * Perkalian
DIV /
Pembagian bulat Pembagian real
MOD +
Sisa pembagian Pertambahan
-
pengurangan
Tipe operand real,real integer,integer real,integer integer,integer real,real integer,integer real,integer integer,integer real,real integer,integer real,integer real,real integer,integer real,real
Tipe hasil real integer real integer real real real integer real integer real real integer real
Contoh : 15*5 20/3 20 div 3 20 mod 3
hasilnya hasilnya hasilnya hasilnya
75 6.6666666667E+00 6 2
Unary operator Operator ini hanya menggunakan sebuah operand saja. Dapat berupa unary minus dan unary plus. Unary minus digunakan untuk menunjukkan nilai negatif, baik pada operang numerik real maupun integer. Unaru plus adalah operator untuk memberai tanda plus. Contoh : -5 -2.5
+7 +2.5
Bitwise operator Digunakan untuk operasi bit per bit pada nilai integer. Terdiri dari operator NOT, AND, OR, XOR, Shl, Shr.
Halaman : 10
Pemrograman PASCAL 1
Relational operator Relational operator digunakan untuk membandingkan hubungan antara dua buah operand dan akan didapatkan hasil tipe boolean, yaitu True atau False. Terdiri dari operator : =, <, >, <=, >=, <>
Logical operator Terdapat 4 buah logical operator yaitu : NOT, AND, OR dan XOR. Operator ini bekerja dengan nilai-nilai logika, yaitu True dan False. Set operator Digunakan untuk operasi himpunan. String operator Digunakan untuk operasi string. Hanya ada sebuah operator string saja, yaitu operator + yang digunakan untuk menggabungkan dua buah nilai string. Contoh : Nama1 := ‘Arief ‘; Nama2 := ‘Kurniawan’; Nama3 := Nama1 + Nama2;
2.4. Konstanta, Variabel dan Ekspresi. Konstanta. Konstanta adalah suatu identifier non-standar yang nilainya telah ditetapkan dalam suatu program dan dideklarasikan pada bagian deklarasi. Bagian umum deklarasinya adalah : CONST identifier = nilai; Contoh : CONST
phi = 3.14; x= 2; y = ‘S’;
Variabel. Variabel adalah suatu identifier non-standar yang nilainya tidak tetap atau nilainya merupakan hasil dari suatu proses. (variabel yang dimaksudkan disini sama seperti halnya arti variabel pada aljabar). Halaman : 11
Pemrograman PASCAL 1
Bentuk umum deklarasinya adalah : 1. Jika hanya 1 (satu) variabel yang dideklarasikan : VAR identifier : jenis data; 2. Jika lebih dari 1 (satu) variabel dan masing-masing memiliki jenis data yang sama : VAR id-1, id-2, …., id-3 : jenis data; 3. Jika beberapa variabel yang berbeda jenis datanya : VAR
identifier-1 : jenis data; identifier-2 : jenis data; . . . identifier-n : jenis data;
4. Jika variabel yang dideklarasikan berjenis data non-standar : TYPE id = (data_item_1,data_item_2,…,data_item_n); VAR id-v : id; SUB-RANGE : TYPE id = data_item_pertama .. data_item_terakhir; VAR id-v : id; Contoh : 1. VAR x : integer; 2. VAR p,q,r : real; 3. VAR a,b : char; m,n : boolean; 4. TYPE warna = (merah,hitam,biru,putih,kuning); VAR x1,x2 : warna; 5. TYPE tahun = 1900 .. 1993; VAR thn-1,thn-2,thn-3 : tahun;
Halaman : 12
Pemrograman PASCAL 1
Ekspresi. Sebuah ekspresi merupakan kumpulan dari operand-operand (seperti : bilangan, konstanta, variabel dll) yang bersama-sama dengan operator membentuk suatu bentuk aljabar dan menyatakan suatu nilai. Ada 2 (dua) jenis ekspresi dalam bahasa Pascal, yaitu : 1. Ekspresi numerik / aritmatika, yaitu suatu ekspresi yang menghasilkan nilai numerik / aritmatika. 2. Ekspresi Boolean atau ekspresi logika, yaitu suatu ekspresi yang menghasilkan nilai boolean / logika (true/false). Contoh : 1. (b * b – 4 * a * c) / (2*a) / (2 * a) ekspresi numerik, jika a,b dan c adalah bilangan (variabel bernilai numerik). 2. Upah < 1000.0 ekspresi boolean (“upah” adalah suatu variabel bernilai real).
2.5. Input dan output (Standar I/O). Dalam bahasa Pascal untuk keperluan input (membaca input) digunakan identifier standar READ atau READLN. Identifier standar ReadLn sedikit berbeda dengan Read. ReadLn digunakan untuk memasukkan data perbaris, artinya setelah tombol Enter ditekan, maka akan ganti baris, sedangkan Read tidak ganti baris, masih dalam baris yang sama. Sedangkan untuk keperluan output (mencetak output) digunakan identifier standar WRITE atau WRITLN. Perbedaan Write dengan WriteLn adalah bahwa Write menampilkan hasil tanpa ganti baris dan tampilan berikutnya akan disambung dalam baris yang sama. Sedang WriteLn digunakan untuk menampilkan tampilan perbaris, akan ganti baris untuk tampilan berikutnya. Bentuk umum penulisannya : 1. READ (variabel input) ; Atau READLN (variabel output); 2. WRITE (variabel output); WRITELN (variabel output);
Halaman : 13
Pemrograman PASCAL 1
Contoh : Var nama : string{15}; Begin nama := ‘Dewi’; write(‘nama : ‘); write(nama); End. Hasilnya : Nama : Dewi
Contoh : Var nama : string{15}; Begin nama := ‘Dewi”; WriteLn(‘Nama : ‘); WriteLn(Nama); End. Hasilnya : Nama : Dewi
Halaman : 14
Pemrograman PASCAL 1
Halaman : 15
Pemrograman PASCAL 1
KONSEP DASAR BAHASA PASCAL Pengertian Pemrograman / programming : adalah pekerjaan penulisan instruksi bagi komputer untuk menyelesaikan suatu masalah. Program
: adalah himpunan instruksi yang diperuntukkan bagi komputer, untuk menyelesaikan masalah yang diberikan.
Interpreter : menerjemahkan perintah baris demi baris dan langsung melaksanakannya. contoh : BASIC. Compiler
: menerjemahkan dulu seluruh perintah dalam bahasa mesin. Baru kemudian terjemahan tersebut dijalankan oleh komputer. Contoh : FORTRAN, C, PASCAL.
2.1. Sejarah Singkat Bahasa PASCAL Bahasa PASCAL pertama kali dikembangkan pada awal tahun 70-an oleh NICLAUS WIRTH di Technical University, Zurich – Swiss. Nama PASCAL diambil dari nama seorang ahli matematika bangsa Perancis, yaitu BLEISE PASCAL yang telah berjasa menemukan alat hitung mekanis pertama didunia pada abad ke-17. Bahasa pemrograman ini termasuk kategori “High Level Language”. Instruksi-instruksi yang digunakan dalam bahasa pemrograman ini sangat sistematis dan terstruktur. Pada Awalnya bahasa pemrograman ini diperkenalkan dengan tujuan untuk menjelaskan masalah pemrograman komputer bagi mahasiswa yang belajar pemrograman komputer. Ternyata dalam waktu singkat, nahasa pemrograman ini menjadi salah satu bahasa yang sangat populer dikalangan universitas, sehingga menjadi julukan sebagai bahasa universitas. Mulai dari awal perkembangannya hingga saat ini banyak sekali jenis bahasa pemrograman ini, masing-masing merupakan hasil pengembangannya, antara lain : UCSD Pascal Microsoft Pascal Apple Pascal Turbo Pascal dsb Diantara versi-versi yang ada, Turbo Pascal merupakan versi yang sangat populer saat ini.
Halaman : 1
Pemrograman PASCAL 1
2.2. Struktur Dan Komponen Dasar Program Pascal. Struktur dari suatu program Pascal terdiri dari sebuah judul program dan suatu blok program atau badan program. Blok program dibagi lagi menjadi dua bagian, yaitu bagian deklarasi dan bagian pernyataan (statement). 2.2.1. Struktur program : Judul Program Blok Program Bagian deklarasi - deklarasi label - deklarasi konstanta - deklarasi tipe - deklarasi variabel - deklarasi prosedur - deklarasi fungsi
PROGRAM nama-program;
LABEL nama-label; CONST…………..; TYPE …………….; VAR ……………...; PROCEDURE nama-prosedur; ……………………………….; FUNCTION nama-fungsi; ………………………….;
Bagian Pernyataan Begin (statement) …………; …………; end.
Contoh : Menghitung luas bidang berbentuk empat persegi panjang dengan panjang P dan lebar L. PROGRAM Luas; VAR P,L,Luas : real; BEGIN Read (P,L); Luas := P*L; Write (P,L,Luas); END.
{Judul} {Deklarasi variabel} {Statemant} {Statement} {Statement}
Judul program sifatnya adalah optional, dan bila ditulis, harus terletak pada awal dari program dan diakhiri dengan titik koma. Bagian deklarasi digunakan bila di dalam program digunakan pengenal ( identifier). Identifier dapat berupa label, konstanta, tipe, variabel, prosedur dan fungsi. Kalau suatu program menggunakan identifier, Pascal menuntut supaya identifier tersebut Halaman : 2
Pemrograman PASCAL 1
diperkenalkan terlebih dahulu sebelum digunakan, yaitu dideklarasikan terlebih dahulu pada bagian ini. Beberapa aturan dalam program Pascal :
Akhir sebuah program Pascal ditandai dengan tanda baca titik (.) setelah END yang paling akhir. Tanda titik koma (;) merupakan pemisah antar instruksi satu dengan lainnya. Beberapa statement boleh ditulis menjadi satu baris dipisahkan dengan tanda baca titk koma (;) Contoh : simpan := akhir; akhir := simpan + awal; Baris komentar diletakkan diantara tanda (* dan *) atau diantara tanda { dan } Contoh : Var rerata : real; (*nilai rata-rata*) Nil1 : real; {nilai ujian}
Statement (pernyataan) Adalah instruksi atau gabungan instruksi, yang menyebabkan komputer melakukan aksi.
Type statement dalam Pascal terdiri atas : 1. Sederhana : - menandai sebuah item data ke sebuah variabel (assigment statement) contoh : X := Y * 4.135 - pemanggilan procedure dan goto statement 2. Terstruktur: - Compound Statement contoh : Begin read (x) ; y := x + 5; write (y) End. - Repetitive Statement contoh : For I := 1 to 100 do write (count); - Conditional Statement contoh : If x > 100 then write (s) else write (p) ;
2.2.2. Komponen Dasar Program Pascal Pola susun bahasa Pascal dibentuk dengan menggunakan komponen bahasa pemrograman yang umum, yaitu : 1. Simbol Dasar
Halaman : 3
Pemrograman PASCAL 1
2. Reserved Word (kata pasti) 3. Identifier (penyebut) 1. Simbol Dasar. Simbol dasar terdiri atas : 1. Simbol huruf, yaitu huruf A sampai dengan Z atau a sampai dengan z. (huruf besar dan kecil). 2. Simbol angka atau digit yaitu : 0,1,2,3,4,5,6,7,8,9. 3. Simbol khusus, yaitu + - * / ; := , ‘ = < > <= >= <> : { } ( ) [ ] 2. Reserved Word (kata pasti) Reserved Word adalah suatu kata yang secara mutlak tidak boleh diartikan lain dan harus digunakan sebagaimana yang telah didefinisikan atau ditentukan kegunaanya oleh bahasa Pascal. Reserved word ini tidak boleh didefinisikan ulang oleh pemakai, sehingga tidak dapat dipergunakan sebagai pengenal (identifier) Reserved Word ini jumlahnya berbeda untuk masing-masing bahasa Pascal.
Contoh beberapa reserved word yang telah didefinisikan oleh bahasa pascal antara lain AND ARRAY BEGIN CASE CONST DO DOWNTO
ELSE END FUNCTION FOR GOTO IF IN
LABEL OF OR PROCEDURE VAR PROGRAM RECORD REPEAT
SET TYPE UNTIL WHILE WITH dsb
3. Identifier (sebutan/pengenal) Identifier merupakan sebuah kata yang digunakan sebagai nama atau sebutan terhadap sesuatu didalam program. Pemakai dapat mendefinisikan sendiri suatu nama sebagai identifier. Identifier ini terdiri atas : 1. Identifier Standar, yaitu identifier yang telah didefinisikan oleh bahasa pascal. Contoh dari Identifier standar ini antara lain: ABS LN ARCTAN ODB BOOLEAN PRED CHAR ROUND CHR READ COS READLN EOF SQR Halaman : 4
Pemrograman PASCAL 1
EOLN EXP Dan masih banyak lagi.
SQRT SUCC
2. Identifier Non Standar; yaitu identifier yang didefinisikan oleh pemakai bahasa pascal; misalnya; 3. nama suatu program 4. nama suatu konstanta 5. nama suatu variabel 6. nama suatu procedure Identifier ini bebas, tetapi dengan ketentuan-ketentuan sebagai berikut : 7. terdiri dari gabungan huruf dan angka dengan karakter pertama harus berupa huruf. Huruf besar dan huruf kecil dianggap sama. 8. Tidak boleh mengandung blank. 9. Tidak boleh mengandung simbol-simbol khusus, kecuali garis bawah. 10. Panjangnya bebas, tetapi hanya 63 karakter pertama yang dianggap signifikan. Contoh : Identifier GajiKaryawan No_Mhs P3K 1X A&B AB
Keterangan Benar Benar Benar Salah, karakter pertama harus huruf Salah, tidak boleh mengandung simbol khusus Salah, tidak boleh mengandung blank
2.3. Jenis – jenis data Jenis – jenis data yang dikenal dalam bahasa pascal antara lain yaitu: 1. Jenis data sederhana a. Jenis data yang standar; yaitu : Integer Real Karakter Boolean b. Jenis data yang non standar (user defined), yaitu; Enumerated Sub-range 2. Jenis data berstuktur, yaitu: a. Array b. Record c. Set
Halaman : 5
Pemrograman PASCAL 1
d. File 3. Jenis Data Pointer INTEGER Jenis data ini terdiri atas integer positif, integer negatif dan nol. Merupakan nilai bilangan bulat. Pada TURBO PASCAL jenis data ini di bagi atas beberapa bagian, yaitu :
Tipe BYTE SHORTINT INTEGER WORD LONGINT
Ukuran memori (dalam byte) 1 1 2 2 4
Jangkauan nilai 0..255 -128..127 -32768..32767 0..65535 -2147483648..2147483647
Operator Integer terdiri atas : + , - , * , / , DIV dan MOD Contoh : Var Jumlah : byte; Begin Jumlah := 200; WriteLn(‘Nilai JUMLAH = ‘,Jumlah); End. Hasilnya bila dijalankan : Nilai JUMLAH = 200 REAL
Penulisan untuk jenis data ini selalu menggunakan titik desimal. Nilai konstanta numerik real berkisar dari 1E-38 sampai dengan 1E+38 dengan mantissa yang signifikan sampai dengan 11 digit. E menunjukkan nilai 10 pangkat. Nilai konstanta numerik real menempati memori sebesar 6 byte. Contoh : 123.45 12345. salah, titik desimal tidak boleh dibelakang 12E5 12E+5
Halaman : 6
Pemrograman PASCAL 1
-12.34 .1234 salah, titik desimal tidak boleh dimuka Pada TURBO PASCAL, jenis data ini dibedakan atas : Tipe SINGLE DOUBLE EXTENDED COMP
Ukuran memori (dalam byte) 4 8 10 8
Jangkauan nilai
Digit signifikan
1.5x10E-45 .. 3.4x10E38 5.0x10E-324 .. 1.7x10E308 1.9x10E-4951 .. 1.1x10E4932 -2E+63+1 .. 2E+63-1
7-8 15-16 19-20 19-20
Operator untuk jenis data ini terdiri atas : + , - , * dan /
KARAKTER Yang dimaksud dengan jenis data ini adalah karakter tunggal atau sebuah karakter yang ditulis diantara tanda petik tunggal, seperti misalnya ‘A’,’a’,’!’,’5’ dsb. Dasarnya adalah ASCII CHARACTER SET. Misalnya : 032 pada tabel ASCII CHARACTER SET menunjukkan karakter. Blank. 033 048 076
! 0 L dst STRING
Nilai data string merupakan urut-urutan dari karakter yang terletak di antara tanda petik tunggal. Nilai data string akan menenpati memori sebesar banyaknya karakter stringnya ditambah dengan 1 byte. Bila panjang dari suatu string di dalam deklarasi variabel tidak disebutkan, maka dianggap panjangnya adalah 255 karakter. Contoh : Var Kampus : string[10]; Begin Kampus := ‘Gunadarma’; Write(Kampus); End. Halaman : 7
Pemrograman PASCAL 1
BOOLEAN Jenis data ini mempunyai nilai TRUE atau FALSE. Operator untuk jenis data ini adalah : 1. Logical Operator, yaitu : NOT, AND dan OR 2. Relational Operator, yaitu : >, <, >=, <=, <> dan = \ JENIS DATA NON-STANDARD (USER DEFINED) 1. ENUMERATED. Jenis data ini terdiri atas barisan identifier yang terurut dimana setiap identifier tersebut dianggap sebagai suatu individual data item (elemen data yang berdiri sendiri). Pada saat mendeklarasikan jenis data ini kita harus menuliskan semua elemenelemennya. Bentuk umum deklarasinya adalah : TYPE nama = (data_item_1, data_item_2, ……., data_item_n); Contoh : TYPE hari = (sen,sel,rab,kam,jum,sab,ming); TYPE warna = (red,blue,green,yellow,black,white); Setelah jenis data ini dideklarasikan, maka selanjutnya kita dapat mendeklarasikan suatu variabel yang berjenis data sama dengan jenis data ini. Misalnya : TYPE nama_hari = (sen,sel,rab,kam,jum,sab,ming); VAR libur : nama_hari; Fungsi standar yang dapat digunakan pada jenis data ini adalah : PRED, SUCC dan ORD Misalnya : PRED (sel) = sen Halaman : 8
Pemrograman PASCAL 1
SUCC (sen) = sel ORD (sen) = 0 ORD (sel) = 1 2. SUB-RANGE. Jenis data ini berupa range dari suatu kumpulan data yang mempunyai urutan.. Bentuk umum deklarasinya adalah : TYPE nama = data_item_pertama .. data_item_terakhir; Contoh : 1. TYPE
jam_kuliah = 1 .. 10; tanggal = 1 .. 31; abjad = ‘A’ .. ‘Z’;
2. TYPE
bulan = (jan,feb,mar,apr,mei,jun,jul,agt,sep,okt,nov,des); hari = (sen,sel,rab,kam,jum,sab,ming); ata = agt .. jan; pta = feb .. jun; hari_kerja = sen .. jum;
TANDA OPERASI Tanda operasi (operator) di dalam bahasa Pascal dikelompokkan ke dalam 9 kategori, yaitu 1. 2. 3. 4. 5. 6. 7. 8. 9.
Assignment operator. Binary operator. Unary operator. Bitwise operator. Relational operator. Logical operator. Address operator. Set operator. String operator.
Assignment operator Assignment operator (operator pengerjaan) menggunakan simbol titik dua diikuti oleh tanda sama dengan (:=). Contoh : Halaman : 9
Pemrograman PASCAL 1
A:=B;
Binary operator Digunakan untuk mengoperasikan dua buah operand. Operand dapat berbentuk konstanta ataupun variabel. Operator ini digunakan untuk operasi aritmatika yang berhubungan dengan nilai tipe data integer dan real. Opera Operasi tor * Perkalian
DIV /
Pembagian bulat Pembagian real
MOD +
Sisa pembagian Pertambahan
-
pengurangan
Tipe operand real,real integer,integer real,integer integer,integer real,real integer,integer real,integer integer,integer real,real integer,integer real,integer real,real integer,integer real,real
Tipe hasil real integer real integer real real real integer real integer real real integer real
Contoh : 15*5 20/3 20 div 3 20 mod 3
hasilnya hasilnya hasilnya hasilnya
75 6.6666666667E+00 6 2
Unary operator Operator ini hanya menggunakan sebuah operand saja. Dapat berupa unary minus dan unary plus. Unary minus digunakan untuk menunjukkan nilai negatif, baik pada operang numerik real maupun integer. Unaru plus adalah operator untuk memberai tanda plus. Contoh : -5 -2.5
+7 +2.5
Bitwise operator Digunakan untuk operasi bit per bit pada nilai integer. Terdiri dari operator NOT, AND, OR, XOR, Shl, Shr.
Halaman : 10
Pemrograman PASCAL 1
Relational operator Relational operator digunakan untuk membandingkan hubungan antara dua buah operand dan akan didapatkan hasil tipe boolean, yaitu True atau False. Terdiri dari operator : =, <, >, <=, >=, <>
Logical operator Terdapat 4 buah logical operator yaitu : NOT, AND, OR dan XOR. Operator ini bekerja dengan nilai-nilai logika, yaitu True dan False. Set operator Digunakan untuk operasi himpunan. String operator Digunakan untuk operasi string. Hanya ada sebuah operator string saja, yaitu operator + yang digunakan untuk menggabungkan dua buah nilai string. Contoh : Nama1 := ‘Arief ‘; Nama2 := ‘Kurniawan’; Nama3 := Nama1 + Nama2;
2.4. Konstanta, Variabel dan Ekspresi. Konstanta. Konstanta adalah suatu identifier non-standar yang nilainya telah ditetapkan dalam suatu program dan dideklarasikan pada bagian deklarasi. Bagian umum deklarasinya adalah : CONST identifier = nilai; Contoh : CONST
phi = 3.14; x= 2; y = ‘S’;
Variabel. Variabel adalah suatu identifier non-standar yang nilainya tidak tetap atau nilainya merupakan hasil dari suatu proses. (variabel yang dimaksudkan disini sama seperti halnya arti variabel pada aljabar). Halaman : 11
Pemrograman PASCAL 1
Bentuk umum deklarasinya adalah : 1. Jika hanya 1 (satu) variabel yang dideklarasikan : VAR identifier : jenis data; 2. Jika lebih dari 1 (satu) variabel dan masing-masing memiliki jenis data yang sama : VAR id-1, id-2, …., id-3 : jenis data; 3. Jika beberapa variabel yang berbeda jenis datanya : VAR
identifier-1 : jenis data; identifier-2 : jenis data; . . . identifier-n : jenis data;
4. Jika variabel yang dideklarasikan berjenis data non-standar : TYPE id = (data_item_1,data_item_2,…,data_item_n); VAR id-v : id; SUB-RANGE : TYPE id = data_item_pertama .. data_item_terakhir; VAR id-v : id; Contoh : 1. VAR x : integer; 2. VAR p,q,r : real; 3. VAR a,b : char; m,n : boolean; 4. TYPE warna = (merah,hitam,biru,putih,kuning); VAR x1,x2 : warna; 5. TYPE tahun = 1900 .. 1993; VAR thn-1,thn-2,thn-3 : tahun;
Halaman : 12
Pemrograman PASCAL 1
Ekspresi. Sebuah ekspresi merupakan kumpulan dari operand-operand (seperti : bilangan, konstanta, variabel dll) yang bersama-sama dengan operator membentuk suatu bentuk aljabar dan menyatakan suatu nilai. Ada 2 (dua) jenis ekspresi dalam bahasa Pascal, yaitu : 1. Ekspresi numerik / aritmatika, yaitu suatu ekspresi yang menghasilkan nilai numerik / aritmatika. 2. Ekspresi Boolean atau ekspresi logika, yaitu suatu ekspresi yang menghasilkan nilai boolean / logika (true/false). Contoh : 1. (b * b – 4 * a * c) / (2*a) / (2 * a) ekspresi numerik, jika a,b dan c adalah bilangan (variabel bernilai numerik). 2. Upah < 1000.0 ekspresi boolean (“upah” adalah suatu variabel bernilai real).
2.5. Input dan output (Standar I/O). Dalam bahasa Pascal untuk keperluan input (membaca input) digunakan identifier standar READ atau READLN. Identifier standar ReadLn sedikit berbeda dengan Read. ReadLn digunakan untuk memasukkan data perbaris, artinya setelah tombol Enter ditekan, maka akan ganti baris, sedangkan Read tidak ganti baris, masih dalam baris yang sama. Sedangkan untuk keperluan output (mencetak output) digunakan identifier standar WRITE atau WRITLN. Perbedaan Write dengan WriteLn adalah bahwa Write menampilkan hasil tanpa ganti baris dan tampilan berikutnya akan disambung dalam baris yang sama. Sedang WriteLn digunakan untuk menampilkan tampilan perbaris, akan ganti baris untuk tampilan berikutnya. Bentuk umum penulisannya : 1. READ (variabel input) ; Atau READLN (variabel output); 2. WRITE (variabel output); WRITELN (variabel output);
Halaman : 13
Pemrograman PASCAL 1
Contoh : Var nama : string{15}; Begin nama := ‘Dewi’; write(‘nama : ‘); write(nama); End. Hasilnya : Nama : Dewi
Contoh : Var nama : string{15}; Begin nama := ‘Dewi”; WriteLn(‘Nama : ‘); WriteLn(Nama); End. Hasilnya : Nama : Dewi
Halaman : 14
Pemrograman PASCAL 1
Halaman : 15
PROGRAMMING FUNGSIONAL Bahasa pemrograman fungsional:
Disebut aplikatif karena fungsi yang di alpikasikan ke dalam argumentasi menjadi deklaratif dan non prosedural
Didasarkan pada konsep matematika dari sebuah fungsi dan bahasa pemrograman fungsional, meliputi : - suatu set fungsi primitif - suatu set format fungsional - aplikasi operasi - suatu set objek data dan fungsi asosiasi - suatu mekanisme untuk memberikan rujukan sebuah nama terhadap suatu fungsi 1
Merupakan hasil dari fungsi meringkas dan men-generalisir type data dari peta
3 komponen primer bahasa functional :
• Kumpulan objek data menggunakan mekanisme struktur data tingkat tinggi. Contoh : Array atau List
• Kumpulan fungsi built-in untuk memanipulasi objek data dasar yang menyediakan sejumlah fungsi untuk membuat dan mengakses list. 2
Contoh : LISP → - bahasa untuk komputasi simbolik, nilai direpresentasikan dengan ekspresi simbolik. - banyak digunakan di wilayah kecerdasan buatan (robotika, sistem cerdas) - biasa dieksekusi dibawah kendali interpreter Ekspresi terdiri dari atom atau list. Atom → string dan karakter (huruf, angka) Contoh : A68000 List
→ urutan dari atom atau list, dipisahkan dengan spasi, ditutp dengan tanda kurung Contoh : (PLUS A B) ((DAGING AYAM) (SAWI KANGKUNG BAYAM) AIR)) 3
ML (Meta Language) →
- merupakan bahasa aplikatif dengan program-program yang ditulis menggunakan gaya C atau PASCAL dan dengan konsep yang lebih advance tentang tipe data - mendukung polymorphisme dan abstraksi data - berjalan dengan interpreter
• Kumpulan functional forms untuk membuat fungsi baru, yang mengizinkan programmer mendefinisikan operasi baru dari kombinasi fungsi yg ada
4
LAMBDA CALCULUS
Adalah : • bahasa sederhana dengan ilmu semantik sederhana, ekspresif yang menyatakan semua fungsi dapat diperhitungkan • Merupakan suatu bentuk formal dengan fungsi sebagai aturan
Contoh : - Dengan ekspresi polynomial X²+3X-5 - Dengan fungsi lebih dari 1 variabel (+ x y) ditulis ((+ x) y) dimana fungsi (+ x) adalah fungsi yang menambahkan sesuatu ke x 5
Lambda Calculus murni mempunyai 3 buah Elemen : Lambang primitif Aplikasi fungsi Fungsi ciptaan
Lambda calculus murni tidak mempunyai fungsi tetap atau konstanta
Kalkulasi dalam lambda calculus adalah : menulis ulang (mengurangi) suatu lambda-expression menjadi suatu format formal
6
ILMU SEMANTIK OPERASIONAL
Inti denotasional Ilmu Semantik adalah : Terjemahan dari program konvensional ke dalam persamaan fungsional.
Tujuan denotasional Semantik dari suatu bahasa adalah : menugaskan suatu nilai kepada setiap ekspresi dalam bahasa
Ilmu Semantik dapat dinyatakan dalam lambda calculus sebagai fungsi matematical, Eval, dari ekspresi ke nilai Contoh : Eval[+ 3 4]=7 menggambarkan bhw nilai ekspresi (+ 3 4) untuk menjadi 7 7
FUNGSI REKURSIF
Perluasan Syntax Lambda-calculus yang mencakup ekspresi yang telah dinamai (named expressions) L ::= ...| x : L | ...
X = nama dari Ekspresi Lambda L
FAC : \n.(if (= n 0) 1 (* n (FAC (- n 1)))) dengan syntactic sugaring : FAC : \n.if (n = 0) then 1 else (n * FAC (n - 1))
FAC : (\fac.(\n.(if (= n 0) (* n (fac (- n 1))))) FAC)
H : \fac.(\n.(if (= n 0) 1 (* n (fac (- n 1))))) FAC : (H FAC)
ATURAN LINGKUP LEKSIKAL
let n : E in B adalah penyingkatan untuk (\n.B) E let x : 3 in (* x x)
\y. let x : 3 in (* y x) Ekuivalen \y. (* y 3)
= =
(\n.B) E let n : Y (\n.E) in B
letrec n : E in B adalah penyingkatan untuk let n : Y (\n.E) in B let n : E in B letrec n : E in B
SEMANTIK TRANSLASI DAN KOMBINATOR Kombinator : S = \f .( \g .( \x. f x ( g x ) ) ) K = \x .\y. x I = \x.x Y = \f. \x.( f(x x)) \x.(f (x x))
aturan reduksi untuk kalkulus SKI adalah : S f g x --> f x (g x) K c x --> c Ix --> x Ye --> e (Y e) (A B) --> A B (A B C)--> A B C
•Aturan Reduksi dijalankan dari kanan ke kiri •Jika tidak ada reduksi S,K,I,Y maka tanda kurung akan dibuang, dan proses reduksi diteruskan
Semantik Translasi untuk Lambda Calculus : Compile [ s ] --> s Compile [ (E1 E2)] --> (Compile [ E1] Compile [ E2 ]) Compile [ \x.E] --> Abstract [ (x, Compile [ E] ) ] Abstract [ (x, s) ] --> if (s=x) then I else (K s) Abstract [ (x, (E1 E2))] --> ((S Abstract [ (x, E1)] ) Abstract [ (x, E2) ] )
Dimana s adalah simbol
Scheme
•Turunan dari LISP, didasarkan pada Lambda Calculus. Dikonsentrasikan ke fitur lambda-calculus
•Scheme mempunyai dua object :
– Atoms : Untaian Karakter yang bukan blank – List : Rangkain Atom atau List dipisahkan oleh blank dan berada dalam tanda
•Sebuah fungsi dapat terbuat atas fungsi yang lain dan dapat diaplikasikan pada list atau argumen
DARI SISI SEJARAH ALTERNATIF TEORI DASAR MATEMATIKA • Alonso Church, lambda-calculus,1930an • Haskell B. Curry,logika kombinatorial
1958, LISP (LISt Processing), pemrosesan list berdasarkan fungsi rekursif. – Recursion – First class function – Garbage collection
1960an, penggunaan lambda-calculus di dalam ilmu komputer Semantik Denotasional Teori Semantik Formal untuk bahasa pemrograman (Peter Landin, Christopher Strachy, dll)
1969, Model Matematika pertama untuk lambdacalculus bertipe bebas (Dana Scott) Haskell
• bahasa modern yang dinamai sama dengan Haskell B. Curry • Didesain oleh 15 orang anggota komite internasional • Pembentukan bahasa fungsional yang memasukkan : – ide-ide baik yang sebelumnya ada dalam riset bahasa fungsional – Yang sesuai untuk pengajaran, riset dan aplikasi – Fasilitas Overloading, yang dipadukan dengan sistem bertipe polimorfis, i/o fungsional, abstraksi data dan penyembunyian informasi
Functional Programming urutan mesin virtual. – Bahasa pemrograman fungsional lambda calculus – Lambda calculus logika kombinatorial – Logika kombinatorial kode mesin reduksi graf Kesemuanya adalah mesin virtual
2.
1.
Urutan dari atom atau list, yang dipisahkan dengan spasi, dan ditutup dengan tanda kurung adalah : a. Atom b. LISP c. List * d. ML
Bahasa untuk komputasi simbolik, nilai yang direpresentasikan dengan ekspresi simbolik disebut : a. Atom b. LISP * c. List d. ML
SOAL-SOAL
3.
Yang tidak termasuk elemen lambda calculus adalah : a. lambda primitif b. fungsi ciptaan c. ilmu semantik * d. aplikasi fungsi
4. Tujuan denotasional semantik dari suatu bahasa adalah : a. menulis ulang suatu lambda-ekspression menjadi suatu format formal b. menugaskan suatu nilai kepada setiap ekspresi dalam bahasa * c. memanipulasi objek data dasar yang menyediakan sejumlah fungsi untuk membuat dan mengakses list d. membuat fungsi baru yang mengizinkan programmer mendefinisikan operasi baru dari kombinasi fungsi yang ada
5. Yang termasuk dalam kumpulan objek data adalah : a. LISP dan ML b. Array atau List * c. Atom atau List d. ML dan Array
6.Prinsip yang terdapat dalam Lambda-Calculus : a. Nilai suatu expresi tergantung hanya pada nilai dari subekspresinya * b. Kurang memadai untuk mengekspresikan fungsi komputasi c. Nilai suatu ekspresi tidak tergantung atas nilai subekspresi d. Semantik yang kompleks 7.Scheme memiliki 2 buah objek, yaitu : a. Atom dan List * b. List dan Semantic c. Atom dan Semantic d. Function dan list
8.Manakah yang bukan merupakan bahasa pemrograman fungsional modern? Haskell * LISP Scheme Tidak ada yang benar a. b. c. d.
9.Sebuah program fungsional terdiri atas a. Ekspresi E b. Algoritma c. Input d. Tidak ada yang benar
10.Ekspresi Lambda-Calculus \x.(x3 - 27) 5 akan menghasilkan : a. 68 b. 78 c. 88 d. 98
DASAR-DASAR PROLOG DAN STRUKTUR PROLOG Prolog adalah bahasa pemograman logika,di sebut juga sebagai bahasa non-procedural. Bahasa pemrograman Prolog di ambil dari bahasa prancis yaitu programmation en logiquie (pemrograman logika).bahasa ini di buat oleh Alain Colmerauer dan Robert Kowalski sekitar tahun 1972 dalam upaya untuk menciptakan suatu bahasa pemrograman yang pernyataan logika alih-alih rangkaian perintah untuk di jalankan komputer. Prolog popular di Eropa untuk aplikasi Artificial intelligence. Prolog didasarkan pada klausa-klausa Horn (Horn clauses), yang merupakan himpunan bagian dari sistem formal yang dinamakan logika predikat (predicate logic). Logika predikat menyederhanakan cara agar jelas bagaimana berpikir akan dilakukan. Prolog menggunakan variasi sintak logika predikat yang telah disederhanakan dengan demikian sintaknya mudah dimengerti dan sangat mirip dengan bahasa natural. Prolog mempunyai mesin inferensi (infrence engine) yang merupakan suatu proses berpikir logis mengenai informasi. Mesin inferensi mempunyai pencocok pola (pattern matcher) yang akan mengambil informasi yang telah disimpan (diketahui) dan kemudian mencocokkan jawaban atas pertanyaan. Satu feature penting dari Prolog adalah bahwa, sehubungan mencari jawaban logis atas pertanyaan yang diajukan, ia dapat berhubungan dengan banyak alternatif dan mencari semua kemungkinan dari pada hanya satu solusi. Logika predikat dibangun agar mudah menerjemahkan ide-ide berbasis logika menjadi bentuk tertulis. Prolog mengambil keunggulan dari sintak ini untuk membangun suatu bahasa pemrograman yang berbasis logika. Dalam logika predikat, pertama kali harus membuang semua kata-kata yang tidak dibutuhkan dari suatu kalimat. Kemudian mentransformasi kalimat tersebut dengan mencari relasi terlebih dahulu, kemudian setelah itu melakukan pengelompokkan object. Object kemudian menjadi argumen dari relasi atas object tersebut Kalimat : Fakta dan Aturan.
1. DASAR-DASAR PROLOG Fakta dan Relasi Fakta Adalah suatu unit yang selalu bernilai benar,fakta ini merupakan kumpulan data-data objek. Suatu fakta dibedakan dalam 2 jenis, yaitu fakta yang menunjukan relasi dan fakta yang menunjukan milik/sifat, penulisan suatu fakta selalu di akhir dengan (.) Contoh : Fakta
Prolog
Slamet adalah ayah Amin
ayah (slamet, amin).
Anita adalah seorang wanita
wanita (anita).
Angga suka renang dan tenis
suka(angga,renang).dan suka(angga,tenis).
Jeruk berwarna jingga
jngga(jeruk).
Aturan (“Rules”) Aturan adalah suatu pernyataan yang menunjukan bagaimana fakta-fakta berinteraksi satu dengan yang lain untuk membentuk suatu kesimpulan. Sebuah aturan dinyatakan sebagai suatu kalimat bersyarat. Kata “if” adalah kata yang dikenal Prolog untuk menyatakan kalimat bersyarat atau disimbolkan dengan “:-“. Contoh : Fakta dan Aturan F : Tino suka apel
Prolog suka(tino, apel).
A : Yuli suka sesuatu yang suka(yuli,Sesuatu) :- suka(tino,Sesuatu). disukai Tino
Setiap aturan terdiri dari kesimpulan (kepala) dan tubuh. Tubuh dapat terdiri dari 1 atau lebih pernyataan atau aturan yang lain, disebut subgoal dan dihubungkan dengan logika “and”. Aturan memiliki sifat then/if conditional “Kepala(head) benar jika tubuh (body) benar”. Contoh : Silsilah keluarga :
Fakta dan Aturan
Prolog
F : Slamet adalah ayah dari Amin
ayah(slamet,amin).
F : Amin adalah ayah dari Badu
ayah(amin,badu).
F : Slamet adalah kakek dari Badu
kakek(slamet,badu).
A: Slamet adalah benar kakek Badu jika Slamet kakek(slamet,amin) :adalah benar ayah Amin dan Amin adalah benar ayah(slamet,amin) and ayah Badu. ayah(amin,badu). F : Amin adalah saudara kandung Anang
saudara_kandung(amin,anang).
F : Amin mempunyai ayah Slamet
ayah(slamet,amin).
F: Anang mempunyai ayah Slamet.
ayah(slamet,anang).
A: Amin adalah benar saudara kandung Anang, jika Amin mempunyai ayah Slamet dan Anang juga saudara_kandung(amin,anang) :mempunyai ayah Slamet. ayah(slamet,amin) and ayah(slamet,anang). Pertanyaan (“Query”) Setelah memberikan data-data berupa fakta dan aturan, selanjutnya kita dapat mengajukan pertanyaan berdasarkan fakta dan aturan yang ada. Penulisannya diawali simbol “?-“ dan diakhiri tanda “.”. Contoh : Pertanyaan Apakah Tini suka boneka ?
Prolog dan Jawaban Program ?- suka(tini,boneka). Yes ……. (jika faktanya Tini suka boneka) No……..…(jika tidak sesuai fakta).
Apakah yang disukai Tini ?
?- suka(tini,Apa). Apa=boneka
Siapakah yang suka boneka ?
?- suka(Siapa,boneka). Siapa=tini
Dari contoh silsilah keluarga di atas : Siapakah kakek Budi ? ?- kakek(Siapa,budi). Siapa=slamet Siapakah cucu Slamet ? ?- kakek(slamet,Cucu). Cucu=budi ; Cucu=badu (jika kemungkinan ada lebih dari satu jawaban gunakan tanda “;” pada akhir setiap jawaban).
2. STRUKTUR PROGRAM PROLOG
Dalam struktur program prolog terdapat 4 macam di antara nya adalah Domain,Predicate,Variable, dan goal. Domain Domain berfungsi untuk menyatakan jenis suatu variabel seperti hal nya tipe data dalam bahasa prosedural (Pascal,C) . beberapa domain standar dalam prolog diantara nya char,integer,real,string,symbol. Contoh : namaBunga = symbol mataKuliah = string nilai = integer - Domains char dipakai pada predikat yang argumennya memiliki nilai berupa karakter tunggal, yaitu abjad, angka, pungtuasi (?.!,<,...), dan operasi (+,‐ ,...). Penulisan argumen bertipe char dalam prolog diapit tanda ’...’. contoh : nilai (dita, ’A’). - Domains string dipakai pada predikat yang argumennya memiliki nilai berupa karakter jamak yang dapat berupa kata maupun suatu tulisan (kumpulan kata‐ kata termasuk di dalamnya pungtuasi dan tanda operasi yang dapat dipisahkan spasi). Penulisan argumen bertipe string dalam prolog diapit tanda ”...”. contoh: hobi(rina,”Memasak”). -Domains integer dipakai pada predikat yang argumennya memiliki nilai berupa bilangan bulat. Contoh : nilai(tini,”Kalkulus”,75). -Domains real dipakai pada predikat yang argumennya memiliki nilai berupa bilangan pecahan. Penulisan argumen bertipe real dalam prolog untuk nilai pecahan ditulis di belakang tanda titik (.). contoh: nilai(ivan, 8.75). -Domains symbol dipakai pada predikat yang argumennya memiliki nilai berupa kumpulan karakter yang hanya terdiri dari huruf atau kata tanpa dipisahkan oleh spasi. Suatu kata dapat disambungkan dengan kata lain dengan tanda _ (underscore). contoh : lelaki(toni_setiawan). Predicate Dalam bahasa prolog kita perlu mendeklarasikan predikat yang ada pada bagian Predicates dan mendefinisikannya dalam bagian Clauses. Jika tidak, Prolog tidak akan mengenalnya. Namun untuk predikat standar seperti cursor, makewindow, readln, readchar dsb tidak perlu dideklarasikan. Misalkan untuk domains seperti di atas dapat dibuat predicates Predicates menu(integer) data(NamaOrang, Alamat, Umur)
Deklarasi predicates dalam bagian predicates, harus disertai argumen jika memang berargumen. Nama predikat harus diawali dengan huruf, boleh besar atau kecil, selebihnya bisa huruf, angka, garis bawah, namun dianjurkan untuk dimulai dengan huruf kecil. Nama predikat tidak boleh mengandung spasi, tanda minus, asteris atau garis miring. Variable Variabel merupakan sebuah interpretasi yang digunakan untuk menemukan nilai dari sebuah klausa. Variabel harus diawali dengan huruf besar. Contoh : - suka(andi,X) . X = eskrim - anakperempuan(lila, X). X = agus Variabel yang memiliki beberapa value kamu dapat memunculkan nilai lain dengan menekan tombol (;) Deskripsi Rekrusif dari Sebuah Hubungan Nah ini yang gak kalah penting, Rekursif ini digunakan untuk mencari seluruh dari child dari sebuah tree. Intinya, misalkan terdapat sebuah keluarga terdapat kakek, ayah, dan anak. Maka untuk mendapatkan seluruh keturunan dari kakek, yaitu kakek, ayah, anak, anaknya anak dan seterusnya kita membutuhkan rekursif. Representasinya seperti berkut turunan(X,Y) :- antiturunan(Y,X). turunan(X,Y) :- antiturunan(Y,Z), turunan(X,Z). Goal Goal dalam turbo Prolog ada 2 macam yakni : a. Goal eksternal b. Goal internal Goal eksternal diketikkan langsung pada bagian ‘goal’ : di jendela dialog pada kompiler terpadu Turbo Prolog. dengan cara ini kita hanya bisa menjalankan program dari lingkungan kompiler Turbo Prolog. Untuk dapat dijalankan di lingkungan DOS kita harus menggunakan goal internal yang di simpan pada bagian Goal. Sebenarnya goal inilah yang dicari dan dipanggil pada saat program dijalankan. Jika goal tercapai, program berhenti dengan berhasil, tapi jika sebaliknya, program berhenti dalam keadaan gagal. Contoh : Predicates
tulis(string) Goal tulis(X), write(X). Clauses tulis(“Bandung”). tulis(“Yogya”). tulis(“Jakarta”). Program ini pertama akan memanggil goalnya, yang terdiri dari sub goal tulis dan write. Ini artinya, goal akan memanggil klausa tulis. Di bagian clauses, terdapat tulis yang berupa fakta. Prolog akan mencarinya dari paling atas, diperoleh tulis(“Bandung”). Ini berarti sub-goal tulis(X) berhasil dengan X terikat dengan nilai “Bandung”. Selanjutnya Prolog membuktikan sub-goal kedua yakni write(X). Ini pasti berhasil dan program berhenti. Jika goal diajukan dari luar (dari jendela Goal, goal internalnya dibuang), kemudian kita tuliskan : tulis(X) [enter], akan tertulis pada layar : X = Bandung X = Yogya X = Jakarta
KECERDASAN BUATAN (ARTIFICIAL INTELLIGENCE)
PERTEMUAN 6 REPRESENTASI PENGETAHUAN -LOGIKA-
Propositional Logic
• Propositional logic merupakan salah satu bentuk (bahasa) representasi logika yang paling tua dan paling sederhana. • Dengan cara ini beberapa fakta dapat digambarkan dan dimanipulasi dengan menggunakan aturan-aturan aljabar Boolean.
• Propositional logic membentuk statement sederhana atau statement yang kompleks dengan menggunakan propositional connective, dimana mekanisme ini menentukan kebenaran dari sebuahstatement kompleks dari nilai kebenaran yang direpresentasikan oleh statement lain yang lebih sederhana.
• Beberapa operator penghubung dasar yang seringkali dipakai dalam propositional logic ditunjukkan dalam Tabel 2.1 • sedangkan tabel kebenaran untuk masing-masing operator dapat dilihat pada Tabel 2.2.
• • • • • •
Pemahaman antara operator penghubung dan tabel kebenaran dapat dijelaskan dengan menggunakan kalimat sederhana (kecuali operator implikasi material). Misalnya, seseorang sedang memegang dua buah benda, pensil dan penghapus. Lalu orang tersebut mengatakan: "saya sedang memegang pensil dan penghapus". Maka kita tahu bahwa peryataan tersebut adalah BENAR (TRUE). Jika kemudian orang tersebut mengatakan: "saya sedang memegang pensil dan tinta", maka kita tahu bahwa pernyataan tersebut SALAH (FALSE). Tetapi jika ia mengubah pernyataan menjadi: "saya sedang memegang pensil atau tinta", maka pernyataan tersebut adalah BENAR (TRUE).
• Satu-satunya kaitan antara operator dan tabel kebenaran yang tidak dapat dijelaskan dengan menggunakan kalimat sederhana adalah implikasi material. • Tetapi bukan berarti nilai dari tabel kebenaran tidak benar, karena tabel kebenaran implikasi material telah teruji benar dalam aljabar boolean. Simaklah kutipan berikut:
Simaklah kutipan berikut:
Arti Operator Penghubung • Hubungan variabel dengan operator penghubung dalam propositional logic dapat diartikan seperti dalam Tabel 2.3 di sebelah ini.
Contoh 1 Tentukan bentuk propositional logic dari kalimat ini : Jika pluto mengitari matahari, maka pluto adalah planet, jika tidak demikian maka pluto bukan planet. pm.... Pluto mengitari matahari pp…. Pluto adalah planet
• Kalimat di atas dapat ditranslasikan ke dalam bentuk yang lain: • Hanya jika Pluto mengitari matahari, maka Pluto adalah planet. • Sehingga berdasarkan Tabel 2.3, kalimat tersebut dapat diubah ke dalam bentuk propositional logic:
2. Kalkulus Predikat
• Kalkulus predikat, disebut juga logikapredikat memberi tambahan kemampuanuntuk merepresentasikan pengetahuandengan lebih cermat dan rinci. • Istilah kalkulus disini berbeda dengan istilah kalkulus dalam bidang matematika. • Suatu proposisi atau premis dibagi menjadi dua bagian, yaitu ARGUMEN (atau objek) dan PREDIKAT (keterangan).
• • • •
Argumen adalah individu atau objek yang membuat keterangan. Predikat adalah keterangan yang membuat argumen dan predikat. Dalam suatu kalimat, predikat bisa berupa kata kerja atau bagian kata kerja. Representasi pengetahuan dengan menggunakan predicate calculus merupakan dasar bagi penulisan bahasa pemrograman PROLOG.
• • • •
Variabel
Dalam predicate calculus huruf dapat digunakan untuk menggantikan argumen. Simbol-simbol juga bisa digunakan untuk merancang beberapa objek atau individu. Contoh: x = Johni, y = Rebeca, maka pernyataan Johni menyukai Rebeca dapat ditulis dalam bentuk predicate calculus: suka(x,y). Dalam beberapa hal variabel dibutuhkan agar pengetahuan dapat diekspresikan dalam kalkulus predikat sehingga nantinya dapat dimanipulasi dengan mudah dalam proses inferensi.
Fungsi
• Predicate calculus memperbolehkan penggunaan simbol untuk mewakili fungsifungsi. • Contoh:
• Fungsi juga dapat digunakan bersamaan dengan predikat. • Contoh:
Operator
• Predicate calculus menggunakan operator yang sama seperti operator operator yang berlaku pada propositional logic.
Quantifier
• Dalam bagian terdahulu, sebuah obyek atau argumen dapat diwakili oleh sebuah variabel, akan tetapi variabel yag telah dibicarakan hanya mewakili sebuah obyek atau individu atau argumen. • Bagaimana representasi dapat dilakukan apabila terdapat beberapa obyek? • Atau dengan kata lain, bagaimana kuantitas dari sebuh obyek dapat dinyatakan?
• Contoh 1: • Proposisi: Semua planet tata-surya mengelilingi matahari. • Dapat diekspresikan ke dalam bentuk:
• Ubahlah proposisi di samping ini ke dalam bentuk predicate calculus:
Latihan:
Pengenalan Bahasa Pemrograman
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.
2
Karakteristik Java
• 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.
3
Karakteristik Java
• 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
Karakteristik Java • •
•
• •
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
Karakteristik Java
• 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
Java Sun Microsystem Windows SPARC X86 Solaris Linux
• Java 2 Software Developer Kit (J2SDK)
• Versi terbaru Java SE 6
7
Bagaimana Java Bekerja ?
8
Bagaimana Java Bekerja ? ( lanjutan )
9
Java 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
10
Membuat Program Java
Download dan Instalasi J2SDK Setting jalur eksekusi
• Persiapan
Menulis program Kompilasi Eksekusi
• Penulisan program:
11
Persiapan
• Download dan Installasi J2SDK
http://java.sun.com/javase/downloads/
• Setting jalur eksekusi
Settings – Control Panel – System – Advanced – Environment Variables
12
Identifier di Java • •
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
13
Keywords di Java
• Keyword adalah identifier yang digunakan Java untuk suatu tujuan khusus. Daftar keyword Java adalah sebagai berikut: abstract do implements private this boolean double import protected throw break else instanceof public throws byte extends int return transient case false interface short true catch final long static try char finally native strictfp void class float new super volatile continue for null switch while default if package synchronized
14
@2var _status tanggal jumlahBarang nama_kecil final_test int_float
Contoh Penulisan Nama Variabel yang Diizinkan • • • • • • •
15
Tipe Data di Java
• Tipe data dalam Java dibagi dalam dua kategori: 1. Sederhana (primitif) 2. Komposit (referensi)
16
Tipe data sederhana (primitif)
• 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
17
Tipe data sederhana (primitif)
16 bit
8 bit
-215 sampai 215 - 1 (-32.768 sampai 32.767) (65.535 kemungkinan nilai)
-27 sampai 27 - 1 (-128 sampai 127 ) (256 kemungkinan nilai)
2067456397 -1456398567
9 -23659
5 -126
18
Contoh Nilai
32 bit
-231 sampai 231 - 1 ( -2.147.483.648 sampai 2.147.483.647) (4.294.967.296 kemungkinan nilai)
Rentang Nilai
64 bit
3L -2147483648L 67L
Panjang
Integer: Tipe Data byte
short
int
long
-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)
Tipe data sederhana (primitif)
64 bit
32 bit
Panjang
78F -34736.86F 6.4E4F ( sama dengan 6,4 x 104 )
Contoh Penulisan Nilai yang Diperbolehkan
Floating Point: Tipe data floating point merupakan tipe data untuk untuk variabel yang nilai-nilainya adalah bilangan real (dapat mempunyai pecahan desimal). Tipe Data float
double
-2356 3.5E7 67564788965.567
19
Tipe data sederhana (primitif)
public char alphabet = ‘A’; public char ascii = ‘\111’; // jika dicetak, akan menghasilkan // huruf ‘I’;
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 :
•
20
Tipe data sederhana (primitif)
public boolean status = true; public boolean check = 10 < 5 ; // nilai check menjadi // false
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 :
•
21
Tipe Data Komposit
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”;
22
Promosi dan Casting
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 ;
23
Promosi dan Casting
int a = 30; float b = a ;
b. Jika terjadi assigning nilai dari tipe data integral ke tipe data floating-point, seperti yang diperlihatkan pada contoh
•
24
Promosi dan Casting
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.
25
Promosi dan Casting Berikut contoh casting tipe
int num1 = 34; int num2 = 45; short num3 = (short)(num1 + num2 ); System.out.println(num3);
26
Operator di Java Operator
• Operator Unary Arti Operator
Contoh Pemakaian
Pre-Increment
++operand int i = 8 ; int j = ++i; i bernilai 9, j bernilai 9
--operand
operand--
int i=8;
int i = 8 ; int j = --i; i bernilai 7 , j bernilai 7
Post-Increment operand++ int i = 8; int j = i++; i bernilai 9, j bernilai 8 Pre-Decrement
Post-Increment
27
Penjumlahan -
+
Operator
prod=num1 * num2
diff=num1 - num2
sum=num1 + num2
Contoh Pemakaian
• Operator Binary Pengurangan *
Arti Operator
Perkalian
Keterangan
jika num1 dan num2 adalah integer, pembagian akan menghasilkan nilai integer tanpa mengikutsertakan sisa, jika terdapat sisa. quot=num1 / num2
mod=num1 % num2
/
%
Pembagian
Sisa (modulus)
Hasil operasi modulus adalah sisa dari operasi num1 / num2. Hasil operasi modulus memiliki tanda ( +/- ) yang sama dengan operand pertama
28
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;
Prioritas Operator • • • • •
29
c c c c
= = = =
12 * 3 + 5 / 5 ; 36 + 5 / 5; 36 + 1 ; 37;
• Contoh • int c = 12 * 3 +5 / (8 - 3) ; Maka urutan operasinya adalah sebagai berikut : int int int int
30
<
!=
==
Operator
int i = 1; System.out.println(i<1); : false)
int i = 1; System.out.println(i!=1); : false)
int i = 1; System.out.println(i==1); : true)
//(output
// (output
// (output
// (output
• Operator Relasi Condition
<=
int i = 1; System.out.println(i<=1); : true)
//(output :
Is less than
Is less than or equal to
Is greater than
Example
Is equal to (atau “is the same as”)
>
int i = 1; System.out.println(i>1); false)
Is not equal to (atau “is not the same as”)
>=
Is greater than or equal to
31 // (output
int i = 1; System.out.println(i>=1); : true)
Condition
&&
Operator
int i = 1; int j = 2; System.out.println((i<1)&&(j>0)); // (output : false)
Example
Operator kondisional If one condition AND another condition
||
int i = 1; int j = 2; System.out.println((i<1)||(j>0)); // (output : true)
NOT
If either condition OR another condition
!
int i = 1; System.out.println(!(i<3)); // (output : false)
32
Kata Kunci Final
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.
33
Kata Kunci Final
}
//diubah lagi oleh program lain
public double hitungLuas(){ luas = pi*jari2*jari2; return luas; } public double hitungKeliling(){ return 2*pi*jari2;
double jari2; double luas;
• Contoh class Lingkaran{ final double pi = 3.14; //konstanta yg nilainya tidak dapat
}
34
Konstruksi Pengambilan Keputusan
Konstruksi if Konstruksi if merupakan bentuk konstruksi pengambilan keputusan dengan 2 kemungkinan keputusan. Kemungkinankemungkinan keputusan itu akan dipilih berdasarkan suatu kondisi yang diperiksa. Kondisi tersebut merupakan suatu ekspresi boolean / boolean expression. Sintaks dasarnya: if ( boolean_expression ){ code block; }
35
36
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); }
37
Konstruksi if..else..
Konstruksi if / else digunakan sebagai konstruksi pengambilan keputusan yang memiliki beberapa kemungkinan keputusan. Sintak dasarnya adalah seperti berikut :
code block n;
if ( boolean_expression_1 ){ code block 1; } else if ( boolean_expression_2 ){ code block 2; } . . . else{ }
38
39
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);
}
40
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; }
41
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 .
42
Contoh:
}
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);
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;
}
43
Konstruksi Pengulangan (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
44
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.
45
}
}
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);
}
46
}
}
}
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;
}
47
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.
48
• 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.
49
Contoh
}
}
public class Contoh3{ public static void main(String[] args){ for(int variable=20; variable>=10;variable--){ System.out.println(“Nilai variable =”+ variable);
}
50
}
}
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); }
51
}
}
public class Contoh5{ public static void main(String[] args){ int variable = 20; for( ; ; ){ System.out.println(“Nilai variable1= ”+variable); variable--; if(variable<10)break;
}
52
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); }
53