bahan uk 1 (sampai materi rekursif)

Download Report

Transcript bahan uk 1 (sampai materi rekursif)

BAB I
DASAR-DASAR ALGORITMA
ALGORITMA
An algorithm is “a precise rule (or set of rules)
specifying how to solve some problem.”
(thefreedictionary.com)
 Muhammad al-Khwarizmi
Arab mathematician of the court of Mamun in
Baghdad in the 9th century…the word algorithm
is said to have been derived from his name. Much
of the mathematical knowledge of medieval
Europe (algebra) was derived from Latin
translations of his works. (encyclopedia.com)
 • The study of algorithms is one of the key
foundations of computer science.

FIRST ALGORITHM
Perhatikan pseudocode berikut ini
(1) Input x
(2) Input y
(3) While x  0 do
(a) b= x modulo y
(b) set x= y
(c) set y = b
(d) kembali ke langkah 3
(4) Output x
Jika nilai x = 114, dan y = 54, berapa outputnya?

PENYAJIAN ALGORITMA
Kata-kata
 Pseudocode
 Flowchart

ALGORITMA DI KEHIDUPAN SEHARI-HARI
Tuliskan resep membuat nasi goreng!
 Tuliskan langkah-langkah merakit kompor gas!
 Tuliskan langkah-langkah menginstall Windows
XP.
 Tuliskan langkah-langkah menyelesaikan Sistem
Persamaan Linear dua peubah a1x + b1 y =c1 dan
a2x + b2y =c2
 Tuliskan langkah-langkah membuah grafik y =
f(x)

ALGORITMA ADALAH SUATU FUNGSI
APA YANG DIPERLUKAN OLEH
ALGORITMA?
SPESIFIKASI INPUT
 Agar bisa dijalankan sebuah algoritma
memerlukan spesifikasi input yang jelas
 Contoh:

Membuat resep makanan :
 Installasi software :
 Menjahit baju :


Spesifikasi input dalam algoritma komputer
Jenis data apa yang diperlukan
 Berapa banyak data yang diperlukan
 Dari mana data tersebut diinputkan (bentuk form,
atau yang lain)

APA YANG DIPERLUKAN OLEH
ALGORITMA?
PROCESS
 Selain input, algoritma memerlukan langkahlangkah yang jelas dan tepat untuk menyatakan
bagaimna melakukan operasi untuk
mendapatkan output yang diinginkan 
menyatakan proses dalam algoritma
 Algoritma menyatkan kumpulan operas-operasi
dasar yang diasumsikan dimengerti oleh
eksekutor algoritma

Resep makanan: haluskan, goreng, rebus, tiriskan,
…
 Komputasi: add, multiply, modulo, div, output, …

APA YANG DIPERLUKAN OLEH
ALGORITMA?

SPESIFIKASI OUTPUT
Hasil apa yang diperlukan
 Bagaimana penyajian output
 Apa yang terjadi dengan output jika iput error

BAGAIMNA MEMBUAT ALGORITMA BAIK?
Harus menghasilkan output yang benar untuk
input yang legal
 Sebisa mungkin mengeksekusi secara efisien
dengan jumlah langkah seminimal mungkin
 Sebisamungkin didesain sedemikian rupa
sehingga orang lain mampu memahami dan
memodifikasi untuk keperluan lebih lanjut

CONTOH ALGORITMA
Misalkan diberikan algoritma berikut
(1) Input: n
(2) Input : Array A[1], A[2], …A[n] of integer
(3) Set i=2
(4) Set m = A[1]
(5) While i<=n do
(a) if A[i] <m then set m=A[i]
(b) Set i=i+1
(6) Output m

Jika diberikan n = 5 dan A=[4, 7, 3, 5, 9, 8]
MELACAK ALGORITMA
Nilai awal i=2, m=4.
 Berikutnya ada looping yang harus dicek

i
2
3
4
5
m
(1) Input: n=5
(2) Input :
A=[4, 7, 3, 5, 9, 8]
(3) Set i=2
(4) Set m = A[1]
(5) While i<=n do
(a) if A[i] <m then set
m=A[i]
(b) Set i=i+1
(6) Output m
CONTOH ALGORITMA 2
1. Input : n
2. Input : array A[1], A[2], …, A[n] of integer
3. For i=1 to n do
4.
for j=1 to n-1 do
5.
If A[j] > A[j+1], exchange A[j] and
A[j+1]
6. Output A
Jika n = 5 dan A = [8,4,9,3,7], tentukan output nya
CONTOH ALGORITMA 3
Apakah hasil dari algoritma di atas?
 Apakah pada langkah 3 perlu melakukan n kali
perulangan?
 Apakah pada langkah 4 perlu n-1 perulangan
 Coba lakukan algoritma ini untuk input yang sama
1. Input : n
2. Input : array A[1], A[2], …, A[n] of integer
3. For i=1 to n-1 do
for j=1 to n-i do
If A[j] > A[j+1], exchange A[j] and A[j+1]
4. Output A

