Anda di halaman 1dari 28

BAB 6

FUNGSI

Program 6.1

// * ----------------------------------------------------------------------------*
// * bukucpp.cpp *
// * *
// * contoh pembuatan dan pemanggilan fungsi *
// * ----------------------------------------------------------------------------*
# include <iostream.h>
# include <iomanip.h>
# include <conio.h>
void garis (); // prototype fungsi garis ()
void main()
{
clrscr (); // hapus layer
garis (); // panggil fungsi garis ()
cout << setiosflags (ios :: left); // Atur rata-kiri
cout << setw (26) << " JUDUL BUKU "
<< " PENGARANG " << endl;
garis (); // panggil kembali fungsi garis ()
cout << setw (26) << " Mastering Borland C++ "
<< " Tom Swan " << endl;
cout << setw (26) << " Turbo C++ By Example "
<< " Greg Perry & M. Johnson " << endl;
cout << setw (26) << " Converting C to Turbo C++ "
<< " Len Dorfman " <<endl;
garis () ; // panggil kembali fungsi garis ()
getche();
}

void garis ()
{
int i;
for (i = 0; i < 49; i++)
cout << '-';
cout << endl;
getche();
}
Hasil program

Program 6.2
// * ----------------------------------------------------------------------------*
// * fkuadrat.cpp *
// * *
// * contoh pembuatan fungsi dengan argumen bertipe *
// * long dan nilai balik juga bertipe long *
// * --------------------------------------------------------------------------*
#include <iostream.h>
#include<iomanip.h>
#include<conio.h>

long kuadrat (long l); // prototipe fungsi


void main ()
{
clrscr (); // hapus layar
for (long bil = 200; bil < 2000; bil+=200)
cout << setw (8) <<bil
<< setw (8) << kuadrat (bil) <<endl;
getche();
}

// Definisi fungsi
long kuadrat (long l)
{
return (l * l);

}
Hasil Program :

Program 6.3
// * --------------------------------------------------------------------- *
// * fmaks.cpp *
// * *
// * contoh fungsi untuk memperoleh nilai terbesar *
// * diantara keduanya. *
// * --------------------------------------------------------------------- *
# include<iostream.h>
# include<conio.h>
double maks (double x, double y); // prototipe
void main ()
{
clrscr (); //hapus layar
cout << maks (65789, 123) << endl;
cout << maks (123, 65789) << endl;
getche();
}
// Definisi fungsi
double maks (double x, double y)
{
if (x > y)
return (x);
else
return (y);
}
Hasil Program:

Program 6.5
// * ------------------------------------------------------------------ *
// * varlokal.cpp *
// * *
// * contoh untuk memperlihatkan efek variabel *
// * otomatis (lokal). *
// * ------------------------------------------------------------------ *
#include<iostream.h>
#include<conio.h>
void alpha (); // prototipe fungsi
void main ()
{
int x = 22; // variabel lokal pada main ()
double y = 2.22; // Begitu juga variabel ini
clrscr () ; // Hapus layar
cout << " pada main () : x = " << x
<< " y = " << y<< endl;
alpha (); // Panggil fungsi alpha
cout << " Pada main () : x = " << x
<< " y = " << y << endl;
getche();
}
// Definisi fungsi alpha ()
void alpha ()
{
int x = 20; // Variabel lokal pada alpha ()
double y = 3.14; // Begitu juga variabel ini
cout << " Pada alpha () : x = " << x
<< " y = " << y << endl;
}

Hasil Program :

Program 6.6
// * --------------------------------------------------------- *
// * glob1.cpp *
// * *
// * Contoh variabel eksternal. *
// * --------------------------------------------------------- *
#include<iostream.h>
#include<conio.h>
int oblada = 550; // Variabel eksternal
void tambah () ; // Prototipe fungsi
void main ()
{
clrscr(); // Hapus layar
cout << oblada << endl;
tambah ();
cout << oblada << endl;
tambah ();
cout << oblada << endl;
getche();
}
// Definisi fungsi
void tambah ()
{
oblada ++; // Variabel eksternal dinaikkan
}
Hasil Program :

Program 6.7
// * ----------------------------------------------------- *
// * glob2.cpp *
// * *
// * Contoh pmakaian kata-kunci extern *
// * ----------------------------------------------------- *
#include<iostream.h>
#include<conio.h>
int oblada = 550 ; // Variabel eksternal
void tambah () ; // prototipe fungsi
void main ()
{
clrscr () ; // Hapus layar
cout << oblada << endl ;
tambah () ;
cout << oblada << endl ;
tambah () ;
cout << oblada << endl ;
getche();
}
// Definisi fungsi
void tambah ()
{
extern oblada ; // INILAH TAMBAHANNYA
oblada++ ; // Variabel eksternal dinaikkan
}
Hasil Program :

