Anda di halaman 1dari 12

LAPORAN PRAKTIKUM

PEMROGRAMAN DASAR
PERTEMUAN 10
POINTER

Nama : Naufal Rashad Aryaputra


NIM : 19/447081/SV/16800
Kelas : TRIK B
Hari/Tgl : Rabu, 15 April 2020

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; }

TUGAS
Apa yang tercetak dari program-program berikut ini ?
1. #include <iostream>
using namespace std;
void misteri2(const char *);
int main()
{ const char *string = "Teknik Elektro dan Informatika";
misteri2(string); cout << endl; return 0; }
void misteri2(const char *s) {
for ( ; *s != '\0' ; s++) cout << *s; }

2. #include <iostream>
using namespace std;
int misteri3(const char *);
int main()
{ char string[80];
cout << "Ketik sebuah string : "; cin >> string;
cout << misteri3(string) << endl; }
int misteri3(const char *s)
{ int x = 0;
for ( ; *s != '\0' ; s++)
++x;
return x; }
HASIL DAN ANALISA

Tugas 1 – Program 1

Pemrograman

Hasil Program

Analisa:

#include <iostream>; :

#include merupakan sebuah preprocessor directive yang digunakan untuk memuat


sebuah file library. <iostream> merupakan sebuah file header yang memuat semua fungsi
program seperti cout,cin dan lainnya, #include memberitahu preprocessor compiler untuk
menggunakan file header standar iostream ke dalam program.
using namespace std; :

Baris ini merupakan instruksi untuk memberi tahu compiler bahwa program
menggunakan library dari Namespace. Dengan menggunakan perintah ini dapat
meminimalisir kesalahan akibat tidak dikenalinya fungsi cout maupun cin Std merupakan
singkatan dari standard.

void misteri2(const char *s);

Merupakan Deklarasi tipe data yang digunakan pada semua variabel yang digunakan, tipe
data char digunakan karena input yang digunakan merupakan sebuah karakter, bukan
bilangan pecahan maupun bilangan bulat. Fungsi dengan tipe void menyatakan kalau
fungsi misteri2 tidak akan mengembalikan nilai apa-apa (ditandai dengan tidak adanya
perintah return).

Int main() :

Fungsi utama atau entry point dari seluruh program sebelum program di eksekusi, fungsi
main ini harus ada disetiap program agar program tersebut dapat berjalan. Fungsi ini
selalu diikuti dengan buka tutup kurung yang menandakan kalau line tersebut merupakan
suatu fungsi dalam program. int merupakan tipe data dalam fungsi main.

Line 8 - 10:

Merupakan perintah untuk mendefinisikan tipe data yang digunakan pada pointer string
adalah const char, kemudian diikuti dengan perintah pemanggilan dari fungsi misteri2
pada baris berikutnya.

return 0 ; :

Memberikan feedback kepada fungsi main jika ada error pada program.

Merupakan Deklarasi tipe data yang digunakan pada semua variabel yang digunakan, tipe
data integer digunakan karena input yang digunakan merupakan sebuah bilangan bulat
bukan bilangan berupa pecahan.
Line 8 - 13 :

Merupakan program untuk mendeklarasikan fungsi dari misteri2, yang mana isi dari main
body fungsi mistery2 adalah sebuah perulangan dalam bentuk for, dimana program akan
melakukan print terhadap operator *s atau misteri2
Tugas 2 – Program 2

Hasil Program

Pemrograman
Analisa Program

#include <iostream>; :

#include merupakan sebuah preprocessor directive yang digunakan untuk memuat


sebuah file library. <iostream> merupakan sebuah file header yang memuat semua fungsi
program seperti cout,cin dan lainnya, #include memberitahu preprocessor compiler untuk
menggunakan file header standar iostream ke dalam program.

using namespace std; :

Baris ini merupakan instruksi untuk memberi tahu compiler bahwa program
menggunakan library dari Namespace. Dengan menggunakan perintah ini dapat
meminimalisir kesalahan akibat tidak dikenalinya fungsi cout maupun cin Std merupakan
singkatan dari standard.

int misteri3(const char *);

Merupakan Deklarasi tipe data yang digunakan pada semua variabel yang digunakan, tipe
data char digunakan karena input yang digunakan merupakan sebuah karakter, bukan
bilangan pecahan maupun bilangan bulat. Fungsi dengan tipe int menyatakan kalau fungsi
misteri3 akan mengembalikan nilai pada akhir program (ditandai dengan adanya perintah
return).

Int main() :

Fungsi utama atau entry point dari seluruh program sebelum program di eksekusi, fungsi
main ini harus ada disetiap program agar program tersebut dapat berjalan. Fungsi ini
selalu diikuti dengan buka tutup kurung yang menandakan kalau line tersebut merupakan
suatu fungsi dalam program. int merupakan tipe data dalam fungsi main.

char string[80];

Merupakan Deklarasi tipe data yang digunakan pada semua variabel yang digunakan, tipe
data string digunakan karena input yang digunakan merupakan sebuah karakter bukan
bilangan bulat maupun bilangan berupa pecahan.
cout << "Ketik sebuah string : "; cin >> string;

cout merupakan singkatan dari console out, fungsinya adalah memberikan output dari
program pada console. “<< “ merupakan operator bitwise untuk memasukkan tulisan
kedalam cout.endl digunakan untuk memberikan fungsi enter pada program di baris
berikutnya. cin merupakan singkatan dari console in, fungsinya untuk memberikan input
value angka kedalam program.

cout << misteri3(string) << endl;

merupakan perintah untuk pemanggilan fungsi misteri3 yang dibuat pada line berikutnya.

Line 12-19 :

Merupakan program untuk mendeklarasikan fungsi dari misteri3, yang mana isi dari main
body fungsi misteri3 adalah perulangan for. Return merupakan nilai balik dari fungsi
yaitu variabel x, diakhiri oleh kurung kurawal.
BAB III
KESIMPULAN

1) Pointer (variabel penunjuk) adalah suatu variabel yang berisi alamat memori dari
suatu variabel lain
2) Suatu variabel pointer hanya dapat dilakukan operasi aritmatika dengan nilai
integer saja
3) operasi pointer dapat dilaksanakan relatif terhadap tipe dasar apapun yang
ditunjuk

BAB IV
DAFTAR PUSTAKA

1) Modul Praktikum Pemrograman Dasar, Teknologi Rekayasa Instrumentasi dan


Kontrol, Departemen Teknik Elektro dan Informatika, Sekolah Vokasi,
Universitas Gadjah Mada.

Anda mungkin juga menyukai