Algoritma - Universitas Brawijaya

advertisement
Dasar Pemrograman
Komputer
Pengantar Algoritma
Sutrisno
Ismiarta Aknuranda
Issa Arwani
Adharul Muttaqin
Teknik Informatika - UB
Algoritma

Diambil dari nama ilmuwan asal Persia Al Khawarizmi
(Abu Abdallah Muhammad ibn Musa Al Khawarizmi)
 Al Khawarizmi: On Calculation with Hindu–Arabic numeral
system, 825M
 Tulisan di atas awalnya berbahasa Arab, lalu diterjemahkan
ke Latin. Al Khawarizmi menjadi Algoritmi.
 Berkembang menjadi “algorismus”, yang berarti sistem
bilangan desimal.
 Dalam bahasa Perancis di abad ke-17, algorismus menjadi
“algorithm”, kemudian diadopsi dalam bahasa Inggris dengan
nama sama.
 Mulai abad ke-19 istilah ini mulai memiliki arti yang agak
berbeda (lihat halaman selanjutnya).
Pengantar Algoritma - TIF UB 2010
2
Algoritma
Algoritma adalah sekumpulan instruksi atau langkahlangkah yang jelas (unambiguous) dan terbatas untuk
mencari solusi suatu masalah.
Untuk mendapatkan keluaran yang dibutuhkan dari masukan
yang sah dalam waktu yang terbatas
Algoritma sebenarnya cara, bukan hasil atau solusi
Problem
Algoritma
Data yg diolah
Data hasil olahan
Komputer
(Keluaran/Output)
(Masukan/Input)
Pengantar Algoritma - TIF UB 2010
3
Algoritma

Di pemrograman komputer, algoritma
diimplementasikan ke dalam program komputer,
yaitu:
 satu set instruksi atau langkah-langkah yang dijalankan
