Minggu ke-10 Pointer. Pendahuluan. Objektif. Bahan Bacaan

dokumen-dokumen yang mirip
Pointer. Objektif. Bahan Bacaan

Minggu ke-11 Fungsi (Function)

Minggu ke-14 Typedef, Struct & Command Line Argument

Fungsi (Function) Pendahuluan. Objektif. Bahan Bacaan

Minggu ke-12 Built-in Function

Array (Single Dimension)

Tipe Data. Pendahuluan. Objektif. Bahan Bacaan

Array (Single Dimension)

MODUL. Pointer. Modul Praktikum C++ Dasar Pemrograman Komputer JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNIK

Typedef dan Struct. Pendahuluan. Objektif. Bahan Bacaan

Minggu ke-13 Berkas (File)

Minggu ke-3 Tipe Data Dalam C

Struct dan Fungsi. Pendahuluan. Objektif. Bahan Bacaan

Achmad Solichin.

INF-103 Pemrograman II VECTOR & STRING. Dr. Taufik Fuadi Abidin, M.Tech Irvanizam Zamanhuri, M.Sc. Program Studi Informatika FMIPA UNIVERSITAS KUALA

Algoritme dan Pemrograman

Pernyataan (Statement)

File. Dalam bahasa pemrograman C, terdapat dua jenis stream: teks (ASCII) dan binari. Minggu ini, FILE dan stream jenis teks akan dibahas.

PRAKTIKUM 11 POINTER 1

MODUL V POINTER DAN STRING

Penambahan Simpul (Node)

POINTER. Tim Alpro Teknik Informatika

PRAKTIKUM 11 POINTER 1

Pernyataan (Statement) dan Input/Output

12/29/2011 ILKOM IPB 1. Algoritme dan Pemrograman. Address and Pointers. Pointer

MAKALAH POINTER PADA BAHASA C

Pointer dan Referensi

Algoritma Pemrograman & Struktur Data

ALGORITMA DAN STRUKTUR DATA POINTER DAN FUNCTION

ARRAY & POINTER. Listing 8.1. EXPENSES.C demonstrates the use of an array. AP3: Array & Pointer

DIKTAT MATA KULIAH PEMROGRAMAN I BAB XI POINTER

BAB VIII POINTER. Tujuan :

PRAKTIKUM 12 POINTER 2

E STRUKTUR DATA & E PRAKTIK STRUKTUR DATA. Pointer & Function. Alfa Faridh Suni, S.T., M.T. PTIK

POINTER DASAR PEMROGRAMAN

ARRAY. Karakteristik

POINTER I. Oleh : Mike Yuliana PENS-ITS

Algoritma dan Struktur Data Praktikum 3. Pointer

POINTER. Tim Alpro Teknik Informatika

BAB 10 POINTER 5.1 Tujuan 5.2 Pengertian Pointer Perubah dinamis pointer

Algoritme dan Pemrograman

Pointer dan Array Dinamik. IF2121 / Algoritma dan Struktur Data Sem /2018

A. TUJUAN 1. Menjelaskan tentang konsep dari variabel pointer. zzzz. Address. Gambar 8.1 Variabel pointer px menunjuk ke variabel x

MODUL. Fungsi (Function) Modul Praktikum C++ Dasar Pemrograman Komputer JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNIK

Binary Search Tree (BST)

Pendahuluan Struktur Data. Nisa ul Hafidhoh

ALUR PROGRAM. SELEKSI KONDISI Statement If a. Bentuk If tunggal sederhana Sintaks : if ( kondisi ) statement ;

Konsep Pemrograman. Bab 13. Pointer 3. Konsep Pemrograman Politeknik Elektronika Negeri Surabaya 2006 PENS-ITS. Umi Sa adah

1 MODUL 8 POINTER MODUL 8 POINTER

MODUL 7 FUNGSI A. Tujuan. B. Petunjuk. C. Dasar Teori

ABSTRACT DATA TYPE (ADT) Dr. Taufik Fuadi Abidin, M.Tech Irvanizam Zamanhuri, M.Sc

Seluruh elemen di dalam struktur array mempunyai tipe data yang sama. Random Access

xxxx alamat Praktikum 11 POINTER

Pointer 2 A. TUJUAN PEMBELAJARAN. 1. Memahami tentang Pointer to Array 2. Memahami tentang Pointer to String

PERTEMUAN VI POINTER 6.1 Tujuan Praktikum 6.2 Teori Penunjang Pointer

Pendahuluan Pemrograman Mikrokontroler

