Perbedaan Fungsi dengan Nilai Balik dan Tanpa Nilai Balik dalam C++ (disertai Gambar dan Video Penjelasan)

Kali ini kita akan membahas mengenai apa perbedaan antara fungsi dengan nilai balik dan fungsi tanpa nilai balik.

Video 1. Penjelasan Fungsi dengan nilai balik dan tanpa nilai balik disertai contoh program

Sebelum membahas lebih jauh, bebrapa hal berikut harus diperhatikan. Anda harus memahami terlebih dahulu apa yang dimaksud dengan fungsi, cara mendeklarasikan, mendefenisikan dan memanggil sebuah fungsi. Jika belum memahami materi tersebut, anda dapat mempelajarinya terlebih dahulu pada link berikut ini.

Jadi, fungsi merupakan kumpulan perintah atau statemen yang dikelompokkan ke dalam suatu blok program untuk menyelesaikan suatu tugas khusus tertentu.

Ditinjau dari pengembalian nilainya, fungsi terbagi ke dalam dua jenis yaitu:

  • Fungsi dengan nilai balik
  • Fungsi tanpa nilai balik

Fungsi dengan nilai balik

Fungsi dengan nilai balik adalah suatu fungsi yang mengembalikan suatu nilai kepada perintah pemanggilnya.

Sebagai contoh perumpamaan. Saya tiba-tiba saja ingin makan kue Barongko (Kue tradisional Sulawesi Selatan) seperti ditunjukkan pada gambar 1 di bawah. Kebetulan, tetangga saya melayani jasa pembuatan kue tersebut. Saya kemudian meminta dibuatkan kue barongko dengan memberikan uang sejumlah 20.000 rupiah. Setelah jadi, tetangga saya mengembalikan kue barongko kepada saya sebanyak 10 buah.

Gambar 1. Barongko

Dari cerita di atas kita dapat menyamakan beberapa hal ke dalam istilah fungsi, yaitu:

  • Ketika saya meminta tetangga saya membuat kue barongko diibaratkan sebagai perintah pemanggilan fungsi.
  • Jasa pembuatan kue barongko milik tetangga saya dapat diibaratkan sebuah fungsi. Fungsi khusus untuk membuat kue tradisional Barongko.
  • Biaya pembuatan yang saya berikan sebesar 20.000 rupiah diibaratkan argumen yang dikirimkan dan diterima oleh tetanga saya sebagai parameternya.
  • Proses pembuatan kue diibaratkan sebagai proses yang terjadi didalam fungsi. Dari parameter 20.000 rupiah bisa menjadi 10 kue Barongko.
  • Kue barongko sebanyak 10 buah yang diberikan ke saya diibaratkan nilai balik yang dihasilkan oleh fungsi. Dikembalikan ke saya sebagai perintah pemanggilnya (saya yang meminta dibuatkan).

Adapun ciri-ciri fungsi yang mengembalikan nilai ke perintah pemanggilnya adalah:

  • Menggunakan tipe data pada awal pendeklarasian fungsi
  • Tidak menggunakan void
  • Memiliki keyword “return” di dalam badan fungsi

Sintaks dan contoh fungsi dengan nilai balik

Berikut sintaks fungsi dengan nilai balik. Perhatikan sintaks 1 dan gambar 1.

Sintaks 1

tipe_nilai_balik nama_fungsi (par1, par2, …, parN){

//Proses yang terjadi di dalam fungsi

return output;

}

Keterangan:

  • Tipe_nilai_balik : tipe nilai balik adalah tipe data dari nilai yang dikembalikan oleh fungsi berdasarkan hasil pengolahannya. Fungsi juga diperbolehkan tidak memiliki nilai balik.
  • nama_fungsi : bagian ini merupakan nama dari fungsi. Compiler dapat mengenali sebuah fungsi yang dipanggil berdasarkan nama dan parameternya.
  • par1,par2,...,parN: adalah daftar parameter fungsi sebanyak N. Parameter akan menerima nilai argumen dari perintah pemanggil. Namun suatu fungsi juga boleh tidak memiliki parameter.
  • return: adalah keyword yang digunakan untuk mengakhiri fungsi dan mengembalikan nilai variabel atau output yang mengikutinya. Nilai dikembalikan ke perintah pemanggil fungsi dimana keyword return berada
  • output: dapat berupa nilai, variabel atau perintah yang akan menghasilkan nilai. Jika berupa variabel, maka yang dikembalikan adalah isi dari variabel. Jika berupa perintah maka yang dikembalikan adalah hasil pengeksekusian perintah tersebut.

