2. Langkah a. Bandingkan bilangan I dengan bilangan ke-II, ambil yang terkecil b. Hasil perbandingan langkah 1, bandingkan dengan bilangan ke-III, ambil yang terkecil c. Hasil perbandingan langkah 2, bandingkan dengan bilangan ke-IV, ambil yang terkecil d. Hasil perbandingan langkah 3, bandingkan dengan bilangan ke-V, ambil yang terkecil e. Hasil perbandingan langkah 4, bandingkan dengan bilangan ke-VI, ambil yang terkecil f. dst. Komputer tidak bias membaca data langsung, tetapi menggunakan variabel. Untuk membaca dan membandingkan data, ambil sebuah variabel untuk data yang akan dibaca (missal A) dan satu variabel pembanding (misal B) dan beri harga awal. Contoh B=100
Data (A) 5
Pembanding (B) 100
8
5
3
5
7
3
2
3
9
2
6
2
10
2
2
Dari proses dan langkah diatas, maka dapat disusun suatu algoritma untuk memecahkan masalah diatas, yakni : ALGORITMA 1. Ambil sebuah variabel pembanding, sebut B dan beri harga awal. Misalnya B=100 2. Baca bilangan sebagai A dan bandingkan dengan B, ambil yang terkecil. if A > B then B=A 3. Cek data : - Jika data masih ada, ulangi langkah 2 - Jika data habis (End of File) lanjut ke langkah 4 4. Selesai
Bahan Ajar Algoritma dan Pemrograman I, oleh : Dodon Yendri, M.Kom
2
ALGORITMA DAN PEMROGRAMAN TERSTRUKTUR Konsep pemrograman terstruktur memegang peranan penting dalam merancang, menyusun, memelihara dan mengembangkan suatu program, khususnya program aplikasi yang besar dan kompleks.Konsep ini pertama kali dikembangkan oleh Profesor Edsger Djikstra dari Universitas Eindhoven tahun 1960-an. Untuk memahami Algoritma dan Pemrograman Terstruktur, ada beberapa istilah dasar yang harus diketahui, yakni : 1. Program 2. Bahasa Pemrograman 3. Pemrograman 4. Pemrograman Terstruktur Program adalah serangkaian instruksi/pernyataan yang disusun sedemikian rupa berdasarkan bahasa tertentu sehingga dapat dieksekusi oleh komputer. Bahasa pemrograman adalah prosedur/tatacara penulisan program. Ada 2 faktor penting yaitu sintax (aturan-aturan) dan semantic (makna atau arti). Pemrograman adalah proses mengimplementasikan urutan langkah untuk menyelesaikan suatu masalah dengan menggunakan bahasa pemrograman. Pemrograman terstruktur adalah proses mengimplementasikan urutan langkah untuk menyelesaikan suatu masalah dalam bentuk program yang memiliki rancang bangun yang terstruktur dan tidak berbelit-belit sehingga mudah ditelusuri, dipahami dan dikembangkan oleh siapa saja Ciri Teknik Pemrograman Terstruktur a. Mengandung algoritma pemecahan masalah yang tepat, benar, sederhana, standar dan efektif b. Memiliki struktur logika dan struktur program yang benar dan mudah dipahami c. Membutuhkan biaya testing, pemeliharaan dan pengembangan yang rendah d. Memiliki dokumentasi yang baik Algoritma pemrograman yang baik memiliki ciri-ciri : 1. Tepat, benar,sederhana,standar dan efektif 2. Logis, terstruktur dan sistematis 3. Semua operasi terdefinisi 4. Semua proses harus berakhir setelah sejumlah langkah dilakukan 5. Ditulis dengan bahasa yang standar dengan format pemrograman agar mudah untuk diimplementasikan dan tidak menimbulkan arti ganda. Sedangkan standar program yang baik memiliki dasar penilaian sbb : 1. Teknik pemecahan masalah 2. Penyusunan program 3. Perawatan program 4. Standar prosedur
Bahan Ajar Algoritma dan Pemrograman I, oleh : Dodon Yendri, M.Kom
3
Menulis Program Menulis program bukan hanya merupakan suatu bentuk kreativitas saja, tetapi juga merupakan sebuah penerapan disiplin ilmu secara teliti karena program merupakan implementasi dari suatu algoritma. Pemrogram adalah orang yang bekerja menyusun suatu program. Beberapa kriteria pemrogram yang baik dan berkualitas, yakni : a. Mampu menyusun algoritma dengan baik b. Mengusai bahasa dan teknik penulisan program dengan baik c. Dapat bekerjasama dalam suatu tim kerja d. Dapat bekerja secara efisien dan tepat waktu
MEMBANGUN PROGRAM Untuk menyusun program yang besar dan kompleks, pemrogram membutuhkan tahapan penyusunan yang sistematis dan terpadu, sebagai berikut : 1. Definisi Masalah 2. Analisis Kebutuhan 3. Penyusunan Algoritma 4. Pengkodean/Pemrograman 5. Testing dan Debugging 6. Pemeliharaan 7. Dokumentasi Definisi Masalah Tujuannya adalah untuk mendapatkan pengertian atau pemahaman yang lebih mendalam tentang masalah yang ada sehingga dapat diperoleh asumsi-asumsi yang baik dan benar guna memecahkan masalah. Ada 2 langkah dalam pendefinisian masalah : 1. Pahami masalah dengan tepat 2. Identifikasi dan definisi masalah Analisis Kebutuhan Tujuan analisis kebutuhan adalah untuk menentukan spesifikasi fungsi, kemampuan dan fasilitas dari program yang disusun. Analisis kebutuhan juga bermanfaat sebagai dasar evaluasi setelah program selesai disusun. Analisis kebutuhan meliputi : 1. Siapa pemakai program ? 2. Pesan-pesan apa yang ingin ditampilkan ? 3. Apakah dibutuhkan password guna menjaga keamanan program? 4. Bagaimana format menu, input, proses dan output yang diinginkan ? 5. Data apa saja yang diinputkan ? 6. Berapa digit angka yang akan diproses ? 7. Rumus apa yang akan digunakan dan bagaimana proses pengolahan dilakukan ? 8. Siapa saja yang membutuhkan informasi yang akan dihasilkan nanti ? 9. Informasi apa yang dibutuhkan oleh masing-masing pemakai ? Bahan Ajar Algoritma dan Pemrograman I, oleh : Dodon Yendri, M.Kom
4
10. Apa manfaat dan infromasi yang dihasilkan tersebut ? 11. Kapan informasi tersebut dibutuhkan ? 12. Apa bentuk help yang diinginkan oleh pemakai ?
Penyusunan Algoritma Algoritma dibuat dengan tujuan untuk menyelesaikan masalah. Algoritma tidak dibuat sekali jadi. Oleh karena itu harus dikaji terus menerus sehingga dapat diperoleh algoritma yang paling lengkap, tepat, benar dan relevan. Algoritma yang sudah tersusun juga harus dikoreksi kembali, dan jika terdapat kesalahan maka harus direvisi kembali. Pengkodean/Pemrograman Merupakan suatu proses guna mengimplementasikan algoritma dengan menggunakan suatu bahasa pemrograman. Satu hal yang sangat penting sebelum seorang pemrogram mulai menyusun program adalah memilih bahasa pemrograman yang akan digunakan. Secara umum, ada 4 kelompok bahasa pemrograman : 1. Bahasa aras rendah (low level language) Merupakan bahasa pemrograman yang berorientasi pada mesin. Pemrograman yang menggunakan bahasa ini harus dapat berfikir berdasarkan logika mesin komputer, sehingga bahasa ini dinilai kurang fleksibel dan sulit untuk dipahami. Contohnya adalah bahasa assembly 2. Bahasa aras menengah (midle level language) Merupakan bahasa pemrograman yang menggunakan aturan-aturan gramatikal dalam penulisan ekspresi atau pernyataan dengan standar bahasa yang mudah dipahami oleh manusia serta memiliki instruksi-instruksi tertentu yang dapat langsung diakses oleh komputer. Contohnya bahasa C 3. Bahasa aras tinggi (high level language) Bahasa aras tinggi merupakan bahasa pemrograman yang memiliki aturan-aturan gramatikal dalam penulisan ekspresi atau pernyataan dengan standar bahasa yang dapat dipahami secara langsung oleh manusia. Contohnya bahasa Pascal, Fortran, Cobol, Basic dan lain-lain. 4. Bahasa berorientasi object (object oriented language) Merupakan bahasa pemrograman yang mengandung “kapsul-kapsul” yang berisi fungsi-fungsi untuk menyelesaikan suatu masalah. Dengan bahasa ini pemrograman tidak lagi harus menuliskan secara detail semua pernyataan dan ekspresi pada bahasa aras tinggi, melainkan cukup dengan memasukkan kriteria-kriteria yang dikehendaki saja dan kemudian akan menggunakan kapsul-kapsul tersebut untuk memecahkan masalah tersebut. Contohnya adalah bahasa C++, Visual FoxPro, Visual Basic, Visual Delphi, Visual Java, dsb. Agar komputer dapat memahami program yang disusun dengan suatu bahasa pemrograman, maka dibutuhkan suatu penerjemah, yaitu interpreter dan compiler.
Bahan Ajar Algoritma dan Pemrograman I, oleh : Dodon Yendri, M.Kom
5
1. Interpreter Berasal dari kata to interpret yang berarti menerjemahkan atau mengartikan. Interpreter merupakan penerjemah bahasa pemrograman yang menerjemahkan instruksi demi instruksi pada saat eksekusi program. Pada saat menerjemahkan, interpreter akan memeriksa sintaksis leksikal dan semantik setiap instruksi program. Jika ditemukan kesalahan sintaks (sintax error) maka interpreter akan menampilkan pesan kesalahan dan proses eksekusi program akan langsung berhenti. Berikut adalah cara kerja interpreter :
2. Compiler Berasal dari kata to compile yang berarti menyusun, mengumpulkan dan menghimpun. Compiler merupakan penerjemah bahasa pemrograman yang menerjemahkan instruksi-instruksi dalam satu kesatuan modul kedalam bahasa mesin (object program). Kemudian object program akan mengalami proses linking yang berfungsi untuk menggabungkan modul tersebut dengan modul lain yang berkaitan, seperti data tentang karakter mesin, file-file pustaka atau object program yang berkaitan dengan object program tersebut sehingga dihasilkan suatu file execute program yang akan dieksekusi oleh komputer. Berikut adalah cara kerja compiler.
Bahan Ajar Algoritma dan Pemrograman I, oleh : Dodon Yendri, M.Kom
6
Sistematika Penulisan Program Secara umum, sistematika pokok penulisan program terdiri dari dari : inisialisasi, input, proses, output. Contoh : Buatlah program untuk menghitung harga premium dan solar bila diketahui banyaknya bahan bakar yang dibeli 10,5 liter. Sedangkan harga premium liternya adalah Rp. 4,500 dan harga solar per liternya adalah Rp. 4,200. Tampilan yang diinginkan adalah jumlah bahan bakar yang dibeli, harga 10,5 liter premium dan harga 10,5 liter solar. Inisialisasi Input Proses Output End
: Rem ‘Program menghitung harga bahan bakar’ : Liter = 10,5 : Premium = Liter * 4500 Solar = Liter * 4200 : Cetak Liter, Premium, Solar
Testing dan Debungging Testing adalah proses mengeksekusi program secara intensif untuk menemukan kesalahan, sedangkan Debugging adalah saat menemukan kesalahan sampai kesalahan itu diperbaiki sehingga tidak ada kesalahan lagi. Dokumentasi Dokumentasi program merupakan catatan kegiatan pemrograman yang dimulai dari saat program dibuat sampai program diimplementasikan, dengan tujuan agar program dapat diubah sewaktuwaktu oleh pemrogram itu sendiri maupun oleh orang lain. Pemeliharaan Program yang sudah selesai disusun pasti membutuhkan pemeliharaan atau perawatan yang meliputi : Penambahan atau peningkatan atau perbaikan Adaptasi program dengan produk perangkat keras atau perangkat lunak yang baru Pembentukan terhadap kesalahan yang timbul
Bahan Ajar Algoritma dan Pemrograman I, oleh : Dodon Yendri, M.Kom
7
PENYAJIAN ALGORITMA
Secara garis besar algoritma dapat disajikan dengan dua teknik yaitu teknik tulisan/teks dan teknik gambar. Teknik tulisan/teks biasanya menggunakan English Structure atau Pseudocode. Basis dari English Structure adalah bahasa Inggris, tetapi juga dapat ditulis dalam bahasa Indonesia. Sedangkan teknik gambar biasanya menggunakan metode structure chart, hierarchy plus inputprocess-output, flowchart dan Nassi Schneiderman chart. (pembahasan hanya pada flowchart). Penulisan Teks Algortima Pada dasarnya teks algoritma selalu disusun oleh tiga bagian/blok, yakni : Judul algoritma Kamus dan Algoritma. Setiap blok disertai dengan komentar untuk memperjelas maksud teks yang dituliskan. Komentar adalah kalimat yang diapit oleh tanda kurung krawal “{}” atau kurung buka dan asterisk dan asterisk kurung tutup “(* *)” JUDUL {penjelasan tentang algoritma, yang berisi uraian singkat mengenai apa yang dilakukan oleh algoritma} KAMUS {semua nama yang dipakai, meliputi tipe, nama tetapan, nama peubah, nama prosedur dan nama fungsi yang didefinisikan} ALGORITMA {semua langkah/aksi algoritma dituliskan disini} Contoh : Algoritma menghitung luas segitiga. HIT_LUAS_SEGITIGA {menghitung luas segitiga untuk panjang dan tinggi tertentu. Panjang alas (a) dan tinggi segitiga (t) dibaca dari piranti masukan. Luas segitiga adalah L=1/2 at} KAMUS a : real {panjang alas segitiga, dalam satuan cm } t : real {tinggi segitiga, dalam satuan cm } L : luas {luas segitiga, dalam satuan cm } ALGORITMA input(a,t) L a*t/2 output(L)
Bahan Ajar Algoritma dan Pemrograman I, oleh : Dodon Yendri, M.Kom
8
Terjemahan algoritma kedalam Program Pascal dan C : Pascal : Program HIT_LUAS_SEGITIGA; {menghitung luas segitiga untuk panjang segitiga dan tinggi tertentu. Panjang alas (a) dan tinggi segitiga (t) dibaca dari piranti masukan. Luas segitiga adalah L=1/2 at} { KAMUS } Var a : real; {panjang alas segitiga, dalam satuan cm} t : real; {tinggi segitiga, dalam satuan cm} L : real; {luas lingkaran, dalam satuan cm} { ALGORITMA } Begin write(‘Ketikkan panjang alas segitiga : ‘);readln(a); write(‘Ketikkan tinggi segitiga : ‘);readln(t); L := a*t/2 writeln(‘Luas segi tiga = ‘, L); End. C: /* PROGRAM HIT_LUAS_SEGITIGA */ /* menghitung luas segitiga untuk panjang segitiga dan tinggi tertentu. Panjang alas (a) dan tinggi segitiga (t) dibaca dari piranti masukan. Luas segitiga adalah L=1/2 at */ #include <stdio.h> Main() { /* KAMUS */ float a; {panjang alas segitiga, dalam satuan cm} float t; {tinggi segitiga, dalam satuan cm} float L; {luas lingkaran, dalam satuan cm2} /* ALGORITMA */ printf(“Ketikkan panjang alas segitiga : “); scanf(“%f”, &a); printf(“Ketikkan tinggi segitiga : “); scanf(%f”, &t); L = a*t/2 printf(“Luas segi tiga = “ %f \n”, L); }
Beberapa hal penting yang harus diketahui dari bahasa C : 1. Bahasa C bersifat case sensitive. Artinya bahasa C membedakan huruf besar (kapital) dengan huruf kecil . Nama yang ditulis dengan huruf besar dianggap berbeda kalau ditulis dengan huruf kecil). Bahan Ajar Algoritma dan Pemrograman I, oleh : Dodon Yendri, M.Kom
9
Misalnya : N tidak sama dengan n nama_orang tidak sama dengan NAMA_ORANG HitKar tidak sama dengan hitkar Berbeda dengan Pascal, Pascal tidak memberdakan nama yang ditulis dengan huruf besar dan huruf kecil, dimana : N sama dengan n nama_orang sama dengan NAMA_ORANG HitKar sama dengan hitkar 2. Dalam bahasa C, kamus yang didefinisikan diluar sebelum kata Main() diaggap sebagai kamus global, artinya semua nama yang didefinisikan didalam kamus akan dikenal diseluruh bagian program, termasuk didalam fungsi dan prosedur yang digunakan. Apabila kamus dididefinisikan di dalam main(), maka nama didalam kamus hanya dikenal oleh program utama saja dan tidak dikenal oleh fungsi atau prosedur. 3. Dalam bahasa C komentar ditulis diantara “/*” dan “*/”. Sedangkan dalam bahasa Pascal komentar dapat ditulis diantara “{ dan }” atau diantara “(* dan *)”.
PseudoCode Pseudo artinya mirip/imitasi/tiruan. Code artinya program. Jadi PseudoCode adalah algoritma yang ditulis dalam bahasa yang mirip bahasa pemrograman. Biasanya penulisan PseudoCode mendekati bahasa pemrograman Basic, Pascal maupun C. Contoh sebuah PseudoCode : Open(ArsipMhs1,1) Open(ArsipMhs2,2) Fread(ArsipMhs1, Mhs) if (Mark(Mhs) = true) then Output(‘Arsip kosong…’) else While (Mark(Mhs) = false) do JumNil 0 nMK 1 currentNIM Mhs.NIM {record1 dari ArsipMhs1} Repeat JumNil JumNil + Mhs.Nilai nMK nMK + 1 Fread(ArsipMhs1,Mhs) Until (currentNIM <> Mhs.NIM) Rata JumNil/nMK Fwrite(ArsipMhs2, <currentNIM, Rata>) Output(currentNIM,Rata) Endwhile EndIf Close(ArsipMhs1) Close(ArsipMhs2) Bahan Ajar Algoritma dan Pemrograman I, oleh : Dodon Yendri, M.Kom
10
Flowchart Adalah suatu metode untuk menggambarkan tahap-tahap pemecahan masalah dengan merepresentasikan simbol-simbol tertentu yang mudah dimengerti, mudah digunakan dan standar. Tujuan utama penggunaan flowchart adalah untuk menggambarkan suatu tahap penyelesaian masalah secara sederhana, terurai, rapi dan jelas dengan menggunakan simbol-simbol standar. Dalam penulisan flowchart dikenal dua model, yaitu sistem flowchart dan program flowchart. 1. Sistem Flowchart Merupakan diagram alir yang menggambarkan suatu sistem peralatan komputer yang digunakan dalam proses pengolahan data serta hubungan antar peralatan tersebut. Berikut adalah gambar simbol-simbol standar yang banyak digunakan pada penggambaran sistem flowchart seberta contoh penggunaannya.
Pita magnetik
Kartu plong/ keyboard
Punched Paper Tape
On Line Storage / VDU
Input/Output
Magnetic Drum
Process
Magnetic Disc
Off Line Storage
Proses sortir
Proses merge
Arus/alir
Contoh pemakaian system flowchart.
Bahan Ajar Algoritma dan Pemrograman I, oleh : Dodon Yendri, M.Kom
11