Pemrograman Dasar C. Minggu 9

KARAKTER DAN STRING, ARRAY, STRUCT DAN REVIEW PADA BAHASA C

Pointer. Yuliana Setiowati

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA

P3 Dasar Struktur Data TIF42/SIF42

ALGORITMA DAN STRUKTUR DATA

pada program di atas, akan ditampilkan alamat memori dari variabel x, bukan nilai x.

ALGORITMA DAN PEMROGRAMAN 2. 3 SKS By : Sri Rezeki Candra Nursari

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN

POINTER. Praktikum 10 (3/5) A. TUJUAN 1. Menjelaskan tentang Pointer to Array 2. Menjelaskan tentang Pointer to String

Konsep Pemrograman. Bab 12. Pointer 2. Konsep Pemrograman Politeknik Elektronika Negeri Surabaya 2006 PENS-ITS. Umi Sa adah

Pointer, File Header & Makro

Pointer. Pointer adalah variabel yang menyimpan alamat dari variabel yang lainnya. Deklarasi pointer : datatype *ptr_name; Contoh:

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA LAB SHEET BAHASA PEMROGRAMAN Fungsi : Passing Parameter by Value & Semester 3

Pointer. ted = &andy;

Algoritma dan Struktur Data. Pertemuan 5 Pointer

SOAL C++ Created by Yuli Astuti,S.Kom Copyright 2009

Pointer (Penunjuk) Modul 6

LOGIKA ALGORITMA. Pertemuan 9 By: Augury

Array (Larik) Modul 7

SINGLE LINKED LIST (NON CIRCULAR)

PSEUDOCODE TIPE DATA, VARIABEL, DAN OPERATOR

Review : Sifat Implementasi Linear List dengan Array

POINTER II. Oleh : Mike Yuliana PENS-ITS

Algoritma dan Struktur Data. Ramos Somya, S.Kom., M.Cs.

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-10 Pointer 1

C V.S. C++ Oleh : Rasim

Pengenalan C++ Oleh : Dewi Sartika

INF-103 Pemrograman II FUNGSI C++ Dr. Taufik Fuadi Abidin, M.Tech Irvanizam, M.Sc. Program Studi Informatika FMIPA UNIVERSITAS KUALA

PEMROGRAMAN DAN METODE NUMERIK Semester 2/ 2 sks/ MFF 1024

SATUAN ACARA PERKULIAHAN (SAP)

Tabel Informasi. Hal di atas dapat dilakukan dengan menambah dan mengambil atribut identifier yang digunakan pada program, melalui tabel informasi.

Algoritma dan Struktur Data. Ramos Somya

Konsep Array dalam PBO

Tipe Data dan Operator

MAKALAH STRUKTUR DATA. DOSEN PEMBIMBING Nisa miftachurohmah, S.kom., M.Si PENYUSUN SITI JAMILATUL MU ADDIBAH ( )

BAB X. Struct Dalam C++, kita dapat membuat sebuah tipe data baru. Maka penulisan variabel baru kita akan menjadi:

Bahasa C Array. Slide diambil dari MK Dasar-Dasar Pemrograman Fasilkom UI Dimodifikasi dan disesuaikan dngn kebutuhan pengajaran di PTI-Undiksha

VARIABEL & TIPE DATA PEMROGRAMAN C++

POINTER. Algoritma dan Pemrograman Tahar Agastani Teknik Informatika UIN Overview. Definisi Pointer Operasi Pointer Pointer dan Argumen Fungsi

KONSEP POINTER DAN LINKED LIST

A. TUJUAN 1. Memecah program dalam fungsi fungsi yang sederhana. 2. Menjelaskan tentang pemrograman terstruktur.

TUGAS TEORI ALGO LANJUT

Transkripsi:

Minggu ke-10 Pointer Pendahuluan Memahami konsep pointer yang merupakan variabel yang dapat memegang alamat dari suatu objek dalam memory. Pointer digunakan dalam program untuk melalukan akses dan manipulasi alamat memory. Dalam C, array dan pointer memiliki keterkaitan konsep yang erat. Array biasa dikenal sebagai pointer yang tetap (fixed pointer) sedangkan pointer tidaklah tetap, artinya alamat memori yang dipegangnya dapat diubah-ubah. Jika pada bahasa pemrograman yang lain disediakan pemanggilan melalui alamat (call by reference), dalam C, pointer digunakan sebagai parameter dalam pendefinisian fungsi (function) untuk melalukan efek pemanggilan melalui alamat tersebut. Objektif Memperkenalkan cara pendeklarasian pointer Menjelaskan penggunaan pointer Menjelaskan konsep dereferensing (menbaca / memberikan nilai yang ditunjuk oleh sebuah pointer) Menjelaskan penggunaan indeks (subscript) pada pointer. Bahan Bacaan Buku pegangan atau buku-buku lain yang menjelaskan tentang tok ini. Copyright 2010, Dr. Taufik Fuadi Abidin, S.Si M.Tech dan Irvanizam M.Sc, Program Studi Informatika FMIPA Universitas Syiah Kuala 1