dengan komputer untuk menyelesaikan suatu masalah.
Pengantar Algoritma - TIF UB 2010
4
Pemodelan Komputer Sederhana
COMPUTER
TO – COMPUTE + ER
menghitung/mengolah bilangan
mengolah data
Data yg diolah
Pengolah Data
(Processor)
(Masukan/Input)
(berbasis Aritmetika
dan Logika)
Data hasil olahan
(Keluaran/Output)
Penyimpanan Data (Storage,
e.g.
memory)
Pengantar Algoritma - TIF UB 2010
5
Tahap Pengembangan Algoritma
MASALAH /
IDE
Algoritma
PEMECAHAN
Source
Code
Pengantar Algoritma - TIF UB 2010
SOLUSI /
HASIL
Executable
Code
6
Tahap Pengembangan Algoritma
DEFINISI
MASALAH
BUAT MODEL
RANCANG
ALGORITMA
TULIS PROGRAM
COMPILE
Y
Compile Error
T
Executable code:
=> Run
Y
Runtime Error
T
Pengantar Algoritma - TIF UB 2010
DOKUMENTASI
7
Tahap Pengembangan Algoritma
DEFINISI
MASALAH
BUAT MODEL
RANCANG
ALGORITMA
TULIS PROGRAM
COMPILE
Masalah:
Menentukan akar-akar dari suatu persamaan kuadrat.
Definisi:
Persamaan kuadrat : ax2 + bx + c = 0
Data yg diperlukan :
Nilai dari a, b dan c : tipe bilangan real
Error
Executable code:
=> Run
Error
Pengantar Algoritma - TIF UB 2010
8
DOKUMENTASI
Tahap Pengembangan Algoritma
DEFINISI
MASALAH
MEMBUAT
MODEL
RANCANG
ALGORITMA
TULIS PROGRAM
COMPILE
Model Matematika :
Error
Rumus ABC
x1 = (-b + sqrt(b2 - 4ac))/2a
Executable code:
=> Run
x2 = (-b – sqrt(b2 - 4ac))/2a
Error
Pengantar Algoritma - TIF UB 2010
9
DOKUMENTASI
Tahap Pengembangan Algoritma
DEFINISI
MASALAH
MEMBUAT
MODEL
RANCANG
ALGORITMA
Start
TULIS PROGRAM
COMPILE
Masukkan a,b,c
Error
d = b2 – 4ac
d<0
T
x1=(-b+sqrt(d))/2a
x2 =(-b-sqrt(d))/2a
Executable code:
=> Run
Y
Cetak:
“Akar imajiner”
Error
Cetak: x1, x2
DOKUMENTASI
Stop
Pengantar Algoritma - TIF UB 2010
10
10
Tahap Pengembangan Algoritma
DEFINISI
MASALAH
MEMBUAT
MODEL
RANCANG
ALGORITMA
TULIS PROGRAM
COMPILE
Error
Executable code:
=> Run
Error
DOKUMEN TASI
Pengantar Algoritma - TIF UB 2010
11
Tahap Pengembangan Algoritma
DEFINISI
MASALAH
MEMBUAT
MODEL
RANCANG
ALGORITMA
TULIS PROGRAM
COMPILE
Error
Executable code:
=> Run
Error
DOKUMENTASI
Pengantar Algoritma - TIF UB 2010
12
Tahap Pengembangan Algoritma
DEFINISI
MASALAH
MEMBUAT
MODEL
RANCANG
ALGORITMA
TULIS PROGRAM
COMPILE
Error
Executable code:
=> Run
Error
DOKUMENTASI
Pengantar Algoritma - TIF UB 2010
13
Tahap Pengembangan Algoritma
DEFINISI
MASALAH
MEMBUAT
MODEL
RANCANG
ALGORITMA
TULIS PROGRAM
COMPILE
Error
Executable code:
=> Run
Error
DOKUMEN TASI
Pengantar Algoritma - TIF UB 2010
14
Tahap Pengembangan Algoritma
DEFINISI
MASALAH
MEMBUAT
MODEL
RANCANG
ALGORITMA
TULIS PROGRAM
COMPILE
Error
Executable code:
=> Run
Error
DOKUMENTASI
Pengantar Algoritma - TIF UB 2010
15
Tahap Pengembangan Algoritma
DEFINISI
MASALAH
MEMBUAT
MODEL
RANCANG
ALGORITMA
TULIS PROGRAM
COMPILE
Error
Executable code:
=> Run
Error
Pengantar Algoritma - TIF UB 2010
DOKUMENTASI
16
Penyajian Algoritma

Algoritma dapat diekspresikan dalam bentuk:
 Tulisan, misal: structured English,
pseudocode, notasi lain
 Visual, misal: flow chart, activity diagram
Pengantar Algoritma - TIF UB 2010
17
Pseudocode

Outline dari sebuah program komputer

Ditulis dalam bahasa Inggris atau Indonesia
sederhana

Kata kunci (keyword) digunakan untuk menjelaskan
struktur kendali (misalnya: “jika”, “ulangi”,
“sampai”,”if”,”repeat”, “until”)
Pengantar Algoritma - TIF UB 2010
18
Contoh pseudocode
Algoritma Menggunakan Kalkulator
Mulai
Nyalakan kalkulator
Kosongkan memori kalkulator
Ulangi
Input harga
Tekan tombol Plus (+)
Sampai semua harga diinput
Tampilkan total harga
Matikan kalkulator
Selesai
Pengantar Algoritma - TIF UB 2010
19
Contoh pseudocode
Algoritma Berangkat Kuliah
Mulai
Bangun dari tempat tidur
Mandi Pagi
Sarapan Pagi
Pergi Ke Kampus
Cari Ruang Kuliah
Masuk kelas untuk Kuliah
Selesai
Pengantar Algoritma - TIF UB 2010
20
Contoh pseudocode
Algoritma Sarapan Pagi
Mulai
Ambil piring
Masukkan nasi dan lauk dalam piring
Ambil sendok dan garpu
Ulangi
Angkat sendok dan garpu
Ambil nasi dan lauk
Suapkan ke dalam mulut
Taruh sendok dan garpu
Kunyah
Sampai (nasi dan lauk habis) ATAU kekenyangan
Bereskan piring, sendok dan garpu
Selesai
Pengantar Algoritma - TIF UB 2010
21
Flow Chart
Terminator
Arah
Proses
Konektor
Input/Output
Konektor antar
halaman
Dokumen
Pemanggilan
Procedure
Pemilihan
Pengulangan
Pengantar Algoritma - TIF UB 2010
22
Contoh flow chart
Start
Masukkan
a,b,c
d = b2 – 4ac
Y
d<0
T
x1=(-b+sqrt(d))/2a
x2 =(-b-sqrt(d))/2a
Cetak Pesan
“Akar imajiner”
Cetak x1,x2
Stop
Pengantar Algoritma - TIF UB 2010
23
Kriteria algoritma yang baik

