Saturday, September 24, 2011

Data & Model Komputasi & Prinsip Bahasa Pemrograman

Tipe Data Pemrograman

Data adalah catatan atas kumpulan fakta. Data berasal dari bahasa Latin datum yang berarti "sesuatu yang diberikan". Dalam penggunaanya sehari-hari data memiliki arti 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.

Data dalam pemrograman : bahan mentah yang akan diolah menjadi informasi sehingga dapat digunakan oleh user atau pemakai.

Objek data adalah pengelompokan satu atau lebih potongan data di dalam virtual komputer pada saat run-time. Objek data menggambarkan suatu container untuk nilai data, suatu tempat dimana nilai-nilai data disimpan dan dipanggil kembali. Objek data dikarakteristikan oleh suatu kumpulan attribute. Attribute menentukan jumlah dan tipe nilai objek data. Perbedaan antara objek data dan nilai data adalah objek data selalu dipresentasikan sebagai penyimpanan di memori komputer, sedangkan nilai data dipresentasikan sebagai pola dari bit.


Apa itu tipe data?
Tipe data adalah suatu kelas objek data dengan kumpulan operasi untuk membentuk dan memanipulasinya.

Syarat-syarat elemen dasar dalam suatu tipe data:
1. Attribute
    Membedakan objek-objek data dari tipenya.
2. Nilai
    Dimiliki oleh objek data dari tipe tersebut.
3. Operasi
    Mendefinisikan manipulasi-manipulasi yang dimungkinkan oleh objek data tipe tersebut.

Tipe data yang biasa digunakan adalah :

1. Tipe Data Dasar, merupakan tipe data primitif yang tidak terstruktur yang didefinisikan oleh bahasa pemrograman.
Tipe data dasar dapat dibagi menjadi lima bagian, yaitu :
a.  Tipe Data Numerik : setiap bahasa pemrograman dapat dipastikan ada tipe data numerik yaitu untuk menyimpan data berupa angka. Yang paling umum adalah integer dan real karena didukung secara langsung oleh hardware komputer.
·Real : merupakan bilangan desimal atau mantissa, biasa disebut juga Floating-point real.
·Integer : tidak mempunyai attribute yang lain selain dirinya sendiri, merupakan bilangan bulat positif dan negatif
·Subrange : merupakan sebuah subtype dari tipe data integer dan terdiri dari urutan nilai-nilai integer dalam range yang terbatas, contohnya adalah integer dalam range 1 sampai 10.
·Fixed-point real : bilangan ini direpresentasikan dengan urutan digit yang mempunyai panjang tetap dengan titik desimal diposisikan di tempat yang diberikan antara dua digit.

b.  Enumerasi : adalah suatu urutan list dari nilai-nilai yang berbeda, digunakan ketika suatu variabel hanya membutuhkan nilai-nilai tertentu dan terbatas.

c.  Boolean : tipe data untuk merepresentasikan True atau False (biasa digunakan dalam penyeleksian kondisi).

d.  Character : berupa sebuah karakter yang ditulis diantara tanda petik tunggal atau ganda ( ‘ atau “ ) tergantung dari bahasa pemrograman yang digunakan.

e.  String : urutan-urutan dari karakter yang terletak diantara tanda petik tunggal atau ganda ( ‘ atau “ ) tergantung dari bahasa pemrograman yang digunakan.

f.  Internationalization : disebut I18N, berkembang karena kurang mencukupinya pengunaan character ASCII yang 8-bit.

2. Tipe Data Penunjuk : contoh tipe data penunjuk adalah pointer.

3. Tipe Data yang didefinisikan oleh pemakai : tipe data ini biasa disebut Enumerasi.

4. Tipe Data Terstruktur : merupakan tipe data campuran dari berbagai tipe data dasar, contohnya : array (struktur data yang tersusun dari komponen-komponen bertipe sama dengan jumlah tetap dan terbatas sebagai suatu urutan linier yang sederhana), record (struktur data yang tersusun dari komponen-komponen berbeda tipe dengan jumlah tetap dan terbatas sebagai suatu urutan linier yang sederhana), string(objek data yang tersusun atas urutan character), list (struktur data mirip dengan vector dan tersusun atas urutan yang terurut dari suatu struktur data) dan file.
5. Tipe Data Abstrak : fasilitas dari bahasa pemrograman yang menanmpung aspirasi para programmer supaya dapat mempunyai tipe data yang didefinisikan sendiri.

