Anda di halaman 1dari 16

POINTER

A. Tujuan
Setelah mempelajari bab ini diharapkan mahasiswa akan mampu :
1. Mengenaldanmemahami penggunaan pointer dalam listing program.
2. Membuat program sederhana dengan menerapkan konseppointer .

B. Dasar Teori.
Definisi Pointer
Pointer berisi alamat dari suatu data, BUKAN data seperti pada variabel.
Variabel disimpan dalam memori, dan akan ditempatkan pada alamat tertentu.
Pointer dalam program digunakan untuk me-nunjuk kesuatu alamat memori.
Pointer adalah sebuah variabel yang berisi alamat lain. Suatu pointer dimaksudkan
untuk menunjukan kesuatu alamat memori sehingga alamat dari suatu variable dapat diketahui
dengan mudah.
Keunggulan menggunakan Pointer:
1. Penanganan terhadap array dan string akan lebih singkat, dan efisien.
2. Memungkinkan suatu fungsi untuk menghasilkan lebih dari satu nilai.
3. Memiliki kemampuan untuk mengirimkan alamat suatu fungsi ke fungsi yang lain.
4. Kemampuan berkerja dengan memori yang telah dialokasikan secara dinamik.
5. Memungkinkan untuk berhubungan langsung ke hardware.
6. Untuk menciptakan data structure yang kompleks.
7. Memungkinkan untuk berhubungan langsung dengan parameter command line.
Dengan menggunakan pointer yang benar, anda dapat menyusun sebuah program
yang berkemampuan tinggi. Sebaliknya sedikit saja kesalahan dalam menggunakan pointer akan
mengakibatkan kesalahan fatal pada program anda. Karena pointer dapat langsung
menunjukan pada lokasi memori, jika lokasi yang ditunjuk salah, berarti data yang diambil
juga akan salah, dan sudah tentu program anda akan menjadi salah juga.
Operator deference (&) ampersand sign
Operator ini biasa disebut dengan address of atau operator alamat. Dengan
menggunakan operator deference variable akan menghasilkan alamat lokasi memori.
Operator reference (*)
Operator ini biasa disebut value pointed by. Dengan menggunakan operator ini akan
dihasilkan nilai yang berada pada suatu alamat memori
Deklarasi Variabel Pointer
Tipe variable sama dengan tipe yang dikenal oleh variable biasa, misalnya int, float, char
dan sebagainya. Nama variabel pointer juga mengikuti ketentuan nama variable biasa. Yang
membedakan variabel pointer dengan variable biasa dengan menggunakan tanda asterisk (*)
didepan nama varibel pada waktu deklarasi.
Contoh :
Int *ptr_x;
Ptr merupakan variabel pointer, karena pada deklarasi digunakan tanda (*) didepan
nama variabelnya. Pengertian dalam deklarasi variabel pointer memiliki perbedaan dengan
variable biasa, jika dalam deklarasi variable biasa:
Float x;
Dalamdeklarasi pointer:
Float *ptr_x;
Artinya variabel pointer ptr_x akan menunjukkan pada variable yang bertipe float. Jadi
disini bukan ptr_x-nya yang bertipe float, melainkan variabel lain yang ditunjuk yang bertipe
float. Contoh: dalam pendeklarasian yang salah :
float y;
Int *ptr_y;
Benar :
Float y;
Float *ptr_y;
Dan untuk mendeklarasikan sebuah variable y yang bertipe integer dengan variabel
pointernya adalah:
Int y;
Int *yy; dapat disederhanakan
Int y,*yy;
Input data Melalui Pointer
Anda dapat juga mengimputkan suatu data ke dalam variable dengan dengan menggunakan
pointernya, sebagai contoh tinjaulah program dibawah ini:
Int x;
Int *ptr_x;
Ptr_x=&x;
Printf(”inputkannilai 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.
Memberikan suatu nilai pada suatu variable lewat pointer
Nilai suatu variabel dapat juga diberikan lewat pointernya, nilai yang diberikan ini dapat
berbentuk kostanta ataupun ekspresi aritmatika.
Pointer danfungsi
Pengiriman data dari sebuah fungsi ke fungsi lain dapat juga dilakukan dengan bantuan
pointer, bila pointer digunakan, maka data yang dikirim harus berupa alamat variabel, bukan
lagi nama variabel.
Latihan Praktikum 1
Pemrograman C++
Nama Program :Program menggunakan suatu pointer dari fungsi
Bahasa Pemrogramam : C++
Compiler : MinGW Developer Studio
Script program :
#include <stdio.h>

char*nama_bulan(int n);
main()
{
int bl;

printf("Bulan(1..2*)");
scanf("%d",&bl);
printf("%s\n",nama_bulan(bl));
}

char*nama_bulan(int n)
{
static char*bulan[]={
"Kode Bulan Salah",

"Januari","Februari","Maret","Appril","Mei","Juni","Juli","Agustus
",
"September","Oktober","Nopember","Desember"};

return((n<1||n>12)?bulan[0]:bulan[n]);
}
Output Program:

Algoritma:

1. Mulai.
2. Masukkan bilangan bulan (1...2).
3. Cetak hasil.
scanf("%d",&bl);
printf("%s\n",nama_bulan(bl));
4. Jika inputan bilangan selain 1-12, maka “Kode Bulan Salah”.
5. Cetak hasil.
return((n<1||n>12)?bulan[0]:bulan[n]);
6. Selesai.

Deskripsi:

Program diatas menggunakan file header stdio karena menggunakan printf dan scanf.
Menggunakan fungsi main. Menggunakan tipe data string, static char, char dan int. Menggunakan
operator ||, <. Menggunakan fungsi return((n<1||n>12)?bulan[0]:bulan[n]); , yang artinya jika n
bernilai 1-12 maka bernilai benar hasilnya “"Januari" /"Februari"/"Maret"/"Appril"/"Mei"/"Juni"
/"Juli"/"Agustus"/"September"/"Oktober"/"Nopember"/"Desember"}; , jika lebih dari 12 atau
kurang dari 1 maka bernilai salah dan hasilnya “Kode bulan salah”.
LatihanPraktikum2
Pemrograman C++

Nama Program :Program menghitung banyak karakter


Bahasa Pemrogramam : C++
Compiler : MinGW Developer Studio
Script program :
//PROGRAM MENGHITUNG BANYAK KARAKTER
#include <stdio.h>
int misteri3(const char *);

main () {
char string[80];
printf("Ketikkan sebuah string : ");
scanf("%s",&string);
printf("%d\n", misteri3(string));
return 0;
}

int misteri3(const char *s)


{
int x=0;

for(;*s!='\0';s++)
++x;
return x;
}
Output Program :

Algoritma:

1. Mulai.
2. Ketikkan sebuah string.
scanf("%s",&string);
printf("%d\n", misteri3(string));
return 0;
3. Cetak hasil.
int x=0;

for(;*s!='\0';s++)
++x;
return x;
4. Selesai.

Deskripsi:

Program diatas menggunakan file header stdio karena menggunakan printf dan scanf.
Menggunakan array satu dimensi. Menggunakan tipe data integer, string. Menggunakan fungsi
main. Menggunakan fungsi return 0 dan return x.

LatihanPraktikum3
Pemrograman C++

Nama Program :Program untuk menjawab pertanyaan


Bahasa Pemrogramam : C++
Compiler : MinGW Developer Studio
Script program :
#include <iostream.h>
#include <conio.h>
int main()
{
int aziz, defa, dewi;
int *aziz1, *defa1, *dewi1;
aziz=57082;
defa=aziz;
dewi=defa+1;
aziz1=&aziz;
defa1=&defa;
dewi1=&dewi;
*aziz1=aziz;
*defa1=defa;
*dewi1=dewi;
cout<<"\t === ANANDA PUTRI SYAVIRI === \n\n";
cout<<"\t === 130533608243 === \n\n";
cout<<"\t === PTI'13 OFF B === \n\n";
cout<<"\t ===---------------**--------------=== \n\n";
cout<<"================================================\n";
cout<<" aziz=57082\n";
cout<<" defa=aziz\n";
cout<<" dewi=defa+1\n";
cout<<"================================================\n";
cout<<" a. Berapa nilai defa?\n";
cout<<" Nilai defa = "<<*defa1<<endl;
cout<<endl;
cout<<" b. Berapa nilai dewi?\n";
cout<<" Nilai dewi = "<<*dewi1<<endl;
cout<<endl;
aziz=57082;
defa1=&aziz;
dewi=*defa1+1;
cout<<"================================================\n";
cout<<" aziz=57082\n";
cout<<" defa=&aziz\n";
cout<<" dewi=*defa+1\n";
cout<<"================================================\n";
cout<<" c. Berapa nilai defa?\n";
cout<<" Nilai defa = "<<*defa1<<endl;
cout<<endl;
cout<<" d. Berapa nilai dewi?\n";
cout<<" Nilai dewi = "<<*dewi1<<endl;
cout<<endl;
}
Output Program :
Algoritma:

1. Mulai.
2. Membaca integer main aziz, defa, dewi.
3. Membaca integer aziz1, defa1, dewi1.
4. Membaca hasil dari nama-nama yang ingin diproses.
5. Proses:
aziz=57082;
defa=aziz;
dewi=defa+1;
aziz1=&aziz;
defa1=&defa;
dewi1=&dewi;
*aziz1=aziz;
*defa1=defa;
*dewi1=dewi;
6. Membaca :
cout<<" aziz=57082\n";
cout<<" defa=aziz\n";
cout<<" dewi=defa+1\n";
7. Membaca nilai defa :
cout<<" a. Berapa nilai defa?\n";
cout<<" Nilai defa = "<<*defa1<<endl;
8. Membaca nilai dewi :
cout<<" b. Berapa nilai dewi?\n";
cout<<" Nilai dewi = "<<*dewi1<<endl;
9. Menghasilkan nilai defa dan dewi
aziz=57082;
defa1=&aziz;
dewi=*defa1+1;
10. Membaca nilai defa1
cout<<" c. Berapa nilai defa?\n";
cout<<" Nilai defa = "<<*defa1<<endl;
11. Membaca nilai dewi1
cout<<" d. Berapa nilai dewi?\n";
cout<<" Nilai dewi = "<<*dewi1<<endl;
12. Selesai.
Deskripsi:

Program diatas menggunakan file header iostream karena menggunakan cout dan cin,
menggunakan file header conio sebagai header standar. Menggunakan tipe data integer.
Menggunakan fungsi main. Menggunakan pointer dimana berfungsi untuk mengalokasikan
(mengetahui) alamat suatu memori dalam bahasa C++.

TugasPraktikum 1
Pemrograman C++

Nama Program :Program menampilkan kalimat terbaik dari suatu kalimat yang di
inputkan

Bahasa Pemrogramam : C++


Compiler : MinGW Developer Studio
Script program :
#include <iostream.h>
#include <conio.h>
#include <stdio.h>

int main()
{
char kata[100];
char *balik;
int i,jumlah;

jumlah=0;
balik=kata;
char x;
do
{
cout<<"\t === ANANDA PUTRI SYAVIRI === \n\n";
cout<<"\t === 130533608243 === \n\n";
cout<<"\t === PTI'13 OFF B === \n\n";
cout<<"\t ===---------------**--------------=== \n\n";
cout<<"\t ===---------------**--------------=== \n\n";
cout <<"\t Masukkan kata : ";
gets(kata);
for(i=0;kata[i]!='\0';i++)
{jumlah ++;}
cout<<"\n\t ===---------------**--------------=== \n\n";
cout << "\t Setelah Pembalikan Kata :";
for(i=jumlah -1;i>=0;i--)
{cout << *(balik + i);}
cout<<"\n\n\t ===---------------**--------------=== \n\n";
cout<<"\n\t Tekan y untuk mengulang = ";
cin>>x;
} while ((x=='y') || (x=='Y'));
getch();
}
Output Program:

Algoritma:

1. Mulai.
2. Membacafungsi main.
3. Membacatipe data integer dan char.
4. Membaca array satudimensi.
5. Membaca pointers char balik.
6. Jumlah = 0
balik=kata
for(i=0;kata[i]!='\0';i++)
{jumlah ++;}
7. Masukkan kata.
8. Cetak hasil pembalikkan kata.
for(i=jumlah -1;i>=0;i--)
{cout << *(balik + i);}
9. Jika ingin mengulang , maka “Tekan y untuk mengulang”.
cout<<"\n\t Tekan y untuk mengulang = ";
cin>>x;
} while ((x=='y') || (x=='Y'));
getch();
}
10. Cetak hasil.
11. Kembali ke menu awal jika ‘y’, program berakhir jika ‘n’.
12. Selesai.

