MODUL VII POINTER
Praktikum
Studi Kasus 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.
#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 :
Dari program diatas
bisa dilihat itu memindahkan nilai dan mengetahi alokasi dengan x nya
mempunyai nilai 87,kemudian px itu alokasi nya sama dengan x.Dan nilai y memiliki
nilai y=*px bintang itu termasuk ke dalam reference nya.
Studi Kasus 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).
#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 yaitu
cara mengisi indeks yang didalamnya terdapat variable pointer yang digunakan
untuk memindahkan nilai indeks pertama sampai indeks terakhir.
Studi Kasus 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 :
Dari program diatas digunakan untuk merubah suatu nilai dan karakter dengan menggunakan fungsi
pointer.
Latihan 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
#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 :
Dari program diatas
mencari suatu alokasi dengan menggunakan pointer yang telah diiputkan, kita
inputkan 5 variabel terlebih dahulu , kemudian untuk mengetahui
alokasinya kita gunakan operasi pointer deference pada variabel nilainya
karena memiliki nilai variabel yang sama.
Latihan 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
#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;
}
Pembahasan :
Program diatas hampir sama dengan program Latihan 1, pada program ini kita diharuskan memasukan batasan pengulangannya, pertama kita masukan batasan perulangannya baru setelah itu kita inputkan isi datanya.





Tidak ada komentar:
Posting Komentar