• Tidak ada hasil yang ditemukan

JENIS-JENIS PARAMETER Function Parameter

Function Parameter atau juga disebut sebagai Parameter Formal, adalah variabel lokal yang didirikan di dalam deklarasi function (bukan definisi), Yang merupakan tempat penyimpanan nilai dari argument yang diberikan saat pemanggilan function.

Bentuk Umum Penulisan 1

2 3

returnType identitas (Function Parameters){ //…definisi…

}

Function parameter berada di dalam deklarasi function, di antara tanda ( dan ) setelah identitas dari function. di dalam tanda kurung tersebut anda bisa membuat banyak parameter, dan masing-masing dipisahkan dengan tanda koma ,.

Contoh Penulisan 1

2 3

int myFunction(int a) { ... }

double myFunction(double a, double b) { … } void functionNoReturn(int a, char b, double c) { … } Argument

Argument adalah parameter yang menyertai pemanggilan function. merupakan tempat dimana anda bisa memberikan data untuk digunakan di dalam function yang dipanggil dan diberikan saat pemanggilan function tersebut.

Argument adalah parameter yang menyertai pemanggilan function. merupakan tempat dimana anda bisa memberikan data untuk digunakan di dalam function yang dipanggil dan diberikan saat pemanggilan function tersebut.

Pemberian data ke dalam function kustom dapat berupa data langsung, data dari suatu variabel, data dari konstanta, data dari pengembalian function atau merupakan hasil dari operasi. Pemberian data ke dalam function harus mengikuti aturan yang telah ditetapkan oleh function parameter.

Bentuk Umum Penulisan 1 nama(arguments);

jika lebih dari 1 argument, masing-masing argument akan dipisahkan dengan tanda koma. Pemberian arguments harus sesuai dengan parameter.

Contoh : 1 2 3 myFunction(2) ; myFuntion(a+b, a+4) ;

myFunction(“Arguments”, ‘A’, variabel) ; Contoh Program :

#include <iostream> using namespace std;

void myFunction(int a, int b, int c=20){ // Fuction Parameter atau Parameter Formal

cout<<a<<endl;

35

cout<<c<<endl; }

int main(){

myFunction(1,2,3); //Arguments atau Parameter Actual

return 0; }

Pengertian Pass by Value

Pass by value (memberikan nilai) adalah salah satu metode untuk memberikan argumen kepada function parameter di saat pemanggilan function. Pada dasarnya C/C++ memberikan argument kepada funtion parameter dalam bentuk nilai (value). Ketika kita memberikan argument pada function, maka nilai dari argument akan di salin ke dalam function parameter. Dalam menentukan argument kita dapat membuatnya dalam bentuk nilai, ekspresi, variabel, literal, object, enum dan lain-lain yang mengandung nilai di dalamnya. Contoh Program :

#include <iostream> using namespace std;

int tambah (int a, int b){

return a+b; }

int main () {

cout<<tambah(5,6)<<endl; //pass by value

return 0; }

Function parameter sebenarnya hanyalah variabel lokal. Setiap ketentuan yang ada pada variabel lokal berlaku pada function parameter. Perbedaanya adalah hanya pada segi peletakanya.

Contoh Program :

#include <iostream> using namespace std;

int tambah (int a, int b){

return a+b; }

int main () {

cout<<tambah(5,6)<<endl; //pass by value

cout<<tambah(19,24)<<endl; //pass by value

cout<<tambah(79,64)<<endl; //pass by value

return 0; }

Dari program di atas, terlihat bahwa function kustom tambah() dipanggil berulang kali. Dengan argument yang berbeda-beda. Itu bukan berarti bahwa nilai function parameter selalu diperbaharui setiap function itu di panggil dan diberi argument baru, melainkan function parameternya lah yang selalu baru.

36

Sama seperti variabel lokal, bahwa function parameter termasuk dalam Automatic duration dengan arti bahwa variabel tersebut hanya akan ada pada saat function tersebut sedang berjalan. sebelum itu dan sesudah itu, semua local variabel di dalamnya akan hilang atau tidak ada. Contoh Program :

#include <iostream> using namespace std;

int ubah(int x){

x = 99; cout<<"x = "<<x<<endl; } int main () { int a = 1;

cout<<"a = "<<a<<endl;

ubah(a); //pass by value

cout<<"a = "<<a<<endl;

return 0; }

Metode ini tidak cocok digunakan untuk memberikan argument berupa array, object dan segala sesuatu yang cukup memakan memori besar. karena apa yang terjadi adalah nilai dari argument di salin ke function parameter, hal itu dapat menurunkan performa program anda.

Contoh Program :

#include <iostream> using namespace std;

void myFunction(int a,double b,char c);//function prototype

int main(){

int var=29029;

myFunction(var-29000,2,'A'); //pass by value

return 0; }

void myFunction(int a,double b,char c){

cout<<"a"<<" = "<<a<<endl;

cout<<"b"<<" = "<<b<<endl;

cout<<"c"<<" = "<<c<<endl<<endl; }

Pengertian Pass by Reference

Pass by Reference adalah salah satu metode pemberian argument kepada function parameter saat pemanggilan function, dengan memanfaatkan reference pada function parameter. Pada pembuatan function parameter kita dimungkinkan untuk menggunakan reference. metode ini tidak jauh beda dengan pass by value, keduanya merupakan metode yang memberikan argument kepada parameter. Tapi hal yang berbeda di sini adalah bagaimana function parameter menerima argument tersebut.

37

Contoh Penulisan :

//parameter

void myFunction (int &a,int &b){ }

//pemanggilan

myfunction (argument1,argument2);

Pada pass by value kita mengetahuhi sifat dari metode pass by value, yaitu ketika kita memberikan argument kepada function parameter, yang CPU lakukan adalah nilai dari variabel argument akan disalin kepada variabel function paremeter, keduanya akan berdiri sendiri sebagai variabel. jadi ketka nterjad perubahan nilai pada function parameter tidak akan mempengaruhi argument, Nilai pada argument akan selalu aman saat function tersebut sedang berjalan.

Contoh Program :

#include <iostream> using namespace std;

void myF(int x);//function prototype

int main(){

int a=1;

cout<<"a = "<<a<<endl;

myF(a);

cout<<"a = "<<a<<endl;

return 0; }

void myF(int x){

x++;

cout<<"x = "<<x<<endl; }

Tapi hal itu akan berbeda jika kita menggunakan reference pada function parameter. Reference pada function parameter masih memiliki fungsi yang sama seperti kita menggunakanya pada variabel biasa. Apa yang terjadi pada argument adalah cpu akan membuat function parameter sebagai referensi dari argument, atau dengan arti lain bahwa function parameter akan menjadi alias / variabel dari memori argument yang deberikan.

Jadi function parameter akan menjadi argument tersebut dengan identitas berbeda, apapun yang terjadi pada nilai function parameter maka akan berpengaruh kepada argument tersebut. hal itu terjadi karena function parameter dan argument memiliki satu memori yang sama.

Contoh program :

#include <iostream> using namespace std;

void myF(int &x);

int main(){

38

cout<<"a = "<<a<<endl;

myF(a);

cout<<"a = "<<a<<endl;

return 0; }

void myF(int &x){

x++;

cout<<"x = "<<x<<endl; }

Untuk membuktikan hal tersebut, kalian bisa melihat pada contoh program di atas. Semua perubahan nilai pada function parameter &x dari function kustom myF() akan berpengaruh juga pada argument a pada function utama int main().

Fungsi dari metode ini biasanya digunakan untuk mengembalikan nilai. saat kita mengoperasikan sebuah function kustom, terkadang kita menginginkan function kustom tersebut dapat mengembalikan nilai yang lebih dari satu. Kadang ini tidak dimungkinkan jika kita menggunakan keyword return.

Dan metode ini bisa kita gunakan untuk mengatasi permasalahan tersebut. kita dapat membuat function kustom yang dapat mengembalikan nilai lebih dari satu. Nilai yang dikembalikan tidak perlu menjadi RValue tapi akan langsung diberikan kebada argument.

Contoh program :

#include <iostream> using namespace std;

void naik_turun(int &penaikan, int &penurunan, int nilai, int

jumlah);//function prototype

int main(){

int hasilNaik=0, hasilTurun=0, nilai=10;

naik_turun(hasilNaik, hasilTurun, nilai, 3);

cout<<"hasilNaik = "<<hasilNaik<<endl;

cout<<"hasilTurun = "<<hasilTurun<<endl;

return 0; }

void naik_turun(int &penaikan, int &penurunan, int nilai, int jumlah){

penaikan = nilai + jumlah;

penurunan = nilai - jumlah; }

Bukan hanya itu saja keuntungan dalam menggunakan metode ini. Metode pass by reference juga dapat meningkatkan performa program anda, khususnya saat kita mencoba untuk memberikan variabel yang cukup besar seperti array, object dan lain-lain.

39

Pengertian Pass by Address

Pass by address kadang juga disebut sebagai Pass by pointer. adalah salah satu metode untuk memberikan argument kepada function parameter saat pemanggilan function, dengan memanfaatkan pointer dereference *.

Contoh Penulisan 1 2 3 4 5 //function parameter int myFunction (int *par){ }

//function parameter myFunction(&var);

Function parameter merupakan sebuah variable, hal yang berbeda antara function parameter dan variabel hanyalah pada penepatanya. Karena function parameter merupakan variabel, maka saat pembuatan function parameter kita juga dimungkinkan untuk menggunakan operator dereference, untuk membuat function parameter berupa variabel pointer. Pointer merupakan variabel yang dapat menunjuk ke sebuah alamat memori, atau dalam pengertian lain yaitu, variabel yang memiliki kemampuan untuk memiliki alamat memori sebagai nilai dari variabel pointer tersebut. dari variabel pointer kita dimungkinkan untuk mengakses nilai dari alamat memori yang ditunjuk. Dalam segi pemberian argument kepada function parameter mirip seperti metode pass by value, ketika kita memberikan argument kepada function parameter, apa yang terjadi adalah nilai dari argument yang diberikan akan disalin dan diberikan kepada function parameter. Tapi ketahui bahwa pointer hanya dapat menyimpan alamat memori sebagai nilai dari variabel pointer dan, perbedaanya antara pass by value dan pass by address adalah, nilai yang disalin pada metode pass by address merupakan alamat memori.

Contoh Program :

#include <iostream> using namespace std;

void myFunction(int *x) { *x = *x+1; cout<<"x = "<<x<<" = "<<*x<<endl; } int main() { int a=2;

cout<<"a = "<<&a<<" = "<<a<<endl;

myFunction(&a);

cout<<"a = "<<&a<<" = "<<a<<endl; }

40

Cara mengoperasikan variabel pointer pada function parameter masih sama seperti kita mengoperasikan variabel pointer dengan metode Lvalue dan Rvalue.

int *lvalue = &rvalue;

Untuk memberikan nilai yang berupa alamat memoir dari sebuah variabel ke sebuah variabel pointer, meskipun variabel pointer tersebut merupakan function parameter, kita tetap akan membutuhkan operator Address-of &.

Pada contoh program di atas kita diperlihatkan kemampuan dari penggunaan pemberian argument dengan metode pass by address. Pada program di atas function parameter x memiliki kemampuan dapat mengakses variabel a yang diberikan sebagai argument, Meskipun variabel tersebut berada pada luar function.

Pada program di atas kita diperlihatkan bahwa function parameter x dapat mengubah dan melihat nilai dari variabel a yang berada di luar function dan diakses secara langsung.

Contoh Program

#include <iostream> using namespace std;

void cetakArrayInt(int *theArr, int panjang) {

//Jika argumen adalah null

if(!theArr){

cout<<"Array tidak ditemukan"<<endl;

return;

}

//jika array kosong

if(!panjang){

cout<<"Array kosong"<<endl;

return; } for(int i=0; i<panjang; i++){ cout<<theArr[i]<<" "; } } int main() { int myArr[]={2, 3, 5, 8, 1};

cetakArrayInt(myArr, sizeof(myArr)/sizeof(int));

return 0; }

Dari ketiga metode tersebut masing-masing memiliki kelebihan dan kekurangan. tapi penulis tidak mencoba untuk menyampaikan perbandingan dan mencari tau metode yang terbaik untuk digunakan, karena ketiga metode tersebut saling melengkapi dan masing-masing berguna dalam dalam situasi tertentu.

41

Untuk apa saja yang cocok menggunakan 3 metode tersebut ? :

Jika akan memberikan argument yang memiliki tipe data dasar, cukup gunakan Pass by value.

Jika akan memberikan argument yang merupakan class, struct dan argument yang cukup memakan banyak memori, gunakan Pass by reference.

Jika akan memberikan argument yang berupa array, gunakan pass by address atas pass by reference.

Jika akan membuat argument yang nilainya tidak bisa diubah, gunakan pass by value atau anda juga bisa gunakan pass by address dan reference dengan mengubah function parameter menjadi literal/konstanta.

Jika akan membuat nilai dari argument yang diberikan dapat di ubah, jangan gunakan pass by value.

Fungsi dari Return pada Function

return berfungsi untuk mengakhri eksekusi dari function tersebut, dan return juga dapat memberikan nilai pada saat akhir dari function kepada pemanggil.

Bentuk penulisan 1

2

return; //pengembalian tanpa nilai. return nilai;//pengembalian dengan nilai. Contoh penulisan

//pengembalian tanpa nilai

return;

//pengembalian dengan nilai

return true; return myVar;

return “belajarcpp.com”; return 6+myVar/5;

Function memiliki dua jenis, yaitu function yang tidak mengembalikan nilai dan function yang dapat mengembalikan nilai pada pemanggil. Dan return adalah keyword untuk mengatur hal tersebut.

Function tidak mengembalikan nilai

Function yang tidak mengembalikan nilai biasanya menggunakan return type yang bertipe void. Contoh Program #include <iostream> #include <string> using namespace std;

void hallo(string a=""){

if(a == ""){

return;

}

cout<<"Hallo "<<a<<" !"<<endl; }

42

hallo();

return 0; }

Saat CPU mendapatkan pernyataan return, CPU akan keluar dari function itu dan akan mengabaikan segala hal, meskipun setelah pernyataan tersebut masih terdapat banyak pernyataan lain.

