Struktur Data Pointer Oleh Lutfi Budi Ilmawan

Slides:



Advertisements
Presentasi serupa
POINTER.
Advertisements

Pemrograman Berorientasi Objek (2)
PERTEMUAN IV POINTER Pointer adalah suatu variabel penunjuk yang menunjuk pada suatu alamat memori komputer Pointer merupakan.
STRUKTUR DATA (5) Pointer dan Function
Teknik Pemrograman Terstruktur 2
Pointer Konsep Pemrograman.
Pointer.
PEMROGRAMAN SISTEM POINTER Pertemuan X. ALAMAT & POINTER Pointer sesungguhnya berisi alamat memory yang menyimpan data. Pointer sesungguhnya berisi alamat.
Pemrograman Terstruktur
Teknik Pemrograman (TEKPRO)
ARRAY/LARIK Sumber dari : imaru.files.wordpress.com/2008/02/array-struc-pointer.ppt.
POINTER
Pemrograman Terstruktur
Pointer Variabel pointer sering disebut sebagai variabel yang menunjuk obyek lain, karena variabel pointer atau pointer adalah variabel yang berisi alamat.
Algoritma & Struktur Data Pointer Evangs Mailoa.
STRUKTUR DATA (5) Pointer dan Function
Alokasi Memori Yuliana Setiowati.
Pointer Memory Dinamic.
Pemrograman Dasar Pointers.
Pointer Dr. Lily Wulandari.
POINTER (VAR.PENUNJUK)
STRUKTUR DATA Pointer dan Function
P O I N T E R. Merupakan sebuah variabel yang berisi alamat dari variabel lain. Suatu pointer dimaksudkan untu menunjukan ke suatu alamat memori sehingga.
Dasar Komputer & Pemrograman 2A (BAHASA C)
Bab 8 Pointer Riyanto Sigit Konsep Dasar Pointer  Variabel pointer sering dikatakan sebagai variabel yang menunjuk ke obyek lain  Variabel.
Pointer Pointer.
Pemrograman Berorientasi Obyek1 Sub Pokok Bahasan Pointer. Reference. Function Passing Parameter by Value, by Reference, by Pointer.
Pointer.
Konsep Pemrograman Politeknik Elektronika Negeri Surabaya 2006
POINTER.
Teknik Pemrog. Terstruktur 2
Tenia Wahyuningrum pointers Tenia Wahyuningrum
Pointer (Part 1).
TIPE DATA, VARIABEL, DAN OPERATOR
Tipe Data - Variabel Di dalam memprogram sering dilakukan penyimpanan nilai dalam suatu variabel (mis: a = b+c ). Terlebih dahulu dilakukan deklarasi variabel.
1 Pertemuan 1 Pengenalan Pemrograman Terstruktur C Matakuliah: H0112 – Pemrograman Bahasa Tingkat Tinggi Tahun: 2005/2006 Versi: xxx/2.
Struktur Data Linked List
Pemrograman Terstruktur
Tipe Data By Serdiwansyah N. A..
Elemen Dasar C Identifier :
Matakuliah : H0112 – Pemrograman Bahasa Tingkat Tinggi
Struktur Data Stack Oleh Lutfi Budi Ilmawan
Pertemuan 21 POINTER Bag.1 Dasar Pemrograman Renni Angreni, S.Kom.
Pointer TEE 2103 Algoritma dan Pemrograman Dosen: Abdillah, MIT
Struktur Data Tipe data & Struktur Data
Pointer, Array dan String
Struktur Data (Data Structure) – IS 2313
Pointer Variabel pointer sering disebut sebagai variabel yang menunjuk obyek lain, karena variabel pointer atau pointer adalah variabel yang berisi alamat.
POINTER (VAR.PENUNJUK)
Pointer Pertemuan 10 Bahasa C.
Pointer FARID WAJDI YUSUF.
Pointer Oleh : Sri Supatmi,S.Kom.
ALGORITMA DAN PEMROGRAMAN II
Tenia Wahyuningrum pointers Tenia Wahyuningrum
Algoritma dan Struktur Data
Algoritma dan Struktur Data
As’ad Djamalilleil Pointer dan Reference As’ad Djamalilleil
Linked List 6.3 & 7.3 NESTED LOOP.
Algoritma dan Struktur Data
Pertemuan 5 (Variabel dan konstanta) .:: Erna Sri Hartatik ::.
Struktur Data Khoiriya Latifa, M.Kom.
Pemrograman Terstruktur
Algoritma dan Struktur Data
Pointer Oleh : Sri Supatmi,S.Kom.
Algoritma dan Pemrograman
Algoritma dan struktur data
KONSEP DASAR STRUKTUR DATA
Algoritme dan Pemrograman
VARIABEL, TIPE DATA, OPERATOR
POINTER (VAR.PENUNJUK)
Transcript presentasi:

