Sp25092022-Bab Viii Foc1
Sp25092022-Bab Viii Foc1
FUNGSI
8.1. PENDAHULUAN
Pengertian program dalam bahasa C++ adalah merupakan kumpulan
fungsi-fungsi, baik yang didefinisikan langsung maupun yang disimpan
dalam suatu file header. Baik bahasa C maupun C++ sendiri mempunyai
fungsi utama yang disebut fungsi main. Fungsi main ini selalu ada dalam
setiap program C ataupun C++ dan compiler akan menjalankan program
melalui perintah-perintah yang terdapat dalam fungsi ini, untuk lebih
jelasnhya kita lihat gambar dibawah ini yang mengilustrasikan fungsi
dalam sebuah program;
FOC-1
Ir. Masagus Muhammad Yusuf, Mkom
135
# include <iostream.h>
//Membuat fungsi dengan nama Replika
void Replika() {
for (int C = 0; C < 8; C++) {
cout<<" Aku Mahasiswa Teknik Informatika “<<endl;
}
}
//Fungsi utama dalam program C++
int main() {
//Memanggil fungsi Replika unuk dieksekusi
Replika();
return 0;
}
BAB-VIII-FOC-1
Ir. Masagus Muhammad Yusuf, Mkom
136
# include <iostream.h>
//Membuat fungsi sederhana yang mengembalikan tipe string
char CobaString() {
return “Ini sebuah nilai suatu fungsi”;
}
return 0;
}
Dan hasil Output dari contoh program diatas, kita menggunakan fungsi
pengembalian untuk fungsi string, adalah sebagai berikut;
BAB-VIII-FOC-1
Ir. Masagus Muhammad Yusuf, Mkom
137
# include <iostream.h>
//Membuat fungsi sederhana yang mengembalikan tipe duble
char CobaBilangan() {
return (3.14 * 5);
}
return 0;
}
Dan hasil Output dari contoh program diatas, kita menggunakan fungsi
pengembalian untuk tipe fungsi bilangan, adalah sebagai berikut;
BAB-VIII-FOC-1
Ir. Masagus Muhammad Yusuf, Mkom
138
# include <iostream.h>
//Membuat fungsi derngan parameter bertipe masukan
int JLH1(int X) {
int hasil;
hasil = X + 1;
return hasil;
}
int main() {
/*Mendeklarasikan variabel yang akan digunakan sebagai nilai
Parameterpada saat pemanggilan */
int Bilangan, HASIL;
cout<<”Masukkan sebuah bilangan bulat : “<<endl;cin>>Bilangan;
HASIL = JLH1(Bilangan);
//Menampilkan nilai setelah proses dalam fungsi
cout<<”Nilai akhir : “<<HASIL;
return 0;
}
Dan hasil Output dari contoh program diatas, kita menggunakan fungsi
pengembalian untuk fungsi string, adalah sebagai berikut;
# include <iostream.h>
//Mendeklair parameter X sebagai masukan, dan hasil sebagai keluaran
int JLH1(int X, int hasil) {
hasil = X + 1;
return hasil;
}
int main() {
int Bilangan, HASIL;
return 0;
}
BAB-VIII-FOC-1
Ir. Masagus Muhammad Yusuf, Mkom
139
Dan hasil Output dari contoh program diatas, kita menggunakan fungsi
pengembalian untuk fungsi string, adalah sebagai berikut;
# include <iostream.h>
//Mendeklair parameter X sebagai masukan, dan juga sebagai keluaran
int JLH1(int X) {
X = X + 1;
return X;
}
int main() {
int Bilangan;
return 0;
}
Dan hasil Output dari contoh program diatas, kita menggunakan fungsi
pengembalian untuk fungsi string, adalah sebagai berikut;
BAB-VIII-FOC-1
Ir. Masagus Muhammad Yusuf, Mkom
140
# include <iostream.h>
//Membuat fungsi dengan melewatkan nilai X ke dalamnya
void Jlh2(int X) {
X = X * 2;
cout<<”Nilai di dalam fungsi : “<<X<<endl;
}
//Fungsi utama
int main() {
int Bilangan;
cout<<”Masukkan sebuah bilangan bulat : “;cin>>Bilangan;
cout<<endl;
//Menampilkan nilai awal
cout<<”Nilai awal : “<<Bilangan;
Jlh2(Bilangan);
//Menampilkan nilai akhir
cout<<”Nilai akhir : “<<Bilangan<<endl;
return 0;
}
BAB-VIII-FOC-1
Ir. Masagus Muhammad Yusuf, Mkom
141
# include <iostream.h>
//Mendefinisikan fungsi untuk melnukarkan dua buah bilangan
void TukBil(int X, int Y) {
int Z = X;
X = Y;
Y = Z;
//Fungsi Utama
int main() {
return 0;
}
BAB-VIII-FOC-1
Ir. Masagus Muhammad Yusuf, Mkom
142
Dan hasil Output dari contoh program diatas, kita menggunakan fungsi
pengembalian untuk fungsi string, adalah sebagai berikut;
Keadaan awal
Bilangan ke-1 : 21
Bilangan ke-2 : 78
Didalam fungsi
Bilangan ke-1 : 78
Bilangan ke-2 : 21
Keadaan akhir
Bilangan ke-1 : 21
Bilangan ke-2 : 78
Pada bagian ini anda dianggap telah mengetahui arti dari alias
atau reference. Pass by reference ini adalah melewatkan parameter ke
sebuah fungsi berdasarkan alamatnya. Seperti kita ketahui bahwa jika
kita membuat alias dari sebuah variabel maka alamat dari variabel dan
alias tersebut adalah sama. Inilah yang menjadi konsep dasar pengiriman
parameter berdasakan alamat. Cara seperti ini akan menyebabkan nilai
yang terdapat di dalam fungsi akan sama sesuai dengan nilai yang
terdapat pada program (di luar fungsi). Ini disebabkan karena alamat dari
variabel yang berperan sebagai parameter formal sama dengan alamat
dari variabel yang berperan sebagai parameter aktual.
Perhatikan contoh berikut ini agar anda lebih dapat dengan mudah
memahami penggunaan parameter berdasarkan alamat (Pass By
Reference).
BAB-VIII-FOC-1
Ir. Masagus Muhammad Yusuf, Mkom
143
# include <iostream.h>
//Mendefinisikan fungsi yang melewatkan parameternya menurut alamatnya
void Lewat2(int & X) {
X = X * 2;
cout<<”Nilai di dalam fungsi : “<<endl;
int main() {
int Bilangan;
cout<<”Masukkan sebuah bilangan bulat : “;cin>>Bilangan;
cout<<endl;
//Menampilkan nilai awal
cout<<Bilangan<<endl;
return 0;
}
8.1. Pointer ke Fungsi
Output yang dihasilkan dari contoh program diatas sebagai berikut;
Agar anda lebih dapat memahami lebih jelas lagi perhatikan contoh
program berikut ini;
# include <iostream.h>
//Mendefinisikan fungsi untuk menukarkan dua buah bilangan
void TukBil(int & X, int & Y) {
int Z = X;
X = Y;
Y = Z;
//Fungsi Utama
int main() {
return 0;
}
BAB-VIII-FOC-1
Ir. Masagus Muhammad Yusuf, Mkom
145
# include <iostream.h>
//Mendefinisikan fungsi untuk menukarkan dua buah bilangan
void TukBil(int *X, int *Y) {
int Z = *X;
*X = *Y;
*Y = Z;
//Menampilkan bilangan yang terdapat dalam fungsi
cout<<”Didalam fungsi“<<endl;
cout<<”Bilangan ke-1 : “<<*X<<endl;
cout<<”Bilangan ke-2 : “<<*Y<<endl;
cout<<endl;
}
//Fungsi Utama
int main() {
//Mendeklarasikan variabel Bilangan1 dan Bilangan2
int Bilangan1, Bilangan2;
cout<<”Masukkan bilangan pertama : “;cin>>Bilangan1;
cout<<”Masukkan bilangan kedua : “;cin>>Bilangan2;
//Menampilkan nilai awal
cout<<”Keadaan awal“<<endl;
cout<<”Bilangan ke-1 : “<<Bilangan1<<endl;
cout<<”Bilangan ke-2 : “<<Bilangan2<<endl;
cout<<endl;
//Memanggil fungsi TukBil
TukBil(&Bilangan1, &Bilangan2); //gunakan operator &
return 0;
}
Keadaan awal
Bilangan ke-1 : 21
Bilangan ke-2 : 78
Didalam fungsi
Bilangan ke-1 : 78
Bilangan ke-2 : 21
Keadaan akhir
Bilangan ke-1 : 78
Bilangan ke-2 : 21
BAB-VIII-FOC-1
Ir. Masagus Muhammad Yusuf, Mkom
146
# include <iostream.h>
//Fungsi Utama
int main() {
int X[100]; //Elemen maksimal adalah 100
int TotElmen;
long HASIL;
//Menampilkan hasil
cout<<”\nHasilnya adalah = “<<HASIL;
return 0;
}
BAB-VIII-FOC-1
Ir. Masagus Muhammad Yusuf, Mkom
147
Masukkan Nilai A [ 0 ] : 10
Masukkan Nilai A [ 1 ] : 20
Masukkan Nilai A [ 2 ] : 30
Masukkan Nilai A [ 3 ] : 40
Masukkan Nilai A [ 4 ] : 50
Pada bahasa C++ parameter bertipe array ini sering diganti dengan
parameter yang bertipe pointer, Contoh program dibawah ini yang
menggunakan parameter bertipe array diganti dengan pointer, hasil
outputnya sama seperti program diatas;
# include <iostream.h>
//Menampilkan hasil
cout<<”\nHasilnya adalah = “<<HASIL;
return 0;
}
BAB-VIII-FOC-1
Ir. Masagus Muhammad Yusuf, Mkom
148
# include <iostream.h>
//Fungsi Utama
int main() {
int R;
double HASIL;
return 0;
}
BAB-VIII-FOC-1
Ir. Masagus Muhammad Yusuf, Mkom
149
//Fungsi Utama
int main() {
int P = 50; //Mendeklarasikan variabel P dengan nilai 50
int L = 10; //Mendeklarasikan variabel L dengan nilai 10
int T = 2; //Mendeklarasikan variabel T dengan nilai 2
long HASIL;
return 0;
}
BAB-VIII-FOC-1
Ir. Masagus Muhammad Yusuf, Mkom
150
# include <iostream.h>
//Mendefinisikan fungsi Jumlah
int Jumlah(int X, int Y) {
return (X + Y);
}
//Fungsi Utama
int main() {
//Mendeklarasikan pointer ke fungsi Jumlah dengan parameter (int,int)
int (*P) (int, int);
return 0;
}
BAB-VIII-FOC-1
Ir. Masagus Muhammad Yusuf, Mkom
151
# include <iostream.h>
//Fungsi Utama
int main() {
return 0;
}
BAB-VIII-FOC-1
Ir. Masagus Muhammad Yusuf, Mkom
152
Revi
Mahasiswa STITEK
Jurusan Teknik INFORMATIKA
# include <iostream.h>
//Fungsi Utama
int main() {
return 0;
}
STITEK
1000
78.0050
Mahasiswa STITEK
BAB-VIII-FOC-1
Ir. Masagus Muhammad Yusuf, Mkom
153
8.6.c. Fungsi overload dengan jumlah dan tipe data parameter berbeda
# include <iostream.h>
//Fungsi Utama
int main() {
return 0;
}
1000
Mahasiswa STITEK
BAB-VIII-FOC-1
Ir. Masagus Muhammad Yusuf, Mkom
154
# include <iostream.h>
//Fungsi Utama
int main() {
if (*P)
cout<<”Huruf “<<Huruf<<” ditemukan pada kata ”<<P;
else
cout<<”Huruf “<<Huruf<<”tidak ditemukan pada”;
return 0;
}
BAB-VIII-FOC-1
Ir. Masagus Muhammad Yusuf, Mkom
155
# include <iostream.h>
//Fungsi Utama
int main() {
int Bil1, Bil2, HASIL;
return 0;
}
250
BAB-VIII-FOC-1
Ir. Masagus Muhammad Yusuf, Mkom
156
# include <iostream.h>
BAB-VIII-FOC-1
Ir. Masagus Muhammad Yusuf, Mkom
157
return 0;
}
Hasil = 20
Hasil = 40
Hasil = 60
# include <iostream.h>
return 0;
}
BAB-VIII-FOC-1
Ir. Masagus Muhammad Yusuf, Mkom
158
8.10. Rekursi
Rekursi adalah merupakan fungsi yang jika pada saat
pendefinisiannya memanggil dirinya sendiri untuk melakukan proses di
dalamnya. Sebuah contoh sederhana yang menunjukkan proses rekursi
adalah pada saat kita membuat program untuk menghitung nilai faktorial
dari sebuah nilai bilangan bulat, Bentuk format programnya dalam
bahasa C++ adalah sebagai mana berikut ini;
# include <iostream.h>
//Fungsi Utama
int main() {
int Bilangan, HASIL;
//Menampilkan hasil
cout<<Bilangan<<” ! = ”<<HASIL;
return 0;
}
int Faktorial(int X) {
hasil = 1;
for (int C = 1; C < X; C++) {
hasil = hasil *C;
}
return hasil;
}
BAB-VIII-FOC-1
Ir. Masagus Muhammad Yusuf, Mkom
159
BAB-VIII-FOC-1
Ir. Masagus Muhammad Yusuf, Mkom