KONSEP DASAR PEMOGRAMAN

1. KONSEP DASAR PEMOGRAMAN

PROGRAM : Himpunan atau kumpulan instruksi tertulis yang
dibuat oleh programer dari suatu software.

PEMROGRAMAN : Kumpulan urutan perintah ke komputer untuk
mengerjakan sesuatu, menggunakan bahasa yang
dimengerti oleh komputer atau dikenal dengan
bahasa pemrograman.

Data

Merupakan bahan mentah yang akan diolah menjadi suatu informasi.

1. Tipe Data Dasar, adalah tipe data primitif tidak terstruktur dan didefinisikan oleh bahasa pemrograman. Tipe data dasar dibagi lima :

1.     Tipe Data Numerik          : data berupa angka

2.     Enumerasi                           : urutan list dari nilai-nilai berbeda

3.     Boolean                               : merepresentasikan True atau False

4.     Character                            : karakter yang ditulis diantara tanda petik tunggal atau ganda

5.     String                                    : urutan karakter yang terletak diantara tanda petik tunggal atau ganda

6.     Internationalization        : disebut I18N

2. Tipe Data Terstruktur, merupakan data campuran dari berbagai tipe data dasar.

3. Tipe Data Didefinisikan oleh pemakai, biasa disebut Enumerasi

4. Tipe Data Penunjuk, contohnya pointer

Model Komputasi

Terdapat tiga model dasar yaitu :

1.     Model Fungsional

Terdiri dari nilai, fungsi, dan operasi aplikasi fungsi serta komposisi fungsi. Fungsi dapat mengambil fungsi lain menjadi argumentasi ataupun mengembalikan sebagai hasil (higher-order function).

1.     Model Logika

Terdiri dari  nilai, definisi hubungan dan kesimpulan logis. Program terdiri dari definisi hubungan dan komputasi adalah suatu bukti (urutan kesimpulan).

1.     Model Imperatif

Terdiri dari nilai, mencakup keadaan dan operasi tugas untuk memodifikasi pernyataan. Program terdiri dari urutan tugas dan suatu komputasi terdiri dari urutan pernyataan.

PRINSIP BAHASA PEMROGRAMAN

Dalam kehidupan sehari–hari, untuk berkomunikasi dengan orang lain, kita harus menggunakan bahasa yang sama dengan orang tersebut. Apabila kita menggunakan Bahasa Indonesia, lawan bicara kita harus mengerti Bahasa Indonesia. Kalau lawan bicara kita tidak mengerti Bahasa Indonesia, kita masih bisa berkomunikasi dengannya melalui penerjemah.

Dalam pemograman komputer, berlaku juga hal seperti di atas. Kita harus menggunakan bahasa yang dimengerti oleh komputer untuk memberikan suatu instruksi. Pada dasarnya, komputer adalah mesin digital, artinya komputer hanya mengenal kondisi ada arus listrik (biasanya dilambangkan dengan 1) dan tidak ada arus listrik (dilambangkan dengan 0).

Dengan kata lain kita harus menggunakan sandi 0 dan 1 untuk melakukan pemrograman komputer. Bahasa pemrograman yang menggunakan sandi 0 dan 1 ini disebut bahasa mesin (assembly). Sebagai contoh, dalam prosesor Intel, terdapat perintah 0011 1010 0000 1011. Perintah dalam bahasa mesin ini sama artinya dengan perintah assembly CMP AL, 0D, yang
artinya bandingkan nilai register AL dengan 0D. CMP di sini sebenarnya adalah singkatan dari CoMPare. Untuk membantu manusia dalam mengkonversi bahasa mesin diperlukan perangkat lunak yang disebut assembler.

Pemrograman dengan bahasa assembly masih terasa sulit bagi kebanyakan orang sehingga dikembangkan bahasa pemrograman yang lebih mudah digunakan. Bahasa pemrograman yang dikembangkan ini lebih condong ke bahasa manusia dan disebut bahasa generasi ketiga / 3GL (Third-Generation Language) atau juga dikenal dengan bahasa tingkat tinggi/ HLL (High-Level Language). Sebagai contoh Basic, Pascal, C, C++, Cobol, dsb. Bahasa generasi ketiga menggunakan kata-kata dalam bahasa Inggris karena bahasa tersebut adalah bahasa internasional, misal ;

Pascal:
writeln (‘Algoritma’);

Atau perintah dalam bahasa C:
printf (“Algoritma\n\r”):

Atau perintah dalambahasa C++:
cout << “Algoritma” << endl;