Struktur Data Pointer Oleh Lutfi Budi Ilmawan Universitas Muslim Indonesia Oleh Lutfi Budi Ilmawan

Pendahuluan Pointer merupakan tipe data dasar pada suatu bahasa pemrograman yang berfungsi untuk menyimpan alamat memori. Pointer bernilai dari 0 – 65535, jika Anda memiliki RAM sebesar 64K. Salah satu analogi yang dapat dikemukakan di sini adalah tumpukan piring atau barang lain. Pada saat kita hendak menumpuk piring-piring tersebut tentulah yang kita lakukan adalah meletakkan piring pertama pada tempatnya, selanjutnya meletakkan piring kedua di atas piring pertama dan demikian seterusnya. Pada saat kita hendak mengambil satu piring dari tumpukan tersebut, tentu yang diambil adalah piring teratas (yang terakhir kali ditaruh), bukan yang terbawah (yang pertama kali diletakkan).

Pendahuluan (cont.) Pointer memiliki 3 konsep utama: Pointer constants Pointer Values Pointer Variables (Variabel pointer) Salah satu analogi yang dapat dikemukakan di sini adalah tumpukan piring atau barang lain. Pada saat kita hendak menumpuk piring-piring tersebut tentulah yang kita lakukan adalah meletakkan piring pertama pada tempatnya, selanjutnya meletakkan piring kedua di atas piring pertama dan demikian seterusnya. Pada saat kita hendak mengambil satu piring dari tumpukan tersebut, tentu yang diambil adalah piring teratas (yang terakhir kali ditaruh), bukan yang terbawah (yang pertama kali diletakkan).

Pointer Constants Sebuah komputer menyimpan informasi pada memorinya. Memori komputer terbagi dalam sejumlah lokasi yang disebut sebagai storage cells. Setiap lokasi memiliki address (alamat). Salah satu analogi yang dapat dikemukakan di sini adalah tumpukan piring atau barang lain. Pada saat kita hendak menumpuk piring-piring tersebut tentulah yang kita lakukan adalah meletakkan piring pertama pada tempatnya, selanjutnya meletakkan piring kedua di atas piring pertama dan demikian seterusnya. Pada saat kita hendak mengambil satu piring dari tumpukan tersebut, tentu yang diambil adalah piring teratas (yang terakhir kali ditaruh), bukan yang terbawah (yang pertama kali diletakkan).

Pointer Constants Asumsikan bahwa sebuah komputer memiliki ukuran memori 64kB. Di mana 1 kB = 1024 Byte. Sehingga jumlah lokasi memori adalah 1024 * 64 = 65536 lokasi. Secara logic, keseluruhan 65536 lokasi pada memori komputer memiliki urutan yang sekuensial dari 0 – 65535. Namun secara fisik, lokasi memori tersebut dikelompokkan dalam penyimpanan genap (even bank) dan penyimpanan ganjil (odd bank). Salah satu analogi yang dapat dikemukakan di sini adalah tumpukan piring atau barang lain. Pada saat kita hendak menumpuk piring-piring tersebut tentulah yang kita lakukan adalah meletakkan piring pertama pada tempatnya, selanjutnya meletakkan piring kedua di atas piring pertama dan demikian seterusnya. Pada saat kita hendak mengambil satu piring dari tumpukan tersebut, tentu yang diambil adalah piring teratas (yang terakhir kali ditaruh), bukan yang terbawah (yang pertama kali diletakkan).

Pointer Constants Lokasi Memori Alamat Alamat Even Bank Odd Bank 1 2 3 1 2 3 4 5 6 7 .......... .......... 65530 65531 65532 65533 Salah satu analogi yang dapat dikemukakan di sini adalah tumpukan piring atau barang lain. Pada saat kita hendak menumpuk piring-piring tersebut tentulah yang kita lakukan adalah meletakkan piring pertama pada tempatnya, selanjutnya meletakkan piring kedua di atas piring pertama dan demikian seterusnya. Pada saat kita hendak mengambil satu piring dari tumpukan tersebut, tentu yang diambil adalah piring teratas (yang terakhir kali ditaruh), bukan yang terbawah (yang pertama kali diletakkan). 65534 65535 Even Bank Odd Bank

