Transcript for:
Strategi Algoritmik dalam Pemrograman

Assalamu'alaikum warahmatullahi wabarakatuh Selamat berjumpa kembali anak-anakku sekalian Mudah-mudahan kita selalu dalam keadaan sehat walafiat Kali ini kita akan mempelajari tentang strategi algoritmik dan pemprograman Yaitu dalam proses pemprograman Tujuan pembelajarannya adalah setelah mempelajari bab ini, kalian diharapkan mampu menganalisis beberapa strategi algoritmik secara kritis untuk menyelesaikan suatu permasalahan dengan memberikan justifikasi. sertifikasi efisiensi setelah itu kalian akan menerapkan strategi algoritmik tersebut ke dalam suatu program yang lebih kompleks dari program yang telah kalian kerjakan sewaktu kelas 10 kalian akan belajar berkotong-royong dalam mengembangkan dan menguji program tersebut untuk menyelesaikan program yang berkaitan dengan mata pelajaran lain yang telah kalian pelajari hai hai Pertanyaannya adalah, pernahkah kalian berpikir bagaimana program yang kita gunakan dalam kehidupan sehari-hari dikembangkan? Bagaimana para pemprogram menghasilkan program yang sangat kompleks yang kalian gunakan di kehidupan sehari-hari?

kehidupan sehari-hari Bagaimana pula program tersebut dirancang dan diimplementasikan hingga dapat melayani ribuan hingga jutaan pengguna dengan efisien sehingga program tetap terasa nyaman saat digunakan Silahkan jawab tiga pertanyaan tadi di kolom komentar setelah selesai video ini Anak-anakku sekalian, dalam kehidupan ini, kalian pastilah telah menggunakan berbagai program untuk mempermudah aktivitas di berbagai bidang, seperti komunikasi, kesehatan, sosial, transportasi, hingga kebutuhan pokok sehari-hari akan tetapi program yang bermanfaat tidak sekedar dapat dijalankan namun bagaimana program tersebut dapat berfungsi dengan benar dan efisien sehingga dapat digunakan oleh manusia dengan nyaman Untuk menghasilkan program demikian, diperlukan suatu kemampuan menyusun strategi algoritmik dan pemrograman. Pada kelas 11 ini, kalian akan mempelajari kegiatan yang lebih kompleks dari coding yang kita sebut sebagai pemrograman. Pemprograman, menurut buku Oxford Dictionary of Computer Science, adalah seluruh aktivitas teknis yang dilakukan untuk menghasilkan suatu program, termasuk analisis kebutuhan dan seluruh langkah desain dan implementasi suatu program. Program dapat menjadi solusi dari suatu permasalahan. Untuk menghasilkan program yang benar dan tepat, Sehingga dapat membantu manusia dalam melakukan tugasnya, ada empat langkah yang dilakukan pada saat melakukan pemrograman, yaitu Yang pertama, menganalisis permasalahan atau analyzing.

Pemprogram menganalisis suatu kebutuhan atau keadaan saat itu untuk menghasilkan definisi permasalahan yang perlu diselesaikan dengan program. Permasalahan yang dianalisis bisa berupa masalah yang baru atau penyempurnuan dari solusi yang sudah ada. Kemampuan berpikir komputasional digunakan untuk mencari abstraksi dari permasalahan yang akan diselesaikan. Permasalahan yang kompleks dapat didekomposisi ke beberapa masalah yang lebih kecil, namun masih tetap saling berkaitan, hingga akhirnya pemerogram akan mengenali pola permasalahan tersebut sebagai sebuah variasi dari problem generik. Tahap ini menghasilkan pernyataan masalah atau problem statement yang menjelaskan masukan atau input, keluaran atau output, serta batasan-batasan atau constraint dari program yang akan dibuat.

