SlideShare a Scribd company logo
1 of 18
Download to read offline
TEKNIK INFORMATIKA ITS
RAHMAT RIJAL
FUNGSI
PENDAHULUAN
Dalam bahasa C, sebuah program terdiri dari atas fungsi-fungsi, baik yang
didefinisikan secara langsung di dalam program maupun yang disimpan di dalam file
lain(misalnya file header). Satu fungsi yang pasti terdapat dalam program yang ditulis
menggunakan bahasa C adalah fungsi main( ). Fungsi tersebut merupakan fungsi utama dan
merupakan fungsi yang dieksekusi pertama kali.
Menurut definisinya, fungsi adalah suatu blok program yang di gunakan untuk
melakukan prosese-proses tertentu. Sebuah fungsi dibutuhkan untuk menjadikan program
yang akan kita buat menjadi lebih mudah dan untuk dipahami alurnya. Dengan adanya
fungsi, maka kita dapat mengurangi duplikasi kode program sehingga performa dari
program yang kita buat pun akan meningkat.
Dalam bahasa C, fungsi terbagi menjadi dua macam yaitu fungsi yang
mengembalikan nilai (return value) dan fungsi yang tidak mengembalikan nilai. Fungsi yang
tidak mengembalikan nilai tersebut dinamakan dengan void function. Bagi anda yang
sebelumnya pernah belajar pascal, void function ini serupa dengan procedure yang terdapat
di dalam bahas pascal.
Sebelum melangkah lebih jauh ke dalam bentuk pembentukan fungsi disini akan di
terangkan bagaimana kompilator C membaca fungsi-fungsi yang didefinisikan di dalam
program secara berurutan sesuai dengan waktu pemanggilannya. Untuk itu perhatikanlah
gambar ilustrasi berikut ini :
Fungsi main()
{
...
Fungsi1();
Fungsi2();
...
}
Fungsi1()
{
Fungsi3();
}
Fungsi2()
{
Fungsi3();
}
Fungsi3()
{
...
}
TEKNIK INFORMATIKA ITS
RAHMAT RIJAL
Mula-mula fungsi main( ) akan dieksekusi oleh kompilator. Oleh karena fungsi main()
tersebut memanggil Fungsi1( ). Dalam Fungsi1( ) juga terdapat pemanggilan Fungsi3(), maka
kompilator akan mengeksekusi Fungsi3( ) dan kembali mengeksekusi Fungsi1( ) (jika ada).
Setelah Fungsi1( ) selesai dieksekusi, kompilator akan kembali mengeksekusi baris
berikutnya pada fungsi main( ), yaitu dengan mengeksekusi kode-kode yang tedapat pada
fungsi2( ). Setelah selesai, maka kompilator akan melanjutkan pengeksekusian kode pada
baris-baris selanjutnya dalam fungsi main().
Apabila ternyata dalam fungsi main( ) tersebut ternyata dalam fungsi main( ) tersebut
kembali terdapat pemanggilan fungsi lain, maka kompilator akan meloncat ke fungsi lain
tersebut, begitu seterusnya sampai semua baris kode dalam fungsi main( ) selesai
dieksekusi.
Bagi anda yang merupakan para pemula di dunia pemograman, sebisa mungkin
biasakanlah untuk menggunakan fungsi daripada anda harus menuliskan kode secara
langsung pada fungsi main(). Oleh karena itu,pada bab ini saya akan membahas secara
detail mengenai bagaimana cara pembuatan fungsi di dalam bahasa C sehingga anda akan
mudah dan terbiasa dalam menginplementasikannya kedalam kasus-kasus program yang
akan anda hadapi.
APA NILAI YANG DIKEMBALIKAN OLEH FUNGSI MAIN( )
Pada bab-bab sebelumnya kita telah banyak menggunakan fungsi mani() di dalam
program yang kita buat. Mungkin sekarang anda akan bertanya apa sebenarnya nilai yang
dikembalikan oleh fungsi main() tersebut? Jawabannya adalah 0 dan 1. Apabila fungsi main()
mengembalikan nilai 0 ke sistem operasi, maka sisetem tersebut telah diekseskusi dengan
benar tanpa adanya keaslahan. Sedangkan apabila nilai yang dikembalikan ke sisitem
operasi adlah nilai 1, maka sistem operasi tersebut akan mengetahui bahwa program telah
di hentikan secara tidak normal(terdapat kesalahan). Dengan demikian, seharusnya fungsi
main() tidaklah mengembalikan tipe void, melainkan tipe int, seperti yang terlihat di bawah
ini :
Int main( )
{
...
Return 0; //mengembalikan nilai 0
}
TEKNIK INFORMATIKA ITS
RAHMAT RIJAL
Namun apabila anda ingin mendefinisikan nilai kembalian tersebut denga tipe void,
maka seharusnya anda menggunakan fungsi exit ( ) yang dapat berguna untuk
mengembalikan nilai ke sistem operasi (sama seperti halnya return ). Adapun parameter
yang di lewatkan ke fungsi exit () ini ada dua, yaitu :
1. Nilai 0 (EXIT_SUCCESS), yaitu menghentikan program secara normal.
2. Nilai 1 (EXIT_FAILURE), yaitu menghentikan program secara tidak normal.
Berikut ini contoh penggunaannya didalam fungsi main().
Void main(void)
{
...
Exit(0); // dapat ditulis exit (EXIT_SUCCESS)
}
FUNGSI TANPA NILAI BALIK
Pada umumnya fungsi tanpa nilai balik(return value) ini digunakan untuk melakukan
proses-proses yang tidak menghasilkan nilai, seperti melakukan pengulangan, proses
pengesetan nilai maupun yang lainnya. Dalam bahsa C, fungsi semacam ini tipe
kembaliaanya akan diisi dengan nilao void. Adapun bentuk umum dari pendefinisian fungsi
tanpa nilai balik adalah sebagai berikut :
Berikut ini contoh dari pembuatan fungsi tanpa nilai balik.
void Tulis10Kali()
{
int i;
for (i=0; i<10; i++) printf(“nsaya sedang belajar bahasa C);
}
Adapun contoh program lengkap yang akan menggunakan fungsi tersebut adalah seperti
yang tertulis di bawah ini :
Void nama_fungsi (parameter1, parameter2,...)
{
Statemen_yang_akan_dieksekusi;
....
}
TEKNIK INFORMATIKA ITS
RAHMAT RIJAL
#include<stdio.h>
void Tulis10Kali() //mendefi nisikan sebuah fungsi dengan nama tulis10kali
{
int i;
for (i=0; i<10; i++)
{
printf(“saya sedang belajar bahasa c);
}
}
int main()
{
Tulis10Kali(); //memanggil fungsi tulis10kali()
return 0;
}
Apabila dijalankan, program tersebut akan memberika hasil sebagai berikut :
Apabila anda perhatikan secara teliti fungsi Tulis10Kali() dalam program diatas tidak
menghasilkan nilai, melainkan melakukan proses, yaitu penulisan teks ‘saya sedang belajar
bahasa c’ sebanyak sepuluh kali. Fungsi semacam inilah yang tersebut dengan fungsi tanpa
nilai balik(void function).
Sebenarnya sebuah fungsi tanpa nilai baik juga dapat digunakan untuk menghasilkan
nilai dari suatu proses tertentu, yaitu dengan menampungnya kedalam suatu parameter.
Namun hal itu baru akan kita bahas pada sub bab selanjutnya dalam bab ini (lihat sub bab
TEKNIK INFORMATIKA ITS
RAHMAT RIJAL
Fungsi dengan parameter). Pada sintak diatas, variabel x dinamakan sebagai parameter
formal . sekarang perhatikan sintaknya berikut.
Int main()
{
int a=10, hasil;
hasil=TambahanSatu(a);
return 0;
}
Pada saat pemanggilan fungsi TambahanSatu( ) diatas, variabel a dinamakan dengan
parameter aktual. Namun sebelum anda mempelajari bagaimana cara melewatkan
parameter didalam sebuah fungsi, ana hatus mengetahui terlebuh dahulu jenis-jenis
parameter tersebut.
JENIS-JENIS PARAMETER
Dalam dunia pemograman di kenal tiga jenis parameter, yaitu parameter masukan,
keluaran dan masukan/keluaran. Untuk memahami perbedaaan dari setiap jenis parameter,
disini kiata akan memabahasnya satu per satu.
a. Parameter Masukan
Parameter masukan adalah parameter yang digunakan untuk menampung nilai data
yang akan dijadikan sebagai masukan(input) kedalam fungsi. Artinya, sebuah fungsi
dapat menghasilkan niali yang berbeda tegantung dari nilai parameter yang di masukkan
pada saat pemanggilan fungsi tersebut. Berikut ini contoh program yang akan
menunjukkan kegunaan dari parameter masukan.
#include <stdio.h>
#define PI 3.14159
double HitugkelilingLingkaran(int radius) //mendefinisikan suatu fungsi dengan
{ // parameter berjenis masukan.
double K;
K = 2 * PI * radius;
return K;
}
int main() //Fungsi utama
TEKNIK INFORMATIKA ITS
RAHMAT RIJAL
{
int R;
double keliling;
printf(“masukkan nilai jari-jari lingkaran : ”);
scanf(“%d”,&R);
keliling = HitugkelilingLingkaran(R);
printf(“Keliling Lingkaran dengan jari-jari %d : %f”,R,keliling);
return 0;
}
Contoh hasil yang akan diberikan apabila program diatas di jalankan adalah sebagai
berikut :
Pada sintak diatas, variabel R merupakan parameter aktual yang berfungsi sebagai
parameter masukan karena variabel tersebut digunakan untuk menampung nilai yang
akan menjadi (input) untuk proses perhitungan di dalam fungsi
HitungKelilingLingkaran(). Sekarang perhatikan apabila kita memasukkan nilai
parameter di atas dengan nilai 7, maka program akan memberikan hasil yang berbeda
seperti terlihat di bawah ini :
Hal ini membuktikan bahwa fungsi HitungLuasLingkaran() akan menghasilkan nilai yang
berbeda sesuai nilai parameter yang dimasukkan.
b. Parameter Keluaran
Kebalikan dari parameter masukan, parameter keluaran adalah parameter yang
digunakan untuk menampung nilai kembalikan untuk manampung nilai kembalikan/ nilai
TEKNIK INFORMATIKA ITS
RAHMAT RIJAL
keluaran (output) dari suatu proses. Umumnya parameter jenis ini digunakan didalam
fungsi yang tidak mempunyai nilai balik. Untuk lebih memahaminya, perhatikan contoh
program di bawah ini yang merupakan modifikasi dari program sebelumnya.
#include <stdio.h>
#define PI 3.14159
//mendefinisikan fungsi yang mengandung parameter parameter keluaran.
double HitugkelilingLingkaran(int radius, double *K)
{
*K = 2 * PI *radius;
}
int main() //Fungsi utama
{
int R;
double keliling;
printf(“masukkan nilai jari-jari lingkaran : ”);
scanf(“%d”,&R);
HitugkelilingLingkaran(R , &keliling);
printf(“Keliling Lingkaran dengan jari-jari %d : %f”,R,keliling);
return 0;
}
Pada sintak program diatas, variabel keliling berfungsi sebagai parameter keluaran
karena variabel tersebut digunakan untuk menampung nilai hasil dari proses yang
terdapat di dalam fungsi. Sedangkan variabel R adalah variabel yang berfungsi sebagai
parameter masukan dimana nilainya di gunakan untuk menampung nilai yang akan di
lewatkan ke dalam fungsi. Adapun contoh hasil yang akan di berikan dari program di
atas adalah seperti yang tertera di bawah ini.
TEKNIK INFORMATIKA ITS
RAHMAT RIJAL
c. Parameter Masukan/keluaran
Selain parameter masukan dan keluaran,terdapat juga parameter jenis lain, yaitu
parameter masukan/keluaran dimana parameter tersebut mempunyai dua buah
kegunaan, yaitu sebagai berikut :
 Pertama parameter ini akan bertindak sebagai parameter yang menampung nilai
