Bahasa Pemrograman Fungsional F

advertisement
Bahasa Pemrograman Fungsional F#
Oleh:
Yabert Yanuar Santoso
NIM : 612005023
Skripsi
Untuk melengkapi syarat-syarat memperoleh
Ijasah Sarjana Teknik Elektro
FAKULTAS TEKNIK PROGRAM STUDI TEKNIK ELEKTRO
UNIVERSITAS KRISTEN SATYA WACANA
SALATIGA
2011
Bahasa Pemrograman Fungsional F#
Oleh:
Yabert Yanuar Santoso
NIM : 612005023
Skripsi ini telah diterima dan disahkan
Sebagai salah satu persyaratan guna mencapai
SARJANA TEKNIK ELEKTRO
dalam
Konsentrasi Teknik Elektronika
FAKULTAS TEKNIK PROGRAM STUDI TEKNIK ELEKTRO
UNIVERSITAS KRISTEN SATYA WACANA
SALATIGA
Disahkan oleh :
Pembimbing I
Pembimbing II
Handoko, M. Eng
Hartanto K. Wardana, S.T, M.T
Tgl : …………………
Tgl : …………………
INTISARI
Skripsi ini bertujuan menghasilkan pedoman pembelajaran yang dapat
digunakan untuk mempelajari bahasa pemrograman fungsional F#. Selain itu juga
dibuat pedoman untuk praktikum Artificial Intelligence (AI) sebagai contoh penerapan
algoritma AI dengan menggunakan bahasa pemrograman F# (Pada saat skripsi ini
dibuat, tidak terdapat buku maupun bahan pembelajaran mengenai bahasa pemrograman
fungsional F# yang berbahasa Indonesia.)
Pedoman praktikum pembelajaran F# terdiri dari delapan topik dan untuk
praktikum AI dibuat enam topik. Untuk pedoman pembelajaran F#, masing-masing
topik saling terkait dan terdiri dari tujuan, dasar teori, contoh dan tugas. Tujuan, dasar
teori, dan contoh digunakan untuk menjelaskan hasil yang hendak dicapai oleh
mahasiswa, membantu memahami dasar materi dan membantu dalam pengerjaan tugas
yang diberikan.. Tugas diberikan untuk membantu dalam me-review pengetahuan yang
sudah didapat dalam mempelajari pedoman dengan cara praktek.
Pengujian dilakukan secara tatap muka dan secara online (lewat internet).
Pengujian untuk peserta dengan tatap muka dilakukan untuk delapan topik pedoman
pembelajaran F#, sementara untuk pengujian untuk peserta secara online hanya dua
topik saja (terkait masalah waktu dari peserta). Dari analisis kuisioner dengan
menggunakan metode chi-square didapatkan nilai χ2 (nilai chi-square) dimana χ2 tabel <
χ2 hitung yaitu 21,02 < 115,93 sehingga Ha (pernyataan bahwa responden puas)
diterima yang artinya responden merasa puas terhadap kualitas pedoman. Dari hasil
pengujian peserta praktikum, baik peserta dengan pengajaran tatap muka atau peserta
dengan sistem pengajaran online, didapat hasil 85,57 dan 90.
i
KATA PENGANTAR
Segala puji dan syukur penulis berikan kepada Tuhan Yesus yang telah
memberikan anugrah-NYA dalam menyelesaikan skripsi ini sebagai syarat kelulusan
dari Fakultas Teknik Elektro dan Komputer Universitas Kristen Satya Wacana Salatiga.
Penyusunan skripsi ini diharapkan dapat berguna bagi siapa saja yang ingin
mempelajari bahasa pemrograman F# maupun yang ingin mengembangkan skripsi ini.
Dalam menulis skripsi ini, penulis mendapatkan bantuan dan bimbingan dari
berbagai macam pihak. Karena itu penulis mengucapkan terima kasih kepada :
1. Tuhan Yesus Kristus atas hikmat dan pertolongan-NYA sehingga penulis
mampu menyelesaikan skripsi ini
2. Keluarga, yang secara tidak langsung telah memberikan dorongan untuk segera
menyelesaikan skripsi ini
3. Bapak Handoko M.Eng yang telah memberi topik ini dan membimbing baik
dalam penulisan, memberi ide-ide untuk pengujian dan penulisan dan
memberikan dorongan moral bagi penulis untuk segera menyelesaikan skripsi ini
4. Bapak Hartanto Kusuma Wardana M.T yang telah membimbing baik dalam
penulisan, memberikan pemahaman kepada penulis mengenai Artificial
Intelligence dan memberikan dorongan moral bagi penulis untuk mampu
menyelesaikan skripsi ini.
5. Teman-teman peserta pengujian tatap muka : Albert, Samuel, Luis, Michael,
Boby, Black, Patria, Wawan, BH, Widji, Roby, Yansen dan Arif yang sudah
mau meluangkan waktunya dibalik kesibukan masing-masing untuk hadir di lab
dan mengikuti pembelajaran F#
ii
iii
6. Tjiong bersaudara yang sudah membantu dan memberi masukan dalam membuat
pedoman sekaligus salah satu peserta pengujian online
7. Bapak Darmawan Utomo M.Eng yang sudah mengijinkan penulis untuk
meminjam penulisan milik Stefanus Hermawan Susanto untuk menjadi bahan
referensi penulisan skripsi ini
8. Stefanus Hermawan Susanto yang sudah memberi banyak masukan dan
menceritakan pengalamannya pada penulis
9. Patria dan Samuel yang sudah meminjamkan printernya untuk mencetak
prototipe dan bahan referensi untuk skripsi ini. Thanks brothers! 
10. Michael A.S, yang sudah sangat membantu dalam menyelesaikan AI . Tx
berat!
11. Om sentral yang sudah membantu mem-fotokopi prototipe skripsi ini dengan
cepat sehingga lebih hemat dan tidak merepotkan Patria 
12. Teman-teman Living Soul yang membuat penulis dapat melepas stress dalam
mengerjakan skripsi ini sekaligus menambah pekerjaan selain skripsi 
13. Semua pihak yang berperan dalam kesuksesan skripsi ini yang tidak dapat
disebutkan namanya satu per satu.
Skripsi ini tentunya masih jauh dari sempurna, maka segala kritik dan saran
terhadap skripsi ini akan sangat berharga demi pencapaian yang lebih baik di masa
mendatang. Akhir kata, semoga skripsi ini dapat bermanfaat bagi pembaca.
Salatiga, November 2011
Penulis
Yabert Yanuar Santoso
DAFTAR ISI
Halaman
INTISARI
..............................................................................................
KATA PENGANTAR
i
.....................................................................
ii
DAFTAR ISI .............................................................................................
iv
DAFTAR GAMBAR ................................................................................
viii
DAFTAR TABEL
ix
BAB I
................................................................................
PENDAHULUAN
1.1
Tujuan ...............................................................................
1
1.2
Latar Belakang Masalah
...........................................
1
1.3
Batasan Masalah
.......................................................
3
1.4
Sistematika Penulisan .......................................................
4
BAB II
DASAR TEORI
2.1
Bahasa Pemrograman Fungsional
2.2
Sejarah F#
2.3
Konsep Utama pada Bahasa Pemrograman Fungsional yang Ada Pada F#
2.4
..............................
5
.................................................................
6
2.3.1
Bekerja dengan nilai yang tidak termutasi
...
2.3.2
Bekerja dengan struktur data yang tidak dapat termutasi
2.3.3
λ – Calculus
....................................................
7
9
10
Struktur Bahasa F#
2.4.1
Mengaktifkan lightweight syntax
................
13
2.4.2
Mengenal scope dan menggunakan let .............
14
2.4.3
Menulis komentar
15
...............
iv
v
2.5
2.4.4
F# Interactive ......................................................
16
2.4.5
Mengenal type pada F#
16
2.4.6
Menggunakan Visual Studio 2010 untuk membuat kode F# 17
Pengolahan dan Analisis Data
2.5.1
BAB III
..............................
Pengumpulan Data
............................................
21
a. Uji Validitas
...........................................
22
b. Uji Reliabilitas
...........................................
22
2.5.2
Editing Data .......................................................
23
2.5.3
Koding Data ......................................................
23
2.5.4
Pengolahan Data
..........................................
23
2.5.5
Analisa dan Interpretasi Data ..............................
24
PERANCANGAN MODUL PRAKTIKUM
3.1
Perancangan modul praktikum
.............................
3.2
Pembahasan modul praktikum F# dasar
26
................
27
............................
27
3.2.1
Topik 1 – Pengenalan F#
3.2.2
Topik 2 – Struktur Data pada F#, Pattern Matching dan Rekursi
...........................................................................
27
3.2.3 Topik 3 – Record, Discriminated Union dan Pemrograman
Imperatif F#
3.3
....................................................
28
3.2.4
Topik 4 – Memproses Data
3.2.5
Topik 5 – Pemrograman Berorientasi Objek ..
30
3.2.6
Topik 6 – Pemrograman .NET pada F#
30
3.2.7
Topik 7 – Pengolahan Database SQL Server dengan F#
31
3.2.8
Topik 8 – Parallel Programming
...............
31
...........................
32
Pembahasan modul praktikum AI
............................
..
29
vi
BAB IV
3.3.1
Topik 1 – Breadth First Search
...................
32
3.3.2
Topik 2 – Depth First Search
...................
32
3.3.3
Topik 3 – Greedy-Best First Search ...................
32
3.3.4
Topik 4 – Hill Climbing Search
...................
33
3.3.5
Topik 5 – The Wumpus World
..................
33
3.3.6
Topik 6 – Dynamic Programming
..................
33
PENGUJIAN PEDOMAN
4.1
Pelaksanaan Praktikum
.........................................
34
4.2
Pengujian kepada mahasiswa .........................................
35
4.3
Pengujian Validitas dan Reliabilitas .............................
37
4.4
Uji Hipotesis .................................................................
41
4.5
Analisa Hasil Penilaian
43
BAB V
.........................................
KESIMPULAN DAN SARAN
5.1
Kesimpulan
................................................................
44
5.2
Saran Pengembangan ....................................................
45
DAFTAR PUSTAKA
...............................................................
LAMPIRAN A. PEDOMAN F# 1 : PENGENALAN F#
................
LAMPIRAN B. PEDOMAN F# 2 : STRUKTUR DATA PADA F#, PATTERN
MATCHING DAN REKURSI
...........................
46
48
60
LAMPIRAN C. PEDOMAN F# 3 : RECORD, DISCRIMINATED UNION DAN
PEMROGRAMAN IMPERATIF F#
...............
71
LAMPIRAN D. PEDOMAN F# 4 : MEMPROSES DATA ...............
80
LAMPIRAN E. PEDOMAN F# 5 : PEMROGRAMAN BERORIENTASI OBJEK
DENGAN F#
..................................................
98
LAMPIRAN F. PEDOMAN F# 6 : PEMROGRAMAN .NET PADA F#
109
LAMPIRAN G. PEDOMAN F# 7 : PEMROGRAMAN DATABASE SQL SERVER
DENGAN F#
..................................................
116
vii
LAMPIRAN H. PEDOMAN F# 8 : PARALLEL PROGRAMMING ...
131
LAMPIRAN I. PEDOMAN AI 1 : BREADTH FIRST SEARCH
.......
156
LAMPIRAN J. PEDOMAN AI 2 : DEPTH FIRST SEARCH
.......
161
LAMPIRAN K. PEDOMAN AI 3 : GREEDY BEST-FIRST SEARCH
165
LAMPIRAN L. PEDOMAN AI 4 : HILL CLIMBING SEARCH
.......
169
LAMPIRAN M. PEDOMAN AI 5 : THE WUMPUS WORLD
.......
173
LAMPIRAN N. PEDOMAN AI 6 : DYNAMIC PROGRAMMING .......
201
LAMPIRAN O. HASIL PENILAIAN
..........................................
205
LAMPIRAN P. TABEL STATISTIK
..........................................
206
LAMPIRAN Q. TUNTUNAN RINGKAS BAHASA F# .....................
208
DAFTAR GAMBAR
Halaman
Gambar 2.1.
Tampilan awal Visual Studio 2010
.........................................
18
Gambar 2.2.
Tampilan layar create new project
.........................................
18
Gambar 2.3.
Tampilan lembar kerja Visual Studio 2010 ............................
19
Gambar 2.4.
Gambar solution explorer
20
Gambar 2.5.
Gambar jendela pemilihan library
Gambar 2.6.
Gambar alur kerja pengumpulan data sampai kepada interpretasi data
...................................................
........................................
20
...................................................................................................
21
Gambar 4.1.
Pelaksanaan praktikum di ruang BS-10
...........................
34
Gambar 4.2
Pelaksanaan praktikum di tempat tinggal praktikan ..............
35
viii
DAFTAR TABEL
Halaman
Tabel 2.1.
Tabel Tipe dalam F# ........................................................
17
Tabel 4.1.
Pernyataan kuisioner ........................................................
36
Tabel 4.2.
Perhitungan korelasi product moment
37
Tabel 4.3.
Perhitungan korelasi product moment item no. 2
Tabel 4.4.
....................
.......
38
Total nilai skor ganjil dan genap
..............................
40
Tabel 4.5.
Tingkat kesetujuan responden
...............................
41
Tabel 4.6.
Test Chi-Square
.......................................................
42
Tabel 4.7.
Nilai rata-rata pezserta praktikum
ix
...............................
43
Download