Pendeklarasian Menggunakan Simbol * Definisi Variabel dalam program yang dideklarasikan untuk memegang dan mengakses nilai suatu alamat dalam memori dikenal dengan sebutan pointer. Jika p adalah suatu variable maka &p merupakan lokasi atau alamat dalam memori dimana nilai yang dipegang oleh p disimpan. Pendeklarasian Dalam C, pada saat kita mendeklarasi sebuah pointer, simbol asterisk ' * ' selalu digunakan setelah tipe data dan sebelum nama pointer. Sebagai contoh: int * ; bentuk umum: tipe_data * nama_pointer; Simbol asterik ' * ' memberitahukan komler bahwa yang ingin dideklarasi adalah sebuah pointer yang menyimpan alamat memori bertipe int. Pendeklarasian seperti contoh di atas hanya memberitahukan komler bahwa adalah pointer ke int tanpa memberikan nilai awal apapun. Sebuah pointer bila dideklarasikan dan tidak diberi nilai awal akan secara otomatis diberi nilai NULL. Pengujian dapat dilakukan sebagai berikut: if ( == NULL) { } Copyright 2010, Dr. Taufik Fuadi Abidin, S.Si M.Tech dan Irvanizam M.Sc, Program Studi Informatika FMIPA Universitas Syiah Kuala 2

Visualisasi Pointer Visualisasi Pointer Bila dalam program diterdapat pernyataan: int i = 2; int * = &i; maka visualisasi dari kedua pernyataan di atas lebih kurang sebagai berikut: i = 2 Artinya terdapat sebuah variabel i bertipe integer dengan nilai 2 dan adalah sebuah pointer yang memegang / menunjuk ke alokasi memori bertipe int yang dimiliki oleh i. Pernyataan: int * = &i; artinya mendeklarasi sebuah pointer bertipe int dengan nilai awal berupa alamat dari i yang bertipe int. Simbol & pada pernyataan di atas merupakan operator unari yang bermakna alamat (address). Pada pernyataan di atas, nilai awal dari adalah alamat dari i. Copyright 2010, Dr. Taufik Fuadi Abidin, S.Si M.Tech dan Irvanizam M.Sc, Program Studi Informatika FMIPA Universitas Syiah Kuala 3

Operator Dereferensing Operator Dereferensing Operator dereferensing bermakna pembacaan / pemberian nilai data pada alamat yang dipegang oleh sebuah pointer. Operator deferensing juga menggunakan simbol asterik ' * ' teta berbeda maknanya dengan simbol asterik pada saat pendeklarasian pointer. Perhatikan pernyataan berikut: int i = 2; int *; = &i; * = 12; printf("%d\n", i); Hasil keluaran dari program di atas adalah 12 atau dapat dikatakan bahwa variabel i yang pada awalnya bernilai 2 berubah akibat pernyataan * = 12. Ini berarti bahwa operator dereferensing mengubah nilai dari suatu memori yang ditunjuk oleh pointer tersebut. Pada contoh di atas menunjuk ke alamat i, dan dereferensing * = 12 mengakibatkan nilai dari i yang ditunjuk oleh berubah menjadi 12. Copyright 2010, Dr. Taufik Fuadi Abidin, S.Si M.Tech dan Irvanizam M.Sc, Program Studi Informatika FMIPA Universitas Syiah Kuala 4

Operator Dereferensing (Lanjutan) Contoh Penggunaan Operator Dereferensing int i = 2; int j = 3; int *; int *pj; = &i; pj = ; *pj = 20; printf("%d\n", i); pj = &j; = pj; * = 30; printf("%d\n", j); Keluaran dari potongan program tersebut secara berurut adalah: 20 30 Terlihat bahwa nilai i yang pada awalnya bernilai 2 berubah menjadi 20 akibat dari dereferensing pointer pj atau *pj = 20; sedangkan nilai dari j yang pada awalnya bernilai 3 berubah menjadi 30 akibat dari dereferensing pointer atau * = 30; Copyright 2010, Dr. Taufik Fuadi Abidin, S.Si M.Tech dan Irvanizam M.Sc, Program Studi Informatika FMIPA Universitas Syiah Kuala 5