masukan.
 Setelah itu, parameter ini akan bertindak sebagai parameter yang menampung
nilai keluaran.
Untuk lebih memahaminya , berikut ini diberikan contoh program dimana di dalamnya
terdapat sebuah parameter yang berperan sebagai parameter masukan/keluaran.
Adapun sintak programnya adalah seperti yang terlihat dibawah ini.
#include <stdio.h>
#define PI 3.14159
//mendefinisikan fungsi yang mengandung parameter parameter masukan/keluaran.
double HitugkelilingLingkaran(double *X)
{
*X = 2 * PI *(*X);
}
int main() //Fungsi utama
{
int R;
double param;
printf(“masukkan nilai jari-jari lingkaran : ”);
scanf(“%d”,&R);
param=(double) R;
HitugkelilingLingkaran(&param);
printf(“Keliling Lingkaran dengan jari-jari %d : %f”,R,param);
return 0;
}
TEKNIK INFORMATIKA ITS
RAHMAT RIJAL
Apabila dijalankan program diatas akan memberikan hasil sebagi berikut :
MELEWATKAN PARAMETER BERDASARKAN NILAI (PASS BY VALUE)
Terdapat dua buah cara untuk melewatkan parameter ke dalam sebuah fungsi, yaitu
dengan cara melewatkan berdasarkan nilainya (pas by value) dan berdasarkan alamatnya
(pass by reference). Namun pada bagian hanya akan dibahas mengenai pelewatan
parameter berdasarkan nilai saja, sedangkan untuk pelewatan parameter berdasarkan
alamat akan kita bahas pad sub bab berikutnya.
Pada pelewatan parameter berdasarkan nilai, terjadi proses penyalinan (copy) nilai
dari parameter formal ke parameter aktual. Hal ini akan menyebabkan nilai variabel yang di
hasilkan oleh proses di dalam fungsi tidak akan berpengaruh terhadap nilai variabel yang
terdapat di luar fungsi. Untuk lebih memahaminya, perhatikan contoh program berikut
dimana didalamnya terdapat sebua parameter yang di lewatkan dengan cara pass by value.
#include <stdio.h>
//mendefinisikan fungsi dengan melewatkan parameter berdasarkan nilai
void TambahSatu(int x)
{
x++;
//menampilkan nilai yang terdapat di dalam fungsi
printf(“nilai di dalam fungsi : %dn”,x);
}
int main() //fungsi utama
{
int bilangan;
printf(“masukkan sebuah bilangan bulat : “ );
scanf(“%d”, &bilangan);
//menampilkan nilai awal
printf(“nnilai awal : %dn”, bilangan);
TEKNIK INFORMATIKA ITS
RAHMAT RIJAL
//memanggil fungsi TambahSatu
TambahSatu(bilangan);
//menampilkan nilai akhir
printf(“nilai akhir : %dn”,bilangan);
return 0;
}
Apabila dijalankan program diatas akan memberikan hasil sebagi berikut :
Seperti yang kita lihat pada hasil program diatas bahwa nilai dari variabel bilangan
tetap bernilai 10 walaupun kita telah memanggil fungsi TambahSatu( ). Hal ini disebabkan
karena variabel bilangan dan bilangan x merupakan dua variabel yang berbeda sehingga
terjadi hanyalah proses penyalinan (peng-copy-an) nilai dari variabel bilangan ke variabel x
tentu tidak akan mempengaruhi nilai variabel lain.
MELEWAT PARAMETER BERDASARKAN ALAMAT (PASS BY REFERENCE)
Disini, parameter yang dilewatkan ke dalam fungsi bukanlah berupa nilai, melainkan
suatu alamat memori. Pada saat kita melewatkan parameter berdasarkan alamat , terjadi
proses referenisal anatara variabel yang terdapat pada parameter formal dengan variabel
yang terdapat parameter aktual. Hal tersebut menyebabkan kedua variabel tersebut akan
berada pada satu alamat di memori yang sama sehingga apabila terdapat perubahan nilai
terhadap salah satu dari variabel tersebut, maka nilai variabel satunya juga akan ikut
berubah. Untuk melakukan hal itu, parameter fungsi tersebut harus kita jadikan sebagai
pointer.
Agar lebih memahami materi ini, disini kita akan menuliskan kembali kasus diatas
kedalam suatu program. Namun, sekarang kita akan melakukannya dengan menggunakan
cara pass by reference. Adapun sintak programnya adalah sebagai berikut :
TEKNIK INFORMATIKA ITS
RAHMAT RIJAL
#include <stdio.h>
//mendefinisikan fungsi dengan melewatkan parameter berdasarkan alamat
void TambahSatu(int *x)
{
(*x)++;
//menampilkan nilai yang terdapat di dalam fungsi
printf(“nilai di dalam fungsi : %dn”,*x);
}
int main() //fungsi utama
{
int bilangan;
printf(“masukkan sebuah bilangan bulat : “ );
scanf(“%d”, &bilangan);
//menampilkan nilai awal
printf(“nnilai awal : %dn”, bilangan);
//memanggil fungsi TambahSatu dengan mengirimkan alamat variabel bilangan
TambahSatu(&bilangan);
//menampilkan nilai akhir
printf(“nilai akhir : %dn”,bilangan);
return 0;
}
Contoh hasil yang akan di berikan dari program diatas adalah sebgai berikut :
Seperti yang kita lihat di atas bahwa proses pass by reference, merupakan nilai di dalam
fungsi akan mempengaruhi niali di luar fungsi.
TEKNIK INFORMATIKA ITS
RAHMAT RIJAL
MEMBUAT PROTOTIPE FUNGSI
Secara default, pendefinisian fungsi-fungsi di dalam program akan dilakukan
sebelum fungsi main( ). Namun bahasa C telah mengizinkan kita untuk dapat mendefinisikan
fungsi-fungsi lain tersebut setelah melkukan penulisan fungsi main() asalkan kita menuliskan
prototipe dari fungsi-fungsi sebelum fungsi main( ).
Berikut ini contoh yang akan menunjukkan pembuatan program dengan melakukan
prototipe fungsi. Disini kita akan membuat program yang dapat melakukan konversi suhu
dari celcius ke fahreinheit, yaitu dengan menggunakan persamaan berikut :
(F - 32) / c = 9/5
Adapun sintak program yg dimaksud tersebut adalah seperti yang tertulis dibawah ini.
#include<stdio.h>
//membuat prototipe dari fungsi celciuskefahrenheit()
float celciuskefahrenheit(float suhu);
int main()
{
float c, f;
printf(“masukkan suhu yang akan di konversi : ”);
scanf(“%f”,&c);
//memanggil fungsi celciuskefahrenheit() dengan menampungnya ke variabel f
f= celciuskefahrenheit(c);
//menmpilkan nilai hasil konversi
printf(“%.2f c = %.2f f”,c,f);
return 0;
}
//implementasi fungsi celciuskefahrenheit
float celciuskefahrenheit(float suhu)
{
float hasil;
hasil = ((9*suhu)/5)+32;
return hasil;
}
TEKNIK INFORMATIKA ITS
RAHMAT RIJAL
Contoh program diatas akan diperoleh dari program di atas adala sebagai berikut
REKURSI
Rekursi adalah proses pemanggilan fungsi oleh dirinya sendiri secara berulah. Istilah
“rekursi” sebenarnya bersal dari bahasa latin ”recursus” yang berarti menjalankan
kebelakang. Rekursi digunakan untuk penyederhanaan program yang di hasilkan menjadi
lebih efisien. Pada bagian ini kita kan mempelajari langsung melalui contoh-contoh program.
a. Menentukan Nilai Faktorial
Pada bagian ini kiat akan membuat sebuah fungsi rekursif untuk menentukan nilai
faktorial dengan memasukkan nilai yang akan di hitung sebagai parameter funsgi ini.
Sebagai contoh apabila parameter yang kita masukkan adalah 5, maka hasilnya
adalah.
5!=5x4x3x2x1=120
Proses tersebut dapat kita sederhanakan melalui fungsi matematis sebagai berikut :
F! (N) = N * F! (N-1)
Namun yang harus kita perhatikan adalah F!(0) = 1, ini adalah suatu tetapan numerik
yang tidak dapat diubah. Berikut ini contoh implementasi kasus tersebut kedalam
sebuah program.
#include<stdio.h>
//mendefiniskan fungsi untuk menghitung niali faktorial
int faktorial(int n)
{
if(n==0)
{
return 1;
}
TEKNIK INFORMATIKA ITS
RAHMAT RIJAL
else
{
return n* faktorial(n-1);
}
}
int main() //fungsi utama
{
int bilangan ;
printf(“masukkan bilangan yang akan di hitung : “);
scanf(“%d”,&bilangan);
printf(“%d! = %d”, bilangan , faktorial(bilangan));
return 0;
}
Contoh hasil yang akan di berikan dari program diatas adalah sebgai berikut:
Konsep dari proses di atas sebenarnya sederhana, yaitu dengan melakukan
pemanggilan fungsi faktorial () secara berulang. Untuk kasus ini, proses yang di
lakukan adalah sebagai berikut :
Faktorial(5)=5* Faktorial(4)
Faktorial(4)=4* Faktorial(3)
Faktorial(3)=3 *Faktorial(2)
Faktorial(2)=2* Faktorial(1)
Faktorial(1)=1* Faktorial(0)
Faktorial(0)=1
Faktorial(1)= 1 * 1
Faktorial(2)= 2 * 1
Faktorial(3)= 3 * 2
Faktorial(4)= 4 * 6
TEKNIK INFORMATIKA ITS
RAHMAT RIJAL
Faktorial(5)= 5 * 24 = 120
b. Menetukan Nilai Perpangkatan
Sekarang kita akan melakukan rekursi untuk menghitung nilai BN
, dimana B adalah
basis dan N adalah nilai eksponen. Kita dapat merumuskan fungsi tersebut seperti
dibawah ini.
BN
= B * B N-1
Apabila kita implementasikan kedalam program maka sintaknya kurang lebih sebagai
berikut :
#include<stdio.h>
//mendefinisikan fungsi untuk menghitung nilai eksponensial
int pangkat(int basis, int e)
{
if(e==0)
{
return 1;
}
else
{
return basis * pangkat(basis, e-1);
}
}
int main() //fungsi utama
{
int b, n;
printf(“masukkan bilangan basis : ”);
scanf(“%d”,&b);
printf(“masukkan bilangan eksponen : ”);
scanf(“%d”,&n);
printf(”%d^%d = %d”, b, n, pangkat(b,n));
return 0;
}
TEKNIK INFORMATIKA ITS
RAHMAT RIJAL
Contoh hasil yang akan di berikan program diatas adalah seperti yang terlihat di
bawah ini :
Proses yang terdapat di atas adalah sebagai berikut :
pangkat(2 , 5) = 2 * pangkat (2 , 4 )
pangkat(2 , 4) = 2 * pangkat (2 , 3 )
pangkat(2 , 3) = 2 * pangkat (2 , 2 )
pangkat(2 , 2) = 2 * pangkat (2 , 1 )
pangkat(2 , 1) = 2 * pangkat (2 , 0)
pangkat(2 , 0) = 1
pangkat(2 , 1) = 2 * 1
pangkat(2 , 2) = 2 * 2
pangkat(2 , 3) = 2 * 4
pangkat(2 , 4) = 2 * 8
pangkat(2 , 5) = 2 * 16 = 32
c. Konversi Bilangan Desimal Ke Bilangan Biner
Kali ini kit akan membuat sebuah fungsi rekursif tanpa nilai balik yang akan di
gunakan untuk melakukan konversi bilangan desimal ke bilangan biner. Disini kita
tidak akan membahas bagaimana proses pegkonversian tersebut, melainkan kita
lebih berkonsentrasi ke pembahasan mengenai rekursi. Adapun sintak program
untuk melakukan hal tersebut adalah sebagai berikut :
#include<stdio.h>
void desimalkebiner(int n)
{
if(n>1)
{
TEKNIK INFORMATIKA ITS
RAHMAT RIJAL
desimalkebiner(n/2);
}
printf(“%d”, n%2);
}
int main()
{
int a;
printf(“masukkan bilangan desimal yang akan di konversi : ”);
scanf(“%d”,&a);
printf(“%d dalam biner : ”, a);
desimalkebiner(a);
return 0;
}
Contoh hasil yang akan di berikan program diatas adalah seperti yang terlihat di
bawah ini :
d. Konversi Bilangan Desimal Ke Bialngan Heksadesimal
Pada sub bab sebelumnya anda telah mempelajari bagaimana melakukan rekursi
dari konversi bilangan desimal ke bilangan biner. Sekarang kit akan membahas juga
bagaimana melakukan rekursi dari konversi bilangan desimal ke bilangan
hekasadesimal. Adapun sintak program nya adalag sebagai berikut :
#include<stdio.h>
void desimalkeheksa(int n)
{
char *daftarheksa*+ = , “0”, “1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”,
“A”, “B”, “C”, “D”, “E”, “F”,-;
if(n>15)
{
TEKNIK INFORMATIKA ITS
RAHMAT RIJAL
desimalkeheksa(n/16);
}
printf(“%s”, daftarheksa*n%16+);
}
int main()
{
int a;
printf(“masukkan bilangan yang akan di konversi : ”);
scanf(“%d”,&a);
printf(“%d dalam heksadesimal : “,a);
desimalkeheksa(a);
return 0;
}
Contoh hasil yang akan di berikan program diatas adalah seperti yang terlihat di
bawah ini :

