Lompat ke konten Lompat ke sidebar Lompat ke footer

Teknik Melewatkan Parameter Bahasa C

Terdapat beberapa pendekatan berbeda untuk melewatkan data parameter dari dan ke method dan fungsi pada Bahasa C.

Sebelum memahami lebih dalam materi tentang Teknik Melewatkan Parameter Bahasa C, terlebih dahulu pelajari materi tentang: Fungsi Nested Bahasa C Kompilator dan GCC, Fungsi Callbacks Bahasa C, dan Identifier __func__ Bahasa C dan Predefinisinya.

Asumsikan bahwa sebuah fungsi B() dipanggil dari fungsi A() pada Bahasa C. Pada kondisi ini, fungsi A disebut "caller function" dan fungsi B disebut "called function" atau "callee function". Juga, argumen dari fungsi A yang akan dikirim ke fungsi B disebut dengan argumen fungsi aktual, dan parameter dari fungsi B disebut dengan argumen formal.

Baca Juga:

Terminologi:
  • Parameter Formal: sebuah variabel beserta nilai tipenya yang muncul pada prototype dari fungsi atau method.
  • Parameter Aktual: sebuah variabel atau ekspresi yang berkorenponden ke sebuah parameter formal yang muncul pada sebuah fugsi atau method pemanggilan pada lingkungan pemanggilan fungsi.

Mode Pemanggilan:
  • IN: Melewatkan inform dari caller ke callee.
  • OUT: Callee menulis nilai pada caller.
  • IN/OUT: Caller memberitahukan nilai dari variabel callee, yang mungkin sudah diperbarui oleh callee.

Method penting dari parameter passing:
  • Pass By Value: Method ini digunakan pada mode semantik. Dengan metode ini perubahan pada value mengakibatkan parameter formal tidak ditransmisikan kembali ke caller, dimana setiap modifikasi ke variabel parameter formal yang berada di dalam fungsi pemanggil atau method pemanggil, akan berdampak hanya pada lokasi penyimpanan terpisah dan tidak akan direpleksikan pada parameter aktual dalam lingkungan pemanggilnya. Method ini juga disebuat sebagai call by value.

Contoh:

// Program Bahasa C untuk

// ilustrasi call by value.

#include <stdio.h>


void func(int a, int b)

{

a += b;

printf("In func, a = %d b = %d\n", a, b);

}


int main(void)

{

int x = 5, y = 7;


// Melewatkan Parameter

func(x, y);


printf("In main, x = %d y = %d\n", x, y);


return 0;

}

Output:
In func, a = 12 b = 7
In main, x = 5 y = 7


  • Pass by reference(aliasing): Teknik ini digunakan pada mode input atau output semantik. Perubahan value mengakibatkan parameter formal ditransmisikan kembali ke caller sepanjang proses passing dilakukan. Setiap perubahan ke parameter formal akan direpleksikan pada parameter aktual dalam lingkungan pemanggilnya sebagai parameter yang menerima sebuah referensi atau pointer ke data aktual. Metode ini juga disebut sebagai call by reference. Penggunaan metode call by reference adalah lebih efisien dari segi penghematan waktu dan ruang memori.

Contoh:

// Program Bahasa C untuk

// ilustrasi call by

// reference.

#include <stdio.h>


void swapnum(int* i, int* j)

{

int temp = *i;

*i = *j;

*j = temp;

}


int main(void)

{

int a = 10, b = 20;


// Melewatkan parameter

swapnum(&a, &b);


printf("a is %d and b is %d\n", a, b);


return 0;

}

Output:
a is 20 and b is 10

Metode Parameter Passing Lainnya

Teknik ini adalah teknik lama dan digunakan pada bahasa pemrograman tipe lama seperti Pascal, Algol, dan Fortran. Teknik ini tidak dapat diterapkan pada bahasa pemrograman tingkat tinggi, yang dijelaskan sebagai berikut:
  • Pass by Result: Metode ini digunakan untuk semantik mode output. Sebelum kontrol ditransfer kembali ke bagian caller, nilai dari parameter formal akan ditransmisikan kembali ke parameter aktual. Metode ini terkadang juga disebut sebagai call by result. Secara umum, teknik pass by result diimplementasikan oleh proses duplikasi.
  • Pass by Value-Result: Metode ini digunakan pada semantik mode input atau mode output. Metode ini merupakan sebuah kombinasi dari Pass-by-Value dan Pass-by-result, sebelum proses kontrol ditransimisikan kembali ke bagian caller, dimana value dari parameter formal ditransmisikan kembali ke parameter aktual. Method ini terkadang juga disebut sebagai call by value-result.
  • Pass by Name: Teknik ini digunakan pada bahasa pemrograman seperti Algol. Pada teknik ini, simbol "name" dari sebuah variabel yang dilewatkan, memungkinkan untuk dilakukan proses akses dan proses update.

Contoh: Untuk nilai double dari C[j], dapat dilewatkan melalui nama (bukan value-nya) ke suatu 

procedure double(x);

real x;


begin

x:=x*2


end;


Secara umum, dampak dari penggunaan pass-by-name secara tekstual adalah melakukan proses substitusi argumen ke sebuah prosedur pemanggilan untuk parameter korenponden pada bagian tubuh dari prosedur.

Implikasi dari Mekanisme Pass-by-Name:
  • Ekspresi argumen akan dievaluasi ulang kali parameter formal dilewatkan.
  • Prosedur dapat mengubah nilai dari variabel yang digunakan pada ekspresi argumen dan mengubah nilai ekspresi.

Artikel ini didedikasikan kepada: Maimuna, Miftah Santalia, Muhamad Abdul Nabsir, Muhammad Muhlisin, dan Nadia Yuliana.

5 komentar untuk "Teknik Melewatkan Parameter Bahasa C"

  1. Kenapa parameter harus dilewatkan pada bahasa C?

    BalasHapus
    Balasan
    1. Ya klo parameternya tidak mau dilewatkan ya tidak apa apa sih,,

      Hapus
    2. Ini adalah bentuk pertanyaan bani israil,

      Hapus
  2. Apa yang terjadi jika paramter tidak berhasil dilewatkan pada bahasa C?

    BalasHapus
    Balasan
    1. Jika tidak muncul pesan error, ya program kemungkinan akan mengalami masalah pada proses output.

      Hapus

Hubungi admin melalui Wa : +62-896-2414-6106

Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung.

Bantu admin meningkatkan kualitas blog dengan melaporkan berbagai permasalahan seperti typo, link bermasalah, dan lain sebagainya melalui kolom komentar.

- Ikatlah Ilmu dengan Memostingkannya -
- Big things start from small things -