ku1102 ap 2 algorithmicthinking
TRANSCRIPT
10/3/20
1
Algorithmic Thinking
TimPenyusun Materi KU1102-PengenalanKomputasiInstitut Teknologi Bandung©2019
1
Tujuan
• Mahasiswa mampu menjelaskan konsep algoritma sebagai teknikcomputationalthinkingdalam pemecahan persoalan• Mahasiswa mampu menjelaskan konsep algoritma (sequentialcontrol,selection,repetition,dancontrolabstraction)untukmendekomposisi secara algoritmik solusi untuk persoalansederhana• Mahasiswa mampu menerjemahkan konsep algoritma sederhanadalam conceptualtool(flowchart/activitydiagram/pseudocode)
03/10/20 KU1102- PengenalanKomputasi- AlgorithmicThinking 2
2
10/3/20
2
User – Software – Hardware
03/10/20 KU1102- PengenalanKomputasi- AlgorithmicThinking 3
3
Perangkat Lunak
• Perangkat Lunak (software)memungkinkan penggunamengkomunikasikan suatu persoalan kepada komputer dankomputer memberikan solusinya kepada pengguna• Tanpa perangkat lunak,komputer hanya mesin bodoh!
03/10/20 KU1102- PengenalanKomputasi- AlgorithmicThinking
Software = program + data + dokumentasi
4
4
10/3/20
3
Problem Solving dengan Pemrograman
• Pemrograman (programming):adalah salahsatu bentukpenyelesaian persoalan (problemsolving)dimanapersoalan sertasolusinya direpresentasikan dalam bentuk yangbisa diproses olehkomputer• Secara umum terdiri atas langkah-langkah sbb.:
• Memahami persoalan• Menyusun rencana untuk menyelesaikan persoalanà algoritma• Menyusun solusi berdasarkan rencanaà programkomputer• Mengevaluasi solusi
503/10/20 KU1102- PengenalanKomputasi- AlgorithmicThinking 5
5
Dari Persoalan Menjadi Program (2)
• Berdasarkan pemahaman terhadappersoalan,programmermenyusundaftarpersoalan danmendekomposisi menjadi sub-persoalan• Setiap sub-persoalan berpotensimenjadi modul program
• Dalam kuliah ini,modul programakandisusun dalan subprogram (tunggubeberapa minggu lagi)
• Topdowndesign:Mulai daripersoalan besar didetilkan sampaipadaakhirnya menjadi langkah-langkah penyelesaian sub-persoalanà algoritma
03/10/20 KU1102- PengenalanKomputasi- AlgorithmicThinking 6
Persoalan
Subpersoalan-1
Subpersoalan-1.1
Subpersoalan-1.2
Subpersoalan-2
Subpersoalan-2.1
Subpersoalan-2.2
6
10/3/20
4
Dari Ide Menjadi Algoritma
• Algoritma:himpunan prosedur langkah perlangkah untukmenyelesaikan suatu [sub]persoalan• Dapat ditulis dengan menggunakan teks atau gambar:
• Pseudocode (contoh:notasi algoritmik)à teks;persilangan antarabahasa manusia danbahasa pemrograman• Flowchartà diagram
• Algoritma disusun dengan memanfaatkan controlstructure yangmenentukan bagaimana urutan langkah dieksekusi• Sequence:langkah-langkah yangdieksekusi berurutan• Conditional (percabangan):pilihan langkah• Repetition/loop (pengulangan):pengulangan langkah
03/10/20 KU1102- PengenalanKomputasi- AlgorithmicThinking •77
Contoh-1: Keluar dari LabirinMiraperlu menemukan jalan untukkeluar dari sebuah labirin danmeminta anda untuk memberikanarahan.Dia memasuki labirin daribawah (segitiga hitam)danharusmencapai pintu keluar padabagianatas (lingkaran merah besar).
03/10/20 KU1102- PengenalanKomputasi- AlgorithmicThinking 8
Namun,Mirahanya dapat mengingat empat gerakan berikut:
Mirabisa membentuk sebuah gerakan panjang yangdibentuk dariempat gerakan A,B,C,atau D.Satugerakan bisa diulang beberapakali.Urutan gerakan ini dapat membawa Mirakeluar dari labirindengan dua kaliperulangan.
Tantangan:Urutan gerakan manakah yangyangjikadiulangduakaliolehMiradapat membuatnya mencapai pintu keluar?Sumber:Bebras Indonesia(www.bebras.or.id).Kode Soal:I-2017-CH-01A
8
10/3/20
5
Contoh-2: Klub Berbagi BukuAdatujuh (7)siswa yanggemar membaca buku danmereka membentuk klub untuk berbagi buku.Jikaada satu buku baru diperoleh (dandibaca)seorang siswa,kemudian ia akan meneruskan meminjamkanke anggota klub lainnya dengan cara berikut.Tidak setiap siswa menjadi sahabat siswa lainnya,makaseorang siswa hanya meneruskan meminjamkan buku ke siswa yangbersahabat dengannya.Jika seorangsiswa mempunyai beberapa sahabat,maka sahabat yangpalingmuda yangakan dipinjami terlebih dulu,yangbelum pernah meminjam buku itu.Kalau semua sahabatnya sudah pernah meminjamnya,maka iaakan mengembalikan ke siswa yangsebelumnya meminjamkan buku itu kepadanya.
03/10/20 KU1102- PengenalanKomputasi- AlgorithmicThinking 9
Diagramdisamping menunjukkan tujuh siswadangaris-garis menunjukkan hubungan"sahabat"itu.Setiap simpul berisi informasinama danumur.
Tantangan:Benselesai membaca sebuah buku baru daningin berbagi dengansemua anggota klub danselain Benbelum ada yangpernahmembacanya.Siapa yangakan menjadi pembaca terakhir daribuku tersebut?
Sumber:Bebras Indonesia(www.bebras.or.id).Kode Soal:I-2017-IR-07
9
Contoh-3: Memasak Kentang untuk Makan Malam• Untukmakanmalam,sejumlahkentangharusdikupasdandimasak• Keadaanawal:kantongkentangtersediadidapur
• Belumjelasapakahkentangtersediacukupatautidak• Keadaanakhir:masakandenganbahandasarkentangtersediadansiapdihidangkanuntukmakanmalam
03/10/20 KU1102- PengenalanKomputasi- AlgorithmicThinking 10
10
10/3/20
6
Memasak kentang untuk makan malam
03/10/20
Kentang tersedia?
Kupas Kentang
Beli Kentang
Mau dimasak apa?
Goreng ? Rebus ? Sup ?
Ya
Tidak
KU1102- PengenalanKomputasi- AlgorithmicThinking 11
11
Memasak Kentang untuk Makan Malam -Pseudocode
03/10/20 KU1102- PengenalanKomputasi- AlgorithmicThinking
if kentang_tersedia? = tidak thenBeli_Kentang
{ Di titik ini kentang sudah tersedia }Kupas_Kentangif pilihan_masakan = goreng then
Goreng_Kentangelse if pilihan_masakan = rebus then
Rebus_Kentangelse { pilihan_masakan = sup }
Buat_Sup
12
12
10/3/20
7
Memasak Kentang untuk Makan Malam -Flowchart
03/10/20 KU1102- PengenalanKomputasi- AlgorithmicThinking
Beli KentangKentang Tersedia?
Goreng Kentang
Tidak
Ya
Selesai
Mulai
Kupas Kentang
Dimasakapa?
Rebus Kentang
Buat Sup
goreng
rebus
sup
Beli KentangKentangTersedia?
13
13
Contoh-4: Perbaikan Jam Dinding• Keadaanawal:Jamdindingtidakmenunjukkanwaktuyangtepat• Keadaanakhir:Jamdindingmenunjukkanwaktuyangtepat• Bila jarum tidak bergerak,ganti baterai• Jika bergerak berarti baterai masih hidup tinggal dilakukanperbaikan letak jarum jam
03/10/20 KU1102- PengenalanKomputasi- AlgorithmicThinking 14
14
10/3/20
8
Perbaikan Jam Dinding: Flowchart-1
03/10/20 KU1102- PengenalanKomputasi- AlgorithmicThinking
JarumBergerak?
GantiBaterai Baru
Perbaiki Jarum panjangdan pendek pada lokasi
yang tepat
Tidak
Ya
Apa yang salah dengan solusi
ini??
Mulai
Selesai
15
15
Perbaikan Jam Dinding: Flowchart-2
03/10/20 KU1102- PengenalanKomputasi- AlgorithmicThinking
JarumBergerak?
GantiBaterai Baru
Perbaiki jarum panjangdan pendek pada lokasi
yang tepat
Tidak
Ya
Bagaimana jikaternyata setelah
dua hari jam kembali tidak
tepat?
Mulai
Selesai
16
16
10/3/20
9
JarumBergerak?
GantiBaterai Baru
Perbaiki Jarum panjang dan pendek pada
lokasi yang tepat
Tidak
Ya
Periksa jam setelah 2 hari
Jam tepat
waktu?Tidak
Ya
Perbaikan Jam Dinding: Flowchart-3
03/10/20 KU1102- PengenalanKomputasi- AlgorithmicThinking
Selesai
Mulai
17
17
Perbaikan Jam Dinding: PseudocodeSetaradenganFlowchart-3
03/10/20 KU1102- PengenalanKomputasi- AlgorithmicThinking 18
if jarum_bergerak? = tidak thenGanti_Baterai_Baru
{ Di titik ini jarum jam sudah pasti bergerak }repeat
Perbaiki_Letak_Jarum_JamPeriksa_Jam_Setelah_2_Hariif jarum_jam_tepat? = tidak then
Ganti_Baterai_Baruuntil (jarum_jam_tepat? = ya)
18
10/3/20
10
Contoh-5Which photo do you want?2014-JP-03
Johnnyhas8photos.HewouldliketogiveoneofthemtoBella.Heaskshersomequestionstofindoutwhichphotoshewants:
“Doyouwantaphotowithabeachumbrella?”“Yes.”“DoyouwantaphotowhereIhavesomethingonmyhead?”“No.”“Doyouwantaphotowhereyoucanseethesea?”“Yes.”
WhichphotoshouldJohnnygivetoBella? (Source:BebrasChallenge)
03/10/20 19KU1102- PengenalanKomputasi- AlgorithmicThinking
19
Which photo do you want? –Flowchart
03/10/20 KU1102- PengenalanKomputasi- AlgorithmicThinking 20
Mulai
ambil foto ke-1
ada payung?
semua foto sudahdiperiksa? atau fotosesuai ditemukan? Selesai
ada sesuatudi kepala?
dapat melihatlaut?
Cetak foto
Tidak
Ya
Ya
Tidak
Ya
Tidak
Tidak
YaCetak foto tidak
ditemukan
foto sesuaiditemukan?
Ya
Tidak
cek fotoberikutnya
foto sesuaiditemukan
Ya
20
10/3/20
11
Which photo do you want? –Pseudocode
03/10/20 KU1102- PengenalanKomputasi- AlgorithmicThinking 21
ambil_foto_ke_1repeat
if ada_payung? = ya thenif ada_sesuatu_di_kepala? = tidak thenif dapat_melihat_laut? = ya then
foto_sesuai_ditemukanelse
cek_foto_berikutnyaelse
cek_foto_berikutnyaelse
cek_foto_berikutnyauntil (semua_foto_sudah_diperiksa) or
(foto_sesuai_ditemukan)
if (foto_sesuai_ditemukan) thencetak_foto
elsecetak_foto_tidak_ditemukan
21
Contoh-6: Jemputan UndanganPatratinggal didesa Beaveral.Ia ingin mengundang teman-temannya untuk merayakanulangtahunnya.Namun ia hanya mengundang teman-teman yangtinggal tidak lebih dari 20kmdari rumahnya agartak kemalaman pulang.Jarak rumah teman-temannya dimunculkan dalamangka padapetasebagai berikut.
03/10/20 KU1102- PengenalanKomputasi- AlgorithmicThinking 22
Tantangan:Teman-teman yangdiundang,danrumahnyaberjarak lebih dari 17akan disediakan jemputan.Tentukan teman-teman Patrayangdiundang danakan dijemput.Tantangan tambahan:• Tuliskan langkah-langkah Andamendapatkansolusi tersebut dalam bentukflowchart/pseudocode
• Dapatkah Andamenggeneralisasi langkah-langkah algoritmik tsb sedemikian hinggadapat digunakan padapeta-petayanglain?
Sumber:Bebras Indonesia(www.bebras.or.id).Kode Soal:I-2017-IR-07
22
10/3/20
12
Pengantar Bahasa Pemrograman
03/10/20 KU1102- PengenalanKomputasi- AlgorithmicThinking 23
23
Dari Algoritma Menjadi Program
• Programmermengubah algoritmamenjadi kode program komputerdengan menggunakan bahasa pemrograman• Prosesuntuk menuliskan kode programberdasarkan algoritmadisebut sebagai coding• Filehasil menuliskan kode program:sourcecode (kode sumber)
• Setiap pernyataan dalam algoritma ditranslasikan secara detil kedalam kode program• Compiler/interpreterakan mentranslasi kode programdalambahasa pemrograman tertentu menjadi bentuk yangdipahamiolehkomputer
03/10/20 KU1102- PengenalanKomputasi- AlgorithmicThinking 24
24
10/3/20
13
Bahasa Pemrograman
• Setiap komputer memproses instruksi dalam bahasa mesin(machinelanguage)• Kode-kode numerik yangdigunakan untuk mengerjakan operasi-operasidasar:• Addingandsubtractingnumbers• Comparingnumbers• Movingnumbers• Repeatinginstructions
• Programmermenggunakan bahasa pemrogramantingkat tinggi(high-levellanguages)untuk menuliskan kode program• Pascal,C/C++,Matlab,Python,Fortran, Basic,Java, dll.
03/10/20 KU1102- PengenalanKomputasi- AlgorithmicThinking 25
25
Compiler vs Interpreter
• Compiler:membaca seluruh kode programsekaligus danmenerjemahkannya menjadi kode yangdipahami mesin komputer
• Contoh:C/C++,Pascal,Fortran• Interpreter:membaca baris kode satu persatu
• Contoh:MATLAB,Python
03/10/20 KU1102- PengenalanKomputasi- AlgorithmicThinking 26
SourceCode ObjectCode Mesinpre-processing processing
SourceCode IntermediateCode Interpreter
pre-processing processing
26
10/3/20
14
Paradigma Pemrograman
• Paradigma pemrograman adalah sudut pandang penyelesaianpersoalan dengan programkomputer• Contohparadigmapemrograman:
• Paradigmaprosedural(imperatif)à akandiajarkandikuliahini• Paradigmaberorientasiobjek• Paradigmadeklaratif• Dll.
• Paradigmaprosedural(imperatif):Programdidasariolehstrukturisasiinformasi didalammemoridanmanipulasi dariinformasiyangdisimpantersebut
03/10/20 KU1102- PengenalanKomputasi- AlgorithmicThinking 27
Program=Algoritma +Struktur Data
27
Bahasa Pemrograman Prosedural
• AdaRIBUAN bahasa pemrograman didunia saat inià termasukbahasapemrogramanprosedural• Tidak mungkin semua bahasa pemrograman dipelajari dikuliah• Oleh karena itu yangdiajarkan adalah “belajar pemrograman”àmelalui pola pikir komputasional dan paradigmapemrograman prosedural• Bahasapemrogramanyangdiajarkan diPengenalan Komputasi:C/C++,Pascal,MATLAB,Python,Fortran,“Pemrograman Visual”• Dikelas ini akan diajarkan:…
03/10/20 KU1102- PengenalanKomputasi- AlgorithmicThinking 28
28