- Praktikum 1
- Studi Kasus
Buatlah program yang dapat memindahkan isi variabel awal menuju ke variabel tujuan yang ditunjuk serta menampilkan alamat alokasi memori sebelum dipindahkan ke variabel tujuan.
- Script Program
#include<iostream>
#include<conio.h>
using namespace std;
main()
{
int x,y;
int *px;
system("cls");
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 pada memori = "<<&y<<endl;
cout<<"Nilai y = "<<y<<endl;
getch();
}
- Output
- Penjelasan
Program ini untuk menampilkan nilai dan alamat memori dari sebuah variabel biasa dan variabel pointer. Variabel pointer adalah suatu variabel penunjuk, berisi nilai yang menunjuk alamat suatu lokasi memori tertentu. Jadi pointer tidak berisi nilai data, melainkan berisi suatu alamat memori.
Dalam program tersebut terdapat px=&x itu artinya nilai px mengambil dari alamat x, menjadikan px = alamat x.
dan terdapat juga y=*px itu artinya y mengambil isi/nilai yang ditunjuk oleh px yaitu isi dari alamat x yaitu 87 maka nilai dari y adalah 87
- Praktikum 2
- Studi Kasus
Terdapat sebuah array yang memiliki hanya satu elmen yaitu 5 dan tempatkan pada indek 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 diatas pada program dibawah ini bersifat statis).
- Script Program
#include<iostream>
#include<conio.h>
using namespace std;
main()
{
int x,y;
int *px;
system("cls");
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 pada memori = "<<&y<<endl;
cout<<"Nilai y = "<<y<<endl;
getch();
}
- Penjelasan
Program ini adalah uji coba operator logika dengan pointer, disana terdapat variabel x[5] dan nilai dari setiap indeks nya sudah ditentukan.
Indeks x[0]=5; yang berarti nilai indeksnya adalah 5
Indeks x[1]=x[0]; yang berarti nilai indeksnya akan di isi oleh nilai dari indeks x[0] yaitu 5.
Indeks x[2]=*p+2 artinya x[2] akan mengambil nilai yang ditunjuk oleh variabel p, karena nilai variabel p adalah alamat x maka nilai dari variabel p adalah 5 kemudian ditambah 2 sehingga akan menghasilkan 7,
Indeks x[3] yaitu x[3]=*(p+1)-3; yang berati nilai pada variabel x[3] akan diisi oleh nilai yang berada divariabel pointer *p yang telah ditambah 1 dan dikurangi 3 sehingga hasilnya 2.
Indeks x[4] yaitu x[4]=*(x+2); yang berarti nilai pada variabel x[4] akan diisi oleh nilai yang berada divariabel pointer *x yang telah ditambah 2 sehingga hasilnya 7.
Indeks x[0]=5; yang berarti nilai indeksnya adalah 5
Indeks x[1]=x[0]; yang berarti nilai indeksnya akan di isi oleh nilai dari indeks x[0] yaitu 5.
Indeks x[2]=*p+2 artinya x[2] akan mengambil nilai yang ditunjuk oleh variabel p, karena nilai variabel p adalah alamat x maka nilai dari variabel p adalah 5 kemudian ditambah 2 sehingga akan menghasilkan 7,
Indeks x[3] yaitu x[3]=*(p+1)-3; yang berati nilai pada variabel x[3] akan diisi oleh nilai yang berada divariabel pointer *p yang telah ditambah 1 dan dikurangi 3 sehingga hasilnya 2.
Indeks x[4] yaitu x[4]=*(x+2); yang berarti nilai pada variabel x[4] akan diisi oleh nilai yang berada divariabel pointer *x yang telah ditambah 2 sehingga hasilnya 7.
- Praktikum 3
- Script Program
#include<iostream>
#include<conio.h>
using namespace std;
void tambahsepuluh(int *);
void ubahkarakter(char *);
int main()
{
int bilangan = 4;
char sesuatu = 's';
cout<<"Bilangan sebelum fungsi di Panggil : "<<bilangan<<endl;
cout<<"Karakter sebelum fungsi di Panggil : "<<sesuatu<<endl;
getch();
tambahsepuluh(&bilangan);
ubahkarakter(&sesuatu);
cout<<endl;
cout<<"Bilangan setelah fungsi di panggil : "<<bilangan<<endl;
cout<<"Karakter setelah fungsi di panggil : "<<sesuatu<<endl;
getch();
return 0;
}
void tambahsepuluh(int *bil)
{
*bil = *bil+10;
}
void ubahkarakter(char *kar)
{
char karakter = 'H';
*kar = karakter;
}
- Penjelasan
Program ini untuk menampilkan dan mengubah nilai pada sebuah variabel pointer menggunakan function. Pada pendeklarasian awal telah ditetapkan nilai pada variabel bilangan bertipe data integer adalah 4 dan variabel sesuatu bertipe data character adalah s.
Fungsi tambahsepuluh dengan parameter mengambil nilai yang ditunjuk dari alamat variabel lain kemudian di isikan ke variabel bil, pada program tersebut parameterya di isi oleh alamat dari variabel bilangan sytaxnya sebagai berikut tambahsepuluh(&bilangan), nilai dari alamat variabel bilangan ini lah yaitu 4 yang dijadikan parameter kemudian dimasukan ke varibel bil kemudian ditambah 10 maka akan menghasilkan 14.
sama halnya pada funngsi ubahkarakter dia mengambil nilai dari alamat variabel sesuatu kemudian dimasukan kedalam varibel kar dan dirubah menjadi isi dari variable karakter yaitu H
Fungsi tambahsepuluh dengan parameter mengambil nilai yang ditunjuk dari alamat variabel lain kemudian di isikan ke variabel bil, pada program tersebut parameterya di isi oleh alamat dari variabel bilangan sytaxnya sebagai berikut tambahsepuluh(&bilangan), nilai dari alamat variabel bilangan ini lah yaitu 4 yang dijadikan parameter kemudian dimasukan ke varibel bil kemudian ditambah 10 maka akan menghasilkan 14.
sama halnya pada funngsi ubahkarakter dia mengambil nilai dari alamat variabel sesuatu kemudian dimasukan kedalam varibel kar dan dirubah menjadi isi dari variable karakter yaitu H
LATIHAN
- Latihan 1
- Studi Kasus
Dengan memasukan nilai integer sebanyak 5 nilai dan melalui variabel pointer bagaimana agar dapat mengetahui elemen tersebut akan menempati dilokasi memori berapa program berjalan secara statis hanya sebanyak 5 buah integer.
- Script Program
#include<stdio.h>
#include<iostream>
#include<conio.h>
using namespace std;
main(){
int i;
int nilai[50];
int *trnilai;
trnilai=nilai;
for(i=1;i<=5;i++){
cout<<"Masukan nilai ke-"<<i<<" : ";
cin>>nilai[i];
}
cout<<endl;
cout<<"Pengaksesan elemen Array lewat Pointer";
cout<<endl<<endl;
for(i=1;i<=5;i++){
cout<<"Elemen "<<i<<" Nilai "<<nilai[i];
cout<<", Menempati Alamat Memory : "<<&trnilai[i];
cout<<endl;
}
getch();
return 0;
}
- Output
- Penjelasan
Program ini untuk menampilkan alamat memori dari variabel array nilai sebanyak 5. Untuk mengakses dan menampilkan alamat memori tersebut, pada saat pemanggilan variabel menggunakan simbol (&), dan variabel pointer trnilai telah menunjuk variabel nilai yang berarti nilai yang berada di variabel nilai sama isi nya dengan yang berada di variabel pointer trnilai, namun beda pada alamat memorinya.
- Latihan 2
- Studi Kasus
Dengan memasukan nilai integer sebanyak N nilai dan melalui variabel pointer bagaimana agar dapat mengetahui elemen tersebut akan menempati dilokasi memori berapa program berjalan secara statis hanya sebanyak N buah integer.
- Script Program
#include<stdio.h>
#include<iostream>
#include<conio.h>
using namespace std;
main(){
int i,n;
int nilai[50];
int *trnilai;
trnilai=nilai;
cout<<"Masukan Jumlah Data : ";cin>>n;
for(i=1;i<=n;i++){
cout<<"Masukan nilai ke-"<<i<<" : ";
cin>>nilai[i];
}
cout<<endl;
cout<<"Pengaksesan elemen Array lewat Pointer";
cout<<endl<<endl;
for(i=1;i<=n;i++){
cout<<"Elemen "<<i<<" Nilai "<<nilai[i];
cout<<", Menempati Alamat Memory : "<<&trnilai[i];
cout<<endl;
}
getch();
return 0;
}
- Penjelasan
Program ini untuk menampilkan alamat memori pada variabel array, dimana kita harus inputkan terlebih dahulu banyak nya data yang akan di tampilkan alamat memorinya dan akan disimpan di variabel n. Untuk mengakses dan menampilkan alamat memori tersebut, pada saat pemanggilan variabel menggunakan simbol (&), dan variabel pointer trnilai telah menunjuk variabel nilai yang berarti nilai yang berada di variabel nilai sama isi nya dengan yang berada di variabel pointer trnilai, namun beda pada alamat memorinya.
POST TEST
POST TEST
- Post Test 1 : Youtube
- Post Test 2 : Youtube
Belum ada tanggapan untuk "Laporan Praktikum Struktur Data Modul 7 Pointer"
Posting Komentar