modul v - pointer
Embed Size (px)
TRANSCRIPT
-
7/26/2019 Modul v - Pointer
1/21
Modul V Pointer
MODUL V
POINTER
A. Tujuan
a) Mahasiswa dapat memahami definisi dan kegunaanpointer
b) Mahasiswa dapat mengetahui bagaimana mengimplementasikan pointer dalam
program.
B. Dasar Teori
1. Pengertianpointer
Pointer adalah operator penunjuk alamat yang berisi alamat memory
sebagai nilainya dan berbeda dengan variable biasa yang berisi nilai tertentu.
Dengan kata lain, pointer berisi alamat dari variable yang mempunyai nilai
tertentu.
2. Perbedaan Variabel biasa dan Pointer.
Variable Biasa PointerBerisi datanilai Berisi alamat memori dari suatu variable
tertentu
!perasi yang bisa dilakukan
seperti
layaknya operasi biasa" #, $, %,
Membutuhkan operator khusus" &'(
yang menunjuk alamat dari suatu
variable tertentu. !perator &'( hanya
dapat dilakukan kepada variable dan
akan mengahasilkan alamat dari
variable itu. ontoh" p * 'n
+ang kedua " !perator &%(. !perator inibersifat menggunakan nilai dari alamat
variable yang ditunjuk oleh pointer
tersebut.
ontoh" int %p
Bersifat statis Bersifaat dinamis
Deklarasi " int a; Deklarasi " int *a
-etiap kali komputer menyimpan data, maka sistem operasi akan
mengorganisasikan lokasi pada memori pada alamat yang unik. Misal untuk
Praktikum algoritma dan pemrograman 2016 Modul V - 1
-
7/26/2019 Modul v - Pointer
2/21
Modul V Pointer
alamat memori //0, hanya sebuah lokasi yang memiliki alamat tersebut.Dan
alamat //0 pasti terletak antara //1 dan ///.ilai dari alamat inilah yang di
tampilkan olehpointer.
3. Bentuk umumpointerdalam bahasa ##
4ipe data pointer mendefinisikan tipe dari obyek yang ditunjuk oleh
pointer.-e5ara teknis, tipe apapun dari pointer dapat menunjukkan lokasi
6dimanapun) dalam memori.Bahkan operasipointerdapat dilaksanakan relatif
terhadap tipe dasar apapun yang ditunjuk. ontoh, ketika kita mendeklarasikan
pointer dengan tipe int%, compiler akan menganggap alamat yang ditunjuk
menyimpan nilai integer $ walaupun sebenarnya bukan 6sebuah pointer int%
selalu menganggap bahwa ia menunjuk ke sebuah obyek bertipe integer, tidak
peduli isi sebenarnya). 7arenanya, sebelum mendeklarasikan sebuah pointer,
pastikan tipenya sesuai dengan tipe obyek yang akan ditunjuk.
8. !perator yang digunakan padapointerPadapointerterdapat beberapa operator yang dapat di gunakan yakni "
. !perator alamat yang
dilambangkan dengan symbol &'( adalah merupakan operator yang
mengembalikan alamat dari operandnya. Di mana operator ini
menunjukan alamat dari suatu variable .
2. !perator reference yang di
lambangkan dengan & % &adalah operator yang menunjukan isi nilai dari
variable yang di tunjukpointer.
5. Pemanfaatan Pointer
Praktikum algoritma dan pemrograman 2016 Modul V - 2
Type *variable nama
x = 7;y = &x; // operator alamat
y = 0x6a2F242c // alamat variable x
x = 7;y = &x;*y = 7 // *y = isi dari alamat x
-
7/26/2019 Modul v - Pointer
3/21
Modul V Pointer
!perasi PointeruntukArray
9lemen array dapat diakses dengan menggunakan pointer, alasan
mengapa suatu arraydapat diakses dengan menggunakanpointeradalah untuk
ke5epatan proses program. :ika pengaksesan elemen$elemen array dilakukan
se5ara urut, penggunaanpointerakan menghasilkan proses program yang lebih
5epat dibandingkan dengan menggunakan indeks.
;kan tetapi jika pengaksesan elemen$elemen arraymenggunakan rumus$
rumus tertentu yang rumit untuk menunjukkan urutan$urutan elemennya, maka
penggunaan indekslebih disukai, karena penggunaanpointerakan lebih rumit.
Program berikut pengaksesan elemen$elemen arraymenggunakanpointer
o Pointer aritmatika
Pointerdapat berperan sebagai operand untuk operasi aritmatika , situasi
ini lebih sering di kenal dengan nama pointeraritmatika. :ika kita mempunyai
variable ; yang bertipe arrayyang berisi lima elemen dari tipe integermaka
untuk mengakses elemen arraytersebut kita juga dapat gunakanpointer.
#inclde !stdio"$#inclde !strin%"$#inclde !iostream"$#inclde !malloc"$void main' (
int *);) = int *' mallocsieo+int'';i+ ) == ,-..'(
cot!!emori Tida1 1p333; else (
cot!!Variable )50 menn1 pada alamat = ;print+p8)';cot!!endl;cot!!Variable )59 menn1 pada alamat = ;
print+p8)59';cot!!endl;
Praktikum algoritma dan pemrograman 2016 Modul V - 3
#inclde !iostream"$
void main'(intx:
-
7/26/2019 Modul v - Pointer
4/21
Modul V Pointer
cot!!Variable )52 menn1 pada alamat = ;print+p8)52';cot!!endl;cot!!Variable )5 menn1 pada alamat = ;
print+p8)5';cot!!endl;cot!!Variable )54 menn1 pada alamat = ;print+p8)54';cot!!endl;
o Pointer dan string
Pointer dapat juga digunakan untuk menampilkan sebuah kata atau kalimat
misalnya car*[email protected], maksudnya adalah mengalokasikan ptokoh sebagai
variable pointer yang menunjuk ke data bertipe char dan menempatkan konstantastring&@AF( ke suatu lokasi di memori komputer
#inclde !stdio"$#inclde !strin%"$#inclde !iostream"$#inclde !conio"$
void main'(car *?;[email protected];+orint i=0; i!; i55'(
cot!!,ilai variable ?5!!i!!' =
B!!*?5i'!!B berada pada alamat = ;print+p8?5i'';cot!!endl;
cot!!endl;
+or int =0; !; 55'(cot!!,ilai variable ?:!!!!< = B!!?:
berada pada alamat = ;print+p8 &?:
-
7/26/2019 Modul v - Pointer
5/21
Modul V Pointer
#inclde !conio"$
strct maasisCa(
car nim:90 ;cin$$?5i'E$nim;cot!!,AA > ;%ets?5i'E$nama';cot!!D? > ;cin$$?5i'E$D?;
cot!!endl;cot!!asil>!!endl!!endl;+ori=0;i!=mE9;i55'(
cot!!,D > !!?5i'E$nim!!endl;cot!!,AA > !!?5i'E$nama!!endl;cot!!D? > !!?5i'E$D?!!endl;cot!!endl;
%etc';
o Penghapusanpointer
Dimana saat setelah memorykita alokasikan untuk keperluan tertentu sudah
tidak di gunakan lagi, maka sebaiknya kita mendealokasikan memorytersebut.
-
7/26/2019 Modul v - Pointer
6/21
Modul V Pointer
ontoh "
#inclde !iostream"$
#inclde !conio"$
void main'(clrscr';void *ptr;int vint=0;+loat v+l=9";ptr = &vint;cot!!,ilai y% ditn1 ole ptr > ;
cot!!*int *'ptr!!endl;ptr = &v+l;cot!!,ilai y% ditn1 ole ptr > ;
cot!!*+loat *'ptr!!endl;
%etc';
Praktikum algoritma dan pemrograman 2016 Modul V - 6
-
7/26/2019 Modul v - Pointer
7/21
Modul V Pointer
C. PermasalahanBuatlah program sederhana menggunankanpointeruntuk melakukan perhitungan
pada matriks sebagai berikut". Penjumlahan matriks2. Pengurangan matriks3. 4ranspose matriks
Scriptprogram penyelesaian masalah "
#inclde !iostream$#inclde !conio"$
int main'( car lan%;
int men;
int **matri1sA = neC int*:
-
7/26/2019 Modul v - Pointer
8/21
Modul V Pointer
( cot!!**matri1sA5i'5'; cot!!It;
cot!!endl;
cot!!Inatri1s H > In; +orint i=0;i!;i55' ( +orint =0;!;55' ( cot!!**matri1sH5i'5'; cot!!It; cot!!endl;
do ( cot!!In================================!!endl; cot!!Jperasi matri1s yan% ditaCar1an !! endl; cot!!9" ?enmlaan atri1s !! endl; cot!!2" ?en%ran%an atri1s !! endl; cot!!" Transpose atri1s !! endl; cot!!Jperasi yan% in%in dila11an> ; cin$$men; cot!!In================================;
i+men==9'
( cot!!Inasil penmlaan matri1s A dan matri1sH > In; +orint i=0;i!;i55' ( +orint =0;!;55' ( cot!!**matri1sA5i'5'5**matri1sH5i'5''; cot!!It; cot!!endl;
i+men==2' ( cot!!Inasil pen%ran%an matri1s A dan matri1sH > In; +orint i=0;i!;i55' ( +orint =0;!;55' ( cot!!**matri1sA5i'5'E**matri1sH5i'5''; cot!!It;
Praktikum algoritma dan pemrograman 2016 Modul V - 8
-
7/26/2019 Modul v - Pointer
9/21
Modul V Pointer
cot!!endl;
i+men==' ( cot!!Inasil transpose matri1s A > In; +orint i=0;i!;i55' ( +orint =0;!;55' ( cot!!**matri1sA5'5i'; cot!!It; cot!!endl;
cot!!Inasil transpose matri1s H > In; +orint i=0;i!;i55' ( +orint =0;!;55' ( cot!!**matri1sH5'5i'; cot!!It; cot!!endl; cot!!In.a11an operasi lainK/,'> ;cin$$lan%;
Cilelan%==ByBLLlan%==BKB'; %etc';
Praktikum algoritma dan pemrograman 2016 Modul V - 9
-
7/26/2019 Modul v - Pointer
10/21
Modul V Pointer
4ampilan setelah di=run"
Penjumlahan
Praktikum algoritma dan pemrograman 2016 Modul V - 10
-
7/26/2019 Modul v - Pointer
11/21
Modul V Pointer
Pengurangan
Praktikum algoritma dan pemrograman 2016 Modul V - 11
-
7/26/2019 Modul v - Pointer
12/21
Modul V Pointer
4ranspose
Praktikum algoritma dan pemrograman 2016 Modul V - 12
-
7/26/2019 Modul v - Pointer
13/21
Modul V Pointer
Flowchart
Praktikum algoritma dan pemrograman 2016 Modul V - 13
-
7/26/2019 Modul v - Pointer
14/21
Modul V Pointer
D. ANALISA
#inclde !iostream"$
#inclde !conio"$
Script di atas merupakan deklarasi file header dan variable
static.Dncldemaksudnya memasukkan file headerke dalam program. File header
merupakan library dari statement yang akan digunakan dalam program agar
statement statement tersebut dapat di kenali oleh program. inclde
!iostream"$ file header yang berfungsi untuk mendeklaarasikan McinN dan
McotN dimana statement ini berfungsi sebagai input output program. inclde!conio"$ file header yang berfungsi untuk mendeklarasikan M%etc'N
dimana statement ini berfungsi untuk menampilkan hasil dari program setelah
program di compiledan di jalankan.
Dnt main'(
Mint main'Nmerupakan fungsi utama dari program yang dimana fungsi inilahyang pertama kali diba5a atau diproses oleh program. ;dapun fungsi diatas tidak
memiliki nilai balik atau nilai balik bernilai MintNmerupakan tipe data untuk fungsi
utama dengan tipe data intrger.
car lan%;int men;
Scriptdi atas merupakan pendeklarasian adanya fungsi$fungsi dari >ariabel tersebut
di dalam program yang akan di eksekusi yang dimana >ariabel ulang dengan tipe
data karakter dan meniu dengan tipe data interger.
int **matri1sA = neC int*:
-
7/26/2019 Modul v - Pointer
15/21
Modul V Pointer
+orint i=0;i!;i55'(
matri1sH:i
-
7/26/2019 Modul v - Pointer
16/21
Modul V Pointer
setiap kolom dalam baris tersebut. Di dalam perulangan tersebut terdapat perintah
cot!!as11an nilai pada matri1s H baris 1eE!!i59!!
1olom 1eE!!59!! = ;yang digunkan untuk menampilkan pernyataan
seperti &Masukkan nilai pada matriks B baris ke$ kolom ke$ * ( sedangkan
cin$$**matri1sA5i'5'; nt1 memasukkan data ke dalam
matri1sA dengan >ariabel i sebagai indeks untuk baris matriks dan >ariable j
sebagai indeks untuk kolom matriks"
cot!!Inatri1s A > In;+orint i=0;i!;i55'(
+orint =0;!;55' (
cot!!**matri1sA5i'5'; cot!!It;cot!!endl;
cot!!Inatri1s H > In;+orint i=0;i!;i55'(
+orint =0;!;55'
(cot!!**matri1sH5i'5';
cot!!It;
cot!!endl;
Scriptdi atas digunakan untuk menampilkan data yang ada di matri1sA dan
matri1sHdengan 5ara yang sama pada saat memasukkan data yaitu dengan
menggunkan perulangan di dalam perulangan dengan >ariabeli sebagai indeks
untuk baris matriks dan>ariabelsebagai indeks untuk kolom matriks"
do ( cot!!In================================!!endl; cot!!Jperasi matri1s yan% ditaCar1an !! endl; cot!!9" ?enmlaan atri1s !! endl; cot!!2" ?en%ran%an atri1s !! endl; cot!!" Transpose atri1s !! endl; cot!!Jperasi yan% in%in dila11an> ; cin$$men; cot!!In================================;
Praktikum algoritma dan pemrograman 2016 Modul V - 16
-
7/26/2019 Modul v - Pointer
17/21
Modul V Pointer
Script diatas merupakan fungsi perulangan dari do Cile yang dimana akan
keluaran yang di tampilkan dari fungsi 5out tersebut
i+men==9' ( cot!!Inasil penmlaan matri1s A danmatri1s H > In; +orint i=0;i!;i55' ( +orint =0;!;55' ( cot!!**matri1sA5i'5'5**matri1sH5i'5''; cot!!It; cot!!endl;
Script di atas merupakan script dari statement mengontrol sebuah kondisi.
i+men==9'fungsi tersebut menyatakan bahwa menu pertama adalah sebuah
sistem penjumlahan dari matrik.
i+men==2' ( cot!!Inasil pen%ran%an matri1s A dan matri1sH > In; +orint i=0;i!;i55' ( +orint =0;!;55' ( cot!!**matri1sA5i'5'E**matri1sH5i'5''; cot!!It; cot!!endl;
Script di atas merupakan script dari statement mengontrol sebuah kondisi.
i+men==2'fungsi tersebut menyatakan bahwa menu kedua adalah sebuah
sistem pengurangan dari matrik.
Praktikum algoritma dan pemrograman 2016 Modul V - 17
-
7/26/2019 Modul v - Pointer
18/21
Modul V Pointer
i+men==' ( cot!!Inasil transpose matri1s A > In;
+orint i=0;i!;i55' ( +orint =0;!;55' ( cot!!**matri1sA5'5i'; cot!!It; cot!!endl;
cot!!Inasil transpose matri1s H > In; +orint i=0;i!;i55' (
+orint =0;!;55' ( cot!!**matri1sH5'5i'; cot!!It; cot!!endl; cot!!In.a11an operasi lainK/,'> ;cin$$lan%;
Script di atas merupakan script dari statement mengontrol sebuah kondisi.
i+men=='fungsi tersebut menyatakan bahwa menu ketiga adalah sebuah
sistem transpose dari matrik.
Oetc ';
@ungsi ini merupakan fungsi penjeda atau penutup untuk menghentikan program
yang berjalan. 4anda berfungsi untuk menghentikan program yang telah dibuat.
Dimana pada pembuka di awali dengan tanda A dan di akhiri .
E. Kesimulan
Praktikum algoritma dan pemrograman 2016 Modul V - 18
-
7/26/2019 Modul v - Pointer
19/21
Modul V Pointer
!. Pada per5obaan yang telah dlakukan dapat diketahui bahwa dengan pointerdapat
dideklarasikan menjadi suatu array yang bertipe sama dengan tipe pointertersebut
dimana jumlah elemen dari arraytersebut dapat ditentukan.
". Pemanggilan data yang telah disimpan dalam suatu arrayyang berasal dari sebuah
pointer dapat dilakukan dengan membuat suatu perulangan yang didalamnya
terdapat pemanggilan data daripointertersebut dan disetiap perulangan alamat data
yang dipanggil ditambah dengan jumlah perulangan yang telah dilakukan.
#. Pada per5obaan yang telah dilakukan pointer yang digunakan berdimensi dua
sehingga arrayyang terbentuk adalah array dua dimensi.
$. Denganpointerdapat dilakukan suatu pemindahan data di antara fungsi yang berbeda
yang disebut sebagai passing by referencedimana jika data tersebut dirubah diluar
fungsi utama maka data pada fungsi utama juga akan ikut berubah.
1. @ungsi pointer"
Mengirimkan &Parameter yang berupa >ariabel( ke dalam fungsi, artinya nilai
>ariabel bisa diubah di dalam fungsi.
Cntuk membuat >ariabel D;M- 6Bukan >ariabel -tatis)
penggunaan function pointerpada ## dibatasi, yaitu function pointer tidak
boleh menunjuk pada fun5tion yang berada dalam sebuah class 6class
member function) ke5uali functiontersebut berjenis static.
0. Pemnfaatan Pinter"
!perasi PointeruntukArray
9lemen arraydapat diakses dengan menggunakanpointer, alasan mengapa
suatu arraydapat diakses dengan menggunakanpointeradalah untuk ke5epatan
proses program. :ika pengaksesan elemen$elemen arraydilakukan se5ara urut,
penggunaan pointerakan menghasilkan proses program yang lebih 5epat
dibandingkan dengan menggunakan indeks.
;kan tetapi jika pengaksesan elemen$elemen array menggunakan rumus$
rumus tertentu yang rumit untuk menunjukkan urutan$urutan elemennya, maka
penggunaan indekslebih disukai, karena penggunaanpointerakan lebih rumit.
Program berikut pengaksesan elemen$elemen arraymenggunakanpointer.
o Pointer aritmatika
Praktikum algoritma dan pemrograman 2016 Modul V - 19
-
7/26/2019 Modul v - Pointer
20/21
Modul V Pointer
Pointerdapat berperan sebagai operand untuk operasi aritmatika , situasi ini lebih
sering di kenal dengan namapointeraritmatika. :ika kita mempunyai variable ; yang
bertipe arrayyang berisi lima elemen dari tipe integermaka untuk mengakses elemen
arraytersebut kita juga dapat gunakanpointer.
o Pointer dan string
Pointer dapat juga digunakan untuk menampilkan sebuah kata atau kalimat
misalnya car*[email protected], maksudnya adalah mengalokasikan ptokoh sebagai
variable pointer yang menunjuk ke data bertipe char dan menempatkan konstanta
string&@AF( ke suatu lokasi di memori 5omputer.
o Pointerdan tipe data struktur
-eperti halnyapointeruntuk variable biasa yang menunjukkan alamat letak dari
nilai variable nya,pointeruntuk struktur juga menunjukkan alamat letak dari variable
strukturnya. Pointeruntuk struktur juga dideklarasikan se5ara sama dengan variable
pointerbiasa, yaitu dengan menggunakan asteriskdi muka nama variable pointernya.
DA%TAR PUSTAKA
Praktikum algoritma dan pemrograman 2016 Modul V - 20
-
7/26/2019 Modul v - Pointer
21/21
Modul V Pointer
;nonim,2E0. Modul Praktikum Pemrogramman dan 7onputasi Dasar. Faboratorium
7omputer dan :aringan. :urusan teknik elektro. Cni>ersitas Mataram
-halhuddin, M. G Hosa ;. -. !"elaar Pemrograman #engan "ahasa $%% #an &ava
#ari 'ol (enadi Andal), nformatika G Bandung, 2EE/
7adir, ;bdul &Pemrograman $%%(, ;ndi !ffset G :ogja,2EE8
http"www.5plusplus.5om
H.