PERTEMUAN VI POINTER 6.1 Tujuan Praktikum 6.2 Teori Penunjang Pointer

dokumen-dokumen yang mirip
Kurikulum Qt. Chapter 5 Pointer dan References. Agenda. Apa itu Pointer? Memory Komputer. Mengambil Alamat Memory dari Variabel

PENGENALAN BAHASA C DAN C++

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

Algoritma dan Struktur Data. Ramos Somya

SINGLE LINKED LIST (NON CIRCULAR)

Review : Sifat Implementasi Linear List dengan Array

SENARAI BERANTAI (LINK LIST)

Senarai berantai. linked list. Pertemuan keenam Struktur data st3telkom.ac.id. by : tenia wahyuningrum & Sisilia Thya Safitri

List Linear (Linked List) Farah Zakiyah Rahmanti 2014

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

KONSEP POINTER DAN LINKED LIST

Lab. Teknik Informatika Struktur Data 1

Algoritma dan Struktur Data. Pertemuan 5 Pointer

LIST. Dewi Sartika, M.Kom

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

ALGORITMA DAN STRUKTUR DATA POINTER DAN FUNCTION

TIM ASISTEN PRAKTIKUM ALGORITMA DAN PEMROGRAMAN 2017

Pertemuan 7. REVIEW dan QUIS

Single Linked List (1)

TREE STRUCTURE (Struktur Pohon)

A. TUJUAN PEMBELAJARAN

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

Pengenalan Struktur Data. Farah Zakiyah Rahmanti 2014

Algoritma dan Struktur Data. Linked List

BAB IV LARIK DAN PENUNJUK

POINTER. Tim Alpro Teknik Informatika

ARRAY DIMENSI 1 & 2. Array dapat didefinisikan sebagai suatu himpunan hingga elemen yang terurut dan homogen.

Pertemuan 3. Perubah Dinamis (Dinamic variable) Suatu perubah yang akan dialokasikan hanya pada saat diperlukan, yaitu setelah program dieksekusi.

Pertemuan 2 ARRAY DIMENSI 1 & 2

STRUKTUR DATA. By : Sri Rezeki Candra Nursari 2 SKS

Algoritma dan Struktur Data Praktikum 3. Pointer

BAB 10 POINTER 5.1 Tujuan 5.2 Pengertian Pointer Perubah dinamis pointer

Pengenalan Array. Array Satu Dimensi

Modul Praktikum Algoritma dan Struktur Data

ARRAY PENGANTAR PROGRAM STUDI. Institut Teknologi Sumatera

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

KONSEP POINTER DAN LINKED LIST

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

Algoritma Pemrograman & Struktur Data

LAPORAN PRAKTIKUM RESMI QUEUE

Algoritma Pemrograman & Struktur Data

Data structure :Metode LINK LIST. Kusnawi, S.Kom, M.Eng STMIK AMIKOM Yogyakarta

6. TREE / BINARY TREE

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

PERTEMUAN VII FILE TEKS & FILE BINER

Komentar, Identifier, Konstanta dan Variabel

MATERI/BAHAN PRAKTIKUM PENDAHULUAN DAN PENGENALAN (IDENTIFIER)

LARIK (ARRAY) Latar Belakang Array

PRAKTIKUM 11 POINTER 1

BAB 5 PERULANGAN DAN ARRAY

Langkah Mudah Belajar Struktur Data Menggunakan C/C++

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

Pengenalan Struktur Data dan Algoritma

Pendahuluan Pemrograman Mikrokontroler

ALGORITMA DAN STRUKTUR DATA

GARIS-GARIS BESAR PROGRAM PENGAJARAN (GBPP)

INPUT OUTPUT. cout. Digunakan untuk mencetak suatu informasi ke layar Contoh : cout << Halo Teknik Informatika

POINTER. Pemrograman Bahasa C++

PERTEMUAN KE 11. Linked List. Apa Itu Linked List?

STRUKTUR DATA Pertemuan 1 s.d 8

Penerapan BFS dan DFS dalam Garbage Collection

Array ARRAY BERDIMENSI SATU. Representasi (Pemetaan) di memori. Lihat gambar dibawah ini, nilai data A (18) dismpan mulai dari alamat 1136 di memori.

Konsep Dasar Pemrograman Dan Pengenalan C++

Pendahuluan Struktur Data. Nisa ul Hafidhoh

Bab 9 Pointer. 9.1 Pendeklarasian pointer