More Related Content

What's hot (20)

E1 e117049 nurfadhila fahmi_tugas3
E1 e117049 nurfadhila fahmi_tugas3E1 e117049 nurfadhila fahmi_tugas3
E1 e117049 nurfadhila fahmi_tugas3
 
Laporan praktikum modul iv
Laporan praktikum modul ivLaporan praktikum modul iv
Laporan praktikum modul iv
 
Pemrograman C++ - Sintaks Dasar
Pemrograman C++ - Sintaks DasarPemrograman C++ - Sintaks Dasar
Pemrograman C++ - Sintaks Dasar
 
Pertemuan 11 : Algoritma & Pemrograman
Pertemuan 11 : Algoritma & PemrogramanPertemuan 11 : Algoritma & Pemrograman
Pertemuan 11 : Algoritma & Pemrograman
 
C programming language notes (5)
C programming language notes (5)C programming language notes (5)
C programming language notes (5)
 
Dasar c
Dasar cDasar c
Dasar c
 
M04b dasar program c
M04b dasar program cM04b dasar program c
M04b dasar program c
 
Awal dasar belajar c++
Awal dasar belajar c++Awal dasar belajar c++
Awal dasar belajar c++
 
Bahasa pemograman
Bahasa pemograman Bahasa pemograman
Bahasa pemograman
 
