Selasa, 05 April 2011

BELAJAR MEMPROGRAM DAN BELAJAR BAHASA PEMOGRAMAN

Bahasa Pemograman

Bahasa(language) adalah suatu system untuk berkomunikasi. Bahasa tertulis menggunakan symbol (yaitu huruf) untuk membentuk kata. Dalam ilmu computer, bahasa manusia disebut bahasa alamiah (natural languages), dimana computer tidak bisa memahaminya, sehingga diperlukan suatu bahasa computer.
Hingga saat ini terdapat puluhan bahasa pemograman. Kita dapat menyebutkan antara lain:
- bahasa rakitan (assembly)
- fortran
- cobol
Ada simulasi seperti:
- CSMP
- Simscript
- GPSS
- Dinamo
- Dll

Berdasarkan tujuan aplikasinya, bahasa pemograman dapat digolongkan menjadi 2 kelompok:
1. Bahasa pemograman bertujuan khusus ( specific purpose programming language).
Yang termasuk kelompok ini adalah:
- Cobol (untuk terapan bisnis dan administrasi),
- Fortran (aplikasi komputasi ilmiah)
- Bahasa assembly(aplikasi pemograman mesin)
- Prolog (aplikasi kecerdasan buatan)
- Bahasa-bahasa simulasi (simscript)
- Dll.

2. Bahasa Pemograman Bertujuan Umum (general purpose programming language).
Dapat digunakan untuk berbagai aplikasi.
Yang termasuk kelompok ini adalah
- Bahasa pascal
- Basic
- C, C++
Bahasa-bahasa bertujuan khusus tidak berarti tidak bias digunakan untuk aplikasi lain. Cobol misalnya dapat juga digunakan untuk terapan ilmiah, tetapi tentu kemampuannya sangat terbatas.
Bahasa Pemograman dapat dikelompokkan atas dua macam:
1. Bahasa tingkat rendah
Bahasa ini dirancancang agar setiap intruksinya langsung dikerjakan oleh computer, tanpa harus melalui penerjemah (translator).
Contohnya:
- Bahasa mesin (machine language)
Bahasa Mesin adalah sekumpulan model yang mengeksekusi secara langsung tanpa terjemahan (translation).
PROGRAM DAN PEMOGRAMAN



Algoritma baru efektif [GOL88], suatu pemroses harus:
1. Mengerti setiap langkah dalam algoritma,
2. Mengerjakan operasi yang bersesuaian dengan langkah tersebut.

Kita memfokuskan pemroses algoritma adalah computer.
Komputer adalah alat bantu untuk menjalankan perintah-perintah di dalam algoritma yang telah “dimasukkan” ke dalamnya.
Algoritma yang ditulis dalam bahasa computer dinamakan program. Orang
yang membuat program computer disebut pemogram, dan kegiatan
merancang dan menulis program disebut pemrogaman.Bahasa computer yang
digunakan dalam menulis program dinamakan bahasa pemrogaman.

Secara garis besar computer tersusun atas empat komponen utama: piranti masukan, piranti keluaran, unit pemroses utama, dan memori. Unit pemroses utama (central processing Unit-CPU) adalah “otak” computer, yang berfungsi mengerjakan operasi-operasi.

Memori adalah komponen yang berfungsi menyimpan atau mengingat-ingat . yang disimpan didalam memori adalah program (berisi operasi-operasi yang akan dikerjakan oleh CPU) dan data atau informasi (sesuatu yang diolah oleh operasi-operasi). Piranti masukan dan keluaran (I/O devices) adalah alat yang memasukkan data atau program ke dalam memori, dan alat yang digunakan computer untuk mengomunikasikan hasil-hasil aktivitasnya.

Contoh Piranti Masukan antara lain:
- papan ketik (keyboard)
- pemindai (scanner)
- tetikus (mouse)
- joystick
- dan cakram (disk)

Contoh Piranti keluaran antara lain:
- layar peraga (monitor)
- pencetak (printer)
- perajah (plotter)
- dan cakram.
APAKAH ALGORITMA DAN PEMOGRAMAN ITU ?


ALGORITMA

Algoritma adalah suatu langah-langkah untuk memecahkan masalah. Beberapa defenisi lain dari algoritma, tetapi pada prinsipnya defenisi tsb diambil dari berbagai literature, antara lain:

Algoritma adalah deretan langkah-langkah komputasi yang mentransformasikan data masukan menjadi keluaran [COR92].

Algoritma adalah deretan intruksi yang jelas untuk memecahkan masalah,yaitu untuk memperoleh keluaran yang diinginkan dari suatu masukan dalam jumlah waktu yang terbatas[LEVo3].

Algoritma adalah prosedur komputasi yang terdefenisi dengan baik yang menggunakan beberapa nilai yang disebut keluaran. Jadi,algoritma adalah deretan langkah komputasi yang mentransformasikan masukan menjadi keluaran [COR89].

Dalam kehidupan sehari-hari kita banyak menemukan langkah-langkah pengerjaan sesuatu meskipun kita tidak menyebutnya sebagai algoritma: “Itu bukan algoritma,tapi cara melakukan sesuatu”. Contohnya panduan praktikum(terdapat dibuku modul praktikum), cara mencari saluran(ditulis di buku panduan TV), cara merakit barang elektronik, dan sebagainya.

Contoh langkah-langkah pengerjaan di dalam praktikum kimia:
1. Siapkan tabung reaksi ukuran 100cc
2. Teteskan 50cc larutan H2SO4 ke dalam tabung.
3. Campurkan 20cc larutan NaOH ke dalamnya, aduk hingga tercampur merata

Meskipun kita tidak menyebutkan langkah-langkah pengerjaan itu sebagai algoritma,tetapi dalam konteks ini semua di atas adalah algoritma. Sekarang kita sudah mulai mengerti bahwa sebuah algoritma mengerjakan sebuah proses. Secara umum, benda yang mengerjakan proses disebut pemroses(processor). Pemroses tersebut dapat barupa manusia, computer, robot, atau alat-alat mekanik/elektroniklainnya. Pemroses melakukan suatu proses dengan melaksanakan atau mengeksekusi algoritma yang menjabarkan proses tersebut.
Setiap masalah mempunyai algoritma pemecahannya. Tugas kita sebagai pemecah masalah (problem solver) untuk mendeskripsikan langkah-langkah penyelesaiannya. Di bawah ini diberikan contoh masalah sederhana dalam kehidupan sehari-hari dan algoritma pemecahannya.

Contoh:
Misalkan ada dua ember atau bejana yang berisi air (larutan) yang berwarna, Sebut ember A dan B. Ember A berisi air yang berwarna merah, sedangkan ember B berisi air berwarna biru. Volume Algoritma adalah Urutan langkah-langkah untuk memecahkan suatu masalah. Bagaimana Mempertukarkan isi kedua ember itu sedemikian sehingga nantinya ember A akan berisi air berwarna biru dan ember B berisi air berwarna merah.

Penyelesaiannya:
Kita tidak bisa langsung mempertukarkan air di dalam kedua ember tadi begitu saja, sebab cara seperti menyebabkan terjadinya percampuran. Agar bias dipertukarkan, Kita memerlukan sebuah ember tambahan sebagai tempat penampungan sementara. Misalkan tambahan tersebut adalah ember C. Dengan menggunakan ember C ini, Algoritma mempertukarkan isi kedua buah ember adalah seperti algoritma berikut:

ALGORITMA mempertukarkan isi dua buah ember, a dan B:
1. Tuangkan air dari ember A ke dalam ember C.
2. Tuangkan air dari ember B ke dalam ember A.
3. Tuangkan air dari ember C ke dalam ember B.
SEJARAH ALGORITMA

Algoritma adalah jantung ilmu computer atau informatika. Ditinjau dari asal usul kata, kata “algoritma” sendiri mempunyai sejarah yang cukup aneh. Kata ini tidak muncul di dalam kamus Webster sampai akhir tahun 1957. Orang hanya menemukan kata algorism yang berarti proses menghitung dengan angka Arab [KNU73]. Kata algorism berasal dari nama penulis buku Arab yang terkenal, yaitu Abu Ja’far Muhammad ibnu Musa al-Khuwarizmi ( al-Knuwarizmi dibaca orang barat menjadi algorism).
Pada tahun 1950, kata algoritma pertama kali digunakan pada “ algoritma Euclidean” (Euclid’s algorithm). Euclid, seorang matematikawan Yunani (lahir pada tahun 350 M), dalam bukunya berjudul Element menuliskan langkah-langkah untuk menemukan pembagi bersama terbesar (common greatest divisor atau gcd), dari dua buah bilangan bulat, mdan n [KNU73] (Euclid tidak menyebut metodenya sebagai algoritma, baru di abab modernlah orang-orang menyebut metodenya itu sebagai “algoritma Euclidean”).
Pembagi bersama terbesar dari dua buah bilangan bulat tak negative adalah bilangan bulat positif terbesar yang habis membagi kedua bilangan tersebut.