Ketiga pernyataan di atas bertujuan sama yaitu menuliskan teks ‘algoritma’ ke keluaran standar
(Standard Output), ke layar monitor. Ketiga perintah sederhana di atas sebenarnya terdiri dari puluhan atau bahkan ratusan pernyataan assembly. Perangkat lunak yang menerjemahkan program dalam bahasa manusiawi ke dalam bahasa assembly atau mesin ada dua macam, yaitu interpreter dan kompiler. Interpreter menerjemahkan program baris perbaris artinya jika suatu baris akan diekskusi maka baris tersebut diterjemahkan terlebih dahulu ke bahasa mesin. Apabila baris berikutnya akan diekskusi maka baris tersebut baru diterjemahkan kedalam bahasa mesin. Contoh bahasa pemograman yang menggunakan interpreter adalah basic.

Kompiler menerjemahkan semua perintah ke dalam bahasa mesin kemudian menjalankan hasil
penerjemahan. Hasil penerjemahan ini bisa disimpan dalam file atau memori. Contoh bahasa pemrograman yang menggunakan kompiler adalah Pascal, C, dan C++. Khusus untuk Pascal, ada beberapa kompiler tetapi jumlahnya sedikit. Misalnya Turbo Pascal (http://www.inprice.com), GNU Pascal (http://didaktik.physik.uni-essen.de/~gnupascal/home.html), Free Pascal
(http://www.freepascal.sk) , dsb. Kompiler Pascal yang banyak digunakan adalah Turbo Pascal, sehingga pada modul ini juga digunakan Turbo Pascal sebagai acuannya.

Perkembangan bahasa pemrograman setelah bahasa generasi ketiga adalah bahasa generasi keempat atau yang disingkat 4GL (fourth-generation language). Bahasa ini banyak digunakan sebagai aplikasi basis data (database), salah satu contohnya adalah SQL (Structured Query Language). Pada bahasa ini, perintah-perintah yang digunakan lebih manusiawi, misalnya “SELECT Nama,Nilai FROM Mahasiswa”, untuk mengambil data Nama dan Nilai dari basis data Mahasiswa.

Langkah-langkah dalam Pemrograman Komputer

Dalam pemrograman komputer, diperlukan beberapa langkah dan langkah-langkah yang disajikan pada modul ini tidak bersifat mutlak. Artinya Anda tidak harus melakukan dari langkah pertama, kedua, ketiga, dst. Ada beberapa langkah yang harus atau mungkin
diulang sampai beberapa kali. Berikut ini contoh beberapa langkah yang harus dilakukan dalam
pemrograman komputer:

1. Mendefinisikan Masalah.
Mendefinisikan masalah dengan menentukan masalahnya seperti apa, kemudian apa saja yang
harus dipecahkan dengan komputer, yang terakhir adalah apa masukannya dan bagaimana keluarannya.

2. Menentukan Solusi.
Setelah masalah didefinisikan dengan jelas, masukan yang diberikan sudah jelas, keluaran yang
diinginkan sudah jelas, maka langkah selanjutnya adalah mencari jalan penyelesaian masalah. Jika permasalahan terlalu kompleks, biasanya kita harus membaginya ke dalam beberapa modul kecil agar lebih mudah diselesaikan. Sebagai contoh, program untuk menghitung invers matriks, dapat dibagi menjadi beberapa modul kecil. Modul pertama adalah meminta masukan dari pengguna berupa matriks bujur sangkar. Modul kedua adalah mencari invers matriks yang dimasukkan pengguna. Modul terakhir adalah menampilkan hasilnya pada pengguna.

3. Memilih Algoritma.
Langkah ini merupakan salah satu langkah yang penting dalam pemrograman komputer karena pemilihan algoritma yang salah akan menyebabkan program memiliki unjuk kerja yang kurang baik.

4. Menulis Program.
Pada langkah ini dimulai penulisan program komputer untuk memecahkan masalah yang diberikan. Untuk menulis program dapat digunakan salah satu bahasa generasi ketiga. Ada beberapa hal yang harus diperhitungkan sebelum memilih bahasa pemrograman, antara lain masalah yang dihadapi, bahasa pemrograman yang Anda kuasai, dsb.

5. Menguji Program.
Setelah program selesai ditulis dilakukan pengujian. Pengujian pertama adalah; Apakah
program berhasil dikompilasi dengan baik? Pengujian berikutnya; Apakah program dapat
menampilkan keluaran yang diinginkan? Lebih jauh lagi program harus diuji dengan banyak kasus. Sering terjadi, suatu program berjalan baik untuk kasus A, B, C; tetapi menghasilkan sesuatu yang tidak diinginkan untuk kasus X,Y, dan Z. Langkah ini bisa dilakukan berulang-ulang sampai program diyakini benar-benar berjalan sesuai dengan yang diharapkan.

6. Menulis Dokumentasi.
Merupakan hal sepele yang sering dilupakan, karena tidak ada fungsinya pada saat pembuatan program, namun pada masa mendatang akan sangat diperlukan, apalagi bagi orang lain yang mempelajari program kita. Dokumentasi ada dua, yaitu di atas kertas dan menjadi satu dalam program (komentar pendek yang menerangkan fungsi perintah-perintah yang ada dalam program tersebut.

7. Merawat program
Setelah program selesai dan digunakan oleh user, maka sering kali muncul bug / kesalahan yang
sebelumnya tidak terdeteksi, atau juga user ingin menambahkan fasilitas baru, sehingga program harus direvisi.

FUNCTIONAL PROGRAMING

LATAR BELAKANG.
Bahasa pemrograman merupakan implementasi dari algoritma yang dibuat oleh pemrogram dalam memberikan perintah kepada komputer untuk menyelesaikan masalah tertentu. Sampai saat ini banyak bahasa program yang dikembangkan seiring dengan kebutuhan akan kemudahan dalam pemrograman.
Pada kesempatan ini akan dibahas paradigma pemrograman fungsional. Paradigma fungsional memandang penyelesaian masalah sebagai komposisi dan aplikasi fungsi yang memetakan masalah ke jawaban
Paradigma fungsional tidak lagi mempermasalahkan memorisasi dan struktur data, tidak ada pemilahan anatara data dan program, tidak ada lagi pengertian tentang variable. Jadi dalam paradigma fungsional dasar pemecahan permasalahan adalah transformasi. Contoh kasus adalah dalam permainan menyebrangkan kanibal dan misionaris.

 

PARADIGMA PEMROGRAMAN FUNGSIONAL
Berlainan sekali dengan paradigma prosedural, program fungsional harus diolah lebih dari program prosedural (oleh pemroses bahasanya), karena itu salah satu keberatan adalah kinerja dan efisiensinya. Karena itu, dalam bahasa pemrograman fungsional, program adalah fungsi hasil komposisi dari fungsi-fungsi lain, apakah fungsi itu dasar atau hasil komposisi dari fungsi dasar. Bahasa pemrograman fungsional memperoleh hasil dengan cara mengaplikasikan fungsi terhadap argumen atau parameternya,yang juga dapat berupa fungsi.
Bahasa pemrograman fungsional menonjol dalam kemampuan struktur datanya. Karena bahasa ini tidak dibatasi oleh variabel yang berasosiasi dengan lokasi memori, maka sebuah struktur data cukup ditangani sebagai sebuah nilai.
1. Jenis pradigma fungsional
Paradigma fungsional memiliki banyak macam bahasa pemrograman, antara lain: Haskell, Lisp. Haskell merupakan paradigma fungsional yang malas dan murni. Hal ini disebabkan karena dalam haskell tidak mengevaluasi ekspresi-ekspresi yang digunakannya yang sebenarnya memang tidak diperlukan untuk menentukan jawaban bagi suatu masalah. Selain itu bahasa ini tidak memperbolehkan adanya efek samping (Efek samping adalah sesuatuyang mempengaruhi bagian di program. Misalnya suatu fungsi yang mencetak sesuatu ke layar yang mempengaruhi nilai dari variabel global. Tentu saja, suatu bahasa pemrograman yang tanpa efek samping akan menjadi sangat tidak berguna; Haskell menggunakan sebuah system monads untuk mengisolasi semua komputasi kotor dari program dan menampilkannya dengan cara yang aman.
Lisp adalah bahasa ekspresi, karena baik program maupun data dinyatakan sebagai ekspresi. Selain itu Lisp juga lebih mengarah dalam pemanfaatan artificial intelligence .
Bahasa pemrograman Haskell merupakan bahasa pemrograman yang sangat sederhana dan mudah dipelajari. Hal ini tidak lain disebabkan karena Haskell merupakan bahasa pemrograman fungsional murni. Oleh karena itu Haskell dapat:
1. Meningkatkan produktifitas programmer (Ericsson banyak memanfaatkan hasil percobaan Haskell dalam software telephony)
2. Lebih singkat, lebih jelas dan kode-kodenya mudah dibaca
3. Errornya semakin sedikit dan reabilitynya lebih tinggi
4. Membuat jarak antara programmer dengan bahasa itu lebih pendek
5. Waktu untuk membuat program menjadi lebih singkat
Selain itu, dalam Haskell tidak ada varibel yang berubah, tidak ada efek samping dari penggunaan sebuah fungsi, tidak ada perulangan, dan tidak ada program order.
Lisp telah tersebar luas dan merupakan salah satu bahasa pilihan untuk aplikasi seperti
artificial intelligence.Bahasa fungsional pada umumnya, dan LISP pada khususnya, memainkan perananpenting dalam definisi bahasa. Sebuah definisi bahasa harus ditulis ke dalam notasinotasi,
disebut meta-bahasa(meta-language) atau bahasa yang didefinisikan (defininglanguage), dan bahasa yang didefinisikan cenderung menjadi fungsional. Dalam kenyataannya, implementasi LISP pertama dimulai, ketika LISP digunakan untuk
mendefinisikan dirinya sendiri.

2. Keuntungan dari paradigma fungsional
– Singkat
Karena program cenderung lebih ringkas dibandingkan program terstruktur.
– Mudah dimengerti
Program fungsional seringkali lebih mudah untuk dimengerti, contohnya quicksort, tidak terlalu diperlukan pengetahuan mengenai quicksort.
– Tidak ada tumpukan memori
Tidak ada kemungkinan memperlakukan integer sebagai pointer, atau dilanjutkan dengan pointer null.
– 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 dialokasikandan diinisialisaikan secara implisit, dan diselamatkan secara otomatis oleh kolektor sampah.

3. Operator
Dalam paradigma fungsional, operator yang berlaku masih sama dengan paradigma procedural. Berikut adalah jenis operator yang berlaku;
a. aritmatika (+,-,/,*)
b. logika (and.or,not,xor)
c. boolean
d. untai
e. himpunan
f. relasi
4. Tipe data
a. Tipe Polimorfis
Tipe yang dalam beberapa cara terukur di atas semua tipe. Ekspresi tipe polimorfis menguraikan keluarga dari tipe-tipe. Sebagai contoh, ( )[a] adalah keluarga dari tipe di mana untuk setiap tipe a berisi tipe list dari a. List dari integer (seperti [1,2,3]), list dari karakter ([‘a’,’b’,’c’]), sekalipun list dari list integer, dll, adalah anggota dari keluarga ini. (Sebagai catatan [2,’b’] bukan contohyang valid karena tidak ada tipe tunggal yang berisi 2 dan ‘b’).
b. Tipe User-Defined
Kita dapat menentukan tipe data sendiri dalam Haskell menggunakan deklarasi data. Tipe penting yang sudah dikenal oleh Haskell adalah nilai kebenaran:
data Bool = False | True
Tipe yang didefinisikan di sini adalah Bool yang mempunyai dua nilai, yaitu True dan False. Tipe Bool adalah sebuah contoh dari tipe konstruktor, dan True dan False adalah data konstruktor (atau konstruktor saja). Dengan cara yang sama kita dapat mendefinisikan tipe warna:
data Color = Red | Green | Blue | Indigo | Violet
Bool dan Color dalam contoh di atas merupakan tipe enumerasi. Berikut contoh dari tipe dengan hanya satu data konstruktor:
data Point a = Pt a a
Karena merupakan konstruktor tunggal, tipe seperti Point sering disebut tipe tuple, karena merupakan produk kartesian (dalam hal ini biner) dari tipe lain. Berlawanan dengan itu, tipe multi-konstruktor seperti Booldan Color disebut union dari tipe sum.

c. Tipe Rekursif
Tipe dapat juga rekursif, seperti tipe dalam pohon biner:
data Tree a = Leaf a | Branch (Tree a) (Tree a)
Di sini didefinisikan tipe polimorfis pohon biner yang mana elemen-elemennya adalah node Leaf berisi nilai dari tipe a, atau node internal (“branch”) berisi dua sub-tree (rekursif). Saat membaca deklarasi data seperti ini, ingat bahwa Tree adalah tipe konstruktor, di mana Branch dan Leaf adalah data konstruktor. Di samping menciptakan koneksi antara konstruktor-konstruktor ini, deklarasi di atas mendefinisikan tipe berikut untuk Branch dan Leaf:
Branch :: Tree a -> Tree a -> Tree a
Leaf :: a -> Tree a
Dengan contoh di atas telah didefinisikan suatu tipe yang cukup kaya untuk mendefinisikan beberapa fungsi (rekursif) yang menggunakannya. Sebagai contoh akan didefinisikan sebuah fungsi fringe yang mengembalikan sebuah list dari semua elemen dalam daun dari sebuah pohon dari kiri ke kanan.

d. Tipe Sinonim
Untuk kenyamanan, Haskell menyediakan cara untuk mendefinisikan tipe sinonim, yaitu nama untuk tipe yang sering dipakai. Tipe sinonim dibuat menggunakan deklarasi type. Berikut beberapa contoh:
type String = [Char]
type Person = (Name,Address)
type Name = String
data Address = None | Addr String
Tipe sinonim tidak mendefinisikan tipe baru, tetapi memberi nama baru kepada tipe-tipe yang sudah ada. Sebagai contoh tipe Person -> Name setara dengan (String,Address) -> String. Nama yang baru seringkali lebih pendek dari tipe sinonimnya, tetapi itu bukan satu-satunya tujuan dari tipe sinonim: tipe sinonim meningkatkan kemudahan membaca sebuah program dengan menjadi lebih mnemonik. Bahkan tipe polimorfis sekalipun dapat diberi nama baru:
type AssocList a b = [(a,b)]
Ini merupakan “tipe asosiasi” yang mengasosiasikan nilai dari tipe a dengan nilai dari tipe b.

5. Notasi

a) Program adalah model solusi persoalan informatik, berisi kumpulan informasi penting yang mewakili persoalan.
b) Dalam konteks fungsional, program digambarkan dalam : himpunan nilai type,
dengan nilainya adalah konstanta.
c) Fungsi di sini merupakan asosiasi antara 2 type yaitu domain dan range.
d) Domain range dapat berupa : type dasar dan type terkomposisi (bentukan).
e) Penulisan suatu program fungsional, dipakai bahasa ekspresi ada tiga macam bentuk komposisi ekspresi adalah ekspresi fungsional dasar, konditional dan rekursif.
f) Pemrograman fungsional didasari atas analisa top down. Analisa top down dalam
pemrograman fungsional: Problema, Spesifikasi dan Dekomposisi .
g) Fungsi pada analisa topdown adalah strukturisasi teks. Sebuah fungsi mewakili
sebuah tingkatan abstraksi.

