Putaran ke-1

advertisement
PEMROGRAMAN
Belajar memrogram :
belajar tentang metodologi pemecahan
masalah, kemudian menuangkannya dalam
suatu notasi yang mudah dipahami
Belajar bahasa pemrograman :
belajar memakai suatu bahasa
pemrograman, aturan tatabahasanya
(syntaxis), instruksi, tatacara pengoperasian
“compiler”
Urutan pekerjaan dalam pembuatan
program :
1. Pendefinisian masalah  apa input & outputnya
2. Penyusunan algoritma  diagram alir/ flowchart
3. Pengkodean (coding)  menerjemahkan
algoritma kedalam bahasa pemrograman
4. Runing & debugging  menjalankan program
dan memperbaiki kesalahan yang ada
5. Dokumentasi program  arsip program,
termasuk listing program dan penjelasannya
Algoritma :
adalah urutan logis pengambilan keputusan
untuk pemecahan masalah (KBBI – Kamus
Besar Bahasa Indonesia , Balai Pustaka,
1988)  urutan langkah-langkah logis
penyelesaian masalah yang disusun secara
sistematis
Melaksanakan algoritma berarti mengerjakan
langkah-langkah di dalam algoritma tersebut 
pemroses harus mengerti setiap langkah dalam
algoritma
Bila pemrosesnya adalah komputer, maka
algoritma harus ditulis dalam notasi bahasa
pemrograman  disebut sebagai program
komputer
Jadi :
* algoritma adalah urutan langkah-langkah
penyelesaian masalah
* program komputer adalah realisasi algoritma
dalam bahasa pemrograman
Contoh persoalan (1) :
ada 2 buah bejana, sebut saja bejana A dan
bejana B, dimana bejana A berisi larutan
berwarna merah dan bejana B berisi larutan
berwarna biru.
Kedua isi bejana tersebut akan dipertukarkan,
sehingga bejana A akan berisi larutan
berwarna biru dan bejana B berisi larutan
berwarna merah.
Buatlah algoritma pemecahan masalahnya !
•Pendefinisian masalah :
- masukan (input) :
bejana A berisi larutan berwarna merah
bejana B berisi larutan berwarna biru
- keluaran (output) :
bejana A berisi larutan berwarna biru
bejana B berisi larutan berwarna merah
* Algoritma :
1) tuangkan larutan dari bejana A ke dalam
bejana B
2) tuangkan larutan dari bejana B ke dalam
bejana A
Algoritma di muka tidak memberikan hasil seperti
yang diharapkan  hasil akhir yang diperoleh
adalah bejana A berisi campuran dari larutan
berwarna merah dan biru, sedangkan bejana B
kosong.
Seharusnya :
1) tuangkan larutan dari bejana A ke dalam
bejana kosong C
2) tuangkan larutan dari bejana B ke dalam
bejana A
3) tuangkan larutan dari bejana C ke dalam
bejana B
Contoh persoalan (2) :
diberikan 5 buah bilangan bulat positif, sebut
saja bilangan A, B, C, D, dan E.
Carilah bilangan terkecil diantara kelima
bilangan tersebut !
* Pendefinisian masalah :
- input : bilang bulat positif A, B, C, D, E
- output : bilangan terkecil diantara kelima
bilangan tersebut
Algoritma :
1. ambil X = A
2. bila X > B , maka X = B
bila X <= B , maka X tetap
3. bila X > C , maka X = C
bila X <= C , maka X tetap
4. bila X > D , maka X = D
bila X <= D , maka X tetap
5. bila X > E , maka X = E
bila X <= E , maka X tetap
6. bilangan terkecil adalah X
Contoh persoalan (3) :
Diberikan 2 buah bilangan bulat positif m dan n,
dimana m > n.
Carilah bilangan pembagi bersama terbesar (PBT)
dari kedua bilangan tersebut (PBT = bilangan bulat
positif terbesar yang membagi habis bilangan m
dan n)
* Pendefinisian masalah :
- input : bilangan bulat positif m dan n,
m>n
- output : bilangan pembagi bersama terbesar
untuk bilangan m dan n
Algoritma :
1) bagilah bilangan m dengan n, sebut saja
sisanya adalah s
2) jika s = 0, maka PBT = n, selesai
jika s ≠ 0, maka lanjutkan ke langkah 3
3) ganti nilai m dengan n,
ganti nilai n dengan s
4) kembali ke langkah 1
STRUKTUR DASAR ALGORITMA
1. SEQUENCE  BERURUTAN
2. SELECTION  PEMILIHAN
3. REPETITION  PENGULANGAN
Contoh persoalan (4) :
Diberikan 5 buah bilangan bulat positif A, B, C, D, E.
Buatlah algoritma agar kelima buah bilangan tersebut
tersusun berurutan dari yang terkecil sampai yang terbesar !
Misalnya :
A = 10
B = 15
C= 5
D = 17
E= 2
Putaran ke-1 :
10
15
5
17
2
Cari elemen terkecil dari elemen ke-1 sampai ke-5
 Elemen ke-5, nilai 2