EFFISIENSI ALGORITMA
Hitunglah pada algoritma 2 dan 3 ada berapa
kali pengecekan if .. Then …
 Apa kesimpulanmu?

LATIHAN
Buat Algoritma dengan kata-kata untuk beberapa
masalah berikut
 Menentukan jenis segitiga berdasarkan panjang sisi
a, b, dan c (lancip, tumpul, siku-siku)
 Menentukan KPK dari dua bilangan integer x dan y
 Menentukan persamaan garis singgung y=f(x) di titik
(x,y)
 Menentukan apakah sebuah bilangan prima atau
bukan
 Mencari nilai Pn(x) dengan input : n, koefisien
A[1..n] dan nilai x dan output hasilnya
ATURAN PENULISAN ALGORITMA DENGAN
PSEUDOCODE)
ALGORITMA Mencari Max
//keterangan tujuan algoritma
//keterangan input
//keterangan output
(1) Input: n
(2) Input: array A[1], A[2], ..A[n] of integer
(3) Process…
(4) Process…
…
(11) Output max
ATURAN PENULISAN ALGORITMA DENGAN
PSEUDOCODE)
SINTAX:
 If …then …else …
If (kondisi) then pernyataan 1
If (kondisi) then
else pernyataan 2
pernyataan 1
 ATAU
pernyataan 2

….
else
if
pernyataan 1
pernyataan 2
else
pernytaan 1
pernytaan 2
ATURAN PENULISAN ALGORITMA DENGAN
PSEUDOCODE)

SINTAX FOR … TO … DO
For i=nilaiawal to nilaiakhir do
pernyataan 1
pernyataan 2
….
pernytaan n
ATURAN PENULISAN ALGORITMA

SINTAX WHILE… DO …
While (kondisi) do
pernyataan 1
pernyataan 2
….
pernytaan n
LATIHAN

Tuliskan algoritma berikut dalam pseudo code






Menentukan apakah sebuah bilangan genap atau
ganjil
Menentukan bilangan terbesar dari tiga angka a, b, c
Menentukan jumlah n bilangan kuadrat pertama
(input bilanagan integer n, output: jumlah n bilangan
kuadrat yang pertama)
Menentukan 4 + 7+10 + ..+ Un (input:n)
PR nomer 1
Menentukan bilangan fibonacci ke-n: 1, 2, 3, 5, 8,
..Fn (Input n)




Menentukan jenis segitiga berdasarkan panjang sisi
a, b, dan c (lancip, tumpul siku-siku) (diketahui c
adalah sisi terpanjang)
Menentukan apakah sebuah bilangan prima atau
bukan
Mencari nilai Pn(x) dengan input : n, koefisien
A[0..n] dan nilai x dan output hasilnya
Mencari solusi SPL dua variabel dengan input
koefisien-koefisien persamaan linear, output adalah
x dan y
LATIHAN
(MENELUSURI ALGORITMA)
PR nomer 2
 Ada sebanyak 100 loker di sebuah asrama, dinomori
secara urut dari 1 sampai 100. Setiap loker
dilengkapi sebuah tombol yang jika ditekan akan
merubah posisi loker. Jika tertutup menjadi terbuka
dan sebaliknya. Posisi awal semua loker tertutup.
Selanjutnya Anda langkah berikut. Langkah
pertama dimulai dari loker 1, Anda tekan tombol
pada semua loker i, i=1,2, …, 100. Pada langkah
kedua, dimulai dari loker nomor 2 Anda tekan tombol
pada loker bernomor genap(2, 4, 6…). Pada langkah
ketiga, dimulai loker nomor 3 Anda tekan tombol
pada loker kelipatan 3 (3, 6, 9, …) dan seterusnya.
Setelah langkah ke 100, ada berapa loker yang
tertutup?
LATIHAN
(MENELUSURI ALGORITMA)
PR ke-3
ALGORITMA Sesuatu
(1) Input: n
(2) Input: array A[1..n] of integer
(3) Set d=
(4) For i=1 to n do
(5)
For j=1 to n do
(6)
If ij and |A[i]-A[j]|<d then
(7)
Set d=A[i]-A[j]
(8) Output d
Tentukan Outputnya jika diberikan n = 8, dan
A=[2 3 7 11 4 14 10 8]
PENYAJIAN ALGORITMA DENGAN
FLOWCHART
Flowcharts digunakan untuk menunjukkan
aliran kontrol dari suatu algoritma berjalan step
by step dalam sajian visual
 Flowcharts terdiri dari beberapa komponen

Sebuah Oval utk menunjukkan START
 Sebarisan Kotak-kotak dengan operas-operasi dalam
algoritma (Kotak bisa persegi panjang, jajar genjang,
belah ketupat)
 Panah-panah untuk menunjukkan urutan kotakkotak dievaluasi dalam algoritma
 Sebuah Oval menunjukkan STOP or END

SEQUENTIAL FLOW
Suatu operasi assignment (penugasan)
memberikan suatu variabel sebuah nilai khusus
atau merubah nilai lama menjadi nilai baru
 Operasi Assignment disajikan dalam flow chart
