POINTER
TUJUAN
Tujuan dari
mempelajari Modul 8 “Pointer” ini, agar mahasiswa mampu :
1.
Mengetahui arti dan
fungsi pointer dalam pemrograman.
2.
Memahamipenggunaanpointerdalamlistingprogram.
3.
Mengetahui keunggulan
pointer pada suatu program.
4.
Membuat program sederhana
dengan menerapkan konsep pointer.
DASAR
TEORI
DEFINISI
POINTER
Pointer (variabel penunjuk) adalah
suatu variabel yang berisi alamat memori dari suatu variabel lain. Pointer
merupakan
variabel level rendah yang dapat digunakan untuk menunjuk nilai integer, character, float, double, atau single, dan
bahkan tipe-tipe data lain yang didukung oleh bahasa C.
Pointer (variabel penunjuk) adalah suatu variabel
yang berisi alamat memori dari suatu variabel lain. Alamat ini merupakan lokasi
dari obyek lain (biasanya variabel lain) di dalam memori. Contoh, jika sebuah
variabel berisi alamat dari variabel lain, variabel pertama dikatakan menunjuk
ke variabel kedua.
Operator Pointer ada dua, yaitu :
a.
Operator
&(Operator Diference)
1.
Operator &
bersifat unary (hanya memerlukan satu operand saja).
2.
Operator &
menghasilkan alamat dari operandnya.
b.
Operator *(Operator
Reference)
1.
Operator * bersifat
unary (hanya memerlukan satu operand saja).
2.
Operator *
menghasilkan nilai yang berada pada sebuah alamat.
Pointer : variabel yang berisi alamat memori
Keterangan:
Type adalah tipe
dasar pointer
Variabel name
adalah nama variabel pointer
*
adalah operator memori untuk mengembalikan nilai variabel pada alamatnya yang
ditentukan oleh operand.
Contoh
:
#include <iostream.h>
//cetak p dan *p
int main()
{
int
v = 7, *p;
p
= &v;
cout<<"Nilai
v = "<<v<<" dan *p = "<<*p;
cout<<"Alamatnya
= "<<p<<endl;
}
Operasi
Aritmatika
Suatu variabel
pointer hanya dapat dilakukan operasi aritmatika dengan nilai integer saja.
Operasi yang biasa dilakukan adalah operasi penambahan dan pengurangan. Operasi
penambahan dengan suatu nilai menunjukkan lokasi data berikutnya (index
selanjutnya) dalam memori. Begitu juga operasi pengurangan.
Contoh:
#include <stdio.h>
#include <conio.h>
int main()
{
int nilai
[3], *penunjuk;
nilai [0] =
125;
nilai [1] =
345;
nilai [2] =
750;
penunjuk =
&nilai[0];
printf("Nilai
%i ada di alamat memori %p\n", *penunjuk, penunjuk);
printf("Nilai
%i ada di alamat memori %p\n", *(penunjuk+1), penunjuk+1);
printf("Nilai
%i ada di alamat memori %p\n", *(penunjuk+2), penunjuk+2);
getch();
}
Operator Logika
Contoh:
#include <stdio.h>
#include <conio.h>
int main()
{
int a = 100,
b = 200, *pa, *pb;
pa = &a;
pb = &b;
if(pa <
pb)
printf("Pointer
a menunjuk ke memori lebih rendah dari pointer b \n");
if(pa == pb)
printf("Pointer
a menunjuk ke memori yang sama dengan pointer b \n");
if(pa >
pb)
printf("Pointer
a menunjuk ke memori yang lebih tinggi dari pointer b \n");
getch();
}
Input data melalui Pointer
Anda
juga dapat menginputkan suatu data kedalam variabel dengan menggunakan
pointernya, sebagai contoh tinjaulah program di bawah ini:
Int
x;
Int *ptr_x;
Ptr_x = &x;
Printf("Inputkan nilai x: ");
Scanf("%d",ptr_x);
Ingat!
Menginputkan data dengan scanf() membutuhkan alamat dari variabel yang
bersangkutan. Karena ptr_x merupakan alamat dari variabel x, maka ptr_x dapat
digunakan dalam scanf(). Jadi pernyataan:
Scanf("&d",
ptr_x);
Sama dengan:
Scanf("%d", &x);
Dimana &x juga menunjukkan alamat dari variabel
x
Keunggulan
menggunakan Pointer:
1.
Untuk menciptakan data struktur yang kompleks
2.
Memungkinkan suatu fungsi untuk menghasilkan
lebih dari satu nilai
3.
Memiliki kemampuan untuk mengirimkan alamat suatu
fungsi ke fungsi yang lain
4.
Penanganan terhadap array dan string akan lebih
singkat dan efisien
5.
Memungkinkan untuk berhubungan langsung dengan
parameter command line
Kemampuan bekerja
dengan memori telah dialokasikan secara dinamik
Tugas Praktikum 1
Pemrograman c++
Nama Program : Menentukan nilai dari setiap nama
Bahasa Pemrograman : C++
Compiler : MinGW Developer
Studio
Script Program :
#include <iostream.h>
#include <conio.h>
int main()
{
int aziz, defa, dewi;
int *p_aziz, *p_defa, *p_dewi;
aziz = 85067;
defa = aziz;
dewi = defa + 3;
p_aziz = &aziz;
p_defa = &defa;
p_dewi = &dewi;
*p_aziz = aziz;
*p_defa = defa;
*p_dewi = dewi;
cout<<"Syaiful Ulum\n";
cout<<"140534603100\n";
cout<<"S1 PTE C\n\n";
cout<<"Aziz = 85063\n";
cout<<"Defa = aziz\n";
cout<<"Dewi = defa + 3\n";
cout<<"\n";
cout<<"a. Berapakah nilai defa?
"<<*p_defa;
cout<<"\nb. Berapakah nilai dewi?
"<<*p_dewi;
cout<<"\n";
aziz = 85067;
p_defa = &aziz;
dewi = *p_defa + 3;
cout<<"\nAziz = 85067\n";
cout<<"defa = aziz\n";
cout<<"dewi = defa + 3\n";
cout<<"\n";
cout<<"c. Berapakah nilai defa?
"<<*p_defa;
cout<<"\nd. Berapakah nilai dewi?
"<<*p_dewi;
}
Output Program :
Algoritma :
1.
Mulai
2.
Mendeklarasikan variabel aziz, defa dan dewi
3.
Mendeklarasikan *p_aziz, *p_defa, *p_dewi
4.
Mendeklarasikan nilai aziz = 85067
5.
Mendeklarasikan defa sama dengan aziz
6.
Mendeklarasikan dewi sama dengan defa ditambah 3
7.
Mendeklarasikan *p_aziz sama dengan aziz
8.
Mendeklrasikan *p_defa sama dengan defa
9.
Mendeklarasikan *p_dewi sama dengan dewi
10. Menampilkan
tampilan aziz = 85063
11. Menampilkan
tampilan defa sama dengan aziz
12. Menampilkan
tampilan dewi sama dengan defa ditambah 3
13. Menampilkan
nilai defa
14. Menampilkan
nilai dewi
15. Menampilkan
tampilan aziz sama dengan 85067
16. Menampilkan
tampilan defa sama dengan aziz
17. Menampilkan
tampilan dewi sama dengan defa ditambah tiga
18. Menampilkan
nilai defa
19. Menampilkan
nilai dewi
20. Selesai
Penjelasan Program :
Program ini menggunakan file header iostram.h karena menggunakan cin
dan cout. Cin digunakan sebagai inputan sedangkan cout digunakan sebagai
keluaran atau untuk menampilkan sesuatu yang ada di dalam cout. Pertama
mendeklarasikan variabel aziz, defa dan dewi yang menggunakan tipe data
integer. Kedua mendeklarasikan pointer p_aziz, p_defa, p_dewi yang memiliki
tipe data integer. Selanjutnya program mendeklarasikan ni;ai aziz sama dengan
85067, defa sama dengan aziz dan dewi sama dengan defa ditambah defa. Lalu
program akan menampilkan bahwa nilai aziz sama dengan 85063, defa sama dengan
aziz dan dewi sama dengan defa. Maka ketika terdapat program yang menanyakan
berapakah nilai dari defa? Hasilnya adalah 85067. Alasannya sudah
dideklarasikan sebelumnya bahwa nilai aziz adalah 85067. Senagkan untuk
pertanyaan yang menanyakan berapa nilai dewi maka hasilnya adalah 85070.
Alasannya karena tadi sudah dijelaskan bahwa untuk nilai dewi pendeklarasiannya
adalah nilai defa ditambah tiga maka itu adalah nilai dewi. Untuk nilai defa
bernilai 8506 kemudian ditambah 3 hasilnya 85070, itu adalah nilai dari dewi.
Sekarang
program membuat pendeklarasian yaitu aziz sama dengan 65067, p_defa sama dengan
nilai aziz dan dewi sama dengan p_defa ditambah tiga. Sebelumnya sudah
dideklarasikan juga bahwa p_aziz = &aziz, p_defa = &defa, p_dewi =
&dewi, *p_aziz = aziz, *p_defa = defa, *p_dewi = dewi. Lalu program
menampilkan nilai defa yaitu 85067 karena pada script untuk keluaran nilai defa
disimpan di dalam variabel *p_defa. Kembali lagi ke pendeklarasian tadi bahwa
*p_defa sama dengan defa dan sama dengan aziz, untuk nilai aziz adalah 85067
maka nilai defa 85067. Nilai dewi sama dengan 85070, 85070 didapat sam seperti
nilai defa yang berdasarkan pendeklarasian pada program.
KESIMPULAN
1.
Pointer adalah variable yang berisi alamat memory sebagai nilainya
dan berbeda dengan variable biasa yang berisi nilai tertentu.
2.
Operator pointer ada dua, yaitu :
·
Operator &(Operator Diference)
menghasilkan
alamat dari operandnya
·
Operator *(Operator Referebce)
menghasilkan
nilai yang berada pada sebuah alamat
3.
Macam Pointer :
·
Operator Aritmatika
·
Operator Logika
4.
Pointer memiliki banyak keunggulan, seperti :
·
Penanganan terhadap array dan string akan lebih
singkat, dan efisien.
·
Memungkinkan suatu fungsi untuk menghasilkan
lebih dari satu nilai.
DAFTAR RUJUKAN
Kadir, Abdul. 2003. Pemrograman C++. Yogyakarta: Penerbit
ANDI.
Tidak ada komentar:
Posting Komentar