Tujuan
Mahasiswa mampu memecah sebuah program
besar menjadi sejumlah fungsi dan mengkonversi
prosedur menjadi fungsi atau sebaliknya.
Pemanggilan Fungsi
Fungsi dipanggil dari program pemanggil dengan
menuliskan nama_fungsi diikuti dengan parameter
aktual. Nilai yang dikembalikan fungsi dapat
diperlakukan dengan dua cara:
1. Nilai yang dikembalikan oleh fungsi dapat
langsung dimanipulasi.
2. Nilai yang dikembalikan oleh fungsi ditampung
dalam sebuah peubah yang bertipe sama
dengan tipe fungsi.
/* PROGRAM Genap_Ganjil */
{ Menentukan apakah sebuah bilangan genap atau ganjil }
#include <stdio.h>
int Genap(int n);
void 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);
}
int Genap(int n)
{
return (n % 2);
}
/* PROGRAM Hitung_Titik_Tengah */
{ Menghitung koordinat antara dua titik }
#include <stdio.h>
/* DEKLARASI GLOBAL */
typedef struct (float x,y;) Titik;
Titik Titik_Tengah(Titik P1, Titik P2);
/* Mengembalikan titik tengah dari P1 dan P2 /*
main()
{
Titik P1,P2,Pt;
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);
Pt = Titik_Tengah(P1,P2);
printf( Titik tengah : (%f,%f) \n, Pt.x, Pt.y);
}
Lanjutan Program
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;
}
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 berulangulang, sehingga di dalam fungsi rekursif harus
diberi suatu kondisi yang dapat mengakhiri
proses rekursi.
Sebuah contoh yang sering diberikan dalam
rangka membahas fungsi rekursif adalah
menghitung Faktorial .
#include <stdio.h>
int Fak(int N);
void main()
{
int f, n;
printf("Masukkan suatu bilangan bulat : ");
scanf("%d",&n);
if (n<0)
printf("Bilangan harus positif!");
else {
f = Fak(n);
printf("Nilai %d! adalah : %d", n, f);
}
}
int Fak(int N)
{
int faktorial;
if (N<=1)
return(1);
else {
faktorial = N * Fak(N-1);
return(faktorial);
}
}
Prosedur Hitung_Luas
#include<stdio.h>
void HitungLuas(float alas, float tinggi, float *luas);
void 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 = %.2f \n", L);
}
}
void HitungLuas(float alas, float tinggi, float *luas)
{
*luas = (alas*tinggi)*0.5;
}
Fungsi Hitung_Luas
#include<stdio.h>
float HitungLuas(float alas, float tinggi);
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 = %.2f \n", HitungLuas(a,t));
}
}
float HitungLuas(float alas, float tinggi)
{
return (alas*tinggi)*0.5;
}
Fungsi Genap
#include <stdio.h>
int Genap(int n);
void 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);
}
int Genap(int n)
{
return (n % 2);
}
Prosedur Genap
#include <stdio.h>
void Genap(int n, int *boolean);
void 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);
}
void Genap(int n, int *boolean)
{
*boolean = (n % 2);
}
Tugas Mandiri 4
Konversi contoh program di atas
(titik_tengah) menjadi prosedur.
Buatlah contoh eksekusi program