Yang kedua adalah mendesain solusi atau problem solving. Dari pernyataan masalah ini, pemprogram merencanakan strategi untuk menghasilkan keluaran berdasarkan masukan yang yang diterima pemprogram tidak harus merencanakan solusi dari awal mereka dapat menggunakan solusi atau potongan solusi yang sudah ada dari permasalahan yang telah diselesaikan sebelumnya. Bahkan, jika problem generik telah ditemukan, pemrogram dapat memodifikasi algoritma generik agar sesuai dengan permasalahan.

Proses ini akan menghasilkan algoritma berupa narasi, pseudocode, atau diagram alir. Pada tahap ini, pemprogram juga akan mengevaluasi algoritma yang dibuat untuk memenuhi batasan dari permasalahan. Misalnya, apakah program dapat bekerja dengan cepat?

Misalnya kurang dari 1 detik saat diberikan masukan yang berukuran besar karena menunggu membuat pengguna tidak nyaman Yang ketiga adalah mengimplementasikan solusi dalam bentuk program atau coding Pada tahap ini, pemprogram akan menulis kode program untuk menjalankan solusi yang telah direncanakan sebelumnya dengan menggunakan suatu bahasa pemrograman Memilih bahasa pemrograman menjadi pertimbangan di tahap ini. Selain itu, mengubah algoritma menjadi kode program juga melibatkan banyak pertimbangan teknis. Misalnya, berupa tipe data, struktur kontrol yang digunakan, dan lain-lain.

Yang keempat, menguji program atau testing. Setelah program dapat dijalankan, program tersebut harus diuji untuk memastikan berhasil. bahwa program berjalan dengan benar sesuai dengan batasan-batasan yang diberikan.

Pengujian dapat dilakukan dengan menggunakan berbagai strategi pengujian. Salah satunya adalah menguji program menggunakan kasus uji atau test case yang dibuat sedemikian rupa sehingga mewakili seluruh kemungkinan masukan dari program. Nah, keempat tahap di atas seringkali tidak dilakukan satu kali, tapi bahkan berkali-kali sehingga membentuk suatu siklus pemrograman sebagai berikut.

Yang pertama mulai, kemudian menganalisis permasalahan. kemudian mendesain solusi, mengimplementasikan kode program, dilanjutkan dengan menguji program. Kalau dalam pengujian itu ditemukan permasalahan, maka akan kembali dianalisis lagi permasalahannya, lalu kembali mendesain solusi, lalu mengimplementasikan kode program, lalu diuji kembali. Kalau di dalam pengujian itu dirasa cukup bagus, maka program dipakai dan selesai.

Apabila kalian menggunakan sebuah program yang disediakan secara daring, misalnya untuk berbelanja dan rutin dalam waktu lama, kalian akan merasakan bahwa program tersebut senantiasa mengalami perubahan dan perbaikan atau penambahan fitur secara terus-menerus. Hal ini menjadi bagian dari siklus kehidupan suatu program agar terus relevan dengan kebutuhan penggunanya. Pendekatan siklus ini juga bermanfaat jika kalian ingin membuat sebuah program yang kompleks.

Kalian dapat menetapkan suatu bentuk akhir dari program yang akan kalian buat dan mendekomposisinya dalam program-program antaranya. yang lebih sederhana misalnya, kalian ingin membuat program yang mampu memprediksi kondisi hutan Indonesia di masa depan nah untuk membuat program yang kompleks tadi kalian dapat mulai dengan membuat program yang yang dapat membaca dan mengolah data hutan dalam bentuk tabel terlebih dahulu. Kemudian, menambahkan analisis data sederhana dalam bentuk grafik batang.

Kemudian mengubahnya menjadi visualisasi berbentuk peta, baru akhirnya menambah kemampuan prediksi keadaan hutan. Hal tersebut kalau kita lihat dalam alir diagram adalah sebagai berikut. Yang pertama menganalisis, menganalisis permasalahan, kemudian mendesain, kemudian mengimplementasikan, menguji, lalu muncul versi yang pertama.