BAB 6 FUNGSI TUJUAN PRAKTIKUM

Algoritma dan Struktur Data. Pertemuan 6 Alokasi Memori Dinamis

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

SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER STMIK AMIKOM YOGYAKARTA

BAB IX LINKED LIST (SENARAI BERANTAI)

STRUKTUR DATA Pertemuan 1 s.d 8

PERTEMUAN V PEMROGRAMAN TERSTRUKTUR DENGAN VISUAL C Setiap bahasa C mempunyai satu fungsi dengan nama main (program utama).

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-11 Pointer 2

Algoritma Dan Struktur Data II

1. Tipe Data Sederhana Hanya dimungkinkan untuk menyimpan sebuah nilai data dalam sebuah variabel Ada 5 macam : int, float, double, char, boolen

VI. FUNGSI. Fungsi Main ( ) Fungsi a ( ) Fungsi b ( ) Fungsi c ( ) Fungsi c1 ( ) Fungsi c2 ( ) Fungsi c3 ( ) Bentuk umumnya :

BAB VIII POINTER. Tujuan :

PRAKTIKUM 11 POINTER 1

2. Mahasiswa dapat membuat dan menggunakan array dan linked list dalam suatu kasus.

MODUL ARSIKOM POINTER DAN ARRAY. Disusun oleh : Afif Setyo Nugroho ( ) Agus Setyawan ( ) Maulana Akhsan ( )

Pada bahasa pemrograman C++, dapat dibuat program dengan beberapa sub-program sesuai dengan keinginan dengan menggunakan fungsi.

C V.S. C++ Oleh : Rasim

Array Dimensi Satu. Pendahuluan. Slamet Kurniawan, S.Kom

Array 1 A. TUJUAN PEMBELAJARAN

POINTER. Tim Alpro Teknik Informatika

Larik/ Array int a1, a2, a3, a4, a5;

BAHASA PEMROGRAMAN 1 (PERTEMUAN 3)

Linked List 6.3 & 7.3 NESTED LOOP

04. Single Linked List

Pemrograman Berorientasi Obyek (C++) Departemen Ilmu Komputer FMIPA IPB 2013

Kurikulum Qt. Chapter 4 Function. Fungsi

BAB VII Tujuan 7.1 Deskripsi dari Binary Tree

BAB II Senarai Berantai (Linked List)

ASD. Alokasi Memori Dinamis

A. Putting a Program Together

A. Putting a Program Together

MODUL 6 SINGLE & DOUBLE LINKED LIST

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

Transkripsi:

PERTEMUAN VI POINTER 6.1 Tujuan Praktikum Praktikan mengenal type data Pointer, mengerti tentang konsep dasar dari pointer, dapat mendeklarasikan pointer di Pascal serta dapat menggunakannya di dalam sebuah program. Mengerti tentang pembuatan array dengan menggunakan pointer, serta tahu cara mengalokasikan dan mende-alokasikan suatu variabel didalam sebuah program. 6.2 Teori Penunjang Pointer adalah suatu variabel yang menunjuk ke alamat memory variabel yang lainnya. Dengan menggunakan pointer banyak hal dapat dilakukan seperti melewatkan suatu variabel yang ada di dalam fungsi yang telah di bahas pada babbab sebelumnya. Suatu pointer bukan berisi dengan suatu nilai data seperti halnya pada variabel biasa, variabel pointer berisi dengan suatu alamat. Untuk mendeklarasikan variabel pointer kita menggunakan tanda asterik / bintang (*) didepan variabel yang di deklarasikan pada tipe data tertentu. Tanda ini juga dapat dipakai untuk mengakses nilai dari variabel yang telah ditunjuk. Untuk mendapatkan alamat dari variabel pointer kita menggunakan tanda &. Untuk lebih mengerti uraian diatas perhatikan ilustrasi berikut ini : int *px, x, y; // mendeklarasikan variabel pointer px bertipe integer x = 1000; // memberikan nilai x sama dengan 1000 px = &x; // dengan statement ini variabel pointer sekarang menunjuk ke alamat variabel x y = *px; // mengakses variabel yang ditunjuk oleh pointer cout << px; // menampilkan isi dari variabel pointer px berupa alamat cout << endl; // ganti baris baru cout << y; // menampilkan isi dari variabel yang di tunjuk