Tugas struktur data
Tugas struktur dataTugas struktur data
Tugas struktur data
 
Algoritma Pemrograman - Perintah Input/Output
Algoritma Pemrograman - Perintah Input/OutputAlgoritma Pemrograman - Perintah Input/Output
Algoritma Pemrograman - Perintah Input/Output
 
Modul PBO Bab-01 - Pengenalan Java
Modul PBO Bab-01 - Pengenalan JavaModul PBO Bab-01 - Pengenalan Java
Modul PBO Bab-01 - Pengenalan Java
 
Tipe data
Tipe dataTipe data
Tipe data
 
P1 2-tipe data
P1 2-tipe dataP1 2-tipe data
P1 2-tipe data
 
Analisis Semantik - P 6 Teknik Kompilasi
Analisis Semantik - P 6 Teknik KompilasiAnalisis Semantik - P 6 Teknik Kompilasi
Analisis Semantik - P 6 Teknik Kompilasi
 
Cara membuat fungsi dan prosedur pada java
Cara membuat fungsi dan prosedur pada javaCara membuat fungsi dan prosedur pada java
Cara membuat fungsi dan prosedur pada java
 
Procedur
ProcedurProcedur
Procedur
 
Pointer
PointerPointer
Pointer
 
Praktikum
PraktikumPraktikum
Praktikum
 
Algoritma Pemrograman - Pendahuluan
Algoritma Pemrograman - PendahuluanAlgoritma Pemrograman - Pendahuluan
Algoritma Pemrograman - Pendahuluan
 

Similar to Fungsi

Similar to Fungsi (20)

Pertemuan vi (Function Java)
Pertemuan vi (Function Java)Pertemuan vi (Function Java)
Pertemuan vi (Function Java)
 
Laporan praktikum modul vi
Laporan praktikum modul viLaporan praktikum modul vi
Laporan praktikum modul vi
 
07 function 2
07 function 207 function 2
07 function 2
 
fungsi algoritma
fungsi algoritmafungsi algoritma
fungsi algoritma
 
5 adp fungsi & rekursi
5   adp fungsi & rekursi5   adp fungsi & rekursi
5 adp fungsi & rekursi
 
5.adp fungsi & rekursi
5.adp fungsi & rekursi5.adp fungsi & rekursi
5.adp fungsi & rekursi
 
5 adp fungsi & rekursi
5   adp fungsi & rekursi5   adp fungsi & rekursi
5 adp fungsi & rekursi
 
5 adp fungsi & rekursi
5   adp fungsi & rekursi5   adp fungsi & rekursi
5 adp fungsi & rekursi
 
5 adp fungsi & rekursi
5   adp fungsi & rekursi5   adp fungsi & rekursi
5 adp fungsi & rekursi
 
Modul pd
Modul pdModul pd
Modul pd
 
Bab6.function
Bab6.functionBab6.function
Bab6.function
 
Function c++
Function c++Function c++
Function c++
 
Modul c++
Modul c++Modul c++
Modul c++
 
Javascript function
Javascript   functionJavascript   function
Javascript function
 
Pertemuan 11 Fungsi (Function)
Pertemuan 11 Fungsi (Function)Pertemuan 11 Fungsi (Function)
Pertemuan 11 Fungsi (Function)
 
Topik 10 Fungsi
Topik 10 FungsiTopik 10 Fungsi
Topik 10 Fungsi
 
Function
FunctionFunction
Function
 
Materi kuliah 18 fungsi part 1
Materi kuliah 18   fungsi part 1Materi kuliah 18   fungsi part 1
Materi kuliah 18 fungsi part 1
 
Tutorial basic of c++ lesson 1 ind ver
Tutorial basic of c++ lesson 1 ind verTutorial basic of c++ lesson 1 ind ver
Tutorial basic of c++ lesson 1 ind ver
 
Function c++
Function c++Function c++
Function c++
 

Recently uploaded

Modul Ajar Bahasa Indonesia Kelas 4 Fase B
Modul Ajar Bahasa Indonesia Kelas 4 Fase BModul Ajar Bahasa Indonesia Kelas 4 Fase B
Modul Ajar Bahasa Indonesia Kelas 4 Fase BAbdiera
 
Aksi nyata disiplin positif Hj. Hasnani (1).pdf
Aksi nyata disiplin positif Hj. Hasnani (1).pdfAksi nyata disiplin positif Hj. Hasnani (1).pdf
Aksi nyata disiplin positif Hj. Hasnani (1).pdfDimanWr1
 
PPT Integrasi Islam & Ilmu Pengetahuan.pptx
PPT Integrasi Islam & Ilmu Pengetahuan.pptxPPT Integrasi Islam & Ilmu Pengetahuan.pptx
PPT Integrasi Islam & Ilmu Pengetahuan.pptxnerow98
 
Bab 6 Kreatif Mengungap Rasa dan Realitas.pdf
Bab 6 Kreatif Mengungap Rasa dan Realitas.pdfBab 6 Kreatif Mengungap Rasa dan Realitas.pdf
Bab 6 Kreatif Mengungap Rasa dan Realitas.pdfbibizaenab
 
421783639-ppt-overdosis-dan-keracunan-pptx.pptx
421783639-ppt-overdosis-dan-keracunan-pptx.pptx421783639-ppt-overdosis-dan-keracunan-pptx.pptx
421783639-ppt-overdosis-dan-keracunan-pptx.pptxGiftaJewela
 
AKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptx
AKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptxAKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptx
AKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptxWirionSembiring2
 
TUGAS GURU PENGGERAK Aksi Nyata Modul 1.1.pdf
TUGAS GURU PENGGERAK Aksi Nyata Modul 1.1.pdfTUGAS GURU PENGGERAK Aksi Nyata Modul 1.1.pdf
TUGAS GURU PENGGERAK Aksi Nyata Modul 1.1.pdfElaAditya
 
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMMLaporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMMmulyadia43
 
tugas 1 tutorial online anak berkebutuhan khusus di SD
tugas 1 tutorial online anak berkebutuhan khusus di SDtugas 1 tutorial online anak berkebutuhan khusus di SD
tugas 1 tutorial online anak berkebutuhan khusus di SDmawan5982
 
Refleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptx
Refleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptxRefleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptx
Refleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptxIrfanAudah1
 
