Fungsi C++

51
FUNGSI

description

Membahas Fungsi pada C++

Transcript of Fungsi C++

Page 1: Fungsi C++

FUNGSI

Page 2: Fungsi C++

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.

Page 3: Fungsi C++

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.

Page 4: Fungsi C++

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.)

Page 5: Fungsi C++

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.

Page 6: Fungsi C++

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.

Page 7: Fungsi C++

Input dan Output Fungsi

Page 8: Fungsi C++

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.

Page 9: Fungsi C++

User-Defined Functions

• Bentuk umum C++ :

// include statements // function prototypes // main() function // function definitions

Page 10: Fungsi C++

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; }

Page 11: Fungsi C++

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

Page 12: Fungsi C++

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}

Page 13: Fungsi C++

Prototipe fungsi

• prototipe fungsi mendeklarasikan parameter input dan output dari fungsi.

• syntax: <type> <function name>(<type list>);

• Contoh: int absolute(int);

Page 14: Fungsi C++

Prototipe Fungsi

• prototipe fungsi dapat digunakan untuk memberitahu kompiler fungsi yang ada.

• prototipe fungsi menspesifikasi nama fungsi nama, return type dan tipe parameter.

Page 15: Fungsi C++

Contoh prototypes

double sqrt( double);

int add2nums( int, int);

int counter(void);

Page 16: Fungsi C++

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

Page 17: Fungsi C++

Definisi Fungsi

• Definisi fungsi dapat ditempatkan dimana saja dalam program setelah prototype

• Jika definisi fungsi sebelum main(), tidak perlu prototype.

Page 18: Fungsi C++

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; }

Page 19: Fungsi C++

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; }

}

Page 20: Fungsi C++

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;

}

Page 21: Fungsi C++

Macam- Macam Bentuk Fungsi

• Tanpa return value, tanpa parameter

• Tanpa return value, mempunyai parameter

• Dengan return value, tanpa parameter

• Dengan return value, dengan parameter

Page 22: Fungsi C++

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(); }

Page 23: Fungsi C++

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); }

Page 24: Fungsi C++

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.

Page 25: Fungsi C++

Contoh:

int input_sisi();

void main()

{ int sisi;

sisi = input_sisi();

}

int input_sisi()

{ int s; cout<<“ Masukkan sisi persegi = ”;

cin>>s;

return s;

}

Page 26: Fungsi C++

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); }

Page 27: Fungsi C++

Fungsi Berdasar Parameter

• Pass by Value

• Pass by Reference

Page 28: Fungsi C++

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.

Page 29: Fungsi C++

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.

Page 30: Fungsi C++

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;

}

Page 31: Fungsi C++

Pass by Value: Contoh 2

Page 32: Fungsi C++

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; }

Page 33: Fungsi C++

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.

Page 34: Fungsi C++

Deklarasi Variable Reference

• Untuk mendeklarasikan variable reference diawali dengan tanda ‘&’:

int &foo;

double &b;

char &c;

Page 35: Fungsi 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;

Page 36: Fungsi C++

Multiple Output

• Supaya fungsi mempunyai multiple output, maka harus menggunakan pass by reference.

• Parameter harus menggunakan & untuk melakukan passed by reference:

<type>& <variable>

Page 37: Fungsi C++

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

Page 38: Fungsi C++

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);

Page 39: Fungsi C++

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;

}

Page 40: Fungsi C++

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; }

Page 41: Fungsi C++

Contoh 2

Page 42: Fungsi C++

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; }

Page 43: Fungsi C++

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.

Page 44: Fungsi C++

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!

Page 45: Fungsi C++

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

Page 46: Fungsi C++

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

Page 47: Fungsi C++

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];

}

}

Page 48: Fungsi C++

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);}

Page 49: Fungsi C++

//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;}

Page 50: Fungsi C++

// 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;

}

Page 51: Fungsi C++

add_array (5, x, y, z );