Assalamu’alaikum
Wr, Wb, oke pada kesempatan kali ini saya akan membahas sebuah program yang menggunakan
pointer, pointer ini merupakan sebuah variabel yang berisi alamat dari variabel
lain. Suatu pointer dimaksudkan untuk menunjukan ke suatu alamat memori
sehingga alamat dari suatu variabel dapat diketahui dengan mudah. Terdapat 2
oprator dalam pointer yaitu oprator Dereference dan Reference
Disini
saya mempunyai beberapa contoh program struktur oke langsung saja tanpa berlama
– lama kita masuk kecontoh pertama
Study Kasus
Praktikum 7.1
Buatlah program yang dapat memindahkan isi variable
awal menuju ke variable tujuan yang ditunjuk serta menampilkan alamat alokasi
memory sebelum di pindahkan kevariable tujuan.
Script Study Kasus
Praktikum 7.1
#include<iostream.h>
#include<conio.h>
void main()
{
int x, y;
int *px;
clrscr();
x = 87;
px = &x;
y = *px;
cout<" Alamat x Pada Memori = "<<&x<<endl;
cout<<" Isi px =
"<<px<<endl;
cout<<" Isi x =
"<<x<<endl;
cout<<" Nilai Yang Ditunjuk Oleh px =
"<<*px<<endl;
cout<<" Alamat y pd Memori =
"<<&y<<endl;
cout<<" Nilai y =
"<<y<<endl;
getch();
}
Hasil Running :
Pembahasan
Program
diatas adalah sebuah program untuk memindahkan nilai (* / Reference ) dan
mengetahui alokasi(& / diference ) jadi x mempunyai nilai 87, dan px
mempunyai alokasi yang sama dengan x, untuk menunjukan alokasi menggunakan
&, jadi alokasi ini ditunjukan hanya sementara setiap alokasi berbeda –
beda tergantung penyimpanan. Dan untuk y juga mempunyai nilai (*) yang sama
dengan px karena y = *px dan bintang itu merupakan sebuah reference atau
menunjukan sebuah nilai, jadi nilai px sama dengan x otomatis nilai y sama
dengan x.
Study Kasus
Praktikum 7.2
Terdapat sebuah array yang memiliki hanya
satu elemen yaitu 5 dan tempatkan pada indeks ke 0 dalam array, sementara
alamat indeks selebihnya bernilai 0, buatlah program yang dapat mengisi alamat
indeks yang lain melalui nilai elemen indeks ke – 0 ( contoh penyelesaian kasus
di atas pada program dibawah ini bersifat sains).
Script Study Kasus
Praktikum 7.2
#include<iostream.h>
#include<conio.h>
int main()
{
int x[5], *p, k;
clrscr();
p = x;
x[0] = 5 ;//x[0] diisi dengan 5 sehingga x[0] = 5
x[1] = x[0]; // x[1] diisi dengan x[0] sehingga x[1] =
5
x[2] = *p + 2; // x[2] diisi dengan x[0] + 2 sehingga
x[2] = 7;
x[3] = *(p+1) - 3 ; // x[3] diisi dengan x[1] - 3
sehingga x[3] = 2;
x[4] = *(x + 2);// x[4] diisi dengan x[2] sehingga
x[4] = 7;
cout<<" Array Setelah Diisi =
"<<endl;
cout<<endl;
for(k=0; k<5; k++)
{
cout<<"x["<<k<<"] =
"<<x[k]<<endl;
}
getch();
return 0;
}
Hasil Running
Pembahasan
Program
diatas adalah sebuah program mengisi nilai array per-indeks dan dalam program
tersebut terdapat variable pointer gunanya untuk memindahkan nilai dari indek
pertama sampai seterusnya. Dan p = x itu berarti nilai variable p mempunyai
nilai yang sama dengan nilai array pertama pada x. Jadi variable x mempunyai
elemen array 5 maka harus mengisi 5 nilai dan indek ke-0 mempunyai nilai 5, dan
untuk indek ke-1 yaitu 5 karena x[1] = x[0] jadi nilai x indek ke-1 mempunyai
nilai yang sama dengan nilai x dari indeks ke-0, dan untuk indeks ke-2 yaitu 7
karena x[2]= *p +2; karena variable p mempunyai nilai awal dari x yaitu 5 maka
5 + 2 = 7, dan untuk nilai x[3] yaitu 2 karena x[3] = *(p+1) – 3 dan *(p+1) ini
maksudnya adalah variable x indek ke-1 kan kalau *p sama saja dengan x indek
ke-0 jadi jika ditambah 1 maka indek ke-1, jadi indek ke-1 yaitu 5 – 3 = 2, dan
untuk indek terakhir yaitu 4 adalah 7 karena x[4] = *(x+2) jadi maksudnya
adalah *x itu sama seperti p yaitu mempunyai nilai dari indek ke-0 jadi jika
*(x+2) maka indeks ke-0 di tambah 2 jadi indeks yang ke-2 dan indeks ke-2
mempunyai nilai 7 jadi x[4] = 7.
Script Praktikum
7.3
#include<stdio.h>
#include<conio.h>
void tambahsepuluh(int *);
void ubahkarakter(char *);
int main()
{
int bilangan = 4;
char sesuatu = 's';
printf(" Bilangan Sebelum fungsi di panggil : %d \n",bilangan);
printf(" Nilai sesuatu sebelum fungsi dipanggil :
%c \n\n",sesuatu);
tambahsepuluh(&bilangan);
ubahkarakter(&sesuatu);
printf(" Bilangan Setelah Fungsi Dipanggil : %d
\n",bilangan);
printf(" Nilai sesuatu setelah fungsi dipanggil :
%c \n",sesuatu);
getch();
return 0;
}
void tambahsepuluh(int *bil){
*bil = *bil + 10;
}
void ubahkarakter(char *kar)
{
char karakter = 'H';
*kar = karakter;
}
Hasil Running:
Pembahasan
Program
diatas adalah sebuah program untuk merubah suatu nilai dan karakter menggunkan fungsi dan untuk melakukan
perubahan menggunakan variable pointer. Bilangan sebelum fungsi di panggil
adalah 4 dan karakter sebelum fungsi di panggil adalah S.
Untuk
melakukan perubahan nilai dan karakter menggunakan fungsi dimana nilai bilangan
itu akan masuk ke daftar parameter fungsi *bil dan *bil = *bil + 10; jadi nilai
bil itu mempunyai nilai yang sama dengan nilai dari variable bilangan yaitu 4
jadi 4 + 10 = 14 jadi bil mempunyai nilai 14 saat fungsi dipanggil
Sedangkan
untuk melakukan perubahan karakter sama seperti perubahan nilai yaitu karakter
dari variable sesuatu akan masuk ke daftar parameter *kar dalam sebuah fungsi
ubahkarakter, karakter = ‘H’; *kar = karakter, jadi variable pointer *kar
mempunyai sebuah karakter berupa ‘H’ saat fungsi dipanggil
Untuk
melakukan pemanggilan fungsi yaitu dengan cara memanggil nama fungsi dan daftar
parameternya. Dan maksud dari * (reference) yaitu karena dalam program ini akan
merubah suatu nilai dan karakter maka harus menggunakan operasi pointer *
(reference) jika menggunakan &
(deference) itu berguna untuk menunjukan suatu alokasi penyimpanan.
Study Kasus
Latihan 7.1
Dengan memasukan nilai integer 5 nilai dan melalui
variable pointer bagaimana agar dapat mengetahui elemen tersebutakan menempati
di lokasi memory berapa program berjalan secara setatis hanya sebanyak 5 buah
nilai integer
Script Study Kasus
Latihan 7.1
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
main()
{
int i;
int nilai[50];
int *trnilai;
trnilai = nilai;
for(i=0;i<5;i++)
{
cout<<" Masukan Nilai ke -
"<<i<<": ";
cin>>nilai[i];
}
cout<<endl;
cout<<" Pengaksesan Elemen Array Lewat
";
cout<<" Pointer";
cout<<endl<<endl;
for(i=1;i<=5; i++)
{
cout<<" Elemen
"<<i<<" Nilai "<<nilai[i]<<endl;
cout<<" Menempati Alamat Memory :
"<<&trnilai[i];
cout<<endl;
}
getch();
return 0;
}
Hasil Running
Pembahasan
Program
diatas adalah sebuah program untuk mencari sebuah alokasi dengan pointer dari
nilai yang telah diinputkan, variable pointer trnilai mempunyai nilai yang sama
dengan variable nilai , jadi pertama inputkan nilai sebanyak 5 kali maka
variable trnilai mempunyai nilai yang sama dengan variable nilai sebanyak 5. Dan
untuk mengetahui alokasi dari nilai yang tadi kita input maka menggunakan
Oprasi Pointer Deference(&) pada variable trnilai (&trnilai) karena
trnilai mempunai nilai yg sama dengan variable nilai, jadi misalkan nilai
variable array pertama itu 1 maka variable pointer mempunya nilai yg sama yaitu
1. Karena dalam penginputan data menggunakan variable array dan pengulangan
maka untuk pengoutputan alokasi harus menggunakan pengulangan dan saat akan
melakukan pemanggilan variable pointer harus ditambahkan [i] karena i ini
menunjukan elemen atau indek ke berapa yang akan dipanggil alokasinya jika i
nya = 1 maka elemen pertama dengan nilai 1 yang akan di output alokasinya.
Study Kasuk
Latihan 7.2
Dengan Memasukan Nilai integer N nilai dan melalui
variable pointer bagaimana agar dapat mengetahui elemen tersebutakan menempati
di lokasi memory berapa program berjalan secara setatis hanya sebanyak N buah
nilai integer
Script Study Kasus
Latihan 7.2
#include<stdio.h>
#include<iostream.h>
#include<conio.h>
main()
{
int i, N;
int nilai[50];
int *trnilai;
trnilai = nilai;
cout<<" Masukan Batasan = ";
cin>>N;
cout<<endl<<endl;
for(i=0;i<N;i++)
{
cout<<" Masukan Nilai ke -
"<<i<<": ";
cin>>nilai[i];
}
cout<<endl;
cout<<" Pengaksesan Elemen Array Lewat
";
cout<<"Pointer";
cout<<endl<<endl;
for(i=1;i<=N; i++)
{
cout<<" Elemen
"<<i<<" Nilai "<<nilai[i]<<endl;
cout<<" Menempati Alamat Memory :
"<<&trnilai[i];
cout<<endl;
}
getch();
return 0;
}
Hasil Running
Pembahasan
Program
ini sama halnya pada program Latihan 7.1 tetapi dalam program ini kita harus
memasukan batasan pengulangannya berbeda dengan yang sebelumnya batasan
pengulangannya sudah di tentukan, jadi pertama – tama masukan batasan
perulangannya terlebih dahulu baru menginputkan datanya. Dan karena mempunyai
script yang sama makan penjelasannya sama pada pembahasan sebelumnya.
Nah itulah beberapa program Pointer dan
juga pembahasan yang dapat saya sharing, semoga ilmu yang saya bagikan dapat
bermanfaat bagi kalian semua para pembaca, mungkin sampai disini dulu sharing
tentang pemrograman khususnya program Pointer yang bisa saya posting. Dan
Jangan lupa ya jika kalian mempunyai kritik dan saran
silahkan tambahkan pada kolom komentar. Terima kasih atas kunjungan kalian.





sudah diperiksa
BalasHapus