Pages

Tuesday, November 15, 2011

Konsep dasar pemrograman, Data, Model Komputasi, Prinsip Bahasa Pemrograman


Konsep Dasar Pemrograman
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.

Sumber : Modul Kuliah STMIK Tasikmalaya
    http://kutukomputer.net23.net/2008/11/konsep-dasar-pemrograman/


DATA
Data adalah catatan atas kumpulan fakta.Data merupakan bentuk jamak dari datum, berasal dari bahasa Latin yang berarti "sesuatu yang diberikan". Dalam penggunaan sehari-hari data berarti suatu pernyataan yang diterima secara apa adanya. Pernyataan ini adalah hasil pengukuran atau pengamatan suatu variabel yang bentuknya dapat berupa angka, kata-kata, atau citra.
Dalam keilmuan (ilmiah), fakta dikumpulkan untuk menjadi data. Data kemudian diolah sehingga dapat diutarakan secara jelas dan tepat sehingga dapat dimengerti oleh orang lain yang tidak langsung mengalaminya sendiri, hal ini dinamakan deskripsi. Pemilahan banyak data sesuai dengan persamaan atau perbedaan yang dikandungnya dinamakan klasifikasi.
Dalam pokok bahasan Manajemen Pengetahuan, data dicirikan sebagai sesuatu yang bersifat mentah dan tidak memiliki konteks. Dia sekedar ada dan tidak memiliki signifikansi makna di luar keberadaannya itu. Dia bisa muncul dalam berbagai bentuk, terlepas dari apakah dia bisa dimanfaatkan atau tidak.
Menurut berbagai sumber lain, data dapat juga didefinisikan sebagai berikut:
• Menurut kamus bahasa inggris-indonesia, data berasal dari kata datum yang berarti fakta
• Dari sudut pandang bisnis, data bisnis adalah deskripsi organisasi tentang sesuatu (resources) dan kejadian (transactions)yang terjadi
• Pengertian yang lain menyebutkan bahwa data adalah deskripsi dari suatu kejadian yang kita hadapi



Teori komputasi adalah cabang ilmu komputer dan matematika yang membahas apakah dan bagaimanakah suatu masalah dapat dipecahkan padamodel komputasi, menggunakan algoritma. Bidang ini dibagi menjadi dua cabang: teori komputabilitas dan teori kompleksitas, namun kedua cabang berurusan dengan model formal komputasi.
Untuk melakukan studi komputasi dengan ketat, ilmuwan komputer bekerja dengan abstraksi matematika dari komputer yang dinamakan model komputasi. Ada beberapa model yang digunakan, namun yang paling umum dipelajari adalah mesin Turing. Sebuah mesin Turing dapat dipikirkan sebagai komputer pribadi meja dengan kapasitas memory yang tak terhingga, namun hanya dapat diakses dalam bagian-bagian terpisah dan diskret. Ilmuwan komputer mempelajari mesin Turing karena mudah dirumuskan, dianalisis dan digunakan untuk pembuktian, dan karena mesin ini mewakili model komputasi yang dianggap sebagai model paling masuk akal yang paling ampuh yang dimungkinkan. Kapasitas memori tidak terbatas mungkin terlihat sebagai sifat yang tidak mungkin terwujudkan, namun setiap permasalahan yang “terputuskan” (decidable) yang dipecahkan oleh mesin Turing selalu hanya akan memerlukan jumlah memori terhingga. Jadi pada dasarnya setiap masalah yang dapat dipecahkan (diputuskan) oleh meisn Turing dapat dipecahkan oleh komputer yang memiliki jumlah memori terbatas.
Pembagian Model komputasi ada 3 yaitu :
1. Mesin Mealy
Dalam teori komputasi sebagai konsep dasar sebuah komputer, mesin Mealy adalah otomasi fasa berhingga (finite state automaton atau finite state tranducer) yang menghasilkan keluaran berdasarkan fasa saat itu dan bagian masukan/input. Dalam hal ini, diagram fasa (state diagram) dari mesin Mealy memiliki sinyal masukan dan sinyal keluaran untuk tiap transisi. Prinsip ini berbeda dengan mesin Moore yang hanya menghasilkan keluaran/output pada tiap fasa.
Nama Mealy diambil dari “G. H. Mealy” seorang perintis mesin-fasa (state-machine) yang menulis karangan “A Method for Synthesizing Sequential Circuits” pada tahun 1955.
http://upload.wikimedia.org/wikipedia/commons/thumb/b/bc/Mealymachine_jaredwf.png/200px-Mealymachine_jaredwf.png



