Rabu, 19 Agustus 2020

Fungsi dalam algoritama : (Definisi, deklarasi, parameter, nilai balik, rekursif dan contoh fungsi)

Fungsi di dalam algoritma dan bahasa pemrograman sebenarnya adalah bagian yang tidak bisa dipisahkan, bahkan hampir semua bahasa pemrograman tingkat tinggi melibatkan fungsi di dalam kaidah struktur kode bahasa yang digunakan nya.

Fungsi keberadaannya memiliki peran yang sangat signifikan karena dapat mempersingkat penulisan program dan dapat meningkatkan kualitas struktur program sehingga lebih modular serta mudah dipahami.

Saya yakin jika anda pertama kali mempelajari algoritma, dan anda dikenalkan dengan materi algoritma tentang fungsi, maka anda akan dibuat bingung, pasalnya memang fungsi untuk orang awam sulit sekali dipahami, tapi sebenarnya jika sudah dapat dipahami fungsi itu tidaklah sesulit apa yang dibayangkan.

dan bahasa pemrograman sebenarnya adalah bagian yang tidak bisa dipisahkan Fungsi dalam algoritama : (Definisi, deklarasi, parameter, nilai balik, rekursif dan contoh fungsi)


Di artikel kali ini saya akan menjelaskan secara terperinci mengenai algoritma pemrograman fungsi. apa yang akan saja jelaskan meliputi, definisi fungsi, deklarasi fungsi, parameter, nilai balik, rekursif funsi dan contoh fungsi.

Definisi atau pengertian Fungsi

Fungsi adalah sebuah blok kode program yang melakukan operasi khusus yang sudah didefinisikan dan mengembalikan hasil yang telah diproses, dengan adanya fungsi program lebih kelihatan rapi, mudah dipahami dan lebih terstruktur, karena dengan adanya blog fungsi maka ketika di dalam program secara keseluruhan ternyata ada proses yang serupa lebih dari satu dengan blok fungsi yang sudah dibuat, tidak perlu membuat ulang, cukup menggunakan blok fungsi tersebut dengan cara memanggil nama fungsi tersebut tanpa harus menulis kode kembali.

Deklarasi Fungsi dalam algoritma

Deklarasi fungsi dalam algoritma adalah aturan penulisan kode algoritma untuk blok fungsi, deklarasi fungsi dalam algoritma biasanya sangat tergantung sekali dengan pendekatan bahasa pemrograman yang akan mengkonversinya, untuk pendekatan ke dalam bahasa pemrograman pascal deklarasi fungsi biasanya dimulai dengan kata Function sebagai berikut:

Function NamaFungsi (input : deklarasi parameter, jika ada) à Tipe data
{Spesifikasi fungsi, berisi penjelasan tentang apa yang dilakukan  dan dikembalikan oleh fungsi .}
DEKLARASI{semua nama yang dipakai di dalam fungsi dan hanya berlaku lokal di dalam prosedur didefinisikan di sini}
ALGORITMA{badan fungsi, berisi urutan instruksi yang menghasilkan nilai yang akan dikembalikan oleh fungsi}
Return  ekspresi {pengembalikan nilai yang dihasilkan fungsi}


NamaFungsi bisa disesuaikan pada umumnya diberi nama sesuai dengan kegunaan dari blok fungsi itu sendiri,  sedangkan yang ada di dalam kurung itu adalah parameter, fungsi harus mengembalikan sebuah nilai dari pengolahan data atau proses fungsi, perintahnya biasanya diletakan di akhir baris fungsi, kode perintahnya adalah Return.....

Aturan penulisan nama fungsi
Nama fungsi memiliki aturan penulisan khusus, sebagai berikut:

  • Tidak boleh di awalai oleh angka
  • Tidak boleh mengandung spasi
  • Tidak boleh menggunakan keyword dari bahasa pemrograman yang digunakan


