ALGORITMA RINTA KRIDALUKMANA SISKOM UNDIP 1
ALGORITMA DEFINISI Logika, metode dan tahapan (urutan) sistematis yang digunakan untuk memecahkan suatu permasalahan Spesifikasi urutan langkah untuk melakukan pekerjaan tertentu 2
PERTIMBANGAN PEMILIHAN ALGORITMA 1. Algoritma haruslah benar Output sesuai dg yg dikehendaki dari input yang diberikan Algoritma bagus, output salah à bukan algoritma yang baik 2. Seberapa baik hasil yang dicapai oleh algoritma Terutama untuk output yang berupa estimasi, perkiraan, prediksi, aproksimaksi Harus mampu memberikan hasil sedekat mungkin dengan nilai sebenarnya 3. Efisiensi algoritma Ditinjau dari 2 hal, yaitu waktu dan memori Algoritma baik + waktu lama à TIDAK EFISIEN Apalagi bila memori yang digunakan besar, akan menambah ketidakefisienan dari algoritma 3
ALGORITMA VS PROGRAM Program adalah kumpulan instruksi komputer Kata, ekspresi, pernyataan yang disusun dan dirangkai menjadi satu kesatuan prosedur, yang berupa urutan langkah untuk menyelesaikan masalah yang diimplementasikan dengan menggunakan bahasa pemrograman Metode dan tahapan sistematis dalam program adalah algoritma. Bahasa Pemrograman : prosedur atau tata cara penulisan program Pemrograman adalah proses mengimplementasikan urutan langkah untuk menyelesaikan suatu masalah dengan menggunakan bahasa pemrograman tertentu PROGRAM = STRUKTUR DATA + ALGORITMA PEMILIHAN STRUKTUR DATA YANG KURANG TEPAT AKAN MEMBUAT PROGRAM MENJADI KURANG BAIK WALAU ALGORITMA SUDAH BAIK 4
Struktur Data Struktur data merujuk pada koleksi/kumpulan peubah komputer yang saling berhubungn untuk tujuan tertentu. #include <iostream> #include <string> using namespace std; struct Mahasiswa { string nama; string alamat; int nomahasiswa; double IPK; }; void printinfo(const Mahasiswa &m) { cout << Nomer : << m.nomahasiswa << endl; cout << Nama : << m.nama << endl; cout << Alamat : << m.alamat << endl; cout << IPK : << m.ipk << endl; } int main() { Mahasiswa yayuk; yayuk.nama = Yayuk Dwinanti ; yayuk.alamat = Jl. Pahlawan 15 Surabaya ; yayuk.nomahasiswa = 123; yayuk.ipk = 3.75; printinfo(yayuk); return 0;
KEUNTUNGAN PEMBUATAN ALGORITMA Pembuatan atau penulisan algoritma tidak tergantung pada bahasa pemrograman manapun Notasi algoritmik dapat diterjemahkan ke dalam berbagai bahasa pemrograman Apapun bahasa pemrogramannya, output yang akan dikeluarkan sama karena algoritmanya sama 6
YANG PERLU DIPERHATIKAN Teks algoritma berisi deskripsi langkahlangkah penyelesaian masalah, dapat ditulis dalam notasi apapun asalkan mudah dimengerti dan dipahami Notasi algoritmik bukan notasi bahasa pemrograman, karena itu tidak dapat dijalankan oleh komputer Perlu translasi ke bahasa pemrograman 7
TRANSLASI ALGORITMA à BAHASA PEMROGRAMAN Hal-hal yang perlu diperhatikan : Pendeklarasian variabel Pemilihan tipe data Pemakaian instruksi-instruksi Aturan sintaks Tampilan hasil Cara pengoperasian compiler atau intepreter 8
SYARAT MEMBUAT ALGORITMA YANG BAIK Tingkat kepercayaannya tinggi (realibility) Hasil yang diperoleh harus berakurasi tinggi dan benar Pemrosesan yang efisien (cost rendah) Proses harus diselesaikan secepat mungkin dengan frekuensi kalkulasi yang sependek mungkin Sifatnya general Bukan untuk menyelesaikan satu kasus saja, tetapi sifatnya general Bisa Dikembangkan (expandable) Bisa dikembangkan lebih jauh berdasarkan perubahan requirement yang ada Mudah dimengerti Portabilitas tinggi Bisa diimplementasikan di berbagai platform komputer dan bahasa pemrograman 9
CIRI-CIRI ALGORITMA YANG BAIK Precise (tepat, betul, teliti) Instruksi tidak ada keraguan Instruksi dinyatakan secara eksplisit Setiap langkah harus jelas dan pasti Contoh : Tambahkan 1 atau 2 pada x à terdapat keraguan Jumlah langkah atau instruksi berhingga atau tertentu Untuk kasus yang sama, banyaknya langkah harus tetap dan tertentu meskipun datanya berbeda Efektif Tidak boleh ada instruksi yang tidak mungkin dikerjakan oleh pemroses Harus terminate Ada kriteria untuk berhenti Output yang dihasilkan tepat 10
TAHAP PEMROGRAMAN : Analisa Problem Pembuatan Program Perancangan Algoritma Test Test Dokumentasi Dipakai FASE I : PROBLEM SOLVING FASE II : IMPLEMENTASI 11
TAHAP PEMROGRAMAN : I. Fase Problem Solving Merancang atau Merumuskan Logika Kondisi awal, yaitu input yang tersedia Kondisi akhir, yaitu output yang diinginkan Data lain yang tersedia Operator yang tersedia Syarat atau kendala yang harus dipenuhi Contoh Kasus : Menghitung biaya percakapan di wartel Input yang tersedia : jam mulai bicara dan jam selesai bicara Output yang diinginkan adalah biaya percakapan Data lain yang tersedia adalah besarnya pulsa yang digunakan dan biaya per pulsa Operator yang tersedia adalah pengurangan (-), penambahan (+), dan perkalian (*) Syarat kendala : aturan jarak dan tarif berdasarkan waktu Error handling 12
TAHAP PEMROGRAMAN : II. Fase Implementasi Menulis program Standar penilaian program Standar teknik pemecahan masalah Teknik top-down à suatu masalah yang kompleks dibagi ke dalam beberapa kelompok masalah yang lebih kecil Teknik bottom-up à menggabungkan beberapa prosedur menjadi satu kesatuan program sebagai penyelesaian masalah tersebut Standar penyusunan program Kebenaran logika dan penulisan Waktu minimum untuk penulisan program Ekspresi penggunaan memori Kemudahan perawatan dan mengembangkan program User friendly Portability Pemrograman modular Standar Perawatan Program Dokumentasi Penulisan Instruksi Standar prosedur 13
STRUKTUR DASAR ALGORITMA/ STRUKTUR KONTROL Struktur dasar algoritma ada 3, yaitu : Struktur runtunan/sequential Digunakan untuk program yang instruksinya sequential atau urutan Struktur pemilihan/conditional Digunakan untuk program yang menggunakan pemilihan atau penyeleksi kondisi Struktur perulangan/iterasi Digunakan untuk program yang instruksinya akan dieksekusi berulang-ulang 14
Struktur Runtunan Runtunan merupakan struktur dasar algoritma terdiri dari satu atau lebih instruksi Dikerjakan secara berurutan Pada dasarnya semua program dibuat berdasarkan struktur algoritma runtunan A1 A2 A3 A4 15
Contoh kasus runtunan 1 Terdapat 2 buah variabel a dan b yang memiliki nilai a = 4 dan b = 5. Bagaimana algoritma untuk mempertukarkan nilai a dan b sehingga nilai a = 5 dan nilai b = 4? 16
Contoh kasus runtunan 2 Menghitung luas persegi panjang Algoritmanya : Masukkan panjang dan lebar Kalikan panjang dan lebar, simpan hasil sebagai luas Tuliskan hasilnya Start Input(P,L) Luas = P * L Output(Luas) Dalam Pseudocode Input (p,l); Luas = p * l; Output (Luas); End Flowchart Hitung Luas Persegi Panjang 17
Contoh kasus runtunan 3 Konversikan total detik menjadi berapa jam lebih berapa menit lebih berapa detik Algoritmanya : Baca data total detik Bagi data dengan 3600 Simpan hasil bagi dalam J dan sisa dalam S Bagi S dengan 60 Simpan hasil dalam M dan sisa bagi dalam D Tulis hasil J, M, D Dalam Pseudocode Input (Dt); J = Dt div 3600 S = Dt mod 3600 M = S div 60 D = S mod 60 Start Input(Dt) J = Dt div 3600 S = Dt mod 3600 M = S div 60 D = S mod 60 Output(J, M, D) End Flowchart Konversi Detik 18
Struktur Pemilihan Bentuk instruksi pemilihan IF IF ELSE SWITCH IF Bersarang 19
Struktur Pemilihan IF - ELSE Pseudocode : Pernyataan A If <kondisi> then <pernyataan 1> Else <pernyataan 2> EndIf Pernyataan B Pernyataan 2 Pernyataan A false true KONDISI Pernyataan 1 Pernyataan B Instruksi ini digunakan untuk menentukan tindakan yang akan digunakan apabila kondisi bernilai benar dan apabila kondisi bernilai salah 20
Struktur Pemilihan SWITCH Pseudocode : Switch<pilihan> Case <pilihan1> : <aksi1> Case <pilihan2> : <aksi2> {otherwise aksi} endcase pilihan pilihan Contoh dlm bhs C : Switch(na){ Case A : na = 4;break; case B : na = 3;break; case C : na = 2;break; default : na = 0; } Aksi 1 Aksi 1 Aksi 1 Aksi 1 Pernyataan berikutnya 21
Struktur Perulangan Macam-macam instruktur perulangan FOR WHILE WHILE-DO 22
STRUKTUR PERULANGAN FOR Instruksi perulangan yang paling sering digunakan Memiliki 3 parameter, yaitu : Nilai awal (initial value) Test kondisi yang menentukan akhir LOOP Penentu perubahan nilai 23
STRUKTUR PERULANGAN FOR Pseudocode : For indeks = nilai_awal to nilai_akhir do <instruksi/blok instruksi> endfor Indeks = nilai awal pilihan true Indeks = indeks + 1 Badan loop Contoh dlm bhs C : int i; i = 3; for (i=1, i<=3, i++) { Printf (i); } false Pernyataan berikutnya Flowchart Instruksi FOR format naik 24
STRUKTUR PERULANGAN WHILE Instruksi perulangan yang paling sering digunakan Memiliki 3 parameter, yaitu : Nilai awal (initial value) Test kondisi yang menentukan akhir LOOP Penentu perubahan nilai 25
STRUKTUR PERULANGAN WHILE-DO Pseudocode : While <kondisi> do <instruksi/blok instruksi> endwhile pilihan true Badan loop false Contoh dlm bhs C : int i; i = 3; while (i>0 { printf (i); i--; } Pernyataan berikutnya Flowchart Instruksi WHILE- DO 26
STRUKTUR PERULANGAN DO-WHILE Pseudocode : do <instruksi/blok instruksi> while <kondisi> Badan loop pilihan true false Contoh dlm bhs C : int i; i = 3; do { printf (i); i--; } while(i>3); Pernyataan berikutnya Flowchart Instruksi DO-WHILE 27