PENGERTIAN FUNGSI MODULAR C++ (FUNGSI), VARIABEL LOKAL, VARIABEL LOKAL BESERTA CONTOHNYA

PENGERTIAN FUNGSI MODULAR C++ (FUNGSI), VARIABEL LOKAL, VARIABEL LOKAL BESERTA CONTOHNYA



A.   Definisi

Dalam sebuah program, seringkali pemrogram perlu memecah persoalan yang kompleks menjadi beberapa bagian yang lebih mudah diselesaikan. Ide inilah yang mencetuskan

•    struktur pemrograman modular, yaitu memecah persoalan menjadi sub- sub persoalan yang biasa disebut subprogram.
Bayangkan sebuah program yang dibuat untuk menghitung nilai ratarata dari sekumpulan  nilai  integer.  Dalam  prosesnya,  program  melakukan  perhitungan tersebut  dalam  dua  langkah,  yaitu  menjumlahkan  seluruh  nilai,  kemudian membaginya dengan banyaknya nilai yang tersedia. Dengan demikian program tersebut dapat dipecah menjadi dua subprogram, yaitu subprogram penjumlahan
dan subprogram pembagian.
-     Selain  itu,  pemrograman  modular  memungkinkan  pemrogram  memanggil kembali subprogram yang telah didefinisikannya setiap kali diperlukan dalam program tersebut.
-     Pemrogram tidak perlu berulang kali mendefinisikan sekumpulan instruksi yang  diperlukan  beberapa  kali  dalam  sebuah  program  maupun  dalam program lainnya.
-      Dengan pemrograman modular, sebuah subprogram dapat dianggap sebagai program kecil dengan sebuah tujuan spesifik yang umumnya berisi operasi sederhana dan apabila terdapat kesalahan dapat dilokalisir pada subprogram itu  sendiri.  Sub-sub  program  tersebut  kemudian  disatukan  oleh  bagian program utama yang dapat memanggil subprogram tersebut sesuai kebutuhan
dalam program. 

Dalam pemrograman, dikenal dua tipe subprogram yang biasa digunakan untuk memecah persoalan kompleks menjadi lebih sederhana, yaitu fungsi (function) dan prosedur (procedure).
Kedua tipe subprogram ini dapat digunakan bersamaan maupun salah satunya saja dalam sebuah program.    Masing-masing tipe subprogram memiliki karakteristik dan perilaku yang berbeda sehingga penggunaannya dalam program juga berbeda-beda.


Subprogram  sebagai  bagian dari program utama wajib  mendefinisikan kondisi awal (initial state/I.S.) sebelum proses dalam subprogram dieksekusi dan juga mendefinisikan kondisi akhir (final state/F.S.) yang berupa hasil proses (output) atau perubahan nilai dalam variabel tertentu (khusus untuk fungsi saja).
Beberapa fungsi dan prosedur telah terdefinisi dan dapat langsung digunakan oleh pemrogram dalam sebuah program dengan mendefinisikan variabel-variabel yang diperlukan. Selain fungsi dan prosedur yang telah terdefinisi tersebut, pemrogram juga dapat membuat sendiri fungsi dan prosedur yang diperlukannya dalam sebuah program.

Dalam membuat sebuah subprogram, pemrogram dapat menyimpannya dalam salah satu dari dua lokasi berikut ini:
1. dalam   file   yang   sama   dengan   program   utama:   dapat   dilakukan   jika subprogram  sedikit  dan  berukuran  kecil  sehingga  relatif  mudah  dikelola dalam sebuah file
2. dalam file yang terpisah: biasanya dilakukan jika subprogram sudah terlalu banyak sehingga sulit dikelola, atau jika pemrogram menginginkan supaya subprogram dapat digunakan di beberapa program utama sekaligus


B.   Variabel Lokal dan Variabel Global

