C++ Bagian 8C

Pointer


Pointer adalah suatu variabel yang mempunyai harga alamat dari variabel lain atau elemen array. Pointer banyak digunakan dalam pemrograman C++, misalkan untuk mengirimkan informasi dari dan ke fungsi. Terutama pointer sangat berguna untuk mengirimkan data yang terdiri lebih dari satu harga dari dan ke fungsi. Untuk memahami pointer kita perlu pengetahuan tentang bagaimana komputer menyimpan informasi di dalam memori. Memori di dalam PC yang dikenal sebagai RAM (Random Access Memory) terdiri dari sederetan sel memori dan setiap sel memori mempunyai alamat tersendiri.

Sewaktu kita mendefinisikan variabel, C++ akan memberikan sel memori dengan address tertentu yang tak terpakai untuk menyimpan variabel itu. Bila program kita menggunakan nama variabel tersebut, otomatis akan menggunakan alamat dari sel memori yang berhubungan dengan variabel tersebut. Suatu misal ketika kita mendefinisikan variabel lebar dengan harga awal 25 dan dimisalkan C++ memberikan alamat 1004 untuk variabel lebar, hal ini dapat digambarkan sebagai berikut :

Alamat Memori Variabel
1001
1002
1003
1004 25 lebar


Jika kita mengetahui alamat dari suatu variabel, maka kita dapat menciptakan variabel kedua yang menyimpan alamat dari variabel pertama. Misalkan kita mendefinisikan variabel kedua plebar yang menyimpan alamat dari variabel pertama lebar. Karena plebar memuat alamat dari lebar, ini berarti plebar menunjukkan lokasi penyimpanan di dalam memori. Dalam pergertian ini berarti plebar menunjuk ke lebar atau sebagai pointer ke lebar. Misalkan plebar mempunyai alamat 1001, hal ini dapat digambarkan sebagai berikut :

Alamat Memori Variabel
1001 1004 Plebar
1002
1003
1004 25 Lebar

Kesimpulan : suatu pointer adalah suatu variabel yang memuat atau menyimpan alamat dari variabel lain, termasuk elemen array.

Deklarasi Pointer
Variabel pointer sma seperti variabel yang lain harus dideklarasikan sebelum digunakan didalam program C++. Nama variabel pointer mengikutim atuaran yang sama seperti variabel lain. Variabel pointer dideklarasikan dengan membubuhi tanda asteriks ( * ) didepan nama variabel pointer. Tipe data yang dituliskan pada deklarasi pointer menunjukkan tipe data dari data yang alamatnya disimpan di dalam pointer dan bukan tipe data dari pointer itu sendiri. Bentuk umum deklarasi variabel pointer adalah :
tipe data *variabel_pointer ;

Berikut ini beberapa contoh deklarasi pointer :

int *radius; atau int * radius; atau int* radius;
float *volume; atau float * volume; atau float* volume;

Operator Alamat ( & )
Dari gambar penjelasan sebelumnya, alamat dari lokasi memori variabel lebar dapat ditentukan dengan ekspresi &lebar, dimana & adalah operator unary yang disebut juga sebagai operator alamat. Disini &lebar adalah alamat dari variabel lebar yaitu 1004. Jadi plebar adalah sama dengan &lebar.

Operator Dereferensi ( * )
Data yang disimpan di dalam variabel lebar dari penjelasan sebelumnya, dapat dibaca dari variabel pointer plebar dengan menggunakan ekspresi *plebar, dimana tanda asterik ( * ) adalah operator unary, yang disebut operator dereferensi. Operator dereferensi ( * ) ini hanya digunakan untuk variabel pointer. Jadi *plebar dan lebar adalah sama, yakni menunjukkan harga variabel lebar 25.

Contoh 8.1 :

#include
#include

