Anda di halaman 1dari 7

STMIK Balikpapan – Jurusan Teknik Informatika

Mata Kuliah Algoritma & Pemrograman - Semester Ganjil TA 2009/2010

Modul 1
Pengantar Algoritma dan Pemrograman

Algoritma merupakan suatu konsep paling dasar dari ilmu komputer. Secara informal,
sebuah algoritma adalah seperangkat langkah yang mendefinisikan bagaimana suatu pekerjaan
dilaksanakan. Lebih tepatnya, algoritma merupakan suatu kumpulan perintah yang jelas, tentang
langkah-langkah yang dilaksanakan untuk menjelaskan suatu aktivitas yang terbatas.
Sebelum sebuah mesin dapat melakukan suatu pekerjaan, algoritma untuk melaksanakan
pekerjaan tersebut harus disusun dan disajikan dalam bentuk yang kompatibel dengan mesin
tersebut. Representasi yang kompatibel dengan mesin dari suatu algoritma disebut program.
Pengembangan sebuah program melibatkan dua aktivitas – menemukan algoritma yang
mendasarinya dan merepresentasikan algoritma sebagai sebuah program. Program, dan
algoritma-algoritma yang direpresentasikannya, secara kolektif disebut sebagai software
(perangkat lunak), sedangkan mesin komputer itu sendiri dikenal sebagai hardware (perangkat
keras). Pengkajian algortima awalnya merupakan sebuah subjek dalam matematika. Memang,
pencarian berbagai algoritma sudah menjadi aktivitas yang cukup penting bagi para ahli
matematika jauh sebelum dikembangkannya komputer masa kini. Sasaran utamanya adalah untuk
menemukan seperangkat arahan yang menjabarkan bagaimana suatu jenis permasalahan tertentu
dapat diselesaikan.
Setelah algoritma untuk menyelesaikan suatu masalah ditemukan, langkah berikutnya
adalah menyajikan algoritma tersebut dalam bentuk yang dapat dikomunikasikan kepada mesin
atau manusia lainnya. Hal ini berarti bahwa kita harus mengubah algoritma konseptual tersebut ke
dalam seperangkat instruksi yang jelas dan menyajikan instruksi-instruksi ini dalam bentuk yang
tidak membingungkan. Studi-studi yang kemudian muncul dari pembahasan di atas mengambil
gagasan dari pengetahuan kita tentang bahasa dan tatabahasa, dan telah menghasilkan begitu
banyak skema representasi algoritma, dikenal sebagai bahasa pemrograman, yang berpijak pada
beragam pendekatan pada proses pemrograman, dikenal sebagai paradigma pemrograman.
Kemampuan untuk memecahkan masalah lebih merupakan keterampilan artistik yang harus
dikembangkan, bukannya sebuah ilmu eksak yang dapat dipelajari. Sebagai bukti sifat artistik dan
intuitif proses pemecahan masalah, fase-fase proses pemecahan masalah berikut ini, yang tidak
memiliki definisi yang jelas dan diajukan oleh ahli matematika G. Polya pada 1945, masih tetap
dipegang sebagai prinsip-prinsip dasar dalam mengajarkan keterampilan memecahkan masalah
hingga hari ini.
Fase 1. Pahami permasalahan yang dihadapi.
Fase 2. Susun suatu rencana untuk memecahkan masalah.
Fase 3. Laksanakan rencana tersebut.
Fase 4. Evaluasi solusi yang didapatkan untuk memastikan keakuratannya dan untuk
menjajaki potensinya sebagai alat untuk memecahkan masalah-masalah lainnya.
Apabila diterjemahkan ke dalam konteks pengembangan program, fase-fase ini menjadi
Fase 1. Pahami permasalahan yang dihadapi
Fase 2. Pahami bagaimana sebuah prosedur algoritmik mungkin dapat memecahkan
masalah ini

www.rijalfadilah.net 1
copyright©2009
STMIK Balikpapan – Jurusan Teknik Informatika
Mata Kuliah Algoritma & Pemrograman - Semester Ganjil TA 2009/2010

Fase 3. Rumuskan algoritma tersebut dan representasikan algoritma tersebut sebagai