Correctness (kebenaran)
 Menghasilkan keluaran yang benar untuk masukan yang valid
dalam waktu yang terbatas
 Mempunyai logika yang benar untuk memecahkan masalah.

Simplicity (kesederhanaan)
 Mudah dipahami, mudah diprogram
 “Indah”

Efficiency (efisiensi)
 Time efficiency (efisiensi waktu): seberapa cepat
 Space efficency (efisiensi ruang): seberapa banyak memori yang
dibutuhkan
Pengantar Algoritma - TIF UB 2010
24
Kriteria algoritma yang baik

Generality (keumuman)

Lain-lain
– Ditulis dengan bahasa baku terstruktur sehingga tidak
menimbulkan arti ganda atau ambigu, dan mudah
diimplementasikan kedalam bahasa pemrograman.
Pengantar Algoritma - TIF UB 2010
25
Pseudocode (lanjutan)
Tujuh operasi dasar komputer:
1. Membaca data (input)
2. Menampilkan data (output)
3. Melakukan perhitungan aritmetika (compute)
4. Memberikan nilai ke suatu identifier (store)
5. Membandingkan dan memilih (compare and select)
6. Melakukan pengulangan (repeat/loop)
7. Procedure dan/atau Function
26
1. Membaca data

Sewaktu komputer menerima informasi atau input,
maka perintah yang biasa digunakan adalah “READ”,
“GET”, “BACA” ,”INPUT” atau “KEYIN”

Contoh:
READ Bilangan
GET kode_pajak
BACA nama_mahasiswa
27
2. Menampilkan data

Sewaktu komputer menampilkan informasi ataupun
output, maka perintah yang biasa digunakan adalah
“PRINT”, “WRITE”, “PUT”, “OUTPUT”, “DISPLAY” ataupun
“CETAK”

Contoh:
PRINT “Universitas Brawijaya”
CETAK “Dasar Pemrograman Komputer”
OUTPUT Total
28
3. Menghitung data

Untuk melakukan operasi aritmetika digunakan
pseudocode berikut:
+ : penjumlahan (ADD… TO…)
- : pengurangan (SUBTRACT… FROM…)
* : perkalian (MULTIPLY… BY…)
/ : pembagian (DIVIDE… BY…)
() : kurung

Perintah “COMPUTE”, “CALCULATE” ataupun
“HITUNG” juga dapat digunakan.

Contoh:
ADD number TO total
Total = Total + number
29
4. Memberikan nilai ke identifier

Beberapa cara untuk memberikan nilai ke dalam
variabel :
– Memberikan nilai awal dengan perintah
“INITIALIZE”, “INIT” atau “SET”
– Memberikan nilai sebagai hasil dari suatu proses,
dengan tanda “=“
– Menyimpan suatu nilai dengan perintah “SAVE” atau
“STORE”

Contoh:
SET Counter TO 0
Total = Harga * Jumlah
30
5. Membandingkan dan memilih



