Function(2)
Contoh soal Buatlah program untuk menghitung xy dengan x integer, y integer. Gunakan function untuk menghitung operasi tsb! X dan y dibaca dari keyboard
Solusi & langkah-langkah Menentukan mana yang dijadikan program utama, mana yang dijadikan function Program utama membaca masukan dari keyboard yaitu x dan y, kemudian menampilkan hasil operasinya Fungsi berisi operasi xy dengan spesifikasi fungsi sbb:
Spesifikasi fungsi Argumen (input fungsi) : x dan y, bertipe integer Return value(output fungsi) : hasil operasi xy bertipe integer Bentuk fungsinya kira-kira sbb: int pangkat(int x,int y);
Algoritma perpangkatan Bagaimana algoritma untuk menghitung z= xy? Z= xy = x*x*x*x …*x Dalam bentuk loop for: z = 1; for(i=0;i<y;i++) { z = z*x; } Sejumlah y
Program Lengkap #include <cstdlib> #include <iostream> using namespace std; int pangkat(int x,int y) { int z,i; z=1; for(i=0;i<y;i++) z=z*x; } return z; int main(int argc, char *argv[]) int x,y,hasil; cout << "masukkan x:"; cin >> x; cout <<endl<<"masukkan y:"; cin >> y; hasil = pangkat(x,y); cout <<endl<<"hasil : "<<hasil; system("PAUSE"); return EXIT_SUCCESS;
Contoh soal: Buatlah program untuk menghitung nilai rerata dari n buah bilangan. Jumlah bilangan dibaca dari keyboard. Bilangan-bilangan yang akan direrata juga dibaca dari keyboard. Gunakan fungsi untuk operasi rerata!
Langkah-langkah solusi Program utama : membaca jumlah bilangan (n), membaca bilangan-bilangan yang akan direrata Fungsi : menghitung rerata
Spec fungsi Return value : berupa rerata, tipe : float Argumen (masukan) : berupa jumlah bilangan dan array bilangan. karena masukan ada yg berupa array yg akan dicari reratanya, maka ada 2 pilihan bentuk argumen: float rerata(int jml,int masukan[10]) float rerata(int jml,int *masukan) Sebaiknya dipilih pilihan no 2. Argumen berupa pointer lebih fleksibel, jumlah elemen array tidak dibatasi
Fungsi dengan multi output Bagaimana jika diinginkan >1 output pada suatu fungsi? Fungsi yang telah kita pelajari selama ini hanya memungkinkan utk 1 out, yaitu pada return value out1 in1 out2 in2 out3 out_n in_m
Argumen ‘called by reference’ (cbr) Untuk membuat fungsi dengan >1 output, digunakan teknik argumen ‘called by ref’ Idenya dengan membuat argumen sebagai output Contohnya seperti pada fungsi ‘scanf’ scanf(“%d”,&a) Argumen 2, output Argumen 1, input
Argumen ‘CBR’ Output fungsi scanf tsb adalah variabel ‘a’ Yang dijadikan sebagai argumen sebenarnya adalah referens a (&a) atau alamat a, jadi bukan variabel a itu sendiri Untuk membuat fungsi menjadi CBR, digunakan argumen berbentuk pointer pada header fungsinya. Contoh: nama_fungsi(*arg1,*arg2)
Membuat fungsi CBR Contoh: Buatlah program untuk menghitung +, -, X, dan / antara 2 bilangan, dengan syarat ke-4 operasi tsb dilakukan dalam 1 fungsi!
Perancangan fungsi Untuk mengerjakan ke-4 operasi tadi, dibutuhkan fungsi yang mempunyai 2 input dan 4 output Karena mempunyai 4 output, fungsi yang digunakan adalah fungsi CBR Rancangan headernya adalah sebagai berikut: void operasi(int a,int b,int *jumlah,int *kurang,int *kali,float *bagi) input Hasil + Hasil - Hasil * Hasil / Karena semua output sudah dikeluarkan lewat argumen, Return value dibuat void saja (tidak punya return val)
Program lengkap Modifikasi argumen output dengan operasi pointer void operasi(int a,int b,int *jumlah,int *kurang,int *kali,float *bagi) { //definisi fungsi ‘operasi’ *jumlah=a+b; *kurang=a-b; *kali=a*b; *bagi=a/b; } int main(int argc, char *argv[]) { int a,b,c,d,e; float f; cout <<"masukkan bilangan pertama:"; cin >>a; cout <<endl<<"masukkan bilangan kedua:"; cin >>b; operasi(a,b,&c,&d,&e,&f); cout <<"hasil jumlah: "<<c<<endl; cout <<"hasil kurang: "<<d<<endl; cout <<"hasil kali: "<<e<<endl; cout <<"hasil bagi: "<<f<<endl; system("PAUSE"); return EXIT_SUCCESS; Modifikasi argumen output dengan operasi pointer Pemanggilan fungsi ‘operasi’ Melalui referens c,d,e,f Menampilkan output
Fungsi dengan output suatu array Fungsi yg telah kita pelajari sebelumnya adalah fungsi dengan output variabel tunggal Bagaimana membuat suatu fungsi dengan output suatu array?
Fungsi dengan output array Fungsi CBR juga bisa digunakan untuk membuat fungsi meng-outputkan suatu array Contoh: buatlah program untuk menjumlahkan 2 vektor. Gunakan fungsi untuk melakukan penjumlahan vektor
Fungsi dgn output array Rancangan header fungsi untuk contoh tsb adalah sebagai berikut: void jumlah_array(int *a,int *b,int *c,int n) c = a+b Panjang vektor Vektor output Vektor input Vektor input
Program lengkap Arraynya langsung jadi argumen void jumlah(int *a,int *b,int *c,int n) { //definisi fungsi jumlah int i; for(i=0;i<n;i++) *(c+i)=*(a+i)+*(b+i);//c[i]=a[i]+b[i] } int main(int argc, char *argv[]) int i,in1[5]={1,3,5,7,9},in2[5]={2,4,6,8,10},out[5],n=5; jumlah(in1,in2,out,n); //pemanggilan fungsi jumlah cout <<"hasil penjumlahan vektor:"<<endl; cout<<out[i]<<" "; system("PAUSE"); return EXIT_SUCCESS; Arraynya langsung jadi argumen