Berikut gambar ilustrasi dari sintaks 1 di atas.

Gambar 2. Sintaks fungsi dengan nilai balik.

Berdasarkan sintaks di atas, perlu dicatat hal-hal berikut:

  • Tipe_nilai_balik / Tipe_data harus diisi dengan tipe data yang sama dengan output (nilai yang dikembalikan oleh fungsi).
  • Output (variabel atau nilai) yang akan dikembalikan ditempatkan di depan keyword return dan diakhiri dengan “;”.
  • Output atau (variabel atau nilai) yang akan dikembalikan harus memiliki tipe data yang sama dengan tipe data fungsi.
  • Keyword return diletakkan sebelum nilai atau variabel yang akan dikembalikan.
  • Fungsi boleh tidak memiliki atau memiliki parameter

Agar dapat memahami penggunaanya, berikut kami berikan contoh jika sintaks di atas diterapkan. Perhatikan gambar 3.

Gambar 3. Contoh penerapan sintaks 1.

Berdasarkan contoh pada gambar di atas, diketahui bahwa terdapat fungsi bernama luasPersegiPjg(). Fungsi tersebut memiliki 2 parameter yaitu P dan L. Kedua parameter adalah variabel yang dideklarasikan dengan tipe float dan dipisahkan dengan koma. Fungsi ini secara spesifik bertugas untuk mencari luas sebuah persegi dimana inputannya diterima pada variabel parameter P dan L. Nilai dari variabel P dan L kemudian diolah untuk mendapatkan nilai luas yang hasilnya disimpan pada variabel luas bertipe float. Nilai variabel luas kemudian dikembalikan ke perintah pemanggil fungsi dengan menggunakan keyword return. Karena nilai yang dikembalikan bertipe float, maka nilai balik fungsi juga bertipe float.


Contoh program

Penerapan sintaks 1 dalam program sederhana dapat dilihat pada contoh program berikut ini.

#include <iostream>
using namespace std;

float luasPersegiPjg (float P, float L){
    float luas = P * L;
    return luas;
}

float luasSegiTiga(float A, float T){
    float luas = 1.0/2.0 * A * T;
    return luas;
}

int main() {  
    float pPersegi, lPersegi,aSegiTiga, tSegiTiga, luasP,luasP2, luasST;
    pPersegi = 5.5;
    lPersegi = 2.5;
    aSegiTiga =3.0;
    tSegiTiga = 2.5;
    
    luasP = luasPersegiPjg(pPersegi,lPersegi);
    luasP2 = luasPersegiPjg(3.5,1.5);
    luasST = luasSegiTiga(aSegiTiga,tSegiTiga);
              
    cout<<"Luas persegi panjang pertama adalah "<< luasP <<" meter persegi"<<endl;
    cout<<"Luas persegi panjang kedua adalah "<< luasP2 <<" meter persegi"<<endl;
    cout<<"Luas segi tiga pertama adalah "<< luasST <<" meter persegi"<<endl;
    cout<<"Luas segi tiga kedua adalah "<< luasSegiTiga(6.0,1.0) <<" meter persegi"<<endl;
    return 0;
}

Output:

Luas persegi panjang pertama adalah 13.75 meter persegi
Luas persegi panjang kedua adalah 5.25 meter persegi
Luas segi tiga pertama adalah 3.75 meter persegi
Luas segi tiga kedua adalah 3 meter persegi

Contoh program 1 adalah contoh pengimplementasian fungsi berparameter dengan nilai balik. Program tersebut merupakan program untuk mencari luas bangun datar dalam hal ini persegi panjang dan segitiga.

Penjelasan alur kerja contoh program 1

Pertama-tama pada baris 15 dideklarasikan variabel yang akan menampung nilai pada fungsi main() yaitu variabel pPersegi, lPersegi, aSegiTiga, tSegiTiga, luasP,luasP2, dan luasST. Semua variabel tersebut bertipe float. Selanjutnya pada baris 16 sampai 19, variabel pPersegi , lPersegi, aSegiTiga, dan tSegiTiga diisi dengan suatu nilai. Variabel ini nantinya akan menjadi argumen pada perintah pemanggilan fungsi pada baris 21, 22, 23, dan 28.