Program 6.10
// * ------------------------------------------------------------------------ *
// * glob4.cpp *
// * *
// * contoh untuk menunjukkan kalau variabel lokal *
// * dan variabel lokal bernama sama *
// * -------------------------------------------------------------------------*
#include<iostream.h>
#include<conio.h>
int fernando = 55; // variabel eksternal
void bravo () ; // prototipe fungsi
void main ()
{
clrscr () ; // Hapus layar
cout << " main () : fernando = " << fernando << endl ;
bravo () ;
cout << " main () : fernando = " << fernando << endl ;
getche();
}
void bravo ()
{
int fernando ; // variabel lokal
fernando = 77 ;
cout << "bravo () : fernando = " << fernando << endl ;
getche();
}
Hasil Program:

Program 6.11
// * --------------------------------------------------------------- *
// * statis.cpp *
// * *
// * contoh untuk menunjukkan efek *
// * variabel statis *
// * --------------------------------------------------------------- *
#include<iostream.h>
#include<conio.h>
void saya_ingat () ; // prototipe fungsi
void main ()
{
int mamamia = 50 ;
clrscr (); // Hapus layar
saya_ingat () ;
saya_ingat () ;
saya_ingat () ;
cout << " main () : mamamia = << mamamia = "<< mamamia << endl ;
getche();
}
// Pada fungsi berikut
// mamamia didefinisikan sebagai VARIABEL STATIS
void saya_ingat ()
{
static int mamamia = 77 ; // variabel statis
mamamia++ ; // Naikkan sebesar 1
cout << "saya_ingat () : mamamia = " << mamamia << endl ;
}
Hasil Program:

Program 6.12
// * ---------------------------------------------------- *
// * nonstat.cpp *
// * *
// * contoh untuk menunjukkan efek *
// * kalau variabel di dalam fungsi *
// * tidak dibuat sebagai statis *
// * --------------------------------------------------- *
#include<iostream.h>
#include<conio.h>
void saya_ingat () ; // prototipe fungsi
void main ()
{
int mamamia = 50 ;
clrscr () ; // Hapus layar
saya_ingat () ;
saya_ingat () ;
saya_ingat () ;
cout << " main () : mamamia = "<< mamamia << endl ;
getche();
}
// Pada fungsi berikut
// mamamia didefinisikan TIDAK sebagai VARIABEL STATIS
void saya_ingat ()
{
int mamamia = 77 ; // DIUBAH TIDAK MENJADI STATIS
mamamia++ ;
cout << " saya_ingat () : mamamia = " << mamamia << endl ;
}

Program 6.13
// * ------------------------------------------------------------- *
// * lingkup1.cpp *
// * *
// * Contoh pemakaian operator resolusi lingkup (: :) *
// * ------------------------------------------------------------- *
#include<iostream.h>
#include<conio.h>
int x = 50 ; // Variabel eksternal
void main ()
{
double x ; // Definisi variabel lokal
clrscr () ; // Hapus layar
x = 5.678901234 ; // Variabel lokal yang diberi nilai
cout << x << " " << :: x << endl ;
:: x = 77 ; // Variabel eksternal yang diberi nilai
cout << x << " " << :: x << endl ;
getche();
}

Hasil Program :
Program 6.14
// * ------------------------------------------------------------ *
// * lingkup2.cpp *
// * *
// * Operator resolusi lingkup dipakai *
// * untuk mengakses variabel yang didefinisikan *
// * di luar blok. *
// * ------------------------------------------------------------- *
#include<iostream.h>
#include<conio.h>
void main ()
{
double x ; // Definisi variabel lokal
clrscr () ; // Hapus layar
x = 5.678901234 ; // Variabel lokal yang diberi nilai
cout << x << " " << x << endl ;
{ // awal blok baru
char x = 'A' ; // Lokal terhadap blok ini
cout << x << " " << x << endl ;
}
getche();
}

Hasil Program :
Program 6.15

