Iklan

Kamis, 24 Mei 2012

Perbedaan Open system dan close system


1.      OPEN SYSTEM (Sistem Terbuka)
·         Sistem terbuka adalah "sistem yang berhubungan dan terpengaruh dengan lingkungan luarnya". Sistem yang berinteraksi dengan lingkungannya dimana sistem ini menerima masukan dari lingkungannya dan menghasilkan keluaran untuk lingkungan luar atau sistem lainnya., Karena system sifatnya terbuka dan terpengaruh oleh lingkungan luanya, maka suatu system harus mempunyai suatu system pengendalian yang baik. Sistem yang baik harus dirancang sedemikian rupa, sehingga secara relative tertutup karena system tertutup akan bekerja secara otomatis dna terbuka hanya untuk pengaruh yang baik saja. Sistem ini cenderung memiliki sifat adaptasi, dapat menyesuaikan diri dengan lingkungannya sehingga dapat meneruskan eksistensinya.
Contoh :
Sistem keorganisasian memiliki kemampuan adaptasi.(Bisnis dalam menghadapi persaingan dari pasar yang berubah. Perusahaan yang tidak dapat menyesuaikan diri akan tersingkir).

2.      CLOSE SYSTEM (Sistem Tertutup)
·         Sistem tertutup adalah "sistem yang tidak berhubungan dan tidak terpengaruh dengan lingkungan luarnya". Sistem yang tidak bertukar materi, informasi, atau energi dengan lingkungan, dengan kata lain sistem ini tidak berinteraksi dan tidak dipengaruhi oleh lingkungan. Sistem ini bekerja secara otomatis tanpa adanya turut campur tangan dari pihak diluarnya. Secara teoritis system tertutup ini ada, tetapi kenyataanya tidak ada system yang benar-benar tertutup, yang ada hanyalah relatively closed (secara relative tertutup, tidak benar-benar tertutup).
Contoh :
Reaksi kimia dalam tabung berisolasi dan tertutup.

Metode Simplex

Ini merupakan materi mengenai Metode Simplex.
Metode Simplex memiliki banyak ciri tersendiri dalam menyelesaikan pemevahan soal.
Untuk lebih jelasnya silahkan download filenya melalui link beriku :
Metose Simplex

RISET OPERASIONAL


A.    Definisi Riset Operasional
Riset Operasi, atau disebut juga Riset Operasional di Eropa, adalah cabang interdisiplin dari matematika terapan dan sains formal yang menggunakan model-model seperti model matematika, statistika, dan algoritma untuk mendapatkan nilai optimal atau nyaris optimal pada sebuah masalah yang kompleks. Riset operasi biasanya digunakan untuk mencari nilai maksimal (profit, performa lini perakitan, hasil panen, bandwith dll) atau nilai minimal (kerugian, risiko, biaya, dll) dari sebuah fungsi objektif. Riset operasi bertujuan membantu manajemen mendapatkan tujuannya melalui proses ilmiah.
Selain itu ada beberapa definisi mengenai Riset Operasi (RO). Dasar pertimbangan dari berbagai macam definisi dilatarbelakangi bahwa ahli RO dari berbagai disiplin ilmu seperti teknik, bisnis, matematik, dll.
è Menurut Operational Research Society of Great Britain, riset operasi adalah aplikasi metode ilmiah dalam masalah yang kompleks dan system manajemen yang besar atas manusia, mesin, material dan dana dalam industry, bisnis, pemerintahan, dan militer.
è Menurut Operational Research Society of America, riset operasi merupakan hal yang berkaitan dengan pengambilan keputusan secara ilmiah, bagaimana membuat model terbaik dan membutuhkan alokasi sumber daya yang terbatas.
è Morse dan Kimball mendefinisikan riset operasi sebagai metode ilmiah (scientific method) yang memungkinkan para manajer mengambil keputusan mengenai kegiatan yang mereka tangani dengan dasar kuantitatif. Definisi ini kurang tegas karena tidak tercermin perbedaan antara riset operasi dengan disiplin ilmu yang lain.
è Churchman, Arkoff dan Arnoff pada tahun 1950-an mengemukakan pengertian riset operasi sebagai aplikasi metode-metode, teknik-teknik dan peralatan-peralatan ilmiah dalam menghadapi masalah-masalah yang timbul di dalam operasi perusahaan dengan tujuan ditemukannya pemecahan yang optimum masalah-masalah tersebut.
è Miller dan M.K. Starr mengartikan riset operasi sebagai peralatan manajemen yang menyatukan ilmu pengetahuan, matematika, dan logika dalam kerangka pemecahan masalah-masalah yang dihadapi sehari-hari, sehingga akhirnya permasalahan tersebut dapat dipecahkan secara optimal.