Yaitu program baru mampu membaca dan mengolah data tabulasi. Kemudian berlanjut lagi, dianalisis lagi, kembali didesain, diimplementasikan, diujikan. Di uji kembali, lalu akan muncul versi yang kedua. Program mampu menampilkan analisis data dalam bentuk grafis. Kemudian setelah versi kedua muncul atau update muncul, akan dianalisis kembali.

Kemudian didesain, diimplementasikan, di uji, lalu akan muncul versi yang ketiga atau update yang ketiga. Berupa program mampu menampilkan analisis data dalam bentuk grafis. Sampilkan analisis data dalam bentuk visualisasi peta.

Kemudian versi yang ketiga itu dianalisis kembali, kemudian didesain, diimplementasikan, diuji kembali, dan kemudian akan muncul versi keempat, yaitu program mampu melakukan prediksi keadaan hutan ini. di atas peta. Kalau versi 4 ini dibutuhkan lagi untuk dianalisis karena perkembangan zaman, maka tentu akan dianalisis kembali.

Hal itu berguna untuk mengikuti kebutuhan kehidupan manusia. Sekarang praktik baik pemukaman. Kalian perlu mengumpulkan dengan rapi hasil pekerjaan dari langkah di atas, misalnya corak-coretan, algoritma yang dibuat, kode sumbernya, serta proses pengujian yang dilakukan. Hal ini disebut dengan dokumentasi program. Dokumentasi berguna bagi kalian maupun orang lain untuk memahami kode program dengan cepat.

Dokumentasi dapat ditulis. baik di dalam kode program maupun di dokumen terpisah untuk program yang sangat kompleks. Dokumentasi yang ditulis menyatu dengan kode dapat ditulis menggunakan komentar.

Namun, komentar tidak perlu menjelaskan setiap baris kodenya. Cukup menjelaskan abstraksi atau ide dari kode tersebut. Ingatlah bahwa kode program yang ditulis dengan baik sudah pasti akan mudah dipahami.

Kita lihat contoh kasus siklus pemprograman. Selanjutnya mari kita coba lakukan keempat langkah tersebut untuk membuat sebuah program Yang dapat membantu seseorang mengidentifikasi jenis segitiga berdasarkan panjang ketiga sisinya Seperti kita ketahui ada beberapa jenis segitiga berdasarkan kondisi panjang masing-masing sisinya Misalnya segitiga sama sisi, segitiga sama kaki, ataupun segitiga sembarang Bayangkan sebuah program yang dapat menentukan apakah sebuah segitiga termasuk segitiga sama kaki sama sisi atau bukan keduanya jika diberikan data berupa ketiga panjang sisi-sisi dari segitiga yang dimasukkan misalnya jika diberikan masukan berupa panjang sisi-sisi 2 2 dan 3 maka program tersebut tentunya harus menghasilkan output atau keluaran segitiga sama kaki Terima kasih. Mari kita lakukan hal yang pertama, yaitu mendefinisikan permasalahan. Deskripsi di atas sangat abstrak dan luas. Oleh karena itu, sebagai pemrogram kita perlu mendefinisikan ruang lingkup dari permasalahan yang diberikan.

Pada pengembangan perangkat lunak, ruang lingkup tersebut disebut sebagai kebutuhan atau requirement. Namun, definisi ini perlu dibuat dengan baik karena pengecekan kebenaran program yang kita perlukan. buat akan bergantung pada definisi permasalahan yang telah dibuat untuk menggali requirement atau kebutuhan kalian dapat bertanya kepada pembuat soal kepada guru atau kepada orang-orang yang nantinya akan menggunakan program kalian Yang pertama adalah mendefinisikan masalah Kita lakukan misalnya Pada deskripsi Mengidentifikasikan jenis ketiga di atas Kita perlu mencari Jawaban dari berbagai pertanyaan berikut Yang pertama Bagaimana Bagaimana caranya mengidentifikasi apakah data panjang sisi-sisi tersebut menunjukkan sisi sebuah segitiga?

