Kamis, 11 Mei 2017

Program Pointer ( Struktur Data Modul 7)

            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.



1 komentar: