Function2 Contoh soal Buatlah program untuk menghitung xy
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 dipilihan 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 in 1 in 2 in_m out 1 out 2 out 3 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(*arg 1, *arg 2)
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 - 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, in 1[5]={1, 3, 5, 7, 9}, in 2[5]={2, 4, 6, 8, 10}, out[5], n=5; jumlah(in 1, in 2, 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
- Slides: 19