ayo kita bermain sepaham apa kamu??
BERFIKIR KOMPUTASIONAL
Berfikir Komputasional atau dalam bahasa Inggris biasa disebut Computational thinking (CT) merupakan istilah yang merujuk pada ide-ide dan konsep utama yang ada pada bidang Informatika dan Computer Science (Bocconi et al., 2016). Pada tahun 2006, Wing mengenalkan istilah computational thinking yang melibatkan kemampuan memecahkan masalah, mendesain sistem, dan memahami perilaku manusia dengan menggambarkan konsep dasarnya ke computer science. Menurutnya, berfikir komputasional terdiri dari berbagai mental tools yang mencerminkan luasnya bidang computer science. Berfikir komputasional merupakan proses berpikir yang diperlukan dalam memformulasikan masalah dan solusinya, sehingga solusi tersebut dapat menjadi agen pemroses informasi yang efektif dalam menyelesaikan masalah (Wing, 2010).
Berdasarkan materi pembelajaran online BBC Bitesize (n.d.), berfikir computasional memungkinkan kita memahami masalah yang kompleks dan mengembangkan solusi yang mungkin. Kemudian masalah dan solusi tersebut bisa disajikan dengan cara yang dipahami oleh komputer, manusia, atau keduanya.
Berdasarkan materi pembelajaran tersebut, berfikir computasional mencakup;
1. dekomposisi,
2. abstraksi,
3. berpikir dan merumuskan algoritma, dan
4. pembentukan pola solusi untuk persoalan-persoalan sejenis.
Kemampuan berfikir computasional adalah kemampuan yang perlu diasah melalui latihan-latihan, dan merupakan salah satu pengetahuan dasar untuk kemampuan penyelesaian persoalan tingkat tinggi yang dibutuhkan insan abad ke-21. Berfikir computasional menjadi salah satu kemampuan yang penting untuk diasah sejak usia dini karena pada era informasi, era industri 4.0 atau society 5.0. Manusia hidup di dunia nyata, dan sekaligus di dunia digital yang dikelilingi dengan IoT (Internet of Things), Big Data, dan Artificial Intelligence.
Berfikir computasional adalah memecahkan permasalahan, yakni mendefinisikan akar masalah beserta solusinya, lalu memikirkan apakah solusi tersebut akan lebih efektif jika melibatkan komputer. Berfikir computasional merupakan proses memecahkan permasalahan yang terdiri dari beberapa karakteristik sebagai berikut (CSTA & ISTE, 2009 seperti yang dikutip oleh Bocconi et al., 2016):
1. Merumuskan masalah yang dapat membuat seseorang menggunakan komputer dan tools lainnya untuk membantu mencari solusinya.
2. Mengelola dan menganalisis data secara logis.
3. Merepresentasikan data melalui abstraksi seperti model dan simulasi.
4. Mengotomatisasi solusi melalui algorithmic thinking (serangkaian urutan langkah-langkah).
5. Mengidentifikasi, menganalisis, dan mengimplementasi seluruh solusi yang mungkin untuk mencapai langkah yang paling efisien dan efektif dari sumber daya yang ada.
6. Menggeneralisasi dan mentransfer proses pemecahan masalah untuk berbagai permasalahan .
Terdapat beberapa hal yang akan lebih cepat diselesaikan oleh manusia dan ada yang akan lebih cepat diselesaikan dengan komputer, kita sebagai manusia adalah yang menentukan. Dalam praktiknya, terdapat sekumpulan kemampuan yang merupakan bagian dari berfikir komputasional. Google for Education membahas bagaimana pendekatan berfikir komputasional harus dilakukan.
Google for Education memiliki empat langkah dasar yang terdiri dari dekomposisi, pengenalan pola, abstraksi, dan perancangan algoritma (Kidd, Lonnie R, & Morris, Jr., 2017).
Berikut ini adalah pengertian dari keempat langkah dasar tersebut (BBC Bitesize, n.d.).
1. Abstraksi adalah proses yang berfokus pada informasi yang penting dan mengabaikan detail yang tidak relevan
2. Algoritma adalah mengembangkan solusi langkah demi langkah atau aturan yang harus diikuti untuk menyelesaikan masalah
3. Dekomposisi adalah memecah masalah atau sistem yang rumit menjadi bagian-bagian yang lebih kecil dan lebih mudah dikelola
4. Pengenalan pola adalah mencari kesamaan di antara dan di dalam masalah.
Gambar 1. Empat langkah dasar computational thinking
Sumber: https://www.bbc.co.uk/bitesize/topics/z7tp34j)
Keempat hal tersebut bukanlah urutan dan tidak juga harus dimiliki semua. Kemampuan dan keterampilan berpikir komputasional tersebut ditunjang dengan beberapa sikap sebagai berikut (Tim Olimpiade Komputer Indonesia, 2018).
a) Yakin dan percaya diri dalam menghadapi dan mengelola kompleksitas.
b) Gigih dan tekun bekerja dalam menghadapi persoalan yang sulit.
c) Toleran terhadap ambiguitas.
d) Kemampuan untuk menangani “open ended problems”.
e) Kemampuan berkomunikasi dan bekerja sama dalam tim untuk mencapai suatu tujuan atau menghasilkan solusi.
Pada negara maju, Computer Science, atau yang biasa juga disebut dengan Informatika, sudah diajarkan sejak usia dini di tingkat pendidikan dasar. Materi dan kegiatan yang dirancang mengacu pada kerangka kurikulum yang disusun oleh persatuan guru-guru, asosiasi profesi informatika, perusahaan terkemuka di bidang informatika dan TIK, serta organisasi-organisasi nirlaba yang peduli terhadap perlunya edukasi tentang informatika sejak usia dini. Dalam kerangka kurikulum Informatika tersebut, terdapat lima bidang pengetahuan, yakni Sistem Komputer (CE), Jaringan Komputer (NW), Analisis Data (DA), Algoritma dan Pemrograman (AP), dan Aspek Sosial dari pemanfaatan Informatika (SOC). Selain kalimat bidang pengetahuan tersebut, didefinisikan pula praktik-praktik komputasi untuk mengemas pengetahuan dan mempraktikkannya, yakni pembinaan menumbuhkan budaya komputasi, menciptakan artefak, berkolaborasi untuk mewujudkan suatu produk TIK, menguji dan memperbaiki/menyempurnakan artefak TIK, mengenali dan mendefinisikan permasalahan komputasi, berkomunikasi tentang komputasi, dan mengembangkan serta menggunakan abstraksi (Tim Olimpiade Komputer Indonesia, 2018).
Salah satu opini yang populer terkait computational thinking adalah bahwa hal tersebut sama dengan coding, namun hal tersebut kurang tepat. Sebuah bahasa pemrograman yang komputer dapat digunakan untuk menyelesaikan sebuah tugas atau serangkaian instruksi adalah coding, dan berfikir komputasional merupakan proses pemecahan masalah di baliknya (Grover, 2018). Apabila dikaitkan dengan kemampuan manusia, kemampuan yang dibutuhkan untuk memerintah komputer untuk melakukan suatu hal adalah yang disebut dengan programming, sedangkan proses berpikir dibalik programming adalah berfikir komputasional (Digital Promise, 2017). Terdapat beberapa miskonsepsi yang dipahami oleh orang-orang terkait apa yang dimaksud dengan berfikir komputasional. Berikut ini adalah beberapa kesalahan terkait pemahaman tentang berfikir komputasional.
a) Berfikir komputasional adalah konseptual, bukan sebuah programming skill.
b) Berfikir komputasional merupakan fundamental atau dasar dari berpikir, bukan merupakan kemampuan menghafal. Semua soal yang bisa dihafal dan dijawab ulang bukanlah computational thinking.
c) Berfikir komputasional adalah cara manusia berpikir, bukan komputer. Cara berpikir manusia berbeda dengan komputer karena komputer sangat detail dan terstruktur langkah demi langkah, sedangkan manusia lebih abstrak.
d) Berfikir komputasional melengkapi dan mengkombinasikan matematika dengan engineering thinking.
e) Informatika secara inheren mengacu pada engineering thinking.
f) Berfikir komputasional merupakan ide, bukanlah artefak.
Pengertian Algoritma
Dalam Kamus Besar Bahasa Indonesia (KBBI) daring, algoritma adalah prosedur sistematis untuk memecahkan masalah matematis dalam langkah-langkah terbatas. Selain itu, algoritma juga bisa diartikan sebagai urutan logis dalam pengambilan keputusan untuk memecahkan masalah.
Algoritma sendiri adalah kata serapan dari bahasa Inggris, yaitu algorithm. Sebenarnya, kata algorithm tidak murni diserap dari bahasa Inggris, melainkan dari bahasa Arab yang artinya "proses menghitung dengan angka Arab".
Sedikit membahas sejarahnya, algoritma ditemukan oleh seorang matematikawan bernama Muhammad Ibn Musa Al-Khwarizmi. Dalam dunia literatur Barat, Al-Khawarizmi lebih dikenal dengan julukan Algorizm. Dari panggilan tersebut akhirnya dipakai untuk menyebut konsep algoritma yang ia temukan.
Seiring berjalannya waktu, kata algoritma semakin populer dan mulai banyak digunakan dalam bidang komputer atau yang lebih dikenal dengan sebutan algoritma pemrograman. Sebagai informasi, algoritma pemrograman adalah langkah penyelesaian suatu masalah yang menghasilkan sebuah solusi dalam bentuk program komputer.
Dalam buku Pengantar Algoritma dengan Bahasa, algoritma punya peran penting dalam ilmu komputer. Bisa dibilang, algoritma merupakan "jantung komputer" karena hardware dan software pada komputer dapat dikendalikan melalui sintaks dan kode pemrograman.
Namun tak hanya dipakai untuk memecahkan masalah pada bahasa pemrograman, algoritma juga dapat diterapkan dalam menyelesaikan permasalahan sehari-hari yang membutuhkan berbagai proses dan langkah-langkah.
Mengutip buku 10 Langkah Belajar Logika dan Algoritma Menggunakan Bahasa C dan C ++ oleh Ema Utami, dkk, bila diterjemahkan ke dalam bahasa Indonesia, algoritma diartikan sebagai logika, metode, dan tahapan sistematis yang dipakai untuk memecahkan suatu permasalahan.
Ciri-ciri Algoritma
Adapun sejumlah ciri-ciri algoritma yang baik sehingga lebih mudah ketika diproses, yakni sebagai berikut:
1. Precise
ciri-ciri algoritma yang pertama adalah precise, maksudnya adalah harus tepat, benar, dan teliti. Jadi, setiap instruksi dalam algoritma wajib ditulis secara benar dan teliti tanpa adanya keraguan. Jika algoritma diterapkan secara presisi, maka setiap instruksi dapat dinyatakan secara eksplisit tanpa menghilangkan bagian apapun, karena dianggap sudah mengerti.
2. Menyusun Jumlah Langkah atau Instruksi
Setiap langkah dalam menyusun algoritma harus tertata dengan baik, artinya disusun dari awal hingga akhir, meskipun saat diproses akan ada sejumlah data yang berbeda.
3. Efektif
Seluruh instruksi yang ingin dikerjakan harus disampaikan secara jelas dan efektif. Dengan begitu, tidak ada lagi kesalahan ataupun kebingungan saat sedang memproses data.
4. Terminate
Dalam menyusun algoritma pemrograman, tentu harus terminate (berakhir) sehingga tidak berjalan terus.
5. Output yang Dihasilkan Tepat
Ciri-ciri yang terakhir adalah setiap output yang dihasilkan dalam algoritma harus tepat dan sesuai yang dikehendaki. Hal ini dapat terjadi jika setiap langkah dalam algoritma terbilang logis dan bisa diikuti dengan seksama.
Dibawah ini merupakan contoh algoritma, flowchart dan pseudocode dalam membuat nasi goreng.
Algoritma Membuat Nasi Goreng
Berikut ini adalah Algoritma pembuatan nasi goreng :
1. Siapkan minyak goreng, nasi, telur dan bumbu lain.
2. Siapkan bahan pelengkap (ayam suir, ati ampela, sayur, dll).
3. Siapkan piring, penggorengan, dan kompor.
4. Letakkan penggorengan di atas kompor dan nyalakan kompor.
5. Masukkan minyak ke penggorengan
6. Masukkan telur.
7. Masukkan nasi.
8. Tambahkan bahan pelengkap.
9. Tambahkan bumbu penyedap rasa.
10. Aduk bahan dan bumbu menjadi satu.
11. Tuangkan nasi ke piring
12. Nasi goreng siap di makan.
Pseudocode Membuat Nasi Goreng
Berikut ini merupakan Pseudocode membuat nasi goreng :
1. Mulai
2. Input minyak
3. Input telur
4. Input nasi
5. Input bumbu
6. Aduk hingga merata
7. If (ingin pedas) Then Input sambal
8. Elseif (tidak pedas) Then Aduk
9. Aduk kembali hingga merata
10. Hidangkan nasi goreng
Pengurutan (Sorting)
Saat merapikan sesuatu, misalnya koleksi buku, kita menyusun buku tersebut dengan menggunakan suatu aturan. Misalnya, jika kita memiliki koleksi buku cerita berseri, kemungkinan besar kita akan menyusunnya secara berurut dari volume pertama hingga volume yang terbaru. Atau, ketika sedang berbaris, kita diminta untuk membentuk barisan berdasarkan tinggi badan. Hal-hal tersebut merupakan sebuah proses pengurutan atau sorting. Proses pengurutan akan menjadi bagian yang tidak terpisahkan dari program komputer atau aplikasi yang sering kita gunakan. Pada aktivitas ini, kita akan melihat bagaimana proses pengurutan dapat dilakukan dengan menggunakan berbagai strategi.
Pelajarilah strateginya!
● Pengurutan merupakan suatu permasalahan klasik pada komputasi yang dilakukan untuk mengatur agar suatu kelompok benda, objek, atau entitas diletakkan mengikuti aturan tertentu.
● Urutan yang paling sederhana misalnya mengurutkan angka secara terurut menaik atau menurun.
Biasanya, masalah pengurutan terdiri atas sekumpulan objek yang disusun secara acak yang harus diurutkan. Setelah itu, secara sistematis, posisi objek diperbaiki dengan melakukan pertukaran posisi dua buah objek. Hal ini dilakukan secara terus-menerus hingga semua posisi objek benar.
Misal, kita memperoleh 5 buah angka acak berikut:
1 2 3 4 5
Kita dapat membuat angka tersebut terurut menaik dengan melakukan satu kali pertukaran, yaitu dengan menukar nilai 4 dengan nilai 3. Terdapat 2 langkah penting dalam melakukan sebuah pengurutan.
● Langkah pertama ialah melakukan pembandingan. Untuk melakukan pengurutan, dipastikan ada dua buah nilai yang dibandingkan. Pembandingan ini akan menghasilkan bilangan yang lebih besar dari, lebih kecil dari, atau memiliki nilai sama dengan sebuah bilangan lainnya.
● Langkah kedua ialah melakukan penempatan bilangan setelah melakukan pembandingan. Penempatan bilangan ini dilakukan setelah didapatkan bilangan lebih besar atau lebih kecil (bergantung pada pengurutan yang digunakan).
Terdapat beberapa teknik (algoritma) untuk melakukan pengurutan seperti bubble sort, insertion sort, quick sort, merge sort, dan selection sort. Pada unit ini, hanya akan diberikan penjelasan untuk setiap tiga teknik ialah sebagai berikut. Teknik lainnya dapat kalian pelajari dari referensi yang diberikan.
1. Insertion Sort
Insertion Sort adalah salah satu algoritma yang digunakan untuk permasalahan pengurutan dalam list (daftar objek). Sesuai namanya, insertion sort mengurutkan sebuah list dengan cara menyisipkan elemen satu per satu sesuai dengan urutan besar kecilnya elemen hingga semua elemen menjadi list yang terurut.
Misalnya, dalam kasus mengurutkan elemen list dari yang terkecil hingga terbesar (ascending), tahap pertama ialah kita akan membaca suatu elemen dengan elemen yang berdekatan. Apabila elemen yang berdekatan dengan elemen saat ini lebih kecil, elemen yang lebih kecil akan ditukar
dengan elemen yang lebih besar dan dibandingkan kembali dengan elemen-elemen sebelumnya yang sudah terurut. Apabila elemen-elemen saat ini sudah lebih besar dari elemen sebelumnya, iterasi berhenti. Hal ini dijalankan satu per satu hingga semua list menjadi terurut.
Ilustrasi Insertion Sort
Terdapat sebuah deret bilangan seperti berikut: 2, 3, 7, 6, 5 yang direpresentasikan dengan menggunakan kartu. Urutkan bilangan tersebut secara menaik dengan menggunakan algoritma insertion sort.
● Proses Iterasi Pertama
Langkah pertama, tinjau bilangan kedua, bandingkan bilangan pertama dan kedua, yaitu 2 dan 3. Didapatkan 2 lebih kecil dari 3, maka urutan bilangan tersebut tetap (2,3).
(2, 3, 7, 6, 5) menjadi (2, 3, 7, 6, 5)
● Proses Iterasi Kedua
Pada iterasi selanjutnya, kita mengambil bilangan ketiga, yaitu 7. Lalu bandingkan dengan bilangan sebelumnya. Karena 3 lebih kecil dari 7, urutan tetap.
(2, 3, 7, 6, 5) menjadi (2, 3, 7, 6, 5)
sudah terurut naik
● Proses Iterasi Ketiga
Pada iterasi selanjutnya, kita mengambil bilangan keempat, yaitu 6. Lalu, bandingkan dengan bilangan sebelumnya. Didapatkan bahwa 7 lebih besar dari 6.
Oleh karena itu, selanjutnya, kita akan membandingkan dengan bilangan-bilangan sebelumnya, lalu menukarnya apabila bilangan tersebut lebih besar. Pertama, kita akan membandingkan 6 dan 7. Apakah 6 lebih kecil dari 7? Karena iya, kita akan menukar 6 dengan 7. Lalu, kita akan membandingkan lagi dengan bilangan sebelumnya, yaitu 3. Apakah 6 lebih kecil dari 3? Karena 6 tidak lebih kecil dari 3, maka 6 sudah berada pada posisi yang benar, yaitu sebelum 7 dan setelah 3.
Proses memindahkan 6 di antara 3 dan 7 ini biasa disebut penyisipan (insertion) sehingga nama algoritma ini disebut insertion sort.
(2, 3, 7, 6, 5) menjadi (2, 3, 6, 7, 5)
sudah terurut naik
sudah terurut naik
● Proses Iterasi Keempat
Pada iterasi selanjutnya, kita mengambil bilangan kelima, yaitu 5. Didapatkan bahwa 7 lebih besar dari 5. Oleh karena itu, selanjutnya, kita akan membandingkan dengan bilangan-bilangan sebelumnya, lalu menukarnya apabila bilangan tersebut lebih besar. Pertama, kita akan membandingkan 5 dan 6. Apakah 5 lebih kecil dari 6? Karena iya, kita akan menukar 5 dengan 6. Setelah itu, kita akan mengecek dengan bilangan sebelumnya lagi, yaitu 3.
Apakah 5 lebih kecil dari 3? Karena 5 tidak lebih kecil dari 3, maka 5 sudah pada posisi seharusnya, yaitu setelah 3 dan sebelum 6. Terjadi lagi proses penyisipan kartu 5 di antara 3 dan 6.
(2, 3, 6, 7, 5) menjadi (2, 3, 5, 6, 7)
sudah terurut naik
2. Selection sort
Selection sort merupakan algoritma pengurutan yang juga cukup sederhana, dengan algoritma mencari (menyeleksi) bilangan terkecil/terbesar (bergantung pada urut naik atau turun) dari daftar bilangan yang belum terurut dan
Sisipkan ke barisan yang sudah terurut naik.
Sisipkan ke barisan yang sudah terurut naik
meletakkannya dalam daftar bilangan baru yang dijaga keterurutannya.
Algoritma ini membagi daftar bilangan menjadi dua bagian, yaitu bagian terurut dan bagian yang belum terurut. Bagian yang terurut di sebelah kiri dan bagian yang belum terurut di sebelah kanan. Awalnya, semua elemen bilangan dalam daftar ialah bagian yang belum terurut, dan bagian yang terurut kosong.
Berikut langkah-langkah yang terdapat pada algoritma selection sort.
Cari bilangan terkecil yang ada pada bagian belum terurut.
Tukar bilangan tersebut dengan bilangan pertama bagian belum terurut, lalu masukkan ke bagian terurut.
Ulangi langkah 1 dan 2 sampai bagian yang belum terurut habis.
Ilustrasi urut-urutan selection sort dapat dilihat pada tabel berikut.
Bagian terurut Bagian yang belum terurut
Nilai terkecil dari bagian belum terurut
() (2,3,7,6,5) 2
(2) (3,7,6,5) 3
(2,3) (7,6,5) 5
(2,3,5) (6,7) 6
(2,3,5,6) (7) 7
(2,3,5,6,7) ()
Secara rinci, algoritma selection sort yang dikaitkan dengan pemrograman dijelaskan sebagai berikut.
Terdapat sebuah daftar bilangan tidak terurut seperti berikut: 2, 3, 7, 6, 5. Urutkan bilangan tersebut secara menaik dengan menggunakan algoritma selection sort.
● Proses Iterasi Pertama Data Awal:
Cari bilangan terkecil di bagian belum terurut: ditemukan 2 sebagai bilangan terkecil.
Tukar bilangan 2 dengan bilangan pertama bagian belum terurut. Geser batas bagian yang sudah terurut ke kanan sehingga 2 menjadi bagian yang sudah terurut. Dalam ilustrasi ini, angka yang dicetak tebal menunjukkan bilangan yang sudah terurut.
● Proses Iterasi Kedua
Cari bilangan terkecil di bagian belum terurut, ditemukan angka 3 sebagai bilangan terkecil.
Tukar bilangan 3 dengan bilangan pertama bagian belum terurut. Geser batas bagian yang sudah terurut ke kanan sehingga 3 menjadi bagian yang sudah terurut.
● Proses Iterasi Ketiga
Cari bilangan terkecil di bagian belum terurut, ditemukan angka 5 sebagai bilangan terkecil.
Tukar bilangan 5 dengan bilangan pertama bagian belum terurut, yaitu 7.
Geser batas bagian yang sudah terurut ke kanan, sehingga 5 menjadi bagian yang sudah terurut.
Proses Iterasi Keempat
Cari bilangan terkecil di bagian belum terurut, ditemukan angka 6 sebagai bilangan terkecil.
Tukar bilangan 6 dengan bilangan pertama bagian belum terurut. Di bagian akhir, karena data tinggal dua, setelah proses penukaran, algoritma telah selesai dilaksanakan.
PPT BK 3