void main()
{
int panjang, lebar, luas;
int *p_panjang, *p_lebar, *p_luas;

p_panjang = &panjang;
p_lebar = &lebar;
p_luas = &luas;

cout << "Panjang : "; cin >> panjang;
cout << "Lebar : "; cin >> lebar;

luas = panjang * lebar;

cout << endl << endl;
cout << "Data yang diinputkan ke panjang : " << panjang <<
endl;
cout << "Data yang diinputkan ke lebar : " << lebar << endl;
cout << "Data yang dihasilkan oleh luas : " << luas << endl
<< endl;
cout << "Data yang disimpan oleh *p_panjang : " << *p_panjang
<< endl;
cout << "Data yang disimpan oleh *p_lebar : " << *p_lebar <<
endl;
cout << "Data yang disimpan oleh *p_luas : " << *p_luas <<
endl << endl;
cout << "Data alamat variabel panjang : " << &panjang << endl;
cout << "Data alamat variabel lebar : " << &lebar << endl;
cout << "Data alamat variabel luas : " << &luas << endl <<
endl;
cout << "Data alamat variabel p_panjang : " << p_panjang <<
endl;
cout << "Data alamat variabel p_lebar : " << p_lebar <<
endl;
cout << "Data alamat variabel p_luas : " << p_luas << endl
<< endl;
getch();
}

Keluaran programnya :

Panjang : 8
Lebar : 6

Data yang diinputkan ke panjang : 8
Data yang diinputkan ke lebar : 6
Data yang dihasilkan oleh luas : 48

Data yang disimpan oleh *p_panjang : 8
Data yang disimpan oleh *p_lebar : 6
Data yang disimpan oleh *p_luas : 48


Data alamat variabel panjang : 0x8f5efff4
Data alamat variabel lebar : 0x8f5efff2
Data alamat variabel luas : 0x8f5efff0

Data alamat variabel p_panjang : 0x8f5efff4
Data alamat variabel p_lebar : 0x8f5efff2
Data alamat variabel p_luas : 0x8f5efff0

Perhatikan bahwa p_panjang adalah pointer ke variabel panjang, p_lebar adalah pointer ke variabel lebar dan p_luas adalah pointer ke variabel luas. Isi dari p_panjang adalah alamat dari variabel panjang, isi dari p_lebar adalah alamat dari variabel lebar dan isi dari p_luas adalah alamat dari variabel luas.

Mengirimkan Pointer ke Fungsi
Pointer sering digunakan sebagai argumen dari suatu fungsi. Hal ini memungkinkan pertukaran informasi atau data dari fungsi yang satu ke fungsi yang lain. Bila digunakan pointer, maka alamat dari variabel dikirimkan ke fungsi, sedangkan bila digunakan variabel biasa, maka informasi atau data disalin ke fungsi yang dipanggil.

Jadi perubahan suatu data di dalam fungsi tidak berpengaruh terhadap fungsi lain, karena yang diubah hanyalah salinan dari informasi atau data. Bila yang dikirimkan adalah alamat dari suatu variabel pointer, maka perubahan harga dari variabel yang alamatnya dikirimkan tersebut akan berpengaruh terhadap fungsi lain yang menggunakan alamat tersebut.

Contoh 8.2 :

#include
#include

void input_data (float *pr1, float *pr2, float *pr3, float *pi);
void hitung_data (float *pr1, float *pr2, float *pr3,
float *pi,float *prs, float *prp, float *pvs, float *pvp);
void tampilkan (float *prs, float *prp, float *pi, float *pvs,
float *pvp);
void main()
{
float i, r1, r2, r3;
float rs, rp, vs, vp;
float *pi, *pr1, *pr2, *pr3;
float *prs, *prp, *pvs, *pvp;
clrscr();

input_data (&r1, &r2, &r3, &i);
hitung_data (&r1, &r2, &r3, &i, &rs, &rp, &vs, &vp);
tampilkan (&rs, &rp, &i, &vs, &vp);
getch();
}