FFDD 1000 Hasil dari program diatas adalah : Dari ilustrasi diatas dapat kita lihat bahwa px (yang merupakan variabel pointer) berisi alamat dari variabel x. Sedangkan jika kita hendak mengakses nilai dari variabel yang ditunjuk oleh variabel pointer (nilai dari variabel x) maka kita gunakan tanda asterik di depan variabel pointer. Seandainya pada program diatas tidak terdapat pernyataan : px = &x; Namun terdapat pernyataan : y = *px; maka, y tidaklah berisi nilai x, sebab px belum diatur agar menunjuk variabel x. hal seperti ini dapat menyebabkan komputer menjadi hang karena pointer belum di inisialisasikan. Satu hal lagi yang perlu diperhatikan lagi jika kita menggunakan pointer ialah tipe variabel pointer dengan tipe data variabel yang ditunjuknya haruslah sama contohnya pada program diatas variabel pointer px bertipe sama dengan variabel yang ditunjuknya yaitu x, sama-sama bertipe integer. Pointer dan Array Hubungan antara pointer dan array pada C/C++ sangatlah erat, sebab sesungguhnya array secara internal akan diterjemahkan dalam bentuk pointer. Untuk jelasnya perhatikan program berikut ini : static int nilai[3] = 10,20,30 ; // pemberian nilai ke array nilai int *pnilai; // mendeklarasikan variabel pointer pnilai pnilai = nilai; // pnilai berisi alamat array for(int i=0; i<3; i++) cout << *(pnilai + i) << endl; // tampilkan isi array melalui variabel pointer

Dari program diatas dapat dilihat bahwa pengaksesan elemen array dapat dilakukan melalui alamat memori pada variabel pointer. *(pnilai + i) sama hal nya dengan nilai[] pada array biasa. Output dari program diatas akan menghasilkan nilai 10, 20 dan 30. untuk array dua, tiga dan n dimensi pun dapat kita buat dengan menggunakan pointer. Contoh untuk array dengan dimensi dua pendeklarasiannya adalah : *(*(pnilai + i) + j) Array dari pointer Suatu array bisa digunakan untuk menyimpan sejumlah pointer. Sebagai contoh untuk membuat array satu dimensi yang bertipe integer kita seklarasikan : int nilai[3] dirubah menjadi int *nilai terdapat perbedaan diantara kedua statement diatas, pada array nilai[3] akan menyebabkan tiga buah tempat untuk nilai-nilai integer atau sebanyak 6 byte memori akan disiapkan untuk array ini (int = 2 byte dikali 3 tempat = 6 byte). Untuk array pointer, kompiler tidak secara otomatis menyiapkan tempat untuk nilai-nilainya, karena banyaknya nilai-nilai yang akan digunakan belum diketahui. Untuk mengatasi masalah ini, maka untuk menyiapkan sejumlah blok memori dapat digunakan cara alokasi dinamik (dynamic allocation). Cara alokasi dinamik ini menggunakan memori yang masih kosong di luar memori yang biasanya digunakan untuk data. Untuk menggunakan cara ini, perlu digunakan fungsi khusus didalam pointer yaitu menggunakan fungsi standar malloc() dengan prototypenya berada di header file stdlib.h. (ini hanya digunakan jika kita menggunakan bahasa C), jika kita menggunakan bahasa C++ maka fungsi standar yang digunakan ialah new. Contoh mengalokasikan suatu array dengan menggunakan fungsi-fungsi diatas adalah sebagai berikut : nilai = malloc(sizeof(int) * 3); // untuk mengalokasikan dengan C nilai = new int // untuk mengalokasikan dengan C++ hasil dari pengalokasian diatas ialah suatu alamat yang menunjukkan byte pertama dari memori yang dialokasikan di heap. Jika alokasi memori ini gagal, bisa dikarenakan tidak mencukupinya memori pada heap, maka fungsi diatas akan menghasilkan nilai NULL.

