I. Tujuan
Setelah Menyelesaikan praktek ini mahasiswa dapat :
1. Menjelaskan tentang langkah-langkah pembuatan fungsi.
2. Menjelaskan tentang bentuk umum dan khusus tentang fungsi tersebut.
3. Membuat algoritma dari struktur fungsi yang melibatkan permasalahan-permasalahan yang ada.
II. Alat dan Bahan
PC minimal P-233 MMX
Disket DOS/Start Up Win98 , Program Bahasa Pascal, Disket Data dan Word
Processing.
III. Dasar Teori
Fungsi (function) adalah modul program yang memberikan/mengembalikan (return) sebuah nilai dan tipe data tertentu (tipe dasar atau tipe bentukan). Definisi fungsi dalam program bersesuaian dengan definisi fungsi di dalam matematika. Ada beberapa hal yang harus diketahui untuk pembuatan fungsi, antara lain :
1. Definisi Fungsi 2. Pemanggilan Fungsi
1. Definisi Fungsi
Struktur fungsi pada prinsipnya sama dengan struktur algoritma, dimana ada bagian JUDUL (header) yang terdiri atas nama fungsi dan komentar yang menjelaskan spesifikasi fungsi tersebut, bagian DEKLARASI dan BADAN Fungsi.
Notasi Algoritma pendefinisian struktur fungsi
Function NamaFungsi (input daftar_parameter_formal) tipe hasil
{spesifikasi fungsiberisi penjelasan tentang yang dilakukan fungsi ini }
DEKLARASI
{semua nama yang dipakai dalam fungsi dan hanya berlaku lokal di dalam fungsi}
DESKRIPSI
Return hasil {pengembalian nilai yang dihasilkan fungsi}
Contoh fungsi untuk menghasilkan nilai f(x)=2x2 + 5x – 8; xR
Function F (input x : real ) real
{mengembalikan nilai f(x)=2x2 + 5x – 8; xR
DEKLARASI
{tidak ada}
DESKRIPSI f2*x*x+
Return f
2. Pemanggilan Fungsi
Fungsi bukanlah program yang berdiri sendiri, jadi tidak dapat dieksekusi secara langsung.
Intruksi yang ada di dalam fungsi dapat dilaksanakan hanya bila fungsi tersebut diakses. Fungsi diakses dengan cara memanggil namanya dari program pemanggil{program utama atau modul program lain}
Contoh pemanggilan Fungsi F(x)
Algoritma fungsi_f {contoh pemanggilan fungsi}
{algoritma utama tentang cara memanggil fungsi f(x)}
DEKLARASI
function F(input x:real) real
{ mengembalikan nilai f(x)=2x2 + 5x – 8; xR } ………
X:real
DESKRIPSI
{buat header tabel}
Write (‘_ _ _ _ _ _ _ _ _ _’) Write (‘ x f(x) ’)
Write (‘_ _ _ _ _ _ _ _ _ _’)
While x 15.0 do
Write (x,’ ‘,f(x)
Xx+0.2 Endwhile
Write (‘_ _ _ _ _ _ _ _ _ _’)
Contoh implementasi :
IV. Langkah Kerja
1. Hidupkan komputer anda !
2. Jalankan Microsoft Word, dengan cara menekan tombol StartProgramMS Office 2000Microsoft Word. Selanjutnya tuliskan algoritma dari permasalahan berikut ini dan simpan dalam satu nama file : Lat07.doc.
3. Kasus 1 :
Buatlah algoritma dengan model fungsi dan tuliskan langsung dalam satu algoritma utama untuk mengetahui suatu bilangan bulat yang dimasukkan dari keyboard itu bilangan ganjil atau genap. Dimana fungsi yang dibangun menghasilkan data hasil bertipe boolean.
Program ganjil_genap
DEKLARASI a:integer b:boolean
Function ganjilgenap(input x:int) → boolean
{ mengembalikan nilai ganjil genap dengan tipe Boolean } DEKLARASI
If ganjilgenap(a) = true Then output(‘genap’) Else
output(‘ganjil’) End If
4. Kasus 2 :
Buatlah algoritma berupa fungsi dan algoritma utama untuk mencari nilai maksimum dari tiga nilai yaitu x , y dan z
Algoritma Nilai_Maks
{Mencari nilai maksimum dari tiga nilai menggunakan fungsi} Deklarasi
x,y,z:integer
Deskripsi input(x) input(y) input(z)
output(cari_maks(x,y,z))
5. Kasus 3 :
Rubahlah prosedur hitung luas persegi panjang berikut ini menjadi suatu fungsi:
Algoritma L_persegipanjang
{program utama hitung Luas Persegi Panjang}
DEKLARASI A,B,C : Integer
Procedure HitungLuasPersegipanjang (Input Panjang, Lebar : integer, ouput luas :integer)
{menghitung luas persegi panjang dengan rumus Luas=panjang x lebar}
{K.Awal : sembarang}
{K.Akhir : Luas berisi luas persegi panjang. Nilai Luas dikirim ke titik pemanggilnya}
DEKLARASI
{tidak ada}
DESKRIPSI
Read (panjang,lebar) {parameter input data} Luas panjang*lebar
DESKRIPSI { Algoritma utama }
A 10 B 5
Write(‘Menghitung Luas Persegi Panjang’) HitungLuasPersegipanjang(A,B,C) HitungLuasPersegipanjang(2,15,C) Write(‘Selesai’)
Fungsi :
Algoritma Luas_persegipanjang
{program utama menghitung Luas Persegi Panjang}
Deklarasi
A,B,C : Integer
Function HitungLuasPersegipanjang (Input Panjang, Lebar : integer) → Integer
{K.Awal : terserah}
Luas ← panjang * lebar return Luas
Deksripsi
A ← 10 B ← 5
output(‘Menghitung Luas PersegiPanjang’)
output(HitungLuasPersegipanjang(A,B))
output(HitungLuasPersegipanjang(10,5))
output(‘Selesai’)
6. Kasus 4 :
Buatlah algoritma dengan model fungsi dan tuliskan langsung dalam satu algoritma utama untuk menentukan nama-nama bulan berdasarkan kode angka bulan dalam satu tahun. Dimana fungsi yang dibangun menghasilkan data hasil bertipe string.
Algoritma namabulan
{menampilkan nama bulan berdasarkan kode bulan yang diinputkan} Deklarasi
kode : integer
function namaBulan (input no : integer) → string
{fungsi untuk menampilkan nama bulan dari kode bulan yang di inputkan} Deklarasi
{ tidak ada} Deskripsi Case no of
9: output (‘Nama bulan yang pertama: September’) 10: output (‘Nama bulan yang pertama: Oktober’) 11: output (‘Nama bulan yang pertama: November’) 12: output (‘Nama bulan yang pertama: Desember’) otherwise
output (‘hanya terdapat 12 bulan dalam satu tahun’) endcase
Deskripsi
Output (‘Mengetahui nama bulan secara urut dalam satu tahun’) output (‘Masukan kode bulan (1..12) : ’)
input(kodeBln)
output(bulan(kodeBln))
7. Cobalah anda implementasikan permasalahan nomor 3, 4, 5, dan 6 ke dalam bentuk program dengan menggunakan bahasa pemrograman C.
Implementasi kasus 1
Fungsi bilangan genap dan ganjil #include <stdio.h>
#include <boolean.h> boolean jenisbil (int x) {
printf("Masukan suatu bilangan : "); scanf("i",&a);
if (jenisbi(a))
{printf("Angka Genap");} else
{printf("Angka Ganjil");} }
Implementasi kasus 2
if(a > b && a > c) {
printf("Nilai Maks dari %i %i %i adalah %i",a,b,c,a); }
else if(b > a && b > c) {
printf("Nilai Maks dari %i %i %i adalah %i",a,b,c,b); }
else {
printf("Nilai Maks dari %i %i %i adalah %i",a,b,c,c); }
printf("Masukkan bilangan pertama= ");scanf("%i",&x); printf("Masukkan bilangan kedua = ");scanf("%i",&y); printf("Masukkan bilangan ketiga = ");scanf("%i",&z); maks(x,y,z);
}
Implementasi kasus 3
#include <stdio.h>
int HitungLuasPersegipanjang(int panjang, int lebar) {
int Luas;
Luas = panjang * lebar; return Luas;
printf("Menghitung Luas Persegi Panjang\n");
printf("Luas = %i\n",HitungLuasPersegipanjang(A,B)); printf("Luas = %i\n",HitungLuasPersegipanjang(2,15)); printf("Selesai");
Implementasi kasus 4 #include <stdio.h>
int namaBln(int no) {
switch(no) {
case 1 :
printf("Nama bulan yang pertama : Januari\\n"); break;
case 2 :
printf("Nama bulan yang kedua : Februari\n"); break;
case 3 :
printf("Nama bulan yang ketiga : Maret\n"); break;
case 4 :
printf("Nama bulan yang ke empat : April\n"); break;
case 5 :
printf("Nama bulan yang kelima : Mei\n"); break;
case 6 :
printf("Nama bulan yang ke enam : Juni\n"); break;
case 7 :
printf("Nama bulan yang ke tujuh : Juli\n"); break;
case 8 :
printf("Nama bulan yang ke delapan : Agustus\n"); break;
case 9 :
printf("Nama bulan yang ke sembilan : September\n"); break;
case 10 :
printf("Nama bulan yang ke sepuluh : Oktober\n"); break;
case 11 :
printf("Nama bulan yang ke sebelas : November\n"); break;
case 12 :
printf("Nama bulan yang ke duabelas : Desember"); break;
default :
printf("Hanya terdapat 12 bulan dalam atu tahun"); }
printf("Mengetahui nama bulan secara urut dalam satu tahun"); printf("Masukan kode bulan : ");scanf("%i",&kodeBln); namaBln(kodeBln);
V. Soal dan Pertanyaan
1. Menurut anda kapankah suatu modul program itu dideklarasikan sebagai suatu fungsi ? sertai jawaban anda dengan contoh permasalahan dan penyelesaiannya dalam program.
2. Menurut anda kapankah suatu modul program itu dideklarasikan sebagai suatu prosedur ? sertai jawaban anda dengan contoh permasalahan dan penyelesaiannya dalam program.
3. Dapatkah suatu prosedur diubah ke dalam bentuk fungsi ? berilah alasannya dan sertai pula dengan contoh permasalahan.
4. Apa yang anda ketahui tentang rekursi ? Berilah contoh permasalahan dan penyelesaiannya dalam program.
VI. Penutup
VII. Daftar Pustaka
Jobsheet Algo 07.pdf
VIII. Lampiran
Jawaban :
1. Modul di deklarasikan ssebagai fungsi ketika :
program yang dibuat terdapat perhitungan aritmatik, dan perhitungan tersebut digunakan berulang kali.
Contoh :
Algoritma L_PersegiPanjang
{Menghitung luas persegi panjang menggunakan function}
Kamus
panjang, lebar : integer
function L (input panjang : int, lebar : int) →int
L panjang *lebar
Algoritma
input(panjang) input(lebar) L(panjang , lebar) Output(L)
2. Suatu modul di deklarasikan sebagai prosedure ketika :
Suatu program yang besar dan rumit, akan dibuat menjadi bagian-bagian program kecil, sehingga mudah dalam mendeteksi error dan tidak semrawur dalam satu fungsi.
Contoh :
Algoritma Liburan
{Program yang digunakan menampilkan kata selamat sebanyak 20 kali}
DEKLARASI
I = integer
Procedur Liburan
{Prosedur untuk menampilkan kalimat “Selamat libur akhir semester satu! \m/”}
(K. Awal = sembarang}
{K. Akhir = ucapan tercetak sebanyak 20 kali}
DEKLARASI
3. Dalam suatu fungsi dapat diubah menjadi prosedur yaitu ketika :
program tersebut terdapat proses perhitungan, tetapi bila tidak terdapat proses perhitungan (terdapat operasilogika ataupun aritmatika)
Dalam bentuk prosedur : Algoritma L_persegipanjang
{program utama untuk menghitung Luas Persegi Panjang}
DEKLARASI
A,B,C : Integer
Procedure HitungLuasPersegipanjang (Input Panjang, Lebar : integer, ouput luas :integer)
{menghitung luas persegi panjang dengan rumus Luas=panjang x lebar} {K.Awal : sembarang}
{K.Akhir : Luas berisi luas persegi panjang. Nilai Luas dikirim ke titik pemanggilnya}
DEKLARASI
{tidak ada}
DESKRIPSI
Read(panjang,lebar) {parameter input data} Luas ← panjang*lebar
DESKRIPSI { Algoritma utama } A ← 6
B ← 8
Write (‘Menghitung Luas PersegiPanjang’) HitungLuasPersegipanjang(A,B,C)
HitungLuasPersegipanjang(2,15,C) Write(‘Selesai’)
Dalam bentuk fungsi
Algoritma Luas_persegipanjang
{program utama untuk menghitung Luas Persegi Panjang}
DEKLARASI
A,B,C : Integer
Function HitungLuasPersegipanjang (Input Panjang, Lebar : integer, ) → integer {menghitung luas persegi panjang dengan rumus Luas=panjang x lebar}
{K.Awal : sembarang}
DEKLARASI
{tidak ada}
DESKRIPSI
Read(panjang,lebar) {parameter input data} Luas ← panjang*lebar
Return Luas
DESKRIPSI { Algoritma utama } A ← 6
B ← 8
Write(‘Menghitung Luas PersegiPanjang’) HitungLuasPersegipanjang(A,B)
HitungLuasPersegipanjang(9,10)
Print (“Luas persegi panjang adalah ”, Luas) Write(‘Selesai’)
4. Rekursi adalah
Perulangan rekursif merupakan salah satu metode didalam pemrograman yang mana dalam sebuah fungsi terdapat intruksi yang memanggil fungsi itu sendri, atau lebih sering disebut memanggil dirinya sendiri.
using System;
namespace Rekursi {
class Aritmatika {
public static void Main(string[] args) {
Console.Clear();
Console.WriteLine("Menghitung faktorial n \n"); Console.Write("n = ");
int n = Int32.Parse(Console.ReadLine());
Aritmatika hitung = new Aritmatika();
else
return (n * faktorial(n-1)); }
catch (Exception e) {
Console.WriteLine(e.ToString()); return 1;
} } } }