void input_data (float *pr1, float *pr2, float *pr3, float *pi)
{
cout << "Masukkan Data Tegangan dan Arusnya :" << endl;
cout << "Data R1 : ";
cin >> *pr1;
cout << "Data R2 : ";
cin >> *pr2;
cout << "Data R3 : ";
cin >> *pr3;
cout << "Data i : ";
cin >> *pi;
cout << endl;
}

void hitung_data (float *pr1, float *pr2, float *pr3, float *pi, float *prs, float *prp, float *pvs, float *pvp)
{
float paralel;

*prs = *pr1 + *pr2 + *pr3;
paralel = (1 / *pr1)+(1 / *pr2)+(1 / *pr3);
*prp = 1/paralel;
*pvs = *pi * *prs;
*pvp = *pi * *prp;
}

void tampilkan (float *prs, float *prp, float *pi, float *pvs,
float *pvp)
{
cout.precision(2);
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout << "Data total hambatan dan tegangan (seri/paralel) serta
arusnya :" << endl;
cout << "Total hambatan seri (Rs) : " << *prs << endl;
cout << "Total hambatan paralel (Rp) : " << *prp << endl;
cout << "Arus yang melaluinya (i) : " << *pi << endl;
cout << "Tegangan Seri (Vs) : " << *pvs << endl;
cout << "Tegangan paralel (Vp) : " << *pvp << endl;
}

Keluaran programnya :

Masukkan Data Tegangan dan Arusnya :
Data R1 : 1.5
Data R2 : 3.7
Data R3 : 6.3
Data i : 0.45

Data total hambatan dan tegangan (seri/paralel) serta arusnya :
Total hambatan seri (Rs) : 11.50
Total hambatan paralel (Rp) : 0.91
Arus yang melaluinya (i) : 0.45
Tegangan Seri (Vs) : 5.17
Tegangan paralel (Vp) : 0.41

Pada Contoh 8.2 fungsi main hanya berfungsi sebagai pengendali terhadap tiga fungsi buatan yaitu input_data, hitung_data dan tampilkan. Ketiga fungsi tersebut memiliki parameter formal berupa pointer yang mengambil dan mengirimkan nilai dari alamat yang diberikan oleh parameter aktual yang ada di fungsi main.

Pada fungsi input_data terdapat variabel pointer yang nantinya akan menerima data yang diinput dari keyboard. Karena fungsi main memanggil fungsi input_data dengan alamat maka nilai atau data yang ada pada fungsi tersebut bisa diakses oleh fungsi main. Dengan demikian fungsi main sekarang memiliki nilai atau data r1, r2, r3 dan i yang sama dengan nilai atau data yang ada di fungsi input_data.

Selanjutnya fungsi main memanggil fungsi hitung_data agar menghitung jumlah hambatan dan tegangan seri-paralel. Fungsi hitung_data akan mengerjakan proses tersebut sesuai dengan nilai r1, r2, r3 dan i yang dikirimkan oleh fungsi main dan juga mengembalikan hasilnya rs, rp, vs dan vp kepada fungsi tersebut.

Sedangkan fungsi tampilkan yang dipanggil oleh fungsi main akan menampilkan nilai yang didapat oleh fungsi main dari fungsi input_data yaitu : i dan fungsi hitung_data yaitu : rs, rp, vs dan vp.

Contoh 8.3 :
Program berikut ini adalah modifikasi dari contoh program sebelumnya yaitu dengan menghilangkan fungsi tampilkan dan isi program fungsi tersebut diletakan pada fungsi main.

#include
#include

void input_data (float *pr1, float *pr2, float *pr3, float *pi);
void hitung_data (float *pr1, float *pr2, float *pr3,
float *pi,float *prs, float *prp, float *pvs, float *pvp);