2. Mesin Moore
Dalam teori komputasi sebagai prinsip dasar komputer, mesin Moore adalah otomasi fasa berhingga (finite state automaton) di mana keluarannya ditentukan hanya oleh fasa saat itu (dan tidak terpengaruh oleh bagian masukan/input). Diagram fasa (state diagram) dari mesin Moore memiliki sinyal keluaran untuk masing-masing fasa. Hal ini berbeda dengan mesin Mealy yang mempunyai keluaran untuk tiap transisi.
Nama Moore diambil dari “Edward F. Moore” seorang ilmuwan komputer dan perintis mesin-fasa (state-machine) yang menulis karangan “Gedanken-experiments on Sequential Machines”.
http://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Graf_automatu_moore.svg/539px-Graf_automatu_moore.svg.png
3. Petri Net
Petri net adalah salah satu model untuk merepresentasikan sistem terdistribusi diskret. Sebagai sebuah model, Petri net merupakan grafik 2 arah yang terdiri dari place, transition, dan tanda panah yang menghubungkan keduanya. Di samping itu, untuk merepresentasikan keadaan sistem, token diletakkan pada place tertentu. Ketika sebuah transition terpantik, token akan bertransisi sesuai tanda panah.
Petri net pertama kali diajukkan oleh Carl Adam Petri pada tahun 1962.
http://www.doc.ic.ac.uk/%7End/surprise_97/journal/vol2/njc1/petri.gif
Sekianlah model-model komputasi. Materi ini bersumber dari :
http://id.wikipedia.org/wiki/Kategori:Model_komputasi
http://id.wikipedia.org/wiki/Teori_komputasi
http://www.doc.ic.ac.uk/~nd/surprise_97/journal/vol2/njc1/petri.gif
http://upload.wikimedia.org/wikipedia/commons/thumb/2/2f/Graf_automatu_moore.svg/539px-Graf_automatu_moore.svg.png

Tugas Bahasa Pemrograman I

Bahasa pemrograman dan bahasa alami sama-sama berfungsi untuk memfasilitasi komunikasi antar manusia, tetapi pada bahasa pemrograman yang difasilitasi adalah komunikasi ide-ide algoritmanya, baik antar manusia maupun manusia dengan mesin komputasi (yang tidak bisa dilakukan oleh bahasa alami). Dalam merancang sebuah bahasa pemrograman, perancang bahasa harus memiliki vocabulary dasar tentang struktur bahasa, arti dan hal-hal pragmatis lainnya dan memahami empat prinsip dasar perancangan bahasa pemrograman. Empat prinsip tersebut adalah:
  1. Sintaks, menjelaskan bagaimana struktur program yang benar.
  2. Tipe sistem dan semantik, menunjukkan tipe nilai yang dapat dimanipulasi oleh program dan arti(semantik) dari program, mencakup juga aturan penamaan entitas (variabel,fungsi,class,parameter,dll).
  3. Manajemen memori, menunjuk kepada sekumpulan teknik yang membantu kita untuk memahami pemetaan letak dari nilai, struktur data, dan struktur program di dalam memori.
  4. Exception handling, mengenai penanganan exception (hal-hal yang tak terduga yang terjadi ketika kita menjalankan sebuah program seperti kesalahan input yang tak terduga) .
Dalam perancangan bahasa, para perancang bahasa mengikuti paradigma-paradigma tertentu yang merupakan bentuk pemecahan masalah mengikuti aliran atau “genre” tertentu dari program dan bahasa. Berikut ini merupakan paradigma-paradigma pemograman yang utama:
  • Imperative programming-> program terdiri dari instruksi yang membentuk perhitungan, menerima input dan menghasilkan output. Contoh bahasa: Fortran, C, dan C++.
  • Object-oriented (OO) programming-> program adalah kumpulan objek yang saling berinteraksi melalui pesan yang mengubah state mereka. Contoh bahasa: Java, C++.
  • Functional programming-> program merupakan kumpulan fungsi matematika dengan input (domain) dan hasil (range). Fungsi-fungsi saling berinteraksi dan berkombinasi mengggunakan komposisi fungsional, kondisional, dan rekursif. Contoh bahasa: Lisp, Scheme,ML
  • Logic (declarative) programming -> memodelkan masalah menggunakan bahasa deklaratif, yang terdiri dari fakta dan aturan. Contoh bahasa : Prolog
  • Event-driven programming-> program merupakan sebuah loop yang secara kontinu  merespon event yang timbul oleh perintah yang tidak terduga.  Event ini berasal dari aksi user pada layar atau sumber lainnya. Contoh bahasa: Visual Basic dan Java.
  • Concurrent programming-> program merupakan sekumpulan proses yang bekerjasama, saling berbagi informasi dari waktu ke waktu tapi biasanya beroperasi secara tidak serempak. Contoh bahasa : SR, Linda, dan HPF.
