download

T0616
ALGORITMA DAN PEMROGRAMAN
(1)
SUBANDIJO
UNIVERSITAS BINA NUSANTARA
FAKULTAS ILMU KOMPUTER
JAKARTA, 2005
7/11/2017
T0616 - Algoritma dan Pemrograman
1
RUJUKAN
• Deitel, H.M. and Deitel, P.J. (2001). C HOW TO
PROGRAM. 3rd edition. Prentice Hall, NJ.
• Gottfried, B.S. (1996). Schaum’s Outline Series.
Theory and Problems of Programming with C.
McGraw Hill, NY.
• Ngoen. Th. S. (2004). Pengantar Algoritma dengan
Bahasa C. Penerbit Salemba Teknika.
• Sedgewick, R. (1992). Algorithms in C++. Addison
Wesley.
• Hubbard, J. (1996). Schaum’s Outline Series. Theory
and Problems of Programming with C++. McGraw
Hill, NY.
7/11/2017
T0616 - Algoritma dan Pemrograman
2
ALGORITMA
•
•
•
•
•
•
•
ASAL-USUL DAN DEFINISI ALGORITMA.
TAHAPAN PENGEMBANGAN ALGORITMA.
KRITERIA ALGORITMA YANG BAIK
KLASIFIKASI ALGORITMA
PENYAJIAN ALGORITMA.
DAFTAR ALGORITMA SEDERHANA DAN LANJUT.
CONTOH ALGORITMA: E(UCLIDEAN),
BABYLONIA.
7/11/2017
T0616 - Algoritma dan Pemrograman
3
DEFINISI
• ALGORITMA ADALAH SEKUMPULAN LANGKAHLANGKAH TERBATAS UNTUK MENCARI SOLUSI
SUATU MASALAH.
• BERASAL DARI KATA ALGORIS DAN RITMIS.
AWALNYA DIUNGKAPKAN OLEH ABU JA’FAR
MOHAMMED IBN MUSA AL KHOWARIZMI DALAM
BUKU AL JABR W’AL MUQABALA.
• DI PEMROGRAMAN, ALGORITMA DIDEFINISIKAN
SEBAGAI METODE YANG TERDIRI DARI
LANGKAH-LANGKAH TERSTUKTUR UNTUK MENCARI SOLUSI SUATU MASALAH DENGAN BANTUAN KOMPUTER.
7/11/2017
T0616 - Algoritma dan Pemrograman
4
TAHAPAN PENGEMBANGAN
ALGORITMA
MULAI
BATASAN
MASALAH
DESAIN
MODEL
DESAIN
ALGORITMA
PEMROGRAMAN
KOREKSI
ALGORITMA
UJI DAN
ANALISIS
DOKUMENTASI
7/11/2017
T0616 - Algoritma dan Pemrograman
SELESAI
5
KRITERIA ALGORITMA YANG BAIK
• MEMPUNYAI LOGIKA YANG TEPAT UNTUK
MEMECAHKAN MASALAH.
• MENGHASILKAN OUTPUT YANG BENAR DALAM
WAKTU YANG SINGKAT.
• DITULIS DENGAN BAHASA BAKU TERSTRUKTUR
SEHINGGA TIDAK MENIMBULKAN ARTI GANDA.
• DITULIS DENGAN FORMAT BAKU SEHINGGA
MUDAH DIIMPLEMENTASIKAN KEDALAM BAHASA
PEMROGRAMAN.
• SEMUA OPERASI DIDEFINISIKAN DENGAN JELAS
DAN BERAKHIR SESUDAH SEJUMLAH LANGKAH.
7/11/2017
T0616 - Algoritma dan Pemrograman
6
KLASIFIKASI ALGORITMA
• PARADIGMA / METODOLOGI
DIVIDE AND CONQUER
DYNAMIC PROGRAMMING
THE GREEDY METHOD
LINEAR PROGRAMMING
SEARCH AND ENUMERATION
THE PROBABILISTIC AND HEURISTIC
• IMPLEMENTASI
RECURSIVE ALGORITHM
SERIAL AND PARALLEL ALGORITHM
7/11/2017
T0616 - Algoritma dan Pemrograman
7
PENYAJIAN ALGORITMA
•
•
•
•
NARASI (URAIAN)
TERSTRUKTUR, e.g. STRUCTURED ENGLISH
PSEUDOCODE
FLOW CHART
7/11/2017
T0616 - Algoritma dan Pemrograman
8
DAFTAR ALGORITMA
• DASAR
• LANJUT
– TUKAR DUA PEUBAH
– LOOP UNTUK MENGHITUNG FAKTORIAL
– PENCARIAN LINEAR
– MENGHITUNG RATARATA ELEMEN ARRAY
– MENCARI NILAI
MAKSIMUM
– AKUMULATOR UNTUK
MENGHITUNG TOTAL
– BUBBLE SORT
7/11/2017
– MENGHITUNG
AMORTIZED INTEREST
– ALGORITMA
BABYLONIA
– ALGORITMA
EUCLIDEAN
– PENCARIAN
INTERPOLASI
– HEAP SORT
– PARALLEL ALGORITHM
T0616 - Algoritma dan Pemrograman
9
ALGORITMA EUCLIDEAN : NARASI
• ALGORITMA E(UCLIDEAN) MENTRANSFORM PASANGAN INTEGER POSITIF (M,N) MENJADI (R,0)
DENGAN MEMBAGI SECARA BERULANG INTEGER YANG LEBIH BESAR DENGAN INTEGER
YANG LEBIH KECIL DAN MENGGANTI INTEGER
BESAR DENGAN INTEGER KECIL DAN INTEGER
KECIL DENGAN SISA HASIL BAGI. JIKA SISA HASIL BAGI = 0 MAKA INTEGER LAIN DALAM PASANGAN TERSEBUT ADALAH GCD DARI PASANGAN ASLI. SEBAGAI CONTOH, JIKA M=532
DAN N=112 MAKA ALGO-RITMA E AKAN MEREDUKSI (532,112) MENJADI (28,0) SBB: (532,112) 
(112,84)  (84,28)  (28,0).
7/11/2017
T0616 - Algoritma dan Pemrograman
10
ALGORITMA EUCLIDEAN:
TERSTRUKTUR
•
•
•
•
E1: R ADALAH SISA HASIL BAGI M DAN N
E2: JIKA R = 0, SELESAI. GCD = N
E3: JIKA TIDAK, M  N, N  R
E4: ULANGI E1 - E3 SAMPAI R = 0.
7/11/2017
T0616 - Algoritma dan Pemrograman
11
ALGORITMA EUCLIDEAN:
VISUALISASI
M
N
R= M%N
532
112
84
112
84
28
84
28
0
28
0
7/11/2017
T0616 - Algoritma dan Pemrograman
12
ALGORITMA BABILONIA
(NARASI)
• ALGORITMA BABILONIA UNTUK MENGHITUNG 2
DENGAN METODE SECARA BERULANG
MENGGANTI SUATU NILAI ESTIMASI X DENGAN
NILAI ESTIMASI YANG LEBIH DEKAT YAITU (X +
2/X) / 2 YANG TIDAK LAIN ADALAH RATA-RATA X
DAN 2/X.
7/11/2017
T0616 - Algoritma dan Pemrograman
13
ALGORITMA BABILONIA
(PSEUDO CODE)
Let e be your tolerance; e.g. e = 5E-12
Let x0 = 0.0
Let x1 = 1.0
Repeat while absolute (x0-x1) < e
Let x0 = x1
Let x1 = (x0 + 2/x1) / 2
Return x1
7/11/2017
T0616 - Algoritma dan Pemrograman
14
ALGORITMA BABILONIA
(PROGRAM)
• MENGHITUNG 2 DENGAN CARA MENGGANTI NILAI ESTIMASI X DENGAN NILAI ESTIMASI YANG LEBIH DEKA (X +
2/X)/2 SAMPAI SUATU KONDISI DIPENUHI.
#include<stdio.h>
#include<math.h>
main() {
const double tol = 5e-08;
double x = 2.0;
while(fabs(x*x-2.0)>tol) {
BAGAIMANA MENGHIprintf(“\n%f”,x);
TUNG N, UNTUK N = 3,
4, 5, …? ADAKAH
x=(x+2.0/x)/2.0;
RUMUS UNTUK MENG}
HITUNG AKAR TIGA
printf(“\nx = %f, x^2 = %f”,x, x*x);
SUATU BILANGAN?
}
7/11/2017
T0616 - Algoritma dan Pemrograman
15
THE END
“...ALL YOU NEED IS LOVE…”
7/11/2017
T0616 - Algoritma dan Pemrograman
16