1.   Variabel Lokal
Dalam mendeklarasikan sebuah fungsi/ prosedur, dapat dideklarasikan pula variabel-variabel  yang  akan  digunakan  dalam  fungsi/  prosedur  tersebut. Variabel semacam ini disebut variabel lokal atau variabel internal, artinya variabel ini hanya dikenali secara lokal dalam sebuah subprogram (fungsi atau  prosedur). Variabel lokal tidak dapat dipanggil, diakses dan diubah oleh prosedur atau fungsi yang lain, bahkan oleh program utama sekalipun karena hanya dapat dikenali oleh prosedur atau fungsi dimana variabel ini didefinisikan.

2.   Variabel Global
Sedangkan  variabel  yang  didefinisikan  dalam  program  utama  dan  dapat digunakan  di  program  utama  maupun  sub-sub  program  lainnya  disebut dengan variabel global. Nilai dari variabel ini dapat dipanggil, diakses dan diubah  oleh  prosedur  atau  fungsi  apapun  yang  terdapat  dalam  program  tersebut.


C.   Fungsi

Fungsi   adalah   subprogram   yang   menerima   data   masukan,   melakukan beberapa perhitungan dari data tersebut, kemudian mengembalikan output berupa sebuah data baru. Dengan kata lain, sebuah fungsi memetakan sebuah nilai (dalam domain) menjadi nilai lain (dalam range) dengan operasi/ proses tertentu.   Pendeklarasian   fungsi   merupakan   salah   satu   cara   memecah persoalan ke dalam beberapa sub persoalan yang lebih mudah diselesaikan.
Dalam pembuatan sebuah fungsi, pemrogram harus mendefinisikan:
-      nama fungsi
-     Tipe data yang dibuat/ dihasilkan oleh fungsi
-      Daftar parameter yang menyatakan data yang diperlukan oleh fungsi
-      Satu atau lebih instruksi yang melakukan perhitungan

Selanjutnya, fungsi yang sudah didefinisikan dapat digunakan dalam program utama maupun dalam fungsi lainnya dengan cara memanggil nama fungsi dan memberikan parameter yang diperlukan oleh fungsi tersebut. Fungs bekerja menurut   mekanisme   pemanggilan-pengembalian   (callreturn-mechanism).
Tahapan dalam mekanisme tersebut adalah:
1. Fungsi dipanggil dari program utama maupun fungsi lainnya
2. Sekumpulan operasi dalam fungsi dieksekusi
3.  Hasil  eksekusi  dikembalikan  ke  program  utama  atau  fungsi  lain  yang memanggilnya. 

Struktur umum sebuah fungsi:
FUNCTION nama_fungsi (daftar_parameter)->tipe_data
BEGIN
{instruksi dalam fungsi}
return
ENDFUNCTION
Sedangkan penulisan dalam bahasa pemprograman C++ adalah sebagai berikut :
Tipe_data_kembali nama_fungsi(daftar_parameter)
{
/* instruksi dalam fungsi */
return value;
}

Dengan catatan bahwa daftar parameter boleh kosong (tidak ada parameter yang perlu diinputkan pada saat pemanggilan fungsi). Jika daftar parameter (disebut juga parameter formal) tidak kosong maka parameter tersebut harus berupa nama parameter dan tipe datanya. Dalam sebuah  fungsi, instruksi terakhir harus merupakan perintah untuk mengirimkan nilai/ data keluaran dari fungsi ke program utama (bagian program yang memanggilnya). Nilai yang dikembalikan oleh sebuah fungsi dapat bertipe skalar, record, array, maupun set. Jika kita melihat struktur penulisan fungsi, struktunya hampir atau bahkan sama dengan program utama. Pada dasarnya, pemprograman dengan menggunakan C++ adalah pemprograman dengan struktur fungsi, dimana setiap kode yang dituliskan harus dalam bentuk fungsi, tak terkecuali program utama. Program utama merupakan suatu fungsi dengan nama main() yang tidak memiliki nilai kembali atau nilai kembalinya adalah kosong atau 0. Oleh karenanya, kita juga dapat menuliskan program utama dengan void main() atau dengan int main(), dengan return value-nya 0.
Saat program pertama dijalankan, kode yang pertama dieksekusi adalah fungsi main(). Oleh karenanya, setiap program minimal harus memiliki satu fungsi yaitu main(), dimana isi dari fungsi ini adalah inti dari program. 

