Minggu, 23 Desember 2018

Logika Programming


LOGIC PROGRAMMING

PROLOG adalah kependekan dari PROgramming in LOGic, yang berarti pemrograman logika. Pemrograman Prolog menggunakan bahasa deklaratif, dimana pemrogram memberi fakta dan aturan untuk selanjutnya diselesaikan oleh Prolog secara deduktif sehingga menghasilkan suatu kesimpulan. Hal ini berbeda dengan bahasa prosedural seperti Pascal, Fortran, C, atau yang sejenis, dimana pemrogram memberi perintah atau penugasan untuk memecahkan persoalan langkah demi langkah, sehingga sering disebut sebagai programming with assignment. Disamping itu, berbeda dengan pemrograman fungsional, pemrograman logika ini menggunakan relasi, bukan fungsi sehingga sangat sesuai untuk implementasi sistem pakar.


LOGIKA PREDIKAT
Logika predikat (kalkulus predikat) merupakan bagian dari komputasi logika yang juga mencakup aljabar Boole (logika proposisional), dimana fakta dan aturan dinyatakan melalui predikat seperti:


Kalimat pertama menunjukkan adanya fakta bahwa Joko adalah seorang lelaki, dan kalimat kedua menyatakan bahwa Joko menikah dengan Tuti. Kalimat ketiga dan keempat menunjukkan suatu aturan atau kaidah yang umum berlaku, bahwa untuk setiap pasang orang x dan y, jika x menikah dengan y dan x adalah lelaki,  maka dapat dipastikan bahwa y adalah bukan seorang lelaki. Sedangkan kalimat terakhir manyatakan bahwa untuk setiap y, ada x sehingga jika y adalah orang  maka y mempunyai seorang ibu x (x ibu dari y).
Simbol predikat yang digunakan dalam kalimat-kalimat tersebut adalah lelaki, menikah, orang, dan ibu yang sering disebut sebagai relasi, sedangkan Joko dan Tuti disebut sebagai simbol konstanta.

BAHASA DEKLARATIF
Seperti yang dijelaskan sebelumnya bahwa pokok perbedaan Prolog dari bahasa lain adalah karena bersifat deskriptif atau deklaratif, sedang bahasa lain umumnya bersifat prosedural atau imperatif.
Sebagai bukti bahwa Prolog merupakan bahasa deklaratif adalah dalam menyatakan fakta dan aturan seperti berikut:

1.        Jika ingin menyatakan bahwa Prawiro adalah bapak dari Joko, maka dalam Prolog dituliskan sebagai:
bapak(prawiro, joko).
2.        Jika ingin menerangkan suatu kaidah bahwa A adalah kakek dari Z maka harus dibuat dahulu logika dalam bahasa Indonesia sehingga menjadi suatu aturan seperti berikut:
A adalah kakek dari Z jika A adalah bapak dari X dan X adalah bapak Z
Atau
A adalah kakek dari Z jika A adalah bapak dari X dan X adalah ibu Z

Aturan tersebut ditulis dalam Prolog sebagai:
kakek(A,Z) :- bapak(A,X), bapak(X,Z).
kakek(A,Z) :- bapak(A,X), ibu(X,Z).

DASAR PEMROGRAMAN PROLOG
Pada bagian ini akan diuraikan dasar-dasar pemrograman Prolog, aturan umum penulisan program, bagaimana melakukan dialog dengan Prolog, dan beberapa pengertian dasar yang berkaitan dengan program Prolog.

Fakta
Fakta adalah suatu kenyataan atau kebenaran yang diketahui, dan menyatakan hubungan
(relasi) antara dua atau lebih obyek. Fakta dapat pula menunjukkan sifat suatu obyek.

Contoh sederhana adalah:     bapak(prawiro, joko).
merah(darah).
asin(garam).
Aturan
Aturan merupakan logika yang dirumuskan dalam bentuk relasi sebab-akibat dan hubungan implikasi.

Misalnya dapat dibuat aturan bahwa jika A
adalah bapak dari X
dan
X
adalah bapak atau ibu dari Z
maka dapat dipastikan bahwa A
adalah kakek dari Z.

Contoh untuk ini adalah:
kakek(A,Z) :- bapak(A,X), bapak(X,Z).
kakek(A,Z) :- bapak(A,X), ibu(X,Z).

Klausa (clause)
Aturan yang ditulis ini berupa klausa (clause) dan terdiri dari kepala (kakek) dan tubuh yang dipisahkan oleh tanda :  - (bapak dan ibu). Klausa adalah suatu frase (ungkapan)


Power Domain (Daerah Tenaga)



Teori Set menyediakan suatu notasi elegan untuk uraian perhitungan.

 Keluarga bahasa Pascal menyediakan set gabungan dan simpangan dan keanggotaan set.


Set dari semua subsets dari sebuah set adalah set tenaga dan digambarkan:

                                  PS = { s | s is a subset of S }


                                  P   = { s | s is a subset}

Subtype dan subrange adalah  : contoh dari pembangun set tenaga.


Fungsi adalah : bahasa yang menyediakan suatu sistem kesimpulan jenis mengijinkan para programmer untuk membuat deklarasi jenis tegas/eksplisit.
Contoh : fungsi persegi dapat diwakili sebagai subset daerah produk Nat x Nat.
                                                sqr = {(0,0),(1,1),(2,4),(3,9),...}
               
                Penyamarataan membantu untuk menyederhanakan daftar tanpa batas ini untuk:
                                                sqr = {(x,x*x)| x didalam Nat}