sebuah program
Fase 4. Evaluasi program tersebut untuk memastikan keakuratannya dan untuk menjajaki
potensinya sebagai alat untuk memecahkan masalah-masalah lainnya.
Dalam konteks pemrograman, terdapat sejumlah bahasa pemrograman, seperti Pascal, C,
C++, dan BASIC. Secara garis besar bahasa-bahasa pemrograman dapat dikelompokkan menjadi :
1. Bahasa beraras-tinggi (high-level languange)
2. Bahasa beraras-rendah (low-level languange)
Bahasa beraras-tinggi adalah bahasa pemrograman yang berorientasi kepada bahasa
manusia. Program dibuat dengan menggunakan bahasa pemrograman yang mudah dipahami oleh
manusia biasanya menggunakan kata-kata bahasa Inggris; misalnya IF untuk menyatakan “jika”
dan AND untuk menyatakan “dan”. Yang termasuk dalam kelompok bahasa ini adalah bahasa C,
C++, Pascal dan BASIC.
Bahasa beraras-rendah adalah bahasa pemrograman yang berorientasi kepada mesin.
Bahasa ini menggunakan kode biner (yang hanya mengenal 0 dan 1) atau suatu kode sederhana
menggunakan kode-kode tertentu dalam sistem biner. Yang tergolong dalam kelompok bahasa ini
adalah bahasa mesin dan bahasa rakitan. Bahasa-bahasa seperti ini sangat sulit untuk dipahami
oleh seorang awam dan sangat membosankan bagi pemrogram yang sudah terbiasa dengan
bahasa beraras tinggi. Pemrogram harus benar-benar menguasai operasi komputer secara teknis.
Namun bahasa generasi ini memberikan eksekusi program yang sangat cepat. Selain itu bahasa
mesin sangat bergantung pada mesin (Machine dependt); artinya, bahasa mesin antara satu mesin
dengan mesin yang lain jauh berbeda. Sebagai contoh, tabel 1 memperlihatkan tiga buah instruksi
dalam bahasa mesin yang diterapkan pada IBM PC yang berbasis sistem operasi DOS. Untuk mesin
yang lain, misalnya pada minikomputer, kodenya berbeda.

Tabel 1. Kode dalam bahasa mesin


Instruksi Bahasa Mesin Keterangan
B402 atau Muatlah bilangan 2 ke register AH
1011 0100 0000 0010
B22A atau Muatlah bilangan 2A heksadesimal ke register DL
1011 0010 0010 1010
CD21 atau Jalankan interupsi 21 heksadesimal
1100 1101 0010 0001

Tiga instruksi di atas digunakan untuk menampilkan tanda * pada layar. Bandingkan dengan
beberapa perintah berikut yang ditulis pada bahasa pemrograman beraras tinggi :
WRITE(‘*’); (pada PASCAL)
DISPLAY ‘*”. (pada COBOL)
PRINT “*” (pada BASIC)
printf (“*”); (pada C)
cout << “*”; (pada C++)

Tampak bahwa bahasa mesin lebih panjang dan lebih sukar untuk dimengerti dibandingkan
kode dalam bahasa yang lebih berorientasi pada manusi.
Program yang ditulis dalam bahasa pemrograman seperti PASCAL, C dan C++ sebenarnya
tidak dimengerti oleh komputer secara langsung, sebab komputer hanya mengenal bahasa
khasnya saja yang dinamakan bahasa mesin, yakni bahasa yang hanya mengenal kode 0 dan 1.
Supaya program dapat dijalankan (dieksekusi) oleh komputer, program tersebut harus

www.rijalfadilah.net 2
copyright©2009
STMIK Balikpapan – Jurusan Teknik Informatika
Mata Kuliah Algoritma & Pemrograman - Semester Ganjil TA 2009/2010

diterjemahkan terlebih dahulu ke dalam bahasa mesin (atau biasa disebut sebagai kode objek).
Proses penerjemahannya dilakukan oleh program yang disebut translator (penerjemah).
Translator dapat berupa ;
1. Interpreter
2. Kompiler

Kode Sumber : Urutan Pengerjaan :