Pointer Constants Lokasi Memori Alamat Alamat Even Bank Odd Bank Even bank merupakan sejumlah lokasi memori yang memiliki alamat genap Odd bank merupakan sejumlah lokasi memori yang memiliki alamat memori ganjil 1 2 3 4 5 6 7 .......... .......... 65530 65531 65532 65533 65534 Salah satu analogi yang dapat dikemukakan di sini adalah tumpukan piring atau barang lain. Pada saat kita hendak menumpuk piring-piring tersebut tentulah yang kita lakukan adalah meletakkan piring pertama pada tempatnya, selanjutnya meletakkan piring kedua di atas piring pertama dan demikian seterusnya. Pada saat kita hendak mengambil satu piring dari tumpukan tersebut, tentu yang diambil adalah piring teratas (yang terakhir kali ditaruh), bukan yang terbawah (yang pertama kali diletakkan). 65535 Even Bank Odd Bank

Pointer Constants Lokasi Memori Alamat Alamat Even Bank Odd Bank 1 1 Alamat memori inilah yang disebut sebagai pointer constants. Alamat tersebut tidak bisa diganti namun dapat digunakan untuk menyimpan sebuah nilai. 2 3 4 5 6 7 .......... .......... 65530 65531 65532 65533 65534 Salah satu analogi yang dapat dikemukakan di sini adalah tumpukan piring atau barang lain. Pada saat kita hendak menumpuk piring-piring tersebut tentulah yang kita lakukan adalah meletakkan piring pertama pada tempatnya, selanjutnya meletakkan piring kedua di atas piring pertama dan demikian seterusnya. Pada saat kita hendak mengambil satu piring dari tumpukan tersebut, tentu yang diambil adalah piring teratas (yang terakhir kali ditaruh), bukan yang terbawah (yang pertama kali diletakkan). 65535 Even Bank Odd Bank

Pointer Values Misalkan dalam bahasa c++, kita deklarasikan seperti di bawah: int i =100, j=200, k=300; Deklarasi tersebut memberitahukan kepada compiler untuk melakukan aktfitas di bawah ini: Pesan tempat untuk tiga buah integer pada memori. Asosiasikan variabel i, j, dan k pada lokasi memori. Simpan nilai 100 pada lokasi i, nilai 200 pada lokasi j, dan nilai 300 pada lokasi k. Salah satu analogi yang dapat dikemukakan di sini adalah tumpukan piring atau barang lain. Pada saat kita hendak menumpuk piring-piring tersebut tentulah yang kita lakukan adalah meletakkan piring pertama pada tempatnya, selanjutnya meletakkan piring kedua di atas piring pertama dan demikian seterusnya. Pada saat kita hendak mengambil satu piring dari tumpukan tersebut, tentu yang diambil adalah piring teratas (yang terakhir kali ditaruh), bukan yang terbawah (yang pertama kali diletakkan).

Pointer Values Lokasi Memori Alamat 1 2 3 4 5 6 7 .......... 1 2 3 4 5 6 7 Salah satu analogi yang dapat dikemukakan di sini adalah tumpukan piring atau barang lain. Pada saat kita hendak menumpuk piring-piring tersebut tentulah yang kita lakukan adalah meletakkan piring pertama pada tempatnya, selanjutnya meletakkan piring kedua di atas piring pertama dan demikian seterusnya. Pada saat kita hendak mengambil satu piring dari tumpukan tersebut, tentu yang diambil adalah piring teratas (yang terakhir kali ditaruh), bukan yang terbawah (yang pertama kali diletakkan). .......... .......... i 65530 100 65531 j 65532 200 65533 k 65534 300 65535

