190 likes | 348 Views
Function(2). Contoh soal. Buatlah program untuk menghitung x y 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
E N D
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) Hasil - Hasil / Hasil + Hasil * input Karena semua output sudah dikeluarkan lewat argumen, Return value dibuat void saja (tidak punya return val)
Program lengkap 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 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; for(i=0;i<n;i++) { cout<<out[i]<<" "; } system("PAUSE"); return EXIT_SUCCESS; } Arraynya langsung jadi argumen