• Tidak ada hasil yang ditemukan

1. Pendahuluan a. Deskripsi

Bab ini membahas tentang fungsi pustaka yaitu fungsi yang telah tersedia dalam turbo C dan fungsi yang dapat dibuat sendiri oleh programmer. Pada fungsi yang dapat dibuat sendiri oleh programmer akan dijelaskan tentang cara mendeklarasikan fungsi, jenis parameter dan variabel yang digunakan dalam bahasa C serta cara pemanggilan fungsi. Di akhir pembahasan, akan dijelaskan tentang fungsi rekursif. Dalam setiap pembahasan akan diberikan contoh program yang akan membantu mahasiswa lebih memahami tentang penggunaan fungsi.

b. Tujuan Pembahasan

Setelah mengikuti perkuliahan ini, mahasiswa diharapkan mampu memahami kegunaan penggunaan fungsi dalam bahasa pemrograman dan mampu menerapkan penggunaan fungsi dalam pemrograman bahasa C.

2. Teori Dasar

Fungsi adalah bagian dari program yang digunakan untuk suatu tugas tertentu dan letaknya terpisah dari program utama. Fungsi merupakan bagian utama dalam bahasa C karena program bahasa C sendiri tersusun atas kumpulan fungsi – fungsi dam dalam setiap program minimal terdapat satu buah fungsi yaitu fungsi main (). Adapun kegunaan penggunaan fungsi dalam bahasa C adalah :

 Program menjadi lebih terstruktur sehingga mudah untuk

 Untuk mengurangi pengulangan penulisan program yang sama. Dalam bahasa C fungsi dibagi menjadi dua yaitu fungsi pustaka atau fungsi yang telah tersedia dalam turbo C dan yang didefinisikan atau dibuat oleh programmer.

a. Fungsi Pustaka dalam Bahasa C [4]

1) 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);

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);

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.

Contoh program : #include "stdio.h" #include "conio.h" #include "string.h" void main() { char nama[20];

char nama1 [30]= "UNIVERSITAS HASANUDDIN"; char nama2 [30]= "Teknik Informatika" ;

int x;

strcpy(nama,nama1);

printf("Nama : %s", nama1);

printf("\nJumlah karakter : %i",strlen(nama)); strcat (nama2,nama1); printf ("\n"); puts (nama2); strupr(nama2); printf ("\n"); puts (nama2); printf ("\n"); strlwr (nama2); puts (nama2); strcmp (nama1,nama2) ; printf("Hasil : %i", x); getch(); }

2) Fungsi Operasi Karakter (tersimpan dalam header

“ctype.h”) [4]

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 : \t"); karakter = getche();

if (islower (karakter))

{ printf ("\nadalah huruf kecil");

printf ("\nHuruf kapitalnya adalah :%c",toupper(karakter));} else if (isupper (karakter))

{ puts ("\nadalah huruf kapital");

printf ("\nHuruf kecilnya adalah :%c",tolower(karakter));} else if (isdigit (karakter))

{ puts("\nadalah bilangan digit"); }

Tampilan program diatas adalah :

3) Fungsi Operasi Matematik (tersimpan dalam header

“math.h” dan “stdlib.h”) [4]

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");

printf ("\nMasukkan Nilai x :"); scanf("%i",&x); printf ("\nMasukkan Nilai y :"); scanf ("%i", &y); printf ("\nx^y = %i ^ %i = %3.2f", x,y, pow(x,y)); printf ("\n\nMenghitung akar x");

printf ("\nMasukkan Nilai x :"); scanf("%i",&x); printf ("\nAkar x adalah %2.2f",sqrt (x)); getch();

Tampilan program diatas adalah :

sin(), cos(), tan() Masing-masing digunakan untuk menghitung nilai sinus, cosinus dan tangens dari suatu sudut. Bentuk umum : sin(sudut); cos(sudut); tan(sudut); Contoh program : #include "stdio.h" #include "conio.h" #include "math.h" void main() { clrscr(); int sudut;