Pointer Values Lokasi Memori Alamat Compiler telah memilih alamat 65530 untuk variabel i, alamat 65532 untuk variabel j, dan alamat 65534 untuk variabel k. Alamat yang diberikan untuk variabel i, j, dan k inilah yang disebut sebagai pointer values. Lokasi Memori Alamat 1 2 3 4 5 6 7 Salah satu analogi yang dapat dikemukakan di sini adalah tumpukan piring atau barang lain. Pada saat kita hendak menumpuk piring-piring tersebut tentulah yang kita lakukan adalah meletakkan piring pertama pada tempatnya, selanjutnya meletakkan piring kedua di atas piring pertama dan demikian seterusnya. Pada saat kita hendak mengambil satu piring dari tumpukan tersebut, tentu yang diambil adalah piring teratas (yang terakhir kali ditaruh), bukan yang terbawah (yang pertama kali diletakkan). .......... .......... i 65530 100 65531 j 65532 200 65533 k 65534 300 65535

Pointer Variables Variabel yang menyimpan alamat memori disebut pointer variable. Dengan kata lain pointer variable merupakan variabel yang menyimpan pointer value dari sebuah variabel lain. Jika i merupakan variabel yang memiliki nilai 100 (int i=100) dan alamat i disimpan pada variabel p, maka dapat digambarkan sebagai berikut: Salah satu analogi yang dapat dikemukakan di sini adalah tumpukan piring atau barang lain. Pada saat kita hendak menumpuk piring-piring tersebut tentulah yang kita lakukan adalah meletakkan piring pertama pada tempatnya, selanjutnya meletakkan piring kedua di atas piring pertama dan demikian seterusnya. Pada saat kita hendak mengambil satu piring dari tumpukan tersebut, tentu yang diambil adalah piring teratas (yang terakhir kali ditaruh), bukan yang terbawah (yang pertama kali diletakkan).

Pointer Variables Lokasi Memori Alamat Variabel p inilah yang disebut sebagai pointer variable (variabel pointer) Lokasi Memori Alamat p 2 4 6 .......... Salah satu analogi yang dapat dikemukakan di sini adalah tumpukan piring atau barang lain. Pada saat kita hendak menumpuk piring-piring tersebut tentulah yang kita lakukan adalah meletakkan piring pertama pada tempatnya, selanjutnya meletakkan piring kedua di atas piring pertama dan demikian seterusnya. Pada saat kita hendak mengambil satu piring dari tumpukan tersebut, tentu yang diambil adalah piring teratas (yang terakhir kali ditaruh), bukan yang terbawah (yang pertama kali diletakkan). i p 50000 65534 .......... Representasi Logis i 65534 100 Representasi Fisik

Deklarasi pointer Deklarasi pointer pada bahasa pemrograman c++: tipe_data *identifier Nama yang diberikan untuk pointer variable Karakter asterisk (*) memberikan informasi bahwa identifier tersebut adalah pointer Tipe data apa saja Contoh deklarasi: int *a, b, c;  a merupakan pointer variable yang dapat menyimpan alamat memori dari variabel yang bertipe data integer, sedangkan b dan c merupakan variabel integer biasa. Salah satu analogi yang dapat dikemukakan di sini adalah tumpukan piring atau barang lain. Pada saat kita hendak menumpuk piring-piring tersebut tentulah yang kita lakukan adalah meletakkan piring pertama pada tempatnya, selanjutnya meletakkan piring kedua di atas piring pertama dan demikian seterusnya. Pada saat kita hendak mengambil satu piring dari tumpukan tersebut, tentu yang diambil adalah piring teratas (yang terakhir kali ditaruh), bukan yang terbawah (yang pertama kali diletakkan).

Deklarasi pointer Contoh kode program untuk penggunaan pointer dalam bahasa c++: int a; a = 5; int *p; p = &a; cout << “*p = ” << *p; Pointer p meyimpan nilai berupa alamat dari variabel a, sehingga *p dapat merepresentasikan nilai dari a. Karakter * di atas disebut sebagai indirectional operator atau dereferencing operator. Output: *p = 5 Salah satu analogi yang dapat dikemukakan di sini adalah tumpukan piring atau barang lain. Pada saat kita hendak menumpuk piring-piring tersebut tentulah yang kita lakukan adalah meletakkan piring pertama pada tempatnya, selanjutnya meletakkan piring kedua di atas piring pertama dan demikian seterusnya. Pada saat kita hendak mengambil satu piring dari tumpukan tersebut, tentu yang diambil adalah piring teratas (yang terakhir kali ditaruh), bukan yang terbawah (yang pertama kali diletakkan).