// * ----------------------------------------------------------------- *
// * fbawaan1.cpp *
// * *
// * contoh fungsi untuk menggambarkan nilai bawaan *
// * dalam argumen fungsi. *
// * -- versi 1 - *
// * ----------------------------------------------------------------- *
#include<iostream.h>
#include<conio.h>
void tulis_cplus (int jum) ; // prototipe fungsi
void main ()
{
clrscr () ; // Hapus layar
tulis_cplus (1) ; // untuk menuliskan sebuah tulisan : C++
}
void tulis_cplus (int jum)
{
for (int i = 0 ; i < jum ; i++)
cout << " C++ " << endl ;
cout << " Selesai " << endl;
getche();
}

Hasil program :
PROGRAM 6.16

// * ---------------------------------------------------------------- *
// * fbawaan2.cpp *
// * *
// * Contoh fungsi untuk menggambarkan nilai bawaan *
// * dalam argumen fungsi. *
// * -- versi 2 -- *** CONTOH YANG SALAH *** *
// * ---------------------------------------------------------------- *
#include<iostream.h>
#include<conio.h>
void tulis_cplus (int jum) ; // Prototipe fungsi
void main ()
{
clrscr () ; // Hapus layar
tulis_cplus (3) ; // PENYEBAB KESALAHAN
getche();

}
void tulis_cplus (int jum)
{
for (int i = 0 ; i <jum ; i++)
cout << " C++ " << endl ;
cout << "Selesa "<< endl ;
getche();
}

HASIL PROGRAM :
PROGRAM 6.17
// * ---------------------------------------------------------------- *
// * fbawaan3.cpp *
// * *
// * Contoh fungsi untuk menggambarkan nilai bawaan *
// * dalam argumen fungsi. *
// * -- versi 3 - *
// * ---------------------------------------------------------------- *
#include<iostream.h>
#include<conio.h>
void tulis_cplus (int jum = 1 ) ; // prototipe fungsi
// DAN MENYETEL NILAI BAWAAN
void main ()
{
clrscr () ; // Hapus layar
tulis_cplus () ; // ARGUMEN TIDAK DISEBUTKAN
// BOLEH SAJA
getche();
}
void tulis_cplus (int jum)
{
for (int i = 0 ; i < jum ; i++)
cout << " C++ " << endl ;
cout << "Selesai " << endl ;
}

HASIL PROGRAM :
PROGRAM 6.18
// * --------------------------------------------------------------------- *
// * fbawaan.cpp *
// * *
// * Contoh mengatur nilai bawaan terhadap argumen *
// * pada fungsi yang memiliki dua buah argumen *
// * --------------------------------------------------------------------- *
# include<iostream.h>
#include<conio.h>
// prototipe fungsi dan penyetelan nilai bawaan
// pada argumen kedua
void ulang (char karakter = '-' , int jum = 10 ) ;
void main ()
{
ulang ( '*' , 5) ; // Tampilkan * sebanyak 5 kali
ulang ( ' + ') ; // Tampilkan + sebanyak 10 kali
ulang () ; // Tampilkan - sebanyak 10 kali
}
// Definisi fungsi
getche();
void ulang (char karakter , int jum )
{
for (int i = 0 ; i < jum ; i++)
cout << karakter ;
cout << endl ; // pindah baris
getche();
}

HASIL PROGRAM :
PROGRAM 6.19 :
// * ------------------------------------------------------------ *
// * ref1.cpp *
// * *
// * Contoh referensi *
// * ------------------------------------------------------------ *
#include <conio.h>
#include <iostream.h>
void main ()
{
int i = 55 ;
int & r = i ; // referensi
clrscr () ; // Hapus layar
i =10 ;
cout << " i = " << i << endl ;
cout << " r = " << r << endl ;
r = 55 ;
cout << " i = " << i << endl ;
cout << " i = " << i << endl ;
getche ();
}

HASIL PROGRAM :
PROGRAM 6.20
// * ------------------------------------------------------------ *
// * ref2.cpp *
// * *
// * Contoh operasi penaikan isi variabel *
// * melalui referensi *
// * ------------------------------------------------------------ *
#include <iostream.h>
#include <conio.h>
void main ()
{
int i = 55 ;
int & r = i ; // referensi
clrscr () ; // Hapus layer
cout << "i=" << i << "r=" << r << endl ;
i++ ;
cout << "i=" << i << "r=" << r << endl ;
r++ ;
cout << "i=" << i << "r=" << r << endl ;
getche ();
}

HASIL PROGRAM :
PROGRAM 6.21
// * ------------------------------------------------------------ *
// * ref3.cpp *
// * *
// * Contoh untuk memperlihatkan alamat variabel *
// * alamat referensi *
// * ------------------------------------------------------------ *
#include <iostream.h>
#include <conio.h>
void main ()
{
int i = 55 ;
int & r = i ; // referensi
clrscr () ; // Hapus layar
cout << " Alamat : i = " << &i
<< " r = " << & r << endl ;
getche ();
}