Sehingga dapat disimpulkan bahwa riset operasi berkenaan dengan pengambilan keputusan yang optimal dan penyusunan model dari sistem-sistem, baik yang diterministik maupun probabilistik yang berasal dari kehidupan nyata. Atau dunia pengelolaan atau dunia usaha yang memakai pendekatan ilmiah atau pendekatan sistematis yang disebut riset operasi (Operations Resech).

Untuk Yang lebih lengkap silahkan download lewat link BERIKUT.. 

Pengendalian Pencarian Jawaban di Turbo Prolog


Turbo Prolog menyediakan dua predikat penting, yakni predikat fail yang selalu mengakibatkan kegagalan untuk memaksa lacak balik dan predicat cut (!) yang selalu berhasil untuk mencegah lacak balik.

Predikat Fail
            Lacak balik akan terjadi bila menemui kegagalan. Dalam keadaan tertentu kita perlu memaksa lacak balik untuk memperoleh jawaban yang lain. Untuk itu disediakan predikat fail yang selalu gagal dan memaksa lacak balik.
contoh :

domains
   name = symbol
   gpa  = real

predicates
   honor_student(name)
   student(name, gpa)
   probation(name)

clauses
   honor_student(Name):-
      student(Name, GPA),
      GPA>=3.5,
      not(probation(Name)).

   student("Betty Blue", 3.5).
   student("David Smith", 2.0).
   student("John Johnson", 3.7).
   student("Don Johnson",3.5).
   student("Ana",3.55).
   probation("Betty Blue").
   probation("David Smith").
goal
 
  write("Yang mendapat  penghargaan adalah : "),nl,
  honor_student(Name), write(Name),nl,fail.

Predikat Cut
            Dalam Turbo Prolog, predikat cut digunakan untuk memotong jejak lacak balik. Predikat cut dilambangkan dengan (!).
Perhatikan contoh berikut :

predicates
      minuman(symbol,symbol)
      tes_baik(symbol)
      minuman_baik
     
clauses
      minuman(susu,sehat).
      minuman(kopi,menyegarkan).
      minuman(arak,berbahaya).
      minuman(sirup,enak).
      minuman_baik:-
            minuman(Jenis,Sifat),
            tes_baik(Sifat),
            write(Jenis," minuman ",Sifat),nl,fail.
     
      tes_baik(berbahaya):-!,fail.
      tes_baik(_).
     
goal
      minuman_baik.    

Program ini akan meyebutkan beberapa jenis minuman, kecuali yang berbahaya. Tugas untuk menyaring dilakukan pada klusa tes_baik. Jika berbahaya maka akan berpadanan dengan tes_baik(berbahaya), yang memberi status gagal. Jika tanpa cut, akan terjadi lacak balik ke tes_baik yang selalu match dengan semua clauses tes_baik, sehingga program akan menyebutkan semua jenis minuman meskipun berbahaya.

Perulangan dan Rekursi

            Dalam Prolog tidak ada pernyataan standar untuk perulangan seperti pada bahasa pemrograman lain. Prolog hanya mengenal lacak balik dan rekursi, yakni prosedur yang memanggil dirinya, untuk proses berulang.