Salah satu operasi terpenting adalah membandingkan
dan memilih salah satu alternatif solusi.
Keyword yang dapat digunakan : “IF”, “THEN” , “ELSE”,
dan “ENDIF”
Contoh
IF Pilih==‘1’ THEN
Discount = 0.1 * harga
ELSE
Discount = 0.2 * harga
ENDIF
31
6. Mengulang

Dapat menggunakan keyword “WHILE” dan “ENDWHILE”

Contoh
bil = 0
WHILE bil < 10
cetak bil
bil = bil +1
ENDWHILE
32
7. Procedure dan/atau Function




Dibentuk dengan mengelompokkan sejumlah
perintah untuk mengerjakan tugas tertentu
Jarang diperkenalkan di awal pelajaran
pemrograman
Dalam bahasa C, sebagaimana variabel, fungsi
perlu dideklarasikan (dan sebaiknya didefinisikan)
sebelum dipakai
Mengandung: nama fungsi, parameter, dan
kembalian
Pengantar Algoritma - TIF UB 2010
33
Contoh pemakaian fungsi dalam
pseudocode sederhana
Algoritma Berangkat Kuliah
Mulai
Bangun dari tempat tidur
Mandi Pagi
bisa dilihat sbg
Sarapan Pagi
pemanggilan fungsi
Pergi Ke Kampus
Cari Ruang Kuliah
Masuk kelas untuk Kuliah
Selesai
Pengantar Algoritma - TIF UB 2010
34
Contoh pendefinisian fungsi dalam
pseudocode sederhana
Algoritma Sarapan Pagi (definisi fungsi Sarapan Pagi)
Mulai
Ambil piring
Masukkan nasi dan lauk dalam piring
Ambil sendok dan garpu
Ulangi
Angkat sendok dan garpu
Ambil nasi dan lauk
Suapkan ke dalam mulut
Taruh sendok dan garpu
Kunyah
Sampai (nasi dan lauk habis) ATAU kekenyangan
Bereskan piring, sendok dan garpu
Selesai
Pengantar Algoritma - TIF UB 2010
35
Contoh pemakaian fungsi dalam
pseudocode sederhana
Algoritma Mengerjakan Soal di Papan Tulis
Mulai
Bangkit dari kursi
Jalan mendekati papan tulis
Ambil kapur
Tulis di Papan(kapur,pesan)
Kembali ke kursi
Selesai
Pengantar Algoritma - TIF UB 2010
bisal dilihat sbg
pemanggilan fungsi
36
Contoh pemakaian fungsi dalam
pseudocode sederhana
Algoritma Tulis di Papan (kapur, pesan)
Mulai
Angkat kapur
Tulis pesan di papan tulis dengan kapur
Selesai
Pengantar Algoritma - TIF UB 2010
37
Contoh flow chart
& pseudocode
Start
Masukkan
a,b,c
d = b2 – 4ac
Y
d<0
T
x1=(-b+sqrt(d))/2a
x2 =(-b-sqrt(d))/2a
READ a,b,c
d = (b*b)–(4*a*c)
IF d<0 THEN
PRINT “Akar imajiner”
ELSE
x1 = (-b+sqrt(d))/(2*a)
x2 = (-b-sqrt(d))/(2*a)
PRINT x1,x2
ENDIF
Cetak Pesan
“Akar imajiner”
Cetak x1,x2
Stop
Pengantar Algoritma - TIF UB 2010
38
Paradigma pemrograman
Imperative
Declarative
Procedural
e.g. C, Pascal, Fortran, Basic
Logical
e.g. Prolog
Structured
e.g. C, Pascal, Fortran, Basic
Functional
e.g. LISP, Scheme,Objective
Domain-specific
Object-oriented
e.g. SQL,HTML,XML,CSS
e.g. C++, Java,
Smalltalk, C#
Pengantar Algoritma - TIF UB 2010
39
Paradigma pemrograman
Imperative vs Declarative

Imperative:
 Program yang imperative: mendefinisikan urutan
perintah untuk dikerjakan
 Proses komputasi digambarkan sebagai kumpulan
