Memory Management 2 : References. Pertemuan 7

dokumen-dokumen yang mirip
Memory Management 3 : Advance Pointers & References. Pertemuan 8

Struktur Program C++ Pertemuan 3

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

FAKULTAS TEKNIK UNIVERSITAS NEGERI YOGYAKARTA

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

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

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

ALGORITMA DAN STRUKTUR DATA POINTER DAN FUNCTION

Pemrograman Dasar C. Minggu 9

MODUL 10 Fungsi 10.1 Kompetensi 10.2 Alat Dan Bahan: 10.3 Ulasan Teori: Dasar Fungsi Deklarasi Fungsi

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

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

Algoritma dan Pemrograman Tahar Agastani Teknik Informatika UIN

Program menjadi terstruktur Dapat mengurangi pengulangan kode program. Fungsi dapat diimplementasikan dalam tiga bentuk :

FUNCTIONS. Function adalah satu blok instruksi yang akan dieksekusi ketika dipanggil dari bagian lain dalam suatu program.

Fungsi 2 DASAR PEMROGRAMAN

Algoritma dan Struktur Data. Pertemuan 5 Pointer

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

ALGORITMA DAN STRUKTUR DATA

Function. Function adalah satu blok instruksi yang dieksekusi ketika dipanggil dari bagian lain dalam suatu program. Format dari function :

SUB PROGRAM P E N G A N TA R P R O G R A M S T U D I. Institut Teknologi Sumatera

Contoh function 1 : Output : // function example The result is 8 #include <iostream.h>

Pertemuan Function. Obyektif Praktikum : 1. Mengerti konsep dasar penggunaan Function

Pointer. ted = &andy;

/* File program : tukar1.c Untuk melihat pengaruh pemanggilan nilai pada fungsi untuk penukaran dua data */

Pointer dan Referensi

Algoritme dan Pemrograman

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

Sedangkan bentuk umum pendefinisian fungsi adalah : Tipe_fungsi nama_fungsi(parameter_fungsi) { statement statement... }

BAB 6. FUNGSI. Tujuan penggunaan fungsi : 1. Program menjadi terstruktur 2. Dapat mengurangi pengulangan kode program.

Fungsi PHP function, PHP what s what your s function?

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

BEKERJA DENGAN JAVA CLASS LIBRARY

Pemrograman Lanjut. Instance Variable Access Modifier Set dan Get Method

Function. Contoh function 1 : // function example #include <stdio.h> int addition (int a, int b){ int r; r=a+b; return (r); }

POINTER. Tim Alpro Teknik Informatika

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

MEMBUAT KELAS SENDIRI. Dewi Sartika, M.Kom

Pengenalan OOP. Object-Oriented programming (OOP) Menitikberatkan pada konsep object sebagai elemen dasar dari program.

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

Data Structures. Class 5 Pointer. Copyright 2006 by The McGraw-Hill Companies, Inc. All rights reserved.

Fungsi : Dasar Fungsi

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

PEMROGRAMAN BERORIENTASI OBJEK OBJECT

Algoritma Pemrograman 2B (Pemrograman C++)

A. TUJUAN 1. Menjelaskan tentang prinsip dasar fungsi. 2. Menjelaskan tentang.parameter formal dan parameter aktual

C V.S. C++ Oleh : Rasim

Konsep Pemrograman. Bab 7. Fungsi1. Konsep Pemrograman Politeknik Elektronika Negeri Surabaya 2006 PENS-ITS. Umi Sa adah

PEMROGRAMAN BERORIENTASI OBJEK

TIM ASISTEN PRAKTIKUM ALGORITMA DAN PEMROGRAMAN 2016

PEMROGRAMAN BERORIENTASI OBJEK STRUCTURE & CLASS

Algoritma dan Struktur Data. Pointer Pada Struct

PEMROGRAMAN BERORIENTASI OBJEK. Tipe Data. Budhi Irawan, S.Si, M.T

MODUL PRAKTIKUM. MODUL I - VIII Modul penuntun dan bahan praktikum matakuliah algoritma dan pemograman

Achmad Solichin.

Kurikulum Qt. Chapter 4 Function. Fungsi

