ku1102 ap 2 algorithmicthinking

14
10/3/20 1 Algorithmic Thinking Tim Penyusun Materi KU1102-Pengenalan Komputasi Institut Teknologi Bandung © 2019 1 Tujuan Mahasiswa mampu menjelaskan konsep algoritma sebagai teknik computational thinking dalam pemecahan persoalan Mahasiswa mampu menjelaskan konsep algoritma (sequential control, selection, repetition, dan control abstraction) untuk mendekomposisi secara algoritmik solusi untuk persoalan sederhana Mahasiswa mampu menerjemahkan konsep algoritma sederhana dalam conceptual tool (flow chart/activity diagram/pseudocode) 03/10/20 KU1102 - Pengenalan Komputasi - Algorithmic Thinking 2 2

Upload: others

Post on 12-Mar-2022

41 views

Category:

Documents


2 download

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