T0616 algoritma dan pemrograman 14 15
Download
1 / 27

T0616 ALGORITMA DAN PEMROGRAMAN (14-15) - PowerPoint PPT Presentation


  • 154 Views
  • Uploaded on

T0616 ALGORITMA DAN PEMROGRAMAN (14-15). SUBANDIJO UNIVERSITAS BINA NUSANTARA FAKULTAS ILMU KOMPUTER JAKARTA, 2005. DEFINISI POINTER. POINTER ADALLAH VARIABEL YANG NILAINYA ADALAH ALAMAT ( ADDRESS ) MEMORI VARIABEL LAIN.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' T0616 ALGORITMA DAN PEMROGRAMAN (14-15)' - lane-levy


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
T0616 algoritma dan pemrograman 14 15

T0616 ALGORITMA DAN PEMROGRAMAN (14-15)

SUBANDIJO

UNIVERSITAS BINA NUSANTARA

FAKULTAS ILMU KOMPUTER

JAKARTA, 2005

T0616 - Algoritma dan Pemrograman


Definisi pointer
DEFINISI POINTER

  • POINTER ADALLAH VARIABEL YANG NILAINYA ADALAH ALAMAT (ADDRESS) MEMORI VARIABEL LAIN.

  • MISAL V ADALAH VARIABEL YANG MEWAKILI DATA. MAKA KOMPILATOR AKAN MENENTUKAN ALAMAT SEL MEMORI UNTUK V YAITU &V. JIKA ALAMAT V DIBERIKAN KEPADA PV MAKA PV = &V

  • PV DISEBUT POINTER KE V KARENA IA MENUN-JUK LOKASI YANG DITEMPATI OLEH V.

ALAMAT V

NILAI V

PV

V

T0616 - Algoritma dan Pemrograman


Definisi pointer1
DEFINISI POINTER

  • DATA YANG DIWAKILI OLEH V DIAKSES MENG-GUNAKAN OPERATOR * YANG DITULIS DI DEPAN PV SEHINGGA *PV DAN V MEWAKILI DATA YANG SAMA.

  • ISI YANG DITUNJUK OLEH PV ADALAH *PV (= V).

  • * DISEBUT CONTENT OF OPERATOR. IA JUGA DISEBUT SEBAGAI INDIRECTION OPERATOR KARENA DAPAT DIGUNAKAN UNTUK MENGISI NILAI SUATU VARIABEL SECARA TIDAK LANGSUNG YAITU MELALUI POINTER.

  • & DISEBUT ADDRESS OF OPERATOR

T0616 - Algoritma dan Pemrograman


Manfaat pointer
MANFAAT POINTER

  • MENGIRIM KEMBALI LEBIH DARI SATU NILAI.

  • MENGOLAH ARRAY DENGAN CARA YANG LEBIH EFISIEN.

  • MEMBENTUK TIPE DATA YANG LEBIH KOM-PLEKS (LINKED-LIST, TREE, GRAPH).

  • MENGHASILKAN INFORMASI TENTANG MEMORI.

ALAMAT V

NILAI V

PV

V

T0616 - Algoritma dan Pemrograman


Deklarasi dan inisialisasi pointer
DEKLARASI DAN INISIALISASI POINTER

  • SINTAKS

    • <DATA_TYPE> *PTR_NAME ;

  • CONTOH

    • INT *PTR;

  • POINTER DAPAT DIBERI NILAI AWAL ALAMAT VARIABEL LAIN. IA JUGA DAPAT DIBERI NILAI 0, DISEBUT NULL POINTER YANG BIASA DIGUNA-KAN UNTUK MENGAKHIRI LINKED-LIST.

    • #DEFINE NULL 0

    • INT U, V;

    • INT *PV = &V, *PU = NULL;

  • T0616 - Algoritma dan Pemrograman


    Cara penulisan pointer
    CARA PENULISAN POINTER

    • int *p; OLD C

    • int * p; CLARITY

    • int* p; HAS A TYPE *int

    T0616 - Algoritma dan Pemrograman


    Operator dan deskripsi pointer
    OPERATOR DAN DESKRIPSI POINTER

    • SIMBOL OPERATOR

      • CONTENT OF OPERATOR *

      • ADDRESS OF OPERATOR &

    • DESKRIPSI

      • SIMBOLIK PV  V

      • LOGIKAL PV MENUNJUK V

      • AKTUAL PV BERISI ALAMAT V, YAITU PV = &V

    T0616 - Algoritma dan Pemrograman


    Contoh 1
    CONTOH 1

    main() {

    int u1, u2, v = 3;

    int *pv;

    u1 = 2 * (v + 5);

    pv = &v;

    u2 = 2 * (*pv + 5);

    printf(“\nu1 = %d u2 = %d”, u1, u2);

    }

    u1=16, u2=16

    T0616 - Algoritma dan Pemrograman


    Contoh 2
    CONTOH 2

    main() {

    int v = 3;

    int *pv = &v;

    printf(“\n*pv = %d v = %d”, *pv, v);

    *pv = 0;

    printf(“\n*pv = %d v = %d”, *pv, v);

    }

    *pv=3, v=3

    *pv=0, v=0

    T0616 - Algoritma dan Pemrograman


    Contoh 3
    CONTOH 3

    main() {

    int u = 3, v;

    int *pu, *pv;

    pu = &u;

    v = *pu;

    pv = &v;

    printf(“\nu=%d &u=%d pu=%x *pu=%d”,u,&u,pu,*pu);

    printf(“\nv=%d &v=%d pv=%x *pv=%d”,v,&v,pv,*pv);

    }

    JIKA V DISIMPAN DI F8C DAN U DISIMPAN DI F8E, APA KELUARAN PROGRAM DI SAMPING?

    T0616 - Algoritma dan Pemrograman


    Operasi pada pointer 1
    OPERASI PADA POINTER(1)

    • OPERAS HITUNG TIDAK BERLAKU DI POINTER KECUALI ‘-’ YANG DITAFSIRKAN SEBAGAI JARAK YANG MEMISAHKAN KEDUA ALAMAT. TIDAK ADA MAKNANYA ALAMAT DI TAMBAH ALAMAT.

    • POINTER BISA DITAMBAH ATAU DIKURANGI DENGAN NILAI INTEGER TERTENTU. MISALKAN PTR=PTR+1 DITAFSIRKAN SEBAGAI GESER POINTER SATU POSISI KE DEPAN.

    T0616 - Algoritma dan Pemrograman


    Operasi pada pointer 2
    OPERASI PADA POINTER(2)

    • POINTER BISA DI-ASSIGN KE POINTER LAIN. MISALNYA, PTR1=PTR2 DITAFSIRKAN SEBAGAI BERIKAN PTR2 KE PTR1 SEHINGGA KEDUA POINTER SEKARANG MENUNJUK KE ALAMAT YANG SAMA YAITU ALAMAT YANG SEBELUMNYA DITUNJUK OLEH PTR2.

    • POINTER BISA DIBANDINGKAN DENGAN POINTER LAIN. SEBAGAI CONTOH, IF(PTR1 < PTR2) ...

    T0616 - Algoritma dan Pemrograman


    Pointer ke pointer
    POINTER KE POINTER

    • char c = ‘x’;

    • char* pc = &c;

    • char** ppc = &pc;

    • char*** pppc = &ppc;

    • ***pppc = ‘X’;

    • pppcppcpcc

    x

    T0616 - Algoritma dan Pemrograman


    Transfer parameter
    TRANSFER PARAMETER

    • BY VALUE: YANG DIKIRIM KE FUNGSI LAIN ADALAH NILAI DATA (R-VALUE).

    • BY LOCATION/ADDRESS: YANG DIKIRIM KE FUNGSI LAIN ADALAH ALAMAT (L-VALUE).

    T0616 - Algoritma dan Pemrograman


    Contoh 4 by value
    CONTOH 4: BY VALUE

    void garis(char x) {

    int i;

    for(i=1; i<=10; i++) printf(“%c”, x);

    }

    main() {

    char c = ‘-’;

    garis( c );

    }

    T0616 - Algoritma dan Pemrograman


    Contoh 5 by location
    CONTOH 5: BY LOCATION

    void hitung(int x, int y, int *p, int *q) {

    *p = x + y;

    *q = x * y;

    }

    void main() {

    int x = 10, y = 5, p, q;

    hitung(x, y, &p, &q);

    printf(“x + y = %d, x * y = %d”, p, q);

    }

    T0616 - Algoritma dan Pemrograman


    Contoh 6 by value location
    CONTOH 6: BY VALUE/LOCATION?

    void tukar(char a, char b) {

    char c;

    c = a; a = b; b = c;

    }

    void main() {

    char x = ‘X’, y = ‘Y’;

    tukar(x, y);

    printf(“X = %c, Y = %c”, x,y);

    }

    PERTUKARAN DATA YANG DIHARAPKAN ANTARA X DAN Y TIDAK TERJADI. MENGAPA?

    T0616 - Algoritma dan Pemrograman


    Contoh 7 by value location
    CONTOH 7: BY VALUE/LOCATION

    #include<stdio.h>

    void f1(int u, int v) {

    u=0; v=0;

    printf(“\nDi dalam f1: u = %d, v = %d”, u, v);

    return 0;

    }

    void f2(int *pu, int *pv) {

    *pu=0; *pv=0;

    printf(“\nDi dalam f2: *pu = %d, *pv = %d”, *pu, *pv);

    return 0;

    }

    T0616 - Algoritma dan Pemrograman


    Contoh 7 by value location1
    CONTOH 7: BY VALUE/LOCATION

    void main() {

    int u=1, v=3;

    printf(“\nSebelum panggil f1: u = %d, v = %d”, u, v);

    f1(u,v);

    printf(“\nSesudah panggil f1: u = %d, v = %d”, u, v);

    printf(“\nSebelum panggil f2: u = %d, v = %d”, u, v);

    f2(&u,&v);

    printf(“\nSesudah panggil f2: u = %d, v = %d”, u, v);

    return 0;

    }

    T0616 - Algoritma dan Pemrograman


    Reference variabel
    REFERENCE VARIABEL

    • ONLY ON C++

    • VARIABEL REFERENCE ADALAH ALIAS ATAU SINONIM VARIABEL LAIN. JIKA VARIABEL LAIN DIUBAH MAKA VARIABEL REFERENCE JUGA BERUBAH, DAN SEBALIKNYA.

    • IA DIBENTUK DENGAN MENAMBAHKAN OPERATOR & DI TYPE SPECIFIER.

    • IA HARUS DIINISIALISASI.

    • CONTOH:

      • INT N = 33;

      • INT& R = N; //R ADALAH ALIAS DARI N

    T0616 - Algoritma dan Pemrograman


    Fungsi swap
    FUNGSI SWAP()

    • FUNGSI SWAP() BERIKUT AKAN BANYAK ANDA TEMUI DI SORT DATA.

      void swap(int& x, int& y) {

      int temp;

      x = temp;

      x = y;

      y = temp;

      }

    T0616 - Algoritma dan Pemrograman


    Call by value vs call by reference 1

    CALL BY VALUE

    int x;

    Parameter formal x adalah variabel lokal.

    Ia adalah duplikasi parameter aktual.

    Ia tidak dapat mengubah parameter aktual.

    Parameter aktual mungkin konstan, variabel atau ekspresi.

    Parameter aktual adalah read only.

    CALL BY REFERENCE

    int &x;

    Parameter formal adalah referensi lokal.

    Ia adalah sinonim parameter aktual.

    Ia dapat mengubah parameter aktual.

    Parameter aktual harus variabel.

    Parameter aktual adalah read-write.

    CALL BY VALUE VS CALL BY REFERENCE(1)

    T0616 - Algoritma dan Pemrograman


    Call by value vs call by reference 2

    int main() {

    int x=2, y=4;

    printf(“Sebelum sqByVa x:%d”,x);

    printf(“Nilai balik sqByVa : %d”,

    sqByVa(x));

    printf(“Sesudah sqByVa x:%d“,x);

    printf(“Sebelum sqByRe y:%d”,y); sqByRe(y);

    printf(“Sesudah sqByRe y:%d”,y);

    return 0;

    }

    int sqByVa(int a) {

    return a*a;

    }

    void sqByRe(int &yRe) {

    yRe *= yRe;

    }

    CALL BY VALUE VS CALL BY REFERENCE (2)

    ASUMSI: PROTOTIPE FUNGSI int sqByVa(int) DAN void sqByRe(int&) ADA DI ATAS MAIN()

    T0616 - Algoritma dan Pemrograman


    Dangling pointer
    DANGLING POINTER

    • UNINITIALIZED POINTER

      • FLOAT * P;

      • *P = 3.14159; // ERROR. NO STORAGE HAS // BEEN ALLOCATED FOR *P

  • DEALLOCATED POINTER

    • FLOAT* Q = NEW FLOAT(3.14159);

    • DELETE Q;

    • *Q = 2.71828; //ERROR. Q HAS BEEN //DEALLOCATED

  • TIDAK ADA DANGLING REFERENCE KARENA REFERENCE HARUS DIINISIALISASI SEDANGKAN POINTER TIDAK.

  • T0616 - Algoritma dan Pemrograman


    Pointer sebagai parameter

    void swap( int &a, int & b) {

    int temp;

    temp = a;

    a = b;

    b = temp;

    }

    int main() {

    int x=4, y=8;

    swap(x,y);

    printf(“%d %d”,x,y);

    return 0;

    }

    void swap( int * a, int * b) {

    int temp;

    temp = *a;

    *a = *b;

    *b = temp;

    }

    int main() {

    int x=4, y=8;

    swap(&x,&y);

    printf(“%d %d”,x,y);

    return 0;

    }

    POINTER SEBAGAI PARAMETER

    T0616 - Algoritma dan Pemrograman


    Pointer sebagai return value

    int *fungsi(int *p) {

    int i, im , m = 0;

    for(i=0; i<5; i++)

    if(*(p+i)>m) {

    m = *(p+i);

    im = i;

    }

    return(p+im);

    }

    main(){

    int a[] = {20, 40, 10, 50, 30};

    int *ptr;

    ptr = fungsi(a);

    printf(“ m = %3d”,*ptr);

    }

    POINTER SEBAGAI RETURN VALUE

    APA RETURN VALUE DARI *fungsi()?

    T0616 - Algoritma dan Pemrograman


    THE END

    “...ALL YOU NEED IS LOVE…”

    T0616 - Algoritma dan Pemrograman


    ad