Sabtu, 19 November 2011

KONSEP DASAR PEMROGRAMMAN

Pengertian :
Algoritma : Langkah-langkah untuk menyelesaikan sesuatu masalah
Pemrograman Terstruktur : “Metode untuk mengorganisasikan dan membuat kode-kode program supaya mudah untuk dimengerti, mudah di test dan di modifikasi.”
Algoritma Pemrograman Yang Baik
Ciri-ciri algoritma pemrograman yang baik adalah :
  1. Memiliki logika perhitungan/metode yang tepat dalam memecahkan masalah
  2. Menghasilkan output yang tepat dan benar dalam waktu yang singkat
  3. Ditulis dengan bahasa yang standar secara sistematis dan rapi sehingga tidak menimbulkan arti ganda.
  4. Ditulis dengan format yang mudah dipahami dan diimplementasikan ke dalam bahasa pemrograman.
  5. Semua operasi yang dibutuhkan terdefinisi dengan jelas.
  6. Semua proses harus berakhir setelah sejumlah langkah dilakukan.
Standar Suatu Program Yang Baik
A. Standar Pemecahan masalah
teknik untuk dapat membantu memecahkan masalah antara lain teknik Top Down dan teknik Modular.
B. Standar Penyusunan Program
1. Kebenaran logika dan penulisan
Program yang disusun harus memiliki logika dalam pemecahan masalah. Program yang dibuat harus memiliki ketepatan, ketelitian dan kebenaran sehingga menghasilkan program yang baik.
2. Waktu penulisan dan eksekusi program
3. Perawatan dan pengembangan program
Penyusunan program harus mempunyai sifat kesederhanaan dan kejelasan dari program yang nantinya akan dikembangkan dan membantu dalam perawatan.
4. Portabilitas
Bahasa pemrograman dan program yang disusun sebaiknya bisa dipakai pada berbagai tipe komputer yang berbeda-beda dan berbagai jenis sistem operasi.
Standar Perawatan Program
1. Dokumentasi
2. Penulisan Instruksi
a. Berikan keterangan untuk awal statement atau instruksi yang tergabung dalam sekelompok statement.
b. Awal dan akhir statement dari sekumpulan statement ditulis pada kolom yang sama.
c. Gunakan sebaris atau beberapa baris kosong sebagai pemisah.
d. Hindari pernyataan untuk Percabangan
(IF statement ) yang sangat rumit dan Nested Loop (Loop disalam Loop lain) yang berlebihan.
e. Gunakan “kurung buka dan tutup” dalam menulis suatu ekspresi Aritmatika atau logika.
f. Gunakan “Spasi” dalam menulis statement atau instruksi.
Sifat Penulisan Program
a. Program Oriented
Penulisan program yang struktur programnya selalu berubah, apabila kondisi data yang diproses di dalam program tersebut, bertambah volume datanya. Selain itu penulisan program ini bersifat statis dan tidak fleksibel (program animasi)
b. Data Oriented
Penulisan program yang struktur programnnya tidak selalu berubah, walaupun volume data yang diproses di dalam program tersebut, dalam jumlah besar. Selain itu pula penulisan program ini bersifat dinamis dan mempunyai tingkat fleksibilitas yang tinggi.
Kualitas Bahasa Pemrograman
1. Ekspresifitas
Bahasa pemrograman yang baik harus jelas dalam menggambarkan algoritmanya yang dibuat.
2. Definitas (dapat didefinisikan dengan baik)
Bahasa Pemrograman dapat didefinisikan dari adanya sintak dan semantic baik. Sintak dan semantic ini haruslah konsisten dan tidak bermakna ganda.
3. Tipe data dan Strukturnya
Bahasa pemrograman yang baik harus berkemampuan dalam mendukung berbagai tipe data (integer, string,real). Serta struktur data (array, record,file)
4. Modularitas
Bahasa pemrograman yang baik harus memiliki fasilitas sub program. Program yang besar dapat dikerjakan oleh beberapa pemrogram secara bersama-sama yang nantinya dengan mudah dapat digabungkan menjadi sebuah modul saja.
5. Adanya Input Output
Bahasa pemrograman yang baik harus dapat mendukung berbagai jenis model file seperti sequential, random, index dsb dalam proses masukan dan keluaran.
6. Portabilitas
Bahasa pemrograman yang dapat digunakan pada berbagai tipe mesin computer yang berbeda-beda.
7. Efisiensi
Bahasa pemrograman yang dapat mengatur banyaknya instruksi program dalam membatasi waktu tempuh pemrosesan, mengatur jumlah memori yang digunakan program,.
8. Interaktif
Bahasa pemrograman yang baik harus mudah dipelajari dan diajarkan pada user. Serta dimengerti tentang proses yang sedang dilakukannya.
9. Umum
Bahasa pemrograman yangn baik harus memiliki jangkauan yang luas untuk berbagai aplikasi pemrograman sehingga dapat bersifat bahasa serbaguna.
  • DATA
Data adalah suatu informasi yang di olah dari bahan mentah sehingga  dapat dipergunakan oleh user atau pemakai. Data tersebut di bagi menjadi 4 bagian yang dapat di gunakan, berikut adalah tipe data yang dapat di gunakan oleh user:
  1. Tipe Data Dasar - Merupakan tipe data primitif yang tidak terstruktur yang didefinisikan oleh bahasa pemrograman. Tipe data dasar juga di bagi menjadi 5 bagian, antara lain:
