Laporan Praktikum Pointer
Laporan Praktikum Pointer
PERCOBAAN 5
POINTER
6.1 Tujuan
1. Mengenal dan mengetahui penggunaan pointer dalam listing program.
2. Membuat program sederhana dengan menerapkan konsep pointer.
68
69
6.3 Pembahasan
6.3.1 Operasi Pada Pointer
A. Operasi Penugasan
Program 1
Pada percobaan program 1, source code yang digunakan adalah sebagai
berikut :
#include <stdio.h>
return 0;
dan hasil compile dari source code di atas dapat dilihat pada Gambar 6.1
Program 2
Pada percobaan program 2, source code yang digunakan adalah sebagai
berikut :
#include <stdio.h>
int main () {
int a=20, b=40,n;//Mendeklarasikan n,nilai a dan nilai
b sebagai integer
int *x, *y;//Mendeklarasikan *x dan *y sebagai integer
x = &a;//Mendeklarasikan x=&a
y = &b;//Mendeklarasikan x=&b
n = *x;
*x = *y;
*y = n;//Menukar nilai x dan y
return 0;
}
72
dan hasil compile dari source code di atas dapat dilihat pada Gambar 6.2
A. Operasi Aritmatika
Pada percobaan operasi aritmatika, source code yang digunakan adalah
sebagai berikut :
#include <stdio.h>
int main () {
float nilai [5], *x; /*mendeklarasikan nilai dan x*/
nilai[0] = 235;//mendeklarasikan nilai o
nilai[1] = 57;//mendeklarasikan nilai 1
nilai[2] = 27;//mendeklarasikan nilai 2
nilai[3] = 378;//mendeklarasikan nilai 3
nilai[4] = 119;//mendeklarasikan nilai 4
x = &nilai[0];//mendeklarasikan nilai dari x
printf ("nilai %f ada di alamat %p\n", *x, x);
//menampilkan nilai ke 1
printf ("nilai %f ada di alamat %p\n", *(x+1), x+1);
//menampilkan nilai ke 2
73
dan hasil compile dari source code di atas dapat dilihat pada Gambar 6.3
Pada Gambar 6.3 menampilkan output program dimana terdapat nilai berbeda
dengan 5 alamat yang berbeda pula. Nilai pertama yaitu 235.000000 terdapat pada
alamat 000000000022FE30, nilai kedua yaitu 57.000000 terdapat pada alamat
000000000022FE34, nilai ketiga yaitu 27.000000 terdapat pada alamat
000000000022FE38, nilai keempat yaitu 378.000000 terdapat pada alamat
000000000022FE3C, dan nilai kelima yaitu 119.000000 terdapat pada alamat
000000000022FE44. Output program disebabkan oleh ‘x+1’ karena ‘x=nilai[0]’
maka ‘x+1’ adalah nilai[1], nilai variabel ketiga di indeks 2 yaitu 27.000000 yang
terletak pada alamat 000000000022FE38, yang penyebabnya ‘x+2’ yang berarti
nilai nya adalah nilai[2], nilai variabel ketiga di indeks 3 yaitu 378.000000 yang
terletak pada alamat 000000000022FE3C, yang penyebabnya ‘x+3’ yang berarti
nilai nya adalah nilai[3], nilai variabel ketiga di indeks 4 yaitu 119.000000 yang
terletak pada alamat 000000000022FE44, yang penyebabnya ‘x+4’ yang berarti
nilai nya adalah nilai[4]. Berdasarkan hasil output dari source code, 5 nilai ini
disimpan pada sebuah variabel array satu dimensi yaitu nilai[5] menunjukkan
74
bahwa pada setiap nilai yang disimpan pada array akan memiliki alamat yang
berbeda.
#include <stdio.h>
int main (){
char nama[] = "Peter Griffin"; //mendeklarasikan nama
char *p; //mendeklarasikan *p
p=nama;//Menunjuk nama array secara langsung
while (*p!=NULL){ //memperoleh nilai *p
printf("%c",*p); //menampilkan nilai *p
p++;
}
printf("\n\n\n\n\n");
p=&nama[0]; /*Menunjuk nama array secara ekssplisit ke
elemen pertama */
while (*p!=NULL){ //memperoleh nilai *p
printf("%c",*p); //menampilkan nilai *p
p++;
}
printf("\n\n\n\n\n");
p=&nama[0]; /*Menunjuk nama array secara ekssplisit ke
elemen pertama */
while (*p!=NULL){ //memperoleh nilai *p
printf("%c",*p); //menampilkan nilai *p
p++;
}
printf("\n");
return 0;
}
dan hasil compile dari source code di atas dapat dilihat pada Gambar 6.4
#include <stdio.h>
typedef struct{
int nim;//Mendeklarasikan nim sebagai integer
float ipk;//Mendeklarasikan ipk sebagai float
} Mahasiswa;
Mahasiswa m;
Mahasiswa *p=&m;//membuat data *p sama dengan data &m
int main(){
m.nim=20013;//Memasukkan nilai nim=20013
m.ipk=3.80;//Memasukkan nilai ipk= 3.80
printf("nim= %d\n",m.nim);//Menampilkan nim
printf("ipk= %f\n",m.ipk);//Menampilkan ipk
dan hasil compile dari source code di atas dapat dilihat pada Gambar 6.5
Pada Gambar 6.5 menampilkan sebuah program dari source code yang
menampilkan data yaitu nim dan ipk yang masing-masing memiliki 2 nilai
berbeda. Dimana nim pertama adalah 20013 dan ipk pertama memiliki nilai 3.80,
proses pemasukkan nilai dari data ini menggunakan struct biasa.. Lalu data yang
berikutnya, nim kedua adalah 20015 dan ipk kedua memiliki nilai 2.46, proses
pemasukkan nilai yang kedua ini menggunakan struct pointer. Setelah itu akan
ditampilkan kembali data yang ketiga dimana data tersebut sama dengan data
kedua karena data ketiga mengacu pada nilai terakhir yang diisikan. Program ini
juga menggunakan struct yang memungkinkan data bertipe lebih dari satu, seperti
dalam program diatas menggunakan 2 tipe data yaitu integer dan float. dalam
progaram telah di deklarasikan *p=&m sehingga hasil output antara m.nim dan p-
> nim maupun m.ipk dan p->ipk sama karena alamat yang dituju sama.
#include <stdio.h>
main()
{
77
dan hasil compile dari source code di atas dapat dilihat pada Gambar 6.6
Pada Gambar 6.6 menampilkan sebuah program yang berisi sebuah nilai
awal yaitu 10. Setelah itu, di dalam fungsi main di panggil fungsi ubah_nilai
dimana di dalam fungsi tersebut terdapat operasi pointer yang berupa operasi
aritmatika Alamat a diisikan sebagai parameter fungsi ubah nilai di fungsi main
sehingga nilai dari alamat itu dioperasikan di fungsi ubah nilai yaitu “*n=*n*40;”.
Operasi tersebut memiliki arti nilai A akhir diperoleh dari nilai A awal yaitu 10
dikali dengan dengan 40 sehingga ketika variable a ditampilkan pada insturksi
selanjutnya ,nilai akhir adalah 400 Seperti yang tertampil pada. Gambar 6.6
,sehingga source code dan output program sesuai.
78
6.4 Kesimpulan
1. Pada percobaan menggunakan operasi penugasan hasil output program
tersebut menunjukkan bahwa nilai variabel i adalah 5 dan alamat dari variabel
i adalah 000000000022FE44. Kemudian nilai i diubah dari 5 menjadi 100
karena kita sudah mendefinisikan pointer ix di alamat i dan kemudian nilai i
tersebut ditampilkan. Setelah nilai variabel i diganti dari 5 menjadi 100,
ternyata alamat dari variabel i masih tetap dan tidak berubah, yaitu
000000000022FE44.
2. Pada percobaan menggunakan operasi penugasan yang kedua output dari
program tersebut terdapat nilai dan alamat dari 2 variabel yaitu x dan y yang
ditampilkan oleh program tersebut. Pada awalnya nilai x adalah 20 memiliki
alamat 22fe38 dan nilai y adalah 40 dengan alamat 22fe34. Kemudian
program memproses nilai x dan nilai y ditukar, sehingga pada keadaan
berikutnya nilai x adalah 40, namun memiliki alamat tetap yaitu 22fe38,
sementara nilai y adalah 20 dan memiliki alamat 22fe34.
3. Pada percobaan yang menggunakan operasi aritmatika output program
menunjukkan bahwa terdapat nilai berbeda dengan 5 alamat yang berbeda
pula. Nilai pertama yaitu 235.000000 terdapat pada alamat
000000000022FE30, nilai kedua yaitu 57.000000 terdapat pada alamat
000000000022FE34, nilai ketiga yaitu 27.000000 terdapat pada alamat
000000000022FE38, nilai keempat yaitu 378.000000 terdapat pada alamat
000000000022FE3C, dan nilai kelima yaitu 119.000000 terdapat pada alamat
000000000022FE44.
4. Pada percobaan yang menggunakan pointer pada array output program
tersebut berisi sebuah tampilan dengan 3 tulisan “Peter Griffin”. Proses
penulisan kata “Peter Griffin” ini menggunakan array. Dimana dalam source
code nya kata “Peter Griffin” disimpan di array nama yang tipe datanya char.
Di dalam source code, pemanggilan dua kata “Peter Griffin” yang ada dalam
output program ada 2 cara yaitu dengan menunjuk alamat awal array nama
secara langsung dan menunjuk secara eksplisit ke elemen pertama array
nama.
79