Konsep Bahasa Pemrograman Logic

  • View
    452

  • Download
    0

Embed Size (px)

Text of Konsep Bahasa Pemrograman Logic

Konsep Bahasa Pemrograman Logic (Pendekatan dengan Bahasa Pemrograman Prolog)y Pengertian Adalah pemrograman yang berdasarkan kepada deklarasi fakta dan aturan. Berdasarkan fakta dan aturan yang disimpan dalam program, pemakai dapat melakukan query untuk mendapatkan jawaban yang merupakan komputasi dari program logik tersebut.

I. STRUKTUR PROGRAM PROLOG (Programming Logic).

Jenis bahasa pemrograman yang dikenal 1. Bahasa pemrograman prosedural, seperti misalnya BASIC, PASCAL, C++, JAVA . Pada bahasa pemrograman prosedural, kita memberitahu kepada komputer How to solve a problem. 2. Bahasa pemrograman deklarative seperti PROLOG, LISP. Pada bahasa pemrograman deklarative kita memberitahu kepada komputer What problem we want to solve

Struktur program prolog secara lengkap terdiri atas :

COMPILER DIRECTIVES

CONSTANTS

DOMAINS

DATA BASE

PREDICATES

GOAL

CLAUSES

I.1. COMPILER DIRECTIVES Compiler directives digunakan untuk memberi perintah kepada Turbo Prolog 2.0 tentang hal-hal tambahan yang harus dilakukan pada saat kompilasi. Perintah ini dituliskan dibagian awal program, atau dapat melalui menu Option/Compiler Directives akan tetapi hal yang sudah ditentukan dalam menu akan ditimpa oleh yang ditulis dalam program. Misalkan jika anda akan membuat program grafik menjadi file.EXE (Executable file), maka harus memberi tahu compiler tentang driver yang digunakan (misal CGA, EGA, VGA). Contoh : bgidriver _VGA_driver_far

I.2. CONSTANTS Untuk menyatakan konstanta yang ada (digunakan) dalam program.

I.3. DOMAINS Domains berisi deklarasi (pernyataan) tentang jenis data yang digunakan dalam fakta dan aturan. Mirip dengan bahasa Pascal atau C. Ada 6 buah DOMAINS standar yang dikenal dalam Turbo Prolog, yaitu : Integer : Bilangan bulat dengan range -32.768 sampai dengan 32.767 Real Char : Bilangan riil dari 1*e-307 sampai dengan 1*e+308 : Karakter tunggal yang berada diantara tanda yang terdiri atas angka,

huruf atau atau simbol khusus. Contoh : a, 4, K, %. String : Kumpulan karakter yang berada diantara tanda . Contoh : Anda, Aku, Pergi belanja. Symbol : Kumpulan karakter dan harus diawali dengan huruf kecil. Contoh : mari, abu, amin File : Digunakan untuk operasi file.

Selain domains standard, pemrogram dapat mendefinisikan domains lain yang terdiri dari domains standard.

I.4. DATA BASE Untuk menyimpan informasi dalam basis data internal. Bagian DATABASE boleh lebih dari satu. Program dalam prolog is a database of facts and rules Contoh : DATABASE Data_pribadi(nama,alamat,jabatan)

Perlu diingat bahwa predikat basis data boleh lebih dari satu, tetapi predikat yang sudah dinyatakan sebagai basis data tidak dapat digunakan lagi sebagai predikat biasa. Syarat predikat yang dinyatakan dalam basis data : 1. Hanya fakta yang boleh disimpan dalam basis data, aturan tidak diperbolehkan. 2. Fakta tersebut tidak boleh mengandung variabel bebas. Dalam Turbo Prolog 2.0 ada dua basis data, yaitu Basis Data Internal dan Basis Data Eksternal. Dalam basis data internal semua data baik yang bersifat statis (dalam program) maupun yang bersifat dinamis disimpan dalam memori. Bagian DATABASE boleh lebih dari satu, jika demikian, maka masing-masing harus diberi nama. Contoh : DATABASE_DaftarMahasiswa mahasiswa(nama,nim,alamat) DATABASE_DaftarNilaiAI nilai(nim,nilai) Jika database tidak diberi nama (hanya satu bagian), maka secara otomatis Turbo Prolog 2.0 akan memberi nama dbasedom

I.5. PREDICATES PREDICATES adalah nama simbolik untuk relasi. Contoh : Terdapat fakta bahwa slamet ayah dari amin. Dapat disajikan sebagai : ayah(slamet,amin). adik_kandung(marini,mario) ayah merupakan nama predicates sedangkan slamet dan amin adalah obyek yang berjenis symbol

Dalam predicates di atas, slamet dan amin disebut sebagai argumen. Predicates tersebut menyatakan relasi antara slamet dan amin, yaitu slamet adalah ayah dari amin, marini adik_kandung mario. Sebuah predicates dapat tidak memiliki argumen atau memiliki argumen dengan jumlah bebas. Jumlah argumen suatu predicates disebut arity (aritas). Syarat penulisan nama predicates : y y y Diawali dengan huruf kecil dan dapat diikuti oleh huruf, bilangan atau garis bawah. Panjang maksimum nama predicates 250 karakter. Tidak boleh menggunakan spasi, tanda bintang (*), tanda minus (-), dan garis miring (/).

Argumen dalam predicates tidak harus dituliskan dengan domains standard, tetapi dapat dinyatakan dengan argumen lain. Contoh : alamat(jalan,kota,kode_pos) kelahiran(tanggal,bulan,tahun) Seperti dalam bahasa Pascal atau C, apabila argumen status predicates tidak dituliskan dalam domains Standard, maka argumen tersebut harus dinyatakan dalam bagian DOMAINS, demikian sebaliknya. Contoh : DOMAINS jalan,kota,kode_pos = string tanggal,bulan,tahun = integer PREDICATES alamat(jalan,kota,kode_pos) kelahiran(tanggal,bulan,tahun) Contoh di atas lebih baik dibandingkan apabila argumen suatu predicates langsung dituliskan dalam domains standard, seperti :

PREDICATES alamat(string,string,string) kelahiran(integer,integer,integer) Predicates dengan nama yang sama dapat mempunyai aritas yang berbeda. Kedua predicates ini merupakan predicates yang berbeda tetapi keduanya harus dituliskan dalam satu kumpulan nama yang sama. Misalnya : ayah(nama); ayah(parto) ayah(nama,nama); ayah(parto,paijo) Pada contoh pertama, predicates menyatakan bahwa nama tersebut adalah seorang ayah, sedangkan predicates kedua menyatakan nama tersebut adalah seorang ayah dari nama yang lain.

I.6. GOAL GOAL berisi pertanyaan yang anda ajukan kepada turbo prolog.Bagian GOAL ini hanya dituliskan menggunakan kata tunggal, karena hanya boleh ada sebuah GOAL. GOAL dapat terdiri dari beberapa SUBGOAL. Perlu diingat suatu pernyataan baik fakta, relasi atau GOAL dikatakan satu apabila diakhiri dengan tanda titik. Ada 2 (dua) jenis GOAL : y GOAL eksternal : goal yang diberikan melalui compiler terpadu turbo prolog (di luar program) dan dalam jendela dialog. y GOAL internal : goal yang sekaligus dituliskan dalam program sehingga setiap kali dieksekusi tidak perlu lagi menuliskan goal yang diinginkan. Catatan : y Kalimat yang diapit dengan tanda /* .... */ menyatakan keterangan dan tidak dibaca oleh compiler Turbo Prolog 2.0.

Turbo Prolog 2.0, logika and dituliskan dengan tanda koma ,, kondisi if dituliskan dengan tanda :-.

I.7. CLAUSES (KLAUSA) CLAUSES (KLAUSA) berisi fakta dan aturan yang membentuk keseluruhan program. Bagian klausa ini mirip dengan procedure pada bahasa Pascal. Bagian fakta umumnya dituliskan sebelum bagian aturan. Fakta atau aturan yang mempunyai relasi yang sama harus dituliskan berkelompok. CLAUSES suka(siti,anto)

