Halo! Perkuliahan dan Pengantar Algoritma dan Pemrograman Pertemuan 01 Yuan Lukito, S.Kom., M.Cs http://lecturer.ukdw.ac.id/yuan http://yuanlukito.com Bidang minat: Pattern recognition Machine Learning Algorithm & Data structure Web and Mobile Application Development (ios) Digital Image Processing Agenda Rencana Perkuliahan Peraturan Umum & Jadwal Deskripsi Matakuliah dan Kompetensi Silabus & Buku Acuan Praktikum Sistem Penilaian Pendukung Perkuliahan Pengantar Algoritma dan Pemrograman Programming as problem solving Binary System Peraturan Umum Menjaga ketertiban kelas Hanya dua kali peringatan saja dalam satu semester Pemicu keributan dapat diusir keluar kelas dan tidak dapat mengikuti ujian akhir semester Silahkan langsung bertanya jika ada yang kurang jelas Acungkan tangan anda terlebih dahulu Mencontek dalam ujian/test/quiz nilai langsung E (jika ketahuan ) 1
Peraturan Umum Absensi minimal 75% (10 kali kehadiran) untuk dapat mengikuti Test Akhir Semester (TAS) Dapat mengajukan izin mengikuti TAS paling lambat hari Jum at minggu terakhir perkuliahan Tidak ada tugas tambahan/extra project untuk menambah nilai Pembulatan nilai dimungkinkan dengan syarat absensi 100% dan hanya kurang maksimal 0,4 untuk naik 1 tingkat nilai Contoh: 84,6 (A-) dapat naik jadi 85 (A) 84,5, 84,4, 84,3 tidak dapat naik menjadi 85 Peraturan Umum Nilai akhir (x) memenuhi 40 < x < 55 memiliki kesempatan mengikuti remidi Syaratnya absensi 100% Jika nilai remidi > 70% maka nilai akhir adalah C Absensi tidak harus 100%, tetapi banyak fasilitas yang bisa anda dapatkan jika absensi 100% Jika sakit, maksimal 1 minggu harus memberikan surat izin dari dokter (bisa titip teman) Untuk urusan lain yang sangat penting, silahkan diskusikan terlebih dahulu Jadwal Pertemuan di kelas Senin, 08:30 11:20 WIB (kelas A) Senin, 11:30 14:20 WIB (kelas E) Praktikum Sesuai jadwal praktikum (grup A dan E) Konsultasi Bertanya mengenai materi di luar jam kuliah Hari Jum at, 13:00 15:00 WIB Deskripsi Matakuliah Matakuliah ini membahas mengenai cara menyusun algoritma untuk memecahkan sebuah masalah komputasi dan menyajikannya dalam bentuk flowchart, pseudocodeode maupun kode program Matakuliah terdiri dari pertemuan di kelas (teori) dan praktikum (praktek) di laboratorium Menggunakan bahasa pemrograman C 2
Kompetensi Dapat menyusun algoritma untuk memecahkan sebuah masalah komputasi Dapat menyajikan algoritma dalam bentuk flowchart dan pseudocode Dapat membuat program menggunakan bahasa pemrograman C berdasarkan algoritma yang telah disusun sebelumnya Anda menguasai itu semua, nilai anda A Silabus Perkuliahan dan Pengantar (26/08) Algoritma, Pseudocode dan Flowchart (02/09) Pengantar Bahasa Pemrograman C (09/09) Input dan Output (16/09) Struktur Kontrol Percabangan (23/09) Struktur Kontrol Perulangan (30/09) Struktur Kontrol Perulangan Bertingkat (07/10) Test Tengah Semester Silabus Modular Programming Bagian 1 (28/10) Modular Programming Bagian 2 (04/11) Struktur dan Fungsi Array (11/11) Array Multidimensi (18/11) Pengolahan Karakter dan String (25/11) Fungsi Rekursif (02/12) Test Akhir Semester Buku Acuan A Structured Programming Approach Using C 3
Buku Acuan Praktikum Kemungkinan baru dimulai minggu ke-3 perkuliahan Tunggu pengumuman di e-class Kegiatan Praktikum Guided, Unguided, Challenge, Tugas Nilai praktikum cukup besar, jangan sampai anda tidak mengikuti praktikum C How to Program 6 th Edition Programming in C Sistem Penilaian Sistem Penilaian Menggunakan sistem penilaian absolut Sesuai dengan tabel nilai di buku panduan akademik program studi Teknik Informatika Daftar nilai secara berkala akan diupload E-class Atau media lainnya Elemen penilaian Test Kecil, TTS, TAS, Praktikum dan Keaktifan Elemen Penilaian Bobot(%) Test Kecil (3 kali) 15% Test Tengah Semester 20% Test Akhir Semester 25% Praktikum 35% Keaktifan di kelas 5% Total 100% 4
Test Kecil Berupa test tertulis di kelas Sebanyak 3 kali (dalam 1 semester) Dapat dilakukan kapan saja tanpa pemberitahuan sebelumnya Tidak ada susulan Test Tengah Semester Berupa test tertulis Bersifat Open book dan no electronics Boleh membuka catatan, slide kuliah (tercetak) maupun buku referensi Tidak boleh menggunakan komputer, smartphone maupun peralatan elektronik lainnya Materi: Pertemuan 02-07 Test Akhir Semester Berupa test tertulis Bersifat Open book dan no electronics Boleh membuka catatan, slide kuliah (tercetak) maupun buku referensi Tidak boleh menggunakan komputer, smartphone maupun peralatan elektronik lainnya Materi: Pertemuan 02-13 Sebagian besar diambil dari pertemuan 08-14 Syarat mengikuti TAS: absensi > 75% Mengurus surat izin mengikuti TAS dalam batas waktu yang ditentukan (paling lambat hari Jum at, minggu terakhir perkuliahan) Nilai Keaktifan Dihitung apabila bertanya atau menjawab pertanyaan yang diberikan Tidak semua pertanyaan/jawaban akan diberi point Semakin banyak bertanya, point keaktifan anda semakin besar Tidak ada batasan jumlah bertanya, kumpulkan sebanyak-banyaknya Nilai keaktifan bukan nilai bonus! Anda tidak pernah bertanya/menjawab pertanyaan, nilai keaktifan anda 0 (Nol) Maksimal nilai keaktifan 5 point 5
Tools Tools (Dev-C++) Bahasa Pemrograman C Linux: install paket gcc Mac OS X: install Xcode command line tools Windows: Dev-C++ (praktikum menggunakan ini) Download dan install Dev-C++ Versi 5.4.2 (Orwell) http://sourceforge.net/projects/orwelldevcpp/ Pertanyaan?? Algoritma dan Pemrograman 651 mutual friends = teman diadan saya 6
Mutual Friends Tabel 1. A 2. B 3. C 4. D 5. E 6. F 7. H 8. J 9. K B C F K 1. B 2. C 3. F 4. K 5. M 6. O 7. P 8. Q 9. Z Diagram Graf B A, D, E, H, J C F M, O, P, Q, Z K mutual friends 7
Real World Problem Masalah Komputasi Start Finish Jarak Terpendek Start Jarak Terpendek O T? Finish Mulai A B C D E F G A 0 5 4 6 D 0 5 0 3 7 E 0 5 0 0 2 5 F 0 5 0 0 0 1 A D E F G = 4 + 3 + 2 + 1 = 10 8
Real World Problem Real World Problem Real World Problem Problem Solving 9
Jarak Terpendek (Dijkstra) Jarak Terpendek (Dijkstra) 1. Set i=0, S 0 = {u 0 =s}, L(u 0 )=0, and L(v)=infinity for v <> u 0. If V = 1 then stop, otherwise go to step 2. 2. For each v in V\S i, replace L(v) by min{l(v), L(u i )+d v u i }. If L(v) is replaced, put a label (L(v), u i ) on v. 3. Find a vertex v which minimizes {L(v): v in V\S i }, say u i+1. 4. Let S i+1 = S i cup {u i+1 }. 5. Replace i by i+1. If i= V -1 then stop, otherwise go to step 2. Jarak Terpendek (Dijkstra) Problem Solving????? Masalah 1... 2... 3...... Solusi 10
Problem Solving Karakteristik Komputer (+)????? Masalah 1... 2... 3... Programming... Solusi (algoritma) Cepat sekali dalam melakukan perhitungan Intel Core i7 2600K, 3.4 Ghz = 128300 MIPS MIPS = Million Instruction Per Second Tidak kenal lelah Ketelitian tidak berkurang walaupun bekerja dalam waktu lama Kecepatan semakin meningkat dan harga semakin turun (Moore s Law) Karakteristik Komputer (-) Tidak dapat berpikir sendiri Anda harus memberitahu caranya Tidak dapat memecahkan masalah jika belum pernah diajari Harus diajari dengan bahasa yang dimengerti oleh komputer AI = Artificial Intelligence = Kecerdasan Buatan Bahasa Pemrograman Terbaik? Tidak ada bahasa pemrograman terbaik Setiap bahasa pemrograman dirancang untuk dipakai dalam kondisi tertentu saja Matlab untuk pengolahan matrix Java untuk Object Oriented Programming Assembly untuk berkomunikasi langsung dengan hardware Ruby, Python, PHP untuk pengembangan aplikasi web 11
Bahasa Pemrograman Terbaik? TIOBE Programming Community Index Agustus 2013 http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html Bahasa Pemrograman Terpopuler Java, C, C++, Objective-C, PHP, C#, Visual Basic, Python,. Keuntungan belajar bahasa populer Support (tutorial, guide, forum, etc.) Libraries Belajar beberapa bahasa pemrograman yang memiliki karakteristik berbeda Dapat memilih bahasa pemrograman yang paling cocok untuk kondisi tertentu Bahasa Pemrograman Bahasa Pemrograman High Level Low Level General Spesifically Targeted 12
Interpreted Bahasa Pemrograman Compiled 1 st Generation 2 nd Generation 3 rd Generation 4 th Generation Matakuliah Pemrograman Algoritma dan Pemrograman (C) Mobile Web (PHP, Javascript) Pemrograman ios (Objective-C) Struktur Data (C++) Pemrograman Jaringan (Java) Pemrograman Berbasis Komponen (Java,.NET, Delphi) Pemrograman Berorientasi Obyek (Java) Pemrograman Web (PHP, Javascript) AASE (.NET) Pertanyaan?? 13
Basis Bilangan Bilangan basis 10 paling banyak digunakan 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 Basis 10 karena memiliki 10 symbol Bilangan basis lainnya Biner (Binary) dan Heksadesimal (Hexadecimal) Oktal Sistem bilangan hexadecimal 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10, 11, 12, Basis Bilangan Bilangan biner Terdiri dari 2 symbol, yaitu 0 dan 1 0, 1, 10, 11, 100, 101, 110, 111, 1000, Konversi bisa dilakukan dari satu basis bilangan ke basis bilangan lainnya Bilangan basis 10 Misalkan 3456 dalam basis 10, membaca nilainya dengan cara: Bilangan basis 2 Konversi ke bilangan basis 10 menggunakan 2 pangkat 10 3 10 2 10 1 10 0 3 4 5 6 2 3 2 2 2 1 2 0 1 1 0 1 14
? Konversikan bilangan biner berikut ini ke dalam bilangan basis 10 01001101 100100 1111111 Ubahlah bilangan basis 10 berikut ini menjadi bilangan biner 12 27 112 Bit dan Byte 10110011 = 8 bit 10110011 = 1 byte Binary Hexadecimal 100101110111 1001 0111 1111 9 7 F 97F? Konversikan ke hexadecimal 1101110111111010 111011 Konversikan ke binary 19 2A4 3FF8 15
Pertanyaan?? Belajar Mandiri Operasi pada bilangan biner Penjumlahan http://www.youtube.com/watch?v=jb_srh5yozk Pengurangan http://www.youtube.com/watch?v=s9ljknztyos Perkalian http://www.youtube.com/watch?v=qw0xnzpyw Uk Pembagian http://www.youtube.com/watch?v=sqipxx14nus Problem Set 01 Algoritma, Flowchart, Pseudocode Materi Minggu Depan Pertemuan 02 16