Halo! • Yuan Lukito, S.Kom., M.Cs
Perkuliahan dan Pengantar Algoritma dan Pemrograman – Pertemuan 01
• http://lecturer.ukdw.ac.id/yuan • http://yuanlukito.com
• Bidang minat: • • • • •
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Pattern recognition Machine Learning Algorithm & Data structure Web and Mobile Application Development (iOS) Digital Image Processing Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Agenda
Peraturan Umum
• Rencana Perkuliahan
• Menjaga ketertiban kelas
• • • • • •
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 Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
• 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 ☺)
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
1
Peraturan Umum
Peraturan Umum
• Absensi minimal 75% (10 kali kehadiran) untuk dapat mengikuti Test Akhir Semester (TAS)
• Nilai akhir (x) memenuhi 40 < x < 55 memiliki kesempatan mengikuti remidi
• Dapat mengajukan izin mengikuti TAS paling lambat hari Jum’at minggu terakhir perkuliahan
• Syaratnya absensi 100% • Jika nilai remidi > 70% maka nilai akhir adalah C
• 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
• Absensi tidak harus 100%, tetapi banyak “fasilitas” yang bisa anda dapatkan jika absensi 100%
• Contoh: 84,6 (A-) dapat naik jadi 85 (A) • 84,5, 84,4, 84,3 tidak dapat naik menjadi 85 Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
• Jika sakit, maksimal 1 minggu harus memberikan surat izin dari dokter (bisa titip teman) • Untuk urusan lain yang sangat penting, silahkan diskusikan terlebih dahulu Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Jadwal
Deskripsi Matakuliah
• Pertemuan di kelas
• 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
• 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
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
2
Kompetensi
Silabus
• 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
• 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
• Anda menguasai itu semua, nilai anda A Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Silabus
Buku Acuan
• 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
• A Structured Programming Approach Using C
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
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 6th Edition
Programming in C
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Sistem Penilaian
Sistem Penilaian
• Menggunakan sistem penilaian absolut
Elemen Penilaian
• 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
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Bobot (%)
Test Kecil (3 kali) Test Tengah Semester Test Akhir Semester Praktikum Keaktifan di kelas Total
15% 20% 25% 35% 5% 100%
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
4
Test Kecil
Test Tengah Semester
• Berupa test tertulis di kelas • Sebanyak 3 kali (dalam 1 semester) • Dapat dilakukan kapan saja tanpa pemberitahuan sebelumnya • Tidak ada susulan
• 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
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Test Akhir Semester
Nilai Keaktifan
• Berupa test tertulis • Bersifat Open book dan no electronics
• Dihitung apabila bertanya atau menjawab pertanyaan yang diberikan
• 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) Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
• 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 Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
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/
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Pertanyaan ?
?
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Algoritma dan Pemrograman
651 mutual friends = teman dia dan saya Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
6
Mutual Friends
Tabel 1. A 2. B 3. C 4. D 5. E 6. F 7. H 8. J 9. K
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Diagram
A, D, E, H, J
B C F K
1. B 2. C 3. F 4. K 5. M 6. O 7. P 8. Q 9. Z
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Graf
B C F K
M, O, P, Q, Z
mutual friends Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
7
Real World Problem
Masalah Komputasi Start
Finish Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Start
Jarak Terpendek
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 Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
8
Real World Problem
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Real World Problem
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Real World Problem
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Problem Solving
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
9
Jarak Terpendek (Dijkstra)
Jarak Terpendek (Dijkstra)
1. Set i=0, S0= {u0=s}, L(u0)=0, and L(v)=infinity for v <> u0. If |V| = 1 then stop, otherwise go to step 2. 2. For each v in V\Si, replace L(v) by min{L(v), L(ui)+dvui}. If L(v) is replaced, put a label (L(v), ui) on v. 3. Find a vertex v which minimizes {L(v): v in V\Si}, say ui+1. 4. Let Si+1 = Si cup {ui+1}. 5. Replace i by i+1. If i=|V|-1 then stop, otherwise go to step 2. Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Jarak Terpendek (Dijkstra)
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Problem Solving 1. ….. 2. ….. 3. ….. ... Solusi
? ? ? ? ? Masalah
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
10
Problem Solving ? ?
? ? ?
Masalah
1. ….. 2. ….. 3. ….. Programming ... Solusi (algoritma)
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
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
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Karakteristik Komputer (+) • 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)
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
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
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
11
Bahasa Pemrograman Terbaik? TIOBE Programming Community Index Agustus 2013
• 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 http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Bahasa Pemrograman
Bahasa Pemrograman
High Level
Low Level
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
General
Spesifically Targeted
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
12
1st Generation
Bahasa Pemrograman
2nd Generation 3rd Generation Interpreted
Compiled
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
4th Generation Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Matakuliah Pemrograman Algoritma dan Pemrograman (C) Mobile Web (PHP, Javascript)
Struktur Data (C++)
Pemrograman Jaringan (Java)
Pemrograman iOS (Objective-C) Pemrograman Berbasis Komponen (Java, .NET, Delphi)
Pemrograman Berorientasi Obyek (Java)
Pemrograman Web (PHP, Javascript)
AASE (.NET)
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Pertanyaan ?
?
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
13
Basis Bilangan
Basis Bilangan
• Bilangan basis 10 paling banyak digunakan
• Bilangan biner
• 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
• 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
• Sistem bilangan hexadecimal • 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F, 10, 11, 12, …
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Bilangan basis 10
Bilangan basis 2
• Misalkan 3456 dalam basis 10, membaca nilainya dengan cara:
• Konversi ke bilangan basis 10 menggunakan 2 pangkat …
103
102
101
100
23
22
21
20
3
4
5
6
1
1
0
1
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
14
?
Bit dan Byte
• Konversikan bilangan biner berikut ini ke dalam bilangan basis 10 • 01001101 • 100100 • 1111111
10110011 = 8 bit 10110011 = 1 byte
• Ubahlah bilangan basis 10 berikut ini menjadi bilangan biner • 12 • 27 • 112 Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Binary
Hexadecimal
100101110111 1001 0111 1111 9
7
F
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
? • Konversikan ke hexadecimal • 1101110111111010 • 111011
• Konversikan ke binary • 19 • 2A4 • 3FF8
97F Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
15
Pertanyaan ?
?
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
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 Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Algoritma, Flowchart, Pseudocode Materi Minggu Depan – Pertemuan 02
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
Yuan Lukito, S.Kom., M.Cs | http://lecturer.ukdw.ac.id/yuan
16