Parameter Fungsi dalam algoritma

Parameter fungsi adalah variable yang dilewatkan ke dalam fungsi, ketika fungsi dibuat parameter sifatnya opsional, boleh ada atau pun boleh tidak digunakan, pertimbangannya adalah, jika variable-variable yang dilibatkan di dalam fngsi sifatnya dinamic atau bisa diubah-ubah atau berbeda-beda maka parameter wajib dilibatkan, namun jika sebaliknya tidak perlu melibatkan variable di dalam fungsi tersebut.

Dalam algoritma fungsi penulisan parameter biasanya di dalam kurung setelah nama fungsi, dengan perintah input: deklarasi varameter, seperti terlihat pada potongan kode fungsi di bawah ini:

Function NamaFungsi (input : deklarasi parameter, jika ada) : Tipe data.........endfunction 

Kode yang berwarna merah di atas itu disebut parameter, parameter yang dimasukan adalah nama variable dan tipe datanya, bisa lebih dari satu atau dikosongkan saja.

Nilai balik fungsi dalam algoritma

Nilai balik fungsi adalah return value atau nilai yang diperoleh dari proses yang dijalankan oleh fungsi itu sendiri,  tipe data nilai balik fungsi sesuai dengan yang didefinisikan oleh fungsi itu sendiri, jika tipe datanya integer maka nilai baliknya juga harus integer, jika tipe datanya string maka nilai balik yang dikembalikan juga harus berformat string.

Karena fungsi memiliki nilai balik, maka ketika nama blog fungsi tersebut di panggil di dalam struktur program bisa kita anggap itu adalah sebuah nilai bukan rangkaian struktur perintah program. sama halnya ketika kita ingin memproses angka atau kata, karena sebuah nilai maka ketika dipanggil fungsi tersebut harus dilibatkan untuk sebuah proses perhitungan atau dicetak.

Fungsi harus dipanggil untuk dijalankan oleh program

Ketika struktur kode program dibaca oleh komputer, dan di dalam struktur program tersebut terdapat blok-blok fungsi, maka blok fungsi tersebut hanya akan dibaca saja dan tidak akan diproses, blok fungsi baru akan diproses ketika ada kode program yang memanggil fungsi tersebut.

Untuk memproses blok fungsi maka fungsi tersebut harus di panggil di dalam struktur program dengan cara menulis nama dan juga parameternya.

Misalkan saja di dalam struktur program kita sudah membuat funsi sebagai berikut:
Function jumlahkan(var a,b,c,d,e... integer) : integer
.....
.....
reurn ......

Fungsi diatas namanya adalah jumlahkan yang mengembalikan sebuah nilai dalam bentuk integer, blok fungsi di atas ketika dibaca oleh program maka hanya sekedar akan dibaca saja tidak akan dieksekusi atau diproses, nah agar fungsi tersebut diproses maka nama fungsi tersebut perlu dipanggil di dalam struktur program.

Misalkan saja hasil dari fungsi tersebut ingin kita cetak ke layar maka kita harus memanggil fungsi tersebut untuk dicetak

writeln('Totalnya adalah:', jumlahkan(10,5)); 

Kode yang berwarna merah di atas adalah contoh dari pemanggilan nama fungsi.

atau

.......
Jumlah ß jumlah + jumlahkan(5,5)........
Kode program di atas juga sebagai salah satu contoh pemanggilan fungsi, karena fungsi mengembalikan sebuah nilai dan nilai yang dikembalikan dari contoh fungsi diatas adalah integer maka kita bisa memanggil fungsi tersebut di dalam proses perhitungan seperti di atas.

Fungsi Rekursif

Fungsi rekursif adalah Fungsi yang memanggil dirinya sendiri atau pemanggilan fungsi yang bersangkutan di dalam struktur fungsi itu sendiri, misalkan anda memiliki fungsi jumlahkan, nah di struktur fungsi jumlahkan yang anda buat anda memanggil fungsi jumlahkan.

