Anda di halaman 1dari 14

TUGAS KULIAH

Konsep Sistem Informasi A

DOSEN MATA KULIAH :


FIVI SYUKRIAH

DISUSUN OLEH :
Muhammad Dimas Sholikul Hadi (10122880)
Muhammad Haidar Siddiq (10122920)

UNIVERSITAS GUNADARMA
FAKULTAS ILMU KOMPUTER
TEKNOLOGI INFORMASI
2022/2023
LEMBAR PENGESAHAN

KOMISI PEMBIMBING

NO NAMA KEDUDUKAN
1. Nama Pembimbing Ketua
2. Nama Penguji 1 Anggota
3. Nama Penguji 2 Anggota
Tanggal Sidang : Tgl/bln/thn*

PANITIA UJIAN

NO NAMA KEDUDUKAN
1. Dr. Ravi Ahmad Salim Ketua
2. Prof. Dr. Wahyudi Priyono Sekretaris
3. Nama Pembimbing Anggota
4. Nama Penguji 1 Anggota
5. Nama Penguji 2 Anggota
Tanggal Lulus : Tgl/bln/thn*

Mengetahui,

Pembimbing Bagian Sidang Ujian

( Nama dan Gelar Pembimbing ) ( Dr. Edi Sukirman, SSi., MM. )

ii
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 hidayah-Nya kepada kami, sehingga kami dapat menyelesaikan Tugas Mata kuliah
Pemrograman Berorientasi Objek

Tugas Mata Kuliah Pemrograman Beorientasi Objek ini telah kami susun dengan
semaksimal mungkin 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.

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 kami dapat memperbaiki makalah ilmiah
ini.

Akhir kata kami berharap semoga Tugas ini dapat memberikan manfaat maupun inpirasi
terhadap pembaca.

Depok, 5 Oktober 2022

Penyusun

iii
DAFTAR ISI

COVER ........................................................................................................................................... i
KATA PENGANTAR................................................................................................................... ii
DAFTAR ISI................................................................................................................................. iii
BAB I PENDAHULUAN.............................................................................................................. 1
A. Latar Belakang ..................................................................................................................... 1
B. Rumusan Masalah/Pembahasan ........................................................................................... 2
C. Tujuan .................................................................................................................................. 2
BAB II PEMBAHASAN ............................................................................................................... 3
1. Pemrograman Fungsional .................................................................................................... 3
2. Kelebihan dan Kekurangan .................................................................................................. 4
3. Macam – Macam Bahasa Pemrograman yang Mendukung ................................................ 5
4. Konsep Pemograman F# ...................................................................................................... 6
5. Contoh yang Menunjukan Inti Konsep Pemrograman F# ................................................... 6
BAB III PENUTUPAN ............................................................................................................... 10
A. Kesimpulan ......................................................................................................................... 10
B. Daftar Pustaka/Referensi ................................................................................................... 10

iv
BAB I
PENDAHULUAN

A. Latar Belakang
Menurut Codepolitan.com, Pemerograman Fungsional, mereka selalu
menyebutkan kata kunci 'fungsional' yang sering membingungkan. Mereka selalu
menyebutkan fitur yang disuguhkan pemrograman fungsional seperti data yang tidak
berubah, fungsi first-class dan optimisasi tail call. Mereka juga selalu menyebutkan
teknik yang selalu digunakan dalam pemrograman fungsional seperti mapping,
reducing, pipelining, recursing, currying dan fungsi level atas lainnya. Mereka juga
selalu bilang keuntungan pemrograman fungsional seperti parallelization, lazy
evaluation, dan determinism.
Namun jangan sampai terpaku pada istilah tersebut, pemrograman fungsional
mempunyai karakterisitik yang penting yaitu 'The absence of side effects'. Artinya
bahwa pemrograman fungsional tidak bergantung pada data yang diluar fungsi, dan
tidak merubah data yang ada di luar fungsi.
Sebagai contoh perbedaan fungsi yang termasuk ke dalam pemrograman
fungsional dan bukan diimplementasikan dalam bahasa pemrograman Python sebagai
berikut:
Tidak fungsional
a=0
def increment():
global a
a += 1
Fungsional
def increment(a):
return a + 1

1
2

B. Rumusan Masalah/Pembahasan
Dengan memperhatikan latar belakang tersebut, agar dalam penulisan ini saya ke
memperoleh hasil yang diinginkan, maka saya sebagai penyusun mengemukakan beberapa
rumusan masalah. Rumusan masalah itu adalah:
1. Mengdefinisikan Pengertian Pemerograman Fungsional
2. Kelebihan dan Kekurangan Pemrograman Fungsional
3. Macam – Macam Bahasa Pemrograman yang Mendukung
4. Konsep Pemrograman Fungsional di F#
5. Contoh – Contoh yang Menunjukan Inti Konsep F#

