modul v - pointer

Upload: aan-junior

Post on 02-Mar-2018

316 views

Category:

Documents


2 download

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*pto1o@AF, 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 *?;?=@AF;+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*pto1o@AF, 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.