Algoritma dan Pemrograman I PENGERTIAN Pengertian – Pengertian (AP1-1) • Tujuan Instuksional Umum “ Mahasiswa mampu mendefinisikan Algoritma dan Pemrograman serta mengenal berbagai jenis bahasa pemrograman“ • Tujuan Instruksional khusus : – Mengenal asal pengertian algoritma dan pemrograman – Mengenal jenis penulisan logika pemrograman – Mengenal berbagai tata cara penulisan logika – Mampu menyebutkan dan mengelompokan bahasa pemrograman kedalam tingkatan bahasa pemrograman – Mampu menyebutkan bahasa pemrograman dan kegunaannya 2 Pengertian Algoritma dan Pemrograman • Ilustrasi : Bagaimana caranya agar mobil dan pengemudi sampai di tujuan 3 Pengertian Algoritma dan Pemrograman • Dari gambar ilustrasi – Berapa kemungkinan penyelesaian jalan yang dilalui ? (buat tanda panah sebagai petunjuk arah) – Anggap satu kemungkinan yang dipilih, tuliskan tahapan yang harus dilalui – Dari tahapan yang dibuat apakah menyelesaikan masalah ? 4 Pengertian Algoritma dan Pemrograman • Dari pertanyaan yang diajukan, ada suatu hipotesa : – Untuk menyelesaikan suatu permasalahan pasti harus memiliki alur yang jelas dan tepat. – Dari alur yang dibuat pasti susunan / tahapan tersusun secara sistematis dan hirarkis – Susunan sistematis dan hirarkis pasti dapat menyelesaikan masalah tertentu • Keyakinan yang didapat : – Setiap menyelesaikan masalah harus menggunakan cara-cara sistematis, terstruktur, dan hirarkis – Cara-cara tersebut harus bisa dituliskan secara benar dan masuk akal. (Metode Ilmiah) 5 Pengertian Algoritma dan Pemrograman Bagaimana karateristik komputer ? Komputer terdiri dari rangkaian elektronik IC, Kawat Tembaga, mainboard, dll Terdiri dari ribuan transistor (tergabung dalam IC) yang berisikan gerbang-gerbang logika (AND,OR, NAND, NOR, dll) Eksekusi dipicu dari adanya masukan (input) listrik berkisar 5 volt dan berupa TRUE / FLASE Aliran data berupa dijit biner 1 dan 0, yang tersusun sesuai instruksi Instruksi dibuat secara sistematis dan hirarkis, dan masuk akal (sesuai logika) Question : Bagaimana agar instruksi dapat dimengerti dan bisa menghasilkan keluaran (output) sesuai keinginan ? 6 Pengertian Algoritma dan Pemrograman • Answer : – Harus ada instruksi yang dimengerti oleh komputer – Komputer hanya terdiri dari rangkaian elektronik, karena itu hanya mengerti nilai 1 dan 0 – Nilai 1 dan 0, dapat berupa rangkaian instruksi jika disusun dengan susunan yang sistematis dan masuk akal untuk menyelesaikan masalah tertentu – Susunan masuk akal dikenal dengan istilah urutan instruksi bahasa yang dikenal oleh komputer. – Karena itu pasti komputer punya bahasa, dan kita harus membuat bahasa yang dimengerti oleh komputer. – Bahasa tersebut dikenal dengan istilah bahasa pemrograman. – Program komputer harus dibuat dengan urutan logika yang benar dan sesuai dengan masalah yang ingin diselesaikan. 7 Pengertian Algoritma dan Pemrograman Urutan logika untuk menyelesaikan masalah tertentu Istilah Algoritma Diterjemahkan oleh bahasa pemrograman Contoh : PASCAL, C, DELPHI, dll Hasil Instruksi yang dikenal oleh komputer 8 Pengertian Algoritma dan Pemrograman • Simpulan : – Algoritma : urutan-urutan logis dari suatu pernyataan untuk menyelesaikan kasus / masalah tertentu – Pemrograman : proses penterjemahan algoritma kedalam bahasa yang dimengerti oleh komputer. • Asal kata algoritma Al-Khwārizmī, Persian astronomer and mathematician, algorism the technique of performing basic arithmetic by writing numbers in place value form and applying a set of memorized rules and facts to the digits Algoritmi calculation method Algorithm a sequence of finite instructions, often used for calculation and data processing 9 Jenis Penulisan Logika Pemrograman 1. Bahasa Natural : digunakan untuk membuat algoritma yang komplek atau algoritma teknik. – Contoh : Buat kotak dengan sama sisi Tentukan sisi dengan ukuran yang sama panjang 2. Pseudocode : susunan yang padat dan merupakan algoritma informal untuk deskripsi high-level dengan menggunakan struktur konvensi bahasa pemrograman, tetapi dalam penulisan tidak memperhatikan pemakaian subrutin (prosedur) , deklarasi varabel dan kode sistem khusus. – Contoh : if NIM Valid then Eksekusi transkrip nilai else tampilkan pesan kesalahan end if 10 Jenis Penulisan Logika Pemrograman 3. Flowcharts (representasi grafik) : representasi algoritma dengan skema atau langkah proses yang ditunjukan dengan berbagai macam bentuk dan dikaitkan dengan arah panah. 11 Jenis Penulisan Logika Pemrograman Bahasa Pemrograman : bahasa buatan yang digunakan untuk menuliskan suatu program yang mengontrol kelakuan dari mesin, seperti komputer. Contoh : bahasa pemrograman PASCAL 1. var 2. i,j: integer; 3. 4. begin 5. for i:=1 to row do 6. begin 7. for j:=1 to col do 8. begin 9. if (i=j) then M[i,j] := 1 10. else 11. M[i,j] := 0; 12. end; 13. end; 14. end 12 Jenis Penulisan Logika Pemrograman • Klasifikasi Algoritma : 1. Ditinjau dari Implementasi : • Recursion or iteration: A recursive algorithm merupakan algoritma yang dapat memanggil dirinya sendiri sampai kondisi yang ditentukan dipenuhi, dikenal dengan functional programming • Logical: suatu algoritma yang dapat dilihat sebagai deduksi lojik terkontrol. • Serial atau parallel atau distributed: algoritma yang biasanya dieksekusi dengan asumsi satu instruksi pada suatu waktu. • Deterministic or non-deterministic: algoritma deterministik menyelesaikan masalah dengan keputusan yang tepat pada setiap tahapannya, sedangkan algoritma non-deterministic menyelesaikan masalah dengan perkiraan. • Exact atau approximate: mencari suatu perkiraan yang bisa menghampiri solusi yang benar. Biasa digunakan pada deterministik atau strategi random. 13 Jenis Penulisan Logika Pemrograman 2. 3. Ditinjau dari Paradigma perancangan: • Divide and conquer • Dynamic programming • The greedy method • Linear programming • Reduction. • Search and enumeration • The probabilistic and heuristic paradigm (Probabilistic algorithms, Genetic algorithms, Heuristic algorithms) Ditinjau dari Kajian Studi : • search algorithms, • sorting algorithms, • merge algorithms, • numerical algorithms, • graph algorithms, • string algorithms, • computational geometric algorithms, • combinatorial algorithms, • machine learning, • cryptography, data compression algorithms • parsing techniques 14 Jenis Penulisan Logika Pemrograman 4. Ditinjau dari Kompleksitas: • Algoritma efesien 5. Ditinjau dari Computing Power : • polynomial time , • primitive recursive functions 15 Tata Cara Penulisan Logika • • Yang harus diingat dalam menuliskan logika adalah : Domain (masalah utama) yang ingin diselesaikan Keteraturan / susunan pernyataan logika yang mengarah pada penyelesaian masalah Penggunaan notasi / lambang / simbol yang digunakan dalam menterjemahkan suatu logika Contoh : Membuat Mie Rebus Masalah utama : Mie Rebus (hasil yang akan diperoleh) Susunan : 1. Ambil Mie 2. Nyalakan kompor 3. Ambil wadah dan isi air 4. Panaskan air hingga mendidih 5. Masukkan Mie kedalam wadah yang berisi air mendidih 6. Aduk hingga matang 7. Angkat dan sajikan Lambang bilangan 1 – 7 merupakan penggunaan lambang untuk langkah yang dikerjakan. 16 Tata Cara Penulisan Logika • Diskusi : Buat penyelesaikan masalah untuk “Anda belajar AP1 di ST-INTEN” Selesaikan dalam 10 Menit • Penyelesaian : Domain : …………………………………… Susunan : …………………………………… 17 Bahasa Pemrograman dan Tingkatan 1. 2. High-Level languages : menunjukan level abtraksi tertinggi dari bahasa mesin , bekerja dengan teknik usability, threads, locks, objects, variables, arrays dan aritmetik komplek atau ekspresi boolean. Low-Level Languages : menunjukkan bahasa yang dekat dengan hardware, dikenal dengan bahasa asembly. Contoh : fib: mov edx, [esp+8+1] cmp edx, 0 ja @f mov eax, 0 ret @@: cmp edx, 2 ja @f mov eax, 1 18 Bahasa Pemrograman dan Tingkatan • • • Pengertian level bukan menunjukan lebih tinggi tetapi menunjukkan kedalaman informasi tentang bagaimana komputer bekerja produktif dengan bahasa yang diberikan. Contoh Bahasa : – High Level : PASCAL, C, DELPHI, JAVA, dll – Low Level : Assembler, TASM, MASM, dll Model Eksekusi : – Interpreted : Interpreted languages melakukan eksekusi dan pembacaan secar alangsung, dan tidak ada tahapan kompilasi. – Compiled : menterjemahkan kedalam bentuk executable program sebelum di run. Terbagi atas : 1. Intermediate representations : ketika eksekusi dibuat terlebih dulu representasi program dalam bentuk bytecode, sehingga ketika kompilasi tidak membaca program sumber kembali 2. Machine code generation : mengkompilasi langusung menjadi bahasa mesin – Translated : bahasa diterjemahkan kedalam low level programming sehingga eksekusi mengikuti aturan eksekusi bahasa mesin. 19 Bahasa Pemrograman dan Tingkatan 1. Array languages 2 Aspect-oriented languages 3 Assembly languages 4 Authoring languages 5 Command line interface languages 6 Compiled languages 7 Concurrent languages 8 Curly-bracket languages 9 Dataflow languages 10 Data-oriented languages 11 Data-structured languages 12 Declarative languages 13 Esoteric languages 14 Extension languages 15 Fourth-generation languages 16 Functional languages 17 Interactive mode languages 18 Interpreted languages 19 Iterative languages 20 List-based languages – LISPs 22 Logic-based languages 23 Machine languages 24 Macro languages 25 Metaprogramming languages 26 Multiparadigm languages 27 Numerical analysis 28 Non-English-based languages 29 Object-oriented class-based languages 29.1 Multiple dispatch 29.2 Single dispatch 30 Object-oriented prototype-based languages 31 Off-side rule languages 32 Procedural languages 36 Stack-based languages 33 Reflective languages 37 Synchronous languages 34 Rule-based languages 38 Syntax handling languages 35 Scripting languages 39 Visual languages 40 Wirth languages 41 XML-based languages 20 Tugas (Kode AP1-1) • Tugas : – Mencari definisi algoritma dan pemrograman dari berbagai referensi – Mencari jenis bahasa pemrograman dan mengelompokan kedalam tingkatan bahasa pemrograman serta menyebutkan kegunaannya – Dikerjakan secara individu 21 Algoritma dan Pemrograman I Kode AP1-2 (Tipe Data dan Notasi Aritmetika) Teknik Informatika Sekolah Tinggi Teknologi dan Sains Indonesia Tipe Data dan Notasi Aritmetika (Kode AP1-2) • Tujuan Instuksional Umum “ Mahasiswa mampu menyebutkan tipe data dan kegunaan notasi aritmatika “ • Tujuan Instruksional khusus : – Mengenal Tipe data ordinal dan tipe bentukan – Mampu menyebutkan ranah tiap-tiap tipe ordinal dan tipe bentukan – Mampu menggunakan tipe data untuk berbagai kasus – Mengenal kegunaan notasi aritmetika dan cara menggunakannya • Durasi 60 Menit Tatap Muka • Metode : Tutorial dan Diskusi 23 Tipe data ordinal dan tipe bentukan • • • • • Data ordinal : tipe data yang memiliki ranah yang dapat dihitung. Contoh : – Integer : -32768 … 32767 – Real : 2.9 x e -39 … 1.7 x 10 e 38 – Char : char(0) … char (255) – Bolean : [ TRUE,FALSE] – String : ‘abc’,’456’,’10’ Tipe bentukan : – LIST – Record (rekaman) – STACK – FILE – TREE, dll Tipe Array Tipe Set (himpunan) memiliki batas bawah 0 dan batas atas 255 elemen 24 Operator • Operator Biner Aritmetik: Operator Operation + Addition - Subtraction * Multiplication / Division div mod Integer division Remainder Operand types integer type real type integer type real type integer type real type integer type real type integer type integer type Result type integer type real type integer type real type integer type real type real type real type integer type integer type 25 Operator • String Operator Operator Operation Operand types + concatenation string type, Char type, or packed string type Result type string type • Set Operator Operator + * Operation Union Difference Intersection Operand types compatible set types compatible set types compatible set types Hasil dari operasi set tergantung dari aturan logika set : An ordinal value C is in A + B only if C is in A or B. An ordinal value C is in A - B only if C is in A and not in B. An ordinal value C is in A * B only if C is in both A and B. 26 Operator • Boolean Operator Operator not and or xor Operation negation logical and logical or logical xor Operand types Boolean Boolean Boolean Boolean Result type Boolean Boolean Boolean Boolean • Logical Operator Operator not and or xor shl shr Operation Bitwise negation Bitwise and Bitwise or Bitwise xor Shift left Shift right Operand types integer type integer type integer type integer type integer type integer type Result type integer type integer type integer type integer type integer type integer type 27 Operator • Relational Operator Operator = Operation Equal <> < > <= Not equal Less than Greater than Less or equal >= <= >= in Greater or equal Subset of Superset of Member of Result type Operand types Boolean compatible simple, pointer, set, string, or packed string types Boolean Boolean Boolean Boolean compatible simple, pointer, set, string, or packed string types compatible simple, string, packed string types, or PChar compatible simple, string, packed string types, or PChar compatible simple, string, packed string types, or PChar Boolean Boolean Boolean Boolean compatible simple, string, or packed string types, or PChar compatible set types compatible set types left operand: any ordinal type T; right operand: set whose base is compatible with T. 28 Tipe Data Untuk Berbagai Kasus • Kasus 1 : – Definisikan suatu tipe data untuk nilai-nilai berikut: 1. 0.9899 2. ‘Saya Pergi ke ST-INTEN’ 3. 120000 4. 12 x 10 7 5. (Januari,…, Desember) 6. X bernilai False, dan Y bernilai TRUE 7. Y = 10 • Kasus 2 – Gunakan operator yang sudah ada, berapakah hasilnya 1. 3+3= 2. ‘saya’ + ‘ dia’ = 3. TRUE and False = 4. 7 div 3 = 5. 8 mod 3 = 29 Tipe Data Untuk Berbagai Kasus • Kasus 3: – Berapa hasilnya X = (1,2,3,4,5,6) Y = (3,5,6,8) 1. X + Y = 2. X – Y = 3. X * Y = – 1. 2. 3. 4. 5. Berapa hasilnya (TRUE / FALSE): A=A Aku = Aku 5 <> 7 4 >= 3 4 in [1,2,3,4] 30 Tugas (Kode AP1-2) • Tugas : – Membuat contoh ranah tipe data minimal 50 buah. – Dikerjakan kelompok 31