Function(2) - Teknik Elektro UGM

Download Report

Transcript Function(2) - Teknik Elektro UGM

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
Sejumlah y
• Dalam bentuk loop for:
z = 1;
for(i=0;i<y;i++)
{
z = z*x;
}
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. Bilanganbilangan 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:
1. float rerata(int jml,int masukan[10])
2. 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
in1
in2
in_m
out1
out2
out3
out_n
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 ke4 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 -
Karena semua output sudah dikeluarkan lewat argumen,
Return value dibuat void saja (tidak punya return val)
Hasil *
Hasil /
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;
Modifikasi argumen output dengan operasi pointer
}
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;
}
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:
Panjang vektor
void jumlah_array(int *a,int *b,int *c,int n)
Vektor output
Vektor input
c = a+b
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]<<" ";
Arraynya
}
system("PAUSE");
return EXIT_SUCCESS;
}
langsung jadi argumen