C. Tujuan
Tujuan dari penyusunan makalah ini anatara lain:
1. Memahami bahwa pemrograman fungsional menggunakan fungsi atau subprogram yang
bisa digunakan kapan saja bila dibutuhkan.
2. Memahami pengertian pemrograman fungsional
3. Mengetahui tujuan dan kelebihan programan fungsional
4. Mengerti macam – macam Bahasa pemrograman
5. Memahami konsep pemrograman fungsional di F#
6. Mmebuat Konsep inti F#
3

BAB II
PEMBAHASAN

1. Pemrograman Fungsional
A. Pengenalan
Pemrograman fungsional biasanya menggunakan fungsi atau subprogram yang bisa
digunakan kapan saja bila dibutuhkan. Setiap fungsi memiliki algoritma yang dibuat untuk
menyelesaikan suatu permasalahan dan dapat digunakan ulang kapan saja di mana saja jika
dibutuhkan.
Namun kode fungsional (kode program menggunakan paradigma pemograman
fungsional) cenderung lebih ringkas, lebih mudah diprediksi, dan lebih mudah untuk diuji
daripada berorientasi objek - tetapi jika Anda tidak terbiasa dengan itu dan pola yang terkait
dengannya, kode fungsional juga bisa tampak jauh lebih mudah.
Mungkin salah satu hal yang menarik yang lain adalah perbedaan dengan paradigma
pemograman berorientasi objek yaitu menanggap sebuah perangkat lunak terdiri dari
objek-objek terkait dan perilaku objek tersebut. Tentunya masing-masing paradigma
pemograman memiliki kelebihan dan kekurangan masing-masing. Tidak ada satu paradigma
yang jauh lebih hebat dari paradigma yang lain. Tergantung dengan domain masalah dan
kebutuhan yang dihadapi

B. Tujuan Pengenalan Pemrograman Fungsional


Tujuan dibuatnya fungsi atau subprogram tersebut adalah agar memudahkan dalam
pengorganisasian penyelesaian masalah serta meningkatkan efisiensi penulisan program
karena berbagai fungsi tersebut dapat digunakan ulang untuk masalah lain yang memiliki
logic penyelesaian yang sama namun memiliki parameter berbeda.
2. Kelebihan dan Kekurangan
A. Beberapa Kelebihan Pemograman Fungsional:
• Membuat program menjadi lebih modular yang artinya perangkat lunak dapat lebih
mudah untuk ditambah atau dikurangi fiturnya.
• Membantu proses debug menjadi lebih cepat karena dapat ditrack berdasarkan
fungi yang mengalami galat.
• Mengubah masalah kompleks menjadi potongan potongan kecil yang jauh lebih
sederhana untuk diselesaikan.

B. Beberapa Kekurangan Pemograman Fungsional:


• Relatif sulit untuk dipelajari pemula
• Pemeliharaan sulit Ketika digunakan untuk project berskala besar
• Menjaga reusability dari suatu fungsi adalah hal yang tidak mudah untuk dilakukan .

4
5

3. Macam – Macam Bahasa Pemrograman yang Mendukung


A. Macam – Macam Bahasa Pemrograman yang Mendukung:
• PHP
PHP adalah bahasa pemrograman yang berjalan di server, karena itu kita
membutuhkan sebuah web server.

Webserver di windows bisa dibuat dengan berbagai macam cara. Ada yang
menggunakan PHP secara manual dengan web server bawaan PHP; ada yang
menggunakan WSL lalu menginstal LAMPP Stack; ada yang menggunakan XAMPP;
ada yang menggunakan Docker, dan lain sebgainya.
• JavaScript
JavaScript adalah bahasa pemrograman yang banyak digunakan dalam
pengembangan website, aplikasi, dan game.

Dengan menguasai bahasa pemrograman ini, Anda bisa membuat tampilan website
yang menarik atau mengembangkan game online berbasis web yang populer.
• Ruby
Ruby adalah bahasa pemrograman berbasis skrip yang berorientasi pada objek. Ruby
bersifat open source, biasanya digunakan untuk membangun dan mengembangkan
aplikasi web yang sederhana dan cepat.
• Pascal
Pascal adalah salah satu bahasa pemrograman komputer yang sering dipakai untuk
belajar algoritma dan pemrograman bagi pemula terutama di bidang akademis.

Saat ini pascal juga masih menjadi bahasa pemrograman standar untuk lomba
Olimpiade Sains Nasional (OSN) bidang komputer. Selain itu, mayoritas jurusan
komputer di Indonesia juga menggunakan bahasa Pascal di tahun pertama bangku
kuliah.
• C/C++
C++ adalah bahasa pemrograman komputer yang dibuat oleh Bjarne Stroustrup,
yang merupakan perkembangan dari bahasa C dikembangkan di Bell Labs (Dennis
Ritchie). Pada awal tahun 1970-an, bahasa itu merupakan peningkatan dari bahasa
sebelumnya, yaitu B.

