1 / 55

Subprogram Minggu V – VI

Subprogram Minggu V – VI. Wahyu Pujiyono yywahyup@yahoo.com Teknik Informatika Universitas Ahmad Dahlan. Motivasi. Pada dasarnya, manusia adalah makhluk yang lemah. Contoh : Untuk membangun gedung, tentulah dibangun dari bata satu ke bata yang lain. Dari ruang ke ruang yang lain dst.

deacon
Download Presentation

Subprogram Minggu V – VI

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. SubprogramMinggu V – VI WahyuPujiyonoyywahyup@yahoo.comTeknikInformatikaUniversitas Ahmad Dahlan

  2. Motivasi • Pada dasarnya, manusia adalah makhluk yang lemah. • Contoh : Untuk membangun gedung, tentulah dibangun dari bata satu ke bata yang lain. Dari ruang ke ruang yang lain dst. • Metode : Divide & Conquer (dibagi-bagi menjadi bagian yang lebih kecil, lalu selesaikan masalah yang dihadapi)

  3. Gedung bisa diibaratkan sebagai fungsi main() sedangkan bagian yang lebih kecil merupakan fungsi yang menyelesaikan tugas tertentu. • Contoh : int main(void) // fungsi utama { float z; z = sqrt(9); // fungsi kepustakaan }

  4. Beberapa fungsi kepustakaan

  5. Bila kepustakaan tidak menyediakan fungsi yang kita perlukan  buat fungsi sendiri (user defined function) • Kapan fungsi diperlukan ? • Sesuatu yang dikerjakan beberapa kali dalam program • Sesuatu yang akan dikerjakan pada program yang berbeda • Sederetan operasi yang kompleks yang membuat arus program sukar diikuti

  6. Cara kerja fungsi

  7. Fungsi sebagai kotak hitam • Menyembunyikan detail • Dapat menggunakan fungsi tanpa tahu apa yang ada di dalamnya

  8. output = function( input1, input2) • argument (input1 dan input2) menyediakan informasi ke program • Mengembalikan harga (informasi) kembali ke fungsi yang memanggilnya

  9. Function • Fungsi pada dasarnya mengembalikan nilai (return value) • Fungsi yang tidak mengembalikan nilai  prosedur (yang dikembalikan void) • Adakalanya ada lebih dari satu parameter yang berubah nilainya dalam fungsi

  10. Fungsi yang mengembalikan 1 nilai • Pengertiannya sama dengan fungsi dalam matematika • Contoh : • Fungsi y = f(x)= x + 5. Untuk setiap harga x maka akan mengakibatkan nilai y bertambah dengan 5 • x dikatakan sebagai variabel independen (input) • y dikatakan sebagai variabel dependen (output)

  11. Fungsi yang tak mengembalikan nilai • Misalkan akan dicetak bilangan dari 1 sampai n

  12. Raptor :http://tutorialalgorithm.comjudul : Function in raptor

  13. Fungsi yang mengubah nilai parameter • Dinamakan pass by reference • Fungsi menggunakan variabel asal (tidak menggunakan copy) • Argumen harus berupa variabel, tidak boleh konstanta • Dapat mengembalikan lebih dari satu nilai

  14. Contoh : • Buatlah fungsi untuk menukar nilai dari dua variabel. • Analisis : • Misalkan kita punya variabel A = 3 dan B = 5 (input) • Output : A = 5 dan B = 3

  15. Langkah algoritma

  16. Raptor :http://tutorialalgorithm.comjudul :Sub-program parameters in raptor : swap

  17. Passing Parameter (versi 1) • Dari contoh terakhir, terlihat ada pernyataan : tukar (&a,&b); • Pernyataan ini dinamakan function call. Tanda & (alamat) dimaksudkan bahwa parameter a dan b nantinya dapat diubah dalam fungsi. • Sebagai konsekuensinya dalam badan fungsi menjadi : void tukar (int *a, int *b) • Tanda * menandakan variabelnya bertipe pointer

  18. Versi 2 void swap( double & a, double & b) { double temp; temp = a; a = b; b = temp; } • Pemanggilan fungsi di atas sama dengan cara call by value (tanpa tanda &)

  19. Jenis parameter • Ada 2 jenis parameter yang dideklarasikan dalam subprogram, yaitu : • parameter nilai (value parameter) : variabel yang dikirimkan tidak mengalami perubahan sekeluar dari subprogram) • parameter variabel (variable parameter) : variabel yang dikirimkan tidak mengalami perubahan sekeluar dari subprogram)

  20. Jenis parameter • Bentuk umum fungsi :

  21. Template • Adakalanya kita ingin melewatkan berbagai jenis parameter (bisa int,float, dll.) tetapi harusnya fungsi hanya satu saja  gunakan template

  22. Kasus 5.2. • Buatlah fungsi yang menentukan nilai terbesar dari 2 bilangan bulat.

  23. Overloading Function • Kadang diinginkan beberapa fungsi yang namanya sama namun dengan banyak parameter yang berbeda  overloading function Contoh : • Fungsi untuk mencari maksimum dari 2 bilangan dan untuk mencari maksimum dari 3 bilangan.

  24. Kasus 5.3. • Dengan menggunakan fungsi ln dan exp, buatlah fungsi untuk menghasilkan nilai xy Analisis : • Dengan menggunakan sifat logaritma : ln(xy) = y*ln(x) exp(ln(xy)) = exp(y*ln(x)) xy = exp(y*ln(x))

  25. Kasus 5.4. • Buatlah fungsi perkalian 2 bilangan bulat dengan menggunakan operator penjumlahan. Analisis : • Misalkan a dikalikan b (input) • Proses : a x b = a + a + a + … + a (sebanyak b kali)

  26. Fungsi Rekursif • adalah fungsi yang melakukan proses perulangan dengan cara memanggil dirinya sendiri. • berbeda dengan versi iteratif yang menggunakan perulangan for, while maupun do while. • Fungsi rekursif dapat dipandang sebagai sebuah “operator”.

  27. Ciri fungsi rekursif • Kasus penyetop. Dalam kasus ini terdapat nilai konstan (return value) • Kasus pemanggilan rekursif. Dalam kasus ini terdapat pemanggilan fungsi itu sendiri, tetapi harus mengarah kepada kasus penyetop.

  28. Ciri perulangan • Kapan mulai • Kapan berhenti • Berapa kali diulang Raptor :http://tutorialalgorithm.comjudul : How To : Recursion in the raptor

  29. Kasus 5.5. • Buatlah fungsi faktorial secara rekursif untuk mencari n!. Analisis : • Kasus penyetop (= nilai awal) n = 0 atau n = 1 yaitu bernilai konstan 1 • Kasus rekursif : n * faktorial (n-1)

  30. Fungsi rekursif

  31. Prosedur rekursif

  32. Kasus 5.6. Diberikan deret Fibonacci sebagai berikut : 1, 1, 2, 3, 5, 8, … • Buatlah fungsi yang menghitung suku ke-n dari deret Fibonacci dengan menggunakan cara rekursif. • Analisis : • Suku ke-n dari deret Fibonacci diperoleh dengan rumus : fibonacci(n) = fibonacci(n-1) + fibonacci(n-2) dengan nilai awal untuk n=1 dan n=2 berharga 1.

  33. Iteratif Versus Rekursif • Cetaklah suatu kalimat dengan cara iteratif maupun cara rekursif.

  34. Kasus 5.8. • Buatlah algoritma iteratif dan rekursif untuk menghitung gcd dari dua bilangan bulat positif. • Analisis : • Jika n  0 dan m integer non negatif, kita dapat menulis m = q.n + r untuk suatu integer non negatif q dan r dengan 0  r < n.

  35. Contoh : • Jika n = 3, m = 16 maka 16 = 5(3) + 1, yaitu q = 5 dan r = 1. • Jika n = 10, m = 3 maka 3 = 0(10) + 3, yaitu q = 0 dan r = 3. • Untuk mencari nilai gcd dari dua integer. kita bisa menggunakan cara menulis di atas. Misalkan kita mau cari gcd(190,34).

  36. Harga r  0 terakhir dicapai adalah r = 2. Inilah hasil dari gcd(190,34).

  37. Versi rekursif gcd • gcd didefinisikan sebagai berikut : gcd(c,d) = c, jika d = 0 = gcd(c-d, d), jika d > 0 dan c > d. • berlaku hukum komutatif, gcd(c,d) = gcd(d,c).

  38. Macam-macam Metode Rekursi • Going Down Recursion (rekursi menurun), yaitu parameter menurun nilainya sampai dicapai kasus berhenti • Going Up Recursion (rekursi menaik), yaitu parameter menaik nilainya sampai dicapai kasus berhenti • Two Half (rekursi separuh-separuh), rekursi dibagi menjadi 2 bagian, di mana setiap bagian juga merupakan subprogram rekursi.

  39. Contoh kasus • Hitunglah nilai dari : 52 + 62 + 72 + 82 + 92 + 102 • Pohon rekursinya adalah sebagai berikut :

  40. Going Down Recursion

More Related