Anda di halaman 1dari 20

PRAKTIKUM PEMROGRAMAN KOMPUTER BAHASA PEMRORAMAN C (FUNGSI/SUBPROGRAM)

Disusun Oleh: Nama : I MADE JUNAEDI PURBAYA NIM : 0908605040

Program Studi Teknik Informatika Jurusan Ilmu Komputer Fakultas Matematika dan Ilmu Pengetahuan Alam Universitas Udayana

LANDASAN TEORI 1. Pengertian. Fungsi adalah suatu bagian dari program yang dirancang untuk melaksanakan tugas tertentu dan letaknya dipisahkan dari program yang menggunakannya. Elemen utama dari program bahasa C berupa fungsi-fungsi, dalam hal ini program dari bahasa C dibentuk dari kumpulan fungsi pustaka (standar) dan fungsi yang dibuat sendiri oleh pemrogram. Fungsi banyak digunakan pada program C dengan tujuan : Program menjadi terstruktur, sehingga mudah dipahami dan mudah dikembangkan. Dengan memisahkan langkah-langkah detail ke satu atau lebih fungsi-fungsi, maka fungsi utama (main()) menjadi lebih pendek, jelas dan mudah dimengerti. dapat mengurangi pengulangan (duplikasi) kode. Langkah-langkah program yang sama dan dipakai berulang-ulang di program dapat dituliskan sekali saja secara terpisah dalam bentuk fungsi-fungsi. Selanjutnya bagian program yang membutuhkan langkah-langkah ini tidak perlu selalu menuliskannya, tetapi cukup memanggil fungsi-fungsi tersebut. 2. Nama Global dan Lokal Nama-nama (konstanta, peubah, tipe dan lain-lain) yang dideklarasikan bersangkutan dalam (bersifat utama lokal). Sedangkan nama-nama yang dideklarasikan bersifat global (nama-nama global di di

dalam deklarasi prosedur hanya "dikenal" di dalam badan prosedur yang program dikatakan dapat

digunakan di bagian manapun di dalam program, baik di dalam program utama maupun di dalam prosedur).

3. Parameter Parameter aktual adalah parameter yang disertakan pada waktu pemanggilan, sedangkan parameter formal adalah parameter yang dideklarasikan di dalam bagian header prosedur itu sendiri. Ketika prosedur dipanggil, parameter actual menggantikan parameter formal. Tiap-tiap parameter aktual berpasangan dengan parameter formal yang bersesuaian. Berdasarkan penggunaannya terdapat 3 jenis parameter formal, yaitu : Parameter masukan (input parameter) : parameter yang nilainya berlaku sebagai masukan untuk prosedur (sering disebut parameter nilai parameter by value). Parameter keluaran (output parameter) : parameter yang menampung keluaran yang dihasilkan oleh prosedur. II-4 Parameter masukan/keluaran (input/output parameter) : parameter yang berfungsi sebagai masukan sekaligus keluaran bagi prosedur tersebut (parameter keluaran dan parameter masukan/keluaran sering dinamakan parameter acuan parameter by reference).

4. Penggolongan Variabel Penyimpanan

berdasarkan Kelas

Suatu variabel, di samping dapat digolongkan berdasarkan jenis/tipe data juga dapat diklasifikasikan berdasarkan kelas penyimpanan (storage eksternal, variabel statis,variabel register. 4.1. Variabel Lokal Variabel lokal adalah variabel yang dideklarasikan dalam fungsi, dengan sifat :
secara otomatis diciptakan ketika fungsi dipanggil dan akan sirna (lenyap)

class).

Penggolongan berdasarkan kelas penyimpanan berupa : variabel lokal, variabel

ketika eksekusi terhadap fungsi berakhir ,