Predikat repeat untuk perulangan
            Lacak balik terjadi apabila ada jawaban lain, dan ini dapat dimanfaatkan untuk pengerjaan berulang terhadap sekelompok fakta.Tetapi kalau faktanya deterministik maka kita harus menggunakan predikat repeat. Predikat ini bukan predikat standar sehingga harus kita buat sendiri.
Bentuk predikat ini adalah :
            klausa_utama :-
                                repeat,
                                …
                                …
                                repeat.
                                repeat :-repeat


Sebagai contoh :
predicates
  mulai
  repeat
 
clauses
  mulai:-
  repeat,
  write("Ketikkan password !"),nl,
  readln(X),
  X="2020".
  repeat.
  repeat:-repeat.
goal
 mulai.



Struktur Data

1. Objek data sederhana
            Objek data sederhana (tidak terdiri dari beberapa unsur) bisa berupa konstanta, karakter, bilangan (integer atau real), atau atom (simbol atau string).
2. Objek data majemuk
            Dengan objek majemuk kita dapat memperlakukan beberapa data seperti objek tunggal. Misalnya data alamat Jalan Kenanga 12 Yogya 55281 yang terdiri dari tiga buah data jalan, kota, kode pos akan lebih mudah disusun sebagai :
            alamat(“Jalan kenanga 12”, “Yogya”,55281).
Data ini diawali dengan nama yang disebut fungtor (di sini alamat) dan diikuti argumen.
            Argumen objek majemuk dapat berupa objek majemuk juga. Misalnya kita dapat menuliskan data mahasiswa yang mencakup nama dan alamat :
            data_mahasiswa(nama(awal,akhir),alamat(jalan,kota,kodepos))

Deklarasi Domain Objek Majemuk
            Bentuk umum deklarasi domain majemuk adalah :
            domains = fungtor1(a11,a12,…);
                                      fungtor2(a21,a22,…);
                                      …
                                      fungtorn(an1,an2,…)

Perhatikan contoh berikut :

domains
   articles            = book(title, author) ;
                         horse(name) ; boat ;
                         bankbook(balance)
   title, author, name = symbol
   balance             = real

predicates
   owns(name,articles)

clauses
   owns(john, book("A friend of the family", "Irwin Shaw")).
   owns(john, horse(blacky)).
   owns(john, boat).
   owns(john, bankbook(1000)).