Pada awalnya, bahasa tersebut dirancang sebagai bahasa pemrograman yang


dijalankan pada sistem Unix. Pada perkembangannya, versi ANSI (American National
Standards Institute) pada bahasa pemrograman C menjadi versi dominan, meskipun
versi tersebut sekarang jarang dipakai dalam pengembangan sistem dan jaringan
maupun untuk sistem embedded.
6

4. Konsep Pemograman F#
A. Pengantar Konsep Pemrograman Fungsional di F#
Pemrograman fungsional adalah gaya pemrograman yang menekankan penggunaan
fungsi dan data yang tidak dapat diubah. Pemrograman fungsional yang diketik adalah
ketika pemrograman fungsional dikombinasikan dengan jenis statis, seperti dengan F#.
Secara umum, konsep berikut ditekankan dalam pemrograman fungsional:

• Fungsi sebagai konstruksi utama yang Anda gunakan


• Ekspresi, bukan pernyataan
• Nilai yang tidak dapat diubah daripada variabel
• Pemrograman deklaratif daripada pemrograman imperatif

5. Contoh yang Menunjukan Inti Konsep Pemrograman F#


A. Fungsi
Konstruksi yang paling umum dan mendasar dalam pemrograman fungsional adalah
fungsi. Berikut adalah fungsi sederhana yang menambahkan 1 ke bilangan bulat:

• F#
let addOne x = x + 1
Jenis tanda tangannya adalah sebagai berikut:

• F#
val addOne: x:int -> int
Tanda tangan dapat dibaca sebagai, "addOne menerima int bernama x dan akan
menghasilkan int". Secara lebih formal, addOne memetakan nilai dari set bilangan bulat ke
kumpulan bilangan bulat. Token -> menandakan pemetaan ini. Di F#, Anda biasanya dapat
melihat tanda tangan fungsi untuk memahami kegunaannya.
Jadi, mengapa tanda tangan itu penting? Dalam pemrograman fungsional yang diketik,
implementasi fungsi sering kali kurang penting daripada tanda tangan jenis aktual! Fakta
bahwa addOne menambahkan nilai 1 ke bilangan bulat menarik pada durasi, tetapi ketika Anda
membangun program, fakta bahwa hal itu menerima dan mengembalikan int adalah apa yang
menginformasikan bagaimana Anda akan benar-benar menggunakan fungsi ini. Selain itu,
setelah Anda menggunakan fungsi ini dengan benar (sehubungan dengan jenis tanda
tangannya), mendiagnosis masalah apa pun dapat dilakukan hanya di dalam isi fungsi addOne.
Ini adalah pendorong di balik pemrograman fungsional yang diketik.
B. Expressions
Ekspresi adalah konstruksi yang mengevaluasi nilai. Berbeda dengan pernyataan, yang
melakukan tindakan, ekspresi dapat dianggap melakukan tindakan yang memberikan kembali
nilai. Ekspresi hampir selalu digunakan dalam pemrograman fungsional dari pada pernyataan.
Pertimbangkan fungsi sebelumnya, addOne. Isi dari addOne ekspresi adalah:
• F#
// 'x + 1' is an expression!
let addOne x = x + 1
Ini adalah hasil dari ekspresi ini yang menentukan jenis hasil dari fungsiaddOne.
Misalnya, ekspresi yang membentuk fungsi ini dapat diubah menjadi jenis yang berbeda,
seperti string:

• F#
let addOne x = x.ToString() + "1"
Tanda tangan fungsinya sekarang:

• F#
val addOne: x:'a -> string
Karena semua jenis dalam F# dapat memiliki ToString() yang dipanggil, jenis x telah
dibuat generik (disebut Generalisasi Otomatis), dan jenis yang dihasilkan
adalah string.
Ekspresi bukan hanya isi fungsi. Anda dapat memiliki ekspresi yang menghasilkan nilai
yang Anda gunakan di tempat lain. Ekspresi yang umum adalah if:

• F#
// Checks if 'x' is odd by using the mod operator
let isOdd x = x % 2 <> 0
let addOneIfOdd input =
let result =
if isOdd input then
input + 1
else
input

result

7
C. Fungsi Pure
Seperti disebutkan sebelumnya, fungsi pure adalah fungsi yang:

• Selalu evaluasi ke nilai yang sama untuk input yang sama.


• Tidak memiliki efek samping.
Sangat membantu untuk memikirkan fungsi matematika dalam konteks ini. Dalam
matematika, fungsi hanya bergantung pada argumennya dan tidak memiliki efek samping.
Dalam fungsi matematika f(x) = x + 1, nilai f(x) hanya bergantung pada nilai x. Fungsi pure dalam
pemrograman fungsional adalah cara yang sama.