pernyataan yang mengubah program state
 Program state: keadaan atau konfigurasi informasi
dalam program pada satu saat
 Membutuhkan algoritma yang didefinisikan eksplisit
 Mirip dengan paradigma bahasa mesin
Pengantar Algoritma - TIF UB 2010
40
Paradigma pemrograman
Imperative vs Declarative

Declarative:
 Menggambarkan logika komputasi tanpa mendeskripsikan
aliran kendali seperti pada imperative programming
 Menggambarkan komputasi apa yang harus dikerjakan,
bukan bagaimana komputasi tersebut mengerjakannya
 Contoh:


Logical programming dengan Prolog, berhubungan dengan logika
matematika, dapat digunakan untuk aplikasi kecerdasan buatan
Domain-specific scripting dengan HTML, untuk mendeskripsikan
apa yang ditampilkan dalam halaman web
Pengantar Algoritma - TIF UB 2010
41
Pemrograman terstruktur

Menggunakan tiga struktur kontrol, yaitu:
1.
2.
3.
Sequence (pengerjaan berurutan)
Selection (pemilihan)
Repetition (pengulangan)
42
Sequence

Sequence merupakan urutan pengerjaan perintah
dari perintah/pernyataan pertama sampai dengan
perintah/pernyataan terakhir.

Umumnya program mempunyai sequence mulai dari
atas ke bawah dan dari kiri ke kanan (kecuali operasi
pemberian nilai, dari kanan ke kiri).
43
Contoh sequence

Contoh:
Cetak “Jumlah Mahasiswa”
Set Jumlah to 49
Cetak “Tambahan mahasiswa baru”
Baca mhs_baru
Jumlah = Jumlah + mhs_baru
Cetak “Jumlah Mahasiswa”
Cetak Jumlah

Penjelasan
– Urutan pengerjaan dimulai dari urutan pertama
sampai dengan urutan terakhir. Jika mhs_baru diisi
dengan 2, maka Jumlah yang tercetak adalah 51
44
2. Selection

Struktur kontrol selection menggambarkan
pemilihan diantara diantara dua atau lebih
aksi berdasarkan kondisi atau persyaratan
tertentu.

Aksi pertama akan dikerjakan jika kondisi
atau persyaratan tersebut bernilai benar.
Jika tidak, maka aksi kedua setelah keyword
“else” (jika ada) akan dikerjakan.
45
Contoh selection


Contoh :
IF Hari==1 THEN
Cetak “Senin”
ELSE
Cetak “Bukan hari Senin”
ENDIF
Penjelasan
– Tulisan “Senin” akan ditampilkan jika Hari bernilai
1, jika tidak maka tulisan “Bukan hari Senin” yang
akan ditampilkan
46
3. Repetition

Beberapa perintah dapat diulang dengan
menggunakan struktur kontrol repetition.

Perintah akan tetap diulang selama kondisi
perulangan dipenuhi (i.e. bernilai benar)
47
Contoh repetition

Contoh:
bintang = 0
WHILE bintang < 5
PRINT bintang
bintang = bintang + 1
ENDWHILE
48
Latihan
1. Buatlah algoritma menggunakan pseudocode untuk
menghitung luas persegi panjang
2. Buatlah algoritma menggunakan pseudocode untuk
mengubah satuan waktu yang diinputkan dari detik ke
satuan jam dan menit
3. Buatlah algoritma menggunakan pseudocode untuk
menentukan apakah bilangan yang diinput adalah
bilangan ganjil atau bilangan genap.
49
Latihan
4. Buatlah algoritma menggunakan pseudocode untuk
menghitung luas lingkaran.
5. Buatlah algoritma menggunakan pseudocode untuk
menginput 3 buah bilangan, kemudian tentukan
bilangan terbesar, terkecil, dan rata-ratanya.
50
Latihan

Ulangi latihan no. 1 s/d no. 5 diatas dengan
menggunakan flowchart.
51
Download