void main()
{
float i, r1, r2, r3;
float rs, rp, vs, vp;
float *pi, *pr1, *pr2, *pr3;
float *prs, *prp, *pvs, *pvp;
clrscr();

prs = &rs;
prp = &rp;
pi = &i;
pvs = &vs;
pvp = &vp;

input_data (&r1, &r2, &r3, &i);
hitung_data (&r1, &r2, &r3, &i, &rs, &rp, &vs, &vp);
cout.precision(2);
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout << "Data total hambatan dan tegangan (seri/paralel) serta
arusnya :" << endl;
cout << "Total hambatan seri (Rs) : " << *prs << endl;
cout << "Total hambatan paralel (Rp) : " << *prp << endl;
cout << "Arus yang melaluinya (i) : " << *pi << endl;
cout << "Tegangan Seri (Vs) : " << *pvs << endl;
cout << "Tegangan paralel (Vp) : " << *pvp << endl;
getch();
}

void input_data (float *pr1, float *pr2, float *pr3, float *pi)
{
cout << "Masukkan Data Tegangan dan Arusnya :" << endl;
cout << "Data R1 : ";
cin >> *pr1;
cout << "Data R2 : ";
cin >> *pr2;
cout << "Data R3 : ";
cin >> *pr3;
cout << "Data i : ";
cin >> *pi;
cout << endl;
}

void hitung_data (float *pr1, float *pr2, float *pr3, float *pi,
float *prs, float *prp, float *pvs, float *pvp)
{
float paralel;

*prs = *pr1 + *pr2 + *pr3;
paralel = (1 / *pr1)+(1 / *pr2)+(1 / *pr3);
*prp = 1/paralel;
*pvs = *pi * *prs;
*pvp = *pi * *prp;
}

Keluaran programnya :

Masukkan Data Tegangan dan Arusnya :
Data R1 : 1.5
Data R2 : 3.7
Data R3 : 6.3
Data i : 0.45

Data total hambatan dan tegangan (seri/paralel) serta arusnya :
Total hambatan seri (Rs) : 11.50
Total hambatan paralel (Rp) : 0.91
Arus yang melaluinya (i) : 0.45
Tegangan Seri (Vs) : 5.17
Tegangan paralel (Vp) : 0.41

Pada contoh program diatas hampir sama dengan contoh program sebelumnya yaitu dengan menambahkan pernyataan prs = &rs, prp = &rp, pi = &i, pvs = &vs dan pvp = &vp sebagai penunjuk alamat bagi variabel pointer *prs, *prp, *pvs, *pvp dan *pi yang akan menampilkan nilainya.

Dengan demikian dari contoh program 8.2 dan 8.3 diperoleh kesimpulan bahwa pengiriman nilai melalui fungsi dengan menggunakan pointer maka perubahan nilai atau data yang terjadi pada fungsi tersebut akan berpengaruh terhadap fungsi lainnya.

Array dan Pointer
Hingga saat ini array dianggap sebagai daftar nilai. Ini merupakan pengertian array secara konsep. Secara internal nama array adalah pointer ke elemen pertama dalam array. Sewaktu kita mendefinisikan array seperti ini :

int umur[] = { 32, 45, 42, 19, 67 }

Misalkan ingin menampilkan elemen pertama dan kedua array tersebut.

cout << “Nilai elemen kesatu : “ << umur[0];
cout << “Nilai elemen kedua : “ << umur[1];

Berikut ini juga akan menampilkan nilai elemen pertama dan kedua dengan menggunakan pointer.

cout << “Nilai elemen kesatu : “ << *(umur + 0);
cout << “Nilai elemen kedua : “ << *(umur + 1);

Kedua pernyataan cout tersebut akan menghasilkan nilai yang sama yaitu angka 32 dan 45. Perhatikan bahwa bentuk berikut ini adalah ekuivalen :

umur[3], *(umur + 3), *(umur + 0)[3], *(umur + 1)[2], *(umur + 2)[1] dan *(umur + 3)[0]

Contoh 8.4 :

#include
#include