dengan menggunakan persegi panjang yang
didalamnya dituliskan operasi assignment yang
dimaksud
 Contoh

INPUT
Operasi input memberikan suatu variabel
dengan nilai data yang diberikan oleh
user/pengguna algoritma
 Operasi input disajikan dalam flowchart
menggunakan jajar genjang dengan panah kecil
masuk dari samping
 Isi dari jajar genjang adalah variabel yang
diinisialisasi
 Contoh

OUTPUT
Operasi Output menampilkan nilai data variabel
atau pesan kepada user dalam algoritma
 Output disajikan dalam flowchart menggunakan
jajar genjang dengan panah kecil keluar dari
samping
 Isi dari jajar genjang adalah variabel atau pesan
yang hendak ditampilkan
 Contoh

CONTOH

Algoritma menentukan akar-akar persamaan
kuadrat ax2 +bx + c =0
OPERASI KONDISIONAL
(BERSYARAT)
Operasi bersyarat menetukan aliran algoritma
berdasarkan syarat tertentu
 Digunakan untuk kasus If .. Then … atau while..
Do
 Dilambangkan dengan belah ketupat dengan uji
kondisi di dalamnya
 Contoh:

CONTOH

Algoritma mencari
akar-akar
persamaan ax2 +
bx + c = 0
LATIHAN
PR 4 dan 5
 Sajikan algoritma berikut dalam bentuk flow
chart



Menentukan jenis segitiga berdasarkan panjang sisi
a,b,c (diketahui sisi terpanjang adalah c)
Menentukan nilai dalam huruf (A, B, C, D, E) dari
nilai angka skala 0-100
OPERASI LOOP (PERULANGAN)
Perulangan mengindikasikan adanya operasi
yang dilakukan secara berulang selama kondisi
dipenuhi
 Contoh struktur perulangan : WHILE … DO
 Direpresentasikan dalam flowchart dengan
tanda belah ketupat yang didalamya terdapat
kondisi syarat. Pada dua ujung yang lain
terdapat alur ke mana jika syarat dipenuhi dan
tidak dipenuhi.
 Proses di dalam perulangan bisa terdiri dari satu
operasi atau lebih yang diakhiri dengan panah
kembali ke atas untuk memeriksa kembali
syarat

OPERASI LOOP (PERULANGAN)

Contoh
OPERASI PERULANGAN

Struktur perulangan : FOR … TO … DO
BUAT FLOWCHART UNTUK MENENTUKAN
ALGORITMA BERIKUT
PR NO 6, 7, 8
 Menentukan nilai 2n (Gunakan while do)
 Buat flowchart untuk soal nomer 1 dan 3
ALGORITMA REKURSIF

Rekursi

Operasi rekursi adalah operasi yang didefinisikan
dengan dirinya sendiri
ALGORITMA REKURSIF

Setiap operasi rekursi yg didefinisikan biasanya
terdiri dari:

Base case (kasus basis):


Kasus basis merupakan kasus yang paling sederhana dari
operasi rekursif yang dapat langsung mendapatkan hasil
Recursive case (kasus rekursi)
Kasus rekursi membawa suatu permasalah ke
permasalahan yang lebih sederhana atau lebih kecil ruang
lingkupnya dari masalah awal
 Pada akhirnya kasus rekursi membawa permasalahn ke
kasus basisnya

ALGORITMA REKURSIF

Ingat cara menentukan n! dengan struktur
perulangan??
n!= n(n-1)(n-2)…1
 Kita dapat definisikan dengan algoritma rekursi:
 Karena (n-1)(n-2)…(2)(1) = (n-1)!



n! = n(n-1)!, for n > 0 (recursive case)
n! = 1 for n = 0 (base case)
ALGORITMA REKURSIF

Jadi untuk n! dapat didefinisikan sebuah
algoritma
Algoritma Rekursi(n)
 if n=0 then output 1
 else output n*Rekursi(n-1)

ALGORITMA REKURSIF

Tentukan output Hitung (10) dari algoritma
berikut:
(1) Algoritma Hitung(n)
(2) If n=0 then output 0
(3) else output 2+Hitung(n-1)
(1) Algoritma Hitung(n)
(2) If n=1 then output 2
(3) Else output 2*Hitung(n-1)
ALGORITMA REKURSIF
Algoritma Hitung(a,b)
 if a<=1 then Output 1
 else if b<=1 then Output 2

else Output Hitung(a-2,b)+Hitung(a,b-2);
Tentukan hasil Hitung(4,6)

Algoritma Ulang(n)
 if n=0 then Output 1
 else if n=1 then Output 1

else
If (n mod 2)=0 then Output Ulang(n-1)+2*Ulang(n-2)

else Output ulang(n-1)-ulang(n-2);
Tentukan Ulang(6)

ALGORITMA REKURSIF

Buatlah Algoritma Rekursi untuk menentukan
Deret 1+4+9+16+…
 Suku ke n dari barisan: 1, 6, 11, 16, …
 Suku ke-n dari barisan : 2, 6, 18, 54, …
 Suku ke-n dari Barisan fibonacci: 1, 2, 3, 5, 8, ….
