PETA KONSEP
strategi algoritmik dan pemrograman
Strategi Algoritmik dan Pemrograman adalah pendekatan yang melibatkan serangkaian aktivitas yang terus-menerus mengintegrasikan berbagai konsep, keterampilan, dan praktik lintas bidang dalam konteks komputasi. Ini melibatkan perencanaan, pemikiran algoritmik, analisis data, dan pemrograman dalam sebuah kerangka kerja yang terintegrasi.
Berpikir Komputasional
Berpikir komputasional ini merupakan suatu kerangka dan proses berpikir yang mencakup perangkat keras, perangkat lunak, dan menalar (reasoning) mengenai sistem dan persoalan. Moda berpikir (thinking mode) ini didukung dan dilengkapi dengan pengetahuan teoritis dan praktis, serta teknik untuk menganalisis, memodelkan dan menyelesaikan persoalan. Berikut ini pembahasan beberapa konsep dan strategi berpikir komputasional yang biasa digunakan dalam menyelesaikan persoalan komputasi.
1. Rekursi
Pada bagian ini kalian akan mempelajari tentang konsep rekursi dan beberapa contoh permasalahan yang dapat diselesaikan dengan menggunakan konsep tersebut, salah satunya adalah barisan Fibonacci.
Suaro masalah dapat didekomposisi menjadi permasalahan Uang Saat kita diminta tidtuk memindahkan sku kas buku yang sangat berat dan tidak dapat kita dinghsatu katan membagi kardus tersebut ke dalam beberapa kardat kita lebih ringan sehingga pekerjaan tersebut menjadi lebih ang lebih umuk dikerjakan. Ketika menghitung suatu nilai faktorial kita pun harus menghitung nilai faktorial yang lebih keed. Misalnya, ketika menghitung 10 faktorial, kita juga harus menyelesaikan 1 faktorial. 2 faktorial, hingga 9 faktoriai terlebih dahulu.
Secara alami, terdapat banyak permasalahan yang dapar dimodelkan dengan lebih mudah menggunakan konsep rekursif ini. Pada bagian ini, kalian akan mempelajari konsep dasar rekursi yang akan sangar berguna untuk melakukan dekomposisi pada suatu permasalahan besar dalam bentuk permasalahan yang lebih kecil dan lebih mudah untuk diselesaikan. Rekursi didefinisikan sebagai "sesuatu yang mengandung "sesuatu itu sendiri. Dapatkah kalian melihat rekursi dalam gambar-gambar sebagai berikut.
2. Algoritma Greedy
Greedy secara harfiah berarti rakus atau tamak. Meskipun dalam pengertian sehari-hari, kata "rakus" dan "tamak" memiliki konotasi negatif, namun dalam konteks Informatika, kita mengartikan greedy dalam konteks sebagai sebuah strategi penyelesaian masalah yang dapat berguna dalam merancang sebuah algoritma atau solusi bagi sebuah permasalahan komputasional. Oleh karena itu, diharapkan tidak ada konotasi negatif pada kata greedy dalam konteks ini.
Teknik greedy adalah salah satu teknik penyelesaian masala yang biasa digunakan untuk menyelesaikan permasalahan optimasi Permasalahan optimasi berarti kita ingin menghitung sebuah hasil yang terbaik dari sebuah proses tertentu. Terbaik disini dapat berarti nilai yang paling kecil ataupun paling besar, tergantung dari jenis Dalam menyelesaikan permasalahan optimasi seperti ini. permasalahannya. algoritma greedy akan menerapkan prinsip "mengambil serangkaian langkah terbaik pada setiap saat".
3. Pemrograman Dinamis
Saat menyelesaikan sebuah permasalahan optima mencari nilai terbesarterkecill, terkadang kita ham memperhitungkan beberapa kemungkinan pengambil langkah untuk menyelesaikan permasalahan tersebut Kemungkinan kemungkinan tersebut mungkin memil akibat konsekuensi terhadap langkah-langkah selanjutnya, sehingga pendekatan seperti teknik greedy mungkin tida akan menghasilkan jawaban yang optimal. Dalam hal ini, teknik pemrograman dinamis atau dynamic programming (DP) mungkin akan lebih sesuai diterapkan. Teknik Dp mengandung dua unsur utama, yaitu:
1. Optimasi (mencari nilai terkecil/terbesar melalui serangkaian pilihan. Serupa dengan teknik greedy, kita harus menentukan rangkaian langkah apa yang akan menghasilkan nilai optimal di akhir. Namun, berbeda dengan permasalahan yang dapat diselesaikan dengan teknik greedy, permasalahan yang sesuai untuk teknik DP memiliki struktur sedemikian rupa sehingga pilihan langkah terbaik saat ini belum tentu merupakan pilihan terbaik secara keseluruhan, sehingga prinsip greedy belum tentu dapat diterapkan, dan semua kemungkinan kombinasi pilihan langkah harus diperhitungkan.
2. Nilai optimal yang diinginkan untuk permasalahan tersebut biasanya dapat dinyatakan sebagai kombinasi optimal dari sub-sub permasalahan yang sama, tetapi dengan ukuran yang lebih kecil (atau dengan kata lain, dapat dinyatakan secara rekursif) Namun, sub-sub permasalahan yang harus dipertimbangkan, biasanya memiliki overlap (persinggungan) sehingga dalam proses perhitungannya, diperlukan cara yang efisien untuk menghitung solusi untuk sub-sub permasalahan yang diperlukan, agar tidak terjadi perulangan/duplikasi dalam proses perhitungan. Cara yang umum digunakan adalah dengan menyimpan semua solusi dari subproblem yang sudah diketahui dalam sebuah tempat penyimpanan/ tabel. Teknik ini biasa disebut sebagai teknik memorisasi.
C. Algoritma dan Pemrograman
Pada jenjang sebelumnya dalam materi Informatika Kelas X, kalian telah mempelajari mengenai beberapa bahasa pemrograman, salah satunya adalah bahasa Cyang telah dipelajari pada elemen Algoritma dan Pemrograman. Kemampuan bahasa pemrograman terutama bahasa C akan kalian gunakan dalam topik ini. Selanjutnya untuk lebih meningkatkan pemahaman kalian dalam elemen Algoritma dan Pemrograman, kalian akan mempelajari konsep larik serta karakter dan string. Kedua konsep ini sangat penting dalam membuat program dan akan kalian gunakan untuk menyelesaikan berbagai permasalahan yang diberikan pada bagian D dalam bab ini.
1. Larik (Array)
Saat im mungkin kalian memiliki pertanyaan "mengapa contoh dan permasalahan yang ini adalah hal yang dapat diselesaikan oleh untuk manual atau dengan kalkulator?" Jawabannya adalah k permasalahan/problem tersebut diberikan proses kalian menguasai kompetensi dalam algoritms pemrograman diberikan manusis mend
Pada praktiknya, program digunakan untuk meng data yang berukuran besar dan membutuhkan sangat lama jika dikerjakan manual oleh manusia kalian perlu menghitung statistika deskriptif (seperti sebagainya) dari data seluruh maksimal, standar d Walaupun mengakibatkan masalahnya sederhana, namun dikarenakan jumlah data yang diolah sangat banyak dan berukuran besar waktu pengerjaan pun menjadi sangat lama bagi manua untuk menyelesaikannya. Bahkan ada kemungkinan da berukuran besar tersebut tidak dapat diolah menggunakan aplikasi pengolah data (spreadsheet) yang tidak dirancang untuk mengolah data sebesar itu. Untuk solusinya kalian dapat menggunakan program khusus untuk mengolah data berukuran besar atau membuat program sendiri yang mampu menyimpan dan mengolah data berukuran besar. wakto Misalne
Kita pun sampai pada pertanyaan besar: "bagaimana caranya membuat program yang mampu menyimpan dan mengolah data berukuran besar?". Sebelumnya kalian telah mengenal konsep variabel yang mampu menyimpan satu buah nilai dengan tipe data tertentu (variabel tunggal). Permasalahan akan muncul ketika program kita harus mengolah sebanyak satu juta data, apakah kita harus membuat satu juta variabel? Bukankah hal tersebut sangat sulit dipraktikkan dalam kode program yang kita tulis? Untuk mengatasi hal tersebut, bahasa pemrograman.
2. Karakter dan String
Selain angka, masukan dari program dapat berupa karakter atau
rangkaian karakter seperti kata. Hal ini telah lazim kalian temui,
misalnya ketika mengetikkan kata kunci untuk melakukan
pencarian di mesin pencari atau ketika kalian memasukkan
kata sandi saat login. Oleh karena itu, program dilengkapi
dengan kemampuan untuk membaca, menyimpan, mengolah,
dan mencetak rangkaian karakter tersebut. Rangkaian karakter
tersebut dalam pemrograman disebut sebagai string.
Definisi string dalam pemrograman adalah rangkaian
karakter. Karakter sendiri merupakan suatu data berupa
huruf, angka, simbol, dan karakter lain yang mengikuti suatu
standar tertentu seperti “American Standard Code for
Information Interchange” (ASCII) atau Unicode. Karakter
pada pemrograman pada umumnya diimplementasikan dalam
program menggunakan tipe data char. Di sisi lain, ada beberapa
cara yang lazim digunakan untuk mengimplementasikan
string dalam pemrograman.
Pada bahasa C, string diimplementasikan sebagai larik
karakter yang diakhiri oleh karakter ‘\0’. Dengan kata lain, kalian
dapat membuat dan memproses suatu string seperti halnya kalian
mengolah larik. Bahasa pemrograman lain seperti C++ atau Java
memilih sebuah tipe data string sendiri yang menyembunyikan
beberapa detail terkait pengelolaan data string yang dilakukan
oleh program.
Karena proses pada string berbeda dengan proses pada
bilangan, untuk itu bahasa pemrograman telah dilengkapi
dengan fungsi-fungsi untuk mengolah karakter dan string.
Misalnya untuk melakukan konversi dari huruf kapital ke
non kapital, penggabungan string, pencarian substring, dan
berbagai fungsi lainnya. Pada bahasa C, kalian dapat akses
fungsi-fungsi tersebut pada pustaka <string.h>.
D. Latihan Strategi Algoritmik dan Pemrograman LintasBidang
Pada bagian ini kalian akan membuat berbagai program
berdasarkan permasalahan yang tersedia, tiap permasalahan
memiliki sub permasalahannya tersendiri yang tingkat
kesulitannya meningkat. Kalian akan membuat program
dimulai dari perancangan, yaitu merancang algoritma untuk
menyelesaikan permasalahan tersebut. Selanjutnya algoritma
tersebut kalian terjemahkan ke dalam bahasa pemrograman yang
kalian kuasai, misalnya bahasa C, Python,dsb. Permasalahan
tersebut akan meningkatkan kemampuan programming kalian
dengan mempelajari bagian ini dengan menyelesaikan berbagai
sub permasalahan yang tersedia.
1. Problem Simulasi Burung
Pada bagian ini, kalian akan membuat program untuk
mensimulasikan gerak burung yang diluncurkan dengan
menggunakan alat ketapel. Secara prinsip, gerakan burung
yang diluncurkan dengan menggunakan ketapel menggunakan
prinsip gerak lurus berubah beraturan (GLBB). Terdapat
komponen sudut, gravitasi serta kecepatan dan waktu yang
menjadi penentu jauhnya burung tersebut dapat meluncur
dengan menggunakan ketapel. Konsep ini menggunakan
kaidah gerak parabola yang telah kalian pelajari pada Mata pelajaran fisika.
2. Problem Pengelolaan Bank Darah
Pada bagian ini, kalian akan menyelesaikan suatu permasalahan
yang terkait dengan golongan darah. Informasi mengenai
golongan darah sangat berguna di bidang kesehatan, bahkan
dapat menyelamatkan nyawa seseorang. Dalam problem ini,
kalian akan membantu sebuah rumah sakit untuk memastikan
apakah stok darah yang mereka miliki cukup.
Problem: Pengelolaan Bank Darah
Suatu Bank Darah di Rumah Sakit mengelola stok darah
yang mereka miliki. Persediaan darah yang mereka miliki
dikelompokkan berdasarkan golongan darah standar A,
AB, B, dan O seperti yang selama ini kita kenal. Kondisi
stok darah yang aman adalah tersedianya cadangan yang
cukup untuk setiap golongan darah. Apabila terdapat
golongan darah yang stoknya menipis atau habis, maka pihak Bank Darah akan melakukan kegiatan bakti donor
darah di suatu desa. Masalah ini di dunia nyata lebih
kompleks karena mempertimbangkan rhesus darah dan
faktor lainnya, namun kita sederhanakan dengan hanya
mempertimbangkan golongan darah pendonor.
Agar kegiatan bakti donor darah dapat berjalan secara
efektif dan tepat sasaran, pihak Bank Darah mencatat
data para Donor Darah Sukarela (DDS) yang tersebar
di berbagai daerah. Informasi mengenai DDS yang
dicatat oleh pihak Bank Darah adalah informasi kode
desa, golongan darah, dan volume darah yang dapat
didonorkan oleh DDS.
Subproblem 3: Menghitung Persentase Suatu
Sifat Keturunan Kedua (F2)
Deskripsi:
Pada subproblem ini, Tania akan memperhatikan keempat
sifat tanaman padi tersebut, dan ingin menghitung
persentase dari suatu keturunan generasi kedua (F2).
Format Masukan:
Masukan berupa tiga baris. Dua baris pertama adalah
sifat dari kedua orang tua, dan baris ketiga adalah sifat
dari keturunan kedua yang akan dihitung persentase
kemunculan fenotipenya.
Format Keluaran:
Keluaran berupa sebuah persentase fenotipe dari
tanaman di baris ketiga yang ditulis sebagai bilangan
pecahan dengan dua tempat desimal dan diakhiri
dengan tanda %.
4. Problem Stoikiometri
Stoikiometri adalah ilmu yang mempelajari dan menghitung
hubungan kuantitatif dari reaktan dan produk dalam reaksi
kimia. Pada bagian ini kalian akan diajak untuk membangun
sebuah program yang dapat membantu kalian untuk dapat
memproses masukan berupa suatu persamaan reaksi kimia.
Manusia melakukan observasi pada reaksi kimia pada alam,
dan dengan menggunakan berbagai hukum seperti hukum
kekekalan massa, hukum perbandingan tetap, dan hukum
perbandingan berganda, melahirkan suatu model reaksi
kimia. Salah satunya adalah stoikiometri.
Setelah memahami stoikiometri, kalian dapat membaca
sebuah persamaan reaksi kimia dan mengetahui bahwa
persamaan tersebut benar karena semua pereaksi dikonsumsi habis bereaksi), tidak ada kekurangan pereaksi, dan tidak
ada kelebihan pereaksi (sisa). Sebelum masuk ke problem
yang akan dikerjakan, kalian dapat mencoba menuliskan
secara struktur proses yang kalian lakukan untuk mengecek
persamaan reaksi berikut apakah benar atau tidak.
C6H6 + CH3Cl C6H5CH3 + HCl
E. Proyek Praktik Lintas Bidang (PLB)
Pertama-tama, sesuai dengan petunjuk dari guru, buatlah
kelompok yang masing-masing terdiri dari 2 orang peserta
didik (jika kelas berjumlah ganjil, satu kelompok boleh
berisi 3 orang peserta didik). Saat mengerjakan proyek ini,
diperlukan kerja sama antar anggota kelompok dengan baik
untuk menghasilkan jawaban dan solusi yang tepat.
Tujuan utama dari proyek lintas bidang ini adalah
menghasilkan sebuah program (dalam Bahasa C/C++) yang
dapat menyelesaikan permasalahan knapsack (baik yang
berjenis rational knapsack maupun 0-1 knapsack) dengan
menerapkan prinsip-prinsip penyelesaian masalah yang
telah dipelajari pada bagian Berpikir Komputasional. Hasil
akhir yang diharapkan adalah berupa dua hal:
• Laporan analisis dan perancangan program
• Kode program yang dapat dijalankan dan memberikan
solusi dari setiap masukan yang diberikan
Komentar
Posting Komentar