Fungsi :
–Bagian dari program yang dimaksudkan untuk mengerjakan suatu tugas tertentu dan letaknya dipisahkan dari program yang menggunakannya. Program dari bahasa C dibentuk dari kumpulan-kumpulan fungsi, mulai dari fungsi utama, fungsi pustka, maupun fungsi yang dibuat oleh pemrogram.
Manfaat fungsi :
– Fungsi menjadikan program C memiliki struktur yang jelas. Dengan memisahkan langkah-langkah detil ke satu atau lebih fungsi, maka fungsi utama (main( )) akan menjadi lebih pendek, jelas dan mudah dimengerti.
– Fungsi-fungsi dapat dijinkan untuk menghindari penulisan yang sama berulang- ulang. Langkah-langkah program yang sama dan sering digunakan berulang-ulang dapat ditulis sekali saja secara terpisah dalam bentuk fungsi-fungsi, selanjutnya bagian  program  yang  membutuhkan  langkah-langkah  ini  cukup  memanggil fungsi-fungsi tersebut.

Nilai akhir dari suatu fungsi adalah nilai yang dikembalikan oleh fungsi berdasarkan input parameter-parameter yang dimasukkan.


Contoh fungsi:

int rata(int x, int y, int z)
{
int ave;
ave = (x + y + z)/3;
return(ave);
}

Di dalam fungsi dikenal istilah Parameter Formal dan Parameter Aktual :
a. Parameter formal adalah parameter yang terdapat pada pendefinisian sebuah fungsi.
b. Parameter aktual adalah parameter yang terdapat pada saat pemanggilan fungsi.
Cara melewatkan parameter ke dalam suatu fungsi dapat dilakukan melalui dua cara yaitu:

a. Pelewatan parameter melalui nilai (call by value) :
– pelewatan parameter ke dalam fungsi dengan menyalin nilai dari suatu variabel aktualnya.  Maksudnya  adalah  fungsi  menerima  masukan  berupa  nilai,  bukan alamat memori letak dari datanya dan nilai tersebut disimpan di alamat memori yang  terpisah  dari  nilai  aslinya  yang  digunakan  oleh  bagian  program  yang memanggil fungsi.
Contoh :

#include <stdio.h>
#include <conio.h> 
int kali(int a,int b, int c) //parameter formal
{
int x;
x = a * b * c;
return(x);
}
int main()
{
int a,b,c;
printf(“Masukkan angka 1 : “); scanf(“%d”,&a); printf(“Masukkan angka 2 : “); scanf(“%d”,&b); printf(“Masukkan angka 3 : “); scanf(“%d”,&c);
printf(“Hasil  perkalian  ketiga  bilangan  adalah  %d”,kali(a,b,c));
//parameter aktual getch();
return(0);
}

b. Pelewatan parameter melalui acuan/referensi (call by reference) :
– pelewatan parameter ke dalam fungsi dengan menyalin alamat dari suatu variabel aktualnya. Fungsi yang menerima kiriman alamat ini akan menggunakan alamat yang   sama   untuk   mendapatkan   nilai   datanya.   Hal   ini   dilakukan   dengan menggunakan pointer. Pointer adalah variabel yang merujuk pada alamat lokasi suatu memori tertentu, variable pointer dapat dideklarasikan dengan menuliskan nama  variabelnya  diawali  dengan  asterisk  (‘*’).  Perubahan  yang  terjadi  pada variabel  asal  akan  mengakibatkan  perubahan  pada  variabel  pointernya  dan sebaliknya.
Contoh :