11 PPT Pancasila sebagai Paradigma Kehidupan dalam Masyarakat.pptx
11 PPT Pancasila sebagai Paradigma Kehidupan dalam Masyarakat.pptx11 PPT Pancasila sebagai Paradigma Kehidupan dalam Masyarakat.pptx
11 PPT Pancasila sebagai Paradigma Kehidupan dalam Masyarakat.pptxMiftahunnajahTVIBS
 
Modul Ajar Biologi Kelas 11 Fase F Kurikulum Merdeka [abdiera.com]
Modul Ajar Biologi Kelas 11 Fase F Kurikulum Merdeka [abdiera.com]Modul Ajar Biologi Kelas 11 Fase F Kurikulum Merdeka [abdiera.com]
Modul Ajar Biologi Kelas 11 Fase F Kurikulum Merdeka [abdiera.com]Abdiera
 
Dampak Pendudukan Jepang.pptx indonesia1
Dampak Pendudukan Jepang.pptx indonesia1Dampak Pendudukan Jepang.pptx indonesia1
Dampak Pendudukan Jepang.pptx indonesia1udin100
 
soal AKM Mata Pelajaran PPKN kelas .pptx
soal AKM Mata Pelajaran PPKN kelas .pptxsoal AKM Mata Pelajaran PPKN kelas .pptx
soal AKM Mata Pelajaran PPKN kelas .pptxazhari524
 
PELAKSANAAN + Link2 Materi TRAINING "Effective SUPERVISORY & LEADERSHIP Sk...
PELAKSANAAN  + Link2 Materi TRAINING "Effective  SUPERVISORY &  LEADERSHIP Sk...PELAKSANAAN  + Link2 Materi TRAINING "Effective  SUPERVISORY &  LEADERSHIP Sk...
PELAKSANAAN + Link2 Materi TRAINING "Effective SUPERVISORY & LEADERSHIP Sk...Kanaidi ken
 
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docxtugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docxmawan5982
 
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...Kanaidi ken
 
REFLEKSI MANDIRI_Prakarsa Perubahan BAGJA Modul 1.3.pdf
REFLEKSI MANDIRI_Prakarsa Perubahan BAGJA Modul 1.3.pdfREFLEKSI MANDIRI_Prakarsa Perubahan BAGJA Modul 1.3.pdf
REFLEKSI MANDIRI_Prakarsa Perubahan BAGJA Modul 1.3.pdfirwanabidin08
 
aku-dan-kebutuhanku-Kelas 4 SD Mapel IPAS
aku-dan-kebutuhanku-Kelas 4 SD Mapel IPASaku-dan-kebutuhanku-Kelas 4 SD Mapel IPAS
aku-dan-kebutuhanku-Kelas 4 SD Mapel IPASreskosatrio1
 
AKSI NYATA NARKOBA ATAU OBAT TERLARANG..
AKSI NYATA NARKOBA ATAU OBAT TERLARANG..AKSI NYATA NARKOBA ATAU OBAT TERLARANG..
AKSI NYATA NARKOBA ATAU OBAT TERLARANG..ikayogakinasih12
 

Recently uploaded (20)

Modul Ajar Bahasa Indonesia Kelas 4 Fase B
Modul Ajar Bahasa Indonesia Kelas 4 Fase BModul Ajar Bahasa Indonesia Kelas 4 Fase B
Modul Ajar Bahasa Indonesia Kelas 4 Fase B
 
Aksi nyata disiplin positif Hj. Hasnani (1).pdf
Aksi nyata disiplin positif Hj. Hasnani (1).pdfAksi nyata disiplin positif Hj. Hasnani (1).pdf
Aksi nyata disiplin positif Hj. Hasnani (1).pdf
 
PPT Integrasi Islam & Ilmu Pengetahuan.pptx
PPT Integrasi Islam & Ilmu Pengetahuan.pptxPPT Integrasi Islam & Ilmu Pengetahuan.pptx
PPT Integrasi Islam & Ilmu Pengetahuan.pptx
 
Bab 6 Kreatif Mengungap Rasa dan Realitas.pdf
Bab 6 Kreatif Mengungap Rasa dan Realitas.pdfBab 6 Kreatif Mengungap Rasa dan Realitas.pdf
Bab 6 Kreatif Mengungap Rasa dan Realitas.pdf
 
421783639-ppt-overdosis-dan-keracunan-pptx.pptx
421783639-ppt-overdosis-dan-keracunan-pptx.pptx421783639-ppt-overdosis-dan-keracunan-pptx.pptx
421783639-ppt-overdosis-dan-keracunan-pptx.pptx
 
AKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptx
AKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptxAKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptx
AKSI NYATA MODUL 1.2-1 untuk pendidikan guru penggerak.pptx
 
TUGAS GURU PENGGERAK Aksi Nyata Modul 1.1.pdf
TUGAS GURU PENGGERAK Aksi Nyata Modul 1.1.pdfTUGAS GURU PENGGERAK Aksi Nyata Modul 1.1.pdf
TUGAS GURU PENGGERAK Aksi Nyata Modul 1.1.pdf
 
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMMLaporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
Laporan Guru Piket untuk Pengisian RHK Guru Pengelolaan KInerja Guru di PMM
 
tugas 1 tutorial online anak berkebutuhan khusus di SD
tugas 1 tutorial online anak berkebutuhan khusus di SDtugas 1 tutorial online anak berkebutuhan khusus di SD
tugas 1 tutorial online anak berkebutuhan khusus di SD
 
Refleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptx
Refleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptxRefleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptx
Refleksi Mandiri Modul 1.3 - KANVAS BAGJA.pptx.pptx
 
11 PPT Pancasila sebagai Paradigma Kehidupan dalam Masyarakat.pptx
11 PPT Pancasila sebagai Paradigma Kehidupan dalam Masyarakat.pptx11 PPT Pancasila sebagai Paradigma Kehidupan dalam Masyarakat.pptx
11 PPT Pancasila sebagai Paradigma Kehidupan dalam Masyarakat.pptx
 
Modul Ajar Biologi Kelas 11 Fase F Kurikulum Merdeka [abdiera.com]
Modul Ajar Biologi Kelas 11 Fase F Kurikulum Merdeka [abdiera.com]Modul Ajar Biologi Kelas 11 Fase F Kurikulum Merdeka [abdiera.com]
Modul Ajar Biologi Kelas 11 Fase F Kurikulum Merdeka [abdiera.com]
 
Dampak Pendudukan Jepang.pptx indonesia1
Dampak Pendudukan Jepang.pptx indonesia1Dampak Pendudukan Jepang.pptx indonesia1
Dampak Pendudukan Jepang.pptx indonesia1
 
soal AKM Mata Pelajaran PPKN kelas .pptx
soal AKM Mata Pelajaran PPKN kelas .pptxsoal AKM Mata Pelajaran PPKN kelas .pptx
soal AKM Mata Pelajaran PPKN kelas .pptx
 
PELAKSANAAN + Link2 Materi TRAINING "Effective SUPERVISORY & LEADERSHIP Sk...
PELAKSANAAN  + Link2 Materi TRAINING "Effective  SUPERVISORY &  LEADERSHIP Sk...PELAKSANAAN  + Link2 Materi TRAINING "Effective  SUPERVISORY &  LEADERSHIP Sk...
PELAKSANAAN + Link2 Materi TRAINING "Effective SUPERVISORY & LEADERSHIP Sk...
 
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docxtugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
tugas 1 anak berkebutihan khusus pelajaran semester 6 jawaban tuton 1.docx
 
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
PELAKSANAAN + Link2 Materi Pelatihan "Teknik Perhitungan & Verifikasi TKDN & ...
 
REFLEKSI MANDIRI_Prakarsa Perubahan BAGJA Modul 1.3.pdf
REFLEKSI MANDIRI_Prakarsa Perubahan BAGJA Modul 1.3.pdfREFLEKSI MANDIRI_Prakarsa Perubahan BAGJA Modul 1.3.pdf
REFLEKSI MANDIRI_Prakarsa Perubahan BAGJA Modul 1.3.pdf
 
aku-dan-kebutuhanku-Kelas 4 SD Mapel IPAS
aku-dan-kebutuhanku-Kelas 4 SD Mapel IPASaku-dan-kebutuhanku-Kelas 4 SD Mapel IPAS
aku-dan-kebutuhanku-Kelas 4 SD Mapel IPAS
 