Operator Dereferensing (Lanjutan) Visualisasi langkah demi langkah dari contoh program sebelumnya adalah sebagai berikut: int i = 2; int j = 3; int *; int *pj; i= 2 j= 3 pj Selanjutnya, pernyataan: = &i; pj = ; NULL NULL mengakibatkan menampung alamat dari i dan pj sama dengan. Ilustrasinya: i = 2 j = 3 pj Copyright 2010, Dr. Taufik Fuadi Abidin, S.Si M.Tech dan Irvanizam M.Sc, Program Studi Informatika FMIPA Universitas Syiah Kuala 6

Operator Dereferensing (Lanjutan) Pernyataan: *pj = 20; printf("%d\n", i); mengakibatkan nilai dalam memori yang ditunjuk oleh pointer pj dalam hal ini adalah nilai dari i berubah menjadi 20. 20 3 i = j = Kemudian pernyataan: pj pj = &j; = pj; mengakibatkan arah dari pointer pj berubah menjadi menunjuk ke alamat dari variabel j yang juga bertipe int. Selanjutnya, pointer menampung juga nilai dari alamat j yang sebelumnya telah ditunjuk oleh pointer pj. i= 20 j= 3 pj Copyright 2010, Dr. Taufik Fuadi Abidin, S.Si M.Tech dan Irvanizam M.Sc, Program Studi Informatika FMIPA Universitas Syiah Kuala 7

Operator Dereferensing (Lanjutan) Dan yang terakhir pernyataan: * = 30; printf("%d\n", j); mengakibatkan nilai dari variabel yang ditunjuk oleh berubah menjadi 30 akibat adanya operator dereferensing * = 30, atau secara visual adalah: i= 20 j= 30 pj Kesimpulan: Dengan menggunakan pointer dan operator derefensing nilai dari suatu variabel dalam memori dapat dengan sangat mudah dimanipulasi. Hal inilah yang membuat pointer menjadi power dalam pemrograman sekaligus sebagai the most possibility of bugs atau kemungkinan terbesar penyebab kesalahan dalam program. Oleh karena itu, pointer harus dioperasikan secara benar. Copyright 2010, Dr. Taufik Fuadi Abidin, S.Si M.Tech dan Irvanizam M.Sc, Program Studi Informatika FMIPA Universitas Syiah Kuala 8

Pointer Vs Array Bila sebuah array dideklarasikan sebagai berikut: int a[6] = {8, 4, 6, 3, 4, 10}; 2310 2318 2326 8 4 6 3 4 10 a 2314 2322 2330 alamat Kita sudah mengetahui bahwa operator [ ] dapat digunakan pada array. Untuk membaca data pada indeks ke 2, dapat dilakukan dengan menulis a[2]. Karena a juga merupakan pointer maka operator dereferensing pun dapat diaplikasikan pada a. a[2] equivalen bila ditulis *(a +2) Bukti: *(a+2) = *(a + sizeof(a) * 2) = *(a + 4 * 2) = *(2310 + 8) a[2] = 6 = *(2318) = 6 Copyright 2010, Dr. Taufik Fuadi Abidin, S.Si M.Tech dan Irvanizam M.Sc, Program Studi Informatika FMIPA Universitas Syiah Kuala 9

String Pointer dan String C tidak menyediakan tipe data primitif berupa string. String dalam pemrograman C direpresentasikan dengan menggunakan pointer bertipe char. Perhatikan deklarasi berikut: Mari kita diskusikan kasus berikut ini: char * str = "Pemrograman C" #include <stdlib.h> #include <stdio.h> #include <string.h> int main(void) { char ch[80], *pch = &ch[0]; strcpy(ch, "diploma 3 ikmi"); putchar(*pch++); putchar((*pch)++); putchar(*++pch); putchar(*++pch); putchar(++*pch); putchar(++(*pch)); putchar(++(*pch++)); } ++pch; putchar(++(*++pch)); putchar('\n'); printf("%s\n",ch); return (EXIT_SUCCESS); Apakah hasilnya? Copyright 2010, Dr. Taufik Fuadi Abidin, S.Si M.Tech dan Irvanizam M.Sc, Program Studi Informatika FMIPA Universitas Syiah Kuala 10