void main()
{
int i;
float nilai[3] = { 11.1, 22.2, 33.3 };
clrscr();

cout.precision(1);
cout.setf(ios::showpoint);
cout.setf(ios::fixed);

cout << "Bentuk array yang menggunakan subscript :" << endl;
for (i = 0; i < 3; i++)
{ cout << nilai[i] << ' '; }

cout << endl << endl;
cout << "Bentuk array yang menggunakan pointer:" << endl;
for (i = 0; i < 3; i++)
{ cout << *(nilai + i) << ' '; }

cout << endl << endl;
cout << "Bentuk array kombinasi:" << endl;
cout << (nilai + 0)[0] << ' ';
cout << (nilai + 1)[0] << ' ';
cout << (nilai + 0)[1] << ' ';
cout << (nilai + 1)[1] << ' ';
cout << (nilai + 2)[1] << ' ';
cout << (nilai + 1)[2] << ' ';
getch();
}

Keluaran programnya :

Bentuk array yang menggunakan subscript :
11.1 22.2 33.3

Bentuk array yang menggunakan pointers:
11.1 22.2 33.3

Bentuk array kombinasi:
11.1 22.2 22.2 33.3 33.3 33.3

Array Pointer
Anda dapat mendefenisikan sebuah array yang menampung tipe data apa saja, termasuk pointer. Berikut merupakan cara menginisialisasi array semacam itu :

char *kota[5] = { “Jakarta”, “Bandung”, “Semarang” };

Ingatlah bahwa C++ memperlakukan literal string sebagai sebuah alamat. Dengan kata lain C++ menyimpan tiga nama kota pada suatu tempat dalam memori yang bebas. Kemudian C++ menugaskan alamat masing-masing literal string itu ke masing-masing elemen array kota.

Contoh 8.5 :

#include
#include

void main()
{
int i;
clrscr();

char *kota[5] = { "Jakarta", "Bandung", "Semarang" };

//Menampilkan tiga nama kota yang diisikan pada program
cout << "Berikut ini adalah kota tersebut"<< endl;
for (i = 0; i < 3; i++)
{ cout << kota[i] << “, “; }
cout << endl;

//Mengganti nama kota diatas dengan yang lainnya
kota[0] = "Yogyakarta";
kota[1] = "Surabaya";
kota[2] = "Bali";

//Menampilkan nama kota dengan notasi pointer
cout << endl << "Berikut ini adalah kota tersebut" << endl;
for (i = 0; i < 3; i++)
{ cout << *(kota + i) << “, “; }
cout << endl;
getch();
}
Keluaran programnya :

Berikut ini adalah kota tersebut
Jakarta, Bandung, Semarang,

Berikut ini adalah kota tersebut
Yogyakarta, Surabaya, Bali,

Setelah menugaskan pointer ke nama-nama kota, loop for pertama pada contoh program diatas akan menampilkan 3 kota menggunakan notasi subscribt. Kemudian variabel kota diisikan dengan data string yang baru melalui masing-masing elemen array. Fungsi strcpy() tidak akan berkerja dengan baik pada penugasan kalau literal string baru lebih panjang daripada string yang akan ditunjuk. Loop for kedua menampilkan nama ketiga kota yang baru memakai dereferensi pointer.

Contoh 8.6 :

#include
#include
#include

void menu_tampilan();
int informasi();
void tampilan_properti(char *kode[], float harga[],
char *alamat[], float komisi[]);
void pencarian_properti(char *kode[], float harga[],
char *alamat[], float komisi[]);

void main()
{
int hasil;
char *kode[3] = { "11A", "22B", "33C" };
float harga[3] = { 15000, 25000, 50000};
char *alamat[3] = { "Jl. Akses UI Depok 12264",
"Jl. Pondok Indah Jakarta 12223",
"Jl. Ciputat Raya Jakarta 12241" };
float komisi[3] = { 0.15, 0.20, 0.30 };
clrscr();

do
{
clrscr();
menu_tampilan();
hasil = informasi();

switch (hasil)
{
case (1) :
{ tampilan_properti(kode, harga, alamat, komisi);
break; }
case (2) :
{ pencarian_properti(kode, harga, alamat, komisi);
break; }
case (3) :
{ return;
break; }
}
} while (hasil != 3);
}
void menu_tampilan()
{
cout << endl << endl;
cout << "** Property Menu Database **" << endl << endl;
cout << "Menu yang bisa dipilih:" << endl << endl;
cout << "1. Melihat data properti" << endl;
cout << "2. Mencari data dengan indeks kode" << endl;
cout << "3. Keluar program" << endl;
cout << endl << "Anda memilih menu (1/2/3) ? ";
}