AKSI NYATA NARKOBA ATAU OBAT TERLARANG..
AKSI NYATA NARKOBA ATAU OBAT TERLARANG..AKSI NYATA NARKOBA ATAU OBAT TERLARANG..
AKSI NYATA NARKOBA ATAU OBAT TERLARANG..
 

Fungsi

  • 1. TEKNIK INFORMATIKA ITS RAHMAT RIJAL FUNGSI PENDAHULUAN Dalam bahasa C, sebuah program terdiri dari atas fungsi-fungsi, baik yang didefinisikan secara langsung di dalam program maupun yang disimpan di dalam file lain(misalnya file header). Satu fungsi yang pasti terdapat dalam program yang ditulis menggunakan bahasa C adalah fungsi main( ). Fungsi tersebut merupakan fungsi utama dan merupakan fungsi yang dieksekusi pertama kali. Menurut definisinya, fungsi adalah suatu blok program yang di gunakan untuk melakukan prosese-proses tertentu. Sebuah fungsi dibutuhkan untuk menjadikan program yang akan kita buat menjadi lebih mudah dan untuk dipahami alurnya. Dengan adanya fungsi, maka kita dapat mengurangi duplikasi kode program sehingga performa dari program yang kita buat pun akan meningkat. Dalam bahasa C, fungsi terbagi menjadi dua macam yaitu fungsi yang mengembalikan nilai (return value) dan fungsi yang tidak mengembalikan nilai. Fungsi yang tidak mengembalikan nilai tersebut dinamakan dengan void function. Bagi anda yang sebelumnya pernah belajar pascal, void function ini serupa dengan procedure yang terdapat di dalam bahas pascal. Sebelum melangkah lebih jauh ke dalam bentuk pembentukan fungsi disini akan di terangkan bagaimana kompilator C membaca fungsi-fungsi yang didefinisikan di dalam program secara berurutan sesuai dengan waktu pemanggilannya. Untuk itu perhatikanlah gambar ilustrasi berikut ini : Fungsi main() { ... Fungsi1(); Fungsi2(); ... } Fungsi1() { Fungsi3(); } Fungsi2() { Fungsi3(); } Fungsi3() { ... }
  • 2. TEKNIK INFORMATIKA ITS RAHMAT RIJAL Mula-mula fungsi main( ) akan dieksekusi oleh kompilator. Oleh karena fungsi main() tersebut memanggil Fungsi1( ). Dalam Fungsi1( ) juga terdapat pemanggilan Fungsi3(), maka kompilator akan mengeksekusi Fungsi3( ) dan kembali mengeksekusi Fungsi1( ) (jika ada). Setelah Fungsi1( ) selesai dieksekusi, kompilator akan kembali mengeksekusi baris berikutnya pada fungsi main( ), yaitu dengan mengeksekusi kode-kode yang tedapat pada fungsi2( ). Setelah selesai, maka kompilator akan melanjutkan pengeksekusian kode pada baris-baris selanjutnya dalam fungsi main(). Apabila ternyata dalam fungsi main( ) tersebut ternyata dalam fungsi main( ) tersebut kembali terdapat pemanggilan fungsi lain, maka kompilator akan meloncat ke fungsi lain tersebut, begitu seterusnya sampai semua baris kode dalam fungsi main( ) selesai dieksekusi. Bagi anda yang merupakan para pemula di dunia pemograman, sebisa mungkin biasakanlah untuk menggunakan fungsi daripada anda harus menuliskan kode secara langsung pada fungsi main(). Oleh karena itu,pada bab ini saya akan membahas secara detail mengenai bagaimana cara pembuatan fungsi di dalam bahasa C sehingga anda akan mudah dan terbiasa dalam menginplementasikannya kedalam kasus-kasus program yang akan anda hadapi. APA NILAI YANG DIKEMBALIKAN OLEH FUNGSI MAIN( ) Pada bab-bab sebelumnya kita telah banyak menggunakan fungsi mani() di dalam program yang kita buat. Mungkin sekarang anda akan bertanya apa sebenarnya nilai yang dikembalikan oleh fungsi main() tersebut? Jawabannya adalah 0 dan 1. Apabila fungsi main() mengembalikan nilai 0 ke sistem operasi, maka sisetem tersebut telah diekseskusi dengan benar tanpa adanya keaslahan. Sedangkan apabila nilai yang dikembalikan ke sisitem operasi adlah nilai 1, maka sistem operasi tersebut akan mengetahui bahwa program telah di hentikan secara tidak normal(terdapat kesalahan). Dengan demikian, seharusnya fungsi main() tidaklah mengembalikan tipe void, melainkan tipe int, seperti yang terlihat di bawah ini : Int main( ) { ... Return 0; //mengembalikan nilai 0 }
  • 3. TEKNIK INFORMATIKA ITS RAHMAT RIJAL Namun apabila anda ingin mendefinisikan nilai kembalian tersebut denga tipe void, maka seharusnya anda menggunakan fungsi exit ( ) yang dapat berguna untuk mengembalikan nilai ke sistem operasi (sama seperti halnya return ). Adapun parameter yang di lewatkan ke fungsi exit () ini ada dua, yaitu : 1. Nilai 0 (EXIT_SUCCESS), yaitu menghentikan program secara normal. 2. Nilai 1 (EXIT_FAILURE), yaitu menghentikan program secara tidak normal. Berikut ini contoh penggunaannya didalam fungsi main(). Void main(void) { ... Exit(0); // dapat ditulis exit (EXIT_SUCCESS) } FUNGSI TANPA NILAI BALIK Pada umumnya fungsi tanpa nilai balik(return value) ini digunakan untuk melakukan proses-proses yang tidak menghasilkan nilai, seperti melakukan pengulangan, proses pengesetan nilai maupun yang lainnya. Dalam bahsa C, fungsi semacam ini tipe kembaliaanya akan diisi dengan nilao void. Adapun bentuk umum dari pendefinisian fungsi tanpa nilai balik adalah sebagai berikut : Berikut ini contoh dari pembuatan fungsi tanpa nilai balik. void Tulis10Kali() { int i; for (i=0; i<10; i++) printf(“nsaya sedang belajar bahasa C); } Adapun contoh program lengkap yang akan menggunakan fungsi tersebut adalah seperti yang tertulis di bawah ini : Void nama_fungsi (parameter1, parameter2,...) { Statemen_yang_akan_dieksekusi; .... }
  • 4. TEKNIK INFORMATIKA ITS RAHMAT RIJAL #include<stdio.h> void Tulis10Kali() //mendefi nisikan sebuah fungsi dengan nama tulis10kali { int i; for (i=0; i<10; i++) { printf(“saya sedang belajar bahasa c); } } int main() { Tulis10Kali(); //memanggil fungsi tulis10kali() return 0; } Apabila dijalankan, program tersebut akan memberika hasil sebagai berikut : Apabila anda perhatikan secara teliti fungsi Tulis10Kali() dalam program diatas tidak menghasilkan nilai, melainkan melakukan proses, yaitu penulisan teks ‘saya sedang belajar bahasa c’ sebanyak sepuluh kali. Fungsi semacam inilah yang tersebut dengan fungsi tanpa nilai balik(void function). Sebenarnya sebuah fungsi tanpa nilai baik juga dapat digunakan untuk menghasilkan nilai dari suatu proses tertentu, yaitu dengan menampungnya kedalam suatu parameter. Namun hal itu baru akan kita bahas pada sub bab selanjutnya dalam bab ini (lihat sub bab
  • 5. TEKNIK INFORMATIKA ITS RAHMAT RIJAL Fungsi dengan parameter). Pada sintak diatas, variabel x dinamakan sebagai parameter formal . sekarang perhatikan sintaknya berikut. Int main() { int a=10, hasil; hasil=TambahanSatu(a); return 0; } Pada saat pemanggilan fungsi TambahanSatu( ) diatas, variabel a dinamakan dengan parameter aktual. Namun sebelum anda mempelajari bagaimana cara melewatkan parameter didalam sebuah fungsi, ana hatus mengetahui terlebuh dahulu jenis-jenis parameter tersebut. JENIS-JENIS PARAMETER Dalam dunia pemograman di kenal tiga jenis parameter, yaitu parameter masukan, keluaran dan masukan/keluaran. Untuk memahami perbedaaan dari setiap jenis parameter, disini kiata akan memabahasnya satu per satu. a. Parameter Masukan Parameter masukan adalah parameter yang digunakan untuk menampung nilai data yang akan dijadikan sebagai masukan(input) kedalam fungsi. Artinya, sebuah fungsi dapat menghasilkan niali yang berbeda tegantung dari nilai parameter yang di masukkan pada saat pemanggilan fungsi tersebut. Berikut ini contoh program yang akan menunjukkan kegunaan dari parameter masukan. #include <stdio.h> #define PI 3.14159 double HitugkelilingLingkaran(int radius) //mendefinisikan suatu fungsi dengan { // parameter berjenis masukan. double K; K = 2 * PI * radius; return K; } int main() //Fungsi utama
  • 6. TEKNIK INFORMATIKA ITS RAHMAT RIJAL { int R; double keliling; printf(“masukkan nilai jari-jari lingkaran : ”); scanf(“%d”,&R); keliling = HitugkelilingLingkaran(R); printf(“Keliling Lingkaran dengan jari-jari %d : %f”,R,keliling); return 0; } Contoh hasil yang akan diberikan apabila program diatas di jalankan adalah sebagai berikut : Pada sintak diatas, variabel R merupakan parameter aktual yang berfungsi sebagai parameter masukan karena variabel tersebut digunakan untuk menampung nilai yang akan menjadi (input) untuk proses perhitungan di dalam fungsi HitungKelilingLingkaran(). Sekarang perhatikan apabila kita memasukkan nilai parameter di atas dengan nilai 7, maka program akan memberikan hasil yang berbeda seperti terlihat di bawah ini : Hal ini membuktikan bahwa fungsi HitungLuasLingkaran() akan menghasilkan nilai yang berbeda sesuai nilai parameter yang dimasukkan. b. Parameter Keluaran Kebalikan dari parameter masukan, parameter keluaran adalah parameter yang digunakan untuk menampung nilai kembalikan untuk manampung nilai kembalikan/ nilai
  • 7. TEKNIK INFORMATIKA ITS RAHMAT RIJAL keluaran (output) dari suatu proses. Umumnya parameter jenis ini digunakan didalam fungsi yang tidak mempunyai nilai balik. Untuk lebih memahaminya, perhatikan contoh program di bawah ini yang merupakan modifikasi dari program sebelumnya. #include <stdio.h> #define PI 3.14159 //mendefinisikan fungsi yang mengandung parameter parameter keluaran. double HitugkelilingLingkaran(int radius, double *K) { *K = 2 * PI *radius; } int main() //Fungsi utama { int R; double keliling; printf(“masukkan nilai jari-jari lingkaran : ”); scanf(“%d”,&R); HitugkelilingLingkaran(R , &keliling); printf(“Keliling Lingkaran dengan jari-jari %d : %f”,R,keliling); return 0; } Pada sintak program diatas, variabel keliling berfungsi sebagai parameter keluaran karena variabel tersebut digunakan untuk menampung nilai hasil dari proses yang terdapat di dalam fungsi. Sedangkan variabel R adalah variabel yang berfungsi sebagai parameter masukan dimana nilainya di gunakan untuk menampung nilai yang akan di lewatkan ke dalam fungsi. Adapun contoh hasil yang akan di berikan dari program di atas adalah seperti yang tertera di bawah ini.
  • 8. TEKNIK INFORMATIKA ITS RAHMAT RIJAL c. Parameter Masukan/keluaran Selain parameter masukan dan keluaran,terdapat juga parameter jenis lain, yaitu parameter masukan/keluaran dimana parameter tersebut mempunyai dua buah kegunaan, yaitu sebagai berikut :  Pertama parameter ini akan bertindak sebagai parameter yang menampung nilai masukan.  Setelah itu, parameter ini akan bertindak sebagai parameter yang menampung nilai keluaran. Untuk lebih memahaminya , berikut ini diberikan contoh program dimana di dalamnya terdapat sebuah parameter yang berperan sebagai parameter masukan/keluaran. Adapun sintak programnya adalah seperti yang terlihat dibawah ini. #include <stdio.h> #define PI 3.14159 //mendefinisikan fungsi yang mengandung parameter parameter masukan/keluaran. double HitugkelilingLingkaran(double *X) { *X = 2 * PI *(*X); } int main() //Fungsi utama { int R; double param; printf(“masukkan nilai jari-jari lingkaran : ”); scanf(“%d”,&R); param=(double) R; HitugkelilingLingkaran(&param); printf(“Keliling Lingkaran dengan jari-jari %d : %f”,R,param); return 0; }
  • 9. TEKNIK INFORMATIKA ITS RAHMAT RIJAL Apabila dijalankan program diatas akan memberikan hasil sebagi berikut : MELEWATKAN PARAMETER BERDASARKAN NILAI (PASS BY VALUE) Terdapat dua buah cara untuk melewatkan parameter ke dalam sebuah fungsi, yaitu dengan cara melewatkan berdasarkan nilainya (pas by value) dan berdasarkan alamatnya (pass by reference). Namun pada bagian hanya akan dibahas mengenai pelewatan parameter berdasarkan nilai saja, sedangkan untuk pelewatan parameter berdasarkan alamat akan kita bahas pad sub bab berikutnya. Pada pelewatan parameter berdasarkan nilai, terjadi proses penyalinan (copy) nilai dari parameter formal ke parameter aktual. Hal ini akan menyebabkan nilai variabel yang di hasilkan oleh proses di dalam fungsi tidak akan berpengaruh terhadap nilai variabel yang terdapat di luar fungsi. Untuk lebih memahaminya, perhatikan contoh program berikut dimana didalamnya terdapat sebua parameter yang di lewatkan dengan cara pass by value. #include <stdio.h> //mendefinisikan fungsi dengan melewatkan parameter berdasarkan nilai void TambahSatu(int x) { x++; //menampilkan nilai yang terdapat di dalam fungsi printf(“nilai di dalam fungsi : %dn”,x); } int main() //fungsi utama { int bilangan; printf(“masukkan sebuah bilangan bulat : “ ); scanf(“%d”, &bilangan); //menampilkan nilai awal printf(“nnilai awal : %dn”, bilangan);
  • 10. TEKNIK INFORMATIKA ITS RAHMAT RIJAL //memanggil fungsi TambahSatu TambahSatu(bilangan); //menampilkan nilai akhir printf(“nilai akhir : %dn”,bilangan); return 0; } Apabila dijalankan program diatas akan memberikan hasil sebagi berikut : Seperti yang kita lihat pada hasil program diatas bahwa nilai dari variabel bilangan tetap bernilai 10 walaupun kita telah memanggil fungsi TambahSatu( ). Hal ini disebabkan karena variabel bilangan dan bilangan x merupakan dua variabel yang berbeda sehingga terjadi hanyalah proses penyalinan (peng-copy-an) nilai dari variabel bilangan ke variabel x tentu tidak akan mempengaruhi nilai variabel lain. MELEWAT PARAMETER BERDASARKAN ALAMAT (PASS BY REFERENCE) Disini, parameter yang dilewatkan ke dalam fungsi bukanlah berupa nilai, melainkan suatu alamat memori. Pada saat kita melewatkan parameter berdasarkan alamat , terjadi proses referenisal anatara variabel yang terdapat pada parameter formal dengan variabel yang terdapat parameter aktual. Hal tersebut menyebabkan kedua variabel tersebut akan berada pada satu alamat di memori yang sama sehingga apabila terdapat perubahan nilai terhadap salah satu dari variabel tersebut, maka nilai variabel satunya juga akan ikut berubah. Untuk melakukan hal itu, parameter fungsi tersebut harus kita jadikan sebagai pointer. Agar lebih memahami materi ini, disini kita akan menuliskan kembali kasus diatas kedalam suatu program. Namun, sekarang kita akan melakukannya dengan menggunakan cara pass by reference. Adapun sintak programnya adalah sebagai berikut :
  • 11. TEKNIK INFORMATIKA ITS RAHMAT RIJAL #include <stdio.h> //mendefinisikan fungsi dengan melewatkan parameter berdasarkan alamat void TambahSatu(int *x) { (*x)++; //menampilkan nilai yang terdapat di dalam fungsi printf(“nilai di dalam fungsi : %dn”,*x); } int main() //fungsi utama { int bilangan; printf(“masukkan sebuah bilangan bulat : “ ); scanf(“%d”, &bilangan); //menampilkan nilai awal printf(“nnilai awal : %dn”, bilangan); //memanggil fungsi TambahSatu dengan mengirimkan alamat variabel bilangan TambahSatu(&bilangan); //menampilkan nilai akhir printf(“nilai akhir : %dn”,bilangan); return 0; } Contoh hasil yang akan di berikan dari program diatas adalah sebgai berikut : Seperti yang kita lihat di atas bahwa proses pass by reference, merupakan nilai di dalam fungsi akan mempengaruhi niali di luar fungsi.
  • 12. TEKNIK INFORMATIKA ITS RAHMAT RIJAL MEMBUAT PROTOTIPE FUNGSI Secara default, pendefinisian fungsi-fungsi di dalam program akan dilakukan sebelum fungsi main( ). Namun bahasa C telah mengizinkan kita untuk dapat mendefinisikan fungsi-fungsi lain tersebut setelah melkukan penulisan fungsi main() asalkan kita menuliskan prototipe dari fungsi-fungsi sebelum fungsi main( ). Berikut ini contoh yang akan menunjukkan pembuatan program dengan melakukan prototipe fungsi. Disini kita akan membuat program yang dapat melakukan konversi suhu dari celcius ke fahreinheit, yaitu dengan menggunakan persamaan berikut : (F - 32) / c = 9/5 Adapun sintak program yg dimaksud tersebut adalah seperti yang tertulis dibawah ini. #include<stdio.h> //membuat prototipe dari fungsi celciuskefahrenheit() float celciuskefahrenheit(float suhu); int main() { float c, f; printf(“masukkan suhu yang akan di konversi : ”); scanf(“%f”,&c); //memanggil fungsi celciuskefahrenheit() dengan menampungnya ke variabel f f= celciuskefahrenheit(c); //menmpilkan nilai hasil konversi printf(“%.2f c = %.2f f”,c,f); return 0; } //implementasi fungsi celciuskefahrenheit float celciuskefahrenheit(float suhu) { float hasil; hasil = ((9*suhu)/5)+32; return hasil; }
  • 13. TEKNIK INFORMATIKA ITS RAHMAT RIJAL Contoh program diatas akan diperoleh dari program di atas adala sebagai berikut REKURSI Rekursi adalah proses pemanggilan fungsi oleh dirinya sendiri secara berulah. Istilah “rekursi” sebenarnya bersal dari bahasa latin ”recursus” yang berarti menjalankan kebelakang. Rekursi digunakan untuk penyederhanaan program yang di hasilkan menjadi lebih efisien. Pada bagian ini kita kan mempelajari langsung melalui contoh-contoh program. a. Menentukan Nilai Faktorial Pada bagian ini kiat akan membuat sebuah fungsi rekursif untuk menentukan nilai faktorial dengan memasukkan nilai yang akan di hitung sebagai parameter funsgi ini. Sebagai contoh apabila parameter yang kita masukkan adalah 5, maka hasilnya adalah. 5!=5x4x3x2x1=120 Proses tersebut dapat kita sederhanakan melalui fungsi matematis sebagai berikut : F! (N) = N * F! (N-1) Namun yang harus kita perhatikan adalah F!(0) = 1, ini adalah suatu tetapan numerik yang tidak dapat diubah. Berikut ini contoh implementasi kasus tersebut kedalam sebuah program. #include<stdio.h> //mendefiniskan fungsi untuk menghitung niali faktorial int faktorial(int n) { if(n==0) { return 1; }
  • 14. TEKNIK INFORMATIKA ITS RAHMAT RIJAL else { return n* faktorial(n-1); } } int main() //fungsi utama { int bilangan ; printf(“masukkan bilangan yang akan di hitung : “); scanf(“%d”,&bilangan); printf(“%d! = %d”, bilangan , faktorial(bilangan)); return 0; } Contoh hasil yang akan di berikan dari program diatas adalah sebgai berikut: Konsep dari proses di atas sebenarnya sederhana, yaitu dengan melakukan pemanggilan fungsi faktorial () secara berulang. Untuk kasus ini, proses yang di lakukan adalah sebagai berikut : Faktorial(5)=5* Faktorial(4) Faktorial(4)=4* Faktorial(3) Faktorial(3)=3 *Faktorial(2) Faktorial(2)=2* Faktorial(1) Faktorial(1)=1* Faktorial(0) Faktorial(0)=1 Faktorial(1)= 1 * 1 Faktorial(2)= 2 * 1 Faktorial(3)= 3 * 2 Faktorial(4)= 4 * 6
  • 15. TEKNIK INFORMATIKA ITS RAHMAT RIJAL Faktorial(5)= 5 * 24 = 120 b. Menetukan Nilai Perpangkatan Sekarang kita akan melakukan rekursi untuk menghitung nilai BN , dimana B adalah basis dan N adalah nilai eksponen. Kita dapat merumuskan fungsi tersebut seperti dibawah ini. BN = B * B N-1 Apabila kita implementasikan kedalam program maka sintaknya kurang lebih sebagai berikut : #include<stdio.h> //mendefinisikan fungsi untuk menghitung nilai eksponensial int pangkat(int basis, int e) { if(e==0) { return 1; } else { return basis * pangkat(basis, e-1); } } int main() //fungsi utama { int b, n; printf(“masukkan bilangan basis : ”); scanf(“%d”,&b); printf(“masukkan bilangan eksponen : ”); scanf(“%d”,&n); printf(”%d^%d = %d”, b, n, pangkat(b,n)); return 0; }
  • 16. TEKNIK INFORMATIKA ITS RAHMAT RIJAL Contoh hasil yang akan di berikan program diatas adalah seperti yang terlihat di bawah ini : Proses yang terdapat di atas adalah sebagai berikut : pangkat(2 , 5) = 2 * pangkat (2 , 4 ) pangkat(2 , 4) = 2 * pangkat (2 , 3 ) pangkat(2 , 3) = 2 * pangkat (2 , 2 ) pangkat(2 , 2) = 2 * pangkat (2 , 1 ) pangkat(2 , 1) = 2 * pangkat (2 , 0) pangkat(2 , 0) = 1 pangkat(2 , 1) = 2 * 1 pangkat(2 , 2) = 2 * 2 pangkat(2 , 3) = 2 * 4 pangkat(2 , 4) = 2 * 8 pangkat(2 , 5) = 2 * 16 = 32 c. Konversi Bilangan Desimal Ke Bilangan Biner Kali ini kit akan membuat sebuah fungsi rekursif tanpa nilai balik yang akan di gunakan untuk melakukan konversi bilangan desimal ke bilangan biner. Disini kita tidak akan membahas bagaimana proses pegkonversian tersebut, melainkan kita lebih berkonsentrasi ke pembahasan mengenai rekursi. Adapun sintak program untuk melakukan hal tersebut adalah sebagai berikut : #include<stdio.h> void desimalkebiner(int n) { if(n>1) {
  • 17. TEKNIK INFORMATIKA ITS RAHMAT RIJAL desimalkebiner(n/2); } printf(“%d”, n%2); } int main() { int a; printf(“masukkan bilangan desimal yang akan di konversi : ”); scanf(“%d”,&a); printf(“%d dalam biner : ”, a); desimalkebiner(a); return 0; } Contoh hasil yang akan di berikan program diatas adalah seperti yang terlihat di bawah ini : d. Konversi Bilangan Desimal Ke Bialngan Heksadesimal Pada sub bab sebelumnya anda telah mempelajari bagaimana melakukan rekursi dari konversi bilangan desimal ke bilangan biner. Sekarang kit akan membahas juga bagaimana melakukan rekursi dari konversi bilangan desimal ke bilangan hekasadesimal. Adapun sintak program nya adalag sebagai berikut : #include<stdio.h> void desimalkeheksa(int n) { char *daftarheksa*+ = , “0”, “1”, “2”, “3”, “4”, “5”, “6”, “7”, “8”, “9”, “A”, “B”, “C”, “D”, “E”, “F”,-; if(n>15) {
  • 18. TEKNIK INFORMATIKA ITS RAHMAT RIJAL desimalkeheksa(n/16); } printf(“%s”, daftarheksa*n%16+); } int main() { int a; printf(“masukkan bilangan yang akan di konversi : ”); scanf(“%d”,&a); printf(“%d dalam heksadesimal : “,a); desimalkeheksa(a); return 0; } Contoh hasil yang akan di berikan program diatas adalah seperti yang terlihat di bawah ini :