Beberapa jenis tipe data dan deskripsinya(range variabel) :

Byte           angka dari 0 sampai 255
Integer       angka dari -32768 to 32767
Real           semua nilai pecahan dari 1E-38 to 1E+38
Boolean     nilai TRUE atau FALSE
Char          semua karakter dari tabel ASCII
String         semua huruf, spasi, frase

Model Komputasi

Ada tiga model dasar komputasional-- fungsional, logika, dan imperatif. Sebagai tambahan terhadap satuan nilai-nilai dan operasi yang berhubungan, masing-masing model komputasional mempunyai satu set operasi yang digunakan untuk menggambarkan komputasi.

a. Model Fungsional : terdiri dari satu set nilai-nilai, fungsi-fungsi dan operasi aplikasi fungsi dan komposisi fungsi. Fungsi dapat mengambil fungsi lain sebagai argumentasi dan mengembalikan fungsi sebagai hasil (higher-order function). Suatu program adalah koleksi definisi fungsi-fungsi dan suatu komputasi adalah aplikasi fungsi.

b. Model Logika : terdiri dari satu set nilai-nilai, definisi hubungan dan kesimpulan logis. Program terdiri dari definisi hubungan dan suatu komputasi adalah suatu bukti(suatu urutan kesimpulan).

c. Model Imperatif : terdiri dari satu set nilai-nilai yang mencakup suatu keadaan dan operasi tugas untuk memodifikasi pernyataan. Pernyataan adalah set pasangan nilai-nama dari konstanta dan variabel. Program terdiri dari urutan tugas dan suatu komputasi terdiri dari urutan pernyataan.

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.

  


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”. 
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.

Prinsip Desain Bahasa pemrograman

Suatu bahasa program harus dirancang untuk memudahkan agar dapat dibaca dan ditulis untuk para user dan pelaksanaan yang efisien pada perangkat keras yang tersedia.

Keadaan dapat dibaca dan ditulis dimudahkan oleh prinsip-prinsip sebagai berikut:
  
Prinsip Keteraturan
Satu set object disebut reguler berkenaan dengan kondisi beberapa jika, dan hanya jika, kondisi dapat digunakan untuk masing-masing unsur set.

Prinsip Kesederhanaan
Bahasa harus didasarkan atas yang paling sedikit (sederhana).
Prinsip Orthogonal
Fungsi mandiri harus dikendalikan oleh mekanisme mandiri.
 
Prinsip Sifat Ekstensibilitas(dapat diperpanjang)
Object baru dari tiap kelas sintaktis mungkin dibangun (digambarkan) dari dasar dan digambarkan membangun dengan suatu cara sistematis. 

Prinsip Kelengkapan Komputasional
Model komputasional untuk tujuan umum suatu bahasa pemrograman harus universal.

Prinsip Memprogram
harus ditulis dalam suatu bahasa yang mencerminkan daerah masalah.
 
Prinsip Implementasi
Implementasi harus efisien dalam penggunaan waktu dan ruangnya.
Prinsip keteraturan dan ekstensibilitas memerlukan konsep dasar bahasa harus diterapkan secara konsisten dan yang bersifat universal.
Sementara empat prinsip dasar perancangan bahasa pemrograman 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) .
Tujuan umum bahasa pemrograman untuk berpegang pada prinsip desain bahasa pemrograman:


Konsep Dasar Pemrograman

1.1 Program
Pertama-tama marilah kita mengenal terlebih dahulu program. Apa itu program? Program adalah rangkaian instruksi-instruksi dalam bahasa komputer yang disusun secara logika dan sistematis dan dibuat oleh seorang programmer.

Apa tujuan pembuatan program?
   1. Membuat solusi dari pemecahan masalah yang timbul.
   2. Meningkatkan kualitas dan performance dari kinerja kerja.
   3. Membantu dalam pengambilan keputusan.

Sementara program yang baik haruslah memenuhi beberapa kriteria, antara lain:
  1. Program haruslah sesuai dengan tujuan dan memenuhi spesifikasi yang telah ditentukan.
  2. Fleksibel
  3. Tidak mengandung kesalahan
  4. Didokumentasi secara baik
  5. Cepat dalam waktu penggunaannya
  6. Efesien dalam penggunaan memori komputer