int informasi()
{
int pilih;
cin >> pilih;
cin.ignore(30,'\n');
return (pilih);
}

void tampilan_properti(char *kode[], float harga[],
char *alamat[], float komisi[])
{
int i;

cout.precision(2);
cout.setf(ios::showpoint);
cout.setf(ios::fixed);

for (i = 0; i < 3; i++)
{
cout << endl ;
cout << "Kode : " << kode[i] << endl;
cout << "Harga : Rp " << harga[i] << endl;
cout << "Alamat : " << alamat[i] << endl;
cout << "Persen komisi : "<< komisi[i] * 100.0 << "%"
<< endl << endl;
}
cout << "Tekan tombol enter untuk lanjut...";
cin.ignore(30,'\n');
}

void pencarian_properti(char *kode[], float harga[],
char *alamat[], float komisi[])
{
int i;
int ketemu = 0;
char buf[6];

cout.precision(2);
cout.setf(ios::showpoint);
cout.setf(ios::fixed);

cout << endl << "Saya akan mencari data yang kita inginkan"
<< endl;
cout << "Tuliskan kode properti dari data yang diinginkan : ";
cin.getline(buf, 6);
for (i = 0; i < 3; i++)
{
if (!strcmp(kode[i], buf))
{
cout << endl ;
cout << "Kode : " << kode[i] << endl;
cout << "Harga : Rp " << harga[i] << endl;
cout << "Alamat : " << alamat[i] << endl;
cout << "Persen komisi : " << komisi[i]*100.0 << "%"
<< endl << endl;
ketemu = 1;
cout << "Tekan sembarang tombol untuk kembali ke
menu......" << endl;
getch();
break;
}
}

if (!ketemu)
{
cout << endl << "Data dengan kode : " << buf << " tidak
ditemukan" << endl << endl;
cout << "Tekan sembarang tombol untuk kembali ke
menu......" << endl;
getch();
}
}

Keluaran programnya :

** Property Menu Database **

Menu yang bisa dipilih:

1. Melihat data properti
2. Mencari data dengan indeks kode
3. Keluar program

Anda memilih menu (1/2/3) ? 1

Kode : 11A
Harga : Rp 15000.00
Alamat : Jl. Akses UI Depok 12264
Persen komisi : 15.00%

Kode : 22B
Harga : Rp 25000.00
Alamat : Jl. Pondok Indah Jakarta 12223
Persen komisi : 20.00%

Kode : 33C
Harga : Rp 50000.00
Alamat : Jl. Ciputat Raya Jakarta 12241
Persen komisi : 30.00%

Tekan tombol enter untuk lanjut...

Pada contoh program diatas dengan menggunakan variabel pointer, maka kita dapat mengakses data dengan alamatnya dan bukan melalui nama variabel. Prototipe string.h digunakan untuk fungsi strcmp (membandingkan isi string). Empat fungsi yang dideklarasikan diatas, dua fungsi tanpa parameter dan dua lagi menggunakan parameter.

Variabel kode dan alamat pada parameter fungsi tampilan_properti serta pencarian_properti dideklarasikan sebagai array pointer agar dapat menangani data yang berisi string. Pada fungsi main variabel kode, harga, alamat dan komisi diisikan langsung pada kode program. Untuk memilih menu dilakukan dengan menggunakan pernyataan do-while yang mana pernyataan ini akan selalu berulang-ulang apabila kita memberikan nilai tidak sama dengan 3. Sedangkan untuk mengakhiri tampilan menu ini kita dapat memberikan input dengan menekan tombol angka 3.

