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. rataanhitung_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.
Baca Juga :