Beberapa bahasa dirancang mendukung lebih dari satu paradigma. Contoh: C++ (imperative dan OOP), Leda(imperative, OOP, functional, logic).
Bahasa pemrograman telah mengalami perkembangan yang pesat sejak pertama kalinya ditemukan. Bahasa pemrograman yang pertama adalah bahasa mesin yang dirancang pada tahun 1940-an. Sejak saat itu ratusan bahasa pemrograman telah berkembang. Cobol dan Fortran adalah contoh bahasa yang berkembang sangat pesat sejak kemunculannya di akhir tahun 50-an dan telah memberikan pengaruh besar pada perkembangan bahasa lain selama lebih dari 40 tahun. Algol juga merupakan bahasa yang memiliki pengaruh sangat besar kepada para penerusnya seperti C++ dan Java. Java merupakan bahasa yang memberikan dukungan kuat pada paradigma OO, concurrent dan event-driven sehingga merupakan bahasa yang menarik bagi para perancang bahasa. Di wilayah functional programming Lisp merupakan bahasa yang dominan pada masa-masa awal dan masih terus mempengaruhi perkembangan bahasa sekarang seperti Scheme, ML, dan Haskell. Sedangkan di wilayah logic programming, Prolog menjadi satu-satunya pemain utama walaupun tidak banyak mempengaruhi desain bahasa di luar wilayahnya. Pada wilayah event-driven dan conccurent programming yang masih dalam masa awal evolusinya hanya menghasilkan sedikit bahasa yang menonjol, salah satunya adalah HPF.
Perbedaan domain aplikasi dan paradigma serta bahasa yang digunakan, menciptakan komunitas-komunitas programming yang berbeda-beda pula. Komunitas programming itu antara lain : Scientific Computing, Management Information System (MIS), Artificial Intelegence, System, dan Web-centric. Masing-masing komunitas tersebut tidak hanya menggunakan salah satu paradigma saja, tapi mengombinasikannya sesuai dengan kebutuhan domain aplikasi mereka.
Dalam merancang bahasa pemrograman, ada beberapa kendala yang harus diatasi para perancangnya, yakni:
  • Arsitektur komputer.  Bahasa pemrograman dirancang untuk komputer: well-match atau tidak dengan arsitektur komputer yang ada.
  • Kontekstual. Bahasa pemrograman juga harus mampu mengatasi kendala yang timbul akibat  konteks dimana mereka digunakan: wilayah aplikasi, sistem operasi, jaringan dan pilihan komunitas programmingnya.
  • Virtual machines dan Intrepreter. Bahasa pemrograman dianalis untuk selanjutnya diterjemahkan ke dalam bentuk yang dapat dipahami oleh mesin, apabila dijalankan oleh komputer (“real machine”) maka disebut proses compiling. Sedangkan apabila dijalankan oleh sebuah intrepreter (sebuah software yang menyimulasikan “virtual machine” dan menjalankannya dalam “real machine”) maka disebut sebagai proses intrepreting. Virtual machine, secara umum adalah model abstrak dari sebuah komputer yang diimplementasikan dalam software, tapi tidak di dalam hardware. Perancang bahasa harus memutuskan mana yang lebih sesuai untuk bahasa yang sedang dirancang, apakah menggunakan konsep virtual machines atau intrepreter , menurut tujuan dari pengembangan bahasa itu sendiri.
  • Standar. Memenuhi standar yang ditetapkan oleh ANSI (American National Standards Institute),atau ISO (International Standards Organization).
  • Legacy systems atau sistem pendahulu. Agar bahasa yang lama masih tetap bisa di-maintain, bahasa yang lebih baru harus tetap mempertahankan kompatibelitasnya dengan pendahulunya itu.
Selain mengatasi kendala-kendalan yang ada, untuk menciptakan bahasa pemrograman yang elegan, terdapat sejumlah kriteria yang harus dipenuhi oleh bahasa tersebut:
  • Simplicity and Clarity, program harus mudah ditulis dan dimengerti serta dipelajari oleh programmer pada umumnya.
  • Binding, memiliki batasan definisi dan waktu yang jelas, misalnya reserved words, ukuran memori suatu tipe data, run time, dsb.
  • Orthogonality, simbol atau reserved word memilki makna yang sama apapun konteks yang digunakan.
  • Realibility, program akan melakukan hal yang sama ketika memperoleh input data yang sama.
  • Applicability, bahasa tsb menyediakan dukungan yang tepat sesuai dengan domain aplikasi yang digunakan.
  • Abstraction, mendukung abstraksi data dan prosedural sehingga menjadi alat yang disukai dalam proses memprogram.
  • Implementasi yang efisien.

Sumber : http://humblediary.wordpress.com/2010/02/24/tugas-bahasa-pemrograman-i/



No comments:

Post a Comment