Fungsi merupakan suatu bagian dari
program yang dimaksudkan untuk mengerjakan suatu tugas tertentu dan letaknya
terpisah dari 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-program C yang terstruktur. Keuntungan
penggunaan fungsi dalam program yaitu program akan memiliki struktur yang jelas
(mempunyai readability yang tinggi) dan juga akan menghindari penulisan bagian program yang sama.
Dalam bahasa C fungsi dapat dibagi
menjadi dua, yaitu fungsi pustaka atau fungsi yang telah tersedia dalam Turbo C
dan fungsi yang didefinisikan atau dibuat oleh programmer.
Minggu, 05 Januari 2014
Fungsi
a) Fungsi Operasi String (tersimpan dalam header file
“string.h”)
ü strcpy()
Berfungsi
untuk menyalin suatu string asal ke variable string tujuan. Bentuk umum :
strcpy(var_tujuan, string_asal);
ü strlen()
Berfungsi
untuk memperoleh jumlah karakter dari suatu string. Bentuk umum :
strlen(string);
Contoh
Program :
#include
“stdio.h”
#include
“conio.h”
#include
“string.h”
void
main()
{
char nama[25];
strcpy(nama,
“Achmad Solichin”);
printf(“Nama
: %s”, nama);
printf(“Banyaknya
karakter nama Anda adalah : %i”, strlen(nama));
getch();
}
ü strcat()
Digunakan
untuk menambahkan string sumber ke bagian akhir dari string tujuan. Bentuk umum
: strcat(tujuan, sumber);
ü strupr()
Digunakan
untuk mengubah setiap huruf dari suatu string menjadi huruf capital. Bentuk
umum : strupr(string);
ü strlwr()
Digunakan
untuk mengubah setiap huruf dari suatu string menjadi huruf kecil semua. Bentuk
umum : strlwr(string);
Contoh Program :
#include
“stdio.h”
#include
“conio.h”
#include
“string.h”
void
main()
{
char satu[30] = “Fakultas Teknologi Informasi”;
char
dua[30] = “Universitas Budi Luhur”;
clrscr();
strcat(satu,
dua);
printf(“Hasil
penggabungannya : %s\n”, satu);
printf(“Jika diubah menjadi huruf kapital
semua :\n”);
printf(“%s”,
strupr(satu));
printf(“Jika
diubah menjadi huruf kecil semua :\n”);
printf(“%s”,
strlwr(satu));
getch();
}
ü strcmp()
Digunakan
untuk membandingkan dua buah string. Hasil dari fungsi ini bertipe integer
dengan nilai :
(a)
Negative, jika string pertama kurang dari string kedua.
(b)
Nol, jika string pertama sama dengan string kedua
(c)
Positif, jika string pertama lebih besar dari string kedua.
Bentuk
umum : strcmp(string1, string2);
Contoh
Program :
#include
“stdio.h”
#include
“conio.h”
#include
“string.h”
void
main()
{
char string1[5], string2[5];
int
hasil;
clrscr();
printf(“Masukkan
string 1 : “); scanf(“%s”, &string1);
printf(“Masukkan
string 2 : “); scanf(“%s”, &string2);
hasil
= strcmp(string1, string2);
if(hasil
> 0)
printf(“%s
> %s”, string1,string2);
else
if(hasil
== 0)
printf(“%s
= %s”, string1, string2);
else
printf(“%s
< %s”, string1, string2);
getch();
}
b) Fungsi Operasi Karakter (tersimpan dalam header
“ctype.h”)
♦ islower()
Fungsi
akan menghasilkan nilai benar (bukan nol) jika karakter merupakan huruf kecil. Bentuk umum : islower(char);
♦ isupper()
Fungsi
akan menghasilkan nilai benar (bukan nol) jika karakter merupakan huruf
kapital. Bentuk umum : isupper(char);
♦ isdigit()
Fungsi
akan menghasilkan nilai benar (bukan nol) jika karakter merupakan sebuah digit.
Bentuk umum : isdigit(char);
♦ tolower()
Fungsi
akan mengubah huruf capital menjadi huruf kecil. Bentuk umum : tolower(char);
♦ toupper()
Fungsi
akan mengubah huruf kecil menjadi huruf kapital. Bentuk umum : toupper(char);
Contoh
Program :
#include
“stdio.h”
#include
“conio.h”
#include
“ctype.h”
void
main()
{
char karakter;
clrscr();
printf(“Masukkan
sebuah karakter : “); karakter = getche();
if(isupper(karakter))
//periksa apakah “karakter” adalah huruf kapital
{
puts(“ adalah huruf besar”);
printf(“Huruf
kecilnya adalah : %c”, tolower(karakter));
}
else
if(islower(karakter)) //periksa
apakah “karakter” adalah huruf kecil
{ puts(“ adalah huruf kecil”);
printf(“Huruf
besarnya adalah : %c”, toupper(karakter));
}
else
if(isdigit(karakter))
//periksa apakah “karakter” adalah digit
puts(“
adalah karakter digit”);
else
puts(“
bukan huruf besar, huruf kecil atau digit”);
getch();
}
c) Fungsi Operasi Matematik (tersimpan dalam header
“math.h” dan “stdlib.h”)
♦ sqrt()
Digunakan
untuk menghitung akar dari sebuah bilangan. Bentuk umum : sqrt(bilangan);
♦ pow()
Digunakan untuk menghitung pemangkatan suatu bilangan. Bentuk
umum : pow(bilangan, pangkat);
Contoh
Program :
#include
“stdio.h”
#include
“conio.h”
#include
“math.h”
void
main()
{ int
x, y;
float
z;
clrscr();
printf(“Menghitung
x pangkat y\n”);
printf(“x = “); scanf(“%i”, &x);
printf(“y = “); scanf(“%i”, &y);
printf(“
%i dipangkatkan dengan %i adalah %7.2lf”, x, y, pow
(x,y));
getch();
clrscr();
printf(“Menghitung
akar suatu bilangan z\n”);
printf(“z = “); scanf(“%f”, &z);
printf(“Akar
dari %f adalah %7.2lf”, z, sqrt(z));
getch();
}
♦ sin(), cos(), tan()
Masing-masing digunakan untuk menghitung nilai sinus, cosinus
dan tangens darisuatu sudut. Bentuk umum :
·
sin(sudut);
·
cos(sudut);
·
tan(sudut);
Contoh Program :
#include
“stdio.h”
#include
“conio.h”
#include
“math.h”
void
main()
{ float
sudut;
clrscr();
printf(“Menghitung nilai sinus, cosinus dan tangens\n”);
printf(“Masukkan
sudut : “); scanf(“%f”, &sudut);
printf(“Nilai
sinus %.2f derajat adalah %.3f”, sudut, sin(sudut));
printf(“Nilai
cosinus %.2f derajat adalah %.3f”, sudut, cos(sudut));
printf(“Nilai
tangens %.2f derajat adalah %.3f”, sudut, tan(sudut));
getch();
}
♦ atof()
Digunakan
untuk mengkonversi nilai string menjadi bilangan bertipe double. Bentuk umum :
atof(char x);
♦ atoi()
Digunakan
untuk mengkonversi nilai string menjadi bilangan bertipe integer. Bentuk umum : atoi(char x);
Contoh Program :
#include
“stdio.h”
#include
“conio.h”
#include
“math.h”
void
main()
{ char x[4] = “100”, y[5] =”10.3”;
int
a;
float
b;
clrscr();
a =
atoi(x); b = atof(y);
printf(“Semula A = %s B = %s\n”, x,y);
printf(“Setelah dikonversi A = %i B = %.2f”, a,b);
getch();
}
♦ div()
Digunakan
untuk menghitung hasil pembagian dan sisa pembagian. Bentuk umum : div_t
div(int x, int y)
Strukturnya
:
typedef
struct
{ int
qout; // hasil pembagian
int
rem // sisa pembagian
}
div_t;
Contoh
Program :
#include
“stdio.h”
#include
“conio.h”
#include
“stdlib.h”
void
main()
{
int x, y;
div_t
hasil;
clrscr();
printf(“Menghitung
sisa dan hasil pembagian x dengan y\n”);
printf(“x = “); scanf(“%i”, &x);
printf(“y = “); scanf(“%i”, &y);
hasil
= div(x,y);
printf(“\n\n %3i div %3i = %3i sisa %3i”, x, y, hasil.quot,
hasil.rem);
getch();
}
♦
max()
Digunakan
untuk menentukan nilai maksimal dari dua buah bilangan. Bentuk umum :
max(bilangan1, bilangan2);
♦ min()
Digunakan
untuk menentukan bilangan terkecil dari dua buah bilangan. Bentuk umum : min(bilangan1, bilangan2);
Contoh
Program :
#include
“stdio.h”
#include
“conio.h”
#include
“stdlib.h”
void
main()
{ int
x, y, z;
clrscr();
printf(“Menentukan bilangan terbesar dan terkecil\n”);
printf(“X
= “); scanf(“%i”, &x);
printf(“Y = “); scanf(“%i”, &y);
printf(“Z = “); scanf(“%i”, &z);
printf(“\nBilangan
terbesar : %i”, max(max(x, y), z));
printf(“\nBilangan
terkecil : %i”, min(min(x, y), z));
getch();
}
Membuat Fungsi Sendiri
a) Deklarasi Fungsi
Sebelum digunakan (dipanggil), suatu
fungsi harusdideklarasikan dan didefinisikan terlebih dahulu. Bentuk umum
pendeklarasian fungsi adalah : tipe_fungsinama_fungsi (parameter_fungsi);
Sedangkan bentuk umum pendefinisian
fungsi adalah Tipe_fungsi nama_fungsi(parameter_fungsi)
{ statement
Statement
………...
………...
}
b) Hal-hal yang perlu diperhatikan dalam penggunaan
fungsi :
·
Kalau tipe fungsi tidak disebutkan, maka
akan dianggap sebagai fungis dengan nilai keluaran bertipe integer.
· Untuk fungsi yang memiliki keluaran
bertipe bukan integer, maka diperlukan pendefinisian penentu tipe fungsi.
·
Untuk fungsi yang tidak mempunyai nilai
keluaran maka dimasukkan ke dalam tipe void
·
Pernyataan yang diberikan untuk
memberikan nilai akhir fungsi berupa pernyataan return.
·
Suatu fungsi dapat menghasilkan nilai
balik bagi fungsi pemanggilnya.
Contoh
Program :
#include
“stdio.h”
#include
“conio.h”
long
int faktorial(int N); /* prototype fungsi factorial() */
void
main()
{
int N;
long
int fak;
printf(“Berapa factorial ? “);
scanf(“%i”, &N);
fak
= faktorial(N); /* pemanggilan fungsi factorial() */
printf(“%i factorial = %ld\n”, N,
fak);
getch();
}
long
int faktorial(int N) /* definisi fungsi factorial */
{
int I;
long
int F = 1;
if(N<=0)
return(0);
for(I=2;
I<=N; I++)
F
= F * I;
return(F);
}
c) Parameter Formal dan Parameter
Aktual
·
Parameter Formal adalah
variabel yang ada pada daftar parameter dalam definisi fungsi.
·
Parameter Aktual adalah
variabel (parameter) yang dipakai dalam pemanggilan fungsi.
Dalam contoh
program pertambahan di atas parameter formal terdapat pada pendefinisisan
fungsi :
float tambah(float x, float y)
//parameter formal
{ return (a+b);
}
Sedangkan parameter aktual terdapat pada
pemanggilan fungsi :
void main()
{ ……………
…………..
c = tambah(a,
b); //parameter aktual
…………..
}
d) Cara Melewatkan Parameter
Cara melewatkan
suatu parameter dalam Bahasa C ada dua cara yaitu :
Ø Pemanggilan
Secara Nilai (Call by Value)
ü Call
by value akan menyalin nilai dari parameter aktual ke parameter formal.
ü Yang
dikirimkan ke fungsi adalah nilai dari datanya, bukan alamat memori letak dari
datanya.
ü Fungsi
yang menerima kiriman nilai akan menyimpannya di alamat terpisah dari nilai
aslinya yang digunakan oleh bagian program yang memanggil fungsi.
ü Perubahan
nilai di fungsi (parameter formal) tidak akan merubah nilai asli di bagian
program yang memanggilnya.
ü Pengiriman
parameter secara nilai adalah pengiriman searah, yaitu dari bagian program yang
memanggil fungsi ke fungsi yang dipanggil.
ü Pengiriman
suatu nilai dapat dilakukan untuk suatu ungkapan, tidak hanya untuk sebuah
variabel, elemen array atau konstanta saja.
Contoh
Program :
#include
“stdio.h”
#include
“conio.h”
void tukar(int x, int y); /* pendeklarasian fungsi */
void
main()
{ int
a,b;
clrscr();
a =
15;
b =
10;
printf(“Nilai
sebelum pemanggilan fungsi\n”);
printf(“a = %i b = %i\n\n”, a, b); // a dan b sebelum
pemanggilan fungsi
tukar(a,b);
/* pemanggilan fungsi tukar() */
printf(“Nilai setelah pemanggilan fungsi\n”);
printf(“a = %i b = %i\n\n”, a, b); // a dan b setelah
pemanggilan fungsi
getch();
}
void tukar(int x, int y) /* Pendefinisian fungsi tukar()
*/
{ int
z; /* variabel sementara */
z =
x;
x =
y;
y =
z;
printf(“Nilai di akhir fungsi tukar()\n”);
printf(“x = %i y = %i\n\n”, x, y);
}
Ø Pemanggilan
Secara Referensi (Call by Reference)
ü Pemanggilan
secara Referensi merupakan upaya untuk melewatkan alamat dari suatu variabel ke dalam fungsi.
ü Yang
dikirimkan ke fungsi adalah alamat letak dari nilai datanya, bukan nilai
datanya. Fungsi yang menerima kiriman alamat ini makan menggunakan
alamat yang sama untuk mendapatkan nilai datanya.
ü Perubahan
nilai di fungsi akan merubah nilai asli di bagian program yang memanggil
fungsi.
ü Pengiriman
parameter secara referensi adalah pengiriman dua arah, yaitu dari fungsi
pemanggil ke fungsi yang dipanggil dan juga sebaliknya.
ü Pengiriman
secara acuan tidak dapat bdilakukan untuk suatu ungkapan.
Contoh
Program :
#include
“stdio.h”
#include
“conio.h”
void tukar(int *px, int *py);
void main()
{ int a,b;
clrscr();
a =
15;
b =
10;
printf(“Nilai sebelum pemanggilan fungsi\n”);
printf(“a = %i b =
%i\n\n”, a, b);
tukar(&a,&b);
/* parameter alamat a dan alamat b */
printf(“Nilai setelah
pemanggilan fungsi\n”);
printf(“a = %i b =
%i\n\n”, a, b);
getch();
}
void tukar(int *px, int *py)
{ int z; /* variabel sementara */
z =
*px;
*px =
*py;
*py =
z;
printf(“Nilai di akhir fungsi tukar()\n”);
printf(“*px = %i *py =
%i\n\n”, *px, *py);
}
e) Penggolongan Variabel berdasarkan Kelas Penyimpanan
(Storage Class)
Ø Variabel
lokal
Variabel lokal
adalah variabel yang dideklarasikan di dalam fungsi.
Sifat-sifat
variabel lokal :
ü Secara otomatis akan diciptakan ketika fungsi dipanggil
dan akan lenyap ketika proses eksekusi terhadap fungsi
berakhir.
ü Hanya
dikenal oleh fungsi tempat variabel dideklarasikan
ü Tidak
ada inisialisasi secara otomatis (saat variabel diciptakan nilainya random).
ü Dideklarasikan
dengan menambahkan kata “auto” (opsional).
Ø Variabel
global (eksternal)
Variabel global (eksternal) adalah
variabel yang dideklarasikan di luar fungsi.
Sifat-sifat variabel global :
ü Dikenal
(dapat diakses) oleh semua fungsi.
ü Jika
tidak diberi nilai awal secara otomatis berisi nilai nol.
ü Dideklarasikan dengan menambahkan kata “extern”
(opsional).
Contoh Program :
#include
“stdio.h”
#include
“conio.h”
void
tampil(void);
int
i = 25; /* variabel global */
void
main()
{
clrscr();
printf(“Nilai
variabel i dalam fungsi main() adalah %i\n\n”, i);
tampil();
i
= i * 4; /* nilai i yang dikali 4 adalah 25 (global) bukan 10 */
printf(“\nNilai
variabel i dalam fungsi main() sekarang adalah %i\n\n”, i);
getch();
}
void
tampil(void)
{
int i = 10; /* variabel lokal */
printf(“Nilai
variabel i dalam fungsi tampil() adalah %i\n\n”, i);
}
Ø Variabel
Statis
Variabel statis adalah variabel yang
nilainya tetap dan bisa berupa variabel lokal (internal) dan variabel global
(eksternal).
Sifat-sifat variabel statis :
ü Jika
bersifat internal (lokal), maka variabel hanya dikenal oleh fungsi tempat
variabel dideklarasikan.
ü Jika
bersifat eksternal (global), maka variabel dapat dipergunakan oleh semua fungsi
yang terletak pada program yang sama.
ü Nilai
variabel statis tidak akan hilang walau eksekusi terhadap fungsi telah
berakhir.
ü Inisialisasi
hanya perlu dilakukan sekali saja, yaitu pada saat fungsi dipanggil pertama
kali.
ü Jika
tidak diberi nilai awal secara otomatis berisi nilai nol.
ü Dideklarasikan dengan menambahkan kata “static”.
Ø Variabel
Register
Variabel Register adalah variabel yang
nilainya disimpan dalam resister dan bukan dalam memori RAM.
Sifat-sifat variabel register :
ü Hanya
dapat diterapkan pada variabel lokal yang bertipe int dan char.
ü Digunakan
untuk mengendalikan proses perulangan (looping).
ü Proses
perulangan akan lebih cepat karena variabel register memiliki kecepatan yang
lebih tinggi dibandingkan variabel biasa.
ü Dideklarasikan
dengan menambahkan kata “register”.
Contoh
Program :
#include
“stdio.h”
#include
“conio.h”
void
main()
{
register int x; /* variabel register */
int
jumlah;
clrscr();
for(i=1;
i<=100; i++)
jumlah
= jumlah + I;
printf(“1+2+3+…+100 = %i\n”,
jumlah);
getch();
}
f) Fungsi Rekursif
Fungsi rekursif adalah fungsi yang
memanggil dirinya sendiri.
Contoh:
#include
“stdio.h”
#include
“conio.h”
long
int faktorial(int N); /* prototype fungsi faktorial */
void
main()
{ int
N;
printf(“Berapa factorial ? “); scanf(“%i”, &N);
printf(“Faktorial dari %i = %ld\n”, N, faktorial(N));
getch();
}
long
int faktorial(int N) /* definisi fungsi factorial */
{
if(N==0)
return(1);
else
return(N * faktorial(N - 1)); // fungsi faktorial()
memanggil fungsi factorial()
}
0 komentar:
Posting Komentar