2
15
5
17
10
Pertukarkan nilai elemen ke-5 dengan elemen ke-1
Putaran ke-2 :
2
15
5
17
10
Cari elemen terkecil dari elemen ke-2 sampai ke-5
 Elemen ke-3, nilai 5
2
5
15
17
10
Pertukarkan nilai elemen ke-3 dengan elemen ke-2
Putaran ke-3 :
2
5
15
17
10
Cari elemen terkecil dari elemen ke-3 sampai ke-5
 Elemen ke-5, nilai 10
2
5
10
17
15
Pertukarkan nilai elemen ke-5 dengan elemen ke-3
Putaran ke-4 :
2
5
10
17
15
Cari elemen terkecil dari elemen ke-4 sampai ke-5
 Elemen ke-5, nilai 15
2
5
10
15
17
Pertukarkan nilai elemen ke-5 dengan elemen ke-4
Algoritma dari penyelesaian masalah
pengurutan data :
T0 : kumpulan data ke-1 sampai ke-n
belum terurut membesar
algoritma pengurutan data
T1 : kumpulan data ke-1 sampai ke-n
sudah terurut membesar
Algoritma pengurutan data :
diberikan N buah data yang tersusun secara
acak, urutkan kumpulan data tersebut sehingga :
data ke-1≤ data ke-2 ≤ ……… ≤ data ke-N
* Deskripsi :
untuk putaran K=1,2, ….. ,N-1, lakukan :
1) cari data dengan nilai terkecil mulai dari
data ke-K sampai data ke-N
2) pertukarkan data dengan nilai terkecil
dengan data ke-K
1.1 Data ke-K dianggap data terkecil (min)
1.2 Bandingkan min dengan data
ke-J=K+1,K+2, ….. ,N
1.2.1 untuk J=K+1,K+2, ….. , N lakukan :
jika data ke-J lebih kecil dari min ,
maka isikan data ke-J sebagai min
yang baru
2.1 Tempatkan data ke-K disebuah tempat
sementara (temp)
2.2 Tempatkan min di tempat data ke-k (ini
akan berakibat nilai lama terhapus)
2.3 Tempatkan nilai yang tersimpan di temp di
tempat min yang lama
DESKRIPSI SECARA LENGKAP
Untuk putaran ke-K=1,2, ……. ,N-1 , lakukan :
1. Data ke-K dianggap data terkecil sementara (min)
2. Untuk J=K+1,K+2, ……. , N , lakukan :
jika data ke-J lebih kecil dari min, maka isikan
data ke-J sebagai min yang baru
3. Tempatkan data ke-K di sebuah tempat
sementara (temp), tempatkan min di tempat data
ke-K yang lama, tempatkan temp di tempat min
yang lama
Pengurutan data metode Bubble sort (pengurutan
gelembung) :
untuk setiap putaran ke-I=1,2,…..,N-1 , lakukan :
mulai dari elemen K=N,N-1, …. , I+1 lakukan :
1. Bandingkan L(K) dengan L(K-1)
2. Pertukarkan L(K) dengan L(K-1) jika
L(K)<L(K-1)
Contoh :
N=6  25 , 27 , 10 , 8 , 76 , 21
Putaran ke-1 :
K=6 : 25
K=5 : 25
K=4 : 25
K=3 : 25
K=2 :
8
27
27
27
8
25
10
10
8
27
27
8 21
8 21
10 21
10 21
10 21
76
76
76
76
76
Putaran ke-2 :
K=6 :
8
K=5 :
8
K=4 :
8
K=3 :
8
25
25
25
10
27
27
10
25
10
10
27
27
21
21
21
21
76
76
76
76
Putaran ke-3 :
K=6 : 8 10 25 27 21 76
K=5 : 8 10 25 21 27 76
K=4 : 8 10 21 25 27 76
Putaran ke-4 :
K=6 : 8 10 21 25 27 76
K=5 : 8 10 21 25 27 76
Putaran ke-5 :
K=6 :
8 10 21 25 27 76
Pengurutan data metode Selection sort
(pengurutan pilih) :
1. Jumlah putaran = N – 1
2. Untuk setiap putaran ke-I = 1,2, …. ,jumlah putaran ;
lakukan :
- cari elemen terbesar mulai dari elemen ke-1
sampai elemen ke-N
- pertukarkan elemen terbesar dengan elemen
ke-N
- nilai N kurangi satu
Pengurutan data metode Insertion sort (pengurutan
sisip) :
Untuk setiap putaran ke-I=2,3, … , N ; lakukan :
* berikan nilai D(I) kepada x
* sisipkan x pada tempat yang sesuai antara D(1) …. D(I)
Contoh : N=6  25 , 27 , 10 , 8 , 76 , 21
D(1) D(2) D(3) D(4) D(5) D(6)
Putaran ke-2 : x=D(2)=27 harus dicari tempat yang tepat diantara D(1) dan D(2)
dengan cara menggeser elemen-elemen disebelah kanannya
25 , 27 , 10 , 8 , 76 , 21
Putaran ke-3 : x=D(3)=10 harus dicari tempat yang tepat diantara D(1) dan D(3)
dengan cara menggeser elemen-elemen disebelah kanannya
10 , 25 , 27 , 8 , 76 , 21
Putaran ke-4 : x=D(4)=8 harus dicari tempat yang tepat diantara D(1) dan D(4)
dengan cara menggeser elemen-elemen disebelah kanannya
8 , 10 , 25 , 27 , 76 , 21
Putaran ke-5 : x=D(5)=76 harus dicari tempat yang tepat diantara D(1) dan D(5)
dengan cara menggeser elemen-elemen disebelah kanannya
8 , 10 , 25 , 27 , 76 , 21
Putaran ke-6 : x=D(6)=21 harus dicari tempat yang tepat diantara D(1) dan D(6)
dengan cara menggeser elemen-elemen disebelah kanannya
8 , 10 , 21 , 25 , 27 , 76
Contoh : N=6  25 , 27 , 10 , 8 , 76 , 21
D(1) D(2) D(3) D(4) D(5) D(6)
 banyak putaran adalah 5 kali