printf ("Menghitung sin, cos, dan tan\n"); printf ("Masukkan sudut :");

scanf ("%i",&sudut);

printf ("\nsin %i = %5.2f\n", sudut, sin (sudut)); printf ("cos %i = %5.2f\n", sudut, cos (sudut)); printf ("tan %i = %5.2f", sudut, tan (sudut)); getch();

Tampilan program diatas adalah :

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" #include "stdlib.h" void main() { clrscr(); char x [10]= "123"; char y [10]= "3.14";

printf ("Nilai x = %i",atoi(x));// Mengubah string menjadi integer printf ("Nilai y = %f", atof(y));// mengubah string menjadi float 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 [1]: #include "stdio.h" #include "conio.h" #include "stdlib.h" { 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 "conio.h" #include "stdlib.h" void main()

{ int a, b, c, d;

printf ("Masukkan Nilai\n"); printf ("a = "); scanf ("%i", &a); printf ("b = "); scanf ("%i", &b); printf ("c = "); scanf ("%i", &c); printf ("d = "); scanf ("%i", &d);

printf ("Nilai maksimumnya adalah %i", max(max(max(a,b),c),d)); printf ("\nNilai minimumnya adalah %i", min(min(min(a,b),c),d)); getch ();

}

b. Membuat Fungsi Sendiri 1) Deklarasi Fungsi

Bentuk deklarasi sebuah fungsi adalah sebagai berikut [1] : Tipe_fungsi nama_fungsi (parameter_fungsi)

{

Statement; Statement; …

}

Dalam penggunaan fungsi terdapat beberapa hal yang perlu untuk diperhatikan, diantaranya :

 Nama fungsi dapat ditentukan dengan bebas dengan ketentuan

tidak menggunakan spasi dan nama – nama fungsi yang

disediakan oleh turbo C.

 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"

kampus () // fungsi kampus

{ puts ("UNIVERSITAS HASANUDDIN"); }

{clrscr();

printf ("Nama Universitas :\n");

kampus (); // memanggil fungsi kampus getch();

}

Tampilan program diatas adalah :

2) Parameter Fungsi

Dalam bahasa C terdapat 2 macam parameter fungsi yaitu [1] ;

 Parameter formal yaitu variabel yang terdapat pada daftar parameter yang berada di dalam definisi fungsi.

 Parameter aktual adalah variabel yang digunakan pada

pemanggilan satu fungsi.

Terdapat dua cara untuk melewatkan parameter ke dalam fungsi, yaitu :

 Pemanggilan dengan nilai (Call by value) [2]

Call by value akan menyalin nilai dari parameter aktual ke parameter formal. Nilai 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 suatuungkapan tidak hanya untuk sebuah variabel, elemen array atau konstanta saja.

Contoh program : #include "stdio.h" #include "conio.h" nilai (int x, int y); void main () {

clrscr ();

int a = 10, b = 5;

printf ("Nilai sebelum pemanggilan fungsi"); printf ("\nNilai a = %i dan nilai b = %i", a,b); nilai (a,b); // pemanggilan fungsi

printf ("\n\nNilai setelah pemanggilan fungsi"); printf ("\n\nNilai a = %i dan nilai b = %i", a,b); getch();

}

nilai (int x, int y) {

x+=5; y+=5;

printf ("\n\nNilai setelah pemanggilan fungsi"); printf("\na = %i dan nilai b = %i",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 akan 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 dilakukan untuk suatu ungkapan.

Contoh program : #include "stdio.h" #include "conio.h" nilai (int *x, int *y); void main ()

{

clrscr ();

int a = 10, b = 5;

printf ("Nilai sebelum pemanggilan fungsi"); printf ("\nNilai a = %i dan nilai b = %i", a,b nilai (&a,&b); // pemanggilan fungsi

printf ("\n\nNilai setelah pemanggilan fungsi"); printf ("\n\nNilai a = %i dan nilai b = %i", a,b); getch();

}

nilai (int *x, int *y) {

*x+=5; *y+=5;

printf ("\n\nNilai setelah pemanggilan fungsi"); printf("\na = %i dan nilai b = %i",*x, *y); }

Tampilan program diatas adalah :

3) Jenis Variabel pada Fungsi a) Variabel lokal

Variabel lokal adalah variabel yang dideklarasikan di dalam fungsi dan hanya dikenal oleh fungsi yang bersangkutan. Variabel lokal biasa juga disebut sebagai variabel otomatis.

Contoh program

b) Variabel global /eksternal

Variabel eksternal adalah variabel yang dideklarasikan di luar fungsi yang bersifat global yang berarti dapat digunakan bersama – sama tanpa harus dideklarasikan berulang – ulang. Pendeklarasian variabel eksternal diletakkan di luar fungsi main ().

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();

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); }

Tampilan program diatas adalah :

c) Variabel statis

Variabel statis dapat berupa variabel lokal ataupun variabel eksternal. Variabel statis ini bersifat :

 Jika variabel bersifat lokal maka hanya dikenal oleh fungsi tempat variabel tersebut dideklarasikan.

 Jika variabel statis bersifat eksternal maka variabel dapat dipergunakan oleh semua fungsi yang terletak pada file yang sama di tempat variabel statis dideklarasikan.

 Jika tidak ada inisialisasi maka secara otomatis akan diberikan nilai awal nol.

d) Variabel Register [3]

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();

}

Tampilan program diatas adalah :

4) Fungsi Rekursif

Fungsi rekursif adalah fungsi yang memanggil dirinya sendiri. Dengan adanya rekursi, dimungkinkan untuk memanggil fungsi dari dalam fungsi itu sendiri. Proses rekursi biasanya digunakan pada beberapa kasus dikarenakan penerapannya akan lebih mudah dibanding ketika hanya menggunakan bentuk perulangan biasa[5]. Namun, penggunaan rekursi juga memiliki beberapa masalah seperti

efisiensi memori dan kecepatan kerja ketika sebuah proses rekursi dijalankan akan menjadi lebih lambat. Permasalahan yang lebih sering terjadi adalah proses rekursi yang tidak kunjung berhenti, hingga mengakibatkan komputer hang.

Contoh program:

#include “conio.h” #include “stdio.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()

}

3. Latihan

2. Buatlah sebuah program untuk menghitung luar persegi

panjang, luas segitiga dan luas lingkaran. Buatlah pemilihan perhitungan dengan menggunakan fungsi.

3. Buatlah program untuk menghitung harga sewa peminjaman

buku pada sebuah perpustakaan umum. Terdapat tiga jenis buku yaitu jenis A, B, dan C. Tarif jenis buku per 3 hari adalah :

Jenis Buku Harga sewa per 3 hari

A Rp 1500

B Rp 2000

C Rp 2500

a. Jika melebihi waktu peminjaman (3 hari) maka setiap buku

di denda sebesar Rp 500,-.

b. Buatlah program untuk menghitung pembayarannya.

c. Buatlah fungsi untuk menghitung harga sewa.

Daftar Pustaka

[1] Frieyadie. 2005. “Panduan Pemrograman C++”. Penerbit Andi.

Yogyakarta

[2] Kurniawan Khannedy Eko. 2007. “Pemrograman C”. Teknik Informatika. UNICOM.

[3] Sjukani Moh. 2009. “Algoritma (Algoritma & Struktur Data 1) dengan C, C++, dan Java, Teknik – Teknik Dasar Pemrograman Komputer”. Edisis 5. Mitra Wacana Media. Jakarta

[4] Solichin Achmad. “Pemrograman Bahasa C dengan Turbo C”.

www.ilmukomputer.com

[5] Swastika Windra. April 2012. "Dasar Algoritma dan Pemrograman menggunakan C & Java". Prestasi Pustaka Publisher. Jakarta

Dalam dokumen 210798067 Pemrograman Terstruktur Bahasa C (Halaman 75-94)

Dokumen terkait