Anda di halaman 1dari 8

LAPORAN PRAKTIKUM

PEMROGRAMAN DASAR
PERTEMUAN 10
POINTER

Nama : Rafifnanda Hastomo


NIM : 19/447082/SV/16801
Kelas : TRIK A
Hari/Tgl :

LABORATORIUM TEKNIK PERANGKAT LUNAK DAN KOMPUTER


TEKNOLOGI REKAYASA INSTRUMENTASI DAN KONTROL
DEPARTEMEN TEKNIK ELEKTRO DAN INFORMATIKA
SEKOLAH VOKASI
UNIVERSITAS GADJAH MADA
2020
BAB I
DASAR TEORI
1. PENGERTIAN POINTER
 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 :
 Operator &
 Operator & bersifat unary (hanya memerlukan satu operand saja).
 Operator & menghasilkan alamat dari operandnya.
 Operator *
 Operator * bersifat unary (hanya memerlukan satu operand saja).
 Operator * menghasilkan nilai yang berada pada sebuah alamat.

2. DEKLARASI POINTER
Seperti halnya variabel yang lain, variabel pointer juga harus dideklarasikan terlebih
dahulu sebelum digunakan. Bentuk Umum : Tipe_data *nama_pointer;
Tipe data pointer mendefinisikan tipe dari objek yang ditunjuk oleh pointer. Secara
teknis, tipe apapun dari pointer dapat menunjukkan lokasi (dimanapun) dalam memori.
Bahkan operasi pointer dapat dilaksanakan relatif terhadap tipe dasar apapun yang
ditunjuk. Contoh, ketika kita mendeklarasikan pointer dengan tipe int*, kompiler akan
menganggap alamat yang ditunjuk menyimpan nilai integer - walaupun sebenarnya
bukan (sebuah pointer int* selalu menganggap bahwa ia menunjuk ke sebuah obyek
bertipe integer, tidak peduli isi sebenarnya). Karenanya, sebelum mendeklarasikan
sebuah pointer, pastikan tipenya sesuai dengan tipe obyek yang akan ditunjuk.
Contoh :
int *px;
char *sh;

Contoh Program:
#include <iostream>
using namespace std;
int main()
{ int x, y; /* x dan y bertipe int */
int *px; /* px pointer yang menunjuk objek */
x = 87;
px = &x; /* px berisi alamat dari x */
y = *px; /* y berisi nilai yang ditunjuk px */
cout << "Alamat x = " << &x << endl;
cout << "Isi px = " << px << endl;
cout << "Isi x = " << x << endl;
cout << "Nilai yang ditunjuk oleh px = " << *px << endl;
cout << "Nilai y = " << y << endl; }

3. OPERASI POINTER
 Operasi Penugasan
Suatu variabel pointer seperti halnya variabel yang lain, juga bisa mengalami operasi
penugasan. Nilai dari suatu variabel pointer dapat disalin ke variabel pointer yang
lain.
Contoh Program:
#include <iostream>
using namespace std;
int main()
{ float *x1, *x2, y; y = 13.45;
x1 = &y; /* Alamat dari y disalin ke variabel x1 */
x2 = x1; /* Isi variabel x1 disalin ke variabel x2 */
cout<<"Nilai variabel y = "<<y<<" ada di alamat "<< x1;
cout<<"\nNilai variabel y = "<<y<<" ada di alamat "<<
x2; }

 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 Program:
#include <iostream>
using namespace std;
int main()
{ int nilai[3], *penunjuk;
nilai[0] = 125; nilai[1] = 345; nilai[2] = 750;
penunjuk = &nilai[0];
cout<<"Nilai "<<*penunjuk<<" ada di alamat " << penunjuk;
cout<<"\nNilai "<<*(penunjuk+1)<<" ada di alamat " <<
penunjuk+1;
cout<<"\nNilai "<<*(penunjuk+2)<<" ada di alamat " <<
penunjuk+2; }

 Operasi Logika