Saat menulis fungsi pure, fungsi harus hanya bergantung pada argumennya dan tidak
melakukan tindakan apa pun yang menghasilkan efek samping.
Berikut adalah contoh fungsi non-pure karena tergantung pada status global yang
dapat diubah:

• F#
let mutable value = 1
let addOneToValue x = x + value
Fungsi addOneToValue ini jelas tidak pure, karena value dapat diubah kapan saja
untuk memiliki nilai yang berbeda dari 1. Pola ketergantungan pada nilai global ini
harus dihindari dalam pemrograman fungsional.
Berikut adalah contoh lain dari fungsi yang tidak pure, karena melakukan efek samping:

• F#
let addOneToValue x =
printfn $"x is %d{x}"
x+1
Meskipun fungsi ini tidak bergantung pada nilai global, fungsi ini menulis nilai x ke
output program. Meskipun tidak ada yang salah secara inheren dengan melakukan
ini, ini berarti bahwa fungsinya tidak pure. Jika bagian lain dari program Anda
bergantung pada sesuatu di luar program, seperti buffer output, maka memanggil
fungsi ini dapat memengaruhi bagian lain itu dari program Anda.

8
D. Ketetapan
Terakhir, salah satu konsep paling mendasar dari pemrograman fungsional yang diketik
adalah ketetapan. Dalam F#, semua nilai tidak dapat diubah secara default. Artinya nilai ini
tidak dapat dimutasi di tempat kecuali Anda secara eksplisit menandainya sebagai dapat
diubah.
Dalam praktiknya, bekerja dengan nilai yang tidak dapat diubah berarti Anda
mengubah pendekatan Anda untuk pemrograman dari, "Saya perlu mengubah sesuatu",
menjadi "Saya perlu menghasilkan nilai baru".
Misalnya, menambahkan 1 ke nilai berarti menghasilkan nilai baru, bukan memutasi
yang sudah ada:

• F#
let value = 1
let secondValue = value + 1
Dalam F#, kode berikut tidak memutasi fungsi value; sebaliknya, kode ini melakukan
pemeriksaan kesetaraan:

• F#
let value = 1
value = value + 1 // Produces a 'bool' value!

Beberapa bahasa pemrograman fungsional tidak mendukung mutasi sama sekali.


Dalam F#, ini didukung, tetapi bukan perilaku default untuk nilai.
Konsep ini meluas lebih jauh ke struktur data. Dalam pemrograman fungsional, struktur
data yang tidak dapat diubah seperti set (dan banyak lagi) memiliki implementasi yang berbeda
dari yang mungkin Anda harapkan. Secara konseptual, sesuatu seperti menambahkan item ke
set tidak mengubah set, item menghasilkan set baru dengan nilai tambahan. Secara rahasia, ini
sering dicapai dengan struktur data yang berbeda yang memungkinkan pelacakan nilai secara
efisien sehingga representasi data yang sesuai dapat diberikan sebagai hasilnya.
Gaya bekerja dengan nilai dan struktur data ini sangat penting, karena memaksa Anda
untuk memperlakukan operasi apa pun yang memodifikasi sesuatu seperti membuat versi batu
dari hal itu. Ini memungkinkan hal-hal seperti kesetaraan dan perbandingan menjadi konsisten
dalam program Anda.

9
BAB III
PENUTUPAN

A. Kesimpulan

Functional programming juga bertujuan untuk mempermudah kita memahami sebuah


kode. Ide dibalik FP adalah menambahkan dan mengurangi hal tertentu untuk membuat kode
kita sedikit lebih mudah dipahami. Dengan functional programming seperti higher-order
function, function types, extension functions, lambda, dll.
Seri Berpikir Secrara Fungsional adalah sumber daya bagus lainnya untuk mempelajari
tentang pemrograman fungsional dengan F#. Ini mencakup dasar-dasar pemrograman
fungsional dengan cara pragmatis dan mudah dibaca, menggunakan fitur F# untuk
mengilustrasikan konsep.

B. Daftar Pustaka/Referensi

Permana, Y. (2016, May 11). Mengenal Pemrograman Fungsional. Fungsional itu apa sih.

Thabroni, G. (2022, Februari 27). Paradigma Pemrograman (OOP, Fungsional, Deklaratif, dsb).
Pemrograman Fungsional.

PENGERTIAN FUNGSIONAL PROGRAMMING. (2022). Diakses 5 October 2022, dari


https://www.ceritauangyuk.com/2022/07/pengertian-fungsional-programming.html

Phillip Carter, G. W. (2022, September 22). Tutorial Pengantar Konsep Pemrograman Fungsional
di F#. Pengantar Konsep Pemrograman Fungsional di F#.

10

Anda mungkin juga menyukai