ayah(hendra,pranoto). ayah(hendra,kristanto). ayah(pranoto,bardan ). kakek(hendra,bardan). Dalam turbo prolog dapat juga digunakan pernyataan if dan dituliskan dengan simbol :-. Misalkan suatu pernyataan aturan Dewi suka sesuatu yang disukai oleh Panji : suka(dewi,sesuatu):suka(panji,sesuatu).

Turbo Prolog 2.0

Copyright (c) 1986,88 by

Catatan : Untuk contoh-contoh program digunakan struktur utama dari Turbo Prolog 2.0 yang terdiri atas : y DOMAINS y PREDICATES y GOAL

y CLAUSES Berikut ini sekedar contoh dan ikuti petunjukknya. Masuk ke editor dengan cara 1. Masuk ke direktori Turbo Prolog 2.0 berada, ketik Prolog lalu tekan enter. 2. Tekan huruf F (file) dan N (new) untuk masuk ke editor Turbo Prolog 2.0 3. Ketikkan program berikut ini :

/* Contoh program silsilah keluarga */ DOMAINS nama PREDICATES ayah(nama,nama) kakek(nama,nama) CLAUSES /* Fakta */ ayah(hendra,pranoto). ayah(hendra,kristianto). ayah(pranoto,bardan). ayah(pranoto,deni). ayah(kristianto,harahap). ayah(kristianto,sutarno). = symbol

/* Aturan */ Kakek(Kakek,Cucu) :ayah(Ayah,Cucu),

ayah(Kakek,Ayah).

4. Setelah selesai tekan F10 untuk kembali ke menu utama. 5. Tekan C lalu M (atau hot key F9), untuk mengkompilasi program kedalam memory. 6. Apabila kesalahan, Turbo Prolog 2.0 akan memberitahu jenis kesalahan dan nomor serta lokasi kesalahan, sehingga anda dapat langsung memperbaikinya. Setelah selesai lakukan kompilasi ulang dengan menekan F9. 7. Jika sudah tidak ada kesalahan maka di jendela Message, akan tampil pesan Compile succesfull. Simpan program dalam hard disk atau media lain dengan menekan F (File) lalu W (Write to) dan berilah nama misal program1 , Turbo Prolog akan langsung menambahkan ekstensi .PRO dibelakang nama program1. 8. Tekan R (run) untuk menjalankan program tsb dan dijendela dialog akan muncul pertanyaan Goal: Cobalah beberapa Goal berikut ini : Goal: ayah(hendra,pranoto) Yes Goal: ayah(pranoto,deni) Yes Goal: ayah(hendra,deni) No Goal: ayah(Ayah,X) Ayah=hendra, X=pranoto Ayah=hendra, X=kristanto Ayah=pranoto, X=bardan Ayah=pranoto, X=deni Ayah=kristanto, X=harahap Ayah=kristanto, X=sutarno

6 Solutions Goal: kakek(Kakek,X) Kakek=hendra, X=bardan Kakek=hendra, X=deni Kakek=hendra, X=harahap Kakek=hendra, X=sutarno 4 Solutions Goal: kakek(Z,sutarno) Z=hendra 1 Solution Goal: ayah(hendra,X) X=pranoto X=kristanto 2 Solutions

Contoh : program di atas misal suatu silsilah sebagai berikut :

hendra

pranoto

kristianto

bardan

deni

harahap

sutarno

Silsilah dapat dijelaskan sbb: hendra ayah pranoto, sedangkan pranoto adalah ayah bardan dan ayah deni. Dapat disimpulkan bahwa hendra kakek dari bardan dan deni. Sehingga dalam Prolog dapat dituliskan : ayah(hendra,pranoto). ayah(pranoto,bardan). Kakek(hendra,bardan). Bagaimana hubungan antara kakek dengan ayah, dari pernyataan di atas ?. kakek(hendra,bardan) if ayah(hendra, pranoto) and ayah(pranoto,bardan). Secara kalimat : Hendra adalah benar kakek Bardan jika Hendra adalah benar ayah Pranoto dan Pranoto adalah benar ayah Bardan. Secara umum, relasi kakek ter