1 / 25

MATERI 7

MATERI 7. PEMBUKTIAN DENGAN INDUKSI. 1. Spesifikasi dan Pembuktian. Program yang kita buat harus dapat menjawab apa yang kita inginkan Untuk dapat membuktikan apakah program sudah sesuai dengan keinginan maka harus dibuat SPESIFIKASI

Download Presentation

MATERI 7

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. MATERI 7 PEMBUKTIAN DENGAN INDUKSI

  2. 1. Spesifikasi dan Pembuktian • Program yang kitabuatharusdapatmenjawabapa yang kitainginkan • Untukdapatmembuktikanapakah program sudahsesuaidengankeinginanmakaharusdibuatSPESIFIKASI • Spesifikasi : Pernyataantentang program harusbisaapa, atauoutputnyaharusapa. • Pembuktiannyaharusmemenuhitiapspesifikasi

  3. Ada program yang pembuktiannyalangsungterlihatdarioutputnya. Tetapiada program yang harusdibuktikansecaratidaklangsung. • Contoh : Mobil adalahalatangkutdaritempat A dijalanmenuju B. Kalaukitainginpergidarisuatutempat X menujutempat Y, kitatidakperlumencarimobilkhusus, tetapisembarangmobil yang bisajalan, adasopir, adapenunjukarah (peta), adacukup BBM. • Bisajalan, adasopir, adapeta, cukup BBM, ada jalan SPESIFIKASI, sehinggamobilberlakuumumuntukangkutan • Spesifikasi program jugaharusdinyatakan secara detil

  4. 2. PembuktiandenganHitunganMaju • Apa yang kitalakukanselamainiadalahpembuktiansuatunilaitertentupadainstruksitertentu • Misalnya : times 3 do print* od samadengan : print*; print*; print*; menghasilkan cetakan 3 bintang • Apakah times 89 do print* od benar-benarmencetak 89 bintang ? • Apakah times k do print* od pastimencetak k bintang ?

  5. Harus dilihat keteraturannya • Seperti naik tangga, tetapkan titik awal. Jika ada waktu dan tenaga cukup pasti dapat naik tangga 1 tingkat berikutnya, dan seterusnya hingga sampai langit ...

  6. Spesifikasi dan Tools • Beberapa bahasa pemrograman dirancang secara khusus untuk memenuhi kebutuhan yang khusus pula. Ini yang disebut sebagai tools. • Jadi, untuk memenuhi spesifikasi yang khusus, Anda harus menggunakan tools yang khusus pula. Itulah sebabnya, saat menetapkan spesifikasi program, Anda harus memikirkannya secara detail.

  7. Pembuktian Sederhana • Perhatikan potongan program berikut : times 3 do print* od • Jika output yang dihasilkan program tersebut berupa * * *, maka program tersebut terbukti baik dan sesuai dengan spesifikasi yang ditetapkan. • Selain daripada output * * *, maka program tersebut tidak sesuai dengan spesifikasinya.

  8. Pembuktian Sederhana • Bagaimana untuk membuktikan : times 56 do print* od • Maka harus dipastikan bahwa karakter yang dihasilkan adalah * dan jumlahnya adalah 56 buah. Selain daripada output tersebut, maka program tersebut tidak sesuai dengan spesifikasinya.

  9. Mengenal Induksi • Misalnya di sebuah gurun yang tidak terbatas luasnya, terdapat pasukan yang tidak terbatas pula jumlahnya. Pasukan nomor 1 berdiri di ujung gurun sebelah sini, dan pasukan nomor ~ berdiri di ujung gurun yang sebelah sana. Semua pasukan tersebut harus melaksanakan perintah sang Jenderal.

  10. Mengenal Induksi • Saat sang Jenderal berteriak sekuat tenaga “SERAAANG !!”, ternyata yang bergerak hanya beberapa pasukan saja. Semakin jauh posisi pasukan dari sang Jenderal, semakin tidak ada reaksi dari pasukan tersebut. Kenapa ? Karena letaknya jauh dari sumber suara, sehingga pasukan tidak mendengar perintah sang Jenderal.

  11. Mengenal Induksi • Kemudian sang Jenderal mengubah instruksinya “Apa yg dikerjakan pasukan di sebelahmu, lakukanlah juga dengan segera !”. • Kemudian sang Jenderal berkata kepada pasukan di sebelahnya “SERANG !”. Maka semua pasukan bergerak menyerang musuh. Itulah yang disebut dengan INDUKSI.

  12. Mengenal Induksi • Untuk memastikan semua pasukan mengikuti perintahnya, sang Jenderal hanya perlu memastikan 2 hal saja : • Seorang prajurit akan mengerjakan hal yang sama seperti yang dilakukan prajurit di sebelahnya. • Prajurit yang posisinya di sebelah sang Jenderal, mengerjakan perintah yang diberikan sang Jenderal kepadanya.

  13. Induksi dan Perulangan • Untuk memastikan perulangan sebuah program bekerja sesuai dengan spesifikasi yang ditetapkan, maka hanya diperlukan untukmemastikan 2 hal saja : • Instruksi n+1 akan mengerjakan hal yang sama seperti yang dikerjakan instruksi n. • Instruksi n menghasilkan output tunggal seperti yang diinginkan.

  14. Kesalahan dalam Induksi • Kembali ke contoh Jenderal di slide sebelumnya, saat Jenderal berkata “SERANG !”, dan serdadu di sebelahnya bergerak menyerang lawan, maka perintah Jenderal akan dilakukan oleh seluruh pasukan secara benar (sesuai dengan keinginan jenderal). • Tapi jika serdadu di sebelah Jenderal tidak bergerak menyerang musuh, tapi malah ikut berkata “SERANG !”, maka semua serdadu akan berkata “SERANG !” tanpa ada yang bergerak menyerang musuh.

  15. Kesalahan dalam Induksi • Jika program tersebut tanpa where k>0 : times k do print* od • Jika k diganti menjadi 2, maka hasilnya times 0 do print* od (tidak menghasilkan *) times 1 do print* od (menghasilkan *) • Dengan demikian, hasilnya tidak sesuai dengan spesifikasi yg telah ditetapkan.

  16. Kesalahan dalam Induksi • Demikian juga dengan program berikut: times k do print* od where k>0 • Program tersebut akan menghasilkan output yang benar jika k>0 terpenuhi, misalnya k diganti dengan 2 berarti : times 1 do print* od (menghasilkan *) times 1 do print* od (menghasilkan *) • Tapi jika kita tidak memberikan instruksi where k>0 maka program akan melakukan kesalahan. • Kesalahan juga bisa terjadi karena mengabaikan beberapa kasus (tidak semua kasus dibuktikan)

  17. Induksi Berganda • Hal yang sama harus diperhatikan dalam menggunakan induksi berganda seperti contoh berikut ini : times m do NL; times n do print* od od • Kita harus berhati-hati saat m dan n bernilai 0.

  18. Induksi Rumit • Meskipun induksi rumit terlihat menggunakan pola logika yang sangat rumit, namun sebenarnya baik induksi berganda maupun induksi rumit menganut prinsip sederhana sebagaimana dianut oleh induksi sederhana, seperti yang telah diuraikan di slide sebelumnya.

  19. Pembuktian dengan Induksi adalah pembuktian yang menggunakan kata-kata argumentatif yang bersifat logis. • Contoh : Buktikan program berikut ini benar dengan menggunakan induksi def A(n) = for i rt 1...n do NL; times i do p* od od enddef

  20. Jika prosedur tersebut dipanggil dengan A(5), maka outputnya : ***** **** *** ** *

  21. Pembuktian secara induktif buat kalimat proposisi untuk menyatakan spesifikasi program tersebut P : eksekusi A(k), dimana k>=0, akan mencetak pola segitiga * dengan ukuran kxk Pembuktian : mulai dari nilai batas • A(0) = for i rt 1..0 do NL; times i do p* od od = tidak melakukan apapun [karena 1..0 adalah deretan kosong] terbukti A(0) tidak melakukan apapun

  22. Pa : Eksekusi dari A(k), untuk k>=0, adalah mencetak sebanyak k baris, dimana tiap baris berikutnya berisi sejumlah bintang yang banyaknya kurang 1 dari baris sebelumnya. diasumsikan (hipotesis) jika A(j) benar untuk j>=0 maka akan tercetak bintang sebanyak j baris, dan tiap barisnya berisi kurang 1 dari baris sebelumnya

  23. Tunjukkan bahwa A(j+1) mengikuti hipotesis A(j+1) = for i rt 1 .. j+1 do NL; times i do p* od od = NL; times i do p* od; for i rt 1 .. j do NL; times i do p* od od = NL; times i do p* od; A(j) perintah NL; times i do p* od; mencetak pola baris pertama dan A(j) mencetak pola baris2 selanjutnya, dan hasilnya benar sesuai dengan spesifikasi • Kesimpulan : karena A(j+1) benar mencetak j+1 bintang pada baris pertama dan mencetak berturut-turut j..1 pada tiap baris, maka benar A(k) mencetak pola k bintang, dan tiap baris mencetak kurang 1 dari baris sebelumnya.

  24. Kesimpulan • Dalam membuat program, kita harus memastikan bahwa program tersebut memiliki spesifikasi yang masuk akal, program tersebut berperilaku sesuai spesifikasi yang ditetapkan, dan program tersebut menghasilkan output sesuai spesifikasinya. • Untuk membuktikan bahwa program tersebut bekerja sesuai yang diharapkan, kita dapat menggunakan logika induksi sederhana dan logika matematis sederhana untuk membuktikan jalannya program tersebut sesuai dengan spesifikasinya atau tidak.

  25. -selesai-

More Related