Defri Kurniawan Defri.kurniawan@dsn.dinus.ac.id POINTER Defri Kurniawan Defri.kurniawan@dsn.dinus.ac.id.

Slides:



Advertisements
Presentasi serupa
POINTER.
Advertisements

OOP berputar pada konsep dari obyek yang merupakan elemen dasar dari program Anda. Ketika kita membandingkan dengan dunia nyata, kita dapat menemukan.
PERTEMUAN IV POINTER Pointer adalah suatu variabel penunjuk yang menunjuk pada suatu alamat memori komputer Pointer merupakan.
PERTEMUAN VIII POINTER
Array.
FUNGSI Deklarasi dan Definisi fungsi Void dan Non-void Fungsi main.
STRUKTUR DATA (5) Pointer dan Function
STRUKTUR Konsep Pemrograman.
Pointer Konsep Pemrograman.
Pointer.
Fungsi, Parameter, Rekursi Daniel Riano Kaparang Book reference: Jogiyanto. Konsep Dasar Pemrograman Bahasa C. Andi Star. Yogyakarta Kristanto Andri.
Struktur Data Universitas PGRI Ronggolawe
Pointer.
Algoritma & Struktur Data Pointer Evangs Mailoa.
Review-Dasar Pemrograman Komputer
Variabel, Method & Constructor Oleh : Nur Hayatin, S.ST Teknik Informatika – UMM 2011.
FUNGSI.
STRUKTUR DATA (5) Pointer dan Function
Alokasi Memori Yuliana Setiowati.
Pemrograman Dasar Pointers.
Pointer Yuliana Setiowati.
Diberikan pada Kuliah Sela Teknik Informatika - Universitas Muhammadiyah Malang Tahun 2011.
Pointer Dr. Lily Wulandari.
POINTER (VAR.PENUNJUK)
STRUKTUR DATA Pointer dan Function
Algoritma dan Struktur Data
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.
Fungsi Fungsi.
Pointer Pointer.
Function User Function.
Pemrograman Berorientasi Obyek1 Sub Pokok Bahasan Pointer. Reference. Function Passing Parameter by Value, by Reference, by Pointer.
Pointer.
FUNCTIONS Pertemuan 9 Matakuliah: T0456 / Algoritma dan Metode Object Oriented Programming Tahun: 2007.
Konsep Pemrograman Politeknik Elektronika Negeri Surabaya 2006
POINTER.
Teknik Pemrog. Terstruktur 2
Tenia Wahyuningrum pointers Tenia Wahyuningrum
Pemrograman Terstruktur
Tipe Data By Serdiwansyah N. A..
Tabel Informasi/ Tabel Simbol
Prosedur dalam C++.
TABEL INFORMASI atau TABEL SIMBOL
Pointer TEE 2103 Algoritma dan Pemrograman Dosen: Abdillah, MIT
REPRESENTASI FISIK LIST LINEAR
KELOMPOK 9 ROBBY SETIAWAN AKBAR BAI ALIM WASSAHUA
Struktur Data (Data Structure) – IS 2313
Struktur.
Defri Kurniawan, M.Kom STRUKTUR DATA Defri Kurniawan, M.Kom
Pointer FARID WAJDI YUSUF.
ALGORITMA DAN PEMROGRAMAN II
Struktur Data – Pertemuan 4 List Linier
Tenia Wahyuningrum pointers Tenia Wahyuningrum
QUIS Algoritma Pemrograman I
Algoritma dan Struktur Data
Algoritma dan Struktur Data
Defri Kurniawan, M.Kom Pertemuan I Defri Kurniawan, M.Kom
Algoritma dan Struktur Data
Struktur Data Khoiriya Latifa, M.Kom.
Algoritma dan Struktur Data
Algoritma dan struktur data
FUNGSI II.
Matakuliah : T0534/Struktur Data Tahun : 2005 Versi : September 2005
Array.
Array.
Bab VI Array dan String.
Array.
Defri Kurniawan SORTING Defri Kurniawan
Pengenalan Struktur Data
Tipe Data & Notasi Algoritmik
Defri Kurniawan Struct Defri Kurniawan
Transcript presentasi:

Defri Kurniawan Defri.kurniawan@dsn.dinus.ac.id POINTER Defri Kurniawan Defri.kurniawan@dsn.dinus.ac.id

Referensi Michael Vine – C Programming for the Absolute Beginner 2nd (2008) Ivor Horton – Beginning C 5th (2013)

RENCANA KEGIATAN PERKULIAHAN SEMESTER W Pokok Bahasan 1 Review Fungsi 2 Parameter & Tipe Kembalian Fungsi 3 Sorting 4 5 Searching 6 7 Review 1-6 8 Ujian Tengah Semester W Pokok Bahasan 9 Analisa Rekuren 10 11 Pointer 12 13 Struct & ADT 14 15 Presentasi Proyek Akhir 16 Ujian Akhir Semester

Content Pengenalan Pointer Mendeklarasikan Pointer Mengakses Nilai melalui Pointer Pengurutan dengan Pointer

Pengenalan Pointer Pointer merupakan salah satu keunggulan dari Bahasa C Komputer mengalokasikan sebuah area pada memori ketika sebuah variabel dideklarasikan. Area tersebut diacu dengan menggunakan sebuah variabel dalam program, namun ketika program dikompil dan berjalan, komputer mengacu area tersebut dengan menggunakan alamat atau lokasi dari memori.

Pengenalan Pointer Perhatikan contoh berikut: int angka = 3; Dalam hal ini, area pada memori dialokasikan untuk menyimpan nilai integer. Memori tersebut dapat diakses dengan menggunakan nama angka.

Pengenalan Pointer Komputer mengacu kepada area memori dengan menggunakan sebuah alamat. Alamat rinci dari data yang disimpan bergantung kepada jenis komputer, sistem operasi, dan kompiler yang digunakan. Jadi, meskipun nama variabel yang digunakan adalah tetap (fixed), alamat dari variabel yang digunakan akan berbeda pada sistem yang berbeda.

Pengenalan Pointer Variabel yang dapat menyimpan alamat disebut dengan ‘pointer’, dan alamat yang disimpan dalam pointer biasanya adalah variabel lain

Pengenalan Pointer Hal penting yang harus diketahui adalah, compiler harus tahu jenis dari data yang disimpan dalam variabel yang diacu oleh pointer. Sehingga dapat diketahui jumlah memori yang akan dialokasikan atau bagaimana cara untuk menangani isi dari memori yang diacu oleh pointer. Sebuah pointer pada sebuah variabel char mengacu pada nilai dengan alokasi sebesar 1Byte, dan lainnya.

Pengenalan Pointer Setiap pointer akan dihubungkan dengan jenis variabel tertentu, dan hanya bisa digunakan untuk mengacu jenis variabel tersebut. Sehingga pointer berjenis ‘pointer to int’ hanya dapat mengacu pada variabel berjenis int, dsb. Secara umum sebuah pointer dari type tertentu ditulis dengan type* untuk setiap nama type

Mendeklarasikan Pointer Kita dapat mendeklarasikan sebuah pointer kepada sebuah variabel berjenis int dengan pernyataan berikut:   int *almt; Jenis dari variabel bernama almt adalah int*. variabel tersebut dapat menyimpan alamat dari variabel apapun yang berjenis int.

Mendeklarasikan Pointer Pointer yang tidak diinisialisasi sangatlah berbahaya, lebih berbahaya dari variabel biasa yang tidak diinisialisasi. Jadi, sebaiknya selalu lakukan inisialisasi pointer ketika dideklarasikan. Kita dapat menginisialisasi pointer almt sehingga tidak mengacu kemanapun: int *almt = NULL;

Mendeklarasikan Pointer NULL adalah sebuah konstanta dalam standard library dan setara dengan nilai 0 untuk sebuah pointer. NULL memastikan sebuah pointer tidak mengacu ke lokasi manapun dalam memori. Hal tersebut dimaksudkan untuk menghindari penimpaan (overwriting) memori.

Mendeklarasikan Pointer Jika ingin menginisialisasi variabel almt dengan alamat dari variabel yang telah dideklarasikan, kita dapat menggunakan operator address of ‘&’: int angka = 50; int *almt = &angka; Nilai awal dari almt adalah alamat dari variabel angka. Perlu diingat bahwa deklarasi dari angka harus dilakukan terlebih dahulu sebelum deklarasi dari pointer yang akan digunakan untuk menyimpan alamat tersebut.

Mendeklarasikan Pointer Tidak ada pendeklarasian khusus dari pointer. Kita dapat mendeklarasikan variabel biasa dan pointer dalam satu pernyataan: double nilai, *lokasi, abc; Pernyataan tersebut mendeklarasikan dua variabel jenis double- precision floating-point yaitu nilai dan abc, dan sebuah variabel *lokasi yang berjenis pointer to double

Mendeklarasikan Pointer Perhatikan contoh lain berikut ini: int *p, q;   Pernyataan tersebut mendeklarasikan pointer p berjenis int*, dan sebuah variabel q yang berjenis int. Kesalahan umum yang sering terjadi adalah dengan menganggap variabel p dan q adalah pointer

Mendeklarasikan Pointer Indirection operator * digunakan untuk mengakses nilai dari variabel yang diacu oleh pointer. Operator tersebut dikenal juga sebagai dereference operator karena digunakan untuk men-dereference sebuah pointer. Perhatikan deklarasi variabel-variabel berikut: int angka = 20; int *pointer = &angka; int hasil = 0;

Mengakses Nilai Melalui Pointer Variabel pointer menampung alamat dari variabel angka, sehingga kita dapat menggunakan ekspresi berikut untuk menghitung nilai yang baru dari variabel hasil: hasil = *pointer + 5; Ekspresi *pointer akan mengevaluasi nilai yang terdapat pada alamat di dalam pointer. Nilai yang tersimpan pada variabel angka adalah 20, sehingga nilai hasil akan menjadi 20 + 5 yaitu 25.

Mengambil alamat suatu variabel p = &i; j p q 15 ? 1080 1082 1084 1086 int i=15, j, *p, *q; & operator derefence Mengambil alamat suatu variabel i j p q 15 ? 1080 1082 1084 1086 p = &i; p i 15 * Operator reference Mengambil nilai dari alamat suatu variabel i j p q 20 ? 1080 1082 1084 1086 *p = 20; p i 20 i j p q 20 40 1080 ? 1082 1084 1086 j = 2 * *p; i j p q 20 40 1080 1082 1084 1086 q = &i

Fungsi dan Pointer Passing By Value Passing By Reference

Passing By Value Membutuhkan cadangan ruang memory ekstra untuk membuat copy dari variable. Copy Variable akan dikirimkan ke fungsi sebagai argument Passing by value tidak mampu digunakan untuk melakukan modifikasi konten original dari parameter yang masuk

Example 1 int PassByValue(int,int); int main() { int x=0; int y=0; printf("First Number : ");scanf("%d", &x); printf("Second Number : ");scanf("%d", &y); printf("\nResult : %d", PassByValue(x,y)); return 0; } int PassByValue(int x, int y){ return x+y;

Example 2

Pass By Reference Melewati alamat memory dari variable dengan menempatkan operator unary (&) Untuk memodifikasi konten original sebuah argument, harus menggunakan operator indirection (*) dimana akses konten dari sebuah lokasi memori terkandung variable pointer

Example

Array dan Pointer Array adalah koleksi objek dengan type yang sama yang diacu menggunakan single name Pointer adalah variable dengan nilai dari alamat memory yang dapat menjadi acuan ke variable lainnya berdasarkan type yang diberikan Array adalah pengelompokan dari contiguous memory array itu sendiri sebagai pointer ke lokasi memory pertama dalam contiguous memory

Array dan Pointer Meskipun terlihat berbeda, array dan pointer memiliki keeratan yang terkait. Passing array menetapkan lokasi memory pertama dari array untuk variable pointer. Dalam passing array, reference ke sebuah variable tidak menggunakan operator unary, karena dalam sebuah array memiliki alamat pertama pada lokasi memory dan nilai. char name=0; scanf(“%c”,&name); char name[10]; scanf(“%s”,name)

Array dan Pointer int array[5] = {1,2,3,4,5}; int *ptr = array; printf(“addr. of pointer : %p”, ptr); printf(“addr. of array : %p”, &array[0]); printf(“pointer to point : %d”, *ptr); printf(“first element of array : %d”, array[0]);

TERIMA KASIH