Setelah kita mengalokasikan memori untuk array, ada baiknya jika kita menghapus / mende-alokasikan kembali array tersebut dari memori, sehingga ruang di memori heap dapat digunakan untuk keperluan yang lainnya. Untuk menghapus / mende-alokasikan sebuah array diperlukan sebuah fungsi standar free() dari header file stdlib.h untuk para pengguna bahasa C, jika kita menggunakan C++ kita menggunakan fungsi standar delete. Contohnya : free(nilai); // mendealokasikan dengan bahasa C delete [] nilai; // mendealokasikan dengan bahasa C++ selanjutnya pengalokasian diatas dapat dengan mudah kita membentuk suatu struktur data link list maupun double link list dengan menggunakan bahasa C/C++. Berikut ini akan diberikan contoh program dengan menggunakan fungsi standar diatas (langsung dengan menggunakan C++) : #include <conio.h> struct mhs char npm[9]; char nama[25]; char alamat[30]; int nilai; ; mhs *pmhs; int n; clrscr(); cout << "PROGRAM DATA MAHASISWA" << endl; cout << "----------------------" << endl << endl; cout << "Masukkan Banyaknya Data : "; cin >> n; cout << endl; pmhs = new mhs[n]; for (int i=0; i<n; i++) cout << "Input Data Mahasiswa Ke-" << i+1 << endl; cout << "Nama Anda : "; cin >> pmhs[i].nama; cout << "NPM Anda : "; cin >> pmhs[i].npm; cout << "Alamat Anda : "; cin >> pmhs[i].alamat; cout << "Nilai SBP Anda : "; cin >> pmhs[i].nilai; cout << endl;

cout << "Tekan Sembarang tombol...!"; getch(); clrscr(); cout << " Output Data Mahasiswa" << endl << endl; cout << "===========================================" << endl; cout << " No. Nama NPM Alamat Nilai" << endl; cout << "===========================================" << endl; for (i=0; i<n; i++) gotoxy(2, i+6); cout << i+1 << "."; gotoxy(7, i+6); cout << pmhs[i].nama; gotoxy(22, i+6); cout << pmhs[i].npm; gotoxy(33, i+6); cout << pmhs[i].alamat; gotoxy(53, i+6); cout << pmhs[i].nilai << endl; cout << "===========================================" << endl; delete [] pmhs; getch(); Pointer ke Pointer Pointer ke pointer merupakan suatu pointer yang menunjuk ke alamat pointer yang lainnya. Dengan menggunakan dua buah asterik pada variabel pointer, maka variabel pointer tersebut dapat mengakses ke variabel pointer yang lainnya. Contohnya : int a, *b, **c; // mendeklarasikan variabel pointer a = 1000; // memberikan nilai a sama dengan 1000 b = &a; // dengan statement ini variabel pointer sekarang menunjuk ke alamat variabel a c = &b; // dengan statement ini variabel pointer sekarang menunjuk ke alamat variabel a cout << *b; // menampilkan isi dari variabel pointer b berupa alamat cout << endl; // ganti baris baru cout << **c; // menampilkan isi dari variabel pointer c 1000 1000 Hasil dari program diatas adalah :

Dari program diatas dapat disimpulkan bahwa dengan menggunakan pointer ke pointer, isi dari pointer yang terakhir merupaka alamat memori dari variabel pointer sesungguhnya. Pada contoh diatas, variabel b yang menunjuk ke variabel a ditunjuk kembali oleh variabel c sehingga nilai dari variabel c sebenarnya sama dengan variabel b dan variabel a. 6.3 Laporan Pendahuluan 1. Pengertian Tree serta perbedaannya dengan Binary Tree. 2. Jelaskan istilah-istilah pada Tree : daun, root, level, tinggi dan derajad. 3. Sebutkan dan jelaskan jenis kunjungan yang terdapat pada binary tree. 4. Bagaimana kunjungan secara Preorder, Inorder dan Postorder dari tree yang telah dibuat oleh PJ. 6.4 Materi Praktikum 1. Memberikan penjelasan secara teoritis mengenai pointer, terutama pengertian, konsep dasar, cara pendeklariannya dalam bahasa C/C++. 2. Penjelasan cara menerapkan pointer untuk membentuk struktur yang dinamis, melalui penggunaan fungsi-fungsi standar new dan delete. 3. memberikan contoh cara pembuatan array pointer dan pointer ke pointer. 4. Pemberian program-program sederhana pointer, diusahakan program yang menggunakan alokasi dinamik atau jika bisa langsung penerapan link list / double link list didalam program. 5. Nilai K (Keterampilan) didapat jika praktikan melengkapi program tentang alokasi dinamik, seperti bagaimana cara menghapus sebuah variabel pointer dari memory, dll. 6.5 Laporan Akhir Buat Algoritma dari program yang dibuat sebelumnya (jika link list dapat lebih baik). Program dapat dilengkapi dengan penggunaan pointer ke pointer atau dapat juga menggunakan array pointer untuk yang dua dimensi.