Deskripsi:

Program diatas menggunakan file header iostream karena menggunakan cout dan cin,
menggunakan conio karena menggunakan getch, menggunakan stdio sebagai header standar dan
menggunakan fungsi gets(kata). Menggunakan tipe data integer dan char. Menggunakan pointer
char balik. Menggunakan array satu dimensi. Menggunakan perulangan do while dan for.
Menggunakan fungsi getch dan gets(kata).

Tugas Praktikum 2
Pemrograman C++

Nama Program :Program3 Variabel.

Bahasa Pemrogramam : C++


Compiler : MinGW Developer Studio
Script program :
#include <iostream.h>
#include <conio.h>

intpengali(int*);
int main()
{
inta,b,c;
char x;
do
{
cout<<"\t === ANANDA PUTRI SYAVIRI === \n\n";
cout<<"\t === 130533608243 === \n\n";
cout<<"\t === PTI'13 OFF B === \n\n";
cout<<"\t ===---------------**--------------=== \n\n";
cout<<"\n\t Masukkannilai a = ";
cin>>a;
cout<<"\n\t Masukkannilai b = ";
cin>>b;
cout<<"\n\t Masukkannilai c = ";
cin>>c;
cout<<"\t ===---------------**--------------=== \n\n";
pengali(&a);
pengali(&b);
pengali(&c);
cout<<"\t Nilai a sesudahdieksekusi = "<<a<<endl;
cout<<"\n\t Nilai b sesudahdieksekusi = "<<b<<endl;
cout<<"\n\t Nilai c sesudahdieksekusi = "<<c<<endl;
cout<<"\n\t ===---------------**--------------=== \n\n";
cout<<"\n\t Tekan y untukmengulang = ";
cin>>x;
}
while ((x=='y') || (x=='Y'));
getch();
}
intpengali(int *x)
{
*x=*x*2;
}
Output Program:

Algoritma:

1. Mulai.
2. Membaca file header.
3. Membaca fungsi main, fungsi pengali(int*).
4. Membaca tipe data integer a,b,c dan char x.
5. Masukkan nilai a.
6. Masukkan nilai b.
7. Masukkan nilai c
8. Cetak hasil pengali.
pengali(&a);
pengali(&b);
pengali(&c);
9. Jika ingin mengulang, maka “Tekan y untuk mengulang”.
cout<<"\n\t Tekan y untuk mengulang = ";
cin>>x;
}
while ((x=='y') || (x=='Y'));
getch();
}
10. Cetak hasil.
11. Kembali ke menu awal jika ‘y’, program berakhir jika ‘n’.
12. Selesai.

Deskripsi:

Program diatas menggunaka file header iostream karena menggunakan cout dan cin, conio
karena menggunakan getch. Menggunaka fungsi main dan pengali(int*). Menggunakan tipe data
integer dan char. Menggunakan perulangan do- while. Menggunakan fungsi getch.

KESIMPULAN
1. Pointer adalah sebuah variabel yang berisi alamat lain. Suatu pointer dimaksudkan
untuk menunjukan kesuatu alamat memori sehingga alamat dari suatu variable dapat
diketahui dengan mudah.
2. Dengan menggunakan pointer yang benar, dapat menyusun sebuah program yang
berkemampuan tinggi. Sebaliknya sedikit saja kesalahan dalam menggunakan pointer
akan mengakibatkan kesalahan fatal pada program tersebut.
3. Menggunakan operator deference variable akan menghasilkan alamat lokasi memori.
4. Menggunakan operator reference akan dihasilkan nilai yang berada pada suatu alamat
memori.
DAFTAR RUJUKAN
Tim Asisten Dosen. 2013. Modul 8.POINTER. Malang: Universitas Negeri M alang.
Kadir, Abdul. 2003. Pemrograman C++. Yogyakarta: Penerbit ANDI.

Anda mungkin juga menyukai