Konstruksi Program Fungsional
a) Definisi Fungsi : Menentukan nama dan mendefinisikan domain dan range dari fungsi.
b) Spesifikasi fungsi : menentukan “arti” dari fungsi. Contoh : Fungsi bernama Pangkat3(x) artinya menghitung pangkat tiga x seperti pada umumnya.
c) Realisasi fungsi : mengasosiasikan pada nama fungsi, sebuah ekspresi fungsional dengan parameter formal yang cocok. Contoh : mengasosiasikan pada Pangkat Tiga: a*a*a atau a3 dengan a adalah nama parameter formal. Parameter formal fungsi adalah nama yang dipilih untuk
mengasosiasikan domain dan range.
d) Aplikasi fungsi : memakai fungsi dalam ekspresi, yaitu dengan menggantikan semua nama parameter formal dengan nilai. Dengan aplikasi fungsi, akan dievaluasi ekspresi fungsional. Contoh : Pangkat Tiga (2) + Pangkat Tiga(3).
Argumen pada saat dilakukan aplikasi fungsi disebut parameter actual.
e) Notasi untuk menuliskan program fungsional disebut dengan notasi fungsional, dimana terdiri dari empat bagian sesuai dengan tahapan pemrograman. Contoh: generic(template) teks program dalam notasi fungsional
PENUTUP


KESIMPULAN

Bahasa pemrograman Haskell merupakan bahasa pemrograman yang sangat sederhana dan mudah dipelajari. Hal ini tidak lain disebabkan karena Haskell merupakan bahasa pemrograman fungsional murni. Oleh karena itu Haskell dapat:
1. Meningkatkan produktifitas programmer (Ericsson banyak memanfaatkan hasil percobaan Haskell dalam software telephony)
2. Lebih singkat, lebih jelas dan kode-kodenya mudah dibaca
3. Errornya semakin sedikit dan reabilitynya lebih tinggi
4. Membuat jarak antara programmer dengan bahasa itu lebih pendek
5. Waktu untuk membuat program menjadi lebih singkat
Selain itu, dalam Haskell tidak ada varibel yang berubah, tidak ada efek samping dari penggunaan sebuah fungsi, tidak ada perulangan, dan tidak ada program order.

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

Masih Nubie kk... maklum yah
%d blogger menyukai ini: