laporan praktikum dasar pemrograman komputer modul 8

Upload: nur-kholifah-hidayah

Post on 07-Jul-2018

290 views

Category:

Documents


7 download

TRANSCRIPT

  • 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.