Dasar Pemrograman Komputer Pengantar Algoritma Sutrisno Ismiarta Aknuranda Issa Arwani Adharul Muttaqin Teknik Informatika - UB
Pengantar Algoritma - TIF UB 2010 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
Pengantar Algoritma - TIF UB 2010 Algoritma adalah sekumpulan instruksi atau langkah-langkah 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 (Masukan/Input) (Keluaran/Output) Pengantar Algoritma - TIF UB 2010
Pengantar Algoritma - TIF UB 2010 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
Pemodelan Komputer Sederhana COMPUTER TO – COMPUTE + ER menghitung/mengolah bilangan mengolah data Data yg diolah Pengolah Data (Processor) Data hasil olahan (Masukan/Input) (Keluaran/Output) (berbasis Aritmetika dan Logika) Penyimpanan Data (Storage, e.g. memory) Pengantar Algoritma - TIF UB 2010
Tahap Pengembangan Algoritma MASALAH / IDE PEMECAHAN SOLUSI / HASIL Algoritma Source Code Executable Code Pengantar Algoritma - TIF UB 2010
Tahap Pengembangan Algoritma DEFINISI MASALAH BUAT MODEL RANCANG ALGORITMA TULIS PROGRAM COMPILE Y Compile Error T Executable code: => Run Y Runtime Error T DOKUMENTASI Pengantar Algoritma - TIF UB 2010
Tahap Pengembangan Algoritma DEFINISI MASALAH RANCANG ALGORITMA BUAT MODEL 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 DOKUMENTASI
Tahap Pengembangan Algoritma DEFINISI MASALAH MEMBUAT MODEL RANCANG ALGORITMA TULIS PROGRAM COMPILE Error Model Matematika : Rumus ABC x1 = (-b + sqrt(b2 - 4ac))/2a x2 = (-b – sqrt(b2 - 4ac))/2a Executable code: => Run Error Pengantar Algoritma - TIF UB 2010 DOKUMENTASI
Tahap Pengembangan Algoritma TULIS PROGRAM COMPILE Error Executable code: => Run DOKUMENTASI DEFINISI MASALAH MEMBUAT MODEL RANCANG ALGORITMA Start d = b2 – 4ac d < 0 Masukkan a,b,c x1=(-b+sqrt(d))/2a x2 =(-b-sqrt(d))/2a Stop Y T Cetak: x1, x2 Cetak: “Akar imajiner” 10 Pengantar Algoritma - TIF UB 2010
Tahap Pengembangan Algoritma DEFINISI MASALAH MEMBUAT MODEL RANCANG ALGORITMA TULIS PROGRAM COMPILE Error Executable code: => Run DOKUMEN TASI Pengantar Algoritma - TIF UB 2010
Tahap Pengembangan Algoritma DEFINISI MASALAH MEMBUAT MODEL RANCANG ALGORITMA TULIS PROGRAM COMPILE Error Executable code: => Run Error DOKUMENTASI Pengantar Algoritma - TIF UB 2010
Tahap Pengembangan Algoritma DEFINISI MASALAH MEMBUAT MODEL RANCANG ALGORITMA TULIS PROGRAM COMPILE Error Executable code: => Run Error DOKUMENTASI Pengantar Algoritma - TIF UB 2010
Tahap Pengembangan Algoritma DEFINISI MASALAH MEMBUAT MODEL RANCANG ALGORITMA TULIS PROGRAM COMPILE Error Executable code: => Run Error DOKUMEN TASI Pengantar Algoritma - TIF UB 2010
Tahap Pengembangan Algoritma DEFINISI MASALAH MEMBUAT MODEL RANCANG ALGORITMA TULIS PROGRAM COMPILE Error Executable code: => Run Error DOKUMENTASI Pengantar Algoritma - TIF UB 2010
Tahap Pengembangan Algoritma DEFINISI MASALAH MEMBUAT MODEL RANCANG ALGORITMA TULIS PROGRAM COMPILE Error Executable code: => Run Error DOKUMENTASI Pengantar Algoritma - TIF UB 2010
Pengantar Algoritma - TIF UB 2010 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
Pengantar Algoritma - TIF UB 2010 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
Pengantar Algoritma - TIF UB 2010 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
Pengantar Algoritma - TIF UB 2010 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
Pengantar Algoritma - TIF UB 2010 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
Pengantar Algoritma - TIF UB 2010 Flow Chart Terminator Arah Proses Konektor Input/Output Konektor antar halaman Dokumen Pemanggilan Procedure Pemilihan Pengulangan Pengantar Algoritma - TIF UB 2010
Cetak Pesan “Akar imajiner” Contoh flow chart Start d = b2 – 4ac d < 0 x1=(-b+sqrt(d))/2a x2 =(-b-sqrt(d))/2a Stop Y T Masukkan a,b,c Cetak x1,x2 Cetak Pesan “Akar imajiner” Pengantar Algoritma - TIF UB 2010
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
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
Pseudocode (lanjutan) Tujuh operasi dasar komputer: Membaca data (input) Menampilkan data (output) Melakukan perhitungan aritmetika (compute) Memberikan nilai ke suatu identifier (store) Membandingkan dan memilih (compare and select) Melakukan pengulangan (repeat/loop) Procedure dan/atau Function
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
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
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
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
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
6. Mengulang Dapat menggunakan keyword “WHILE” dan “ENDWHILE” Contoh bil = 0 WHILE bil < 10 cetak bil bil = bil +1 ENDWHILE
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
Contoh pemakaian fungsi dalam pseudocode sederhana Algoritma Berangkat Kuliah Mulai Bangun dari tempat tidur Mandi Pagi Sarapan Pagi Pergi Ke Kampus Cari Ruang Kuliah Masuk kelas untuk Kuliah Selesai bisa dilihat sbg pemanggilan fungsi Pengantar Algoritma - TIF UB 2010
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
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 bisal dilihat sbg pemanggilan fungsi Pengantar Algoritma - TIF UB 2010
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
Contoh flow chart & pseudocode 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 Start d = b2 – 4ac d < 0 x1=(-b+sqrt(d))/2a x2 =(-b-sqrt(d))/2a Stop Y T Masukkan a,b,c Cetak x1,x2 Cetak Pesan “Akar imajiner” Pengantar Algoritma - TIF UB 2010
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 e.g. SQL,HTML,XML,CSS Object-oriented e.g. C++, Java, Smalltalk, C# In computer science, imperative programming is a programming paradigm that describes computation in terms of statements that change a program state. In much the same way that imperative mood in natural languages expresses commands to take action, imperative programs define sequences of commands for the computer to perform. Procedural programming is imperative programming in which the program is built from one or more procedures (also known as subroutines or functions). The terms are often used as synonyms, but the use of procedures has a dramatic effect on how imperative programs appear and how they are constructed. Heavily procedural programming, in which state changes are localized to procedures or restricted to explicit arguments and returns from procedures, is known as structured programming. From the 1960s onwards, structured programming and modular programming in general, have been promoted as techniques to improve the maintainability and overall quality of imperative programs. Object-oriented programming extends this approach.[citation needed] The term is used in opposition to declarative programming, which expresses what the program should accomplish without prescribing how to do it in terms of sequences of actions to be taken. Functional and logical programming are examples of a more declarative approach. Procedural programming can sometimes be used as a synonym for imperative programming (specifying the steps the program must take to reach the desired state), but can also refer (as in this article) to a programming paradigm, derived from structured programming, based upon the concept of the procedure call. Procedures, also known as routines, subroutines, methods, or functions (not to be confused with mathematical functions, but similar to those used in functional programming) simply contain a series of computational steps to be carried out. Any given procedure might be called at any point during a program's execution, including by other procedures or itself. [1] Pengantar Algoritma - TIF UB 2010
Paradigma pemrograman Imperative vs Declarative 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 Procedural programming is imperative programming in which the program is built from one or more procedures (also known as subroutines or functions). The terms are often used as synonyms, but the use of procedures has a dramatic effect on how imperative programs appear and how they are constructed. Heavily procedural programming, in which state changes are localized to procedures or restricted to explicit arguments and returns from procedures, is known as structured programming. From the 1960s onwards, structured programming and modular programming in general, have been promoted as techniques to improve the maintainability and overall quality of imperative programs. Object-oriented programming extends this approach.[citation needed] Pengantar Algoritma - TIF UB 2010
Paradigma pemrograman Imperative vs 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
Pemrograman terstruktur Menggunakan tiga struktur kontrol, yaitu: Sequence (pengerjaan berurutan) Selection (pemilihan) Repetition (pengulangan)
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).
Contoh sequence Contoh: Cetak “Jumlah Mahasiswa” Set Jumlah to 49 Cetak “Tambahan mahasiswa baru” Baca mhs_baru Jumlah = Jumlah + mhs_baru 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
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.
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
3. Repetition Beberapa perintah dapat diulang dengan menggunakan struktur kontrol repetition. Perintah akan tetap diulang selama kondisi perulangan dipenuhi (i.e. bernilai benar)
Contoh repetition Contoh: bintang = 0 WHILE bintang < 5 PRINT bintang bintang = bintang + 1 ENDWHILE
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.
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.
Latihan Ulangi latihan no. 1 s/d no. 5 diatas dengan menggunakan flowchart.