fungsi c++
Post on 20-Jan-2016
54 Views
Preview:
DESCRIPTION
TRANSCRIPT
FUNGSI
Fungsi
• Masalah yang kompleks lebih mudah untuk dipecahkan dengan membagi menjadi bagian-bagian yang lebih kecil.
• Masing-masing dari bagian tersebut kemudian dipecah.
• Hal ini dinamakan pemrograman terstruktur.
• Dalam C++, bagian-bagian tersebut dinamakan fungsi.
• main() program menggunakan fungsi-fungsi tersebut untuk memecahkan masalah yang sesungguhnya.
Keuntungan Fungsi
• Fungsi memisahkan konsep (apa yang dikerjakan) dari implementasi (bagaimana mengerjakan).
• Fungsi membuat program lebih mudah dimengerti.
• Fungsi dapat dipanggil beberapa kali dalam program yang sama.
• Reuse kode.
Fungsi C++
• Fungsi dalam C++ : – internal (user-defined) dan external functions.
• External functions (contoh, abs, rand, sqrt, dsb.) dikelompokkan dalam library khusus
(contoh, iostream, stdlib, math, dsb.)
Penggunaan Fungsi –Fungsi Library Math
• Gunakan include math.h.
• Harus mengetahui bagaimana cara memanggil fungsi tersebut.
• Harus mengetahui apa yang dihasilkan oleh fungsi tersebut.
• Tidak perlu mengetahui bagaimana proses fungsi tersebut.
double sqrt( double )
• Ketika memanggil sqrt, diperlukan nilai bertipe double.
• Fungsi sqrt memberikan nilai bertipe double.
• Contoh: x = sqrt(y);
x = sqrt(100);
• Nilai yang diberikan pada fungsi dinamakan argumen. Contoh diatas Y adalah argumen.
Input dan Output Fungsi
Fungsi C++
• Dalam bahasa pemrograman lain dinamakan subroutine atau procedure.
• Mempunyai tipe sesuai dengan nilai yang dihasilkan.– Terkadang fungsi tidak perlu memberikan nilai
tertentu – fungsi ini bertipe void.
• Mempunyai sejumlah parameter.– Parameter adalah nilai yang diberikan pada fungsi
untuk diproses.• Masing-masing parameter mempunyai tipe.
– Suatu Fungsi bisa tidak mempunyai parameter.
User-Defined Functions
• Bentuk umum C++ :
// include statements // function prototypes // main() function // function definitions
Definisi Fungsi
Bentuk umum definisi fungsi :<type> <function name>(<parameter list>){
<local declarations> <sequence of statements>
}<type> : tipe dari nilai yang dihasilkan oleh fungsi. Disebut juga Return
Value<function name> : nama fungsi yang mempunyai aturan seperti nama
variabel<parameter list> : daftar variabel dan tipenya yang diperlukan oleh
fungsi. Contoh: Definisi fungsi yang menghitung nilai absolute :int absolute(int x){ if (x >= 0) return x;
else return -x; }
Pemanggilan Fungsi
• Bentuk umum : <function name>(<argument list>)
Contoh (dari fungsi absolute):
int distance = absolute(-5);– Hasil dari fungsi ini adalah nilai yang bertipe sesuai
dengan tipe fungsi
Arguments/Parameters
Hubungan one-to-one antara argument dalam pemanggilan fungsi dan parameter dalam definisi fungsi.
int argument1;double argument2; //Pemanggilan fungsiresult = functionname(argument1, argument2);
//Definisi fungsi int functionname(int parameter1,double parameter2){ //parameter1 = argument1 parameter2 = argument2}
Prototipe fungsi
• prototipe fungsi mendeklarasikan parameter input dan output dari fungsi.
• syntax: <type> <function name>(<type list>);
• Contoh: int absolute(int);
Prototipe Fungsi
• prototipe fungsi dapat digunakan untuk memberitahu kompiler fungsi yang ada.
• prototipe fungsi menspesifikasi nama fungsi nama, return type dan tipe parameter.
Contoh prototypes
double sqrt( double);
int add2nums( int, int);
int counter(void);
prototype
int counter(void);
void main(void) {cout << counter() << endl;cout << counter() << endl;cout << counter() << endl;
}
int counter(void) {int count = 0;count++;return(count);
}
Pemanggilan fungsi
Definisi fungsi
Prototype fungsi
Definisi Fungsi
• Definisi fungsi dapat ditempatkan dimana saja dalam program setelah prototype
• Jika definisi fungsi sebelum main(), tidak perlu prototype.
Absolute Value
#include <iostream>int absolute (int);// prototipe fungsi
void main(){ int num, answer; cout << "Enter an integer (0 to stop): "; cin >> num;
while (num!=0){ answer = absolute(num); cout << “the absolute value of " << num << " is: " << answer << endl; cin >> num; }}
int absolute(int x){ if (x >= 0) return x; else return -x; }
Absolute Value (alternative)• Tanpa prototype.
#include <iostream>int absolute(int x){ if (x >= 0) return x; else return -x; }
main(){ int num, answer;
cout << "Enter an integer (0 to stop): "; cin >> num;
while (num!=0){ answer = absolute(num); cout << "The absolute value of " <<
num << " is: " << answer << endl; cin >> num; }
}
Fungsi dengan 3 parameter
#include <iostream>
double total_second(int, double ,double );int main(){
cout << total_second(1,1.5, 2) << endl;return 0;
}
double total_second( int hour, double minutes, double second)
{return hour*3600 + minutes * 60 + second;
}
Macam- Macam Bentuk Fungsi
• Tanpa return value, tanpa parameter
• Tanpa return value, mempunyai parameter
• Dengan return value, tanpa parameter
• Dengan return value, dengan parameter
Tanpa return value, tanpa parameter• Bentuk ini digunakan jika fungsi tidak memberikan
hasil dan untuk melakukan tugasnya tidak memerlukan nilai dari fungsi yang memanggil.
• Bentuk umum :– void <nama fungsi>()
• Contoh:void tulis()
{
cout<<“ Teknik Elektro”<<endl;
cout<<“ Unesa Surabaya”;
}
main()
{ tulis(); }
Tanpa return value, mempunyai parameter
• Bentuk ini digunakan jika fungsi tidak memberikan hasil dan untuk melakukan tugasnya memerlukan nilai dari fungsi yang memanggil.
• Bentuk umum :– void <nama fungsi>(<parameter list>)
• Contoh:void Luas_Segi3(float alas, float tinggi)
{ cout<<“Luas Segitiga = ”;
cout<< 0.5*alas*tinggi;
}
main()
{ Luas_Segi3(10, 20); }
Dengan return value, tanpa parameter
• Bentuk ini digunakan jika fungsi memberikan hasil dan untuk melakukan tugasnya tidak memerlukan nilai dari fungsi yang memanggil.
• Bentuk umum :– <type> <nama fungsi>()
• Untuk mempunyai hasil maka didalam fungsi harus terdapat perintah :
return <expression>; • Nilai yang diberikan oleh perintah return harus
mempunyai tipe yang sama dengan tipe fungsi.
Contoh:
int input_sisi();
void main()
{ int sisi;
sisi = input_sisi();
}
int input_sisi()
{ int s; cout<<“ Masukkan sisi persegi = ”;
cin>>s;
return s;
}
Dengan return value, dengan parameter
• Bentuk ini digunakan jika fungsi memberikan hasil dan untuk melakukan tugasnya memerlukan nilai dari fungsi yang memanggil.
• Bentuk umum :– <type> <nama fungsi>(<parameter list>)
• Contoh:float Hitung_LuasSegi3(float alas, float tinggi)
{ return 0.5*alas*tinggi;
}
void main()
{ float L = Hitung_LuasSegi3(10,20); }
Fungsi Berdasar Parameter
• Pass by Value
• Pass by Reference
Pass by Value
• Penyalinan nilai dari argumen fungsi pemanggil ke parameter fungsi yang dipanggil
• argumen dari sebuah fungsi akan mempunyai nilai seperti semula setelah eksekusi fungsi.
Contoh 1
int sum(int num_1, int num_2){ num_1 = num_1 + num_2; return num_1; }
void main(){ int var_x, var_y, var_z;
var_x = 3; var_y = 5;
var_z = sum(var_x, var_y);cout << var_z << endl;
cout<< var_x << var_y;}
• Meskipun nilai parameter num_1 dirubah, argumen yang berhubungan yaitu var_x tidak berubah.
• Nilai dari argumen
disalin ke parameter, tetapi perubahan parameter tidak mempengaruhi nilai argumen.
• Semua informasi dalam variabel lokal akan hilang ketika fungsi berakhir.
Contoh 2
• // Tes pengaruh fungsi pada parameternyavoid Increment(int Number) { Number = Number + 1; cout << "The parameter Number is: " <<
Number << endl; }
void main() { int I= 10; Increment(I); //argument variable cout << "The variable I is: " <<I << endl; Increment(35); //argument constant cout << "The variable I is: " <<I<< endl; Increment(I+26); //argument expression cout << "The variable I is: "<<I<< endl;
}
Pass by Value: Contoh 2
Contoh 3
int feet(int); int remain_inches(int); void main() { int inches; cout << "Enter number of inches to
convert:"; cin >> inches; cout << "Result is " << feet(inches) << " feet " << remain_inches(inches) << " inches" << endl; }
int feet(int input_inches) { return input_inches / 12; }
int remain_inches(int input_inches) { return input_inches % 12; }
Pass-by-reference
• Fungsi juga dapat didefinisikan dengan melewatkan sebuah reference ke variable.– Hal ini dinamakan call-by-reference, fungsi dapat merubah
variabel pemanggil secara langsung.
• Variabel reference adalah nama alternatif nama untuk variable.
• Variabel reference harus diinisialisasi ke variabel lain.
Deklarasi Variable Reference
• Untuk mendeklarasikan variable reference diawali dengan tanda ‘&’:
int &foo;
double &b;
char &c;
Contoh Variable Reference
int count;
int &b = count;
// b adalah variabel yang sama seperti
// count
count = 1;
cout << “b is “ << b << endl;
b++;
cout << “count is “ << count << endl;
Multiple Output
• Supaya fungsi mempunyai multiple output, maka harus menggunakan pass by reference.
• Parameter harus menggunakan & untuk melakukan passed by reference:
<type>& <variable>
Parameter Reference
• Deklarasi parameter reference:
void add10( int &x) {
x = x+10;
}
…
add10(counter);
• Alamat (reference) dari variable dilewatkan ke function, menggantikan nilainya.
• Jika fungsi merubah nilai parameter, perubahan akan direfeksikan dalam argumen yang berhubungan, karena lokasi memorinya sama.
parameter reference
Contoh
void Increment(int& Number); void SumAve (double, double,double&, double&);
• Argumen yang berhubungan harus sebuah variable.
Increment(Inc); SumAve (2.5, y+3, sum, mean);
Contoh 1
void Increment(int& Number){ Number = Number + 1; cout << "The parameter Number: "
<< Number << endl; } void main(){ int Inc = 10; Increment(Inc);
cout << "The variable Inc is:” <<Inc<<endl;
}
Contoh 2
void SumAve (double, double, double&, double&); int main ( ) { double x, y, sum, mean; cout << "Enter two numbers: "; cin >> x >> y; SumAve (x, y, sum, mean); cout << "The sum is " << sum << endl; cout << "The average is " << mean << endl;
cout<<x; return 0;} void SumAve(double no1, double no2, double& Sum,
double& average) { Sum = no1 + no2; no1=15; average = Sum / 2; }
Contoh 2
Contoh 3
void swap (int&, int&); void main ( ) { int first, second, third; // input integers cin >> first >> second >> third;
if (first > second) swap (first, second); if (second > third) swap (second, third); if (first > second) swap (first, second); cout << "The sorted integers are " << first
<<" , "<<second<<" , "<<third << endl; }
void swap (int& num_1, int& num_2) { int temp; temp = num_1; num_1 = num_2; num_2 = temp; }
Arrays sebagai Parameter
Array selalu dikirimkan by reference.
Tanda “[ ]” dalam parameter menunjukkan bahwa variabel tersebut adalah array.
Jika fungsi tidak harus merubah setiap elemen array maka perlu menggunakan const dalam parameter array tersebut.
Nilai Terkecil
• Permasalahan– Cari nilai terkecil dalam sejumlah nilai integer
• Input– Sejumlah nilai integer dan sebuah nilai yang
menunjukkan banyaknya integer
• Output– Nilai terkecil
• Note– Nilai tidak berubah setelah nilai paling kecil
ditemukan!
Desain
• Realizations– Ketika mencari nilai dengan membandingkan, perlu
cara untuk mengingat kandidat paling baik
• Design– Cari nilai terkecil dalam array
• Gunakan loop untuk masing-masing elemen• Jika suatu elemen lebih kecil dari kandidat
sebelumnya ganti kandidat sebelumnya.
– Setelah semua selesai diperiksa akan ditemukan nilai paling kecil
int ListMinimum(int Ar[], int jml) {int kecil = Ar[0]; for (int i = 1; i < jml; ++i) {
if (Ar[i] < kecil ) kecil = Ar[i];
}return kecil ;
}
void main(){int Number[6] ={3, 88, -7, 9, 1, 24};
cout << ListMinimum(Number, 6) << endl;
int List[3];List[0] = 9; List[1] = 12; List[2] = 45;cout << ListMinimum(List, 3) << endl;
}
Contoh
Fungsi-fungsi lain
void DisplayList(const int Ar[], int asize) {
for (int index = 0; index < asize; ++index) {
cout << Ar[index] << " ";
}
cout << endl;
}
void GetList(int Ar[], int size){
for (int index = 0; index < Size; index++) {
cin >> Ar[index];
}
}
void DisplayList(const int Ar[],int asize)
{ for (int i = 0; i < asize; ++i)
{cout << Ar[i] << " “; }
}
void GetList(int Ar[], int size){
for (int i = 0; i < size; i++) {
cin >> Ar[i];
}
}void main(){
int Number[6];GetList(Number, 6);
DisplayList(Number, 6);}
//passing array elements to a function
void print_square (int);const int ARRAY_SIZE = 5;int main(){
int index;int base[ARRAY_SIZE] = {3, 7, 2, 4, 5};
for(index = 0; index < ARRAY_SIZE; index++)print_square(base[index]);
cout << endl;return 0;
} void print_square(int number) {
cout << " " << number * number;}
// Add a[i] and b[i] and store the sum in c[i]
void add_array(int size, float a[], float b[], float c[] ) {
int i;for (i=0; i < size; i++) c[i] = a[i] + b[i];} void main() { const int size = 5; float x[size] = {1.8, 2.2, 3.4, 5.1, 6.7}, y[size] = {2.0, 4.5, 1.3, 4.0, 5.5}, z[size]; int ind;
add_array(size , x, y, z); for (i = 0; i < size; i++) cout << "z[" << i << "] is " << z[i] << endl;
}
add_array (5, x, y, z );
top related