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.

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.


Pemrograman dalam bahasa C menawarkan banyak konsep dasar yang membentuk fondasi bagi pengembangan aplikasi perangkat lunak yang lebih kompleks. Salah satu konsep yang sangat penting dalam pemrograman C adalah teknik melewatkan parameter pada fungsi. Teknik ini memungkinkan pengembang untuk membuat fungsi yang lebih fleksibel, memungkinkan nilai untuk dimasukkan ke dalam fungsi tanpa perlu menulis ulang logika fungsi tersebut setiap kali ingin memanipulasi nilai yang berbeda. Pemahaman yang mendalam tentang cara melewatkan parameter dalam bahasa C sangat penting bagi pengembang, karena ini berpengaruh pada efisiensi, pemeliharaan, dan skalabilitas kode.

Pengertian dan Pentingnya Melewatkan Parameter

Secara umum, melewatkan parameter dalam bahasa C mengacu pada cara nilai atau referensi variabel dikirimkan ke dalam suatu fungsi agar fungsi tersebut dapat memproses atau memanipulasinya. Melewatkan parameter sangat penting dalam desain fungsi karena memungkinkan fungsi untuk bekerja dengan berbagai input tanpa menulis ulang kode yang sama berulang kali. Hal ini memungkinkan penggunaan kembali kode (code reuse) yang sangat efisien, serta pengelolaan kode yang lebih baik dalam pengembangan perangkat lunak yang lebih besar.

Ada dua cara utama dalam melewatkan parameter ke dalam fungsi di C: melewatkan parameter dengan cara nilai dan melewatkan parameter dengan cara referensi. Kedua teknik ini memiliki implikasi yang berbeda dalam hal bagaimana data diproses dalam fungsi, dan keduanya sering digunakan dalam berbagai situasi tergantung pada kebutuhan pemrograman.

Melewatkan Parameter dengan Cara Nilai

Melewatkan parameter dengan cara nilai adalah metode paling dasar dan paling umum dalam bahasa C. Pada metode ini, nilai dari variabel yang dikirimkan ke fungsi disalin ke dalam parameter fungsi. Artinya, fungsi bekerja dengan salinan lokal dari parameter yang diterima, dan setiap perubahan yang dilakukan dalam fungsi tidak memengaruhi nilai variabel asli yang ada di luar fungsi.

Metode ini sangat cocok digunakan ketika tujuan utama fungsi adalah untuk menghitung atau memproses data tanpa perlu mengubah nilai-nilai asli yang diberikan. Sebagai contoh, dalam perhitungan matematis atau manipulasi string, mengirimkan parameter dengan cara nilai memastikan bahwa data asli tetap utuh, dan fungsi bekerja dengan salinan lokal dari data tersebut.

Namun, meskipun teknik ini sederhana, ada beberapa keterbatasan yang perlu dipertimbangkan. Salah satu kelemahannya adalah jika parameter yang dilewatkan berupa struktur data besar, seperti array atau struktur kompleks, salinan dari data tersebut akan dibuat setiap kali fungsi dipanggil. Ini dapat menyebabkan pemborosan memori dan waktu eksekusi, terutama ketika fungsi tersebut dipanggil berulang kali dengan data besar.

Melewatkan Parameter dengan Cara Referensi

Berbeda dengan melewatkan parameter dengan cara nilai, melewatkan parameter dengan cara referensi memungkinkan fungsi untuk bekerja langsung dengan variabel asli, bukan salinan lokal dari variabel tersebut. Pada dasarnya, dengan cara ini, alamat memori dari variabel asli yang dilewatkan dikirimkan ke fungsi, dan fungsi menggunakan alamat tersebut untuk mengakses dan memodifikasi data yang ada di luar fungsi.

Teknik melewatkan parameter dengan cara referensi sangat berguna dalam situasi dimana perubahan pada nilai variabel asli perlu dilakukan. Misalnya, dalam kasus pengolahan data yang melibatkan pengubahan nilai-nilai yang diberikan, seperti pembaruan status atau perhitungan hasil yang akan memengaruhi kondisi di luar fungsi. Melewatkan parameter dengan cara referensi lebih efisien untuk tipe data yang besar, karena tidak perlu menyalin data yang besar setiap kali fungsi dipanggil.

Namun, teknik ini juga memiliki potensi risiko. Salah satu risiko utama adalah bahwa fungsi dapat secara tidak sengaja mengubah nilai variabel yang dimaksud, yang mungkin tidak diinginkan dalam beberapa situasi. Hal ini dapat menyebabkan masalah dalam integritas data dan membuat program menjadi sulit untuk dipelihara. Oleh karena itu, pemrogram perlu berhati-hati dan memastikan bahwa fungsi hanya mengubah data jika benar-benar diperlukan.