Didalam pernyataan do-while, untuk memilih menu yang memanggil salah satu fungsi digunakan pernyataan switch(). Jadi pemanggilan fungsi yang dilakukan didalam pernyataan switch() membuat agar fungsi-fungsi tersebut tidak harus dijalankan secara serentak seperti pada contoh program 8.2 tetapi hanya fungsi yang ditunjuk oleh pernyataan switch() yang akan bekerja. Fungsi menu_tampilan berfungsi sebagai tampilan yang memandu kita untuk bisa melanjutkan proses berikutnya apabila kita mengisikan data yang sesuai dengan keterangan yang diberikan dalam menu tersebut. Fungsi ini akan dijalankan pertama kali oleh fungsi main yang terdapat pada pernyataan do-while.

Fungsi informasi berfungsi sebagai kelanjutan proses berikutnya yaitu menuju salah satu case yang sesuai pada pernyataan switch(). Pada fungsi ini pilihan angka yang tersedia agar dapat menuju salah satu case yang terdapat pada fungsi switch() adalah 1, 2 dan 3. Bila kita menginputkan dengan menekan tombol angka 1, 2 atau 3 maka data tersebut disimpan kedalam variabel hasil yang mana data tersebut dikembalikan ke fungsi pemanggil yaitu fungsi main menggunakan pernyataan return.

Jadi fungsi informasi mengembalikan nilai yang disimpannya untuk diisikan ke dalam pernyataan pemanggil fungsi pada variabel hasil dan nilai yang ada pada variabel ini selanjutnya akan menuju ke case yang cocok. Kalau cocok maka akan memanggil salah satu fungsi yang berada pada case tersebut. Bila tidak maka pernyataan yang ada didalam do-while akan diulang kembali. Pernyataan cin.ignore (30. ‘\n’) berfungsi sebagai penunggu tombol yang akan ditekan oleh pemakai. Sedangkan pernyataan break berfungsi sebagai pencegah agar C++ tidak mengeksekusi kode program berikutnya.

Fungsi tampilan_properti berfungsi menampilkan data-data yang sudah diisikan pada kode program yang berada di fungsi main. Perhatikan bahwa parameter yang ada di fungsi ini kebetulan namanya dibuat sama dengan parameter yang ada di pernyataan pemanggil fungsi. Pemanggilan fungsi disini sebenarnya hanya melewatkan nilai bukan dengan referensi atau pointer. Sedangkan parameter yang terlihat pada fungsi tampilan_properti atau pencarian_properti bertanda asterik (*) adalah data yang dilewatkan berupa string. Anda tak dapat melewatkan data string pada variabel array biasa, jadi variabel berjenis array pointer-lah yang harus kita gunakan.

Fungsi pencarian_properti berfungsi sebagai fungsi yang menangani proses pencarian sekelompok data pada elemen array yang berbeda tetapi bernomor indeks sama. Melalui peryataan strcmp() inilah maka variabel buf yang diinputkan berupa kode akan dibandingkan dengan kode yang tersimpan pada setiap elemen array.Bila hasil dari pernyataan strcmp() ini sesuai yaitu string pada variabel buf sama dengan string kode[i] maka pernyataan ini akan dijalankan dan akan menampilkan data yang ada di elemen array yang sama pada variabel yang berbeda. Bila data string yang dibandingkan tadi berbeda atau tidak ada yang cocok maka akan menjalankan pernyataan berikutnya yaitu if ( !ketemu ) maksudnya jika tidak ketemu bernilai benar maka peryataan inilah yang akan dieksekusi.

Related Posts:

1 Response to "C++ Bagian 8C"

Anonim mengatakan...

nice info gan, izin copas utk bahan ujian, lanjutGan!
smoga agan diberi kesuksesan , amin
:shakehand