Tugas Uji Kompetensi Kegiatan Belajar 3. Deklarasi dan Definisi Fungsi Alokasi Waktu : 2 x 45 menit

1.4.5. Uji Kompetensi

1. Deklarasi prosedur manakah yang dibenarkan? a. procedure hapus; b. procedure hapuss:string; c. procedure hapusvar s:string; d. procedure hapuss:string:boolean; e. procedure hapusvar data; 2. Deklarasi function manakah yang tidak diizinkan? a. Function densityx:real:real; b. Function densityb:byte:byte; c. Function densityvar s:string:real; d. Function densityvar data:byte; e. Function density; 3. Tipe variabel ekspresi manakah yang tidak dapat ditampilkan dengan procedure Writeln? a. Type T=Integer; b. Type T=String; c. Type C=Char; d. Type T=Small, Medium, Large e. Semua valid Buatlah program untuk menghitung nilai akhir siswa dengan menampilkan “nilai huruf” dari “nilai akhir”. Pertama, buatlah fungsi “NilaiAkhir” yang digunakan untuk memproses perhitungan agar mendapatkan nilai akhir. Ketentuan untuk mendapatkan nilai akhir seperti berikut: Nilai Murni Absensi = Nilai Absen 30 Nilai Murni Tugas = Nilai Tugas 30 Nilai Murni Ujian = Nilai Ujian 40 Nilai Akhir summary Nilai-Nilai Murni diatas Kemudian buatlah fungsi “NilaiGrade” untuk memproses perhitungan agar mendapatkan nilai grade. Ketentuan untuk mendapatkan Nilai Grade seperti berikut: Nilai Murni = 80, Nilai Grade = A Nilai Murni = 70, Nilai Grade = B Nilai Murni 70, Nilai Grade = C 4. Diberikan program Apa keluaran program di atas ? a. GO GET GOLD b. GO GET GOLD c. GET GOLD d. SMK GO GET e. SMK GO GE 5. Diberikan program Apa keluaran program di atas? a. 3 b. 2.24 c. 2 d. 0 e. program tidak dapat dijalankan 6. Mengacu pada program berikut : var i,k: integer; begin i:=5; k:=0; k:=truncsqrti+1; writelnk; end. var A,B:string; C:string[10]; begin A:=SMK; B:=BISA; C:=A+B; if PosB0 then Begin WritelnA; end else WritelnB; end. var s:string; begin s:=SMK GO GET GOLD; deletes,1,lengths-12; writelns; end. Apa yang terjadi jika program di atas di jalankan... a. Huruf „A‟ tercetak b. Huruf „B‟ tercetak c. Tidak dapat dipastikan d. Terjadi error e. Tidak bisa di compile 7. Perhatikan potongan program berikut : Apa keluaran program di atas ? a. 0 d. 3 b. 1 e. 4 c. 2 8. Perhatikan program berikut Di antara potongan program berikut, manakah yang salah? a. St := Chr60; SulapSt; b. St := ‟KECIL‟; SulapSt; c. St := Chr45 + Chr65; SulapSt; d. Sulap„Besar‟; e. Semua ekspresi di atas benar 9. Apa guna parameter dalam subprogram? 10. Kapan kita menggunakan fungsi dan kapan pula menggunakan prosedur? 11. Buatlah program untuk menghitung parkalian dua bilangan kompleks Gunakan prosedur atau fungsi. 12. Jelaskan pengertian procedure dan struktur pendeklarasiannya. begin writelnroundfrac3.7; end. var St: String; procedure Sulapvar S: String; begin if S = Kecil’ then S :=’kecil’ else if S = ‘Besar’ then S :=’BESAR’; end;

1.5. Kegiatan Belajar 5. Fungsi Rekursif dan Aplikasinya Alokasi Waktu : 3 x 45 menit

1.5.1. Tujuan Pembelajaran

Tujuan pembelajaran pada Kegiatan Belajar 1 tentang Fungsi Rekursif adalah: 1. Siswa dapat memahami Konsep Fungsi Rekursif 2. Siswa dapat mengaplikasikan Fungsi Rekursif dalam menyelesaikan masalah 3. Siswa dapat membuat program sederhana dengan Fungsi Rekursif

1.5.2. Aktivitas belajar siswa

1.5.2.1. Mengamati observasi Definisi Fungsi Rekursif

Gambar 3. Bentuk Rekursif http:andiagusta.blogspot.com Perhatikan Gambar di atas Dalam gambar ini ada gambar ini lagi yang di dalamnya ada gambar ini lagi dan seterusnya sampai kedalaman tak terbatas. Mari kita lihat contoh lain rekursif yang jauh lebih sederhana dan lebih mengenyangkan. Masalah yang akan dipecahkan adalah memotong roti tawar tipis ‐tipis sampai habis. Jika masalah ini akan dipecahkan secara rekursif, maka solusinya adalah: 1. Jika roti sudah habis atau potongannya sudah paling tipis, pemotongan roti selesai 2. Jika roti masih bisa dipotong, potong tipis dari tepi roti tersebut, lalu lakukan prosedur 1 dan 2 untuk sisa potongannya. Itulah contoh konsep rekursif dalam kehidupan sehari - hari. Rekursif adalah suatu proses yang bisa memanggil dirinya sendiri berupa statement perulangan. Dalam pemrograman, rekursi merupakan teknik pemrograman yang penting, dan beberapa bahasa pemrograman modern mendukung keberadaan proses rekursi ini termasuk pascal. Adapun Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri selama kondisi pemanggilan dipenuhi. Dari definisi tersebut maka fungsi rekursif disusun oleh dua bagian: 1. Basis, Bagian yang berisi kasus yang terdefinisi secara eksplisit atau langsung, Bagian ini juga sekaligus menghentikan rekursif dan memberikan sebuah nilai yang terdefinisi pada fungsi rekursif 2. Rekurens, Bagian ini Menyebabkan Pemanggilan diri fungsi karena kondisi khusus tidak dipenuhi Fungsi rekursif umumnya dipakai untuk permasalahan yang memiliki langkah penyelesaian yang terpola atau langkah-langkah yang teratur. Bila kita memiliki suatu permasalahan dan kita mengetahui algoritma penyelesaiannya, kadang-kadang fungsi rekursif menjadi pilihan kita bila memang memungkinkan untuk dipergunakan. Skema Umum Fungsi Rekursif Secara umum skema fungsi rekursif adalah sebagai berikut: : Function NamaFungsiInput_x : Tipe_x : Tipe_Fungsi; Algoritma Begin If TInput_x then NInput_x {Basis} Else NamaFungsigInput_x; {Rekurens} End; Keterangan: NamaFungsi Adalah nama fungsi yang digunakan Input_x Adalah parameter fungsi yang digunakan Tipe_x Adalah tipe data dari parameter x Tipe_Fungsi Adalah tipe data dari fungsinya T Adalah fungsi untuk kasus basis N Adalah fungsi jika kasus basis tercapai g Adalah fungsi yang mengubah nilai parameter x Contoh 1. Faktorial Fungsi faktorial adalah contoh fungsi yang rekursif, fungsi rekursif ini mengandung dirinya sendiri dalam definisinya: