Fungsi (Function)
¡ Fungsi
— Merupakan
blok dari kode yang dirancang untuk melaksanakan tugas khusus.
— Berisi
sejumlah pernyataan yang dikemas dalam sebuah nama.
— Tujuan:
— Memudahkan
dalam mengembangkan program. (program dibagi menjadi beberapa modul kecil ).
— Menghemat
ukuran program. (menghindari penulisan yang berulang – ulang).
— Memudahkan
dalam maintenance program.
— Fungsi
yang telah didefinisikan, dapat digunakan untuk program lain. (dapat dibuat
sebuah library).
— Fungsi
— Cara
definisi:
<tipedata> <namaFungsi>([parameter]){
[deklarasi
lokal]
<statement>;
[return(ekspresi);]
}
¡ Prototipe
Fungsi
¡ Digunakan
untuk mendeklarasikan ke compiler mengenai:
§ Tipe
data keluaran dari fungsi
§ Jumlah
parameter yang digunakan
§ Tipe
data dari masing – masing parameter yang digunakan
¡ Contoh
Program tanpa Fungsi
#include <stdio.h>
#include <conio.h>
void main(){
int
bil1, bil2, bil3, bil4;
printf("Program
Mencari Penjumlahan dan Pengurangan\n");
printf("dari
2 buah bilangan\n");
printf("-------------------------------------------\n");
printf("Nilai
A : "); scanf("%d", &bil1);
printf("Nilai
B : "); scanf("%d", &bil2);
bil3
= bil1 + bil2;
bil4
= bil1 - bil2;
printf("\n\nResult:\n");
printf("\t%d
+ %d = %d\n", bil1, bil2, bil3);
printf("\t%d
- %d = %d\n", bil1, bil2, bil4);
getch();
}
¡ Contoh
program dengan fungsi tanpa prototipe
#include <stdio.h>
#include <conio.h>
void judul(){
printf("Program
Mencari Penjumlahan dan Pengurangan\n");
printf("dari
2 buah bilangan\n");
printf("-------------------------------------------\n");
}
int jumlah(int a, int b){
return(a
+ b);
}
int selisih(int a , int b) {
return(a
- b);
}
¡ Contoh
program dengan fungsi tanpa prototipe
void main(){
int
bil1, bil2, bil3, bil4;
printf("Nilai
A : "); scanf("%d", &bil1);
printf("Nilai
B : "); scanf("%d", &bil2);
bil3
= jumlah(bil1, bil2);
bil4
= selisih(bil1, bil2);
printf("\n\nResult:\n");
printf("\t%d
+ %d = %d\n", bil1, bil2, bil3);
printf("\t%d
- %d = %d\n", bil1, bil2, bil4);
getch();
}
¡ Contoh
program dengan prototipe fungsi
#include <stdio.h>
#include <conio.h>
void judul();
int jumlah(int a, int b);
int selisih(int, int);
void main(){
int
bil1, bil2, bil3, bil4;
judul();
printf("Nilai
A : "); scanf("%d", &bil1);
printf("Nilai
B : "); scanf("%d", &bil2);
¡ Contoh
program dengan prototipe fungsi
bil3 = jumlah(bil1, bil2);
bil4
= selisih(bil1, bil2);
printf("\n\nResult:\n");
printf("\t%2d
+ %2d = %2d\n", bil1, bil2, bil3);
printf("\t%2d
- %2d = %2d\n", bil1, bil2, bil4);
getch();
}
void judul(){
printf("Program
Mencari Penjumlahan dan Pengurangan\n");
printf("dari
2 buah bilangan\n");
printf("-------------------------------------------\n");
}
int jumlah(int a, int b){
return(a
+ b);
}
int selisih(int a , int b) {
return(a
- b);
}
¡ Parameter
Fungsi
¡ Terdapat
2 macam parameter fungsi, yaitu:
§ Parameter
formal, merupakan variabel yang terdapat pada daftar parameter yang berada di
dalam definisi fungsi.
§ Parameter
aktual, merupakan variabel yang digunakan pada pemanggilan suatu fungsi.
¡ Cara
melewatkan Parameter ke dalam fungsi
— Pemanggilan
dengan Nilai (pass by value)
pada
pemanggilan jenis ini, nilai dari parameter aktual akan dimasukkan ke parameter
formal. Dengan cara ini, nilai parameter aktual tidak akan berubah, walaupun
nilai dari parameter formal berubah.
— Pemanggilan
dengan Referensi (pass by reference)
pemanggilan
dengan referensi merupakan pemanggilan alamat suatu variabel di dalam fungsi.
Cara ini dapat dipakai untuk mengubah isi suatu variabel yang ada di luar dari
fungsi, yang dilakukan dengan mengubah nilai suatu variabel yang ada di dalam
fungsi.
¡ Contoh
pass by value
#include <stdio.h>
#include <conio.h>
void tambah(int, int);
void main(){
int a
= 10, b = 20;
printf("Nilai
Sebelum Fungsi dipanggil\n");
printf("A
= %d ; B = %d\n", a, b);
tambah(a,
b);
printf("Nilai
Setelah Fungsi dipanggil\n");
printf("A
= %d ; B = %d\n", a, b);
getch();
}
¡ Contoh
pass by value
void tambah(int a, int b){
a +=
5;
b++;
printf("\nNilai
di dalam Fungsi\n");
printf("A
= %d ; B = %d\n\n", a, b);
}
¡ Contoh
pass by reference dengan pointer
#include <stdio.h>
#include <conio.h>
void tambah(int *, int *);
void main(){
int a
= 10, b = 20;
printf("Nilai
Sebelum Fungsi dipanggil\n");
printf("A
= %d ; B = %d\n", a, b);
tambah(&a,
&b);
printf("Nilai
Setelah Fungsi dipanggil\n");
printf("A
= %d ; B = %d\n", a, b);
getch();
}
¡ Contoh
pass by reference dengan pointer
void tambah(int *a, int *b){
*a +=
7;
*b +=
2;
printf("\nNilai
di dalam Fungsi\n");
printf("A
= %d ; B = %d\n\n", *a, *b);
}
¡ Reference
— Pada
C++, Digunakan untuk memberikan nama alias dari variabel.
— Deklarasi
: <tipedata> &ref = nama_variabel;
— Pengubahan
nilai terhadap nama_variabel dapat dilakukan melalui nama_variabel itu sendiri
ataupun melalui referensi ref.
— Contoh
potongan program:
void main() {
int i;
int &r = i;
i = 10;
cout << “i = “<< i << “r = “<<
r << endl;
r = 20;
cout << “i = “<< i << “r = “<<
r << endl;
}
¡ Contoh
pass by reference
#include <iostream.h>
#include <conio.h>
void tukar(int &a, int &b);
void main(){
int
a, b;
a =
2; b = 10;
cout
<< "A = " << a <<
" B = " << b << endl;
tukar(a,
b);
cout
<< "A = " << a <<
" B = " << b << endl;
getch();
}
void tukar(int &a, int &b){
int
temp; temp = a; a = b; b = temp;
}
¡ Function
Overloading
¡ Boleh
membuat lebih dari satu fungsi dengan nama sama, dengan salah satu syarat harus
dipenuhi:
§ Jumlah
parameter input berbeda
§ Tipe
data parameter input berbeda
§ Urutan
tipe data parameter input berbeda
¡ Memungkinkan
sebuah fungsi dapat menerima bermacam-macam tipe dan memberikan nilai balik
yang bervariasi.
¡ Function
Overloading
¡ Boleh
membuat lebih dari satu fungsi dengan nama sama, dengan salah satu syarat harus
dipenuhi:
§ Jumlah
parameter input berbeda
§ Tipe
data parameter input berbeda
§ Urutan
tipe data parameter input berbeda
¡ Memungkinkan
sebuah fungsi dapat menerima bermacam-macam tipe dan memberikan nilai balik
yang bervariasi.
¡ Contoh
function overloading
#include <iostream.h>
#include <conio.h>
int kuadrat(int i);
double kuadrat(double d);
void main()
{
int x
= 2;
double
y = 2.5;
cout
<< "kuadrat " << x << " adalah " <<
kuadrat(x) << endl;
cout
<< "kuadrat " << y << " adalah " <<
kuadrat(y) << endl;
getch();
}
int kuadrat(int i){ return(i * i); }
double kuadrat(double d) { return (d * d);}
¡ Rekursif
¡ Fungsi
yang dapat memanggil dirinya sendiri.
¡ Contoh
tanpa rekursif
#include <stdio.h>
#include <conio.h>
long faktorial(int);
void main(){
int
n;
printf("Program
Faktorial:\n");
printf("------------------\n");
printf("N
= "); scanf("%d", &n);
printf("Result:
");
printf("%d!
= %ld\n", n, faktorial(n));
getch();
}
¡ Contoh
tanpa rekursif
long faktorial(int n){
long
fak = 1;
int
i;
for(i
= 2; i <= n; i++)
fak
*= i;
return(fak);
}
¡ Contoh
dengan rekursif
#include <stdio.h>
#include <conio.h>
long faktorial(int);
void main(){
int
n;
printf("Program
Faktorial:\n");
printf("------------------\n");
printf("N
= "); scanf("%d", &n);
printf("Result:
");
printf("%d!
= %ld\n", n, faktorial(n));
getch();
}
¡ Contoh
dengan rekursif
long faktorial(int n){
if(n
== 0)
return(1);
else
return(n
* faktorial(n-1));
}
¡ Array
dan Fungsi
#include <iostream.h>
// mendefinisikan fungsi untuk proses input array
void InputArray(int A[], int N) {
for (int C=0;
C<N; C++) {
cout<<" Masukkan nilai A[" <<C<< "] :
"; cin>>A[C];
}
}
// mendefinisikan fungsi untuk menghitung jumlah
elemen array
long Jumlah(int A[ ], int N) {
long jml=0;
for(int C=0;
C<N; C++) {
jml +=
A[C];
}
return jml;
}
¡ Array
dan Fungsi
// Fungsi utama
int main ( ) {
int X[100];
int
BanyakElemen;
long HASIL;
cout<<"Masukkan banyaknya elemenyang diinginkan : " ;
cin>>BanyakElemen;
cout<<endl;
// memanggil fungsi InputArray
InputArray(X, BanyakElemen);
// memanggil fungsi jumlah dan menampung hasilnya ke
variabel HASIL
HASIL = Jumlah (X, BanyakElemen);
// Menampilkan hasil
cout<<"Hasilnya = "<<HASIL;
return 0;
}
Komentar
Posting Komentar