Hanya dikenal oleh fungsi tempat variabel tersebut dideklarasikan, Tidak ada inisialisasi secara otomatis (saat variabel diciptakan, nilainya tak

menentu). Daiam banyak iiteratur, variabei iokai disebut juga dengan variabei otomatis. Variabei yang termasuk daiam goiongan ini bisa didekiarasikan dengan menambahkan kata kuci auto di depan tipe-data variabei. Kata kunci ini bersifat opsionai, biasanya

disertakan sebagai penjeias saja. Penerapan variabei iokai yaitu biia variabei hanya dipakai oieh suatu fungsi (tidak dimaksudkan untuk dipakai oieh fungsi yang iain). Pada contoh berikut, antara variabei i daiam fungsi main'( dan fung31'( tidak ada kaitannya, sebab masingmasing merupakan variabel lokal. /* F ile # clud in e v id o m ain() { it n i = 2; 0 program < stdio .h> : lo a k l.c * /

fu g 1 o ); n 5 (v id

fu g 1 n 5 (); pin ( n i r tf ila } void { it n i = 1; 1 i di dalam fung51() = %d\n , i; ) fu ng51(void) i di dalam m ain() = %d\n , i; )

pin ( n i r tf ila } Contoh eksekusI :

nl i ia i di dalam fung51() = 11 nl i ia i di dalam m ain() = 20

4.2.

Variabel Eksternal Variabel eksternal merupakan variabel yang dideklarasikan di luar fungsi, dengan

sifat : dapat diakses oleh semua fungsi kalau tak diberi nilai, secara otomatis diinisialisasi dengan nilai sama dengan nol. Contoh variabel eksternal ada pda program ekstern1.c yaitu berupa variabel I. Pada pendeklarasian it n i = 273;

menyatakan bahwa I merupakan variabel eksternal dan diberi nilai awal sama denan 273. Nilai dari variabel I selanjutnya dapat diubah oleh fungsi tambah'( maupun maIn'(. Setiap fungsi tambah'( dipanggil maka nilai I akan bertambah satu.

/* F ile Contoh # inclu e d it n void m ain() {

program program

: e sen .c kt r 1 dengan v ria e a bl e s rn l k te a * /

< io.h std > /* v ria e a bl e s rn l k te a * /

i = 23 7; tam bah(void);

p tf( ila rin N i i += 7 ;

a a wl

i = %d\n ,

i; )

p tf( ila rin N i tam bah(); p tf( ila rin N i tam bah(); p tf( ila rin N i } void { i+ ; + } Contoh eksekusI : N ilai N i ila N i ila N i ila aw al i kn ii i kn ii i kn ii

i kn ii i kn ii i kn ii

= %d\n , = %d n , \ = %d\n ,

i; ) i; ) i; )

tam bah(void)

i = 273 = 280 = 281 = 282

Pada contoh di atas, terlihat bahwa I hanya dideklarasikan di bagian atas program, dan tak dideklarasikan lagi dalam fungsi maIn'( maupun tambah'(. Oleh karena I merupakan variabel eksternal maka dapat digunakan oleh kedua fungsi tsb. Namun ada satu hal yang perlu diketahui, variabel eksternal haruslah dideklarasikan sebelum definisi fungsi yang akan mempergunakannya. Untuk memperjelas bahwa suatu variabel dalam fungsi merupakan variabel eksternal, di dalam fungsi yang menggunakannya dapat mendeklarasikan variabel itu kembali dengan menambahkan kata kunci extern di depan tipe data variabel. Sebagai contoh, program ekstern1.c ditulis kembali menjadi seperti pada ekstern2.c.

/* F ile Contoh # clud in e it n void m ain() { e te x rn

program

: e sen .c kt r 2 ek stern al

program yang menggun akan v ariabel d an memakai k ta k n i e te a uc x rn * / < stdio .h> /* v ria e a bl e s rn l k te a

i = 23 7; tam bah(void);

* /

in t

i /* v ria e ; a bl a a wl

e s rn l k te a i; )

* /

p tf( ila rin N i i += 7 ;

i = %d\n ,

p tf( ila rin N i tam bah(); p tf( ila rin N i tam bah(); p tf( ila rin N i } void { e te x rn i+ ; + } Contoh eksekusI : in t i ; tam bah(void)

i kn ii

= %d\n ,

i; )

i kn ii

= %d\n ,

i; )

i kn ii

= %d\n ,

i; )

/* v ria e a bl

e s rn l k te a

* /

N ilai N i ila N i ila

aw al i kn ii i kn ii

i = 273 = 280 = 281

10

N i ila

i kn ii

= 282

Kalau dalam suatu program terdapat suatu variabel eksternal, suatu fungsi bisa saja menggunakan nama variabel yang sama dengan variabel eksternal, namun diperlakukan sebagai variabel lokal. Untuk lebih jelasnya perhatikan contoh program di bawah ini.

/* F ile Contoh

program

: e sen .c kt r 3

program yang menggun akan v ariabel ek stern al d an v ria e a bl lo a k l dengan nama yang sama * /

# clud in e

< stdio .h>

it n void

i = 23 7; tam bah(void);

/* v ria e a bl

e s rn l k te a

* /

m ain() { e te x rn in t i ; a a wl /* v ria e a bl i = %d\n , i; ) e s rn l k te a * /

p tf( ila rin N i i += 7 ; p tf( ila rin N i tam bah(); p tf( ila rin N i tam bah(); p tf( ila rin N i } void tam bah(void)

i kn ii

= %d\n ,

i; )

i kn ii

= %d\n ,

i; )

i kn ii

= %d\n ,

i; )

11

{ it n i+ ; + } Contoh eksekusI : N ilai N i ila N i ila N i ila aw al i kn ii i kn ii i kn ii i = 273 = 280 = 280 = 280 i ; /* v ria e a bl lo a kl * /

Pada program di atas, bagi fungsi maIn'( I adalah variabel eksternal. Namun bagi fungsi tambah'(, I merupakan variabel lokal, sebab pada fungsi ini I dideklarasikan tanpa kata kunci extern. Hal ini terlihat jelas dengan mengamati hasil eksekusi program. Pernyataan: i+ ; + Pada fungsi tambah'( tidak mempengaruhi nilai I yang ditampilkan pada fungsi maIn'( (bandingkan ekstern2.c). dengan hasil eksekusi pada

4.3. Variabel Statis Variabel statis dapat berupa variabel internal (didefinisikan di dalam fungsi) maupun variabel variabel ini :

eksternal.

Sifat

Kalau variabel statis bersifat internal, maka variabel hanya dikenal oleh

12

fungsi tempat variabel dideklarasikan

Kalau variabel statis bersifat eksternal, maka variabel dapat dipergunakan

oleh semua fungsi yang terletak pada file yang sama, tempat variabel statis dideklarasikan

Berbeda dengan variabel lokal, variabel statis tidak akan hilang sekeluarnya

dari fungsi(nilai pada variabel akan tetap diingat).

Inisialisasi akan dilakukan hanya sekali, yaitu saat fungsi dipanggil yang

pertama kali.Kalau tak ada inisialisasi oleh pemrogram secara otomatis akan diberi nilai awal nol Variabel statis diperoleh dengan menambahkan kata kunci static di depan tipe data variabel. Sebagai contoh perhatikan program di bawah ini.

/* F ile Contoh # clud in e v id o m ain() { in t

program vr bl a ia e < stdio .h>

: sai . t tsc s tis ta * /

fu g y o ); n 5 (v id

y = 2; 0

fu g y n 5 (); fu g y n 5 (); p tf( ila rin N i } void { s tic ta in t y ; fung5y(void) y dalam m ain() = %d\n , y; )

13

y++ ; p tf( ila rin N i } Contoh eksekusi : y dalam fung5y() = %d\n , y; )

N i ila N i ila N i ila

y dalam fung5y() y dalam fung5y() y dalam m ain()

= 1 = 2 = 20

4.4. Variabel Register Variabel register adalah variabel yang nilainya disimpan dalam register dan bukan dalam memori RAM. Variabel yang seperti ini hanya bisa diterapkan pada variabel yang lokal atau parameter formal, yang bertipe char atau int. Tujuannya untuk mempercepat proses dalam loop. Variabel register biasa diterapkan pada variabel yang digunakan sebagai pengendali loop. Sebab variabel yang dioperasikan pada register memiliki kecepatan yang jauh lebih tinggi daripada variabel yang diletakkan pada RAM. Contoh pemakaiannya bisa dilihat pada program di bawah ini. /* F ile Contoh # clud in e m ain() { r gse eit r in t f ri o( ju la mh it n i ; /* v ria e a bl re is r g te * / program v ria e a bl < stdio .h> : var5reg .c re is r g te * /

= 0 ; i+ ) +

= 1 i <= 100; ;

14

jum lah p tf( rin 1 } contoh eksekusi : + 2 + 3 + .. .

= jum lah

+ i ; + 100 = %d\n , jum lah);

+ 2 + 3 + .. .

+ 100 = 5050

5. Fungsi Dengan Nilai Balik Fungsi dengan nilai balik berguna untuk melakukan suatu proses yang dapat mengembalikan sebuah nilai. Fungsi ini digunakan untuk melakukan prosesproses yang berhubunga dengan nilai. Dalam membuat fungsi ini harus didefinisikan tipe data dari nilai yang akan dikembalikan. Adapun cara pendefinisiannya adalah dengan menuliskan tipe data dari nilai yang akan dikembalikan didepan nama fungsi. Bentuk umum pendefinisian fungsi dengan nilai balik adalah sebagai berikut: Tipe_data nama_fungsi(parameter1, parameter2,..) { Statemen_yang_akan_dieksekusi; ... Return nilai_balik; } Contoh program: #include<stdio.h> HitungLuasBujurSangkar(int sisi) { int L; L = sisi * sisi; return L; main() }

15

{ int s, Luas; printf("Masukkan nilai sisi : "); scanf("%d", &s); Luas=HitungLuasBujurSangkar(s); printf("Luas Bujur Sangkar adalah %d", s, Luas); return 0; } hasil eksekusi: Masukkan nilai sisi : 10 Luas Bujur Sangkar adalah : 100 6. Tanpa Nilai Balik Fungsi tanpa nilai balik adalah fungsi yang tidak memiliki nilai balik (return value). Pada umumnya fungsi ini digunakan untuk melakukan proses- proses yang tidak menghasilkan nilai, seperti melakukan pengulangan, proses pengesetan nilai ataupun yang akan lainnya. diisi Dalam dengan bahasa nilai C, fungsi semacam ini tipe dari kembaliannya void. Bentuk umum

pendefinisian fungsi tanpa nilai balik adalah sebagai berikut: Void_nama_fungsi(parameter1, parameter2,..) { Statemen_yang_akan_dieksekusi; ... } Dan bentuk umum pemanggilan sebuah fungsi yang sebelumnya telah didefinisikan adalah sebagai berikut: nama_fungsi (parameter1, parameter2,...); Contoh program: #include<stdio.h>

16

Void tulis5kali(vaoid) { int j; for (j=0;j<5;j++) { printf("buat tugas!\n"); } } main(void) { Tulis5kali(); return 0; } Hasil eksekusi: buat tugas! buat tugas! buat tugas! buat tugas! buat tugas!

7. Rekursi Fungsi dalam C dapat dipakai secara rekursi, dalam artian suatu fungsi dapat memanggil dirinya sendiri. Sebagai contoh penerapan fungsi menghitung nilai xn dengan n berupa bilagnan bulat positif. Solusi dari persoalan ini dapat berupa : Jika n = 1, maka xn = x Selain itu maka xn = x * xn1 rekursi yaitu untuk

Misalnya x = 2 dan n = 3, proses pemecahannya seperti diuraikan pada gambar berikut:

17

Gambar Pemecahan secara rekursi Rekursi jarang dipakai, di antaranya disebabkan : Biasanya rekursi akan menjadikan fungsi sulit dimengerti. Hanya cocok

untuk persoalan tertentu saja (misalnya pada binary tree atau pohon biner). Untuk fungsi rekursi pada program faktor.c di atas misalnya, akan lebih mudah dipahami kalau ditulis menjadi : in t { it n i , fk a; f k r l( t a toia in m)

fak = 1 ; f ri o( = 1 i <= m; i+ ) ; + fak = fak * i ; re rn k tu (fa ); } Memerlukan stack dengan ukuran yang lebih besar. Sebab setiap kali fungsi dipanggil, variabel lokal dan parameter formal akan ditempatkan ke stack dan adakalanya akan menyebabkan stack tak cukup lagi (stack overflow).

18

8. Pengenalan Konsep Pemrograman Terstruktur Fungsi sangat bermanfaat untuk membuat program yang terstruktur. Suatu program yang terstruktur dikembangkan dengan menggunakan top-down design (rancang atas bawah). Pada C suatu program disusun dari sejumlah fungsi dengan tugas tertentu. Selanjutnya masing masing fungsi dipecah-pecah lagi menjadi fungsi yang lebih kecil. Pembuatan program dengan cara ini akan memudahkan dalam pencarian kesalahan ataupun dalam hal pengembangan dan tentu saja mudah dipahami/ dipelajari. Dalam bentuk diagram, model suatu program C yang terstruktur adalah seperti yang tertera pada bagan berikut ini. Namun sekali lagi perlu diketahui, main'( bahwa pada C semua fungsi sebenarnya berkedudukan sederajat.Fungsi

terdiri dari fungsi_a'( sampai dengan fungsi_n'(, menegaskan bahwa dalam program fungsi main'( akan memanggil fungsi_a'( sampai dengan fungsi_n'(. Adapun fungsi-fungsi fungsi-fungsi yang lain. yang dipanggil oleh fungsi main'( juga bisa memanggil

19

DAFTAR PUSTAKA

http://tutorialpemrograman.wordpress.com/2008/02/10/fungsi-fungsi-dasardalam-bahasa-c/ Tanggal akses 10 Mei 2010. Pukul 20.00 wita. http://tikuslistrik.blogsome.com/2007/12/29/fungsi-dalam-bahasa-c.


akses 10 Mei 2010. Pukul 20.00 wita.

tanggal

www.nusinau.com C / C++ Tanggal akses 10 Mei 2010. Pukul 20.00 wita. dhamidin.files.wordpress.com/2008/01/modul-ii.pdf Tanggal akses 10 Mei 2010.
Pukul 20.00 wita.

http://www.scribd.com/doc/29380745/Modul-Algoritma-Pemrograman-BahasaC-Fungsi-Dan-Rekursi. Tanggal akses 10 Mei 2010. Pukul 20.00 wita.

Praktikum 2. Pengenalan bahasa C (http://lecturer. eepis- its.edu/~tessy/lecturenotes/ prakkp1/ prak2.pdf). Tanggal akses 10 Mei 2010. Pukul 20.00 wita. Pemrograman bahasa C dengan turbo. (http://mhs.stiki.ac.id/07114099/chuaching/pemrograman%20C/solichin-bahasac03.pdf). Tanggal akses: 11 Mei 2010. Pukul 21.15 wita. Praktikum 2. Pengenalan bahasa C ( http:// lecturer.eepis- its. edu/ ~ tessy / lecturenotes/prakkp1/ prak2. Pdf ). Tanggal akses 11 Mei 2010. Pukul 21.15 wita. Pemrograman bahasa C dengan turbo (http://mhs.stiki.ac.id/07114099/chuaching/pemrograman%20C/solichin-bahasac03.pdf). Tanggal akses: 11 Mei 2010. Pukul 21.15 wita.

20