contoh struktur fungsi rekursif

function jumlahkan(var a,b : integer) : integer
....
jumlahkan(10,5)
....
endfunction

Bisa dilihat di struktur algoritma di atas bahwa fungsi jumlahkan di panggil di dalam struktur fungsi jumlahkan. itu yang disebut sebagai rekursif atau fungsi yang memanggil dirinya sendiri.

Contoh Kasus Struktur algoritma yang melibatkan fungsi

Untuk lebih memahami fungsi maka saya sajikan contoh kasus  struktur algoritma untuk menghitung luas persegi panjang dengan fungsi dan tanpa fungsi:

A. Algoritma Menghitung persegi panjang tanpa Fungsi


algoritma hitung_persegi_panjang;

DEKLARASI
panjang : integer
lebar : integer
luas : integer

ALGORITMA:
lebar ß 5
panjang ß 10
luas ß panjang * lebar 

write(luas)


B. Algoritma menghitung persegi panjang menggunakan fungsi

algoritma hitung_persegi_panjang
DEKLARASI
var panjang. lebar : integer

ALGORITMA:
write ('masukan panjang : '); readln(panjang);
write ('masukan lebar : ');readln(lebar);

writeln(hitung_luas(panjang,lebar));

writeln(hitung_luas(10,5));
writeln(hitung_luas(97,50));


function hitung_luas(var P,L:integer) : integer
var luas : integer
luas ß P * L

return luas;
endfunction.



Algoritma di atas hanya contoh sederhana saja, bisa kita bandingkan kedua struktur algoritma di atas, algortma yang menggunakan fungsi jauh lebih efektif karena ketika kita ingin memproses perhitungan persegi panjang yang nilai panjang dan lebarnya diinput oleh pengguna maka kita tinggal panggil saja perintah hitung_luas(panjang, lebar) dimana variable panjang dan lebar sudah diisi oleh pengguna melalui perintah readln.

Dan ketika kita ingin menghitung kembali perhitungan luas persegi panjang dengan panjang dan lebar dengan nilai lainnya, maka kita tidak perlu membuat struktur porgram perhitungan yang baru cukup lakukan saja pemanggilan fungsi
hitung_luas(10,5) ini jika ingin menghitung persegi panjang dengan panjang 10 dan lebar 5
hitung_luas(97,50) ini jika angka yang ingin dihitung panjangnya 97 dan lebarnya 50.  

Bayangkan jika tidak memakai fungsi, maka ketika kita ingin menghitung pesegi panjang dengan nilai berbeda maka kita harus menulis ulang struktur serupa sehingga program akan semakin panjang.

Sekali lagi contoh di atas hanya contoh kasus sederhana saja sehingga panjangnya program tidak bisa dijadikan acuan, namun jika kasus yang dipecahkan sangat kompleks penggunaan fungsi benar-benar sangat bermanfaat dan sangat efektif, contoh di atas hanyalah sebagai bahan agar anda mampu memahami tentang fungsi.

Lho kenapa kode perintah algoritma di atas berbeda dengann yang saya pelajari?

Bisa saja ketika anda membaca algoritma di atas strukturnnya berbeda dengan apa yang sedang anda pelajari, perlu anda ketahui bahwa perintah algoritma sangat tergantung sekali dengan pendekatan bahasa pemrograman yang ingin anda kembangkan, algoritma di atas menggunakan bahasa pemrograman pascal, jika yang sedang anda pelajari adalah bahasa C++ atau java, maka kode perintah algoritmanya akan sedikit berbeda.

Yang harus anda perhatikan adalah logika cara berfikirnya, jika anda mampu menguasai logika cara berfikir yang di uraikan di struktur algoritma maka akan dengan mudah anda mengkonversi ke algoritma sesuai dengan pendekatan bahasa pemrograman yang anda pelajari.