Karena bisa jadi tidak ada segitiga yang memiliki panjang sisi-sisi sebagaimana data yang diberikan. Yang kedua, bagaimana menentukan jenis segitiga dari panjang sisi-sisinya? Yang ketiga, jenis segitiga apa saja yang harus kita identifikasi?

Misalnya, apakah kita harus bisa mengidentifikasi segitiga siku-siku? Yang keempat, batasan seperti apa yang harus dipenuhi oleh data masukan? Yang kelima, keluaran seperti apa atau output seperti apa yang harus diberikan oleh pemrogram dan seterusnya? Setelah pertanyaan ini, pertanyaan-pertanyaan tersebut terjawab kalian dapat membuat definisi permasalahan yang lebih formal contoh berikut dapat menjadi salah satu cara untuk mendefinisikan permasalahan ini setelah kalian mendapatkan jawaban dari pertanyaan-pertanyaan diatas Deskripsinya diberikan tiga buah bilangan bulat yang berada pada rentang antara 1 hingga 1000 yang merupakan panjang sisi dari sebuah segitiga identifikan, identifikasikan apakah ketiga sisi tersebut membentuk segitiga sama sisi atau segitiga sama kaki atau segitiga sembarang bahkan mungkin tidak bisa membentuk segitiga Masukan terdiri atas 3 bilangan bulat A, B, dan C yang merupakan panjang masing-masing sisi segitiga pada rentang angka 1 hingga 1000 Lalu prosesnya, dari masukan yang diberikan, kita harus menentukan terlebih dahulu apakah ada segitiga dengan panjang sisi-sisi A, B, dan C.

Jika tidak ada, maka program dapat diperoleh. berhenti dan melaporkan bahwa data masukan tidak menunjukkan sisi-sisi sebuah segitiga jika ternyata A, B, dan C merupakan sisi-sisi sebuah segitiga maka program harus menentukan jenis segitiga apakah yang memiliki panjang sisi-sisi A, B, dan C tersebut Lalu kita tentukan keluarannya. Keluaran berupa tek sebagai berikut.

Segitiga sama sisi, jika masukan berupa segitiga sama sisi. Segitiga sama kaki, jika masukan berupa segitiga sama kaki. jika masukan berupa segitiga sama kaki.

Segitiga sembarang, jika masukan berupa segitiga sembarang. Bukan segitiga, jika masukan bukan berupa segitiga. Tahap berikutnya adalah merancang solusi.

Setelah definisi persoalan, masukan, proses maupun keluaran dibuat seperti di atas, selanjutnya kalian akan mencoba menyusun algoritma untuk menyelesaikan permasalahan tersebut. Pertama-tama, untuk menentukan apakah ada segitiga yang memiliki sisi-sisi dengan panjang sesuai dengan masukan, yaitu A, B, dan C, maka nilai-nilai tersebut haruslah memenuhi. Menuhi aturan teorema pertidaksamaan segitiga berikut.

Untuk semua segitiga dengan panjang A, B, dan C, maka haruslah berlaku A plus B lebih besar dari C. Jika kita terjemahkan teorema di atas, untuk sembarang masukan A, B, dan C, kita harus memeriksa 3 buah kondisi berikut. A plus B lebih dari C, A plus C lebih dari B, dan B plus C lebih dari A.