HASIL PROGRAM :

PROGRAM 6.22 :
// * -------------------------------------------------------------------- *
// * ref4.cpp *
// * *
// * Contoh untuk memperlihatkan bahwa suatu referensi *
// * tidak bisa diubah untuk menunjuk *
// * ke variabel lain. *
// * -------------------------------------------------------------------- *
#include <iostream.h>
#include <conio.h>
void main ()
{
int i ;
int &r = i ; // r referensi dari i
clrscr (); // Hapus layar
r = 77 ;
cout << " Nilai : r = " << r << " , i = " << i << endl ;
cout << " Alamat : r = " << &r << " , i = " << &i << endl ;
int j = 88 ; // Menciptakan variabel j
r=j; // ???
cout << " Nilai : r = " << r << " , i = " <<
" , j = " << j << endl ;
cout << " Alamat : r = " << &r << " , i = " << &i
<< " , j = " << &j << endl ;
getche ();
}

HASIL PROGRAM :

PROGRAM 6.23 :
// * --------------------------------------------------------------------- *
// * ref5.cpp *
// * *
// * Contoh untuk memperlihatkan efek pengubahan *
// * nilai argumen fungsi dari dalam fungsi. *
// * --------------------------------------------------------------------- *
#include <iostream.h>
#include <conio.h>
void tukar (int a, int b) ; // Prototipe fungsi
void main ()
{
int a , b ;
a = 55 ;
b = 77 ;
cout << " main () : a = " << a << endl ;
cout << " main () : b = " << b << endl ;
tukar (a, b) ;
cout << " main () : a = " << a << endl ;
cout << " main () : b = " << b << endl ;
}
// Definisi fungsi untuk menukarkan nilai
void tukar (int a, int b)
{
int tmp ;
tmp= a ;
a=b;
b = tmp ;
cout << " tukar () : a = " << a << endl ;
cout << " tukar () : b = " << b << endl ;
getche ();
}

HASIL PROGRAM :
PROGRAM 6.24
// * --------------------------------------------------------------- *
// * ref6.cpp *
// * *
// * Contoh untuk memperlihatkan efek pengubahan *
// * nilai argumen fungsi dari dalam fungsi. *
// * *
// * versi 2 --- Memakai referensi *
// * --------------------------------------------------------------- *
#include <iostream.h>
#include <conio.h>
void tukar (int &a, int &b) ; // < -- PERUBAHAN DI SINI
// dan pada DEFINISI FUNGSI
void main ()
{
int a, b ;
a = 55 ;
b = 77 ;
cout << " main () : a = " << a << endl ;
cout << " main () : b = " << b << endl ;
tukar (a, b) ;
cout << " main () : a = " << a << endl ;
cout << " main () : b = " << b << endl ;
}
void tukar (int&a, int&b) // < -- BAGIAN INI JUGA DIUBAH
{
int tmp ;
tmp = a ;
a=b;
b = tmp ;
cout << " main () : a = " << a << endl ;
cout << " main () : b = " << b << endl ;
getche ();
}

HASIL :
PROGRAM 6.25
// * ----------------------------------------------------------------- *
// * inline.cpp *
// * *
// * contoh pembuatan fungsi inline *
// * ----------------------------------------------------------------- *
#include <iostream.h>
#include <conio.h>
// Defenisi fungsi sebagai inline
inline int jumlah (int x, int y)
{
return (x + y) ;
}
void main ()
{
clrscr () ;
for (int i = 1 ; i <100 ; i++)
cout << i << " . " << jumlah (i, 2 * i ) << endl ;
getche ();
}

HASIL :
PROGRAM 6.26

// * overload.cpp *
// * *
// * contoh overloading terhadap fungsi *
// * ----------------------------------------------------------------- *
#include <iostream.h>
#include <conio.h>
// prototipe fungsi
int kuadrat (int i) ;
long kuadrat (long l) ;
double kuadrat (double d) ;
void main ()
{
cout << kuadrat (2) << endl ;
cout << kuadrat (66666) << endl ;
cout << kuadrat (1.2) << endl ;
getche ();
}
// Definisi fungsi
int kuadrat (int i)
{
return (i * i) ;
}
long kuadrat (long l)
{
return (l * l) ;
}
double kuadrat (double d)
{
return (d *d) ;

}
HASIL :

