44
Fungsi

Fungsi

Embed Size (px)

DESCRIPTION

Fungsi. Fungsi. Setiap fungsi yg akan digunakan di dalam progam harus sudah didefinisikan dahulu. Umumnya diletakkan diatas main(), tetapi dapat pula di tuliskan di bawah main() asalkan didefinisikan prototype fungsi di atas main() - PowerPoint PPT Presentation

Citation preview

Page 1: Fungsi

Fungsi

Page 2: Fungsi

Setiap fungsi yg akan digunakan di dalam progam harus sudah didefinisikan dahulu. Umumnya diletakkan diatas main(), tetapi dapat pula di tuliskan di bawah main() asalkan didefinisikan prototype fungsi di atas main()

Pernyataan Return di dalam fungsi digunakan untuk memberikan nilai balik fungsi ke program utamanya

Tidak semua fungsi harus mempunyai nilai balik, seperti fungsi untuk menampilkan suatu keterangan saja contoh ->void judul() {…………}

Fungsi

Page 3: Fungsi

#include <iostream.h>#include <math.h>

int jml2bil( int x1, int x2 ) // fungsi standard{ int jml; jml = x1 + x2 ; return(jml);}

int main(void){ int y,a,b;

cout << "Masukkan 2 bilangan \n"; cin >> a >> b;

y = jml2bil(a,b);

cout << "a is " << a << endl; cout << "b is " << b << endl; cout << "y is " << y << endl; return(0);}

Page 4: Fungsi

#include <iostream.h>#include <math.h>

int jml2bil( int x1, int x2 ) ;// fungsi prototype

int main(void){ int y,a,b; cout << "Masukkan 2 bilangan \n"; cin >> a >> b;

y = jml2bil(a,b);

cout << "a is " << a << endl; cout << "b is " << b << endl; cout << "y is " << y << endl; return(0);}

int jml2bil( int x1, int x2 ){ int jml; jml = x1 + x2 ; return(jml);}

Page 5: Fungsi

Lingkup Variabel ;

Variabel otomatis Variabel external Variabel statis

Page 6: Fungsi

Variabel otomatis

Variabel yg didefinisikan dalam suatu fungsi berlaku sebagai variabel lokal bagi fungsi dengan sifat: Var hanya akan diciptakan pada saat fungsi

dipanggil Saat fungsi berakhir, var otomatis akan hilang Tidak perlu ada inisialisasi pada var Hanya dapat diakses dalam fungsi saja

Page 7: Fungsi

#include <iostream.h>#include <math.h>

int jml2bil( int x1, int x2 ) // fungsi standard{ // var x1 dan x2 adlh var otomatis int jml; jml = x1 + x2 ; return(jml);}

int main(void){ int y,a,b;

cout << "Masukkan 2 bilangan \n"; cin >> a >> b;

y = jml2bil(a,b);

cout << "a is " << a << endl; cout << "b is " << b << endl; cout << "y is " << y << endl; return(0);}

Page 8: Fungsi

Variabel External

Adalah suatu variabel yg didefinisikan di luar fungsi, yg dikenal sebagai var global.

Catatan Usahakan menggunakan seminim mungkin

suatu var global Var global mempunyai durasi selama program

dieksekusi atau, memori yg digunakan untuk var ini dipertahankan selama program dieksekusi

Page 9: Fungsi

#include <iostream.h>#include <math.h>Int A=5; // var eksternalint jml2bil( int x1, int x2 ) // fungsi standard{ int jml; jml = x1 + x2 + A; return(jml);}

int main(void){ int y,a,b;

cout << "Masukkan 2 bilangan \n"; cin >> a >> b;

y = jml2bil(a,b);

cout << "a is " << a << endl; cout << "b is " << b << endl; cout << "y is " << y << endl; return(0);}

Page 10: Fungsi

Variabel statis

Var ini dapat berupa var lokal atau global dengan sifat : Jika berupa var lokal maka var tetap hanya dpt

diakses pd fungsi yg mendefinisikan nya Var tidak hilang saat berakhir Inisialisasi hanya dilakukan sekali Jika berupa var global dapat diakses dari

semua file yg didefinisikan (hati hati dalam menggunakannya)

Caranya dengan menambah kata static type-data var-name ;static int x ;

Page 11: Fungsi

#include <iostream.h>int fncstatis(int);

void main( ){int in,out; in = 1 ;while(in!=0){

cout << "Enter input value:";cin>>in;out=fncstatis(in);cout<<"Result:"<< out;

}cout<<" End of Program"<< out;}

int fncstatis(int x){static int a=0;static int b=0;a++;b=b+x;return(b/a);}

Page 12: Fungsi

Operator resolusi lingkup(Scope resolution operator ::)

Notasi :: digunakan sebagai operator resolusi lingkup, digunakan untuk mengakses suatu var yg didefinisikan diluar fungsi

x = 50int main(){ float x;

x = 7,5cout << “x “ << x <<“ “<< ::x;return 0; }

Page 13: Fungsi

Function overloading

Kemampuan suatu fungsi untuk dapat menerima bermacam-macam type data dan bermacam macam nilai balikcontoh:int kuadrat(int i) {return(i * i);}long kuadrat(long k) {return(k*k);}double kuadrat(double d) {return(d*d);}

Page 14: Fungsi

#include <iostream.h>

int kuadrat(int i) {return(i * i);}long kuadrat(long k) {return(k*k);}double kuadrat(double d) {return(d*d);}

int main(){

cout << kuadrat(5) << endl;cout << kuadrat(37) << endl;cout << kuadrat(2.5) << endl;return 0;

}

Page 15: Fungsi

Rekursi

Suatu kemampuan dari fungsi untuk dapat memanggil dirinya sendiricontoh:long int pangkat(int x, int n) {

if (n == 1) return(x);else return(x*pangkat(x, n-1)); }

int main() {int p =5; int q = 3; long int r;r = pangkat(p,q);cout << r<<endl; return 0;}

Page 16: Fungsi

array

Array merupakan koleksi data dimana setiap elemen menggunakan nama dan tipe yang sama serta setiap elemen diakses dengan membedakan indeks array-nya. Berikut adalah contoh variable bernama C yang mempunyai lokasi memori yang semuanya bertipe int.C[0] = -45C[1] =6C[2] =0C[3] =72C[4] =1543C[5] =43C[6] =4didefinisikan sebagai int c[7]atau int c[7] = {-45, 0, 6, 72, 1543, 43, 4}atau int c[] = {-45, 0, 6, 72, 1543, 43, 4}untuk berdimensi 2 -> int c[3][4]

Page 17: Fungsi

C++ Reference, Pointer dan String

Page 18: Fungsi

Reference

Referensi digunakan untuk memberi nama alias pada suatu var

int &ref = nama-var Contoh :

int main(){ int i;int &r = i;i=10;cout<< i << r <<endl;

r =50;cout << i << r << end; return 0;}

Page 19: Fungsi

Pointer

pointer adalah sebuah var yg menyimpan alamat dr suatu var.

...

...

MEMORY

012345

813458134681347

Address

int foo;int *x; (content)

foo = 123;x = &foo;

foo

x

123

3

Page 20: Fungsi

&foo

Pd C++ kita dapat mengetahui alamat dr suatu variable dengan operator “&” (reference).

...

...

MEMORY

012345

Address

&foo artinya “alamat dr foo”

foo

int foo;

foo = 123;x = &foo;

123

Page 21: Fungsi

Memberi harga pada var dereferenced pointer

Sebuah pointer harus mempunyai harga sebelum kita melakukan dereference padanya.

int *x;*x=3;

int foo;int *x;x = &foo;*x=3;

ERROR!!!

x tidak menunjuk pada sesuatu

!!! Benar x menunjuk

pd foo

Page 22: Fungsi

Pointer ke suatu

int *x;int **y;

double *z;

x Sebuah int

y

z sebuah double

Sebuah int Sebuah int

Page 23: Fungsi

Pointer dan Arrays

array adalah nama dr const pointer. Notasi [] :

int *x;int a[10];x = &a[2];for (int i=0;i<3;i++)

x[i]++;

x adlh alamat a[2] ”

x[i] sama spt a[i+2]

Page 24: Fungsi

Pointer arithmetic

operasi math integer dpt digunakan pd pointers.

int a[5];

a[0] a[1] a[2] a[3] a[4]

int *ptr = a;

*ptr

*(ptr+2)*(ptr+4)

Page 25: Fungsi

Passing pointer sbg parameter

void swap( int *x, int *y) {int tmp;

tmp = *x;*x = *y;*y = tmp;

}

Page 26: Fungsi

Pointer sbg Parameters

Pointers berlaku sbg passed by value (nilai dr pointer adalah alamat).

Kita dpt mengganti apa yg di tunjuk oleh pointer.

Kita dapat meng copy suatu pointer

Page 27: Fungsi

C++ string

sebuah string adalah null terminated array dari characters. null terminated artinya, terdapat character pd

akhir array yg bernilai 0 (null). Pointer sering digunakan bersama string:

char *msg = “RPI”;

'R'

msg zero (null)

'P' 'I' 0

Page 28: Fungsi

Fungsi manipulasi String

library utk menangani string:

char * strcpy(char *dst, const char *src)

char * strcat(char *dst, const char *src)

Dan banyak lagi

Page 29: Fungsi

Contoh String – Hitung jml chars

int count_string( char *s) {int n=0;while (*s) {

n++;s++;

}return(n);

}

Selama pointer yg menunjuk

ke s bukan null

increment countset s ke char berikut

Page 30: Fungsi

Cara lain

int count_string( char *s) {char *ptr = s;

while (*ptr) {ptr++;

}return(ptr - s);

}

pointer arithmetic!

Page 31: Fungsi

Latihan

gunakan strcpy Buat sebuah fungsi yg

membandingkan 2 string dan kembalikan hasil sbg true jika sama, dan false jika tidak sama.

buat fungsi untuk menghilangkan spasi dr suatu string.

Page 32: Fungsi

Pointer void

Dalam C++ dimungkinkan membuat suatu pointer yg tak bertype, dengan cara menuliskan void pada type datanya

void *ptr

keuntungan void pointer adalah dapat menunjukkan sebarang type data, seperti int, float, double atau char

Page 33: Fungsi

contoh

void *ptr ;int vint = 50 ;float vfl = 50.123 ;ptr = &vint //menunjuk ke intcout << *(int *) ptr << endl;ptr = &vfl //menunjuk ke floatcout << *(float *) ptr << endl;

Page 34: Fungsi

Pointer dan array

Pointer dan array mempunyai hubungan yg sangat dekat, karena secara internal array juga menyatakan alamat seperti contoh berikut

int tgl_lahir[] = {24, 6, 1990};*ptgl ;

agar ptgl menunjuk ke array, di nyatakan dg

ptgl = tgl_lahir

Page 35: Fungsi

Pointer dan matrix

int *x;int **y;

x Sebuah array

y Mat baris Mat kolom

Page 36: Fungsi

int main(){

int r ;cout <<"input jml elemen " ; cin >>

r;cout << endl;

// menyiapkan tempatint *mat = new int[r] ;for( int i=0 ; i<r ; i++)

cin >> mat[i];// tampilkan

for (int j=0 ; j<r ; j++)cout << mat[j] << "\t";

return 0;}

Pointer dan array

*matint *mat

mat

Page 37: Fungsi

mat kolom*mat baris**mat

int **mat

int main(){ int r, c, i, j;

cout <<"input jml baris " ; cin >> r;cout <<endl;cout <<"input jlm kolom " ; cin >> c;cout << endl;

// menyiapkan tempatint **mat = new int *[r];for ( i = 0; i < r; i++)

mat[i] = new int [c];

// mengisi matrixfor (i = 0 ; i < r ; i++)for (j = 0 ; j < c ; j++){cout << "First Matrix Inputs (Row " << i+1 << ") " << "(Column " << j+1 << ")";cin >> mat[i][j];

}// tampilkan

for (i = 0 ; i < r ; i++) { for (j = 0 ; j < c; j++)

cout << mat[i][j] << "\t" ; cout << endl; }

return 0;}

Page 38: Fungsi

Latihan buat program dengan menggunakan pointer untuk mengalikan matrix A(mxn) dan matrix B(nxp)

Page 39: Fungsi

Pointer dan string

char *ptokoh = “superman”;

// ptokoh menunjuk ke stringcout << ptokoh;// mencetak stringsama dengan statementchar tokoh[] = “superman” ;Perbedaan nya adalah :1. ptokoh adlh pointer yg dg mudah dpt diatur agar menunjuk ke data string2. tokoh adlh array yg menyatakan elemen yg konstan tdk dpt berubah, yg dapat di ubah hanya elemen array

Page 40: Fungsi

contoh

char tokoh[] = “superman”;char *ptokoh = “superman”;cout << “Tokoh ”<<tokoh<<endl;cout << “*ptokoh”<<ptokoh<<endl;// tokoh++ tidak di perkenankanptokoh++ ; // diperkenankancout << “*ptokoh”<<ptokoh<<endl;

Hasil :Tokoh supermanptokoh supermanptokoh uperman

Page 41: Fungsi

Pointer sebagai argumen fungsi

// definisi fungsivoid ubah_nilai(int x){ x = 95; }

int main(){ int p = 80;cout << “nilai awal “ << pi << endl;ubah_nilai(pi);cout << “nilai skrg “ << pi << endl; return 0;}

Hasilnilai awal 95nilai skrg 80

Page 42: Fungsi

Perbedaan antara pointer dan referensi

- Referensi adalah alias dari suatu var- Pointer adalah alamat dari suatu var- Pointer merupakan mekanisme

untuk mengubah nilai dari dalam fungsi sedangkan Referensi adalah keistimewaan yg ditawarkan untuk melakukan hal yg sama

Page 43: Fungsi

Pointer sebagai keluaran fungsi

Suatu fungsi dapat dibuat agar keluaran nya berupa pointer// definisikan fungsichar *warna(int n){ char *warna[] = {“kode salah”,“merah”, “kuning”, “hijau”}; return ((n<1 || n>3) ? Warna[0] : warna[n]); }// program mainint main(){ int w; cout <<“input warna “; cin w; cout << warna(w) ; return 0; }

Page 44: Fungsi

Memperoleh argumen baris perintah

#include <iostream.h>

int main(int argc, char *argv[]){

for (int i=0 ; i<argc ; i++)cout << "argv[" << i << "] = " << argv[i] << endl;

}

Program ini digunakan untuk membaca argumen baris perintah, misalnya perintah

C:\> format A:Jangan menggunakan secara sembarang !!!