Sebagai contoh, pada perintah baris 21, terdapat perintah luasP = luasPersegiPjg(pPersegi,lPersegi);. Perintah ini berarti bahwa fungsi luasPersegiPjg()dipanggil dengan mengirimkan argumen berupa nilai yang ada pada variabel pPersegi dan lPersegi. Nilai kembalian dari fungsi akan disimpan pada variabel luasP.

Selanjutnya, karena fungsi luasPersegiPjg()dipanggil, maka fungsi tersebut dieksekusi. Nilai dari argumen pPersegi dan lPersegi akan diterima oleh parameter P dan L yang juga bertipe float secara berurutan. Kemudian pada baris 5, nilai P dan L dikalikan dan hasilnya disimpan pada variabel luas yang bertipe float. Pada baris 6, nilai luas dikembalikan menggunakan perintah keyword return ke perintah pemanggilnya tadi yang berada pada baris 21.

Nilai variabel luasP kemudian ditampilkan melalui perintah baris 25. Proses yang sudah dijelaskan di atas kurang lebih sama untuk perintah pemanggil fungsi pada baris 22, dan 23.

Hal yang perlu menjadi perhatian pada contoh program 1

  • Pada contoh program 1 dapat kita lihat bahwa proses pencarian luas kedua bangun datar tidak didefnisikan secara langsung pada fungsi main(). Namun, setiap bangun datar dibuatkan fungsinya masing-masing. Seperti ditunjukkan pada baris 4 dan 9, kedua fungsi memiliki tipe nilai balik float. Mengapa demikian? sebab, nilai hasil pengolahan data pada fungsi tersebut bertipe float (perhatikan baris 6 dan 11, variabel setelah keyword return). Nilai tersebut akan dikembalikan (ditandai dengan keyword return) ke fungsi pemanggilnya masing-masing (perintah baris 21, 22, 23, dan 28) . Berikut gambar ilustrasinya, perhatikan gambar 4.
Gambar 4. Ilustrasi pemanggilan fungsi dan nilai balik.
  • Adapun parameter setiap fungsi yang ada akan menerima nilai argumen dari perintah pemanggilnya. Perhatikan perintah baris 21, pada baris tersebut terdapat perintah luasPersegiPjg (pPersegi, lPersegi);. Dilihat dari namanya, perintah ini memanggil fungsi luasPersegiPjg() (baris 4 hingga 7). Nilai argumen pPersegi akan diterima oleh parameter P dan nilai argumen lPersegi akan diterima oleh parameter L di baris 4. Hal ini berlaku sama dengan perintah pemanggil lainnya yang ada pada baris 22, 23, dan 28.
  • Nilai parameter diolah dan menghasilkan output. Output ini dikembalikan ke fungsi pemanggilnya menggunakan keyword return. Jika kita perhatikan, perintah pemanggilan fungsi pada baris 21 sampai 23 berada di depan operator penugasan sama dengan=“. Hal tersebut menunjukkan bahwa nilai balik hasil pemanggilan fungsi akan disimpan ke dalam variabel ( variabel sebelum operator penugasan “=”). Berbeda dengan perintah pemanggilan fungsi pada baris 28, nilai baliknya langsung ditampilkan tanpa menyimpannya dulu ke variabel tertentu. Adapun perintah untuk menampilkan nilai output dapat dilihat pada baris 25 hingga 28.
  • Pada program di atas juga kita lihat terdapat 2 kali pemanggilan fungsi untuk fungsi luasPersegiPjg() (baris 21 dan 22) dan 2 kali pemanggilan fungsi untuk fungsi luasSegitiga() (baris 23 dan 24). Hal tersebut menunjukkan bahwa dengan menggunakan fungsi kita dapat menghemat baris perintah. Karena, kita tidak perlu menuliskan perintah yang sama untuk proses yang sama. Cukup dengan memanggil fungsinya.

Fungsi tanpa nilai balik

Selain dapat mengembalikan nilai, suatu fungsi juga diperbolehkan untuk tidak mengembalikan nilai.

Fungsi tanpa nilai balik adalah suatu fungsi yang tidak mengembalikan nilai apapun kepada perintah pemanggilnya.

Adapun ciri-ciri fungsi yang tidak mengembalikan nilai ke perintah pemanggilnya adalah:

  • Menggunakan void pada pendeklarasian fungsi
  • Tidak memiliki keyword “return” di dalam badan fungsi

Fungsi tanpa nilai balik juga dapat memiliki atau tidak memiliki parameter. Berikut penjelasan lengkapnya.


