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 • •
2.
Output sesuai dg yg dikehendaki dari input yang diberikan Algoritma bagus, output salah à bukan algoritma yang baik
Seberapa baik hasil yang dicapai oleh algoritma • •
3.
Terutama untuk output yang berupa estimasi, perkiraan, prediksi, aproksimaksi Harus mampu memberikan hasil sedekat mungkin dengan nilai sebenarnya
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
#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 • •
•
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 • •
•
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
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
Start
Input(Dt)
J = Dt div 3600 S = Dt mod 3600 M = S div 60 D = S mod 60
Output(J, M, D)
Dalam Pseudocode Input (Dt); J = Dt div 3600 S = Dt mod 3600 M = S div 60 D = S mod 60
End
Flowchart Konversi Detik
18
Struktur Pemilihan • Bentuk instruksi pemilihan – IF – IF – ELSE – SWITCH – IF Bersarang
19
Struktur Pemilihan IF - ELSE Pseudocode : Pernyataan A Pernyataan A If then Else EndIf false true Pernyataan 2 KONDISI Pernyataan B
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 : Case :
… {otherwise aksi} endcase
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 endfor
Indeks = nilai awal Indeks = indeks + 1 pilihan
Contoh dlm bhs C : int i; i = 3; for (i=1, i<=3, i++) { Printf (i); }
true
Badan loop
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 do 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 while
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