ALGORITHM 6 Algoritma, Flowchart & Program Dahlia Widhyaestoeti, S.Kom dahlia.widhyaestoeti@gmail.com 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 Rentang nilai Format Byte 0.. 255 8 bit Shortint -128.. 127 8 bit Word 0.. 65535 16 bit Integer -32768.. 32767 16 bit Longint -2147483648.. 2147483647 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 Rentang nilai Format Real 2.9 x 10-39.. 1.7 x 10 38 6 byte Single 1.5 x 10-45.. 3.4 x 10 38 4 byte Double 5.0 x 10-324.. 1.7 x 10 308 8 byte extended 3.4 x 10-4932.. 1.1 x 10 4932 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
String 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 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! A 1 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 P M * 2 M P + 100 P P + 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(B) Read Read A B T A + B; T A + B Write(T)} Write END T 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 Flowchart if ( cond ) { - -- - } - - statements-true next instruction cond - statementstrue - Bila nilai cond - TRUE, maka kerjakan semua instruksi yang ada dalam statements-true Setelah selesai, lanjutkan ke next-instruction Cara-Kerja TRUE 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 ) { - -- } else { - } - - statements-true statements-false next instruction FALSE - Flowchart cond - TRUE - statementsfalse statementstrue next instruction cond = condition 45
if ( cond ) { - --- statements-true Flowchart } - else { - --- - } - Cara-Kerja statements-false next instruction FALSE - cond TRUE - statementsfalse statementstrue - Bila nilai cond - TRUE, maka kerjakan semua instruksi yang ada dalam statements-true Setelah selesai, lanjutkan ke next-instruction next instruction - FALSE, maka kerjakan semua instruksi yang ada dalam statements-false Setelah selesai, lanjutkan ke next-instruction 46
Algoritma Dasar START Read(A) Read(B) IF A > B then Write(A) Else Write(B) End If Write False B Read Read A > B A B True write 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 init = inisialisai Loop adalah sekumpulan instruksi yang rencananya akan dikerjakan secara berulang-ulang Suatu pernyataan yang mengandung nilai BENAR (true) atau SALAH (False) 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 for ( init; cond; chng of cond ) { --- loop - } init; while ( cond ) { --- loop initialization condition - true Change Condition false Kerjakan loop - chng of cond } - Next instruction 50
Sumber : Sjukani, Algotitma & Struktur Data 1 dengan C++, Mitra Wacana Media, 2007 51