Function and Recursion
Salam Programmers!
Function
Kali ini
kita akan membahas tentang fungsi dan rekursif. Dalam mengkoding Bahasa C, kita
terbiasa membuat kodingan kita di dalam fungsi int main. Namun sebenarnya, kita
dapat menggunakan atau membuat fungsi baru yang diletakkan di luar int main. Fungsi-fungsi
tersebut berfungsi untuk mempermudah kita dalam membaca kodingan yang telah
kita buat sehingga terlihat lebih rapih dan mudah untuk difahami. Fungsi dapat
disebut juga sebagai modular programming, yang di mana kodingan kita tersebut
berbetuk modul-modul sesuai kegunaannya masing-masing.
Langsung saja
berikut contoh fungsinya :
#include<stdio.h>
void print (char
nama[10]){
printf("Selamat Belajar
%s!!!\n", nama);
}
int main(){
char nama[10] = "Semua";
print(nama);
return 0;
}
Dari kodingan
di atas ini jika dicompile akan menghasilkan :
Dalam kodingan
terdapat tulisan “void print(….)”, ini merupakan syntax dari penulisan fungsi
yang dilanjutkan dengan kurung kurawal seperti biasa. Tipe data void merupakan
tipe dari fungsinya. Kalian dapat mengganti tipe datanya sesuai dengan
kebutuhan. Pada kurung setelah nama fungsi berguna untuk parameter. Parameter tersebut
lah yang menjadi bahan dan yang nantinya akan di proses didalam fungsi.
Cara memanggil
fungsi juga cukup mudah, dalam kodingan di atas tertulis “print(nama)”. Maksudnya
adalah “print” merupakan nama fungsi yang kita akan panggil jadi nama tersebut
bisa berubah-ubah sesuai dengan nama fungsi yang telah kalian buat. Selanjutnya,
dalam kurung terdapat “nama”, ini merupakan parameter yang ingin kita lempar ke
dalam fungsi tersebut sebagai bahan. Untuk catatan, parameter di dalam fungsi
dengan di int main haruslah memiliki jumlah dan juga tipe data yang sama. Jika kalian
membuat fungsi dengan parameter (int…, int…) maka di dalam int main pun kalian
harus memasukkan nama 2 variabel yang memiliki tipe data int pula untuk di
proses. Berikut contoh error jika tidak sesuai :
Dapat dilihat
bahwa ketika saya memasukkan tipe data int dalam pemanggilan fungsi,
compilernya memberi tanda merah yang menandakan bahwa tipe data tidak cocok
dengan tipe data yang ada difungsi.
Terakhir sebagai
tambahan, ketika kalian ingin membuat sebuah fungsi dengan tipe data selain
tipe data “void”, maka haruslah diberikan tulisan “return” yang diikuti dengan
nilai yang direturn bisa angka seperti 1, 0, dan sebagainya atau bisa juga
return variabel tertentu.
Berikut contohnya
:
#include<stdio.h>
void
print(char nama[10]){
printf("Selamat Belajar
%s!!!\n", nama);
}
//merupakan
contoh fungsi dengan tipe data selain void
int
tambah(int angka1, int angka2){
int hasil;
hasil = angka1+angka2;
return hasil; //mengembalikkan nilai
dari variabel hasil
}
int main(){
char nama[10] = "Semua";
int nilai1 =5;
int nilai2 =3;
int hasil;
print(nama);
hasil = tambah(nilai1, nilai2);
//nilai dari fungsi ditampung dalam variabel lain yang ada di
int main
printf("%d", hasil);
return 0;
}
Recursion
Recursion merupakan
sebuah proses fungsi yang memanggil dirinya sendiri. Seperti yang telah
dijelaskan tentang fungsi sebelumnya, terdapat “return” yang di mana berfungsi
untuk mengembalikkan nilai kepada int main. Namun, dalam rekursif yang direturn
adalah nama dari fungsi itu sendiri dengan parameter yang sedikit dirubah. Recursion
umumnya memiliki dua struktur. Pertama adalah base case dan kedua adalah proses
rekursif. Dalam base case, kita harus menentukan kemungkinan awal dari proses
yang ingin kita buat. Base case akan menangkap nilai terkecil dari pola yang
ingin kita lakukan. Sedangkan, proses rekursif berisi proses yang dilanjutkan
dengan return fungsi itu sendiri. Sebagai contoh, saya ingin membuat pola “A” “ABA”
“ABACABA”. Polanya adalah print fungsi sebelumnya dan base case adalah A jika
1. Maka kodingannya akan menjadi :
#include<stdio.h>
void
print(int angka){
int huruf = 64;
if(angka==1){
printf("A"); //merupakan base case
}else if(angka==2){
printf("ABA");
//merupakan base case
}else{
print(angka-1);
printf("%c",
huruf+angka);
return print(angka-1);
//proses rekursif
}
}
int main(){
int angka;
int i;
scanf("%d", &angka);
printf("Case #%d: ", i);
print(angka);
printf("\n");
return 0;
}
Dalam kodingan
tersebut, saya menggunakan fungsi yang bertipe int. dalam fungsi tersebut
mengapa saya menggunakan 2 base case? Karena jika saya menggunakan 1 base case
untuk pola tersebut, maka akan sulit membaca polanya secara menyuluruh. Karena itu
saya membuat 2 base case agar lebih terlihat polanya. Lalu pada proses
rekursif, terlihat bahwa saya mengembalikkan nilai dari fungsi itu sendiri
dengan mengurangi 1 pada parameternya. Itulah yang disebut dengan rekursif. Namun
dalam belajar algorithma, tentulah kita memiliki perbedaan dalam menyusunnya. Semua
bergantung pada bagaimana kalian memahami suatu pola dan juga kreatifitas kalian.
Demikian lah
sedikit pembelajaran tentang fungsi dan rekursif. Semoga pembelajaran ini dapat
bermanfaat bagi kalian.
Salam
Programmers!


Tidak ada komentar:
Posting Komentar