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

Postingan populer dari blog ini

perangkat keras akses internet

Desain Grafis

cyber securities