Jalankan program di atas dan berilah goal
  • owns(john,book(_,X))
  • owns(john,X)
  • owns(john,book(X,Y)
  • owns(john, horse(X)

Menggunakan goal internal :
domains
   articles            = book(title, author) ;
                         horse(name) ; boat ;
                         bankbook(balance)
   title, author, name = symbol
   balance             = real

predicates
   owns(name,articles)

clauses
   owns(john, book("A friend of the family", "Irwin Shaw")).
   owns(john, horse(blacky)).
   owns(john, boat).
   owns(john, bankbook(1000)).
goal
write("Yang dimiliki oleh John adalah "),
owns(john,book(X,Y)),nl,
write(" Buku dengan judul ",X),nl,
write(" Pengarangnya ",Y).

 atau
domains
   articles            = book(title, author) ;
                         horse(name) ; boat ;
                         bankbook(balance)
   title, author, name = symbol
   balance             = real

predicates
   owns(name,articles)

clauses
   owns(john, book("A friend of the family", "Irwin Shaw")).
   owns(john, horse(blacky)).
   owns(john, boat).
   owns(john, bankbook(1000)).
goal
write("Yang dimiliki oleh John adalah "),
owns(john,X),nl,
write(X),fail.

JENDELA TURBO PROLOG


Jendela adalah daerah yang aktif sebagai output pada layar yang dapat dibatasi dengan bingkai (frame). Jika kita membuat jendela lain maka jendela terakhirlah yang aktif, namun jika menghendaki maka pengaktifan jendela lain dapat kita pilih. Apabila ada jendela, predikat yang berkaitan dengan keluaran pada layar, mengacu pada koordinat jendela. Misalnya kita menempatkan kursor pada koordinat (5,6) maka berarti 5 baris ke bawah dan 6 kolom ke kanan dari titik kiri atas jendela.

Predikat Jendela
            Untuk dapat menangani jendela, kita perlu predikat jadi sebagai berikut :
a.       Makewindow
Makewindow untuk membuat jendela pada layar dengan format :
            makewindow(No,AtrL,AtrF,Judul,Baris,Kolom,Tinggi,Lebar)

- No                             : untuk nomor dari jendela
- AtrL                          : mengambil nilai atribut di dalam jendela
- AtrF                          : membaca nilai atribut bingkai
- Judul                         : menuliskan judul pada bingkai jendela
- Baris, Kolom             : menentukan koordinat pada bingkai jendela
- Tinggi, Lebar            : menentukan ukuran jendela

b.      Shiftwindow
Untuk berpindah jendela, karena hanya 1 jendela yang aktif. Formatnya :
            shifwindow(NoJendela)
c.       Clearwindow
Untuk membersihkan jendela
d.      Removewindow
Untuk menghapus jendela yang aktif tanpa meninggalkan bekas.
e.       Cursor
Untuk menempatkan kursor.
            cursor(Baris,Kolom)


Contoh program :

predicates
   parent(symbol,symbol)
   female(symbol)
   male(symbol)
   offspring(symbol,symbol)
   mother(symbol,symbol)
   grandfather(symbol,symbol)
   sister(symbol,symbol)
   different(symbol,symbol)
   grandchild(symbol,symbol)
   aunt(symbol,symbol)
   predecessor(symbol,symbol)
   pilihan(integer)
   menu
   start
clauses
   parent(pam,bob).
   parent(tom,bob).
   parent(tom,liz).
   parent(bob,ann).
   parent(bob,pat).
   parent(pat,jim).
   female(pam).
   female(liz).
   female(pat).
   female(ann).
   male(tom).
   male(bob).
   male(jim).
   offspring(Y,X) :-
      parent(X,Y).
   mother(X,Y) :-
      female(X),
      parent(X,Y).
   grandfather(X,Z) :-
      parent(X,Y),
      parent(Y,Z).  
   different(X,Y) :- X<>Y.
   sister(X,Y) :-
      parent(Z,X),
      parent(Z,Y),
      female(X),
      different(X,Y).  
   grandchild(X,Z) :-
      parent(Y,X),
      parent(Z,Y).
   aunt(X,Y) :-
      parent(Z,Y),
      sister(X,Z).
   predecessor(X,Z) :-
      parent(X,Z).
   predecessor(X,Z) :-
      parent(X,Y),
      predecessor(Y,Z).
   start:-
      clearwindow,
      makewindow(1,40,10,"",0,0,25,80),
      field_attr(22,61,14,29),
      field_str(22,61,14," (TEKAN TOMBOL) "),
      makewindow(2,32,150,"",6,20,15,40),nl,nl,
      write("     PROGRAM SISILAH KELUARGA  \n"),
      nl,nl,
      write("              2009  \n"),readchar(_),clearwindow.
   menu :-
      shiftwindow(3),
      makewindow(2,27,110,"",5,10,15,60),
      write("     Apa yang ingin anda ketahui ? "),nl,nl,nl,
      write("1. Orang tua "),nl,
      write("2. Anak "),nl,
      write("3. Cucu "),nl,
      write("4. Bibi "),nl,nl,
     
      write(" Masukkan pilihan anda : "),
      readint(Pilihan),
      pilihan(Pilihan),menu.
     
  
  
   pilihan(1):-
      clearwindow,
      makewindow(4,30,150," ORANG TUA ",0,0,25,80),
      write("Orang tua dari siapa ? "),readln(X),
      parent(Y,X),write (" Orang tua dari ",X, " adalah ",Y),nl,fail.
     
  
   pilihan(2):-
      clearwindow,
      makewindow(4,38,180," ANAK ",0,0,25,80),
      write("Anak dari siapa ? "),readln(X),
      parent(X,Y),write (" Anak  dari ",X, " adalah ",Y),nl,fail.

  
   pilihan(3):-
      clearwindow,
      makewindow(4,20,130," CUCU ",0,0,25,80),
      write("Cucu dari siapa ? "),readln(X),
      grandfather(X,Y),write (" Cucu  dari ",X, " adalah ",Y),nl,fail.
         
   pilihan(4):-
      clearwindow,
      makewindow(4,25,60," BIBI ",0,0,25,80),
      write("Bibi dari siapa ? "),readln(X),
      aunt(Y,X),write (" Bibi  dari ",X, " adalah ",Y),nl,fail.
 
        
  
Goal
   start,makewindow(3,24,67,"",0,0,25,80),menu.

UNIFIKASI DAN PENGENDALIAN PROGRAM TURBO PROLOG


I. Unifikasi
            Unifikasi adalah suatu proses pemadanan atau pembandingan untuk mencari jawaban seperti nilai suatu variabel. Melalui unifikasi suatu variabel diberi nilai.
            Beberapa hal tentang unifikasi :
a. Unifikasi terjadi pada sesama argumen yang posisinya sama.
b. Nama dan aritas predikat harus sama
c. Unifikasi terjadi bersamaan pada semua argumen.
d. Hasil unifikasi tidak boleh mengakibatkan variabel mempunyai nilai ganda atau bertentangan.
e. Domain objek majemuk dapat berunifikasi dengan variabel biasa seperti s(A) dengan C.
f. Argumen objek majemuk dapat berunifikasi dengan variabel biasa seperti s(x) dengan s( C ).
g. Bisa terjadi unifikasi dengan aturan.

contoh :
domains
      jenis,pabrik =symbol
      penumpang=integer
predicates
      pembuat(pabrik,jenis)
      pesawat(jenis,penumpang)
      pesawat_kecil(jenis)
clauses
      pembuat(boeing,boeing_747).
      pembuat(fokker,f28).
      pembuat(iptn,n250).
      pesawat(boeing_747,500).
      pesawat(n250,50).
      pesawat_kecil(Jenis):-
            pembuat(_,Jenis),
            pesawat(Jenis,JmlPen),
            JmlPen>100.      

Apabila kiat meniliskan pada goal:
            pesawat_kecil(Jenis)
maka Turbo Prolog akan menjawab :
            Jenis = n250
            1 solutions

            Pada saat Turbo prolog menerima goal tadi, maka Turbo Prolog melakukan pemanggilan klausa pesawat_kecil yang berupa aturan. Pencarian jawaban akan berhasil bila tubuh klausa terpenuhi yaitu :
  • Pertama, Turbo Prolog akan memanggil sub klausa penbuat(_,Jenis). Di sini nama pabrik tidak dipermasalahkan karena menggunakan variabel tak bernama. Oleh karena itu hanya variabel Jenis yang diinstantiasikan dengan boeing_747. Turbo Prolog kembali dari memanggil klausa pembuat dengan hasil Jenis = boeing_747.
  • Kedua, Turbo Prolog memanggil sub klausa pesawat(boeing_747,JmlPen), yang kemudian kembali dengan JmlPen = 500.
  • Ketiga, Turbo Prolog melakukan pembandingan 500<100. Hasilnya gagal.
  • Keempat, kegagalan ini menyebabkan Turbo Prolog mencari jawaban yang lain sehingga diperoleh Jenis = n250 dan JmlPen =50. Maka Turbo Prolog akan menjawab seperti di atas.

Untuk selanjutnya pahami contoh program berikut ini :
domains
   name = symbol
   gpa  = real

predicates
   honor_student(name)
   student(name, gpa)
   probation(name)

clauses
   honor_student(Name):-
      student(Name, GPA),
      GPA>=3.5,
      not(probation(Name)).

   student("Betty Blue", 3.5).
   student("David Smith", 2.0).
   student("John Johnson", 3.7).
   probation("Betty Blue").
   probation("David Smith").

Ketikkan pada bagian goal : honor_student(Name)


II. Lacak Balik.

            Dalam menyelesaikan permasalahan, Turbo Prolog akan mencari semua kemungkinan jawaban. Apabila menemui kegagalan, Turbo Prolog akan melacak balik.(analog dengan pencarian suatu alamat).
            Dalam pelacakannya, Turbo Prolog menggunakan metode pencarian terdalam (depth-first search).
            Perhatikan contoh berikut ini :

domains
      orang,makanan,rasa = symbol
predicates
      suka(orang,makanan)
      berasa(makanan,rasa)
      makanan(makanan)
clauses
      suka(didit,X):-
      makanan(X),berasa(X,keju).
      berasa(roti,tawar).
      berasa(pia,coklat).
      berasa(pia,susu).
      berasa(pia,keju).
      makanan(roti).
      makanan(kripik).
      makanan(pia).
goal
      suka(didit,Apa),
            write(" Didit suka makan ",Apa).

Pada saat program dijalankan, Turbo Prolog akan mencari klausa suka dari atas. Dalam hal ini, program akan memanggil klausa suka dan didapati aturan :
            suka(didit,X) :- makanan(X),berasa(X,keju).

Pada saat itu terjadi unifikasi antara variabel Apa dengan X yang keduanya masih bebas. Aturan di atas terdiri dari dua sub-goal :makanan dan berasa, keduanya harus terpenuhi. Maka Prolog mulai memanggil sub-goal paling atas hingga paling bawah. Pertama, prolog melakukan unifikasi sub goal makanan(X) dengan kumpulan klausa makanan yang teratas yakni :makanan(roti). Unifikasi berhasil menyebabkan X terikat dengan roti. Di sini Prolog mencatat titik lacak balik untuk klausa makanan, karena ada klausa makanan lain, yaitu makanan(kripik). Prolog kembali dengan berhasil(X=roti), sehingga Prolog melanjutkan ke subgoal berikutnya :berasa(X,keju), yang diartikan berasa(roti,keju).
Di sini Prolog mengalami kegagalan karena tidak menemukan fakta berasa(roti,keju). Kemudian Prolog memeriksa catatan titik balik dan ada pada makanan(kripik), sehingga terjadi unifikasi antara variabel X dengan kripik. Pada saat ini Prolog juga mencatat titik lacak balik di makanan(pia).
Kemudian Prolog mencari fakta berasa(kripik,keju) yang juga mengalami kegagalan. Sehingga Prolog memulai pelacakan kembali dari titik balik terakhir yaitu pada makanan(pia). Yang kemudian Prolog melanjutkan ke subgoal berasa(pia,keju) dan berhasil karena ada fakta tersebut.

Struktur Turbo Prolog


1. Pendahuluan
Prolog merupakan bahasadeklaratif. Artinya jika kita memberi fakta dan aturan, Prolog akan menyelesaikan problem secara deduktif, atau dari banyak fakta dan aturan kemudian diturunkan kesimpulan sebagai jawaban. Hal ini berbeda dengan bahasa prosedural seperti Pascal atau C. Dalam bahasa prosedural, pemrogram harus memberi perintah untuk memecahkan masalah langkah demi langkah.

2. Dasar Program Prolog
a. Fakta
            Fakta adalah suatu kenyataan atau kebenaran yang diketahui. Fakta menyatakan hubungan (relasi) antara dua objek (benda) atau lebih. Fakta dapat pula menunjukkan sifat suatu objek.
Misalkan hubungan keluarga ‘orang tua ‘, dapat dituliskan dengan suatu relasi orangtua(X,Y).
contoh :           orangtua(adi,ali)
                        orangtua(ani,ali)
Orangtua disebut sebagai relasi atau juga predikat, sedangkan yang berada dalam tanda kurung disebut argumen.
Contoh  fakta yang menunjukkan sifat adalah :
            gula berasa manis
dapat ditulis sebagai
            manis(gula).

b. Aturan
            Untuk membuat suatu aturan, kita hanya perlu suatu rumusan logika. Misalkan fakta yang memperlihatkan relasi orang tua, maka jika kita ingin menyatakan relasi tentang anak atau kakek, kita harus merumuskan apa hubungan antara orangtue dan anak juga orangtua dan kakek.
            Dalam relasi orang tua maka aturan relasi untuk anak adalah :
anak(Y,X) if orangtua(X,Y).
            Sedangkan aturan untuk relasi kakek adalah :
            kakek(X,Z) if laki_laki(X) and orangtua(X,Y) and orangtua(Y,Z).

            Dalam Prolog if ,and, or ditulis masing-masing dengan tanda “ :-“, “,”, “ ;”.
Sehingga aturan di atas dapat ditulis sebagai berikut :
            kakek(X,Z):-laki_laki(X), orangtua(X,Y), orangtua(Y,Z).
            anak(Y,X):-orangtua(X,Y).

3. Struktur Program Turbo Prolog
            Secara umum program Turbo Prolog terdiri dari Domains, Predicates, Clause dan Goal.
A. Bagian Domains
            Domains dalam Prolog seperti type dalam Pascal. Di bagian Domains, kita menyatakan jenis suatu variabel atau argumen. Contoh :
Domains
            NamaOrang = symbol
            Alamat = string
            Umur = integer
Misalkan kita miliki predikat data(NamaOrang, Alamat, Umur), maka domain dalam predikat ini adalah milik argumen pada posisi yang ditempati domain dalam predikat tersebut.
            Jika kita tidak mempergunakan domains sendiri, kita hanya boleh menggunakan domain standar, seperti :
            data(symbol, string, integer)
            Domains standar dalam Turbo Prolog adalah :
a. char              :Karakter tunggal diapit tanda kutip tunggal ‘a’, ‘b’, ‘\58’.
b. integer         :Bilangan bulat dari –32768 sampai dengan 32767. Integer heksadesimal diawali dengan   tanda ($).
c. real               : Bilangan real dari 1 x 10-307 sampai 1 x 10308. Jika integer diberikan pada argumen real maka akan langsung diubah ke real.
d. string           : Rentetan karakter tang diapit tanda kutip ganda seperti “Jalan Sangkuriang”. Panjang maksimum 255 karakter, sedangkan jika string tersebut dari file, atau terkandung dalam program, bisa mencapai 64 Kbyte.
e. symbol         : Rangkaian huruf, angka dan garis bawah, asalkan karakter pertama huruf kecil, tidak mengandung spasi/karakter khusus.
            Selain domain standar ada domain lain yakni : domain file, domain list, domain majemuk, domain yang telah ditetapkan. Yang akan dijelaskan di bab selanjutnya.
B. Bagian Predicates
            Kita harus mendeklarasikan predikat yang ada pada bagian Predicates dan mendefinisikannya dalam bagian Clauses. Jika tidak, Turbo 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.
C. Bagian Clauses
            Sekumpulan klausa dari predikat yang sama harus disatukan (dikelompokkan) dalam bagian Clauses dan disebut prosedur. Bila melakukan pemanggilan klausa atau matching, turbo Prolog melacaknya dari atas ke bawah.
Misalkan
            Clauses
            menu(1):- data(NamaOrang, Alamat, Umur), Umur > 50.
D. Bagian 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

            3 solutions
E. Bagian Lain
            selain bagian utama di atas, pada Prolog terdapat bagian lain yaitu :
  • bagian Database
  • bagian Constants
  • bagian Global
  • bagian petunjuk kompiler

a. Bagian Database
            Program Turbo Prolog merupakan kumpulan fakta dan aturan.Terkadang kita perlu memperbarui data selagi program berjalan. Dalam hal ini fakta-fakta tersebut merupakan basis data dinamik yang dapat berubah pada saat program berjalan. Turbo Prolog menyediakan tempat untuk menyatakan fakta dalam program yang merupakan bagian dari basis data dinamik (berubah), yakni bagian database. Diuraikan pada bagian selanjutnya.
b. Bagian Constants
            Bagian Constants, disediakan turbo Prolog untuk mendeklarasikan konstanta.
Contoh :
            constants
                        part_1 = 200
                        pi = 3.141592653
                        r = 10.5
c. Bagian Global
            Bagian global digunakan untuk menyatakan domains, database dan predicates global. Jika tidak dinyatakan demikian, maka turbo Prolog menganggapnya sebagai lokal.
d. Petunjuk kompiler
            Petunjuk kompiler digunakan untuk memberi petunjuk atau perintah pada kompiler. Misalnya include, untuk menyertakan file lain. trace untuk mengetahui bagaimana Turbo Prolog mencari jawaban atau mengerjakan program.

4. Contoh Program
            Selanjutnya perhatikan contoh program sederhana menggunakan Turbo Prolog.
1. Contoh Program 1
predicates
   likes(symbol,symbol)

clauses
   likes(ellen, tennis).
   likes(john, football).
   likes(tom, baseball).
   likes(eric, swimming).
   likes(mark, tennis).
   likes(bill, Activity) if likes(tom, Activity).
2. Contoh Program 2
predicates
   male(symbol)
   female(symbol)
   parent(symbol, symbol)

clauses
   male(bill).
   male(joe).

   female(sue).
   female(tammy).

   parent(bill, joe).
   parent(sue, joe).
   parent(joe, tammy).
3. contoh Program 3
predicates
   car(symbol,real,integer,symbol,integer)
   truck(symbol,real,integer,symbol,integer)

clauses
   car(chrysler, 130000, 3, red, 12000).
   car(ford, 90000, 4, gray, 25000).
   car(datsun, 8000, 1, red, 30000).
   truck(ford, 80000, 6, blue, 8000).
   truck(datsun, 50000, 5, orange, 20000).
   truck(toyota, 25000, 2, black, 25000).
4. Contoh Program 4
predicates
   can_buy(symbol, symbol)
   person(symbol)
   car(symbol)
   likes(symbol, symbol)
   for_sale(symbol)

clauses
   can_buy(X, Y) :-
      person(X),
      car(Y),
      likes(X, Y),
      for_sale(Y).
  
   person(kelly).
   person(judy).

   car(lemon).
   car(hot_rod).

   likes(kelly, hot_rod).
   likes(judy, pizza).

   for_sale(pizza).
   for_sale(lemon).
   for_sale(hot_rod).
5. Conto program 5

predicates
   type(symbol, symbol)
   is_a(symbol, symbol)
   lives(symbol, symbol)
   can_swim(symbol)

goal
   can_swim(What) ,
   write("A ", What, " can swim.").

clauses
   type(ungulate, animal).
   type(fish, animal).

   is_a(zebra, ungulate).
   is_a(herring, fish).
   is_a(shark, fish).

   lives(zebra, on_land).
   lives(frog, on_land).
   lives(frog, in_water).
   lives(shark, in_water).

   can_swim(Y) :-
    type(X, animal) ,
    is_a(Y, X) ,
    lives(Y, in_water).
6. Contoh program 6
predicates
   buy_car(symbol, symbol)
   car(symbol, symbol, integer)
   colors(symbol, symbol)

clauses
   buy_car(Model, Color) :-
      car(Model, Color, Price),
      colors(Color, sexy),!,
      Price < 25000.

   car(maserati, green, 25000).
   car(corvette, black, 24000).
   car(corvette, red, 26000).
   car(porsche, red, 24000).
   colors(red, sexy).
   colors(black, mean).
   colors(green, preppy).