Anda di halaman 1dari 7

FUNGSIONAL PROGRAMMING

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

 Merupakan hasil dari fungsi meringkas dan men-generalisir type data dari peta

3 komponen primer bahasa functional :

1. Kumpulan objek data


menggunakan mekanisme struktur data tingkat tinggi.
Contoh : Array atau List

2. Kumpulan fungsi built-in


untuk memanipulasi objek data dasar yang menyediakan sejumlah fungsi untuk
membuat dan mengakses list.

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 : A 68000

List → urutan dari atom atau list, dipisahkan dengan spasi, ditutup dengan
tanda kurung
Contoh : (PLUS A B)
((DAGING AYAM) (SAWI KANGKUNG BAYAM) AIR))

Programming Fungsional Page 1 of 7


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

3. Kumpulan functional forms


untuk membuat fungsi baru, yang mengizinkan programmer mendefinisikan operasi
baru dari kombinasi fungsi yg ada

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) adlah fungsi yg menambahkan sesuatu ke x

3 Elemen Lambda Calculus murni :

 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

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

Programming Fungsional Page 2 of 7


FUNGSI REKURSIF
Perluasan Syntax Lambda-calculus yang mencakup ekspresi yang telah dinamai (named
expressions)

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 lambda-calculus 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

Programming Fungsional Page 3 of 7


Functional Programming urutan mesin virtual.
– Bahasa pemrograman fungsional ® lambda calculus
– Lambda calculus ® logika kombinatorial
– Logika kombinatorial ® kode mesin reduksi graf

Kesemuanya adalah mesin virtual

PEMROGRAMAN IMPERATIF

Adalah : paradigma pemrograman yang mempunyai karakteristik berupa status dan


insruksi/perintah untuk mengubah status program.

Status diwakili oleh variabel sedangkan instruksi diwakili oleh statemen.

Ciri-ciri pemrograman imperatif yaitu :


- Adanya instruksi/command/perintah/kalimat-kalimat perintah contoh : GOTO 10
- Adanya status yang berubah
contoh : dengan adanya perintah GOTO 10 maka status program akan loncat mengerjakan
statemen yang ada di line number 10

VARIABEL DAN PENUGASAN

Variabel : identifier/pengenal yang berisi data yang dapat berubah-ubah nilainya di dalam
program.

Penugasan(Assigment) :
suatu aksi yg menyebabkan peletakkan atau pemberian suatu nilai di suatu lokasi atau
variable

Contoh : A = 3 (statemen penugasan pada Bahasa BASIC)


A := 3 (statemen penugasan pada Bahasa PASCAL)

STATEMEN/PERINTAH TIDAK TERSTRUKTUR

Merupakan : statemen yang berisi perintah untuk mengerjakan statemen tertentu yang
diidentifikasi dengan suatu label, baik menggunakan statemen GOTO
bersyarat maupun tanpa syarat.

Contoh : program yang mengandung perintah tidak terstruktur (bahasa BASIC)

10 LET A = 5

20 LET B = A + 1

Programming Fungsional Page 4 of 7


30 GOTO 50
40 LET B = A * 2

50 PRINT B
60 END
PEMROGRAMAN TERSTRUKTUR
Merupakan : suatu teknik yg memecah masalah besar menjadi lebih kecil & lebih mudah
dipahami sehingga masalah yang besar dapat diselesaikan dengan baik.
Contoh : PASCAL, COBOL, BAHASA C

STRUKTUR KONTROL
Struktur kontrol / struktur kendali merupakan : struktur y mengendalikan
statemen/instruksi apa saja yg harus dikerjakan

tiga struktur kontrol pada pemrograman imperatif yaitu :


1. Komposisi Sekuensial
Digunakan bilamana lebih dari sebuah statemen yang harus dikerjakan secara berurutan
yang dipisahkan
dengan menggunakan simbol/tanda khusus tertentu, misalnya titik koma (;) dalam
PASCAL.
Contoh : Readl(N); Write(N);

2. Seleksi
Statemen penyeleksian kondisi menunjukkan bahwa suatu statemen akan dikerjakan bila
suatu kondisi
adalah bernilai benar. Contoh statemen penyeleksian kondisi : IF – THEN, CASE OF
(Bahasa Pascal)

3. Iterasi
Statemen Iterasi (perulangan) digunakan untuk memproses statemen-statemen
tertentu berulang kali.

Contoh statemen iterasi : WHILE-DO, REPEAT-UNTIL, FOR-DO (Bahasa Pascal)

SUBPROGRAM, PROSEDUR dan FUNGSI

Subprogram merupakan : blok statemen yang dapat dipanggil dari lokasi yang berbeda di
dalam program.

Prosedur dan Fungsi adalah :


suatu program terpisah dalam blok sendiri yg berfungsi sebagai subprogram
(program bagian).

Yang membedakan antara Fungsi dan Prosedur yaitu :


- Fungsi harus dideklarasikan dengan tipenya

Programming Fungsional Page 5 of 7


- Suatu Fungsi jika dijalankan/dipanggil akan mengembalikan suatu nilai

PENANGANAN EKSEPSI (EXCEPTION HANDLING)

Eksepsi adalah :
suatu konstruksi suatu bahasa khusus untuk menangani keadaan yang tidak terduga
(biasanya adalah error); status keadaan error

Selama program berjalan, dapat terjadi sesuatu hal yang menyebabkan error.

Misalnya :
array diberi nilai index yang melebihi nilai index yang sudah dideklarasikan, atau suatu
operasi aritmatika yang membagi suatu bilangan dengan nol. Hal ini dapat mengakibatkan
program berhenti tidak seperti yang diinginkan dan biasanya menampilkan pesan kesalahan
yang tidak jelas.

Bahasa pemrograman harus menyediakan fasilitas untuk mendefinisikan eksepsi, mengenali


kemunculan eksepsi dan menentukan kode-kode apa yang harus dieksekusi ketika eksepsi
muncul.

Penanganan Eksepsi (Exception Handling) :

Penentuan atas kode-kode apa yang harus dieksekusi

Contoh Penggunaan Eksepsi dalam Bahasa C++

#include <iostream>
using namespace std;
int main ()
{
try {
cout <<”Masukkan Angka :”;
int num; cin >> num;
if (num>10) throw std : : exception ();
cout << “Angka Kurang dari atau sama dengan 10 “ <<
endl;
} catch (std : : exception& S) {
cout << “Angka lebih dari 10 “ << endl;
}
return 0;
}

Programming Fungsional Page 6 of 7


Programming Fungsional Page 7 of 7

Anda mungkin juga menyukai