FUNGSI (FUNCTION)
Oleh:
ARVENDO MAHARDIKA
160533611405
S1 PTI 2016 A
LAPORAN PRAKTIKUM VI
FUNGSI (FUNCTION)
Oleh:
DIAN MONICA
160533611453
S1 PTI 2016 A
LAPORAN PRAKTIKUM V
LARIK (ARRAY)
Oleh:
DIAN MONICA
160533611453
S1 PTI 2016 A
A. Tujuan
Setelah mempelajari bab ini diharapkan mahasiswa akan mampu:
Mahasiswa mampu memahami fungsi
Mahasiswa mampu mendeklarasikan dan mendefinisikan fungsi
Mahasiswa mampu menyelesaikan masalah menggunakan fungsi
Mahasiswa mampu memahami metode pemanggilan fungsi
Mahasiswa mampu membuat fungsi rekursif
B. Dasar Teori
1. Pendahuluan
1
2
TipeFungsi berfungsi untuk menentukan tipe keluaran fungsi yang dapat berupa
salah satu tipe data C++ yang berlaku misalnya char atau int. Default tipe yang
tidak disebutkan dianggap sebagai int.
Contoh:
Ckali()
{
return(0);
}
2. Prototype Function
Sebuah program C++ dapat terdiri dari banyak fungsi. Salah satu fungsi tersebut
harus bernama main(). Jika fungsi yang lain di tuliskan setelah fungsi main(),
sebelum fungsi main harus ditambahkan prototype function agar fungsi tersebut
dapat dikenal. Hal tersebut tidak berlaku jika penulisannya dilakukan sebelum
fungsi main(). Misal:
#include <stdio.h>
//prototype function
void hitung(int angka, int bilangan);
void tulis(char);
int tampil(int angka[],char huruf);
//fungsi main
void main()
{
int array[3]={1,2,3};
char huruf='D';
//memanggil fungsi
hitung(2,3);
tulis('A');
tampil(array,huruf);
}
3
b. Call by Reference
Pemanggilan dengan referensi merupakan suatu usaha melewatkan alamat
dari suatu variabel ke dalam fungsi. Dengan pengubahan dilakukan di dalam
fungsi untuk mengubah variabel di luar fungsi.
Misal:
A bernilai 20 -> X juga bernilai 20
B bernilai 30 -> Y juga bernilai 30
4
Selanjutnya nilai X dan Y diproses tetapi nilai A dan B akan tetap (tidak
berubah). Metode Call by Reference menggunakan operator pointer &
dan * untuk mengirimkan alamat variabel ke suatu fungsi.
4. Fungsi Rekursif
Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri, artinya fungsi
tersebut dipanggil di dalam tubuh fungsi itu sendiri. Parameter yang
dilewatkan berubah sebanyak fungsi itu dipanggil.
}
int Vtukar(int px, int py)
{
int temp; temp = px;
px = py; py = temp;
cout<<"Nilai pada fungsi dengan Call by Value : "<<endl;
cout<<"Nilai px = " << px <<". Nilai py =
"<<py<<endl<<endl;
}
Keluaran program :
Penjelasan program :
Program ini mengimplementasikan penggunaan call by reference dan call
by value. Ketika dijalankan, program akan membaca fungsi (tanpa nilai
balikan) rtukar dan vtukar, kemudian membaca pendeklarasian variabel
pada fungsi main a dan b. Selanjutnya program memberikan keluaran nilai
sebelum pemanggilan fungsi pada nilai a dan nilai b dan memanggil fungsi
rtukar. Program memberikan dialog fungsi dengan call by reference pada
px dan py, lalu nilai setelah pemanggilan fungsi rtukar pada nilai a dan nilai
b. Setelah itu program mengembalikan nilai a=99, dan b=11 ke semula, dan
menampilkan dialog nilai sebelum pemanggilan fungsi vtukar. Program
menampilkan nilai fungsi dengan call by value pada px dan py, lalu me-
nampilkan nilai setelah pemanggilan fungsi vtukar pada nilai a dan nilai b.
6
2. Latihan 2
Nama program : Mencari Nilai Terbesar dari Suatu Data
Bahasa pemrograman : C++
Pengompilasi : MinGW Developer Studio
Skrip program salah :
//fungsi
#include <stdio.h>
//deklarasi fungsi
int cari(int n1, int n2);
void prin (int m);
//main function
main()
{
int i = 5;
int j = 7;
int k;
k = cari(i,j);
print(k);
return 0;
}
//deklarasi fungsi
int cari(int n1, int n2);
void print(int m);
//main function
int main()
{
int i = 5;
int j = 7;
int k;
k = cari(i,j);
print(k);
return 0;
}
7
Keluaran program :
Penjelasan program :
Program tersebut berfungsi untuk mencari nilai terbesar dari suatu data,
yang dibuat dengan bahasa pemrograman C++ dan pengompilasi MinGW
Developer Studio. Program tersebut berfungsi untuk menampilkan data
yang terbesar dengan mengaplikasikan fungsi, di mana data-data tersebut
telah disiapkan oleh programmer melalui variabel i dan j yang bertipe
integer. Fungsi-fungsi yang ada ialah fungsi cari yang berfungsi sebagai
penentu data mana yang terbesar, main function, dan print untuk
memberikan hasil keluaran sesuai fungsi cari yang telah dijalankan.
3. Latihan 3
Nama program : Menentukan Pajak Pembelian
Bahasa pemrograman : C++
Pengompilasi : MinGW Developer Studio
Skrip program salah :
8
#include <iostream.h>
main()
{
float purchase;
cout << "Masukkan pembelian: ";
cin >> purchase;
int main()
{
float purchase;
cout << "Masukkan pembelian: ";
cin >> purchase;
Keluaran program :
9
Penjelasan program :
Program di atas merupakan program yang digunakan untuk menghitung
pajak pembelian dengan rumus yang telah ditentukan, yang dibuat dengan
bahasa pemrograman C++ dan pengompilasi MinGW Developer Studio.
Program tersebut tentunya berjalan dengan fungsi yang telah ditetapkan.
Pertama, user memasukkan inputan berupa nilai nominal pembelian
kemudian program akan memproses nominal hasil masukkan tersebut
dengan fungsi calcSalesTax yaitu dengan cara mamasukkan value yang
telah ditetapkan pada awal pendeklarasian, dengan ketentuan pembayaran
pajak 10% dari pembelian. Kemudian program akan menampilkan keluaran
berupa hasil dari pembelian dikalikan 0,1, yang mana itu merupakan pajak
pembelian.
4. Latihan 4
Nama program : Menghitung Faktorial dengan Fungsi
Rekursif
Bahasa pemrograman : C++
Pengompilasi : MinGW Developer Studio
Skrip program salah :
#include <iostream.h>
int faktorial(int a)
{
if (a==1)
return 1;
else
return a * faktorial(a+1);
}
void main()
{
int x;
cout << "Mencari Nilai Faktorial\n";
cout << "Masukkan nilai n = ";
cin >> x;
cout << "Faktorial " << x << "!=" << faktorial(x) << endl;
}
Skrip program benar :
#include <iostream.h>
int faktorial(int a)
{
10
if (a==1)
return 1;
else
return a * faktorial(a-1);
}
main()
{
int x;
cout << "Mencari Nilai Faktorial\n";
cout << "Masukkan nilai n = ";
cin >> x;
cout << "Faktorial " << x << "!=" << faktorial(x) << endl;
}
Keluaran program :
Penjelasan program :
Program di atas merupakan program yang digunakan untuk menghitung
bilangan faktorial, yang dibuat dengan bahasa pemrograman C++ dan
pengompilasi MinGW Developer Studio. Program tersebut menggunakan
variabel x dengan tipe data integer sebagai inputannya. Pertama, program
akan meminta input masukan user nilai berupa angka yang akan dijadikan
sebagai bahan perhitungan. Fungsi faktorial pada program di atas
menggunakan variabel a. Program tersebut menggunakan parameter, yang
mana jika input user 1 maka parameter akan menampilkan 1, jika tidak maka
parameter akan meneruskan ke dalam rumus yang telah ditetapkan oleh
faktorial dengan rumus a faktorial(a-1). Dari penjelasan di atas fungsi
rekursif digunakan pada program ini karena jika nilai a lebih dari satu maka
a akan diulang sampai nilai a = 1.
11
5. Latihan 5
Nama program : Mencari Nilai Fibonacci
Bahasa pemrograman : C++
Pengompilasi : MinGW Developer Studio
Skrip program salah :
#include <iostream.h>
long fibo(long a)
{
if (a==1 && a==2)
return 1;
else
return fibo(a-1) + fibo(a-2);
}
void main()
{
int x;
cout << "Mencari nilai fibonacci\n";
cout << "Masukkan nilai n = ";
cin >> x;
cout << "Fibonacci " << x << " = " << fibo(x) << endl;
}
Skrip program benar :
#include <iostream.h>
long fibo(long a)
{
if (a==0)
return 0;
else if (a==1)
return 1;
else
return fibo(a-1) + fibo(a-2);
}
int main()
{
int x;
cout << "Mencari nilai fibonacci\n";
cout << "Masukkan nilai n = ";
cin >> x;
cout << "Fibonacci " << x << " = " << fibo(x) << endl;
}
12
Keluaran program :
Penjelasan program :
Program ini adalah program untuk mencari nilai Fibonacci, yang dibuat
dengan bahasa pemrograman C++ dan pengompilasi MinGW Developer
Studio. Pertama yang dilakukan adalah membuat fungsi main. Yang
berfungsi sebagai tempat user menginputkan nilai n untuk dicari bilangan
Fibonaccinya. Lalu dibuatlah fungsi fibo, yang berfungsi untuk menentukan
berapa nilai bilangan Fibonacci ke n, jika a=1 atau a=2 maka bilangan
Fibonaccinya adalah 1 dan jika selain itu bilangan Fibonaccinya
menggunakan rumus fibo(a-1) + fibo(a-2). Pada fungsi main bilangan
Fibonacci dicari dengan memanggil fungsi fibo. Outputnya adalah program
akan menampilkan nilai bilangan Fibonacci ke n, di mana n diinputkan oleh
user.
6. Praktikum 1
Nama program : Menampilkan Kombinasi nCr
Bahasa pemrograman : C++
Pengompilasi : MinGW Developer Studio
Skrip program :
#include <iostream.h>
{
fak=n*faktorial(n-1);
}
return (fak);
}
int main()
{
int n, r, kombinasi = 0;
cout << "---------------------------------\n";
cout << " MODUL FUNCTION \n";
cout << "---------------------------------\n";
cout << " PROGRAM KOMBINASI \n";
cout << "---------------------------------\n";
cout << "Masukkan nilai n : ";
cin >> n;
cout << "Masukkan nilai r : ";
cin >> r;
cout << "\nHasil kombinasi " << n << "C" << r << " adalah "
<< kombinasi;
}
Keluaran program :
Penjelasan program :
Program ini adalah program untuk mencari hasil kombinasi nCr, yang
dibuat dengan bahasa pemrograman C++ dan pengompilasi MinGW
Developer Studio. Pertama yang dilakukan adalah membuat fungsi main,
yang berfungsi sebagai tempat user menginputkan nilai n dan r, serta
meletakkan rumus mencari kombinasi yakni faktorial(n) / (faktorial(r) *
faktorial(n-r)). Lalu dibuatlah fungsi faktorial, yang berfungsi untuk
menentukan perubahan nominal n dan r. Output dari program tersebut
14
7. Praktikum 2
Nama program : Penghitung Luas, Selimut, dan Volume
Tabung
Bahasa pemrograman : C++
Pengompilasi : MinGW Developer Studio
Skrip program :
#include <iostream.h>
int main()
{
float volume, luas, selimut, jari_jari, tinggi = 0;
cout << "---------------------------------------------\n";
cout << " MODUL FUNCTION \n";
cout << "---------------------------------------------\n";
cout << " PROGRAM KOMBINASI \n";
cout << " PROGRAM TABUNG \n";
cout << "---------------------------------------------\n";
cout << "Masukkan jari-jari : ";
cin >> jari_jari;
cout << "Masukkan tinggi : ";
cin >> tinggi;
Keluaran program :
Penjelasan program :
Program ini adalah program untuk mencari luas permukaan secara
keseluruhan, selimut, dan volume dari sebuah tabung, yang dibuat dengan
bahasa pemrograman C++ dan pengompilasi MinGW Developer Studio.
Pertama yang dilakukan adalah membuat fungsi main, yang berfungsi
sebagai tempat user menginputkan nilai jari-jari dan tinggi, serta
meletakkan rumus-rumus dalam mencari luas keseluruhan, luas selimut, dan
volume. Lalu dibuatlah fungsi llingk yang berfungsi sebagai mencari luas
lingkaran dan klingk yang berfungsi sebagai tempat rumus mencari keliling
lingkaran. Output dari program tersebut adalah adalah program akan
menampilkan nilai-nilai yang dicari, di mana jari-jari dan tinggi tabung
diinputkan oleh user.
8. Tugas Rumah 1
Nama program : Pencari Nilai Terbesar dan Terkecil
berdasarkan Inputan User
Bahasa pemrograman : C++
Pengompilasi : MinGW Developer Studio
Skrip program :
#include <iostream.h>
#include <conio.h>
16
do {
cout << "Masukkan Angka : ";
cin >> angka;
if (i == 1)
{
min = angka;
max = angka;
}
else if (min > angka)
{
min = angka;
}
else if (max < angka)
{
max = angka;
}
i++;
}
while (jawab == 'y');
if (jawab == 'n')
{
cout << outputan(min, max);
}
getch();
}
Keluaran program :
Penjelasan program :
Program ini adalah program untuk mencari nilai terbesar dan terkecil dari
angka-angka yang diinputkan, yang dibuat dengan bahasa pemrograman
C++ dan pengompilasi MinGW Developer Studio. Pertama yang dilakukan
adalah membuat fungsi main, yang berfungsi sebagai tempat user
menginputkan angka-angka yang akan dicari batas atas dan batas bawahnya.
Dalam fungsi main terdapat perulangan yang berfungsi untuk menentukan,
apakah dilakukan input nilai/bilangan lagi atau tidak dan menampilkan hasil
nilai terbesar dan terkecil. Lalu dibuatlah fungsi outputan yang berfungsi
sebagai tempat meletakkan apa yang harus dikeluarkan. Output dari
program tersebut adalah adalah program akan menampilkan nilai terkecil
dan nilai terbesar, di mana semua inputan angka-angka berasal dari user.
9. Tugas Rumah 2
Nama program : Pencari Standar Deviasi berdasarkan
Inputan User
Bahasa pemrograman : C++
Pengompilasi : MinGW Developer Studio
Skrip program :
19
#include <iostream.h>
#include <conio.h>
#include <math.h>
int main()
{
int i = 1;
int max, min, rata = 0;
int angka = 0;
int total = 0;
char jawab;
do {
cout << "Masukkan Angka : ";
cin >> angka;
total = total + angka;
if (i == 1)
{
min = angka;
max = angka;
}
else if (min > angka)
{
min = angka;
}
else if (max < angka)
{
max = angka;
}
//total = total + angka;
i++;
if (jawab == 'n')
{
rata = total/(i-1);
cout << endl;
cout << "Nilai rata-rata : " << rata <<
endl;
20
getch();
}
Keluaran program :
Penjelasan program :
Program ini berfungsi untuk mencari nilai simpangan baku, atau yang
dikenal dengan standar deviasi, serta rata-rata dari angka-angka yang
diinputkan, yang dibuat dengan bahasa pemrograman C++ dan
pengompilasi MinGW Developer Studio. Dalam program ini, terdapat
header file yang baru ditambahkan ialah math.h, karena dalam program ini
penulis menggunakan sqrt yang merupakan fungsi untuk mencari akar dari
suatu bilangan, yang akan digunakan ketika mencari standar deviasi.
Pertama yang dilakukan adalah membuat fungsi main, yang berfungsi
sebagai tempat user menginputkan angka-angka yang akan dicari rata-rata
dan standar deviasinya. Dalam fungsi main terdapat perulangan yang
berfungsi untuk menentukan, apakah dilakukan input nilai/bilangan lagi
atau tidak dan menampilkan hasil rata-rata dan standar deviasi. Lalu
dibuatlah fungsi stddev yang berfungsi sebagai tempat meletakkan rumus
standar deviasi, yakni sqrt(((max - min)*(max - min)) / (i-1)). Untuk
rata-rata, tidak dibuatkan fungsi dan langsung menjadi rumus yang
dituliskan di dalam fungsi main. Output dari program tersebut adalah adalah
program akan menampilkan rata-rata dan standar deviasi, di mana semua
inputan angka-angka berasal dari user.
22
int main()
{
int i = 1;
int n, k = 1;
int x = 0;
int banyak[100];
float nilai[100];
float modus[100];
char jawab;
do {
cout << "Masukkan Angka : ";
cin >> nilai[i];
i++;
if (jawab == 'n')
{
//menghitung berapa kali muncul tiap angka
for(int i = 0; i < n; i++)
{
banyak[i] = 0;
for(int j = 0; j < n; j++)
{
if(nilai[i] == nilai[j])
{
banyak[i]++;
}
}
}
{
if(banyak[i] > k)
{
k = banyak[i];
}
}
if(banyak[i]==k)
{
if(nilai[i]!=modus[x])
{
modus[x]=nilai[i];
x++;
}
}
}
if (x==0)
cout<<"\nTidak Ada Modus!"<<endl;
else
{
for(int i=0;i<x;i++)
{
cout << "\n----------------------------
---------" << endl;
cout << "Data yang sering diinputkan
adalah " << modus[i] << endl;
cout << "------------------------------
-------\n" << endl;
}
}
}
getch();
}
24
Keluaran program :
Penjelasan program :
Program ini berfungsi untuk mencari nilai yang sering muncul atau yang
dikenal dengan modus, yang dibuat dengan bahasa pemrograman C++ dan
pengompilasi MinGW Developer Studio. Pertama yang dilakukan adalah
membuat fungsi main, yang berfungsi sebagai tempat user menginputkan
angka-angka yang akan dicari modusnya. Dalam fungsi main terdapat
perulangan yang berfungsi untuk menentukan, apakah dilakukan input
nilai/bilangan lagi atau tidak dan menampilkan hasil rata-rata dan standar
deviasi. Output dari program tersebut adalah adalah program akan
menampilkan modus.
D. Kesimpulan
1. Fungsi merupakan blok dari kode yang dirancang untuk melakukan tugas
khusus atau instruksi yang dieksekusi ketika dipanggil dari bagian lain
dalam suatu program.
26
2. Tipe data berfungsi untuk menentukan tipe keluaran fungsi yang dapat
berupa salah satu tipe data C++ yang berlaku, misalnya char atau integer.
3. Pada umumnya, fungsi memerlukan masukan yang disebut parameter atau
argument, hasil akhir fungsi akan berupa nilai (nilai balik fungsi).
4. Fungsi dibedakan menjadi dua yaitu void (fungsi tanpa nilai balik) dan non-
void (fungsi dengan nilai balik).
5. Ada dua cara pemanggilan fungsi yaitu call by value dan call by reference.
6. Fungsi rekursif adalah fungsi yang memangil dirinya sendiri. Artinya,
fungsi tersebut dipanggil di dalam tubuh fungsi itu sendiri.
E. Daftar Rujukan
1. Puspita, Candra Adi. 2014. Pemrograman Dasar. Malang: SMK Negeri 8
Malang.
2. Tim Asisten Praktikum. 2016. Modul 4: Perulangan (Array). Malang:
Teknik Elektro Universitas Negeri Malang.
3. Tim Asisten Praktikum. 2016. Modul 6: Fungsi (Function). Malang:
Teknik Elektro Universitas Negeri Malang.