LISP merupakan salah satu bahasa pemrograman yang mengimplementasikan dari pemrograman fungsional “yang terdiri dari beberapa fungsi”. LISP ini bermanfaat untuk pembuatan – pembuatan rumus matematika. Pemrograman fungsional “LISP” tidak mempermasalahkan memorisasi dan struktur data.
Dalam LISP penulisan ekspresi secara prefix yaitu dengan menuliskan operatornya terlebih dahulu dan menuliskan operan setelah operatornya. Dan pemisah antara operan dengan operator menggunakan spasi. Contoh untuk menulis menjumlahkan antara a dan b kita menuliskan notasi dalam bahasa lisp dengan cara (+ a b). Perbedaan dengan bahasa C yaitu kalau bahasa C tidak menuliskanya secara prefix contoh untuk menjumlahkan dua inputan antara a dan b yaitu (x = a + b).
Dalam bahasa LISP juga terdapat ekspresi aritmatika ”* / + - sqrt expt ”, ekspresi logika ”T nil”, ekspresi kondisional ”if cond” dan ekspresi rekursif “fungsi perulangan”. Untuk membuat fungsi dalam sebuah bahasa LISP kita menuliskan kata defun yang berarti definition function “mendefinisikan fungsi atau biasa disebut dengan mendeklarasikan sebuah fungsi”. Contoh: (defun penjumlahan (a b) (+ a b)), dari contoh dibawah ini kita menginputkan dua buah bilangan integer dan menghasilkan nilai integer pula dari penjumlahan berikut.
Dalam sebuah fungsi dapat terjadi pemanggilan fungsi dari luar fungsi itu sendiri. Semisal kita mempunyai fungsi penjumlahan, didalam fungsi penjumlahan dapat kita masukan fungsi yang lain. Contoh: (defun pengurangan (a b) (- a b)) (defun penjumlahan (a b) (+ a (pengurangan a b))). Dari contoh diatas merupakan penulisan sebuah fungsi yang terdapat fungsi didalam fungsi tersebut. Dan kita pun dapat menuliskan lebih dari satu fungsi didalam fungsi.
Ekspresi kondisional merupakan ekspresi yang bertujuan untuk menyeleksi dari sebuah statement misal dengan contoh jika kita menginputkan angka 9 maka akan menghasilkan nilai true, selain angka 9 menghasilkan nilai false. Berikut merupakan implementasi dari statemen yang diatas: Dengan menggunakan ekspresi if (defun angka9 (a) (if(= a 9)t nil)). Dengan menggunakan ekspresi cond ”depend on” (defun angka9 (a) (cond((= a 9)t)(t nil))). Dari coding yang dituliskan diatas merupakan pengaplikasian fungsi if dan cond secara sederhana, dan fungsi if dan cond juga dapat dituliskan secara lebih sulit lagi seperti if bersarang atau cond yang bersarang. Maksud dari bersarang yaitu didalam if terdapat if dan didalam cond juga terdapat cond.
Sedangkan ekspresi rekursif merupakan ekspresi yang bersifat melakukan perulangan, dalam bahasa C sering disebut dengan istilah looping “Berulang”. Dalam bahasa LISP ekspresi ini dinamakan dengan rekursif “reccurent = perulangan”. Didalam fungsi rekursif ini terjadi pemanggilan dari diri sendiri. Didalam fungsi rekursif terdapat kondisi basis “kondisi yang mengakibatkan sebuah fungsi berhenti” dan kondisi reccurens “kondisi yang diulang”. Jika kita salah pengetikan dalam kondisi basis “kondisi berhenti dari sebuah perulangan” maka di LISP akan menuliskan peringatan yang bertuliskan “stack overflow” yang berarti fungsi tersebut tidak dapat berhenti / tidak dapat dihentikan karena kondisi basisnya salah atau tidak memungkinkan. Contoh fungsi rekursif : (defun tambah (a b) (if(= a 0) b (+ 1 (tambah (- a 1) b)))). Dari fungsi yang dituliskan jika kita mengetikan inputan 2 3 maka akan menghasilkan nilai 5. Nilai 5 didapat dari 2 bukan dari 0 maka lanjut ke statemen +1 dan masuk ke fungsi tambah lagi dan 1 bukan 0 maka lanjut lagi ke statemen +1 dan 0 adalah 0 maka +3 dan kemudian menghasilkan nilai 5 dari program LISP.
Dalam LISP penulisan ekspresi secara prefix yaitu dengan menuliskan operatornya terlebih dahulu dan menuliskan operan setelah operatornya. Dan pemisah antara operan dengan operator menggunakan spasi. Contoh untuk menulis menjumlahkan antara a dan b kita menuliskan notasi dalam bahasa lisp dengan cara (+ a b). Perbedaan dengan bahasa C yaitu kalau bahasa C tidak menuliskanya secara prefix contoh untuk menjumlahkan dua inputan antara a dan b yaitu (x = a + b).
Dalam bahasa LISP juga terdapat ekspresi aritmatika ”* / + - sqrt expt ”, ekspresi logika ”T nil”, ekspresi kondisional ”if cond” dan ekspresi rekursif “fungsi perulangan”. Untuk membuat fungsi dalam sebuah bahasa LISP kita menuliskan kata defun yang berarti definition function “mendefinisikan fungsi atau biasa disebut dengan mendeklarasikan sebuah fungsi”. Contoh: (defun penjumlahan (a b) (+ a b)), dari contoh dibawah ini kita menginputkan dua buah bilangan integer dan menghasilkan nilai integer pula dari penjumlahan berikut.
Dalam sebuah fungsi dapat terjadi pemanggilan fungsi dari luar fungsi itu sendiri. Semisal kita mempunyai fungsi penjumlahan, didalam fungsi penjumlahan dapat kita masukan fungsi yang lain. Contoh: (defun pengurangan (a b) (- a b)) (defun penjumlahan (a b) (+ a (pengurangan a b))). Dari contoh diatas merupakan penulisan sebuah fungsi yang terdapat fungsi didalam fungsi tersebut. Dan kita pun dapat menuliskan lebih dari satu fungsi didalam fungsi.
Ekspresi kondisional merupakan ekspresi yang bertujuan untuk menyeleksi dari sebuah statement misal dengan contoh jika kita menginputkan angka 9 maka akan menghasilkan nilai true, selain angka 9 menghasilkan nilai false. Berikut merupakan implementasi dari statemen yang diatas: Dengan menggunakan ekspresi if (defun angka9 (a) (if(= a 9)t nil)). Dengan menggunakan ekspresi cond ”depend on” (defun angka9 (a) (cond((= a 9)t)(t nil))). Dari coding yang dituliskan diatas merupakan pengaplikasian fungsi if dan cond secara sederhana, dan fungsi if dan cond juga dapat dituliskan secara lebih sulit lagi seperti if bersarang atau cond yang bersarang. Maksud dari bersarang yaitu didalam if terdapat if dan didalam cond juga terdapat cond.
Sedangkan ekspresi rekursif merupakan ekspresi yang bersifat melakukan perulangan, dalam bahasa C sering disebut dengan istilah looping “Berulang”. Dalam bahasa LISP ekspresi ini dinamakan dengan rekursif “reccurent = perulangan”. Didalam fungsi rekursif ini terjadi pemanggilan dari diri sendiri. Didalam fungsi rekursif terdapat kondisi basis “kondisi yang mengakibatkan sebuah fungsi berhenti” dan kondisi reccurens “kondisi yang diulang”. Jika kita salah pengetikan dalam kondisi basis “kondisi berhenti dari sebuah perulangan” maka di LISP akan menuliskan peringatan yang bertuliskan “stack overflow” yang berarti fungsi tersebut tidak dapat berhenti / tidak dapat dihentikan karena kondisi basisnya salah atau tidak memungkinkan. Contoh fungsi rekursif : (defun tambah (a b) (if(= a 0) b (+ 1 (tambah (- a 1) b)))). Dari fungsi yang dituliskan jika kita mengetikan inputan 2 3 maka akan menghasilkan nilai 5. Nilai 5 didapat dari 2 bukan dari 0 maka lanjut ke statemen +1 dan masuk ke fungsi tambah lagi dan 1 bukan 0 maka lanjut lagi ke statemen +1 dan 0 adalah 0 maka +3 dan kemudian menghasilkan nilai 5 dari program LISP.
Tidak ada komentar:
Posting Komentar