#include <stdio.h>
#include <conio.h>
void desc_sort(int *bil1,int *bil2) //parameter formal
{
if(*bil1<*bil2)
{
*bil1 = *bil1 + *bil2;
*bil2 = *bil1 – *bil2;
*bil1 = *bil1 – *bil2;
}
}
int main()
{
int a,b,c;
printf(“Masukkan angka 1 : “); scanf(“%d”,&a); printf(“Masukkan angka 2 : “); 
scanf(“%d”,&b); printf(“Masukkan angka 3 : “); scanf(“%d”,&c);
desc_sort(&a,&b); //parameter aktual desc_sort(&a,&c); //parameter aktual desc_sort(&b,&c); //parameter aktual
printf(“Hasil descending sort adalah %2d %2d %2d”,a,b,c);
getch();
return(0);
}


Parameter dalam sebuah fungsi merupakan antarmuka (penghubung) antara fungsi dengan kode pemanggilnya. Fungsi menerima satu atau beberapa nilai melalui parameter-parameter yang telah didefinisikan. Setiap kali fungsi dipanggil, kode pemanggil harus menyediakan parameter yang dibutuhkan oleh fungsi. Beberapa karakteristik parameter dalam fungsi:
-     Parameter hanya muncul di dalam fungsi yang mendefinisikannya dan tidak dapat diakses di luar fungsi tersebut.
-      Parameter menyimpan nilai hingga fungsi dieksekusi.
-      Parameter diinisialisasi setiap kali fungsi dipanggil oleh program utama maupun fungsi lainnya.

Setelah didefinisikan, fungsi dapat dipanggil dari program utama maupuan dari fungsi lainnya dengan perintah:
<nama_variabel> <- <nama_fungsi>(<daftar_parameter>)

1. FUNCTION luas_segiempat (P:integer, L:integer)
integer
2. { IS : Dua buah bilangan Bulat
3. FS : Hasil Kali dua bilangan }
4. KAMUS DATA
5. hasil : integer
6. P,L : integer;
7. BEGIN
8. hasil <=P * L
9. return (hasil)
10. ENDFUNCTION


Pada  contoh  di  atas,  fungsi  luas_segiempat  memerlukan  dua  parameter inputan, yaitu P dan L yang keduanya bertipe integer. Kemudian, fungsi ini akan menghitung hasil dengan perkalian nilai P dan L. Fungsi akan mengembalikan nilai variabel hasil ke kode pemanggil. 
Berikut ini adalah contoh algoritma program utama/ fungsi lain (selanjutnya disebut kode pemanggil) yang memanggil fungsi luas_segiempat:
1. Kamus data
2. panjang, lebar, luas: integer
3. BEGIN
4. { meminta inputan 2 nilai}
5. Input (panjang, lebar)
6. {pemanggilan fungsi luas_segiempat}
7. luas <=luas_segiempat(panjang, lebar)
8. Output (luas) {menampilkan luas}
9. END


Pada  potongan  program  di  atas  didefinisikan  tiga  variabel,  yaitu  panjang, lebar, dan luas. Pemanggilan fungsi luas_segiempat dilakukan dalam tiga tahap sesuai mekanisme call-return, yaitu:
1. Kode pemanggil memberikan (passing) dua parameter yang sudah didefinisikan sebagai variabel dalam program tersebut, yaitu panjang dan lebar.
2. Fungsi luas_segiempat dijalankan dengan menerima dua parameter dari kode   pemanggil.   Secara   berurutan,   variabel   panjang   dikenali   sebagai parameter   P   dan   variabel   lebar   dikenali   sebagai   parameter   L.   Fungsi melakukan  perkalian  dan  menyimpan  hasilnya  dalam  variabel  hasil  yang merupakan parameter output dari fungsi.
3. Fungsi luas_segiempat mengembalikan nilai dalam variabel hasil ke kode pemanggil. Kode pemanggil akan menyimpannya ke dalam variabel luas yang telah didefinisikan, kemudian menampilkannya ke pemakai. 