Daerah Batasan Pengulangan
adalah : daerah yang definisinya menjadi bentuk :       D:... D...

Definisi disebut berulang karena nama daerah “berulang” pada sisi kanan dari definisi. Daerah batasan pengulangan tergantung pada abstrak karena nama daerah adalah suatu bagian penting dari definisi daerah.


Lebih dari satu set boleh mencukupi suatu definisi berulang. Bagaimanapun, mungkin saja ditunjukkan bahwa suatu definisi berulang selalu mempunyai solusi terkecil.

Solusi terkecil adalah suatu subset solusi yang lain.
Solusi terkecil daerah batasan pengulangan yang digambarkan didapat melewati suatu urutan perkiraan (D0, D1,...) ke daerah dgn daerah yg menjadi batas dr urutan perkiraan (D= limi--> infty Di).

Batas adalah solusi yang terkecil pada definisi daerah berulang


Jenis Sistem

Prosentase besar kesalahan didalam program adalah dalam kaitan dengan aplikasi operasi ke object jenis yang bertentangan. Jenis sistem   telah dikembangkan untuk membantu programmer didalam pendeteksian kesalahan.


Sistem jenis adalah :
satu set aturan untuk penjelasan jenis dan menghubungkan suatu jenis dengan ungkapan didalam bahasa.

Suatu sistem jenis menolak suatu ungkapan jika tidak menghubungkan suatu jenis dengan ungkapan. Jenis pemeriksaan boleh berjalan pada waktu kompilasdsi atau waktu berjalan atau kedua-duanya.



Jika kesalahan diharapkan untuk dideteksi pada waktu kompilasi maka suatu sistem pengecekan jenis statis diperlukan. Satu pendekatan ke pemeriksaan jenis statis adalah untuk memerlukan programmer untuk menetapkan jenis masing-masing obyek didalam program.


Ini mengizinkan kompilator untuk melaksanakan jenis pemeriksa sebelum pelaksanaan program dan ini adalah pendekatan yang diambil oleh bahasa seperti Pascal, Ada, C++, dan Java.
               
                Jika pendeteksian kesalahan diharapkan untuk ditunda sampai waktu pelaksanaan, maka pemeriksaan jenis dinamis diperlukan.

Didalam pemeriksa jenis dinamis, masing-masing nilai data berlabel dengan jenis informasi sehingga lingkungan waktu berjalan dapat memeriksa kecocokan jenis dan mungkin melaksanakan konversi jenis jika perlu.

Contoh dari bahasa jenis dinamis :  Bahasa program Lisp, Scheme dan Small-Talk




Bahasa pemrograman Miranda dan Haskell adalah jenis statis dan menyediakan sistem kesimpulan jenis kuat sehingga seorang programmer tidak perlu mendeklarasikan jenis apapun. Bahasa juga mengijinkan para programmer untuk menyediakan spesifikasi jenis eksplisit.


Suatu pemeriksa jenis harus mampu :
       menentukan jika suatu program adalah jenis yang baik dan
       jika program adalah jenis yang baik, tentukan jenis ungkapan manapun di dalam program.


Jenis Deklarasi


Bahkan bahasa yang menyediakan suatu sistem kesimpulan jenis mengijinkan para programmer untuk membuat deklarasi jenis tegas/eksplisit. Sekalipun kompiler dapat dengan tepat menyimpulkan jenis, pembaca manusia mungkin harus meneliti beberapa halaman kode untuk menentukan jenis suatu fungsi.


Kesalahan kecil oleh programmer dapat menyebabkan kompiler mengeluarkan pemberitahuan kesalahan atau untuk menyimpulkan suatu jenis yang berbeda dibanding yang diharapkan. Karena pertimbangan ini adalah praktek pemrograman yang baik dengan tegas menyatakan jenis atas semua kecuali kasus yang paling nyata.


Polymorphisme


Suatu sistem jenis adalah monomorphic jika masing-masing konstanta, variabel, parameter, dan hasil fungsi mempunyai suatu jenis unik. Jenis pemeriksa suatu sistem monomorphic adalah secara langsung. Tetapi sistem jenis monomorphic semata-mata adalah tidak memuaskan untuk penulisan perangkat lunak yang bisa dipakai kembali.


Sistem yang sepenuhnya Monomorphic jarang. Kebanyakan bahasa pemrograman berisi beberapa operator atau prosedur yang mengijinkan argumentasi lebih dari satu jenis.



 Definisi N.2:
       Monomorphisme: tiap-tiap konstanta, variabel, parameter, fungsi & operator mempunyai suatu jenis unik.
       Pemuatan lebih mengacu pada penggunaan dari syntaksis unggal pengenal untuk mengacu pada beberapa operasi berbeda yang dibedakan oleh jenis dan jumlah argumentasi pada operasi.
       Polymorphisme: suatu operator, fungsi atau prosedur yang mempunyai suatu keluarga jenis yang terkait dan beroperasi secara seragam atas argumentasinya dengan mengabaikan jenis.
       Suatu operasi polymorphic adalah yang dapat berlaku untuk jenis yang berbeda tetapi berhubungan dengan argumentasi.


Suatu sistem jenis adalah polymorphic jika abstrak beroperasi secara seragam pada argumentasi suatu keluarga jenis terkait.  Polymorphisme jenis ini kadang-kadang disebut polymorphisme parametric.


Jenis Kelengkapan

Prinsip Jenis Kelengkapan. Tidak ada operasi yang dapat berlaku semaunya terbatas yang berhubungan dengan nilai jenis.


Mahasiswa Yang Terlahir Ganteng Dan Menarik.


EmoticonEmoticon