Fungsi TEE 2103 Algoritma & Pemrograman Dosen: Abdillah, MIT HP: 0853 6581 8665 Email: abdill01@gmail.com Website: http://abdill01.wordpress.com
Tujuan Mahasiswa memahami cara penggunaan fungsi dalam notasi algoritma dan program C.
Definisi Sebuah fungsi adalah modul program yang mengerjakan tugas atau aktivitas yang spesifik dan mengembalikan sebuah nilai dari tipe tertentu, baik tipe dasar atau tipe bentukan. Baik fungsi maupun prosedur, keduanya merupakan modul program yang ekivalen, namun pada beberapa masalah ada kalanya kita lebih tepat menggunakan fungsi ketimbang prosedur, demikian juga sebaliknya.
Pemanggilan Fungsi Fungsi dipanggil dari program pemanggil dengan menuliskan nama_fungsi diikuti parameter aktual. Nilai yang dikembalikan fungsi dapat diperlakukan dengan dua cara: Nilai yang dikembalikan oleh fungsi dapat langsung dimanipulasi. Nilai yang dikembalikan oleh fungsi ditampung dalam sebuah peubah yang bertipe sama dengan tipe fungsi.
Notasi Algoritmik Fungsi function Nama_Fungsi (input parameter) tipe data { Berisi penjelasan apa yang dikembalikan fungsi } DEKLARASI { Semua nama yang dipakai di dalam fungsi } ALGORITMA: { Badan prosedur, berisi urutan instruksi } return ekspresi
Algoritma Fungsi function Genap(input n : integer) integer {Mengembalikan 0 jika n genap, 1 jika ganjil} DEKLARASI {tidak ada} ALGORITMA: return (n mod 2)
Algoritma Program Utama PROGRAM Genap_Ganjil { Menentukan bilangan genap atau ganjil } DEKLARASI x : integer ALGORITMA: read (x) if Genap(x)=0 then write(‘genap’) else write(‘ganjil’) endif
Fungsi dan Program Utama #include <stdio.h> int Genap(int n) { return (n % 2); } main() int x; printf("Ketikkan sebuah bilangan:"); scanf("%d",&x); if (Genap(x)== 0) printf("%d adalah bilangan genap \n", x); else printf("%d adalah bilangan ganjil \n", x);
Algoritma Fungsi function Titik_Tengah(input P1,P2 : Titik) Titik { Mengembalikan titik tengah dari P1 dan P2 } DEKLARASI {tidak ada} ALGORITMA: Pt.x (P1.x + P2.x)/2 Pt.y (P1.y + P2.y)/2 return Pt
Algoritma Program Utama PROGRAM Hitung_Titik_Tengah { Menghitung koordinat antara dua titik } DEKLARASI type Titik : record < x,y : real > P1, P2 : Titik ALGORITMA: read (P1.x, P1.y) read (P2.x, P2.y) write (Titik_Tengah(P1,P2))
Fungsi Titik Tengah Titik Titik_Tengah(Titik P1, Titik P2) /* Mengembalikan titik tengah dari P1 dan P2 */ { Titik Pt; Pt.x = (P1.x + P2.x)/2; Pt.y = (P1.y + P2.y)/2; return Pt; }
Program Utama /* PROGRAM Hitung_Titik_Tengah */ #include <stdio.h> /* DEKLARASI VARIABEL GLOBAL */ typedef struct {float x,y;} Titik; main() { Titik P1,P2; printf(“ Masukkan koordinat titik P1: \n”); printf(“ x = ”);scanf(“%f”,&P1.x); printf(“ y = ”);scanf(“%f”,&P1.y); printf(“ Masukkan koordinat titik P2: \n”); printf(“ x = ”);scanf(“%f”,&P2.x); printf(“ y = ”);scanf(“%f”,&P2.y); printf(“ Titik tengah : (%f,%f) \n”, Titik_Tengah(P1,P2)); }
Fungsi Rekursif Fungsi rekursif adalah suatu fungsi yang memanggil dirinya sendiri. Jadi di dalam fungsi tersebut terdapat suatu baris program yang memanggil dirinya sendiri. Proses rekursi tersebut terjadi secara berulang- ulang, sehingga di dalam fungsi rekursif harus diberi suatu kondisi yang dapat mengakhiri proses pengulangannya. Sebuah contoh yang sering diberikan dalam rangka membahas fungsi rekursif adalah menghitung Faktorial .
Contoh Fungsi Rekursif Misalkan F = faktorial (5)
Algoritma Fungsi function Faktorial (input N : integer) integer { Mengembalikan nilai N faktorial} DEKLARASI faktorial : integer ALGORITMA: if N≤1 then return 1 else faktorial ← N * Faktorial (N-1) return (faktorial)
Algoritma Program Utama PROGRAM Hitung_Faktorial {Menghitung n faktorial, n > 0} DEKLARASI n, f : integer ALGORITMA: read (n) if n<0 then write (‘n harus positif’) else f ← Faktorial (n) write (n! = f)
Fungsi int Faktorial(int N) { int faktorial; if (N<=1) return(1); else { faktorial = N * Faktorial(N-1); return(faktorial); }
Program Utama #include <stdio.h> void main() { int f, n; printf("Masukkan suatu bilangan bulat : "); scanf("%d",&n); if (n<0) printf("Bilangan harus positif!"); else { f = Faktorial(n); printf("Nilai %d! adalah : %d", n, f); }
Mengubah Prosedur menjadi Fungsi Prosedur yang mempunyai satu buah parameter keluaran dapat ditulis dengan cara menyatakan parameter keluaran sebagai nilai yang dikembalikan oleh fungsi.
Prosedur Hitung_Luas #include<stdio.h> void HitungLuas(float alas, float tinggi, float *luas) { *luas = (alas*tinggi)*0.5; } main() int i, N; float a, t, L; printf("Masukkan banyaknya segitiga = "); scanf("%d",&N); for (i=1; i<=N; i++) printf("Masukkan alas segitiga = "); scanf("%f",&a); printf("Masukkan tinggi segitiga = "); scanf("%f",&t); HitungLuas(a, t, &L); printf("Luas segitiga adalah = %f \n", L);
Fungsi Hitung_Luas #include<stdio.h> float HitungLuas(float alas, float tinggi) { return (alas*tinggi)*0.5; } void main() int i, N; float a, t; printf("Masukkan banyaknya segitiga = "); scanf("%d",&N); for (i=1; i<=N; i++) printf("Masukkan alas segitiga = "); scanf("%f",&a); printf("Masukkan tinggi segitiga = "); scanf("%f",&t); printf("Luas segitiga adalah = %f \n", HitungLuas(a,t));
Mengubah Fungsi menjadi Prosedur Sebuah fungsi dapat dikonversi sebagai prosedur dengan cara menyatakan nilai yang dikembalikan oleh fungsi tersebut sebagai parameter keluaran pada prosedur.
Fungsi Genap #include <stdio.h> int Genap(int n) { return (n % 2); } main() int x; printf("Ketikkan sebuah bilangan:");scanf("%d",&x); if (Genap(x)== 0) printf("%d adalah bilangan genap \n", x); else printf("%d adalah bilangan ganjil \n", x);
Prosedur Genap #include <stdio.h> void Genap(int n, int *boolean) { *boolean = (n % 2); } main() int x, boolean; printf("Ketikkan sebuah bilangan:");scanf("%d",&x); Genap(x, &boolean); if (boolean == 0) printf("%d adalah bilangan genap \n", x); else printf("%d adalah bilangan ganjil \n", x);