Perhatikan pula bahwa variabel P, L dan hasil hanya didefinisikan dan digunakan di fungsi luas_segiempat dan tidak dapat digunakan dalam program utama maupun fungsi lainnya (variabel lokal).
Berikut ini adalah contoh lain dari definisi fungsi dan pemanggilannya:

1. {===Program Utama===}
2. Kamus data {deklarasi variabel global}
3. nilai1, nilai2 : integer
4. rataan : real
5. BEGIN
6. input (nilai1, nilai2) {input 2 bilangan}
7. {pemanggilan fungsi1}
8. rataanhitung_rataan(nilai1,nilai2)
9. output (rataan) {menampilkan nilai rata-rata}
10. END
11. {===Fungsi 1===}
12. FUNCTION hitung_rataan(var1: real,var2:
real)real
13. {I.S.: var1 dan var2 berisi bilangan
14. F.S.: mengembalikan nilai rataan bertipe real} 
15. Kamus data {deklarasi variabel lokal}
16. jumlah : integer
17. rata : real
18. BEGIN
19. {pemanggilan fungsi2}
20. jumlah hitung_jumlah(var1,var2)
21. rata jumlah/2
22. return (rata) {kembali ke program utama}
23. ENDFUNCTION
24. {===Fungsi 2===}
25. FUNCTION hitung_jumlah(pertama,kedua :
integer)integer
26. {I.S.: pertama dan kedua berisi bilangan
27. F.S.: mengembalikan hasil penjumlahan}
28. Kamus data {deklarasi variabel lokal}
29. hasil : integer
30. BEGIN
31. hasil pertama + kedua
32. return (hasil) {kembali ke fungsi1}
33. ENDFUNCTION


Pada contoh di atas, program bekerja sebagai berikut:
1. Program utama menerima inputan dua bilangan integer
2. Program memanggil fungsi hitung_rataan dengan memberikan dua bilangan inputan sebagai parameter
3. Fungsi hitung_rataan menghitung variabel jumlah dengan memanggil fungsi hitung_jumlah dan memberikan parameter var1 dan var2
4. Fungsi hitung_jumlah dieksekusi dengan menjumlahkan 2 parameter input yang diberikan dan mengembalikan hasil ke hitung_rataan
5.  Fungsi  hitung_rataan  menyimpan  nilai  hasil,  menghitung  rata  dengan (jumlah/2), lalu mengembalikan rata ke program utama
6.   Program   utama   menyimpannya   dalam   variabel   rataan,   kemudian menampilkannya kepada pemakai.

Sebagai ilustrasi algoritma di atas, program utama dimisalkan sebagai blok A, fungsi 1 sebagai blok B dan fungsi 2 sebagai blok C. Jika blok-blok tersebut disusun sesuai dengan penulisannya, maka akan tampak sebagai berikut:
  

Arah panah menggambarkan alur pemanggilan fungsi, urutan pemanggilan ditandai dengan menggunakan angka. Panah dengan angka 1 menggambarkan blok  A  (program  utama)  memanggil  Blok  B  (fungsi  1),  kemudian  panah dengan angka 2 menggambarkan Blok B memanggil Blok C (fungsi 2).


D.  Prosedur

Cara  lain  memecah  persoalan  pemrograman  ke  dalam  sub-sub  persoalan pemrograman  adalah  dengan  mendeklarasikan  prosedur.  Prosedur  adalah ederetan instruksi yang diberi nama, dan melakukan tujuan tertentu.
Seperti    halnya    pada    fungsi,    prosedur    bekerja    dengan    mekanisme pemanggilanpengembalian  (call-return  mechanism),  yaitu  dengan  urutan langkah:
1. Prosedur dipanggil oleh kode pemanggil (program utama maupun prosedur lainnya)
2. Sekumpulan operasi yang disimpan dalam prosedur dieksekusi
3. Kontrol dikembalikan ke kode pemanggil

