C Programming - Function and Recursion

Pada hari ini kita akan membahas beberapa materi yaitu fungsi dan rekursif.

Function
Adalah suatu bagian dari sebuah program yang terdiri dari berbagai pernyataan didalamnya, dan kedepannya akan mengembalikan hasil / nilai dari pernyataan yang sudah dibuat tersebut.

Berikut adalah contoh kodingan dengan menggunakan fungsi:
Dan hasil dari outputnya adalah sebagai berikut:

Silahkan dipraktekkan kodingannya jika ingin mencoba. Jika sudah benar maka akan mengeluarkan output seperti yang diatas.

Analysis
Dari hasil output diatas terdapat 2 perbedaan, dimanakah letak perbedaannya?
Mari kita coba membaca dan menganalisis kodingannya:
  • Di dalam kodingan ini kita ditugaskan untuk mencari nilai tertinggi diantara 2 variabel.
  • Pada int main terdapat 2 variabel sebagai inputan yaitu angka_1 dan angka_2.
  • Baris berikutnya kita akan mengeluarkan output dari hasil inputan kita. Tetapi untuk mengeluarkan hasil tersebut kita perlu memanggil sebuah fungsi yang diberi nama max.
  • Dipanggillah fungsi max itu beserta dengan pernyataan - pernyataan didalamnya.
  • Di dalam fungsi max, kita memberi patokan salah satu variabel sebagai nilai awalan. Anggap saja variabel a yang dimasukkan dalam variabel pembanding yaitu max.
  • Lalu kita cek dengan sebuah kondisi, apakah nilai max ini lebih kecil dari variabel b. Jika iya, maka nilai max sekarang adalah variabel b, dan sebaliknya.
  • Kemudian kita mengembalikan nilai / value dari fungsi max tersebut dengan menggunakan return max, yaitu mengembalikan hasil pembandingan yang tadi.
Mungkin ada beberapa pertanyaan yang selintas dibenak kalian sejak melihat kodingan diatas, seperti:
  1. Mengapa membuat fungsi diluar int main?
  2. Apakah parameter didalam fungsi itu harus sesuai sama variabel di int main?
  3. Apakah kita harus setiap waktu memberikan nilai return pada fungsi yang dibuat?
Jawabannya:
  1. Karena untuk codingan diatas, jika meletakkan fungsinya didalam int main, makan akan terjadi compiler error.
  2. Variabel didalam parameter tidak harus sesuai dengan variabel yang ada di dalam int main maupun di dalam fungsi.
  3. Iya untuk tipe data yang bukan void.
Tambahan:
  • Jika fungsi pada kodingan diatas diletakkan dibawah int main, maka akan error. Karena ketika ingin mencetak output, output bingung dimanakah letak fungsi maxnya, jadi sebaiknya fungsi ditulis sebelum int main.
  • Tipe data dalam sebuah fungsi:
    • Int
    • Char
    • Void, dll
Khusus untuk tipe data void, tidak perlu menulis return lagi, karena fungsi dengan tipe data void, nilai / value pengembaliannya sudah digabung menjadi satu dibandingkan dengan tipe data lainnya yang harus menulis return pada saat selesai menghitung atau membuat pernyataan dalam sebuah fungsi.

Scoping
Dalam scoping terdapat 2 jenis yaitu:
  • Local Identifier
Adalah sebuah variabel yang cakupannya hanya bisa dipakai dalam satu area / bagian program itu saja

  • Global Identifier
Adalah sebuah variabel yang cakupannya bisa digunakan untuk seluruh area / seluruh fungsi yang ada.

Berikut adalah contoh perbedaan antara local dengan global variabel:



Recursion
Adalah suatu fungsi yang memanggil dirinya sendiri.

Untuk membuat sebuah rekursif, diperlukan beberapa komponen berikut seperti:

1. Base case
Digunakan untuk membuat kondisi awalannya tanpa harus memanggil fungsi berikutnya dan mengembalikan nilai tersebut.


2. Reduction Step
Digunakan untuk memanggil fungsi berikutnya hingga pemanggil fungsi tersebut sudah tidak memenuhi kondisi lagi.

Berikut adalah contoh kodingan untuk rekursif:

Dan berikut adalah hasil outputnya:

Analysis
Dari hasil kodingan diatas, tujuan kita adalah membuat bilangan faktorial berdasarkan angka yang kita input. Dapat diketahui bahwa:

  • Pertama dalam int main, kita membuat inputan dengan variabel a
  • Dibawahnya kita perintahkan program untuk mencetak hasilnya, tetapi sebelum dicetak, dia memanggil fungsi factorial terlebih dahulu.
  • Proses fungsi factorial pun berjalan, kemudian dicek kondisinya yang terdiri dari base case dan reduction step
  • Program akan berhenti ketika dalam fase base case, yaitu a = 1.
  • Ketika variabel a sudah mencapai angka 1, hasil perkalian dari value tersebut akan dikembalikan ke fungsi int main untuk dicetak hasilnya.

Komentar

Postingan populer dari blog ini

Tips dalam bermain Town of Salem

C Programming - Pointer and Arrays