Ketiga kondisi tersebut harus terpenuhi agar A, B, dan C dapat membentuk segitiga. Dengan kata lain, jika setidaknya salah satu kondisi tersebut tidak dipenuhi, maka ketiga kondisi tersebut harus terpenuhi. sisi tersebut tidak bisa membentuk segitiga jika hal ini terjadi program dapat melaporkan hasil ini dan kemudian langsung berhenti jika tidak berarti A, B, dan C memang benar merupakan sisi-sisi sebuah segitiga dan program dapat mengidentifikasi jenis segitiga yang sesuai Selanjutnya, untuk mengidentifikasi jenis segitiga kita dapat merancang aturan-aturan sebagai berikut Jika tiga panjang sisi sama, maka segitiga tersebut adalah sama sisi Jika hanya dua panjang sisi yang sama, maka segitiga tersebut adalah sama kaki Jika ketiga panjang sisi berbeda maka segitiga tersebut adalah segitiga sembarang Selanjutnya yang ketiga adalah mengimplementasikan solusi dalam bentuk program atau coding Selanjutnya kalian dapat mengimplementasikan algoritma tersebut ke dalam suatu program komputer Misalnya kita dapat mencoba mengimplementasikan dalam bahasa pemrograman C Tentunya kalian juga dapat menuliskan algoritma di atas dalam bahasa pemrograman lainnya yang telah kalian pelajari seperti Python atau bahkan menggunakan pemrograman blog. Catatan, saat menuliskan kode yang ada pada buku ini, kalian tidak perlu menuliskan nomor baris pada kolom kalian. Nomor baris pada video ini ditambahkan untuk mempermudah kalian dalam membaca kode sumber.

Kita lihat implementasi dalam bentuk coding yang menggunakan bahasa pemrograman C. Baris pertama. Itu ada tulisan 1 Tentunya kalau kita ingin mencoba Angka 1, 2, 3, 4 itu Tidak perlu kita ketikan Baris pertama Tertera program Untuk menentukan jenis segitiga Diawali Dengan garis miring bintang Dan diakhiri dengan bintang Garis miring, artinya Teks tersebut tidak Termasuk dalam program Sehingga komputer tidak akan memproses Baris kedua, include studio.h Itu harus dicantumkan Ada pagar ya, pagar include Kurung siku studio.h Kurung tutup siku Itu maksudnya untuk mengaktifkan library pada bahasa C.

Di mana studio itu singkatan dari standar input output. Sehingga kalau kita tidak menuliskan include studio.h Tentunya bahasa si tidak bisa di input juga tidak bisa memberikan output Baris ketiga ada int main kurung buka kurung tutup Itu adalah untuk memberikan mengembalikan nilai awal Sehingga ketika program berhenti atau selesai nilai awal akan dikembalikan ke semula Baris keempat kurung kurawal buka Kurung kurawal buka adalah awal dari pembangunan pembuatan program dimana kalau kita lihat pada baris ke-18 itu ada kurung kurawal tutup itu berarti akhir dari program yang kelima ada int a, b, c titik koma Itu adalah kita mengenalkan bahwa kita membuat variable yang bernama A, B, maupun C yang berjenis integer. Kemudian ada scanf dan seterusnya, itu adalah perintah untuk meminta masukan.

Bahasa C ketika dijalankan program ini akan meminta masukan sebanyak 3 kali. Dan ketika seorang pengguna memasukkan angka 3 kali dari 1 hingga 1000, maka angka yang pertama akan ditampung di variable A. Angka kedua akan ditampung di variable B Angka ketiga akan ditampung di variable C Titik koma Titik koma adalah Akhir dari baris perintah Di bawahnya Baris ke-8 If Setelah if ada kurung buka Lalu ada kurung buka lagi Jika A lebih dari atau sama dengan B plus C, kurung tutup, atau diketikan dalam simbol garis lurus dua kali, atau B lebih dari atau sama dengan A plus C, atau C lebih dari atau sama dengan A plus B, maka cetaklah atau print F, cetaklah bukan segi 3. Else, tetapi jika tidak seperti itu, artinya tidak A lebih dari atau sama dengan B plus C, juga tidak B lebih dari atau sama dengan A plus C, juga tidak C lebih dari A plus C. Atau sama dengan A plus B.

Berarti bawahnya lagi. Jika lagi. Jika A sama dengan B.

Dan B sama dengan C. Maka cetaklah. Segitiga sama sisi.

