Makalah Alogoritma Pemrograman Tentang Bahasa Pemrograman
KATA
PENGANTAR
Dengan
menyebut nama Allah SWT yang Maha Pengasih lagi Maha Panyayang, Kami panjatkan
puja dan puji syukur atas kehadirat-Nya, yang telah melimpahkan rahmat,
hidayah, dan inayah-Nya kepada kami, sehingga kami dapat menyelesaikan tugas
makalah tentang pemrograman fungsional.
Makalah ini telah kami
susun dengan maksimal dan mendapatkan bantuan dari berbagai pihak sehingga
dapat memperlancar pembuatan makalah ini. Untuk itu kami menyampaikan banyak
terima kasih kepada semua pihak yang telah berkontribusi dalam pembuatan
makalah ini. Terutama kepada Ibu Octarina Budi Lestari , selaku dosen mata
kuliah Algoritma dan Pemrograman 1C, yang memberikan kami tugas membuat makalah
sehingga dengan begitu secara tidak langsung kami belajar untuk memperdalam
Ilmu Alogaritma dan Pemrograman.
Terlepas
dari semua itu, Kami menyadari sepenuhnya bahwa masih ada kekurangan baik dari
segi susunan kalimat maupun tata bahasanya. Oleh karena itu dengan tangan
terbuka kami menerima segala saran dan kritik dari pembaca agar penulis dapat
memperbaiki makalah ini.
Akhir
kata kami berharap semoga makalah tentang pemrograman yang baik ini
dapat memberikan manfaat maupun inpirasi terhadap pembaca.
Depok, Oktober 2018
Daftar
Isi
BAB
I
PENDAHULUAN
Pesatnya teknologi, terutama
teknologi komputer sudah tak bisa dipungkiri lagi, bagi yang mengikuti
perkembangannya, ia tidak akan dipandang sebelah mata. Sebaliknya, bagi yang
tidak mengikuti perkembangannya, bersiaplah untuk mundur secara suka rela dari panggung
kompetisi. Ibarat wabah, teknologi komputer sudah menyusupi hampir semua bidang
kehidupan manusia. Dari pemerintah pusat sampai tingkat pemerintah desa,
perusahaan-perusahaan, supermarket, minimarket, perguruan tinggi, SLTA, SLTP,
bahkan SD hampir semuanya mengenal komputer. Saat
ini, yang mempunyai lingkungan yang semakin luas dan banyak diminati,
juga dapat digunakan untuk menghasilkan uang adalah dunia pemrograman komputer.
Dalam dunia pemrograman komputer, dikenal algoritma dan banyak bahasa pemrograman,
seperti C, C++, Pascal, Basic, Java, dan lain-lain.
Oleh karena itulah, yang akan dibahas dalam makalah ini adalah Algoritma dan Pemrograman.Fungsional
Makalah ini disusun dengan
tujuan sebagai sarana untuk mengikuti pesatnya perkembangan teknologi komputer
di masa sekarang ini, salah satunya di dunia pemrograman yang sekarang semakin
banyak diminati. Selain itu, tujuan disusunnya makalah ini adalah untuk memenuhi
tugas.
BAB
II
PEMBAHASAN
Pemrograman Fungsional adalah
sebuah pemrograman yang melakukan proses komputasi sebagai evaluasi
fungsi-fungsi matematika.
Pemrograman
Fungsional sering disebut juga pemrograman yang aplikatif karena
fungsi-fungsinya yang di aplikasikan kedalam argumentasi menjadi deklaratif dan
non-prosedural.
Pemrograman
Fungsional juga didasarkan pada konsep dasar matematika dari sebuah fungsi dan
seluruh kode programnya berupa fungsi-fungsi.
Karena
pemrograman fungsional berdasarkan pada matematika maka akan lebih mudah untuk
mendeteksi bahwa program tersebut benar atau tidak.
Bahasa
Pemrograman Fungsional lebih disukai untuk tujuan ilmiah dan dan akademik,
bukan untuk pengembangan perangkat lunak dan komersial. Namun, ada beberapa
bahasa pemrograman fungsional yang digunakan untuk komersial pengembangan
aplikasi diantaranya adalah :
1.
XSLT
2.
XML
3.
OCaml
4.
Haskell
5.
Mathematica
6.
Erlang
1. Objek Data
Menggunakan mekanisme struktur data tingkat
tinggi. Contohnya : Array atau List.
2. Fungsi Built-in
Untuk memanipulasi objek data dasar yang
menyediakan sejumlah fungsi untuk membuat serta mengakses list.
3. Functional Forms
Untuk membuat fungsi baru yang mengizinkan
programmer mendefinisikan sebuah operasi baru dari kombinasi fungsi yang ada.
Lambda Kalkulus bisa
disebut sebagai asal muasal bahasa pemrograman fungsional yang dikembangkan
untuk bekerja dengan aplikasi rekursif fungsi dan definisi.
Ada 3 Elemen Pada Lambda Kalkulus Yaitu :
1.
Lambang Primitif
2.
Aplikasi Fungsi
3.
Fungsi Ciptaan
Lambda Kalkulus Murni juga tidak memiliki fungsi tetap dan konstanta.
Ambil Lambda Kalkulus Dan :
1.
Perbaiki Strategy
Pengurangan β-pengurangan dalam kalkulus λ-dapat terjadi di mana saja dan dalam
urutan apapun. ini dapat mempengaruhi penghentian dan efisiensi algoritma
program. Sebuah tetap strategi pengurangan memungkinkan programmer untuk alasan
tentang pemberhentian dan algoritmik kompleksitas.
2.
Tambahkan tipe data
primitif (integer, string), operasi primitif (aritmatika, logis), dan struktur
data primitif (daftar, catatan). Semua ini dapat dikodekan dalam kalkulus λ-,
namun pengkodean tidak wajar dan tidak efisien. Mengembangkan model eksekusi
efisien.
3.
Berulang ulang oleh aturan
β adalah cara yang sangat tidak efisien untuk mengeksekusi program pada
komputer.
Ada dua kubu besar dalam
bahasa pemrograman yaitu pemrograman fungsional dan pemrograman imperative.
Sampai saat ini kubu imperative masih mendominasi di industri perangkat lunak
dunia, seperti C, Java, C#, Pascal, dan Visual Basic. Namun, jangan remehkan
fungsional karena kini mendapatkan tempat di industri perangkat lunak dunia
khususnya untuk memberi solusi terhadap isu scalability, fault-tolerance,
concurrency, parallel programming. Beberapa bahasa pemrograman fungsional
antara lain Erlang, Haskell, Scala (multi-paradigm), F#, Clojure.
Adapun kelebihan dari bahasa pemrograman fungsional antara lain:
1. Singkat.
Program fungsional cenderung lebih ringkas
dibanding program terstruktur (2 sampai 10 kali).
2. Mudah
dimengerti.
Program fungsional seringkali lebih mudah untuk
dimengerti. Dalam kasus Quicksort, tidak terlalu diperlukan pengetahuan
mengenai Haskell maupun quicksort. Hal tersebut tidak dapat terjadi pada
program C, yang membutuhkan waktu untuk dimengerti, dan sangat mudah untuk
melakukan kesalahn kecil yang mengakibatkan program tidak dapat dieksekusi.
3. Tidak ada
tumpukan pada memori.
Tidak ada kemungkinan memperlakukan integer
sebagai pointer, atau dilanjutkan dengan pointer null.
4. Kode
dapat digunakan kembali.
Bahasa pemrograman fungsional menggunakan polymorphism,
yang akan meningkatkan penggunaan kembali kode.
5. Pelekatan
yang kuat.
Bahasa fungsional non-strict memliki
fitur kuat lainnya: hanya mengevaluasi program seperti yang diperlukan untuk
menghasilkan jawaban, yang sering disebut dengan lazy evaluation. Struktur
data dievaluasi secukupnya untuk menghasilkan jawaban, dan sebagian mungkin
tidak dievaluasi sama sekali. Hal ini memungkinkan “pelekatan” untuk menyusun
bersama program yang sudah ada. Hal ini memungkinkan penggunaan kembali
program, atau potongan program lebih sering dari yang dapat dilakukan oleh
pengaturan terstruktur.
6. Abstraksi
yang kuat.
Secara umum bahasa fungsional menawarkan
cara-cara baru yang kuat untuk meng-enkapsulasi abstraksi. Abstraksi
mengizinkan kita untuk menentukan objek yang pekerjaan internalnya tersembunyi.
Abstraksi merupakan kunci untuk membangun program modular yang dapat
dipelihara. Satu mekanisme abstraksi yang kuat yang terdapat dalam bahasa
fungsional adalah higher-order function.
7. Manajemen
memori yang terintegrasi.
Kebanyakan program rumit perlu mengalokasikan
memori dinamis dari tumpukan (heap). Setiap bahasa fungsional memudahkan
pemrogram dari beban manajemen penyimpanan tersebut. Penyimpanan dialokasikan
dan diinisialisaikan secara implisit, dan diselamatkan secara otomatis oleh
kolektor sampah.
Kode programnya cenderung agak lambat berkembang, Bahasa pemrogramannya
cenderung sulit untuk didebug, Kelemahan kedua bukanlah masalah yang terlalu
besar tetapi yang pertama agak mengganggu, namun walaupun demikian CPU time
selalu lebih murah daripada programmer time dan tidak apalah jika harus
menunggu sedikit lebih lama untuk melihat outputnya setelah menyimpannya
beberapa hari terhitung dari saat diprogram dan didebug. Namun demikian
pemrograman fungsional sekarang telah memiliki standard interface fungsi asing
atau foreign-function interface yang memperbolehkan kita untuk
berhubungan dengan kode program yang ditulis dalam berbagai jenis bahasa
pemrograman
Contoh program bahasa C dan C++ menurut nilai kembalian yang dihasilkan :
1.
Fungsi
yang mempunyai nilai kembalian :
hsintaks umum :
tipe_data nama_fungsi ()
{
statemen1;
statemen2;
...
}
contoh :
int show_number()
{
int a = 1;
return (a);
}
fungsi return() di bawah ini menunjukkan kalau fungsi di atas mempunyai nilai kembalian
hsintaks umum :
tipe_data nama_fungsi ()
{
statemen1;
statemen2;
...
}
contoh :
int show_number()
{
int a = 1;
return (a);
}
fungsi return() di bawah ini menunjukkan kalau fungsi di atas mempunyai nilai kembalian
2.
fungsi yang punya input dan punya output
sintaks umum :
tipe_data nama_fungsi(tipe_data nama_variabel)
{
statemen1;
statemen2;
...
}
contoh:
int show_number(int a)
{
a = 1;
return (a);
}
- kalau di dalam tanda kurung memiliki variabel, berarti fungsi tersebut mempunyai input.
sintaks umum :
tipe_data nama_fungsi(tipe_data nama_variabel)
{
statemen1;
statemen2;
...
}
contoh:
int show_number(int a)
{
a = 1;
return (a);
}
- kalau di dalam tanda kurung memiliki variabel, berarti fungsi tersebut mempunyai input.
BAB
III
PENUTUP
Ada dua
kubu besar dalam bahasa pemrograman yaitu pemrograman fungsional dan pemrograman
imperative. Program fungsional memiliki beberapa kelebihan yaitu cenderung
lebih ringkas, lebih mudah untuk dimengerti, dan penyimpanan dialokasikan dan
diinisialisaikan secara implisit, dan diselamatkan secara otomatis. Selain
beberapa kelebihan fungsional
pemrograming juga memiliki kekurangan yaitu pemrogramannya cenderung sulit
untuk didebug.
Namun
demikian pemrograman fungsional sekarang telah memiliki standard interface
fungsi asing atau foreign-function interface yang memperbolehkan
kita untuk berhubungan dengan kode program yang ditulis dalam berbagai jenis
bahasa pemrograman
Penulis
menyelsaikan makalah ini dengan berbagai sumber dan arahan dari berbagai pihak. Penulis menyadari banyak
kekurangan dalam pembuatan makalah ini. Penulis mengharapkan kritikan dan saran
dari pembaca untuk perbaikan makalah ini dimasa yang akan datang.
Komentar
Posting Komentar