LAPORAN PRAKTIKUM
ALGORITMA PEMROGRAMAN
DAN STRUKTUR DATA
MODUL 10
Disusun oleh :
Nama :
Ricky Rudianto
NIM :
2012081127
Kelas :
Teknik Informatika A
LABORATORIUM
KOMPUTER
FAKULTAS ILMU
KOMPUTER
UNIVERSITAS
KUNINGAN
2012
MODUL
10
POINTER
“PEMBAHASAN”
Dasar
Teori
Introduction
Setiap
kali kita mendeklarasikan variabel, C/C++ akan menyediakan alokasi memori untuk
masing-masing variabel. Ukuran memori yang dialokasikan berbeda-beda tergantung
dari tipe data variabelnya. Misalnya untuk integer 2 bytes, untuk float 4
bytes, dst. Jadi, setiap variabel yang kita deklarasikan mempunyai 2
atribut yaitu address dan value.
Pengertian Pointer
Pada pertemuan kali ini,
kita akan membahas powerful feature
dari bahasa pemograman C/C++, yaitu 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.
Variabel biasa, sifatnya
statis dan sudah pasti, sedangkan pada pointer sifatnya dinamis dan dapat lebih fleksibel.
Variabel pointer yang tidak menunjuk pada nilai apapun berarti memiliki
nilai NULL, dan disebut sebagai dangling pointer karena nilainya tidak
diinisialisasi dan tidak dapat diprediksi.
Deklarasi Pointer
Seperti halnya variabel
yang lain, variabel pointer juga harus dideklarasikan terlebih dahulu sebelum
digunakan.
Bentuk Umum :
tipe_data *nama_pointer;
Contoh : int *nilai;
char *huruf;
Pendeklarasian variabel pointer menggunakan tanda * sebelum nama
variabelnya, sedangkan untuk menampilkan nilai yang ditunjuk oleh suatu
variabel pointer, juga digunakan operator * (tanda asterisk). Jika diinginkan untuk menampilkan alamat
tempat penyimpanan nilai yang ditunjuk oleh suatu variabel pointer, digunakan
operator & (tanda ampersand).
Operasi pada Pointer
- Operasi Penugasan
Suatu variable pointer seperti halnya variable
yang lain, juga bisa mengalami operasi
penugasan. Nilai dari suatu variable pointer
dapat disalin ke variable pointer yang lain
Operator (&) dalam kaitannya dengan pointer
adalah operator yang mengembalikan alamat memori dari operandnya. Contohnya :
int y = 5; /*deklarasi variabel y*/
int *yPtr; /*deklarasi variabel pointer yPtr*/
yPtr = &y; /*mengisi variabel pointer yPtr dengan
alamat dari variabel y*/
Maka representasi dari operasi penugasan di atas
adalah
Representasi yang lain, misalnya asumsikan bahwa
variabel y berada pada alokasi memori 600000 dan variabel pointer yPtr berada
pada alokasi memori 500000.
Contoh program (untuk dicoba)
- 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.
Asumsikan kita telah mendeklarasikan sebuah array
float v[5], dan anggap elemen pertamanya berada pada lokasi 3000 di memori.
Lalu kita deklarasikan sebuah variabel pointer *vPtr, ada dua cara untuk
mengisi variabel pointer *vPtr dengan alamat dari elemen pertama array v, yaitu
:
float *vPtr = v;
float *vPtr =
&v[0];
Jika kita melakukan
operasi aritmatika seperti
vPtr += 2;
dalam perhitungan
aritmatika biasa, maka vPtr yang semula berisi 3000 menjadi 3000 + 2 = 3002,
namun ini tidak berlaku pada pointer. Operasi aritmatika pada pointer di atas
artinya adalah vPtr yang semula menunjuk pada v[0] sekarang menunjuk ke v[2].
Karena vPtr menunjuk
alamat memori dari variabel v yang bertipe float, maka vPtr sekarang berisi 3008 (3000 + 2 * 4).
Contoh program (untuk dicoba)
PRAKTIKUM
Praktikum 1
1. Tulis source code berikut ini :
#include
<stdio.h>
Int
main ( )
{
Int i;
Int *ia;
I = 10;
Ia = &i;
Printf(“Nilai i adalah %d”, i);
Printf(“Nilai dari pointer ia adalah
%d \n”, *ia);
*ia = 50;
Printf(“Nilai i sekarang adalah %d
\n”, i);
Printf(“Alamat dari i adalah %p \n”,
ia);
Return 0;
}
Bahasa
C++ :
Dikompile
dan jalankan :
Untuk
kompile pertama :
Untuk
kompile kedua :
Dan
yang selanjutnya pasti akan berbeda di dalam program pointer C++.
Praktikum 2
1. Tulis source code berikut ini :
#include <stdio.h>
Int main( )
{
Float
nilai [3], *ptr;
Nilai
[0] = 220;
Nilai
[1] = 641;
Nilai
[2] = 53;
Ptr
= &nilai[0];
Printf(“nilai
%f di alamat %p \n”, *ptr, ptr);
Printf(“nilai
%f di alamat %p \n”, *(ptr+1), ptr+2);
Printf(“nilai
%f di alamat %p \n”, *(ptr+2), ptr+2);
Return
0;
}
Bahasa C++ :
Dikompile dan jalankan :
Untuk kompile yang pertama :
Untuk kompile yang kedua :
Dan yang selanjutnya pasti akan berbeda di
dalam program pointer C++.
TUGAS MODUL 10
Soal !
1. Buatlah program menggunakan pointer dan array
(array pointer). Output bebas
2. Buatlah program menggunakan pointer dan
struktur (struct pointer). Output bebas
Penyelesaian !
No. 1
#include <stdio.h>
int main()
{
char
nama [] = "ricky rudianto";
char
*p;
p
= nama;
{
printf("%c",
*p);
p++;
}
printf("\n");
p
= &nama [0];
while(*p!=NULL)
{
printf("%c",
*p);
p++;
}
printf("\n");
return
0;
}
Bahasa C++ :
Dikompile dan jalankan :
Pembahasan :
Pada
array, pointer hanya perlu menunjuk pada alamat elemen pertama saja karena
letak alamat array sudah berurutan pada memori.
No. 2
#include
<stdio.h>
typedef
struct
{
int nim;
float ipk;
}
Mahasiswa;
Mahasiswa
m;
Mahasiswa
*p = &m;
int
main()
{
//struct biasa
m.nim=4153;
m.ipk=3.80;
printf("nim = %d
\n", m.nim);
printf("ipk = %f
\n", m.ipk);
//struct pointer
p->ipk = 3.02;
printf("nim = %d
\n", p->nim);
printf("ipk = %f
\n", p->ipk);
//mengacu pada variabel
aslinya
printf("nim = %d
\n", m.nim);
printf("ipk = %f
\n", m.ipk);
return 0;
}
Bahasa
C++ :
Dikompile
dan jalankan :
Pembahasan
:
Pointer
dapat bertipe apa saja, bahkan tipe buatan kita sendiri.
KESIMPULAN
Pointer
(variabel petunjuk) 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 di dukung oleh bahasa C.