PROGRAM 6.27 :
// * ----------------------------------------------------------------------- *
// * tampil.cpp *
// * *
// * contoh overloading terhadap fungsi *
// * dengan jumlah argumen berlainan. *
// * --------------------------------------------------------------------- *
#include <iostream.h>
#include <conio.h>
void tampil (int i) ;
void tampil (int i, char * str) ;
void main ()
{
clrscr () ; // Hapus layar
tampil (5) ;
tampil (7, " bintang " ) ;
}
void tampil (int i)
{
cout << i << endl ;
}
void tampil (int i, char * str)
{
cout << i << ' ' << str << endl ;
getche();
}
HASIL :

PROGRAM 6.28
// * ----------------------------------------------------------------- *
// * pangkat.cpp *
// * *
// * Operasi pangkat secara rekursi *
// * ----------------------------------------------------------------- *
#include <iostream.h>
#include <conio.h>
long int pangkat (int x, int n) ;
void main ()
{
int x, y ;
clrscr () ; // Hapus layar
cout << "MENGHITUNG x ^ y " << endl ;
cout << "x=" ;
cin >> x ;
cout << "y=" ;
cin >> y ;
cout << x << "^" << y << "=" << pangkat (x,y) << endl ;
getche();
}
long int pangkat (int x, int n) ;
{
if ( n == 1)
return (x) ;
else
return (x * pangkat (x, n-1)) ;
}
PROGRAM 6.29
// * ----------------------------------------------------------- *
// * variasi.cpp *
// * *
// * Contoh untuk menunjukkan cara membuat fungsi *
// * dengan jumlah argumen bervariasi. *
// * ------------------------------------------------------------*
#include <iostream.h>
#include <conio.h>
#include <stdarg.h>
int minim (int arg) ; // Prototipe fungsi
// Tanda … menyatakan bahwa jumlah argumen
// Fungsi di atas bervariasi
void main ()
{
clrscr () ; // Hapus layar
cout << minim (5,1,6,8,2,3) << endl ;
cout << minim (2,60,30) << endl ;
getche();
}
int minim (int arg)

{
int tmp ;
int bil ;
va_list daftar ; // daftar untuk menunjuk ke daftar argumen
va_start (daftar, arg) ; // variabel pertama sebagai awalan
for (int pencacah = 0 ; pencacah < arg ; pencacah++)
{
bil = va_arg (daftar, int) ; // Peroleh data int berikutnya
if (pencacah == 0) ; // Isi untuk yang pertama kali
tmp = bil ;
else
if (bil < tmp) // Bandingkan isi bil dan maksimum
tmp = bil ;
}
va_end (daftar) ; // Bebaskan kembali daftar
return (tmp) ; // Nilai balik berupa : tmp
}
PROGRAM 6.30
// * --------------------------------------------------------------- *
// * jarak.cpp *
// * *
// * Contoh pemakaian fungsi sin() dan cos() *
// * untuk menghitung jarak jatuhnya peluru *
// * --------------------------------------------------------------- *
#include <iostream.h>
#include <conio.h>
#include <math.h> // Untuk fungsi matematika
void main ()
{
float sudut, // Sudut penembakan
kecepatan, // Kecepatan penembakan
rad, // Sudut dalam radian
jarak ;
const float PI = 3.141593 ;
const float GRAVITASI = 9.8 ;
clrscr () ; // hapus layar
cout << " MENGHITUNG JARAK JATUHNYA PELURU " << endl ;
cout << " Sudut penembakan (derajat) : " ;
cin >> sudut ;
cout << " Kecepatan tembak (m / detik ) : " ;
cin >> kecepatan ;
// Hitung jarak jatuhnya peluru dari lokasi asal
rad = sudut * PI / 180 ;
jarak = 2 * pow (kecepatan, 2) * sin (rad) *
cos (rad) / GRAVITASI ;
// Tampilkan hasil
cout << " Peluru jatuh pada jarak (m) : "
<< jarak << endl ;
}

HASIL :
PROGRAM 6.31
// * ------------------------------------------------------------- *
// * rand1.cpp *
// * *
// * Contoh untuk menunjukkan pembangkitan *
// * bilangan acak yang menetap *
// * ------------------------------------------------------------- *
#include <iostream.h>
#include <conio.h>
#include <stdlib.h> // Untuk random () & srand ()
void main ()
{
clrscr () ; // Hapus layar
srand (3) ; // Beri nilai tetap kepada
// pembangkit bilangan acak
for (int i=0; i<4 ; i++)
cout << random (100) << endl ;
getche();
}

HASIL

Anda mungkin juga menyukai