Suatu pointer juga dapat dikenai operasi logika.
Contoh Program:
#include <iostream>
using namespace std;
int main()
{ int a = 100, b = 200, *pa, *pb;
pa = &a; pb = &b;
if(pa < pb)
cout << "pa menunjuk ke memori lebih rendah dari pb\n";
if(pa == pb)
cout << "pa menunjuk ke memori yang sama dengan pb\n";
if(pa > pb)
cout << "pa menunjuk ke memori lebih tinggi dari
pb\n";}

4. POINTER DAN STRING


Contoh Program 1:
#include <iostream>
using namespace std;
const char *nama1 = "SPIDERMAN"; const char *nama2 =
"GATOTKACA";
int main()
{ const char *namax;
cout << "SEMULA :" << endl;
cout << "Saya suka >> " << nama1 << endl;
cout << "Tapi saya juga suka >> " << nama2 << endl;
/* Penukaran string yang ditunjuk pointer nama1 dan nama2 */
namax = nama1; nama1 = nama2; nama2 = namax;
cout << "SEKARANG : " << endl;
cout << "Saya suka >> " << nama1 << endl;
cout << "Dan saya juga masih suka >> " << nama2 << endl;}

Contoh Program 2:
#include <iostream>
using namespace std;
void misteril (char *);
int main()
{ char string[] = "characters";
cout << "String sebelum proses adalah " << string << endl;
misteril (string);
cout << "\nString setelah proses adalah " << string; }
void misteril (char *s)
{ while (*s != '\0') {
if (*s >='a' && *s <= 'z')
*s -= 32; ++s; } }

5. POINTER MENUNJUK SUATU ARRAY


Contoh Program:
#include <iostream>
using namespace std;
int main()
{ static int tgl_lahir[] = { 13, 9, 1982 }; int *ptgl;
ptgl = tgl_lahir; /* ptgl berisi alamat array */
cout << "Diakses dengan pointer" << endl;
cout << "Tanggal = " << *ptgl << endl;
cout << "Bulan = " << *(ptgl + 1) << endl;
cout << "Tahun = " << *(ptgl + 2) << endl;
cout << "\nDiakses dengan array biasa" << endl;
cout << "Tanggal = " << tgl_lahir[0] << endl;
cout << "Bulan = " << tgl_lahir[1] << endl;
cout << "Tahun = " << tgl_lahir[2];}

6. MEMBERI NILAI ARRAY DENGAN POINTER


Contoh Program:
#include <iostream>
using namespace std;
int main()
{ int x[5], *p, k;
p = x; x[0] = 5;/* x[0] diisi dengan 5, jadi x[0] = 5 */
x[1]= x[0];/* x[1] diisi dengan x[0], jadi x[1] = 5 */
x[2]= *p + 2;/* x[2] diisi dengan x[0] + 2, jadi x[2] = 7 */
x[3]= *(p+1)-3;/* x[3] diisi dengan x[1] – 3, jadi x[3] = 2
*/
x[4] = *(x + 2);/* x[4] diisi dengan x[2], jadi x[4] = 7 */
for(k=0; k<5; k++)
cout << "x[" << k << "] = " << x[k] << endl; }
BAB II
PROGRAM

Tugas 1

Proses

Line 1-2 memanggil library


Line 3 deklarasi fungsi void misteri2 dengan parameter (const char *)
Line 4 memulai program dengan mendeklarasikan variabel int main ()
Line 5 pointer menunjuk string dengan * dan akan mencetak "Teknik Elektro dan Informatika" ketika ditunjuk
Line 6 variabel misteri2(string) dipanggil dan akan mencetaknya dengan cout juga sekaligus mengembalikan
nilai fungsi menjadi 0 dengan return 0
Line 7 fungsi misteri2(const char *s) dipanggil dan pointer akan menunjuk s
Line 8 fungsi perulangan menggunakan for, *s menunjukan bahwa pointer menunjuk string, ‘\0’ adalah
terminasi null karakter yang akan menunjuk karakter di akhir string tersebut yaitu huruf a, dan s++ menjukan
nilai karakter akan tercetak di program.

Jadi dalam program ini misteri2 difungsikan dengan void dan memiliki parameter (const char *). Const char *
menunjukan bahwa nilai sebuah variable yang nilainya tak dapat di rubah atau sudah di tetapkan oleh user dan
sebagai pointer menjukan hanya untuk const char. Lalu isi dari pointer tersebut berisi string yang isinya kalimat
"Teknik Elektro dan Informatika". Selanjutnya fungsi mister2 dipanggil dengan parameter (string) yang ditunjuk
oleh pointer tadi dan akan menghasilkan output ke user. Selanjutnya untuk fungsi misteri2(const char *s)
mennjukan fungsi tersebut dipanggil dan akan melakukan looping untuk pencetakan. *s menunjukan pointer
menunjuk string yang ada didalam parameter tadi, ‘\0’ menunjukan terminasi null karakter yang akan menunjuk
karakter di akhir string tersebut yaitu huruf a, s++ akan melakukan nilai karakter yang akan tercetak ke program.
Cth : char[0] = T, [1] = e, [2] = k dan proses akan berjalan seterusnya hingga sampai ke akhir kalimat karakter
yaitu huruf a.
Jika line 8 dihapus maka tidak ada yang tercetak karena syntax for untuk melakukan perulangan pencetakan
huruf dihapus.

Tugas 2

Proses
Line 1-2 memanggil library
Line 3 deklarasi fungsi void misteri3 dengan parameter (const char *)
Line 4 memulai program dengan mendeklarasikan variabel int main ()
Line 5 menyediakan karakter string dengan syntax char hingga 80 karakter
Line 7 output dari fungsi misteri3(string)
Line 8 deklarasi fungsi misteri3 dengan parameter (const char *s)
Line 9 deklarasi int x
Line 10 – 11 fungsi perulangan menggunakan for, *s menunjukan bahwa pointer menunjuk string, ‘\0’ adalah
terminasi null karakter yang akan menunjuk karakter di akhir string tersebut yaitu huruf a, dan s++ menjukan
nilai karakter akan tercetak di program. Sedangkan ++x menjukan bahwa nilai x akan menghitung jumlah
karakter yang di input
Line 12 mengembalikan nilai fungsi menjadi x

Jadi program ini cara kerja nya sama seperti program sebelumnya. Bedanya adalah pada perulangan
menggunakan for di deklarasikan variabel x untuk menghitung jumlah karakter yang tercetak pada program
diatas.
BAB III
KESIMPULAN

BAB IV
DAFTAR PUSTAKA
1) Modul Praktikum Pemrograman Dasar, Teknologi Rekayasa Instrumentasi dan
Kontrol, Departemen Teknik Elektro dan Informatika, Sekolah Vokasi,
Universitas Gadjah Mada.

2) Hastomo, Rafifnanda, 2018, Laporan Praktikum Pemrograman Dasar Bab 9,


Kota Malang, Laboratorium Pemrograman Dasar, Fakultas Ilmu Komputer,
Universitas Brawijaya.

Anda mungkin juga menyukai