Instruksi 1 1. Instruksi 1 diterjemahkan
Instruksi 2 kemudian dijalankan
Instruksi 3 2. Instruksi 2 diterjemahkan
kemudian dijalankan
3. Instruksi 3 diterjemahkan
kemudian dijalankan

(a) Proses penerjemahan pada interpreter

Kode Sumber : Urutan Pengerjaan :


Instruksi 1 Instruksi 1 hingga instruksi 3
Instruksi 2 diterjemahkan menjadi kode
Instruksi 3 objek.

Pengeksekusian Program :
Ketika kode objek dijalankan,
tidak ada penerjemahan lagi
dan tidak bergantung pada
kode sumber.

(b) Proses penerjemahan pada kompiler

Gambar 1. Perbedaan interpreter dan kompiler dalam menerjemahkan program

Interpreter menerjemahkan instruksi selama program diminta untuk dieksekusi. Jika


seseorang bermaksud menjalankan program tersebut (agar dapat dijalankan oleh komputer),
mula-mula kode sumber (source code atau program asli yang ditulis pemrogram) diterjemahkan
dulu ke dalam bentuk kode mesin per baris instruksi. Setelah satu baris instruksi tersebut
dipahami oleh komputer, instruksi tersebut dijalankan. Interpreter kemudian kembali memproses
baris instruksi berikutnya.
Berbeda dengan interpreter, kompiler menerjemahkan instruksi ke dalam kode objek secara
keseluruhan (untuk semua instruksi). Setelah semua instruksi diterjemahkan, instruksi yang telah
dimengerti oleh komputer dijalankan. Proses penerjemahan seperti itu disebut kompilasi. Setelah
kompilasi berakhir, kompiler tidak diperlukan lagi, sebab sesudah kompilasi akan terbentuk
program yang executable (dapat dijalankan secara langsung tanpa melalui translator).

www.rijalfadilah.net 3
copyright©2009
STMIK Balikpapan – Jurusan Teknik Informatika
Mata Kuliah Algoritma & Pemrograman - Semester Ganjil TA 2009/2010

Kode
Sumber

Kompilasi

Kode inilah yang


diedarkan ke
pemakai
Kode
Objek

Gambar 2. Kompilasi mengubah kode sumber menjadi kode objek

Proses pembentukan kode yang executable sebenarnya juga melalui proses yang disebut
linking, yang berfungsi untuk menggabungkan kode hasil kompilasi dengan sejumlah pustaka yang
disediakan oleh kompiler. Pada saat ini, beberapa kompiler menerjemahkan kode sumber ke
dalam bentuk kode yang khas, yang tidak bersifat executable. Kompiler pada bahasa Java
mengkompilasi kode menjadi kode objek yang disebut bytecode. Kode seperti ini dapat dijalankan
pada berbagai platform sepanjang platform tersebut memiliki program yang dapat mengeksekusi
kode tersebut.
Tentu saja masing-masing translator memiliki keunggulan dan kelemahan sendiri,
sebagaimana dapat dilihat pada tabel 2.

Tabel 2. Kelebihan dan kelemahan interpreter dalam kompiler


Interpreter Kompiler
Kelebihan: Kelebihan :
Kemudahan mencari kesalahan seandainya 1. Pengerjaan instruksi dilakukan dengan
program menghasilkan sesuatu yang dianggap sangat cepat, karena setelah kode objek
salah ketika program dijalankan, karena kode terbentuk maka tidak perlu lagi adanya
sumber selalu tersedia penerjemahan, mengingat komputer dapat
memahami kode objek secara langsung.
2. Kode objek dapat didistribusikan ke
komputer lain tanpa perlu menyertakan
kode sumber dan kompiler, sehingga
kerahasiaann kode sumber tetap terjamin.
Kelemahan Kelemahan :
1. Kode sumber harus selalu tersedia Seluruh kode sumber harus benar secara
2. Eksekusi lambat sintaks agar program dapat diuji

Bahasa pemrograman juga dapat diklarifikasikan menjadi bahasa prosedural dan bahasa
deklaratif. Pada bahasa prosedural, pemrogram perlu menuliskan instruksi-instruksi yang rinci agar
komputer dapat melaksanakan tugasnya. Pendekatan prosedural terdapat pada bahasa-bahasa
pemrograman seperti C, PASCAL, dan BASIC. Pada bahasa deklaratif (non-prosedural), untuk
mendapatkan suatu hasil, seorang pemrogram tidak perlu memberitahukan secara detail tentang

www.rijalfadilah.net 4
copyright©2009
STMIK Balikpapan – Jurusan Teknik Informatika
Mata Kuliah Algoritma & Pemrograman - Semester Ganjil TA 2009/2010

bagaimana mendapatkannya. Pendekatan deklaratif antara lain diterapkan pada bahasa seperti
Prolog (bahasa mengenai kecerdasan buatan).
Klasifikasi yang lain berupa bahasa yang berorientasi pada objek atau tidak berorientasi
pada objek. Bahasa pemrograman yang berorientasi objek adalah bahasa pemrograman yang
memungkinan untuk mengemas suatu prosedur dan data dalam suatu wadah yang disebut kelas.
Kelas inilah yang menjadi cetakan bagai objek-objek. Model pemrograman seperti ini telah
menjadi tren bahasa-bahasa pemrograman baru pada masa kini. Keuntungannya, kode yang telah
dibuat dapat dikembangkan dengan mudah. Sifat ini dikenal dengan reusability. Termasuk dalam
bahasa yang berorientasi objek adalah C++. Adapun C adalah contoh bahasa pemrograman yang
tidak berorientasi pada objek.
Program dibuat untuk menyelesaikan masalah. Namun sebelum dapat menyelesaikan
masalah dengan program, terdapat tiga langkah penting yang perlu dilakukan terlebih dahulu.
1. Menganalisis masalah dan membuat algoritma
2. Menuangkan algoritma ke dalam bentuk program
3. Mengeksekusi dan menguji program

1. Menganalisis Masalah dan Membuat Algoritma


Proses pertama, menganalisis masalah dan membuat algoritma memang tidak dapat begitu
saja diwujudkan. Pengalaman, pengetahuan, kreativitas, imajinasi, dan kelihaian merupakan
faktor-faktor yang menentukan sekali keberhasilan langkah ini. Didalam analisis masalah
diperlukan tindakan untuk mengidentifikasi informasi yang menjadi keluaran pemecahan masalah
dan data-data yang menjadi masukan.
Langkah detail yang ditujukan untuk komputer guna menyelesaikan suatu masalah disebut
dengan algoritma. Namun yang disebut algoritma ini berbeda dengan program, karena algoritma
secara teoritis bersifat bebas dari bahasa pemrograman.
Contoh sederhana, hitunglah keliling persegi panjang dengan menggunakan komputer. Pada
masalah ini Anda dapat menentukan keluaran berupa keliling dan masukan berupa panjang dan
lebar. Selain itu Anda harus menentukan bagaimana keliling persegi panjang dihitung berdasarkan
data panjang dan lebar. Dengan logika sederhana Anda dapat menghitung keliling persegi panjang
seperti berikut :
keliling = panjang + lebar + panjang + lebar
atau
keliling = 2 x (panjang + lebar)
Anda dapat menuangkan algoritma seperti berikut ;
1. Peroleh nilai panjang dan lebar persegi panjang
2. Hitung keliling persegi panjang dengan menggunakan rumus 2 x (panjang+lebar)
3. Tampilkan nilai keliling persegi panjang
Algoritma tidak selamanya dinyatakan dalam bahasa manusia seperti yang dicontohkan di
depan. Kadang-kadang dinyatakan dalam bentuk pseudokode (pseudocode), yaitu suatu bentuk
algoritma yang menggunakan berbagai notasi yang dimaksudkan untuk menyederhanakan bentuk
kalimat manusia. Sebagai contoh, kalimat seperti “Hitung keliling persegi panjang dengan
menggunakan rumus 2 x (panjang+lebar)” dapat disederhanakan menjadi :
keliling  2 x (panjang+lebar)
Pseudokode seringkali mengarah ke bahasa pemrograman tertentu. Sebagai contoh :
1. i  1
2. jum  0
3. while I < 10
a. jum  jum + i

www.rijalfadilah.net 5
copyright©2009
STMIK Balikpapan – Jurusan Teknik Informatika
Mata Kuliah Algoritma & Pemrograman - Semester Ganjil TA 2009/2010

b. i  i + 1
4. write(i)
Contoh diatas merupakan pseudokode yang berorientasi pada bahasa C, Pascal, atau Algol.
Algoritma di atas digunakan untuk melakukan perhitungan 1+2+3+4+5+6+7+8+9. Buatlah
pseudokode untuk menghitung keliling lingkaran.
Adakalanya suatu algoritma disajikan dalam bentuk diagram alir (flowchart). Diagram alir
adalah suatu standar untuk menggambarkan urutan langkah dalam suatu proses. Setiap langkah
dalam algoritma dinyatakan dengan sebuah simbol dan aliran setiap langkah ( dari suatu langkah
ke langkah yang lain) dinyatakan dengan garis yang dilengkapi panah. Gambar 1 menunjukkan
diagram alir untuk menghitung luas lingkaran.

Mulai

Masukan
jari_jari

luas  3,14 x jari_jari x jari_jari

Keluaran
luas

Selesai

Gambar 1. Diagram alir penghitungan luas lingkaran

Buatlah flowchart untuk menghitung keliling lingkaran

2. Menuangkan Algoritma ke Dalam Bentuk Program


Langkah menuangkan algoritma ke dalam program ditentukan oleh faktor bahasa
pemrograman yang akan digunakan. Sebagai contoh, langkah “Hitung keliling persegi panjang
dengan menggunakan rumus 2 x (panjang+lebar)” perlu diterjemahkan menjadi pernyataan
berikut pada sejumlah bahasa pemrograman.

Tabel 1. Pernyataan pada beberapa bahasa pemrograman


Bahasa Pernyataan
BASIC Keliling = 2 * (panjang + lebar)
C dan C++ Keliling = 2 * (panjang + lebar)
COBOL COMPUTE keliling = 2* (panjang + lebar)
Pascal keliling := 2 (panjang + lebar)

Buatlah program untuk menghitung keliling lingkaran

www.rijalfadilah.net 6
copyright©2009
STMIK Balikpapan – Jurusan Teknik Informatika
Mata Kuliah Algoritma & Pemrograman - Semester Ganjil TA 2009/2010

3. Mengeksekusi dan Menguji Program


Setelah program dibuat dan dikompilasi, program perlu dijalankan untuk diuji
kebenarannya. Ada beberapa kemungkinan kesalahan yang terjadi sewaktu proses kompilasi
hingga pengeksekusian program :
1. Kesalahan sintaksis
2. Kesalahan logika
3. Kesalahan runtime
Kesalahan sintaksis disebabkan adanya kesalahan dalam menuliskan program yang tidak
sesuai dengan kaidah bahasa pemrograman. Contoh, suatu pernyataan C ataupun C++ tidak
diakhiri titik-koma, sementara kaidah bahasa C dan C++ mengharuskan setiap pernyataan diakhiri
dengan titik-koma. Kesalahan sintaksis terdeteksi sewaktu kompilasi bila Anda menggunakan
kompiler C atau C++, tetapi dapat jadi terdeteksi pada saat eksekusi pada bahasa pemrograman
yang berorientasi pada interpreter (misalnya pada interpreter BASIC).
Kesalahan logika adalah kesalahan yang terjadi karena ada logika yang salah. Misalnya, Anda
menuliskan 31.4 untuk menyatakan phi , padahal yang benar adalah 3.14. Akibatnya, hasil yang
didapatkan tidak benar. Kesalahan seperti ini terkadang sulit untuk dideteksi terutama kalau
program sangat kompleks.
Kesalahan runtime atau terkadang disebut kesalahan fatal adalah kesalahan yang terjadi
karena suatu operasi dalam program tidak dapat dilakukan oleh komputer. Sebagai contoh, jika
terjadi operasi pembagian nol, maka suatu pesan kesalahan akan ditampilkan dan eksekusi
program dihentikan.



www.rijalfadilah.net 7
copyright©2009