Perbedaan Antara Melewatkan Parameter dengan Nilai dan Referensi

Perbedaan utama antara melewatkan parameter dengan cara nilai dan melewatkan parameter dengan cara referensi terletak pada bagaimana data dikirimkan dan diproses dalam fungsi. Pada teknik pertama, data disalin ke dalam parameter lokal, sehingga fungsi hanya dapat bekerja dengan salinan data tersebut dan tidak dapat mengubah data asli. Sebaliknya, pada teknik kedua, data dikirimkan sebagai referensi, yang memungkinkan fungsi untuk mengubah nilai asli yang ada di luar fungsi.

Dalam memilih antara kedua teknik ini, banyak faktor yang perlu dipertimbangkan. Salah satu faktor utama adalah ukuran data yang diproses. Melewatkan parameter dengan cara nilai mungkin lebih sesuai untuk tipe data kecil atau ketika data tidak perlu dimodifikasi, sedangkan melewatkan parameter dengan cara referensi lebih efisien untuk tipe data besar atau ketika perubahan pada data asli diperlukan.

Selain itu, kompleksitas dan kebutuhan fungsional program juga berperan dalam pemilihan metode yang tepat. Fungsi yang sederhana yang hanya memerlukan pemrosesan data tanpa perlu mengubah data asli dapat menggunakan teknik melewatkan parameter dengan cara nilai. Sebaliknya, fungsi yang melibatkan banyak interaksi dengan data yang dapat berubah seiring waktu akan lebih baik menggunakan teknik melewatkan parameter dengan cara referensi.

Penggunaan Pointer dalam Melewatkan Parameter

Di dalam bahasa C, pointer memainkan peran penting dalam teknik melewatkan parameter dengan cara referensi. Sebuah pointer adalah variabel yang menyimpan alamat memori dari variabel lain. Dengan menggunakan pointer, program dapat melewatkan alamat memori variabel asli, yang memungkinkan fungsi untuk mengakses dan memodifikasi data yang disimpan di alamat tersebut.

Pointer memberi fleksibilitas dan kontrol lebih lanjut terhadap pengelolaan memori dalam aplikasi C. Melalui penggunaan pointer, pemrogram dapat menghindari duplikasi data, yang sangat penting dalam aplikasi yang membutuhkan pengelolaan memori secara efisien, terutama saat bekerja dengan struktur data yang besar atau dinamis. Namun, penggunaan pointer juga membutuhkan pemahaman yang baik, karena kesalahan dalam pengelolaan pointer dapat menyebabkan masalah seperti dereferensi pointer yang salah atau kebocoran memori.

Keuntungan dan Tantangan dalam Melewatkan Parameter

Setiap teknik dalam melewatkan parameter memiliki keuntungan dan tantangan yang perlu dipertimbangkan. Keuntungan utama melewatkan parameter dengan cara nilai adalah kesederhanaannya. Fungsi yang menggunakan parameter nilai cenderung lebih aman karena tidak ada risiko pengubahan nilai asli dari variabel. Teknik ini juga lebih mudah dipahami dan diterapkan, terutama bagi pemrogram pemula.

Namun, tantangannya terletak pada efisiensi, terutama ketika bekerja dengan struktur data besar. Mengirimkan data besar melalui parameter nilai dapat membebani memori dan memperlambat eksekusi program. Oleh karena itu, ketika bekerja dengan data besar, teknik melewatkan parameter dengan cara referensi lebih disarankan.

Sementara itu, teknik melewatkan parameter dengan cara referensi lebih efisien dalam hal penggunaan memori dan waktu eksekusi, karena tidak memerlukan penyalinan data. Namun, penggunaan referensi meningkatkan kompleksitas program, karena fungsi dapat mengubah data asli yang mungkin tidak diinginkan. Programer harus memastikan bahwa referensi hanya digunakan dengan hati-hati dan dengan pertimbangan yang matang terhadap integritas data.

Kesimpulan

Teknik melewatkan parameter dalam bahasa C merupakan bagian yang sangat penting dalam desain fungsional. Pemahaman tentang cara melewatkan parameter dengan nilai atau referensi dapat membantu pengembang dalam memilih metode yang paling sesuai dengan kebutuhan aplikasi yang sedang dibangun. Melewatkan parameter dengan cara nilai cocok untuk fungsi sederhana yang tidak mengubah data asli, sementara melewatkan parameter dengan cara referensi lebih efisien ketika bekerja dengan data besar atau ketika perubahan pada data asli diperlukan. Keterampilan dalam memilih dan menerapkan teknik ini akan membuat kode lebih efisien, fleksibel, dan lebih mudah dipelihara.

Artikel ini akan dibaca oleh: 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 -