ilmu bahasa pemrograman ilmu c++ Copyright izie ilmu c++

Organisasi Sistem Komputer. Prosedur. Sekolah Teknik Elektro dan Informatika ITB

BAHASA PEMROGRAMAN. Untuk SMK. Kadarisman Tejo Yuwono Totok Sukardiyono Adi Dewanto. : Ratu Amilia Avianti. Perancang Kulit

LINKED LIST. TUJUAN UMUM Memahami konsep linked list TUJUAN KHUSUS

Fungsi, Parameter, Rekursi

Operator dan Assignment

FUNGSI. tipe Tipe nilai yang dihasilkan oleh fungsi. Jika tidak dinyatakan, hasil fungsi dianggap bilangan bulat (int)

File & Stream. Kegunaan File : file : ini. dengan. iostream.h) suatu. stream, Jika. dapat menghubungkan. mendeklarasikan. kita.

KONSEP DASAR. menyusunnya menjadi potongan-potongan mudah untuk ditangani dibanding. conquer.

MODUL V POINTER DAN STRING

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN

VARIABEL, TIPE DATA DAN EKSPRESI Bab 2

Program pendek dan simple = mudah dihandle. Program besar, banyak dan kompleks = tidak

Algoritme dan Pemrograman

Dasar Pemrograman Java

Function nama dipisahkan

int fungsi_2() { int main() { fungsi_1(); fungsi_2(); return 0;

Alpro & Strukdat 1 C++ (Sub Program) Dwiny Meidelfi, S.Kom., M.Cs.

MODUL ALGORITMA DAN PEMROGRAMAN. STMIK AMIKOM Yogyakarta. Rajif Agung Yunmar, S.Kom., M.Cs.

Pemrograman Berbasis Objek Operator dan Assignment

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

MODUL 5 SUBPROGRAM / FUNGSI

Algoritma Pemrograman [BS204]

Struktur Kontrol. Contoh, Akan tercetak x is 100 jika nilai yang disimpan pada variable x adalah 100:

Program Menggabungkan 2 Tipe String

Algoritma dan Struktur Data. Linked List

Fungsi 1 DASAR PEMROGRAMAN

Bab 8. Dasar-Dasar OOP

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

12/29/2011 ILKOM IPB 1. Algoritme dan Pemrograman. Fungsi. Fungsi. y = f (x) = x m = jumlah ( a, b ) = a + b

PENGANTAR KOMPUTER & SOFTWARE II. Pengulangan (For) Tim Pengajar KU Institut Teknologi Sumatera

5. Fungsi. S. Indrianii L, M.T

BAB VII. FUNCTION. A. Pengantar Function. #include <iostream.h> #include <conio.h> { clrscr(); // detail function

P06 Pointer dan Fungsi

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

Bab 10 Fungsi & Prosedur

Basic Input/Output Operator Yoannita

Pemrograman Dasar M E T H O D / F U N G S I

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

Algoritma dan Struktur Data Praktikum 3. Pointer

Algoritma dan Pemrograman. Oleh: Eddy Prasetyo N

IT234 ALGORITMA DAN STRUKTUR DATA FUNGSI

LAPORAN PRAKTIKUM RESMI QUEUE

Program pendek dan simple = mudah dihandle. Program besar, banyak dan kompleks = tidak

Transkripsi:

Memory Management 2 : References Pertemuan 7

Outline Memory Management 2 : References Creating References Using the Address of Operator on References References Cannot be Reassigned Passing Function Arguments by Reference Making swap() Work with Pointers Implementing swap() with References Returning Multiple Values Returning Values by Reference

Membuat Reference Reference adalah sebuah "alias", ketika Anda membuat reference, Anda artinya menginisialisasi reference tersebut dengan nama objek lainnya sebagai target. Dengan demikian, reference bertindak sebagai nama alternatif dan apa pun yang Anda lakukan pada reference tersebut benar-benar dilakukan untuk objek target. Reference dapat menggunakan nama variabel apapun, jika Anda memiliki sebuah variabel integer bernama someint, Anda dapat membuat referensi ke variabel yang dibaca sebagai rsomeref adalah reference ke integer yang diinisialisasi untuk merujuk someint. int & rsomeref = someint;

Alamat untuk Operator References Jika Anda meminta reference untuk alamatnya, ia akan mengembalikan alamat dari target. Itulah sifat reference. Misalnya, jika Anda memiliki class President, kemudian Anda mendeklarasikan sebuah instance dari kelas tersebut dan menyatakan referensi untuk President dan menginisialisasi dengan cara sebagai berikut : President Barack_Obama; President &Obama = Barack_Obama; // declare a reference

Apa saja yang dapat di-reference Setiap objek dapat dirujuk (di-reference), termasuk objek yang ditetapkan pengguna. Perhatikan bahwa Anda membuat reference ke sebuah obyek, bukan ke class atau tipe data seperti int. Anda tidak menulis ini: int &rintref = int; // wrong Anda harus menginisialisasi rintref untuk bilangan bulat tertentu, seperti ini: int howbig = 200; int &rintref = howbig;

Dengan cara yang sama, Anda tidak dapat melakukan inisialisasi reference ke class Cat: Cat &rcatref = Cat; // wrong Anda harus menginisialisasi rcatref ke objek Cat tertentu: Cat Frisky; Cat &rcatref = Frisky; Referensi ke obyek yang digunakan seperti obyek itu sendiri. Data anggota dan fungsi dapat diakses menggunakan akses operator anggota kelas (.), tindakan referensi ini ebagai alias untuk objek.

1. Creating a Reference Reference.cpp 1: #include <iostream> 2: 3: int main() 4: { 5: int intone; 6: int &rsomeref = intone; 7: 8: intone = 5; 9: std::cout << intone: << intone << \n ; 10: std::cout << rsomeref: << rsomeref << \n ; 11: 12: rsomeref = 7; 13: std::cout << intone: << intone << \n ; 14: std::cout << rsomeref: << rsomeref << \n ; 15: return 0; 16: }

2. Using the Address of Operator on References Reference2.cpp 1: #include <iostream> 2: 3: int main() 4: { 5: int intone; 6: int &rsomeref = intone; 7: 8: intone = 5; 9: std::cout << intone: << intone << \n ; 10: std::cout << rsomeref: << rsomeref << \n ; 11: 12: std::cout << &intone: << &intone << \n ; 13: std::cout << &rsomeref: << &rsomeref << \n ; 14: 15: return 0; 16: }

3. References Cannot be Reassigned Assignment.cpp 1: #include <iostream> 2: 3: int main() 4: { 5: int intone; 6: int &rsomeref = intone; 7: 8: intone = 5; 9: std::cout << intone:\t << intone << \n ; 10: std::cout << rsomeref:\t << rsomeref << \n ; 11: std::cout << &intone:\t << &intone << \n ; 12: std::cout << &rsomeref:\t << &rsomeref << \n ; 13: 14: int inttwo = 8; 15: rsomeref = inttwo; // not what you think! 16: std::cout << \nintone:\t << intone << \n ; 17: std::cout << inttwo:\t << inttwo << \n ; 18: std::cout << rsomeref:\t << rsomeref << \n ; 19: std::cout << &intone:\t << &intone << \n ; 20: std::cout << &inttwo:\t << &inttwo << \n ; 21: std::cout << &rsomeref:\t << &rsomeref << \n ; 22: return 0; 23: }

4. Passing Function Arguments by Reference ValuePasser.cpp 1: #include <iostream> 2: 3: void swap(int x, int y); 4: 5: int main() 6: { 7: int x = 5, y = 10; 8: 9: std::cout << Main. Before swap, x: << x 10: << y: << y << \n ; 11: swap(x,y); 12: std::cout << Main. After swap, x: << x 13: << y: << y << \n ; 14: return 0; 15: } 16: 17: void swap (int x, int y) 18: { 19: int temp; 20: 21: std::cout << Swap. Before swap, x: << x 22: << y: << y << \n ; 23: 24: temp = x; 25: x = y; 26: y = temp; 27: 28: std::cout << Swap. After swap, x: << x 29: << y: << y << \n ; 30: 31: }

5. Making swap() Work with Pointers PointerSwap.cpp 1: #include <iostream> 2: 3: void swap(int *x, int *y); 4: 5: int main() 6: { 7: int x = 5, y = 10; 8: 9: std::cout << Main. Before swap, x: << x 10: << y: << y << \n ; 11: swap(&x, &y); 12: std::cout << Main. After swap, x: << x 13: << y: << y << \n ; 14: return 0; 15: } 16: 17: void swap(int *px, int *py) 18: { 19: int temp; 20: 21: std::cout << Swap. Before swap, *px: << *px 22: << *py: << *py << \n ; 23: 24: temp = *px; 25: *px = *py; 26: *py = temp; 27: 28: std::cout << Swap. After swap, *px: << *px 29: << *py: << *py << \n ; 30: }

6. Implementing swap() with References ReferenceSwap.cpp 1: #include <iostream> 2: 3: void swap(int &x, int &y); 4: 5: int main() 6: { 7: int x = 5, y = 10; 8: 9: std::cout << Main. Before swap, x: << x 10: << y: << y << \n ; 11: swap(x, y); 12: std::cout << Main. After swap, x: << x 13: << y: << y << \n ; 14: return 0; 15: } 16: 17: void swap(int &rx, int &ry) 18: { 19: int temp; 20: 21: std::cout << Swap. Before swap, rx: << rx 22: << ry: << ry << \n ; 23: 24: temp = rx; 25: rx = ry; 26: ry = temp; 27: 28: std::cout << Swap. After swap, rx: << rx 29: << ry: << ry << \n ; 30:}

7. Returning Multiple Values ReturnPointer.cpp 1: #include <iostream> 2: 3: short factor(int, int*, int*); 4: 5: int main() 6: { 7: int number, squared, cubed; 8: short error; 9: 10: std::cout << Enter a number (0-20): ; 11: std::cin >> number; 12: 13: error = factor(number, &squared, &cubed); 14: 15: if (!error) 16: { 17: std::cout << number: << number << \n ; 18: std::cout << square: << squared << \n ; 19: std::cout << cubed: << cubed << \n ; 20: } 21: else 22: std::cout << Error encountered!!\n ; 23: return 0; 24: } 25:

26: short factor(int n, int *psquared, int *pcubed) 27: { 28: short value = 0; 29: if (n > 20) 30: { 31: value = 1; 32: } 33: else 34: { 35: *psquared = n*n; 36: *pcubed = n*n*n; 37: value = 0; 38: } 39: return value; 40: }

8. Returning Values by Reference ReturnReference.cpp 1: #include <iostream> 2: 3: enum ERR_CODE { SUCCESS, ERROR }; 4: 5: ERR_CODE factor(int, int&, int&); 6: 7: int main() 8: { 9: int number, squared, cubed; 10: ERR_CODE result; 11: 12: std::cout << Enter a number (0-20): ; 13: std::cin >> number; 14: 15: result = factor(number, squared, cubed); 16: 17: if (result == SUCCESS) 18: { 19: std::cout << number: << number << \n ; 20: std::cout << square: << squared << \n ; 21: std::cout << cubed: << cubed << \n ; 22: } 23: else 24: { 25: std::cout << Error encountered!!\n ; 26: } 27: return 0; 28: } 29:

30: ERR_CODE factor(int n, int &rsquared, int &rcubed) 31: { 32: if (n > 20) 33: { 34: return ERROR; // simple error code 35: } 36: else 37: { 38: rsquared = n*n; 39: rcubed = n*n*n; 40: return SUCCESS; 41: } 42: }

Tugas Modifikasi program ReturnPointer.cpp menggunakan reference dibandingkan sebelumnya menggunakan pointer. Modifikasi program ReferenceSwap.cpp agar dapat melakukan swap 3 angka. Modifikasi program Leak.cpp menggunakan pointer yang memanggil TheFuction() dan gunakan metode "proper deletion" untuk mencegah kekurangan memory. Modifikasi program ObjectRef.cpp dan RefPasser.cpp untuk menampilkan alamat dari variabel sebelum fungsi dipanggil dan setelah fungsi dipanggil. Hal ini akan memberikan penjelasan bagaimana mekanisme tersebut bekerja.