ALGORITHM
6
Algoritma, Flowchart & Program Dahlia Widhyaestoeti, S.Kom
[email protected] dahlia74march.wordpress.com
“Seorang sahabat dekat setara dengan seribu orang kerabat” Euripides
Euripides (bahasa Yunani kuno: Εὐριπίδης) (ca. 480 BC – 406 BC) adalah salah satu dari tiga penulis drama tragedi terbaik di Athena klasik, dua yang lainnya adalah Aiskhilos dan Sofokles. Para sejarawan kuno berpendapat bahwa Euripides menulis sembilan puluh lima drama, meskipun empat di antaranya mungkin ditulis oleh Kritias. Delapan belas atau sembilan belas drama Euripides tetap ada sampai masa kini. Ada perdebatan mengenai apakah dia yang menulis Resos. Beberapa bagian dari karya-karyanya yang lain juga ada yang bertahan. Drama karya Euripides yang masih bertahan jumlahnya lebih banyak daripada karya Aiskhilos dan Sofokles digabungan, karena keunikan manuskripnya.
Algoritma • Algoritma dapat dinotasikan dalam beberapa cara, yaitu: • Dengan untaian kalimat deskriptif (natural) – Tapi sering membingungkan (ambiguous)
• Dengan pseudocode – Sudah lebih dekat ke bahasa pemrograman, namun sulit dimengerti oleh orang yang tidak mengerti pemrograman
• Dengan flowchart – Bagus secara visual akan tetapi repot kalau algoritmanya panjang 3
Flowchart • Flowchart lebih baik dibandingkan pseudocode • Merupakan gambaran dalam bentuk diagram alir dari algoritma-algoritma dalam suatu program yang menyatakan arah alur program tersebut • Disajikan dalam bentuk grafik/gambar • Dapat membantu programmer maupun orang lain dalam memahami alur program (apa saja input, proses dan output dari program) • Representasi visual, karena itu lebih mudah dipahami • Jumlah simbol yang digunakan sedikit, karena itu lebih sederhana dan lebih mudah dipelajari
4
Flowchart • flow chart (diagram alir) – (menggambarkan urutan langkah-langkah kegiatan /program mulai dari awal sampai akhir dengan menggunakan simbol atau gambar tertentu.) • Kegunaan : mendesain dan mempresentasikan program
5
Lambang Flowchart Terminator (mulai/selesai) Input/output Proses Decision (percabangan) Data Flow (Aliran data) Preparation (pemberian nilai awal suatu variabel) Call (memanggil prosedur/fungsi) Connector (di halaman yg sama Connector ( di halaman lain) 6
Contoh Flowchart
Mulai
Inputkan nilai (tugas,uts,uas )
NA = 25%tg+25%uts+50%uas
NA>60
Gagal
Lulus Selesai
7
Program • Pemrograman : aktifitas yg dilakukan dengan membat intruksi untuk menyelesaikan permasalahan yg dimenegeti oleh komputer • Program : coding, hasil pemrograman • Bahasa Pemrograman : Bahasa program yang digunakan untuk membuat urutan instruksi yg dimengerti oleh komputer. • Pemrograman (programer) : orang yg membuat program komputer. 8
Algoritma dengan Pseudo-code kecil bilangan pertama if ( bilangan kedua < kecil) kecil bilangan kedua if ( bilangan ketiga < kecil) kecil bilangan ketiga Ouput(kecil) 9
Beberapa langkah umum dalam pembuatan suatu program • Mendefinisikan masalah – mendefinisikan permasalahan. langkah ini harus dilakukan untuk menentukan masalah yang ada serta ditentukan pula input dan output program
• Mencari solusinya – Bila untuk mendapatkan solusi harus melalui langkah yang terlalu rumit dapat dilakukan pembagian masalah dalam beberapa modul-modul kecil agar mudah untuk dikerjakan. Lalu modul-modul kecil tersebut digabungkan menjadi satu untuk dapat menentukan solusi.
• • • • •
Menentukan algoritma Menulis program Menguji program Mendokumentasikan program Merawat program 10
Tiga Bagian Algoritma • Judul (Header) • Kamus • Algoritma
11
Bahasa natural Program nilai_maksimal Kamus X = nilai pertama Y = nilai kedua Hasil = hasil perbandingan Algoritma a. Masukkan Nilai x dan y b. Jika x lebih besar dari y, nilai terbesar adalah x jika tidak maka nilai terbesar adalah nilai y c. Cetak hasil nilai yg terbesar
Pseudo code Program Nilai_maksimal Kamus hasil,x,y : integer Algoritma input(x,y) if x > y then hasil x else hasil y output(hasil) 12
Tipe Data, Operator dan Ekspresi Program Komputer memanipulasi data (variabel dan konstanta) di dalam memori.
• TIPE DATA : – Untuk menyatakan tipe data dari sebuah variabel (peubah) pada Deklarasi.
• OPERATOR : – Menspesifikasikan operasi apa yang dapat dilakukan terhadap peubah (variabel) dan konstanta.
• EKSPRESI : – Mengkombinasikan peubah-peubah dan dan konstanta untuk menghasilkan hasil baru. 13
Tipe Data 1. TIPE DATA DASAR : – Tipe yang dapat langsung dipakai.
2. TIPE DATA BENTUKAN : – Tipe dasar atau dari tipe bentukan lain yang sudah didefinisikan sebelumnya.
14
1. Tipe Data Dasar • Dalam pemrograman, yang termasuk ke dalam tipe dasar adalah : Bilangan lojik, bilangan bulat, karakter, bilangan riil, dan string • Bilangan lojik, bilangan bulat, dan karakter disebut juga dengan TIPE ORDINAL (nilainya ada dalam urutan). 15
1. Tipe Data Dasar
BILANGAN LOJIK • NAMA TIPE : – Boolean
• RANAH NILAI : – Dua buah nilai : Benar (true) dan Salah (false) – bilangan logik :benar 1, salah 0
• KONSTANTA : – True dan False
• OPERASI : – Operasi Logika atau operasi boolean – Operasi logika menghasilkan nilai : true atau false – Operator logika : AND, OR dan XOR 16
1. Tipe Data Dasar
Bilangan Lojik a
b
not a
a and b
a or b a xor b
True
True
False
True
True
False
True
False
False
False
True
True
False
True
True
False
True
True
False
false
True
false
False
False 17
Bilangan Lojik
1. Tipe Data Dasar
Contoh operasi logika : • Misalkan X, Y, dan Z adalah peubah (variabel) bertipe boolean. • Dimana : – X bernilai true, Y bernilai false, dan Z bernilai true
• Maka : operasi logika hasil -----------------------------------------( x and y) or z true A and ( y or z) true Not (x and z) false (y xor z) and y false
18
1. Tipe Data Dasar
Bilangan Bulat • Bilangan yang tidak mengandung pecahan desimal, misal : 34, 8, 0, -17, 45678901, dsb • NAMA TIPE : – Integer • RANAH NILAI :
tipe Byte Shortint Word Integer Longint
Rentang nilai 0 .. 255 -128 .. 127 0 .. 65535 -32768 .. 32767 -2147483648 .. 2147483647
Format 8 bit 8 bit 16 bit 16 bit 32 bit 19
Bilangan Bulat •
1. Tipe Data Dasar
KONSTANTA : – Harus ditulis tanpa mengandung titik desimal : – Contoh : 78, -14, 7654, 0, 5, 9999, dsb
•
OPERASI : 1. Operasi aritmetika : + (tambah) (kurang) * (kali) Div (hasil bagi bilangan bulat) Mod (sisa hasil bagi) Contoh : 3 + 10 hasil : 13 10 DIV 3 hasil : 3 10 MOD 3 hasil : 1
20
Bilangan Bulat
1. Tipe Data Dasar
2. Operasi Perbandingan : • Menghasilkan nilai boolean (true dan false)
<
Lebih kecil
≤ > ≥ = ≠
Lebih kecil atau sama dengan Lebih besar Lebih besar atau sama dengan Sama dengan Tidak sama dengan 21
Bilangan Bulat
1. Tipe Data Dasar
Contoh : operasi perbandingan
3<8
True
74 > 101
False
17 = 17
True
(24 div 3) ≠ 8
false 22
Bilangan Riil
1. Tipe Data Dasar
• Bilangan yang mengandung pecahan desimal : 3.65, 0.003, 29.0, .24, dll • NAMA TIPE : – Real
• RANAH NILAI :
tipe Real Single Double extended
2.9 x 1.5 x 5.0 x 3.4 x
Rentang nilai 10 -39 .. 1.7 x 10 38 10-45 .. 3.4 x 10 38 10-324 .. 1.7 x 10308 10-4932 .. 1.1 x 104932
Format 6 byte 4 byte 8 byte 10 byte 23
Bilangan Riil
1. Tipe Data Dasar
• KONSTANTA : harus ditulis dengan tanda titik desimal contoh : 0.78, -14.2376, 0.0, .5, 99.0 • OPERASI : 1. operasi Aritmetika + (tambah, -(kurang), *(kali), / (bagi) Contoh: 6.4 + 5.7 hasil : 12.1 8.0 – 2.8 hasil: 5.2
10/2.5
hasil: 4.0 (operasi bilangan campuran)
7.2 * 0.5 hasil : 3.6 24
Bilangan Riil
1. Tipe Data Dasar
2. Operasi Perbandingan : menghasilkan nilai boolean (true dan false)
< ≤
Lebih kecil Lebih kecil atau sama dengan
> ≥
Lebih besar Lebih besar atau sama dengan
≠
Tidak sama dengan
Tipe bilangan riil tidak mengenal operator kesamaan (=), karena bilangan riil tidak bisa disajikan secara tepat oleh komputer, Misal : 1/3 tidak sama dengan 0.33333, sebab 1/3 = 0.33333…(dg angka 3 yg tidak pernah berhenti).
25
1. Tipe Data Dasar
Karakter • Semua huruf-huruf abjad, semua tanda baca, karakter khusus, karakter kosong (null) ‘’. • NAMA TIPE : – Char
• RANAH NILAI : – Adalah semua huruf di dalam alfabet (‘a’..’z’, ‘A’..’Z’, angka desimal (‘0’..’9’), tanda baca(‘.’,’:’,’!’,dll), operator aritmetika(‘+’,’-’,dll), karakter khusus(‘$’,’#’,’@’,dll)
• KONSTANTA : – Karakter harus diapit oleh tanda petik tunggal. • Contoh : ‘h’, ‘y’, ‘.’, ‘ ‘, ‘9’, ‘$’ 26
Karakter •
1. Tipe Data Dasar
OPERASI : – Hanya Operasi Perbandingan :
<
Lebih kecil
≤
Lebih kecil atau sama dengan
>
Lebih besar
≥
Lebih besar atau sama dengan
=
Sama dengan
≠
Tidak sama dengan
Contoh : ‘a’ = ‘a’ hasil: true ‘T’ = ‘t’ hasil: false ‘y’ ≠ ‘y’ hasil: false ‘m’ < ‘z’ hasil: true ‘q’ > ‘z’ hasil : false
27
String
1. Tipe Data Dasar
• Adalah untaian karakter dengan panjang tertentu. • NAMA TIPE : – String
• RANAH NILAI : – Deretan karakter yg telah didefinisikan pada ranah karakter.
• KONSTANTA : – Semua konstanta string harus diapit oleh tanda petik tunggal. Contoh: ‘BANDUNG’, ‘ganesha’, ‘Jl. Pahlawan no. 76’, ‘…………………’, ‘k768532’, dll. 28
String •
1. Tipe Data Dasar
OPERASI : 1. Operasi Penyambungan (Concatenation): – Operator : + (penyambungan, bukan tambah)
Contoh : ‘Teknik’ + ‘Informatika’ hasil : ‘Teknik Informatika’ ‘aaa’ + ‘ bbb’ hasil: ‘aaa bbb’ ‘1’ + ‘2’ hasil: ’12’
29
1. Tipe Data Dasar
String
2. Operasi Perbandingan menghasilkan nilai boolean (true dan false) <
Lebih kecil
≤ >
Lebih kecil atau sama dengan Lebih besar
≥ =
Lebih besar atau sama dengan Sama dengan
≠
Tidak sama dengan
Contoh: ‘abcd’ = ‘abc’ hasil: false ‘aku’ < ‘AKU’ hasil: true 30
Syarat penamaan (variabel, konstanta, nama type bentukan, nama field, nama fungsi,nama prosedur)
➔ Harus unik (tidak boleh dua buah nama yang sama) ➔ Harus dimulai dengan huruf alfabet (tidak boleh dimulai
dg angka, spasi, atau karakter khusus lainnya) ➔ Huruf besar dan huruf kecil tidak dibedakan ➔ Karakter penyusun nama hanya boleh huruf alfabet, angka, dan ‘_’ (underscore) ➔ Tidak boleh mengandung operator aritmetika, relasional, tanda banca, dan karakter khusus lainnya ➔ Karakter tidak boleh dipisah dengan spasi ➔ Panjang nama tidak dibatasi 31
Contoh penamaan NAMA
Contoh yang salah
6titik Nilai ujian PT-1 Hari! A1
Contoh yang benar
Titik6 atau titik_6 NilaiUjian atau Nilai_ujian PT_1 atau PT1 Hari A1 32
Yang diberi nama dalam Algoritma
1. Peubah (variable) : Tempat menyimpan nilai yg isinya dapat diubah Contoh: X, nilai_ujian, jumlah : real k : integer
2. Konstanta (constant) Tempat penyimpanan di dalam memori yg nilainya tetap selama pelaksanaan program dan. Notasi yg digunakan adalah const Contoh ; const phi = 3.14, Nmaks = 100, sandi = ‘xyz’, dll 33
Yang diberi nama dalam Algoritma 3. Tipe Bentukan : Nama tipe bentukan diberikan oleh pemrogram contoh: Type titik : record <x:real, y : real> Type Jam : record < hh : integer {0..23} mm : integer {0..59} ss : integer {0..59} > P : titik J1, J2 : Jam Titik dan Jam adalah nama tipe, sedangkan P adalah variabel yg bertipe Titik, J1 dan J2 adalah variabel yg bertipe Jam
34
Yang diberi nama dalam Algoritma
4. Nama Fungsi : Function Maksimum (input A,B : integer) integer { mengembalikan nilai terbesar antara A dan B} Maksimum adalah nama fungsi 5. Nama prosedur : Procedure Tukar(input/output A, B : integer) { mempertukarkan nilai A dan B} Tukar adalah nama prosedur 35
NILAI dalam Algoritma • Nilai adalah besaran dari tipe data yang terdefinisi (tipe dasar atau tipe bentukan) • Dapat berupa data yg disimpan di dalam peubah atau konstanta, nilai dari hasil hitung, atau nilai yg dikirim oleh fungsi • Pada ALgoritma, memanipulasi nilai di dalam peubah/variabel (yg bertipe sama) 36
Pengisian Nilai ke dalam Peubah (Variable): 1.
Pengisian secara langsung (assignment): Mengisi sebuah nilai ke dalam peubah secara langsung (nilai yg diisikan harus bertipe sama dg tipe peubah) contoh : M 16 PM*2 M P + 100 PP+M
2.
Pembacaan : Nilai peubah dapat diisi secara eksternal dafri piranti masukan, misalnya dari keyboard, dari file, mouse, dsb. Akan membaca sesuai apa yg kita masukkan (inputkan). Contoh : Read (M) : komputer membaca nilai M yg diinputkan dari luar (mis: keyboard), jika nilai yg diketik adalah 78, maka lokasi memori yg bernama M sekarang berisi 78
37
EKSPRESI ➔Transformasi nilai menjadi keluaran dilakukan
melalui sutu perhitungan (komputasi) ➔Cara perhitungan itu dinyatakan dalam suatu
ekspresi ➔Ekspresi terdiri atas :OPERAND dan
OPERATOR 38
Tiga macam Ekspresi 1.
Ekspresi Aritmetik (operator aritmetik): Contoh : a*b, a*b/c, a div b * c, a+b*c : d a*b (tipe data d harus sama dengan hasil hitungan ekspresi a*b)
2.
Ekspresi Relasional (operator relasional): Contoh : not ada, ada or ketemu, x < 5, ada or (x=y), dll.
3.
Ekspresi String (operator penyambungan (+)) Contoh : ‘Jl. Ganesa’ + ‘No.12’ 39
Jenis Proses Algoritma Algoritma berisi langkah-langkah penyelesaian suatu masalah (berurut, pemilihan, pengulangan aksi) Konstruksi Algoritma : ➔Runtunan (sequence process) ➔Pemilihan (selection process) ➔Pengulangan (repetition process)
40
Runtunan (sequence process) ➔ Terdiri dari satu atau lebih pernyataan ➔ Tiap pernyataan dikerjakan secara berurutan sesuai dg urutan
penulisannya (sebuah instruksi dilaksanakan setelah instruksi sebelumnya selesai dilaksanakan) Bentuk umum : proses 1 proses 2 proses 3 …
Contoh: mempertukarkan dua nilai dari dua buah variabel (peubah) A dan B. Algoritma : 1. isikan nilai A ke dalam C 2. isikan nilai B ke dalam A 3. isikan nilai C ke dalam B Hasil akhir : varibel A berisi nilai dari varibale B, dan variabel B berisi nilai dari variabel A .
41
Struktur Runtunan (sequence process) Program Flowchart
Algoritma umum
START
Read(A)
Read
A
Read(B)
Read
B
T ← A + B; Write(T)}
T← A+ B Write
T
END 42
Pemilihan (selection process) Sebuah aksi dikerjakan jika kondisi tertentu dipenuhi (True) dan apabila suatu kondisi tidak terpenuhi (false) maka program akan melakukan aksi lain (jika ada) atau langsung keluar dari blok pemilihan. Contoh: jika lampu traffic light berwarna merah, maka berhenti
Dalam Algoritma dan pemrograman Struktur pemilihan dapat didefinisikan dengan dua cara yaitu menggunakan statemen IF atau CASE. 43
Bentuk Umum - 1 biasa disebut : Bentuk IF-THEN if ( cond ) { - statements-true }
-
Flowchart
cond
TRUE
-
statementstrue
next instruction
Cara-Kerja
-
next instruction
Bila nilai cond - TRUE, maka kerjakan semua instruksi yang ada dalam statements-true Setelah selesai, lanjutkan ke next-instruction
- FALSE, maka langsung ‘meloncat’ mengerjakan isnstruksi yang ada di next-instruction
44
Bentuk Umum - 2 biasa disebut : Bentuk IF-THEN-ELSE if ( cond ) { - statements-true } else { - statements-false }
-
next instruction
Flowchart
FALSE
-
cond
statementsfalse
-
TRUE
-
statementstrue
next instruction
cond = condition
45
if ( cond ) { - statements-true } else {
} -
-
statements-false
Flowchart
FALSE
-
cond
statementsfalse
TRUE
-
statementstrue
next instruction
Cara-Kerja
-
next instruction
Bila nilai cond - TRUE, maka kerjakan semua instruksi yang ada dalam statements-true Setelah selesai, lanjutkan ke next-instruction
- FALSE, maka kerjakan semua instruksi yang ada dalam statements-false Setelah selesai, lanjutkan ke next-instruction
46
START
Algoritma Dasar Read(A) Read(B) IF A > B then Write(A) Else Write(B) End If
False
Write
Read
A
Read
B
A>B
True
write
B
A
END 47
Pengulangan (repetition process) Perulangan adalah instruksi yang dapat mengulang sederetan Instruksi secara berulang-ulang sesuai persyaratan yang ditetapkan. Struktur instruksi perulangan pada dasarnya terdiri atas : ➔ Kondisi perulangan; suatu kondisi yang harus dipenuhi agar perulangan dapat terjadi. ➔ Badan (body) perulangan; deretan instruksi yang akan diulangulang pelaksanaannya. ➔ Pencacah (counter) perulangan; suatu variabel yang nilainya harus berubah agar perulangan dapat terjadi dan pada akhirnya membatasi jumlah perulangan yang dapat dilaksanakan Jenis Pengulangan :
For – Next While – Do Repeat - Until
48
Bentuk Umum for ( init; cond; chng of cond ) { -- loop -} cond = condition Loop adalah sekumpulan instruksi yang rencananya akan dikerjakan secara berulang-ulang
Suatu pernyataan yang mengandung nilai BENAR (true) atau SALAH (False)
init = inisialisai Instruksi pemberian suatu nilai yang mempengaruhi nilai condition. Pada proses yang normal, pemberian nilai awal ini akan menyebabkan condition bernilai true. Instruksi ini hanya pernah satu kali dilaksanakan, yaitu hanya pada saat awal
init; while ( cond ) { -- loop -chng of cond } Chng of cond = Change of condition Suatu instruksi yang dapat mempengaruhi nilai condition. Pada proses yang normal, perubahan nilai disini suatu saat akan membuat nilai condition = false 49
Bentuk Umum initialization
for ( init; cond; chng of cond ) { -- loop -}
init; while ( cond ) { -- loop -chng of cond }
condition
false
true -
Kerjakan loop
Change Condition
----
Next instruction 50
Sumber : Sjukani, Algotitma & Struktur Data 1 dengan C++, Mitra Wacana Media, 2007
51