Putaran ke-1 (N=6) :
elemen terbesar D(5) = 76  pertukarkan dengan
elemen ke-6
: 25 27 10 8 21 76
Putaran ke-2 (N=5) :
elemen terbesar D(2) = 27  pertukarkan dengan
elemen ke-5
: 25 21 10 8 27 76
Putaran ke-3 (N=4) :
elemen terbesar D(1) = 25  pertukarkan dengan
elemen ke-4
:
8 21 10 25 27 76
Putaran ke-4 (N=3) :
elemen terbesar D(2) = 21  pertukarkan dengan
elemen ke-3
:
8 10 21 25 27 76
Putaran ke-5 (N=2) :
elemen terbesar D(2) = 10  pertukarkan dengan
elemen ke-2
:
8 10 21 25 27 76
Tinjauan :
metode Bubble sort :
* tidak efisien karena banyaknya operasi pertukaran
yang dilakukan pada setiap langkah pencarian elemen
terbesar  memerlukan waktu yang (relatif) lebih
lama dibandingkan metode lain
* sederhana dan mudah dipahami
metode Selection sort :
* dibandingkan dengan metode Bubble sort, metode ini
memiliki kinerja lebih baik  operasi pertukaran
hanya satu kali pada setiap putaran  waktu yang
diperlukan lebih singkat
metode Insertion sort :
* diperlukan banyak operasi pergeseran untuk mencari
posisi yang tepat  untuk data yang banyak, jumlah
operasi pergeseran meningkat secara kuadratik 
tidak praktis untuk data yang banyak
Algoritma Penjumlahan Bilangan Genap
1) Sediakan tempat untuk menampung jumlah
bilangan genap dan banyak bilangan genap
 sebut Jum dan Jdat
2) masukkan nilai banyak bilangan  sebut N
3) masukkan nilai bilangan ( sebanyak N
bilangan, yaitu D(1) sampai dengan D(N))
4) periksalah jenis setiap bilangan, apakah
bilangan genap atau gasal. Bila bilangan
adalah bilangan genap, tambahkan nilai
bilangan tersebut ke Jum , dan tambahkan
nilai 1 ke Jdat
Mulai
Tulis
Jdat, Jum
Jdat = 0
Selesai
ya
Jum = 0
tidak
I>N
Input N
I=I+1
I=1,N
Input D(I)
I=1
tidak
D(I) habis
dibagi 2
ya
Jdat=Jdat+1
Jum=Jum+1
Algoritma Penjumlahan Bilangan Genap
1) Sediakan tempat untuk menampung jumlah
bilangan genap dan banyak bilangan genap
 sebut Jum dan Jdat
2) untuk putaran I=1,2, …..,N :
- baca/masukkan data nilai bilangan ke-I
- Bila jenis bilangan adalah bilangan genap,
tambahkan nilai bilangan ke Jum dan nilai
Jdat dinaikkan 1
Mulai
Jdat = 0
Selesai
Jum = 0
Tulis
Input N
Jdat,Jum
I=1,N
tidak
Bil
Input Bil
Habis dibagi 2
ya
Jdat=Jdat+1
Jum=Jum+Bil
Download