Dangling Pointers Variabel Pointer yang tidak menyimpan alamat memori yang valid disebut dangling pointer. Contoh: int a = 500; int *p; /*p merupakan dangling pointer*/ Sebuah program seharusnya tidak memiliki dangling pointer. Salah satu analogi yang dapat dikemukakan di sini adalah tumpukan piring atau barang lain. Pada saat kita hendak menumpuk piring-piring tersebut tentulah yang kita lakukan adalah meletakkan piring pertama pada tempatnya, selanjutnya meletakkan piring kedua di atas piring pertama dan demikian seterusnya. Pada saat kita hendak mengambil satu piring dari tumpukan tersebut, tentu yang diambil adalah piring teratas (yang terakhir kali ditaruh), bukan yang terbawah (yang pertama kali diletakkan).

Null Pointers Null pointer didefinisikan sebagai pointer khusus yang tidak menunjuk ke alamat memori manapun. Contoh: int *p = NULL; Berdasarkan kode program di atas, variabel pointer p tidak menunjuk lokasi memori manapun. Sebelum menggunakan varibel pointer, sebaiknya dilakukan pengecekan terlebih dahulu apakah variabel pointer tersebut menunjuk ke NULL atau ke alamat yang valid. Salah satu analogi yang dapat dikemukakan di sini adalah tumpukan piring atau barang lain. Pada saat kita hendak menumpuk piring-piring tersebut tentulah yang kita lakukan adalah meletakkan piring pertama pada tempatnya, selanjutnya meletakkan piring kedua di atas piring pertama dan demikian seterusnya. Pada saat kita hendak mengambil satu piring dari tumpukan tersebut, tentu yang diambil adalah piring teratas (yang terakhir kali ditaruh), bukan yang terbawah (yang pertama kali diletakkan).

Contoh penjumlahan menggunakan pointer Include <stdio.h> int A, B, *pA, *pB, hasil; A = 13; B = 7; pA = &A; pB = &B; hasil = *pA + *pB; printf(“Hasil = %i”, hasil); Output: Hasil = 20 Salah satu analogi yang dapat dikemukakan di sini adalah tumpukan piring atau barang lain. Pada saat kita hendak menumpuk piring-piring tersebut tentulah yang kita lakukan adalah meletakkan piring pertama pada tempatnya, selanjutnya meletakkan piring kedua di atas piring pertama dan demikian seterusnya. Pada saat kita hendak mengambil satu piring dari tumpukan tersebut, tentu yang diambil adalah piring teratas (yang terakhir kali ditaruh), bukan yang terbawah (yang pertama kali diletakkan).

Pointer to pointer Variabel yang menyimpan alamat dari variabel pointer disebut pointer to pointer. Contoh: int a; int *p1; int **p2; /*variabel p2 merupakan*/ /*pointer to pointer*/ a = 10; p1 = &a; p2 = &p1; printf(“a = %i \n”, a); printf(“*p1 = %i \n”, *p1); printf(“**p2 = %i”, **p2); Output: a = 10 *p1 = 10 **p2 = 10 Salah satu analogi yang dapat dikemukakan di sini adalah tumpukan piring atau barang lain. Pada saat kita hendak menumpuk piring-piring tersebut tentulah yang kita lakukan adalah meletakkan piring pertama pada tempatnya, selanjutnya meletakkan piring kedua di atas piring pertama dan demikian seterusnya. Pada saat kita hendak mengambil satu piring dari tumpukan tersebut, tentu yang diambil adalah piring teratas (yang terakhir kali ditaruh), bukan yang terbawah (yang pertama kali diletakkan).

Kompatibilitas pointer Variabel pointer tidak boleh menunjuk/menyimpan alamat variabel yang memiliki tipe data berbeda dengan tipe datanya. Contoh program yang benar: int a=10; int *p; p = &a; Contoh program yang salah: float *p; Salah satu analogi yang dapat dikemukakan di sini adalah tumpukan piring atau barang lain. Pada saat kita hendak menumpuk piring-piring tersebut tentulah yang kita lakukan adalah meletakkan piring pertama pada tempatnya, selanjutnya meletakkan piring kedua di atas piring pertama dan demikian seterusnya. Pada saat kita hendak mengambil satu piring dari tumpukan tersebut, tentu yang diambil adalah piring teratas (yang terakhir kali ditaruh), bukan yang terbawah (yang pertama kali diletakkan).