Misalnya, m=80 dan n=12. Semua factor pembagi 80 adlah

1,2,4,5,8,10,16,20,40,80,

Dan semua factor pembagi 12 adalah

1,2,3,4,6,12,

Maka gcd(80,12)=4. Langkah-langkah mencari gcd(80,12) dengan algoritma Euclidean sbb:

80 dibagi 12 hasilnya = 6, sisa = 8 (atau: 80 = 6 . 12 + 8)
12 dibagi 8 hasilnya = 1, sisa = 4 (atau: 12 =1 . 8 + 4)
8 dibagi 4 hasilnya = 2, sisa = 0 (atau: 8 = 4 .2 + 0)


Karena pembagian yang terakhir menghasilkan 0, maka sisa pembagian terakhir sebelum 0, yaitu 4, menjadi gcd(80,12). Jadi, gcd(80,12) = gcd(12,8) =gcd(8,4) = gcd(4,0) = 4.

Terdapat beberapa versi algoritma Euclidean, salah satu versinya dituliskan di bawah ini:

ALGORITMA EUCLIDEAN:

{Diberikan dua buah bilangan bulat tak-negatif m dan n (m>=n).
Algoritma Euclidean mencari pembagi bersama terbesar, gcd, dari kedua
bilangan tersebut, yaitu bilangan bulat positif terbesar yang habis
membagi m dan n.}
1. Jika n= 0 maka
m adalah jawabannya;
stop.
tetapi jika n#0,
lanjutkan ke langkah 2.
2. Bagilah m dengan n dan misalkan r adalah sisanya.
3. Ganti nilai m dengan nilai n dan nilai n dengan nilai r, lalu ulang
kembali ke langkah 1.

Dengan menggunakan algoritma Euclidean ini, kita dapat menhitung gcd dari dua buah bilangan bulat sembarang secara sistematis.

Contoh-contohalgoritma yang sudah dijelaskan di atas memberi dua pesan penting. Pertama, sebuah algoritma harus benar. Kedua, algoritma harus berhenti, dan setelah berhenti, algoritma memberi hasil yang benar.



Ciri-ciri Algoritma yang baik: Menurut Donald E.Knuth dalam bukunya yang berjudul the Art Of Computer Programming [KNU73], Algoritma mempunyai 5 ciri penting yaitu:
1. Algoritma harus berhenti setelah mengerjakan sejumlah langkah terbatas Setiap langkah didefenisikan dengan tepat dan tidak berarti dua
(ambiguous).
3. Algoritma memiliki nol atau lebih masukan(input). Masukan ialah
besaran yang diberikan kepada algoritma untuk diproses.
4. Algoritma mempunyai nol atau lebih keluaran(output). Keluaran
dapat berupaPesan atau besaran yang memiliki hubungan dengan
masukan.
5. Algoritma harus sangkil (effective). Setiap langkah harus
sederhana sehingga dapat dikerjakan dalam sejumlah waktu yang
masuk akal.

Ciri-ciri Algoritma yana baik:
1. Tepat sasaran: memenuhi spesifikasi pekerjaan dan bekerja sesuai tujuan
2. Flexible dan portable:
-Flexible untuk dikembangkan lebih lanjut
-portable untuk digunakan pada berbagai system dan mesin
3. Bersih dari kesalahan system atau lojik
4. Efektif: setiap langkah harus sederhana sehingga dapat dikerjakan dalam sejumlah waktu yang masuk akal.
5. Murah:
• Efisien dalam pengguna piranti memori dan penyimpanan lainnya
• Cepat waktu pelaksanaanya
6. Didokumentasi dengan baik untuk pengoperasian, pemeliharaan dan Pengembangan
7. Algoritma merupakan pemberian (description) pelaksanaan suatu proses
8. Tidak ambiguous: tidak bermakna ganda
9. Harus berhenti setelah mengerjakan sejumlah langkah terbatas

Selasa, 29 Maret 2011

Pemrograman Terstruktur Hal : 1
PENGANTAR PEMROGRAMAN TERSTRUKTUR
Pendahuluan
Pada era tahun 1950 –1960, kecepatan komputer sangat rendah dan disertai juga dengan
keterbatasan dari media penyimpan, sehingga tentunya berakibat juga dengan keterbatasan dalam
penulisan program-program komputer. Namun di era saat ini, dengan kecepatan komputer yang
cukup handal demikian juga ketersediaan dari media penyimpan yang cukup handal dan besar,
serta didukung juga dengan perkembangan bahasa pemrograman yang ada sehingga kita dapat
dengan mudah membuat suatu program. Permasalahan yang timbul dalam pembuatan program
tersebut adalah bagaimana kita dapat memahaminya, sehingga apabila terdapat perubahan yang
akan dilakukan kita dapat memperbaikinya secara mudah. Hal ini tentu saja harus kita perhatikan
terutama apabila kita melihat dari biaya yang harus dikeluarkan dalam pembuatan program
tersebut.
Istilah Pemrograman Terstruktur (Structured Programming) mengacu dari suatu
kumpulan tehnik yang dikemukan oleh Edsger Dijkstra. Dengan tehnik ini akan meningkatkan
produktifitas programmer, dengan mengurangi waktu yang dibutuhkan dalam penulisan (write),
pengujian (test), penelusuran kesalahan (debug) dan pemeliharan(maintain) suatu program. Pada
pembahasan berikut ini kita akan melihat bagaimana tehnik ini yang pendekatan yang dilakukan
secara modular, dapat membantu kita dalam membangun suatu program.
Pemrograman Secara Modular
Dalam pemrograman secara modular, suatu program akan dipilah kedalam sejumlah
modul, dimana setiap modul menjalankan fungsinya sendiri. Tentunya fungsi yang dijalankan
oleh setiap modul sangat terbatas sesuai dengan ruang lingkup yang akan dikerjakan. Dengan
adanya sejumlah modul program ini tentu saja kesalahan yang timbul dapat dikurangi.
Setiap program tentu akan memiliki program utamanya, yang kemudian akan memanggil
sejumlah modul-modul yang ada.
Implementasi dari pendekatan secara modular
Pemrograman secara modular ini dapat diimplementasikan dengan penggunaan
subroutine, suatu kelompok instruksi yang menjalankan suatu pengolahan yang sifatnya terbatas
seperti pencetakan, pembacaan untuk proses input atau untuk proses penghitungan.
………………………
………………………
………………………
………………………
CALL SUB
………………………
………………………
………………………
………………………
CALL SUB
………………………
………………………
………………………
SUB
………………….
………………….
………………….
………………….
RETURN
Gambaran dari proses transfer ke dan dari suatu subroutine
Keterangan :
Path dari pemanggilan pertama
Path dari pemanggilan kedua
Pemrograman Terstruktur Hal : 2
Subroutine dapat dikelompokkan menjadi internal subroutine dan external subroutine, berikut ini
penjelasannya:
Internal Subroutines
Adalah bagian dari suatu program yang digunakan. Dideklarasikan cukup sekali saja, untuk
sejumlah proses yang sama akan dilakukan oleh program tersebut. Program akan memanggil
subroutines tersebut jika diperlukan dan apabila telah selesai, kontrol selanjutnya dikembalikan
ke instruksi berikutnya.
Instruksi yang mengendalikan kontrol transfer ke suatu subroutine umumnya dikenal sebagai call
dan return.
External Subroutines
Diletakkan secara terpisah dari program yang menggunakan subroutine tersebut. Subroutine ini
dideklarasikan supaya bisa dipakai oleh program yang lain. Untuk menggunakannya tentu
seorang programmer harus mengetahui dimana ? , apa namanya ?, bagaimana pengiriman datanya
?, bagaimana jawaban yang akan diperoleh ?. Subroutine ini biasanya digunakan untuk
pemrosesan yang komplek, yang dibutuhkan oleh banyak user.
Masalah Yang dihadapi dalam Pendekatan Modular
Masalah yang timbul misalnya tidak mengetahui modul mana yang harus digunakan, data
apa yang harus dikirimkan dsb-nya. Hal ini dapat dimaklumi karena tugas seorang programmer
tentu akan berbeda dengan programmer yang lainnya. Oleh karena itu dalam tahap perencanaan
fungsi-fungsi dari suatu modul harus dapat dimengerti secara jelas, dan tentu saja harus mengikuti
suatu standar yang telah ditentukan.
TOP-DOWN PROGRAMMING
Pendekatan ini sangat berguna sekali dalam perencanaan suatu program bersifat modul.
Dalam pendekatan ini pertama-tama kita mendefinisikan modul untuk program utama, yang
merupakan program yang pertama kali dieksekusi, memanggil modul yang lain dan kemudian
menghentikan eksekusi program. Jika fungsi yang akan dikerjakan terlalu komplek, maka modul
ini harus dipecah kedalam sejumlah modul-modul yang ada dibawahnya.
Structure Charts
Digunakan sebagai alat bantu perencanaan dalam top-down programming. Sering juga
disebut sebagai hierarchy/hierarchical/chart/visual table of content (VTOC). Tidak ada standar
untuk structure chart dan digunakan untuk menggambarkan seluruh komponen yang ada.
Bujur sangkar menggambarkan modul dan diidentifikasikan dengan sebuah angka,
dimana angka nol untuk menandakan program utama (main program). Modul ini menggambarkan
keseluruhan program dan ditandai oleh level-0, sedangkan dibawah adalah level-1 dan seterusnya.
000
main program module
200
process transactions
100
load tables
300
print final cost
Level-0 module
Level-1 module
Pemrograman Terstruktur Hal : 3
Meng-identifikasi Modul
Nama modul adalah deskripsi singkat dari modul tersebut. Identifikasi dari sebuah modul
juga memuat angkanya. Sebagai contoh pada gambar modul “200 process transaction”
mempunyai 5 buah fungsi subordinat yaitu :
- Reading transaction record
- Reading master record
- Updating inventory level
- Writing master record
- Printing error message
Contoh gambar structure chart untuk program pengupdate-an file nventory
Modul 210 – 250 juga termasuk level-2 seperti juga modul 110 dan 120. Modul 260 adalah modul
perkecualian. Sebuah modul dapat memiliki sebuah subordinat modul, jika modul itu juga
menjadi subordinat paling sedikit satu buah modul.
Me-review Structure Chart
Sesudah sebuah structure chart dipersiapkan, kemudian direview kembali untuk memastikan
kelengkapan dan strukturnya. Review ini dilakukan mulai dari level teratas hingga level
terbawah. Peranan user (pemakai program tersebut) harus disertakan untuk dapat melihat segala
sesuatu yang dibutuhkan.
000
update inventory
file
100
load product
table
200
process
transaction
300
print final totals
110
read table record
120
store table data
260
write line
210
read transaction
record
220
read master
record
230
update inventory
level
240
write master
record
250
print error
message
260
write line
Pemrograman Terstruktur Hal : 4
Structure Chart dan Flowchart
Dalam structure chart digambarkan fungsi yang akan dilakukan dan relasi antar modulmodul,
sedangkan informasi yang diperlukan untuk peng-coding-an sangat sedikit. Didalamnya
tidak digambarkan langkah-langkah setiap pemrosesan maupun kondisi-kondisinya. Sehingga
flowchart umumnya dipersiapkan juga. Namun karena logika dari modul-modul itu sangat
sederhana, sehingga memungkinkan untuk melakukan peng-coding-an tanpa harus menggunakan
flowchart. Demikian juga untuk user lebih mudah untuk mengertinya.
Programming Structure
Salah satu sasaran dalam men-desain program terstruktur adalah mengurangi
kebingungan yang dihasilkan dari penggunaan percabangan atau perintah go-to.
Dalam pemrograman terstruktur tidak digunakan lagi perintah go-to. Ada tiga bentuk
yang digunakan yaitu : Sequence Structure, Loop Structure dan Selection Structure.
Sequence Structure
Dalam sequence structure, instruksi dieksekusi berdasarkan urutannya. Dimulai dari
bagian atas dan diakhiri di bagian bawahnya.
Bujur sangkar dapat menggambarkan operasi :
- Input dan Output
- Operasi aritmatika
- Operasi pemindahan data dalam memori komputer
Dalam sequence structure tidak diperkenankan penggunaan kotak keputusan.
Loop Structure
Loop (iteration) structure menggambarkan perulangan dari satu atau lebih instruksi.
Instruksi-1
Instruksi-2
Instruksi-3
False
kondisi True
Instruksi-1
…………
Pemrograman Terstruktur Hal : 5
Selection Structure
Dalam struktur ini terdapat sejumlah perintah yang dikerjakan tergantung dari kondisi yang
dipenuhinya. Seperti juga dengan sequence dan dan loop structure, terdapat single entry point dan
single exit point.
Referensi diambil dari :
La Budde, Keith, Structured Programming Concept, MCGraw-Hill Book Company.
False
kondisi True
Instruksi-1
…………
Instruksi-2
…………