Struktur umum deklarasi prosedur adalah sebagai berikut:
PROCEDURE  <nama_prosedur>  (input  <daftar  parameter  input>,  output
<daftar parameter output>)

{I.S.: [kondisi awal] F.S.: [kondisi akhir/hasil yang diharapkan]}
 BEGIN
{sekumpulan instruksi dalam prosedur}
 ENDPROCEDURE


Sedangkan dalam pemprograman bahasa C++, penulisan prosedure seperti berikut :
1. void nama_procedure (<daftar_parameter_input>
<,daftar_parameter_output>)
2. {
3. /* instruksi */ 
4. }

Dengan  catatan  bahwa  nama  prosedur  dan  nama  parameternya  harus disebutkan  dalam  blok  kode  pemanggil.  Berbeda  dengan  fungsi,  daftar parameter pada procedure terbagi menjadi dua yaitu parameter input dan parameter output. Daftar parameter boleh kosong (tidak ada parameter input  maupun output). Jika parameter tidak kosong (minimal ada satu parameter) maka harus dituliskan nama parameter beserta tipe datanya.
Prosedur tanpa parameter memanfaatkan nilai dari variabel yang terdefinisi dalam  kode  program  utama/prosedur  lain  yang  memanggilnya.  Prosedur tanpa  parameter  ini  hanya  dapat  dieksekusi  jika  nilai  dari  variabel  yang diperlukan dalam prosedur sudah didefinisikan dalam kode program utama/ prosedur lain yang memanggilnya.
Prosedur   dengan   parameter   dibuat   untuk   mengeksekusi   sekumpulan instruksi  dengan  parameter  yang  berbeda-beda.  Nama  parameter  yang dituliskan  pada  definisi  /  spesifikasi  prosedur  disebut  dengan  parameter formal. Sedangkan parameter yang dituliskan pada pemanggilan prosedur disebut parameter aktual.
Parameter    formal    adalah    nama-nama    variabel    yang    dipakai    dalam mendefinisikan prosedur, dan membuat prosedur tersebut dapat dieksekusi dengan variabel yang berbeda saat pemanggilan. Terdapat tiga tipe parameter formal:
-     parameter input, yaitu parameter yang diperlukan prosedur sebagai masukan untuk melakukan aksi yang efektif
-      parameter output, yaitu parameter yang akan menyimpan nilai yang dihasilkan oleh prosedur
-      parameter input/output, yaitu parameter yang diperlukan prosedur sebagai masukan untuk melakukan aksi tertentu, yang pada akhir prosedur akan diisi dengan nilai baru sebagai hasil eksekusi prosedur.

Parameter aktual adalah variabel / konstanta yang dipakai ketika prosedur dipanggil oleh program utama / prosedur lain. Parameter aktual dapat berupa variabel / konstanta, tapi parameter output harus berupa variabel karena akan menyimpan hasil eksekusi prosedur. 

Struktur pemanggilan prosedur dari program utama maupun prosedur lain adalah hanya dengan menuliskan nama procedurenya kemudian diikuti daftar parameternya sebagai berikut:
nama_prosedur

Sama halnya dengan fungsi, prosedur dapat terhubung dengan program utama
maupun prosedur lain melalui pertukaran parameter. Bedanya, deklarasi prosedur
harus  menyertakan  nama  dan  tipe  data  dari  seluruh  parameter  input  dan
outputnya.
Contoh algoritma penghitung luas segi empat dalam subbab fungsi dapat diubah
menjadi sebagai berikut (dengan prosedur):

1. VAR
2. panjang, lebar, luas: integer
3. BEGIN
4. Input (panjang, lebar) {meminta inputan 2
nilai}
5. {pemanggilan fungsi luas_segiempat}
6. call luas_segiempat(panjang, lebar, luas)
7. Output (luas) {menampilkan luas}
8. END
9. PROCEDURE luas_segiempat (input: p, l: integer,
output: hasil: integer)
10. {I.S.: panjang dan lebar berisi bilangan
11. F.S.: luas berisi nilai luas segiempat}
12. BEGIN
13. hasil p * l
14. ENDPROCEDURE

