Modul Praktikum Bahasa Pemrograman I
PRAKTIKUM 5
FUNGSI (SUB PROGRAM)
1. TUJUAN
1. Menjelaskan penggunaan sub program dalam bentuk fungsi dan prosedur
2. Mampu membuat fungsi dan prosedur
3. Mengerti dan mampu menggunakan parameter di fungsi dan prosedur
2. TEORI
Sub program adalah pemecahan program menjadi beberapa bagian yang lebih kecil.
Sub program (modul atau sub rutin) terdiri atas fungsi dan prosedur. Dalam bahasa C, sub
program disebut sebagai fungsi. Sifat fungsi seperti halnya di matematika adalah
menghasilkan/ mengembalikan (return) suatu nilai dari tipe tertentu, sedangkan prosedur
merupakan fungsi yang tidak menghasilkan nilai.
Fungsi merupakan suatu bagian dari program yang dimaksudkan untuk mengerjakan
suatu tugas tertentu dan terpisah program yang memanggilnya. Fungsi merupakan elemen
utama dalam bahasa C karena, bahasa C sendiri terbentuk dari kumpulan fungsi-fungsi.
Dalam setiap program bahasa C, minimal terdapat satu fungsi yaitu fungsi main(). Fungsi
banyak diterapkan dalam program C yang terstruktur. Keuntungan penggunaan fungsi
adalah program akan memiliki struktur yang jelas (mempunyai readability yang tinggi) dan
mereduksi penulisan bagian program yang sama. Dalam bahasa C fungsi dapat dibagi
menjadi dua, yaitu fungsi pustaka atau fungsi yang telah tersedia dalam C++ dan fungsi
yang didefinisikan atau dibuat oleh programmer. Beberapa fungsi yang telah tersedia di
dalam bahasa C++, antara lain: printf, scanf, getch, sqrt dan sebagainya.
2.1 Membuat Fungsi Sendiri
Sebelum digunakan, suatu fungsi harus dideklarasikan dan didefinisikan terlebih
dahulu. Bentuk umum pendeklarasian fungsi adalah :
tipe <NamaFungsi>(namaParameter);
Contoh:
float LuasSegitiga(float a, float t);
Hal-hal yang perlu diperhatikan dalam penggunaan fungsi :
1. Kalau tipe fungsi tidak disebutkan, maka akan dianggap sebagai fungsi dengan
nilai keluaran bertipe integer.
2. Untuk fungsi yang memiliki keluaran bertipe bukan integer, maka diperlukan
pendefinisian penentu tipe fungsi.
3. Untuk fungsi yang tidak mempunyai nilai keluaran (prosedur) digunakan tipe void
4. Pernyataan yang diberikan memberikan nilai akhir kepada fungsi adalah return.
PSMI FMIPA Universitas Riau
36
Modul Praktikum Bahasa Pemrograman I
2.2 Parameter
Parameter adalah media pertukaran data antara prosedur dan titik dimana ia
dipanggil. Parameter yang disebutkan dalam bagian deklarasi disebut parameter formal,
sedangkan parameter yang disertakan dalam pemanggilan disebut parameter aktual.
Pada saat fungsi dipanggil, parameter aktual berkoresponden dengan parameter
formal. Aturan dalam korespondesi satu-satu antara parameter aktual dan parameter formal
adalah:
1. Jumlah parameter aktual harus sama dengan parameter formal
2. Tipe parameter aktual harus sama dengan parameter formal
Berdasarkan penggunaannya parameter formal terdiri atas dua tipe yaitu parameter
masukan dan parameter masukan/keluaran. Parameter masukan (parameter by value ) adalah
parameter yang hanya mengirimkan nilai sebagai masukan bagi fungsi. Pengiriman
parameter secara nilai adalah pengiriman searah, yaitu dari
memanggil fungsi ke fungsi yang dipanggil.
bagian
program
yang
Parameter masukan/keluaran adalah parameter yang berfungsi sebagai masukan dan
keluaran bagi fungsi. Parameter ini disebut parameter by reference karena, yang dikirimkan
ke fungsi adalah alamat letak dari nilai datanya, bukan nilai datanya. Pengiriman
parameter secara referensi adalah pengiriman dua arah, yaitu dari fungsi pemanggil ke
fungsi
yang
dipanggil
dan
juga sebaliknya. Pada penggunaannya parameter
masukan/keluaran menggunakan simbol & sebelum nama parameter.
Dalam penerapannya, fungsi hanya menggunakan parameter masukan, sementara
untuk fungsi yang tidak menghasilkan nilai (prosedur) dapat menggunakan kedua tipe
parameter formal ini.
2.3 Pemanggilan Fungsi
Untuk mengeksekusi fungsi, nama fungsi harus di panggil dari program pemanggil,
misalnya dari program utama atau modul program lainnya. Agar fungsi dikenal oleh
program pemanggil, maka prototype fungsi harus dideklarasikan di awal program. Prototype
fungsi hanya berisi bagian judul (header).
Contoh:
#include <stdio.h>
#include <conio.h>
float LuasSegitiga(float, float); //prototype fungsi
main(){
int i,N;
float a,t;
printf("input banyak segitiga = ");
scanf("%d",&N);
for(i=1;i<=N;i++){
printf("input alas = ");scanf("%f",&a);
printf("input tinggi = ");scanf("%f",&t);
PSMI FMIPA Universitas Riau
37
Modul Praktikum Bahasa Pemrograman I
printf("%f\n",LuasSegitiga(a,t));
}
getch();
}
float LuasSegitiga(float alas, float tinggi) {
float luas;
luas = alas*tinggi/2;
return luas;
}
Karena yang dipentingkan adalah nilainya, maka parameter aktual boleh berupa ekspresi
atau konstanta dalam pemanggilannya
Contoh:
printf("%f\n",LuasSegitiga(a*0.2, t*0.1));
atau
printf("%f\n",LuasSegitiga(12, 6));
Penulisan fungsi LuasSegitiga dapat disederhanakan sebagai berikut:
float LuasSegitiga(float alas, float tinggi) {
return alas*tinggi/2;
}
Pernyataan return berfungsi untuk memberikan nilai ke nama fungsi.
2.4 Variabel Lokal dan Global
lokal :
•
•
Variabel lokal adalah variabel yang dideklarasikan di dalam fungsi. Sifat-sifat variabel
Secara otomatis akan diciptakan ketika fungsi dipanggil dan akan lenyap ketika
proses eksekusi terhadap fungsi berakhir.
Hanya dikenal oleh fungsi tempat variabel dideklarasikan.
Variabel global adalah variabel yang dideklarasikan di luar fungsi. Sifat-sifat variabel
global adalah dikenal (dapat diakses) oleh semua fungsi.
Berdasarkan contoh fungsi diatas, maka variabel luas disebut variabel lokal
sedangkan nama variabel yang dideklarasikan dalam program utama seperti i, N, a, t
disebut variabel global.
2.5 Prosedur
Prosedur merupakan suatu bagian dari program yang dimaksudkan untuk
mengerjakan suatu tugas tertentu dan letaknya terpisah dari program yang memanggilnya.
Perbedaan fungsi dan prosedur adalah,
fungsi
menghasilkan/mengembalikan
nilai,
sedangkan prosedur tidak mengembalikan nilai tertentu, tapi dapat memberikan hasil
PSMI FMIPA Universitas Riau
38
Modul Praktikum Bahasa Pemrograman I
yang ada di dalam prosedur itu. Prosedur disebut juga dengan fungsi tanpa tipe (void).
Prosedur dapat menggunakan parameter atau tidak.
Contoh prosedur tanpa parameter:
#include <stdio.h>
#include <conio.h>
void HitungLuasSegitiga(); //prototype prosedur
main(){
int i,N;
printf("input banyak segitiga = ");scanf("%d",&N);
for(i=1;i<=N;i++)
HitungLuasSegitiga();
getch();
}
void HitungLuasSegitiga() {
float alas, tinggi, luas;
printf("input alas dan tinggi = ");
scanf("%f %f",&alas,&tinggi);
luas = alas*tinggi/2;
printf("%f\n",luas);
}
Contoh prosedur dengan parameter masukan:
#include <stdio.h>
#include <conio.h>
void HitungLuasSegitiga(float alas, float tinggi);
void main(){
int i,N; float a,t;
scanf("%d",&N);
for (i=1;i<=N;i++){
printf("input alas dan tinggi = ");scanf("%f %f",&a,&t);
HitungLuasSegitiga(a,t);
}
getch();
}
void HitungLuasSegitiga(float alas, float tinggi){
float luas;
luas = alas*tinggi/2;
printf("%f\n",luas);
}
Contoh prosedur dengan parameter masukan/keluaran:
#include <stdio.h>
#include <conio.h>
void inc(int &x);
void main(){
int a = 0;
PSMI FMIPA Universitas Riau
39
Modul Praktikum Bahasa Pemrograman I
do{
printf("%d\n",a);
inc(a);
} while (a <= 10);
getch();
}
void inc(int &x){
x = x + 1;
}
Kasus:
Bandingkan hasil dari 2 program berikut!, program pertama memanggil prosedur dengan
parameter masukan dan program kedua dengan parameter masukan/keluaran.
Program 1:
#include <stdio.h>
#include <conio.h>
void Contoh(int x, int y);
void main(){
int a = 5,b = 10;
Contoh(a,b);
printf(“a = %d\nb = %d”,a,b);
getch();
}
void Contoh(int x, int y){
x = x + 5;
y = y + 10;
}
Berapakah output program ?
Program 2:
#include <stdio.h>
#include <conio.h>
void Contoh(int &x, int &y);
void main(){
int a = 5,b = 10;
Contoh(a,b);
printf("a = %d\nb = %d",a,b);
getch();
}
void Contoh(int &x, int &y){
x = x + 5;
y = y + 10;
}
Berapakah output program ?
PSMI FMIPA Universitas Riau
40
Modul Praktikum Bahasa Pemrograman I
2.6 Ragam Contoh Program
Contoh fungsi untuk melakukan validasi terhadap pin ATM Bank
#include <stdio.h>
#include <conio.h>
bool Valid(int p);
void main(){
int N,x,c=0;
printf("ATM Bank Mondar Mandir\n");
while (1) //selama true
{
printf("input pin : ");
scanf("%d",&N);
x = Valid(N);
if (x == false) {
c++;
if(c>=3) {
printf("anda sudah memasukkan pin 3 kali, maaf kartu anda
kami blokir");
break;
}
else
printf("pin anda salah\n");
}
else {
printf("pin benar, silahkan bertransaksi");
break;
}
}
getch();
}
bool Valid(int p){
int pass=12345;
if(pass == p)
return true;
else
return false;
}
Contoh prosedur yang menerima masukan berupa bilangan integer positif dan menampilkan
nilai tersebut dalam kata-kata
#include <stdio.h>
#include <conio.h>
void Satuan(int x);
void Puluhan(int x);
void Bilangan(int x);
void main(){
int a;
PSMI FMIPA Universitas Riau
41
Modul Praktikum Bahasa Pemrograman I
printf(“input bilangan sampai nilai puluhan”);
scanf("%d",&a);
Bilangan(a);
getch();
}
void Satuan(int x){
switch(x) {
case 1 : printf("satu ");break;
case 2 : printf("dua ");break;
case 3 : printf("tiga ");break;
case 4 : printf("empat ");break;
case 5 : printf("lima ");break;
case 6 : printf("enam ");break;
case 7 : printf("tujuh ");break;
case 8 : printf("delapan ");break;
case 9 : printf("sembilan ");break;
}
}
void Puluhan(int x){
if(x<10)
Satuan(x);
else if(x==10)
printf("sepuluh ");
else if(x==11)
printf("sebelas ");
else if(x>=12 && x<=19){
Satuan(x%10);
printf("belas ");
}
else if(x>=20 && x<=99){
Satuan(x/10);
printf("puluh ");
Satuan(x%10);
}
}
void Bilangan(int x) {
if (x <= 9)
Satuan(x);
if (x >= 10 && x <= 99)
Puluhan(x);
if (x >= 100 && x <= 999)
Ratusan(x);
if(x >= 1000 && x <= 9999)
Ribuan(x);
}
PSMI FMIPA Universitas Riau
42
Modul Praktikum Bahasa Pemrograman I
3. TUGAS
1. Jelaskan keuntungan menggunakan fungsi
2. Apa perbedaan antara deklarasi fungsi/prosedur dengan defenisinya ?
3. Dimana deklarasi fungsi/prosedur diletakkan?
4. Apa perbedaan penggunaan parameter parameter by value and by reference?
5. Apa yang salah dari deklarasi berikut: int f(int a,int b=0,c);
6. Modifikasi contoh prosedur yang menerima masukan berupa bilangan integer positif
dan menampilkan nilai dalam kata-kata dengan menambahkan prosedur Ratusan dan
Ribuan
4. LATIHAN
1. Buatlah prosedur yang menghasilkan nilai rata-rata dari 5 data
2. Tulislah prosedur dengan 2 parameter aktual yang bertugas untuk menukarkan nilai
dua parameter tersebut. Contoh Tukar(a,b) dengan a=4,b=5, setelah prosedur selesai
dijalankan a=5, b=4
3. Modifikasi soal no 1, membuat prosedur yang menghitung rata-rata nilai dari
sekumpulan data bilangan bulat yang dibaca secara berulang-ulang dari keyboard,
sampai data yang diinputkan bernilai 99.
4. Tulislah fungsi dengan parameter masukan char, dengan aturan, bila nilai parameter
p , fungsi menghasilkan nilai 1 dan w nilai 0.
5. Tulislah prosedur yang menerima masukan bilangan desimal dan mencetak bilangan
binernya
6. Tinjau algortima euclidean dengan menuliskannya ke fungsi yang menghasilkan nilai
faktor persekutuan terbesar
7. Menggunakan fungsi FPB dari soal no 6, tulislah prosedur yang menyederhanakan
bilangan rasional atau pecahan berbentuk a/b dimana a dan b adalah bilangan bulat
dan a < b. Contoh, masukan 5/10 akan menghasilkan ½, 60/90 akan menghasilkan
2/3, dst. Prosedur ini menerima dua parameter bilangan bulat yaitu pembilang dan
penyebut dari bilangan rasional. Algoritmanya adalah panggil fungsi FPB didalam
prosedur dengan parameter pembilang dan penyebut, kemudian bagi pembilang dan
penyebut dengan FPB. Contoh FPB(5,10) = 5, Pembilang = 5/5 = 1, Penyebut = 10/5
= 2.
5. LAPORAN
1. Buatlah laporan yang berisi jawaban dari tugas dan listing program dari latihan yang
anda lakukan.
2. Berilah kesimpulan hasil praktikum.
PSMI FMIPA Universitas Riau
43