Sintaks dan contoh fungsi tanpa nilai balik

Adapun sintaks fungsi tanpa nilai balik adalah sebagai berikut:

Sintaks 2

void nama_fungsi (par1, par2, …, parN){

//Badan fungsi

}

Berikut gambar ilustrasi dari sintaks 2 di atas. Perhatikan gambar 5.

Gambar 5. Sintaks fungsi tanpa nilai balik berparameter.

Berdasarkan sintaks di atas, perlu dicatat hal-hal berikut:

  • Fungsi tanpa nilai balik harus dideklarasikan dengan tipe void.
  • Tidak menggunakan keyword return.
  • Biasanya hasil pengolahan data langsung ditampilkan melalui badan fungsi.
  • Boleh tidak emiliki atau memiliki parameter

Agar dapat memahami penggunaanya, berikut kami berikan contoh ketika sintaks di atas diterapkan. Perhatikan gambar 6.

Gambar 6. Contoh penerapan sintaks 3.

Jika dilihat, contoh di atas sama dengan contoh pada gambar 3. Namun, pada contoh gambar 6, fungsi luasPersegiPjg() memiliki tipe void dan tidak memiliki keyword return. Hal tersebut menunjukkan bahwa fungsi luasPersegiPjg() di atas tidak memiliki nilai balik. Pada fungsi di atas, hasil langsung ditampilkan sebagai output melalui perintah cout.


Contoh program

#include <iostream>
using namespace std;

void luasPersegiPjg (float P, float L){
    float luas = P * L;
    cout<<"Luas persegi panjang adalah "<< luas <<" meter persegi"<<endl;
}

int main() {  
    float pPersegi, lPersegi;
    pPersegi = 5.5;
    lPersegi = 2.5;
    
    luasPersegiPjg(pPersegi,lPersegi);
    return 0;
}

Output:

Luas persegi panjang adalah 13.75 meter persegi

Kita lihat pada baris 10 dideklarasikan variabel Ppersegi dan Lpersegi. Pada baris 11 dan 12, nilai 5.5 ditugaskan masuk ke variabel pPersegi dan 2.5 ke Lpersegi. Pada baris 14 dilakukan pemanggilan fungsi luasPersegiPjg() dengan mengirimkan argumen pPersegi dan LPersegi.

Fungsi akan menrima nilai argumen berdasarkan urutan parameter. Kemudian akan diolah pada badan fungsi dan hasilnya yang disimpan pada variabel luas ditampilkan ke layar melalui perintah baris 6.

Pada contoh program di atas dapat kita ketahui bahwa fungsi luasPersegiPjg()bertipe void dan tanpa keyword return. Hal tersebut menunjukkan bahwa fungsi tersebut hanya dapat dipanggil namun tidak akan mengembalikan nilai apapun. Fungsi tersebut hanya dipanggil untuk mengeksekusi perintah yang ada di badan fungsi. Gambar ilustrasi dapat dilihat pada gambar 7 di bawah ini.

Gambar 7. Ilustrasi fungsi tanpa nilai balik

Sintaks pemanggilan fungsi

Adapun cara untuk memanggil sebuah fungsi dapat dilihat pada sintaks 3 yang ditunjukkan pada gambar 8 berikut.

Gambar 8. Sintaks pemanggilan fungsi.

Penggunaan sintaks 3 dicontohkan pada gambar 8.

Gambar 9. Contoh penggunaan sintaks 3.

Berdasarkan sintaks dan contoh yang diberikan di atas, pemanggilan fungsi dapat dilakukan hanya dengan menyebutkan nama fungsi diikuti dengan parameternya. Jika suatu fungsi memiliki 3 parameter, maka perintah pemanggilnya juga disertai dengan 3 argumen. Dimana, setiap argumen dipisahkan dengan koma. Jika suatu fungsi tidak memiliki parameter, maka perintah pemanggilnya tidak perlu diisi dengan argumen.


Semoga dapat menambah wawasan teman-teman yang masih baru dalam dunia pemrograman. Semoga bermanfaat.

Jika ingin mendengarkan penjelasan secara lisan, jangan sungkan untuk mengunjungi channel youtube kami “PAKKODING“.

Oh iya, share halaman ini agar orang-orang yang baru belajar pemrograman dapat terbantu.

Salam hangat dari tim pakkoding.id.

 10,302 total views,  9 views today

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *