970 likes | 1.34k Views
Function dalam Bahasa C. Mata Kuliah Algoritma dan Pemrograman I Oleh: Anis Cherid, MTI. Universitas Mercu Buana Fakultas Teknik Industri Program Studi Teknik Informatika. Subprogram dalam Bahasa C. Dalam Bahasa C, subprogram hanya terdiri dari satu jenis : function
E N D
Function dalam Bahasa C Mata Kuliah Algoritma dan Pemrograman I Oleh: Anis Cherid, MTI Universitas Mercu Buana Fakultas Teknik Industri Program Studi Teknik Informatika http://www.mercubuana.ac.id
Subprogram dalam Bahasa C • Dalam Bahasa C, subprogram hanya terdiri dari satu jenis : function • Bahasa C tidak mengenal procedure, tetapi function dalam Bahasa C terdiri dari 2 jenis: • function yang setara dengan procedure dalam Bahasa Pascal, disebut void function. • function yang secara otomatis mengembalikan sebuah nilai, disebut typed function. http://www.mercubuana.ac.id
Ketentuan Membuat Void Function dalam Bahasa C • Cara 1: Diletakkan sebelum program utama, dengan kata lain sebelum function main(). void abc(){ … /* baris function */ … /* baris function */ } main(){ … /* baris program utama */ … /* baris program utama */ } http://www.mercubuana.ac.id
Ketentuan Membuat Void Function dalam Bahasa C • Cara 2: Diletakkan sesudah program utama, tetapi dengan menyertakan function prototypesebelum function main(). void abc(); /* function prototype*/ main(){ … /* baris program utama */ … /* baris program utama */ } void abc(){ … /* baris function */ … /* baris function */ } http://www.mercubuana.ac.id
Ketentuan Membuat Void Function dalam Bahasa C #include <stdio.h> #include <conio.h> void hapusbaris(void){ int i; gotoxy(1, wherey() ); for (i=1;i<=80;i++)printf(" "); } main(){ gotoxy(1,1); printf("Baris Satu\n"); printf("Baris Dua\n"); printf("Baris Tiga\n"); gotoxy(1,1); /*cursor ke baris 1*/ hapusbaris(); gotoxy(1,3); /*cursor ke baris 3*/ hapusbaris(); } • Tanpa Parameter Keluaran, Tanpa Parameter Masukan. http://www.mercubuana.ac.id
Ketentuan Membuat Void Function dalam Bahasa C #include <stdio.h> #include <conio.h> void hapusbaris(void){ int i; gotoxy(1, wherey() ); for (i=1;i<=80;i++)printf(" "); } main(){ gotoxy(1,1); printf("Baris Satu\n"); printf("Baris Dua\n"); printf("Baris Tiga\n"); gotoxy(1,1); /*cursor ke baris 1*/ hapusbaris(); gotoxy(1,3); /*cursor ke baris 3*/ hapusbaris(); } • Tanpa Parameter Keluaran, Tanpa Parameter Masukan. http://www.mercubuana.ac.id
Ketentuan Membuat Void Function dalam Bahasa C #include <stdio.h> #include <conio.h> void hapusbaris(void){ int i; gotoxy(1, wherey() ); for (i=1;i<=80;i++)printf(" "); } main(){ gotoxy(1,1); printf("Baris Satu\n"); printf("Baris Dua\n"); printf("Baris Tiga\n"); gotoxy(1,1); /*cursor ke baris 1*/ hapusbaris(); gotoxy(1,3); /*cursor ke baris 3*/ hapusbaris(); } • Tanpa Parameter Keluaran, Tanpa Parameter Masukan. http://www.mercubuana.ac.id
Ketentuan Membuat Void Function dalam Bahasa C #include <stdio.h> #include <conio.h> void hapusbaris(void){ int i; gotoxy(1, wherey() ); for (i=1;i<=80;i++)printf(" "); } main(){ gotoxy(1,1); printf("Baris Satu\n"); printf("Baris Dua\n"); printf("Baris Tiga\n"); gotoxy(1,1); /*cursor ke baris 1*/ hapusbaris(); gotoxy(1,3); /*cursor ke baris 3*/ hapusbaris(); } • Tanpa Parameter Keluaran, Tanpa Parameter Masukan. Meskipun function tidak memiliki parameter masukan, pemanggilan funtion harus tetap menyertakan tanda kurung (). http://www.mercubuana.ac.id
Ketentuan Membuat Void Function dalam Bahasa C #include <stdio.h> void cetakbintang(int x){ while (x>0){ printf("*"); x--; } } main(){ int i; for (i=1;i<=5;i++){ cetakbintang(i); printf("\n"); } } • Satu buah parameter masukan Cara Kerja Program http://www.mercubuana.ac.id
Ketentuan Membuat Void Function dalam Bahasa C #include <stdio.h> void cetakbintang(int x){ while (x>0){ printf("*"); x--; } } main(){ int i; for (i=1;i<=5;i++){ cetakbintang(i); printf("\n"); } } • Satu buah parameter masukan Cara Kerja Program http://www.mercubuana.ac.id
Ketentuan Membuat Void Function dalam Bahasa C #include <stdio.h> #include <dos.h> void bunyi(int frekuensi, int durasi){ /*** program lengkap dapat dilihat dengan melakukan klik terhadap hyperlink di bawah ini. ***/ } main(){ bunyi(440, 1000); bunyi(466, 1000); } • Lebih dari satu buah parameter masukan, satu jenis parameter masukan. Program Lengkap http://www.mercubuana.ac.id
Ketentuan Membuat Void Function dalam Bahasa C #include <stdio.h> #include <dos.h> void bunyi(int frekuensi, int durasi){ /*** program lengkap dapat dilihat dengan melakukan klik terhadap hyperlink di bawah ini. ***/ } main(){ bunyi(440, 1000); bunyi(466, 1000); } • Lebih dari satu buah parameter masukan, satu jenis parameter masukan. Program Lengkap http://www.mercubuana.ac.id
Ketentuan Membuat Void Function dalam Bahasa C #include <stdio.h> #include <dos.h> void bunyi(int frekuensi, int durasi){ /*** program lengkap dapat dilihat dengan melakukan klik terhadap hyperlink di bawah ini. ***/ } main(){ bunyi(440, 1000); bunyi(466, 1000); } • Lebih dari satu buah parameter masukan, satu jenis parameter masukan. Program Lengkap http://www.mercubuana.ac.id
Ketentuan Membuat Void Function dalam Bahasa C #include <stdio.h> #include <conio.h> #include <string.h> void cetakString(char *s,int posisi){ if (posisi==2){ gotoxy ((80-strlen(s))/2, wherey()) } else if (posisi==3){ gotoxy (80-strlen(s), wherey()) } else { gotoxy (1, wherey()); } printf(s); } main(){ cetakString("Cetak rata kiri", 1); cetakString("Cetak di tengah", 2); cetakString("Cetak rata kanan", 3); } • Lebih dari satu buah parameter masukan, lebih dari satu jenis parameter masukan. http://www.mercubuana.ac.id
Ketentuan Membuat Void Function dalam Bahasa C #include <stdio.h> #include <conio.h> #include <string.h> void cetakString(char *s,int posisi){ if (posisi==2){ gotoxy ((80-strlen(s))/2, wherey()) } else if (posisi==3){ gotoxy (80-strlen(s), wherey()) } else { gotoxy (1, wherey()); } printf(s); } main(){ cetakString("Cetak rata kiri", 1); cetakString("Cetak di tengah", 2); cetakString("Cetak rata kanan", 3); } • Lebih dari satu buah parameter masukan, lebih dari satu jenis parameter masukan. http://www.mercubuana.ac.id
Ketentuan Membuat Void Function dalam Bahasa C #include <stdio.h> #include <conio.h> #include <string.h> void cetakString(char *s,int posisi){ if (posisi==2){ gotoxy ((80-strlen(s))/2, wherey()) } else if (posisi==3){ gotoxy (80-strlen(s), wherey()) } else { gotoxy (1, wherey()); } printf(s); } main(){ cetakString("Cetak rata kiri\n", 1); cetakString("Cetak di tengah\n", 2); cetakString("Cetak rata kanan\n", 3); } • Lebih dari satu buah parameter masukan, lebih dari satu jenis parameter masukan. http://www.mercubuana.ac.id
Ketentuan Membuat Void Function dalam Bahasa C #include <stdio.h> void dekompDetik (long int x, int*jam, int *menit, int *detik){ *jam = x/3600; x = x % 3600; *menit = x/60; *detik = x % 60; } main(){ int j, m, d; dekompDetik(86399, &j, &m, &d); printf("86399 detik sama " "dengan %d jam %d menit " "%d detik", j, m, d); } • Satu buah parameter masukan dan tiga buah parameter keluaran Cara Kerja Program http://www.mercubuana.ac.id
Ketentuan Membuat Void Function dalam Bahasa C #include <stdio.h> void dekompDetik (long int x, int*jam, int *menit, int *detik){ *jam = x/3600; x = x % 3600; *menit = x/60; *detik = x % 60; } main(){ int j, m, d; dekompDetik(86399, &j, &m, &d); printf("86399 detik sama " "dengan %d jam %d menit " "%d detik", j, m, d); } • Satu buah parameter masukan dan tiga buah parameter keluaran Cara Kerja Program http://www.mercubuana.ac.id
Ketentuan Membuat Void Function dalam Bahasa C #include <stdio.h> void dekompDetik (long int x, int*jam, int *menit, int *detik){ *jam = x/3600; x = x % 3600; *menit = x/60; *detik = x % 60; } main(){ int j, m, d; dekompDetik(86399, &j, &m, &d); printf("86399 detik sama " "dengan %d jam %d menit " "%d detik", j, m, d); } • Satu buah parameter masukan dan tiga buah parameter keluaran Cara Kerja Program http://www.mercubuana.ac.id
Ketentuan Membuat Void Function dalam Bahasa C #include <stdio.h> void dekompDetik (long int x, int*jam, int *menit, int *detik){ *jam = x/3600; x = x % 3600; *menit = x/60; *detik = x % 60; } main(){ int j, m, d; dekompDetik(86399, &j, &m, &d); printf("86399 detik sama " "dengan %d jam %d menit " "%d detik", j, m, d); } • Satu buah parameter masukan dan tiga buah parameter keluaran Parameter keluaran dibuat dengan menambahkan tanda * sebelum nama masing-masing parameter. Cara Kerja Program http://www.mercubuana.ac.id
Ketentuan Membuat Void Function dalam Bahasa C #include <stdio.h> void dekompDetik (long int x, int*jam, int *menit, int *detik){ *jam = x/3600; x = x % 3600; *menit = x/60; *detik = x % 60; } main(){ int j, m, d; dekompDetik(86399, &j, &m, &d); printf("86399 detik sama " "dengan %d jam %d menit " "%d detik", j, m, d); } • Satu buah parameter masukan dan tiga buah parameter keluaran Di dalam void function, untuk menyimpan nilai dalam parameter keluaran, nama parameter keluaran juga dilengkapi dengan tanda * Cara Kerja Program http://www.mercubuana.ac.id
Ketentuan Membuat Void Function dalam Bahasa C #include <stdio.h> void dekompDetik (long int x, int*jam, int *menit, int *detik){ *jam = x/3600; x = x % 3600; *menit = x/60; *detik = x % 60; } main(){ int j, m, d; dekompDetik(86399, &j, &m, &d); printf("86399 detik sama " "dengan %d jam %d menit " "%d detik", j, m, d); } • Satu buah parameter masukan dan tiga buah parameter keluaran Memanggil void function yang memiliki parameter keluaran, dilakukan dengan menambahkan tanda & pada masing-masing variabel yang menjadi argumen. Cara Kerja Program http://www.mercubuana.ac.id
Ketentuan Membuat Void Function dalam Bahasa C • Satu buah parameter masukan/keluaran #include <stdio.h> void lipatGanda (int *x){ *x = *x * 2; } main(){ int bil=4; lipatGanda(&bil); printf("%d",bil); } http://www.mercubuana.ac.id
Ketentuan Membuat Void Function dalam Bahasa C • Satu buah parameter masukan/keluaran #include <stdio.h> void lipatGanda (int *x){ *x = *x * 2; } main(){ int bil=4; lipatGanda(&bil); printf("%d",bil); } http://www.mercubuana.ac.id
Typed Function dalam Bahasa C #include <stdio.h> float luas(int alas, int tinggi){ return (alas*tinggi)/2; } main(){ int x,y; printf("Masukkan panjang " "alas segitiga:"); scanf("%d",&x); printf("Masukkan tinggi " "segitiga:"); scanf("%d",&y); printf("Luas segitiga adalah " "%f", luas(x,y)); } http://www.mercubuana.ac.id
Typed Function dalam Bahasa C Tipe data dari nilai yang dikembalikan Baris instruksi yang mengembalikan nilai #include <stdio.h> float luas(int alas, int tinggi){ return (alas*tinggi)/2; } main(){ int x,y; printf("Masukkan panjang " "alas segitiga:"); scanf("%d",&x); printf("Masukkan tinggi " "segitiga:"); scanf("%d",&y); printf("Luas segitiga adalah " "%d ", luas(x,y)); } • Ketentuan Membuat Typed Function: • Sama dengan ketentuan membuat void function • Ditambah : • Typed function harus menyertakan tipe data dari nilai yang dikembalikan. • Typed function harus menyertakan baris instruksi yang mengembalikan nilai. • Jika typed function tidak mencantumkan tipe data dari nilai yang dikembalikan, maka komputer menganggap bahwa tipe datanya adalah int. http://www.mercubuana.ac.id
Typed Function dalam Bahasa C PEMANGGILAN TYPED FUNCTION YANG BENAR: printf("%10.2f", luas(10,5)); printf("%f", luas(10*5, 20)); int i=luas(10,10);§ luas(10,10); § § §Menyimpan nilai bertipe float yang dikembalikan typed function ke dalam variabel bertipe integer tidak akan menimbulkan pesan kesalahan. Hal ini hanya mengakibatkan angka di belakang koma diabaikan oleh komputer. § § Bahasa C mengijinkan ekspresi ditulis sebagai statement yang berdiri sendiri. Akibatnya,meskipun "pemanggilan typed function"adalah ekspresi yang mengembalikan nilai, pemanggilan typed function sebagai statement tidak akan menimbulkan pesan kesalahan. Contoh ekspresi lain yang tidak akan menimbulkan kesalahan jika ditulis sebagai statement yang berdiri sendiri: x+3;2*2;a+10; http://www.mercubuana.ac.id
Pemanggilan Function dalam Bahasa C PEMANGGILAN VOID FUNCTION DAN TYPED FUNCTION YANG SALAH: Jika prototype function: lipatganda(int *x); dipanggil dengan cara: lipatganda(10),atau lipatganda(a) Salah karena parameter function adalah parameter keluaran, sehingga harus dipanggil dengan menggunakan argumen berupa alamat variabel. Misalnya, lipatganda(&a). Jika prototype function: int luas(int x, int y); dipanggil dengan cara: luas(600,200,500),atau luas(a) Salah karena parameter function ada 2 buah, tetapi dipanggil hanya menggunakan 3 buah argumen atau 1 buah argumen. http://www.mercubuana.ac.id
Mengirimkan Argumen Berjenis Array ke dalam Function • Yang bisa menjadi argumen ketika memanggil sebuah function adalah: • alamat variabel array • nilai dari sebuah elemen array • Dalam Bahasa C, tidak dimungkinkan mengirimkan keseluruhan salinan array ke dalam function. http://www.mercubuana.ac.id
BAGIAN AKHIR PRESENTASI FUNCTION DALAM BAHASA PEMROGRAMAN C http://www.mercubuana.ac.id
i Cara Kerja Program void cetakbintang(int x){ while (x>0){ printf("*"); x--; } } main(){ int i; for (i=1;i<=5;i++){ cetakbintang(i); printf("\n"); } } Ketika program dieksekusi, baris pertama dalam function main() akan dilaksanakan. Akibatnya, dalam "memori program utama" disediakan tempat untuk variabel i. http://www.mercubuana.ac.id
Cara Kerja Program void cetakbintang(int x){ while (x>0){ printf("*"); x--; } } main(){ int i; for (i=1;i<=5;i++){ cetakbintang(i); printf("\n"); } } Kemudian, baris kedua dilaksanakan. Tepatnya bagian yang mengubah nilai variabel i. Akibatnya, nilai variabel i berubah menjadi 1. 1 i http://www.mercubuana.ac.id
Cara Kerja Program void cetakbintang(int x){ while (x>0){ printf("*"); x--; } } main(){ int i; for (i=1;i<=5;i++){ cetakbintang(i); printf("\n"); } } Kemudian nilai variabel i diuji pada bagian pemeriksaan kondisi. Karena i<=5 maka instruksi-instruksi dalam for-loop akan dilaksanakan. 1 i http://www.mercubuana.ac.id
Cara Kerja Program void cetakbintang(int x){ while (x>0){ printf("*"); x--; } } main(){ int i; for (i=1;i<=5;i++){ cetakbintang(i); printf("\n"); } } Baris pertama dalam for-loop dilaksanakan. Baris ini merupakan baris function-call, sehingga pelaksanaan program melompat ke function cetakbintang(). 1 i http://www.mercubuana.ac.id
x Cara Kerja Program void cetakbintang(int x){ while (x>0){ printf("*"); x--; } } main(){ int i; for (i=1;i<=5;i++){ cetakbintang(i); printf("\n"); } } Parameter function cetakbintang() adalah variabel x . Akibatnya, begitu function ini dipanggil, di dalam "memori function" disediakan tempat untuk variabel x. 1 i http://www.mercubuana.ac.id
Cara Kerja Program void cetakbintang(int x){ while (x>0){ printf("*"); x--; } } main(){ int i; for (i=1;i<=5;i++){ cetakbintang(i); printf("\n"); } } 1 x Karena function ini dipanggil dengan argumen i, maka nilai variabel i akan dikirim ke dalam function dan menjadi nilai parameter x. 1 i http://www.mercubuana.ac.id
Cara Kerja Program void cetakbintang(int x){ while (x>0){ printf("*"); x--; } } main(){ int i; for (i=1;i<=5;i++){ cetakbintang(i); printf("\n"); } } 1 x Di dalam function, dilakukan pemeriksaan kondisi terhadap variabel x. Karena x==1, sehingga x>0, maka baris-baris instruksi dalam while-loop akan dilaksanakan. 1 i http://www.mercubuana.ac.id
Cara Kerja Program void cetakbintang(int x){ while (x>0){ printf("*"); x--; } } main(){ int i; for (i=1;i<=5;i++){ cetakbintang(i); printf("\n"); } } 1 x Di dalam while-loop, instruksi menampilkan output dilaksanakan. Akibatnya, pada layar monitor muncul sebuah tanda bintang. 1 i * http://www.mercubuana.ac.id
Cara Kerja Program void cetakbintang(int x){ while (x>0){ printf("*"); x--; } } main(){ int i; for (i=1;i<=5;i++){ cetakbintang(i); printf("\n"); } } 1 0 x Baris kedua dilaksanakan. Akibatnya, nilai variabel x berkurang menjadi 0. Putaran 1 while-loop selesai dilaksanakan. 1 i * http://www.mercubuana.ac.id
Cara Kerja Program void cetakbintang(int x){ while (x>0){ printf("*"); x--; } } main(){ int i; for (i=1;i<=5;i++){ cetakbintang(i); printf("\n"); } } 0 x Selanjutnya, pemeriksaan kondisi dilakukan untuk memeriksa apakah while-loop akan berputar sekali lagi. Karena x==0, maka tidak ada putaran kedua dan pelaksanaan program keluar dari while-loop. 1 i * http://www.mercubuana.ac.id
0 x Cara Kerja Program void cetakbintang(int x){ while (x>0){ printf("*"); x--; } } main(){ int i; for (i=1;i<=5;i++){ cetakbintang(i); printf("\n"); } } Karena sesudah while-loop tidak terdapat instruksi lain, maka pelaksanaan program keluar dari function dan kembali ke program utama. 1 i * http://www.mercubuana.ac.id
Cara Kerja Program void cetakbintang(int x){ while (x>0){ printf("*"); x--; } } main(){ int i; for (i=1;i<=5;i++){ cetakbintang(i); printf("\n"); } } Ketika instruksi printf dilaksanakan, posisi cursor pindah ke baris baru, sehingga penulisan berikutnya akan terjadi di baris ke-2. 1 i * http://www.mercubuana.ac.id
Cara Kerja Program void cetakbintang(int x){ while (x>0){ printf("*"); x--; } } main(){ int i; for (i=1;i<=5;i++){ cetakbintang(i); printf("\n"); } } Kemudian pelaksanaan program kembali ke awal for-loop. Akibatnya nilai variabel i bertambah menjadi 2. Putaran ke-1 for-loop selesai. 1 2 i * http://www.mercubuana.ac.id
Cara Kerja Program void cetakbintang(int x){ while (x>0){ printf("*"); x--; } } main(){ int i; for (i=1;i<=5;i++){ cetakbintang(i); printf("\n"); } } Selanjutnya diperiksa apakah for-loop akan berputar untuk ke-2 kalinya. Karena variabel i<=5, maka for-loop akan memasuki putaran ke-2. 2 i * http://www.mercubuana.ac.id
Cara Kerja Program void cetakbintang(int x){ while (x>0){ printf("*"); x--; } } main(){ int i; for (i=1;i<=5;i++){ cetakbintang(i); printf("\n"); } } 2 x Baris pertama dalam for-loop dilaksanakan. Function cetakbintang() dipanggil untuk yang ke-2 kalinya. Kali ini menggunakan argumen variabel i yang bernilai 2. 2 i * http://www.mercubuana.ac.id
Cara Kerja Program void cetakbintang(int x){ while (x>0){ printf("*"); x--; } } main(){ int i; for (i=1;i<=5;i++){ cetakbintang(i); printf("\n"); } } 2 x Di dalam function, yang pertama dilakukan adalah pemeriksaan kondisi terhadap variabel x. Karena x==2, sehingga x>0, maka baris-baris instruksi dalam while-loop akan dilaksanakan. 2 i * http://www.mercubuana.ac.id
Cara Kerja Program void cetakbintang(int x){ while (x>0){ printf("*"); x--; } } main(){ int i; for (i=1;i<=5;i++){ cetakbintang(i); printf("\n"); } } 2 x Di dalam while-loop, instruksi menampilkan output dilaksanakan. Akibatnya, pada layar monitor muncul tanda bintang ke-2. 2 i * * * http://www.mercubuana.ac.id
Cara Kerja Program void cetakbintang(int x){ while (x>0){ printf("*"); x--; } } main(){ int i; for (i=1;i<=5;i++){ cetakbintang(i); printf("\n"); } } 2 1 x Baris kedua dilaksanakan. Akibatnya, nilai variabel x berkurang menjadi 1. Putaran 1 while-loop selesai dilaksanakan. 2 i * * http://www.mercubuana.ac.id
Cara Kerja Program void cetakbintang(int x){ while (x>0){ printf("*"); x--; } } main(){ int i; for (i=1;i<=5;i++){ cetakbintang(i); printf("\n"); } } 1 x Selanjutnya, pemeriksaan kondisi dilakukan untuk memeriksa apakah while-loop akan berputar sekali lagi. Karena x==1, sehingga x>0, maka while-loop akan memasuki putaran ke-2. 2 i * * http://www.mercubuana.ac.id
Cara Kerja Program void cetakbintang(int x){ while (x>0){ printf("*"); x--; } } main(){ int i; for (i=1;i<=5;i++){ cetakbintang(i); printf("\n"); } } 1 x Di dalam putaran ke-2 while-loop, instruksi pertama dilaksanakan. Akibatnya, pada layar monitor muncul tanda bintang yang ke-3. 2 i * * * ** http://www.mercubuana.ac.id