Upload
nur-kholifah-hidayah
View
295
Download
7
Embed Size (px)
Citation preview
8/19/2019 Laporan Praktikum Dasar Pemrograman Komputer Modul 8
1/16
LAPORAN PRAKTIKUM VIII
POINTER
Disusun untuk Memenuhi Matakuliah Praktikum Dasar Pemrograman C++
Dibimbing oleh Bpk. Wahyu Sakti G.I
Oleh:
Nur Kholifah Hidayah
120534400!1
"1 PTE#12 O$$ %
UNIVER"ITA" NE&ERI MALAN&
$AKULTA" TEKNIK
'URU"AN TEKNIK ELEKTRO
PRO%I PEN%I%IKAN TEKNIK ELEKTRO
APRIL 2014
POINTER
8/19/2019 Laporan Praktikum Dasar Pemrograman Komputer Modul 8
2/16
A( TU'UAN
Setelah mempelaari bab ini !iharapkan akan mampu:
". Mengenal !an memahami penggunaan pointer !alam listing program.#. Membuat program se!erhana !engan menerapkan konsep pointer.
)( %A"AR TEORI
Dengan menggunakan pointer yang benar$ an!a !apat menyusun sebuah
program yang berkemampuan tinggi. Sebaliknya sedikit saja kesalahan
dalam menggunakan pointer akan mengakibatkan kesalahan fatal pada
program anda. %arena pointer !apat langsung menunukan pa!a lokasi
memori$ ika lokasi yang !itunuk salah$ berarti !ata yang !iambil uga akan
salah$ !an su!ah tentu program an!a akan mena!i salah uga.
O*+ra,or d+f+r+-.+ / ampersand sign
Operator ini biasa !isebut !engan address of atau operator alamat. Denganmenggunakan operator !e&eren'e (ariable akan menghasilkan alamat lokasi
memori
O*+ra,or r+f+r+-.+ /)
Operator ini biasa !isebut (alue pointed by. Dengan menggunakan
operator ini akan !ihasilkan nilai yang bera!a pa!a suatu alamat memori.
%+larai Varia+l Poi-,+r
*ariabel pointer uga harus !i!elarasikan terlebih !ahulu sebelum mulai
!igunakan bentuk umum 'ara men!eklarasikan (ariabel pointer a!alah:
ipe (ariabel sama !engan tipe yang !ikenal oleh (ariabel biasa$ misalnya
int$ &loat$ 'har !an sebagainya. ,ama (ariabel pointer uga mengikuti
ketentuan nama (ariabel biasa. -ang membe!akan (ariabel pointer !engan
(ariabel biasa !engan menggunakan tan!a asterisk )/ !i!epan nama
(aribel pa!a 0aktu !eklarasi.
o-,oh 6
Int *ptr_x;
Ptr merupakan (ariabel pointer$ karena pa!a !eklarasi !igunakan tan!a )/
!i!epan nama (ariabelya.
Pengertian !alam !eklarasi (ariabel pointer memiliki perbe!aan !engan
(ariabel biasa$ ika !alam !eklarasi (ariabel biasa:
Float x;
1rtinya (ariabel pointer ptr23 akan menunukkan pa!a (ariabel yang bertipe
&loat. 4a!i !isini bukan ptr235nya yang bertipe &loat$ melainkan (ariabel lain
yang !itunuk yang bertipe &loat.
o-,oh6 !alam pen!eklarasian yang salah :float y;
Int *ptr_y;
8/19/2019 Laporan Praktikum Dasar Pemrograman Komputer Modul 8
3/16
Benar :
Float y;
Float *ptr_y;
Dan untuk men!eklarasikan sebuah (ariable y yang bertipe integer !engan
(ariabel pointernya yy a!alah: Int y;
Int *yy; !apat !ise!erhanakan int y,*yy;
63 : Men'etak ,ama 1lamat Dengan pointer
I-*u, da,a M+lalui Poi-,+r
1n!a !apat uga mengimputkan suatu !ata ke!alam (ariabel !engan !engan
menggunankan pointernya$ sebagai 'ontoh tinaulah program !iba0ah ini:
Int x;
Int *ptr_x;
Ptr_x=&x;
Printf(”inputkan nilai x ”!;
"#anf(”$d”,ptr_x!;
Ingat7 Menginputkan !ata !engan s'an&/ membutuhkan alamat !ari
(ariabel yang bersangkutan. %arena ptr23 merupakan alamat !ari (ariabel 3$ maka ptr23
!apat !igunakan !alam s'an&/. 4a!i pernyataan:
"#anf(”$d”,ptr_x!;
Sama !engan:
"#anf(”$d”,&x!;
Dimana &x uga menunukkan alamat !ari (ariabel x.
M+7+ria- ua,u -ilai *ada ua,u 8aria+l l+9a, *oi-,+r
,ilai suatu (ariabel !apat uga !iberikan le0at pointernya$ nilai yang
!iberikan ini !apat berbentuk kostanta ataupun ekspresi aritmatika.
o-,oh6
o-,oh 6 Memberikan suatu (ariabel melalui pointer
8/19/2019 Laporan Praktikum Dasar Pemrograman Komputer Modul 8
4/16
Poi-,+r da- fu-:i
Pengiriman !ata !ari sebuah &ungsi ke&ungsi lain !apat uga
!ilakukan !engan bantuan pointer$ bila pointer !igunakan$ maka !ata yang
!ikirim harus berupa alamat (ariabel$ bukan lagi nama (ariabel.
o-,oh;16 Mengirimkan !ata kesuatu &ungsi !engan menggunakan pointer.
Ket: )alm2'8)alm2a))alm2b9
disini turbo # langsung mengeta%ui ba%a tanda (*! mana yang berarti
pointer dan mana yang berarti tanda kali'
o-,oh;26 %ombinasi antara pengguna (ariabel biasa !an pointer
o-,oh6 !ua !imensi pointer/
Contoh ":
8/19/2019 Laporan Praktikum Dasar Pemrograman Komputer Modul 8
5/16
asil %ompilasi:
Contoh #:
Mula mula (ariabel tglahir !i isi !engan tanggal $ bulan $ tahun melalui
pengaksessan. *ariable pointer yang menunuk alamat array tglahir . ;ntuk
menampilkan tglahir < =. Melalui (ariable pointer !igunakan 'ara ) tgl +i/atau bisa uga !engan )tgl++. Setelah itu !ialankan maka hasil eksekusi
akan !itampilkan :
La,iha- Pra,iu7 1
P+7ro:ra7a- .?".ri*, *ro:ra7 :
#include char*nama_bulan(int n);main(){int bl;printf("Bulan(1..*)");scanf("!d"bl);printf("!s$n"nama_bulan(bl));%char*nama_bulan(int n){static char*bulan&'{
8/19/2019 Laporan Praktikum Dasar Pemrograman Komputer Modul 8
6/16
"ode Bulan alah""+anuari"",ebruari""-aret""ppril""-ei""+uni""+uli""/ustus""eptember""0tober""2opember""3esember"%;
return((n1)5bulan&6'7bulan&n');%
Ou*,u, Pro:ra7 :
Al:ori,7a :
". Mulai.
#. Masukkan bilangan bulan "@#/
A. Cetak hasil.scanf("!d"bl);
printf("!s$n"nama_bulan(bl));. 4ika inputan bilangan selain "5"#$ maka %o!e Bulan salah.
E. Cetah hasil.return((n1)5bulan&6'7bulan&n');
>. Selesai.
P+-=+laa- :
Program !iatas menggunakan &ile hea!er st!io karena menggunakan print&
!an s'an&. Menggunakan &ungsi main. Menggunakan tipe !ata string 'har$ 'har
!an int. Menggunakan operator FF$ . Menggunakan &ungsi return((n1)5
bulan&6'7bulan&n');$ yang artinya ika n bernilai "5"# maka bernilai benar
hasilnya
H4anuariH$HebruariH$HMaretH$H1pprilH$HMeiH$H4uniH$H4uliH$H1gustusH$HSeptemberH
$HOktoberH$H,opemberH$HDesemberHJ9$ ika lebih !ari "# atau kurang !ari " maka
bernilai salah !an hasilnya %o!e bulan salah.
La,iha- Pra,iu7 2
P+7ro:ra7a- .?
".ri*, *ro:ra7 :889:0:- -2=?@2 B2A :?:#include int misteri(const char *);main (){
char strin/&C6';printf("etian sebuah strin/ 7 ");scanf("!s"strin/);printf("!d$n" misteri(strin/));return 6;
%int misteri(const char *s){
int D6;
8/19/2019 Laporan Praktikum Dasar Pemrograman Komputer Modul 8
7/16
for(;*sEF$6F;sGG)GGD;return D;
%
Ou*,u, Pro:ra7 :
Al:ori,7a :
". Mulai.
#. %etikkan sebuah string.scanf("!s"strin/);printf("!d$n" misteri(strin/));return 6;
A. Cetak hasilint D6;for(;*sEF$6F;sGG)GGD;return D;
. Selesai.
P+-=+laa-> :
Program !iatas menggunakan &ile hea!er st!io karena menggunakan print&
!an s'an&. Menggunaan satu !imensi. Menggunakan tipe !ata integer$ string.
Menggunakan &ungsi main. Menggunakan &ungsi return ? !an return 3.
La,iha- Pra,iu7 3
P+7ro:ra7a- .?
".ri*, *ro:ra7 :#include #include int main()
{int aHiH defa deIi;int *aHiH1 *defa1 *deIi1;aHiHJK6C;defaaHiH;deIidefaG1;aHiH1aHiH;defa1defa;deIi1deIi;*aHiH1aHiH;*defa1defa;*deIi1deIi;cout
8/19/2019 Laporan Praktikum Dasar Pemrograman Komputer Modul 8
8/16
cout
8/19/2019 Laporan Praktikum Dasar Pemrograman Komputer Modul 8
9/16
*defa1defa;*deIi1deIi;
>. Memba'a:cout
8/19/2019 Laporan Praktikum Dasar Pemrograman Komputer Modul 8
10/16
{cout. Masukkan kata.
L. Cetak hasil pembalikkan kata.for(iPumlah O1;i>6;iOO)
8/19/2019 Laporan Praktikum Dasar Pemrograman Komputer Modul 8
11/16
{cout :
Program !iatas menggunakan &ile hea!er iostream karena menggunakan'out !an 'in$ menggunakan 'onio karena menggunakan get'h$ menggunakan st!io
sebagai hea!er stan!ar! an menggunakan &ungsi gets kata/. Menggunakan tipe
!ata integer !an 'har. Menggunakan pointer 'har balik. Menggunakan array satu
!imensi. Menggunakan perulangan !o 0hile !an &or. Menggunakan &ungsi get'h
!an gets kata/.
$lo9.har, :
Tu:a Pra,iu7 2
P+7ro:ra7a-
8/19/2019 Laporan Praktikum Dasar Pemrograman Komputer Modul 8
12/16
Na7a Pro:ra7 : Menampilkan permutasian nPr
)ahaa P+7ro:ra7a7 : C++
o7*il+r : *isual C++ >.?
".ri*, *ro:ra7 :
#include #include Qoid duaali(int *p int *R int *r);
main() 88,un/si @tama di SGG{
int a b c;
cout
8/19/2019 Laporan Praktikum Dasar Pemrograman Komputer Modul 8
13/16
Al:ori,7a :
". Mulai Program
#. Deklarasi ungsi
A. Inisialisasi (ariabel
. Input nilai a$ b$ !an '
E. Pemanggilan nilai !engan menggunakan pointer
>. Operasi perhitungan
L. Output
. Selesai
.
P+-=+laa-> :
Program menyertakan hea!er iostream.hstring.h. *ariabel pa!a
program menggunakan tipe !ata int. Program ini bertuuan untuk menmpilkan !ua
kali nilai a0al menggunakan pointer. Pen!eklarasian &ungsi !uakali terlebih
!ahulu. Setelah itu masuk &ungsi utama$ men!eklarasikan (ariable yang a!a.
Inputkan nilai a$b$'. ;ntuk men!apatkan hasil kita memanggil &ungsi !engan 'ara
'all by re&eren'e yang su!ah !i elaskan pa!a mo!ul sebelum ini. Prosesnya
&ungsi utama mengirimkan alamat5alamat memori suatu &ariabel untuk menuu ke
&ungsi !uakali. Di &ungsi !uakali kita mengambil nilai5nilai yang a!a !alam
alamat memori pa!a masing5masing (ariable tersebut. Setelah itu p!a &ungsi
!uakali melakukan proses perhitungan !engan masing5masing mengkalikan !ua.
Setelah itu mengirimkan nilainya ke alamat memori lagi. Proses output !an selesai
.
8/19/2019 Laporan Praktikum Dasar Pemrograman Komputer Modul 8
14/16
$lo9.har, :
8/19/2019 Laporan Praktikum Dasar Pemrograman Komputer Modul 8
15/16
KE"IMPULAN
". Pointer merupakan sebuah (ariabel yang berisi alamat !ari (ariabel lain.
Suatu pointer !imaksu!kan untuk menunukkan ke suatu alamat memori
sehingga alamat !ari suatu (ariabel !apat !iketahui !engan mu!ah.
#. er!apat !ua ma'am operator pointer yaitu:
5 Operator !e&eren'e /
5 Operator re&eren'e )/
A. Di!alam men!eklarasikan suatu (ariabel harus pa!a lokasi yang pasti
!i!alam penggantian memori. ;mumnya kita ti!ak !apat menentukan
!imana (ariabel akan !itempatkan. erka!ang se'ara otomatis !ilakukan
oleh 'ompiler !an system operasi yang se!ang akti&$ tetapi sesekali system
operasi akan memberikan banyak alamat yang kita ti!ak mengetahui
!imana (ariabel !itempatkan. al ini !apat !ilakukan !engan memberikan
suatu i!enti&ier a7*+ra-d i:-/ !i!epan nama (ariabel$ operator ini
biasa !isebut !engan addr+ of atau operator alamat. Dengan
menngunakan menggunakan operator !e&eren'e / ini$ suatu (ariabel
akan menghasilkan alamat lokasi memori.
. Dengan menggunakan operator kita !apat mengakses se'ara langsung nilai
yang ter!apat !i!alam (ariabel yang berpointer$ hal ini !apat !ilakukan
!engan menambahkan i!enti&ier asterisk )/$ agar !apat menteremahkan
nilai sebenarnya !ari suatu (ariabel. Operator ini biasa !isebut !engan
8alu+ *oi-,+d y. Dengan menggunakan operator re&eren'e )/ ini$
menghasilkan nilai yang bera!a pa!a suatu alamat memori.
E. Suatu pointer !apat !i!eklarasikan se'ara konstanta atau se'ara tetap ti!ak
!apat !iubah. ;ntuk men!eklarasikan pointer se'ara konstanta !engan
memberikan kata 'onst !i!epan nama konstanta.
>. Pointer !apat pula menunuk ke pointer lainnya. Di!alamnya
pen!eklarasiannya$ hanya menambahkan pointer re&eren'e )/ pa!a
(ariabel yang akan !itunuk.
L. Pointer pa!a array$ konsepnya a!alah banyak lon'atan !ari pointer satu ke
pointer yang lain. %arena se'ara internal array uga menyatakan alamat$
yaitu pengenal array sama !engan alamat pa!a elemen pertama$ pa!a
array.
8/19/2019 Laporan Praktikum Dasar Pemrograman Komputer Modul 8
16/16
. Dengan menngunakan pointer yang benar$ !apat menyusun sebuah
program yang berkemampuan tinggi. Sebaliknya se!ikit saa kesalahan
!alam menggunakan pointer akan mengakibatkan kesalahan &atal pa!a
program tersebut.
N. Suatu pointer !imaksu!kan untuk menunukkan kesuatu alamat memori
sehingga alamat !ari suatu (ariabel !apat !iketahui !engan mu!ah.
%A$TAR RU'UKAN
". im 1sisten Dosen.#?"A.Mo!ul. Pointer .Malang:;ni(ersitas ,egeri
Malang.
#. %a!ir$ 1b!ul.#??A. Pemrograman ))' -ogyakarta:Penerbit 1,DI.