1.2 Pemrograman
Sementara pemrograman adalah cara dalam membuat program yang berguna untuk menyelesaikan suatu masalah. Salah satu langkah dari pengembangan suatu program adalah menterjemahkan atau mengkodekan rancangan terinci yang telah dibuat menjadi suatu program komputer yang siap untuk dipakai oleh usernya.

Berikut adalah karakteristik seorang pemrogram yang baik dan mampu mempengaruhi suatu program yang dibuat adalah sbb:
   1. Memiliki pol pikir yang logis.
   2. Memiliki ketekunan dan ketelitian yang tinggi.
   3. Menguasai bahasa pemrograman dengan baik.
   4. Memiliki pengetahuan mengenai teknik pemrograman yang baik.

Langkah-langkah pokok di dalam pembuatan program komputer:
1. Definisikan Masalah
  a. Tentukan apa yang menjadi masalah
  b. Tentukan data input yang diperlukan
  c. Tentukan output yang diinginkan
2. Buat bagan dan struktur cara penyelesaian
  a. Bagan secara global
  b. Deskripsikan tugas masing-masing subprogram
3. Pilih Metode Penyelesaian
  a. Pilih struktur data dan Algoritma terbaik
4. Pengkodean
  a. Pilih bahasa pemrograman yang sesuai
  b. Menterjemahkan algoritma ke bahasa pemrograman
5. Mencari Kesalahan
  a. Kesalahan sintaks (penulisan program)
  b. Kesalahan Pelaksanaan: Semantik, Logika, dan ketelitian
6. Uji dan Verifikasi Program
7. Dokumentasi Program
8. Pemeliharaan Program
  a. Memperbaiki kekurangan yang ditemukan kemudian
  b. Memodifikasi, karena perubahan spesifikasi

Tipe pemrograman ada 7 macam, yaitu :
1. Pemrograman Terstruktur
merupakan suatu tindakan untuk membuat program yang berisi instruksi-instruksi dalam bahasa komputer yang disusun secara sistematis dan logis supaya mudah dimodifikasi, mudah dimengerti, dan mudah dites.
Contoh : Pascal, Cobol, RPG, ADA, C.
2. Pemrograman Prosedural
algoritma berisi urutan langkah-langkah penyelesaian masalah, biasanya tipe pemrograman ini didukung oleh bahasa tingkat tinggi seperti Cobol, Basic, Pascal, Fortran dan C.
3. Pemrograman Modular
Dalam tipe pemrograman ini, program dipecah-pecah menjadi modul-modul, dimana setiap modul ini memiliki fungsi dan tugas tunggal.
4. Pemrograman Fungsional
Pada programnya, seluruh kodenya berupa fungsi-fungsi, contoh : Lisp, Scheme, ML, Haskell.
5. Pemrograman Visual
Menggunakan ekspresi visual (grafik, gambar atau ikon) di dalamnya.
6. Pemrograman Berorientasi Obyek
Merupakan bahasa pemrograman yang mampu memanfaatkan obyek-obyek yang ada atau bahkan membuat obyek tertentu dengan menggunakan bahasa pemrograman.Contoh : C++, SmallTalks, Java.
7. Pemrograman Even-Driven
Menggunakan konsep "jika sebuah aksi/perintah dilakukan terhadap sebuah obyek, apa yang akan terjadi/dilakukan oleh obyek tersebut selanjutnya".

1.3 Flowchart (diagram alir)
Konsep pemrograman dapat digambarkan juga dengan menggunakan diagram alir (flowchart). Diagram alir adalah simbol-simbol yang digunakan untuk menggambarkan sebuah pernyataan logika pemrograman serta aliran logika yang ditunjukkan dengan arah panah. Ada dua jenis diagram alir yaitu:
1. Diagram alir sistem yaitu bagan dengan simbol-simbol tertentu yang menggambarkan urutan procedure dan proses suatu file dalam suatu media menjadi file di dalam media lain, dalam suatu system pengolahan data.
2. Diagram alir program yaitu bagan dengan simbol-simbol tertentu yang menggambarkan urutan proses dan hubungan antar proses secara mendetail di dalam suatu program.
Berikut merupakan beberapa contoh simbol yang disepakati oleh dunia pemrograman:


1.4 Sedangkan apa yang dimaksud dengan bahasa pemrograman?
Bahasa pemrograman adalah bahasa yang dapat diterjemahkan menjadi kumpulan perintah-perintah dasar tersebut. Penerjemahan dilakukan oleh program komputer yang disebut kompilator. Sintaks dari bahasa pemrograman lebih mudah dipahami oleh manusia daripada sintaks perintah dasar. Namun tentu saja komputer hanya dapat melaksanakan perintah dasar itu. Maka di sinilah peran penting kompilator sebagai perantara antara bahasa pemrograman dengan perintah dasar. Kegiatan membuat program komputer dengan menggunakan bahasa pemrograman disebut pemrograman komputer. Untuk dapat membuat program komputer, harus dikuasai bahasa komputer. Berbagai bahasa komputer telah diciptakan untuk membantu manusia memprogram komputer.

Berdasarkan tingkatannya dikenal beberapa tingkat bahasa pemrograman diantaranya:
a. Bahasa Pemrograman tingkat dasar seperti: Bahasa Mesin, Bahasa Assembley.
Bahasa pemrograman tingkat dasar, sebagai hirarki pertama, disebut juga bahasa generasi pertama, bahasa ini sangat tergantung pada jenis CPU yang dipakai oleh komputer itu. Bahasa ini sangat sulit dipelajari, karena sifatnya yang sangat tergantung pada mesinnya itu(machine dependent).

b. Bahasa Pemrograman tingkat tengah seperti: Bahasa C, Bahasa FORTH.
Bahasa pemrograman tingkat tengah, sifatnya sudah lebih mudah daripada bahasa pemrograman tingkat dasar, perintah-perintahnya sudah lebih mudah dibaca sebab sudah menggunakan huruf-huruf.

c. Bahasa Pemrograman tingkat tinggi seperti: Bahasa Pascal, FORTRAN, COBOL, dan lain-lain.
Bahasa pemrograman tingkat tinggi adalah bahasa komputer yang sudah mirip dengan bahasa manusia. Perintah-perintahnya sudah dibuat dalam bahasa yang mudah dimengerti manusia, seperti PRINT, WRITE, IF, THEN, ELSE, dan lain-lain.

1.5 Algoritma. Apa itu algoritma? Algoritma adalah langkah-langkah untuk menyelesaikan sesuatu masalah.
Berikut ini adalah 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 standar secara rapi dan sistematis sehingga tidak akan 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.

Berikut adalah standar-standar suatu program yang baik:
A. Standar Pemecahan masalah
teknik untuk dapat membantu memecahkan masalah antara lain teknik Top Down dan teknik Modular.

Pemrograman Modular
Dalam pemrograman modular, program akan dipecah-pecah ke dalam modul-modul dimana setiap modul memiliki tugas dan fungsi tertentu.

Pemrograman Top Down
Sangat berguna untuk perencanaan pemrograman modular.

B. Standar Penyusunan Program

1. Kebenaran logika dan penulisan
Program yang disusun harus memiliki logika dalam pemecahan masalah. Program yang dibuat harus memiliki kebenaran, ketelitian, dan ketepatan sehingga mampu menghasilkan suatu 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 program.

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 “Spasi” dalam menulis instruksi atau statement

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 sebaris atau beberapa baris kosong sebagai pemisah.

Sifat Penulisan Program

a. Data Oriented
Penulisan program yang struktur programnya tidak selalu berubah, walaupun volume data yang diproses di dalam program tersebut, jumlahnya besar. Penulisan program ini bersifat dinamis dan mempunyai tingkat fleksibilitas yang tinggi.

b. Program Oriented
Penulisan program yang struktur programnya selalu berubah, apabila kondisi data yang diproses di dalam program tersebut, bertambah volume datanya. Penulisan program ini bersifat statis dan tidak fleksibel (program animasi)

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 apa proses yang sedang dilakukannya.

9. Umum
Bahasa pemrograman yang baik harus memiliki jangkauan yang luas untuk berbagai aplikasi pemrograman sehingga dapat bersifat bahasa serbaguna.