a. Tipe Data Numerik : Penyimpanan data berupa angka, berikut nama-nama nya:
  • Integer   : merupakan bilangan bulat positif dan negatif
  • Subrange  : merupakan sebuah subtype dari tipe data integer dan     terdiri dari urutan nilai-nilai integer dalam range yang     tebatas.
  • Floating-point Real   : biasa disingkat dan disebut tipe data riil.
  • Fixed-point Real  : Bilangan fixwd-pont direpresentasikan dengan urutan digit     yang mempunyai panjang tetap dengan titik desimal     diposisikan ditempat yang diberikan antara dua digit.
  • Lain-lain  : Tipe data lainnya adalah bilangan kompleks dan bilangan
b. Enumerasi  : adalah suatu urutan list dari nilai-nilai yang berbeda.
c. Boolean  : tipe data untuk merepresentasikan True atau False.
d. Character  : tipe data untuk menyimpan rangkaian karakter.
e. Internationalization : disebut I18N
2.  Tipe Data Terstruktur : merupakan tipe data campuran dari berbagai tipe data dasar, contohnya array, record,                                                                       string, list dan file.
3.  Tipe Data Enumerasi
4.  Tipe Data Penunjuk : contoh tipe data penunjuk adalah pointer.

PRINSIP BAHASA PEMOGRAMAN

            a. Clarity, Simplicity dan Unity
Kemudahan, kesederhanaan dan kesatuan merupakan suatu kombinasi
yang membantu programer untuk membuat suatu desain.

b. Orthogonality
Orthogonality menunjuk kepada suatu atribut yang dapat
dikombinasikan.
c. Kewajaran untuk Aplikasi
Digunakan pada struktur program untuk merefleksikan struktur logika
yang melandasi suatu algoritma.
d. Mendukung Abstraksi
Abstraksi merupakan suatu solusi dari masalah yang dihadapi.
Kemudian abstraksi tersebut dapat dengan mudah diimplementasikan
menggunakan fitur-fitur yang ada dalam bahasa pemrograman.
e. Kemudahan untuk Verifikasi Program
Verifikasi program merupakan hal penting. Suatu program akan
dengan mudah dibangun dan dikembangkan.
f. Lingkungan Pemrograman
Lingkungan pemrograman yang baik dan lengkap akan memudahkan
programmer untuk mengimplementasikan abstraksi
yang sudah disusunnya.
g. Portabilitas Program
Salah satu kriteria penting untuk proyek pemrograman adalah
kemudahan program.
h. Biaya Penggunaan
Biaya merupakan elemen penting dalam mengevaluasi suatu bahasa
pemrograman.
Yang termasuk dalam biaya pengunaan antaralain :
1. Biaya eksekusi program
2. biaya translasi/kompilasi program
3. biaya penciptaan, testing dan penggunaan program
4.Biaya pemeliaharaan program
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.

FUNCTIONAL PROGRAMMING

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.

Realita, Cinta dan Rock'n Roll

Realita, Cinta dan Rock'n Roll adalah sebuah film Indonesia tahun 2006 yang disutradarai oleh Upi Avianto dan dibintangi oleh Herjunot Ali, Vino Bastian, dan Nadine Chandrawinata.

Ipang (Vino) dan Nugi (Junot) adalah dua orang sahabat yang tidak menyukai sekolah dan gemar bermain musik. Kehidupan mereka jalani dengan impian untuk mencapai cita-cita mereka menjadi pemusik rock n' roll.Barry Prima) adalah seorang transeksual.. Selain Ipang dan Nugi, ada pula Sandra (Nadine), teman mereka, yang kemudian karena suatu peristiwa mengancam persahabatan Nugi dan Ipang. Namun suatu hari mereka menemukan bahwa ternyata Ipang adalah anak adopsi dan ayah Nugi (diperankan
Menurut Avianto, sutradara film ini, Realita, Cinta dan Rock'n Roll adalah "film tentang bagaimana anak muda menyikapi dunianya, keluarganya, cintanya, dan mimpinya."

Pandangan Saya Untuk Masa Depan

Sekarang ini saya hanyalah seorang mahasiswa yang berkuliah di Univ Gunadarma Depok. Saya berumur 20 tahun dan saya tentu mempunyai cita cita untuk masa depan saya. Cita- cita atau pandangan hidup saya ke depan adalah menjadi sarjana Sistem Informasi dari Univ Gunadarma Depok dengan IP yang memuaskan. Setelah saya lulus, saya ingin mendapatkan pekerjaan yang layak dan sesuai dengan jurusan yang saya tekuni selama belajar di Univ Gundarma Depok. Saya mempunyai cita-cita agar saya dapat bekerja di Transcorporation sebagai salah satu staff di tempat tersebut. Lalu saya ingin berbagi ilmu kepada anak anak yang kurang mampu. Dan setelah saya sukses saya ingin sekali menjalin hubungan dengan seorang wanita dan menikah. Sekian pandangan hidup atau cita cita saya :)