Titik koma Selain itu Else If Jika Selain itu Jika A sama dengan B Atau B sama dengan C Atau A sama dengan C Maka cetaklah segitiga sama kaki Karena A, B, dan C semuanya sama Else Selain itu semua Cetaklah segitiga sembarang return 0 akan mengembalikan ke variable awal setelah kode tadi diketikan maka gilirannya kita menguji program setelah program selesai kita perlu menguji kebenaran program tersebut ada banyak metode formal untuk menguji suatu program Namun yang akan dicontohkan adalah menguji program menggunakan kasus uji atau test case Misalkan kita akan menguji kode program di atas dengan menggunakan pasangan kasus uji pada tabel sebagai berikut Pada tabel ini, untuk nomor 1 Kita masukkan 5, 5, dan 5. Artinya ada angka 5, angka yang kedua 5, dan angka yang ketiga 5. Maka keluaran seharusnya atau output seharusnya akan muncul tulisan segitiga sama sisi. Tapi, kalau program yang tadi dijalankan, apakah benar? Munculnya sama, yaitu segitiga sama sisi. Jika hasilnya benar, tuliskan di sebelah kanannya benar. Lalu yang kedua, masukannya angkanya berubah 1000, 1000, dan 500. Output seharusnya atau keluaran seharusnya muncul tulisan segitiga sama kaki karena ada dua sisi yang sama.

Nah program yang tadi kita buat, apakah kalau dijalankan dengan memasukkan angka 1000, 1500 mengeluarkan hasil yang sama? Jika benar, sebelah kanannya tuliskan benar, jika salah, tuliskan salah. Yang ketiga, masukkan 100, 200, dan 500. Keluaran seharusnya muncul tulisan bukan segi 3. Nah, di program tadi, apakah ketika di jalanan, menjalankan munculnya teks bukan segitiga tuliskan benar atau salah di sebelah kanannya demikian juga yang nomor 4 jika dikitikan 100 400 dan 200 apakah muncul segitiga sembarang lalu ketika dijalankan Apakah munculnya juga sama segitiga sembarang Tuliskan benar kalau benar, salah kalau hasilnya salah Apabila terdapat kasus uji yang tidak dapat menghasilkan keluaran yang benar oleh program Lakukan analisis kembali Untuk mengidentifikasi kesalahan tersebut Dan memperbaiki program kalian hingga benar Nah ini informatika Dari ilustrasi di atas, kalian telah merasakan bahwa dalam membuat program Kalian perlu memahami di dalam permasalahan yang kalian kerjakan semakin kompleks suatu permasalahan yang harus diselesaikan atau semakin banyak fitur yang harus diimplementasikan maka program juga akan menjadi semakin kompleks dan mungkin menjadi panjang lebih banyak instruksinya Oleh karena itu tim yang membuat program akan terdiri atas banyak orang dengan keahlian dan spesialisasi yang berbeda-beda diantara mereka juga ada orang-orang yang ahli dan paham dengan permasalahan yang diselesaikan.

Ayo berlatih! Pada bagian ini telah dijelaskan bahwa suatu program dikembangkan setahap demi setahap dalam suatu siklus. Hal ini juga berlaku pada program, baik berbentuk aplikasi atau web yang kalian gunakan.

Sekarang, pilihlah satu aplikasi atau web yang sering kalian gunakan, kemudian buatlah infografis selisihnya atau timeline sederhana yang menunjukkan proses perubahan program seingin. seiring dengan berjalannya waktu kalian dapat melakukan pencarian untuk menemukan versi lama dari program untuk web kalian dapat menggunakan aplikasi web seperti web.archive.org yang dapat menyimpan versi lama dari web secara periodik Ayo kita renungkan setelah selesai melakukan aktivitas tersebut jawablah pertanyaan berikut ini dalam lembar refleksi yang pertama Apakah kalian telah mendapat memahami setiap proses dalam pemrograman? Yang kedua, tahap apa yang menurut kalian paling menarik untuk dilakukan? Yang ketiga, tahap apa yang menurut kalian paling sulit dilakukan?

Dan yang keempat, pelajaran paling berkesan apa yang kalian dapatkan dari latihan ini? Selamat belajar!