Pada contoh program di atas, terjadi pemanggilan function hallo() dengan menggunakan satu parameter string, lalu pada function tersebut terdapat penyeleksian untuk memeriksa nilai dari parameter. Lalu dibawahnya terdapat pernyataan keluaran.

Jadi jika pengguna memanggil dan memberikan argument yang tidak kosong maka akan program tersebut akan mengeluarkan keluara “hallo ” di ikuti dengan nilai argument yang pengguna berikan.

Tapi jika kosong maka CPU akan meloncati dan mengabaikan pernyataan keluaran tersebut, alhasil pada program tidak akan menampilkan keluaran apapun.

Function yang mengembalikan nilai

Dan jenis dari function yang lain adalah Function yang dapat mengembalikan nilai. Setiap function yang bukan function dengan return type void merupakan function yang dapat mengembalikan sebuah nilai kepada pemanggil.

Contoh program

#include <iostream> #include <string> using namespace std;

string hallo(string a=""){

return "Hallo "+a+" !"; }

int main(){

cout<<hallo("Belajar C++");

return 0; }

Untuk mengembalikan nilai kepada pemanggil kita bisa melakukanya dengan memberikan data, string, konstanta, identitas variabel, ekspresi dan lain-lain yang memiliki nilai. Pemberian nilai tersebut diletakan sesudah keyword return.

Tapi saat kita akan mengembalikan nilai, kita harus melihat dan menyesuaikan return type apa yang function itu gunakan, pemberian data dan return type pada function harus sesuai.

Pada contoh di atas, terdapat function kustom dengan return type string dan memiliki 1 parameter yang yang juga merupakan string.

Saat program di eksekusi akan menghasilkan keluaran yang berupa pernyataan String “Hallo ” dan dikuti dengan nilai argument yang diberikan saat pemanggilan function.

Contoh program

#include <iostream> using namespace std;

double luasLingkaran(double r=0){

if(!r){

43 return 0; } const double pi = 3.14159265358979323846; return pi*r*r; } int main(){ cout<<luasLingkaran(3); return 0; }

Di atas adalah contoh program yang dapat menghitung luas dari lingkaran.

Pada function yang dapat mengembalikan nilai. nilai dari function yang kita panggil dapat kita abaikan. kita tidak diharuskan untuk mengambil nilai yang diberikan oleh function, yang kita panggil. #include <iostream> using namespace std; int hitungan(){ return 9+6; } int main(){

hitung(); //nilai yang dikembalikan diabaikan

}

hal tersebut pada program di atas dapat dilakukan, dan tidak berdampak buruk pada proses kompilasi dan kerja program kita. Kebenaran yang lainya yang perlu anda tau adalah, bahwa setiap function yang menggunakan return hanya dapat mengembalikan satu nilai kepada pemanggil. Dalam pengembalian nilai sendiri kita dimungkinkan menggunakan beberapa metode, mirip seperti saat pemberian argument kepada function parameter. Metode-metode yang dapat dilakukan pada saat pengembalian nilai adalah return by value, return by reference dan return by address. Secara teori metode-metode pada return mirip dengan pemberian argument pada function parameter.

Apa arti dari return 0; pada function utama int main () ?

Pada dasarnya function yang memiliki return type selain void akan selalu mengembalikan nilai, secara default akan mengembalikan nilai 0 atau NULL saat programmer tidak menyertakan pernyataan return pada function tersebut.

Function utama pada Bahasa pemrograman C/C++ selalu menggunakan integer sebagai return type, dan kita harus tau bahwa pernyataan di atas, perlakuan selalu mengembalikan nilai 0 atau NULL secara default, tidak berlaku pada Function utama. dan itu adalah alasan kenapa kita harus menyertakan pernyataan return 0;.

return 0; sendiri memiliki arti untuk komputer kita. Setelah program kita selesai di kompilasi, dan saat CPU memulai mengeksekusi program kita, CPU akan selalu memulai pada function utama dan berakhir pada function utama, yaitu int main();

Apa yang terjadi adalah, untuk mengeksekusi program kita, CPU akan memanggil function utama, dan pada saat program berakhir, program juga akan menyertakan nilai yang dikembalikan oleh function utama. biasanya program anda memberikan nilai 0 kepada CPU. nilai 0 tersebut memiliki arti berbeda pada CPU, yaitu program anda memberikan informasi

44

kepada CPU bahwa program anda telah berjalan dengan baik. Secara default CPU akan menganggap suatu program telah berjalan dengan baik jika mereka mengembalikan nilai 0 yang dilakukan oleh pernyataan return 0. Jika program mengembalikan nilai selain 0, maka menyatakan informasi kepada CPU bahwa program berakhir dengan tidak wajar.

45

BAB VIII

Dokumen terkait