Perbedaan utama yang terlihat antara fungsi dan prosedur adalah bahwa prosedur tidak perlu mengembalikan sebuah nilai, sedangkan fungsi harus selalu mengembalikan nilai (ditunjukkan dengan perintah return ... di akhir blok fungsi).
Selain itu, kode pemanggil fungsi perlu mendefinisikan sebuah variabel untuk menyimpan nilai yang dikembalikan oleh fungsi, sedangkan pada prosedur tidak demikian. Pengisian variabel dilakukan oleh prosedur sehingga kode pemanggil tidak perlu lagi mempersiapkan sebuah variabel penyimpan hasil eksekusi prosedur.
Pada   procedure   pertama   dan   kedua   terdapat   lambang   “&”   setelah penulisan tipe data pada parameter procedure. Hal itu maksudnya adalah variabel tersebut merupakan parameter input/output, dengan kata lain 
akan terjadi pemetaan dua arah antara variabel pada parameter procedure dengan variabel pada parameter pemanggilan procedure.


E.   Fungsi dan Prosedur yang telah terdefinisi

Selain dapat membuat sendiri fungsi atau prosedur yang diperlukan dalam sebuah program, bahasa pemrograman juga sudah menyediakan beberapa fungsi dan prosedur yang sudah terdefinisi dan dapat langsung digunakan / dipanggil dalam program. Penggunaan fungsi maupun prosedur yang telah terdefinisi tersebut dapat mempermudah perancang program menyelesaikan sub persoalan tertentu.
Beberapa fungsi yang telah terdefinisi, antara lain:


Beberapa prosedur yang telah terdefinisi, antara lain: 



F.   Fungsi Rekursif

Fungsi dapat dipanggil oleh program utama dan juga oleh fungsi yang lain, selain kedua metode pemanggilan tersebut, fungsi dapat juga dipanggil oleh dirinya sendiri. Yang dimaksud disini adalah pemanggilan fungsi itu didalam fungsi  itu  sendiri,  bukan  pada  fungsi  yang  lain.  Fungsi  yang  melakukan pemanggilan terhadap dirinya sendiri disebut dengan fungsi rekursif. Berikut adalah contoh program dalam program yang menerapkan metode rekursif untuk menghitung nilai faktorial dari suatu bilangan.

1. // Program Hitung_Faktorial
2. #include <stdio.h>
3.
4. int angka;
5. int hasil;
6.
7. {===Program Utama===}
8. void main () { // program Utama
9. printf(‘‘Masukan Angka Batas Atas Faktorial :’’);
10. scanf(‘‘%i’’,&angka);
11. hasil = faktorial(angka);
12. printf(‘‘Faktorial Dati %i adalah %i.’’, angka,
hasil);
13. }
14.
15. int faktorial(int bil)
16. {
17. if bil = 0 then
18. return 1
19. else
20. return (bil * faktorial(bil - 1));
21. }

Perhatikan pada baris ke-20 kode diatas yang diberi tanda arsir. Kode pemanggilan fungsi faktorial tersebut berada pada bloknya sendiri degan parameter  yang  diubah.  Hal  yang  harus  diperhatikan  dalam  pembuatan rekursif adalah fungsi tersebut harus berhenti dimana didalam fungsi tersebut  harus ada pengkondisian bahwa fungsi harus berhenti. Pada contoh diatas, code untuk menghentikan fungsi tersebut ada pada baris ke 17 dan 18, dimana apabila inputan parameternya 0, maka akan menghasilkan 1. Namun jika tidak, proses akan memanggil fungsi yaitu dirinya sendiri.




Related Posts

Previous
Next Post »