STRUKTUR DATA STRUCT DAN POINTER

Slides:



Advertisements
Presentasi serupa
STRUKTUR DATA Struct Atau Record.
Advertisements

Lingkup Variabel Kelas Penyimpanan Rekursi
[Kristanto:2009] perintah if berguna untuk memilih satu dari 2 atau lebih alternatif jawaban yang tersedia. Jika perintah if tersebut terdiri dari 2 atau.
PERTEMUAN IV POINTER Pointer adalah suatu variabel penunjuk yang menunjuk pada suatu alamat memori komputer Pointer merupakan.
PERTEMUAN VIII POINTER
Elemen Dasar C++.
Polymorphism Suatu fungsi anggota dari suatu class dapat dijadikan sebagai fungsi virtual Jika fungsi ini dideklarasikan kembali pada class turunan dan.
Fungsi Friend Dalam bahasa C++ kita dapat membuat suatu fungsi yang berada di luar kelas (class) dan dapat meng-ak-ses bagian private suatu kelas. Fungsi.
10 KELAS class nama_class struct nama_struct
Pointer.
Struktur Sugeng Supriyadi, M.Kom.
Fungsi (lanjutan) Pertemuan ke-9 Bahasa C.
ARRAY (Lanjutan).
Pemrograman Terstruktur
Pemrograman Terstruktur
PEMROGRAMAN TERSTRUKTUR
3 Variabel, Konstanta Tipe Data dan dalam Bahasa C/C++ Java dan Bab
Komentar, Identifier dan Tipe Data
By; NILA FEBY PUSPITASARI
Pertemuan 17 ENUM & STRUCT Dasar Pemrograman Renni Angreni, S.Kom.
PENGENALAN c++ DAN STRUKTUR DASAR C++
ARRAY.
Person 10Person Variabel Lokal dan Global Suatu variabel lokal dideklarasikan di dalam fungsi ‘a’, dan tidak dapat diakses di luar fungsi (a)
PEMROGRAMAN SISTEM PERNYATAAN DASAR PILIHAN Pertemuan V
ARRAY OF STRUCT Apabila hendak menggunakan 1 struct untuk beberapa kali, ada 2 cara : Deklarasi manual #include typedef struct Mahasiswa { char.
Class.
Struktur (Struct).
CLASS Tipe data kelas didefinisikan dengan kata kunci (keyword) class, yang merupakan generalisasi dari pernyataan struct. Pernyataan struct secara umum.
Struktur Dalam C++, tipe data struktur yang dideklarasikan dengan kata kunci struct, dapat mempunyai komponen dengan sembarang tipe data, baik tipe data.
Struktur & Kelas Erizal, S.Si, M.Kom Universitas Respati Yogyakarta
Fungsi.
Pemrograman Dasar Pointers.
Pointer Dr. Lily Wulandari.
POINTER (VAR.PENUNJUK)
STATEMENT while Statement while digunakan untuk memproses suatu perintah atau beberapa perintah dalam beberapa kali. Bentuk pernyataan: while (kondisi)
Pertemuan 22 POINTER Bag.2 Dasar Pemrograman Renni Angreni, S.Kom.
Algoritma dan Struktur Data
#include //bagian modul int hitung(x,y) { return(x+y); } //bagian utama main() { int jumlah,a,b; a=8; b=2; jumlah=hitung(a,b); cout
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.
Pertemuan 19 FUNGSI (Method) Bag.2 Dasar Pemrograman Renni Angreni, S.Kom.
STRUKTUR DATA Structure.
STRUCT OF ARRAY Apabila hendak menggunakan 1 struct untuk beberapa kali, ada 2 cara : Deklarasi manual #include typedef struct Mahasiswa { char.
Pemrograman Berorientasi Obyek1 Sub Pokok Bahasan Pointer. Reference. Function Passing Parameter by Value, by Reference, by Pointer.
STRUKTUR Struktur merupakan kumpulan elemen data yang digabungkan menjadi satu kesatuan data. Masing-masing elemen data tersebut dinamakan field atau elemen.
Bab 05 Tipe Data dan Mengisi Variabel
Dibuat oleh : Renni Angreni, S.Kom.
POINTER.
PERTEMUAN KE-9 IFII SAINTEC UIN SGD. FUNCTION (FUNGSI) Function (fungsi) adalah kumpulan pernyataan/statement yang diberi nama, dimana nama tersebut dapat.
STRUKTUR Struktur merupakan kumpulan elemen data yang digabungkan menjadi satu kesatuan data. Masing-masing elemen data tersebut dinamakan field atau elemen.
Teknik Pemrog. Terstruktur 2
Pointer (Part 1).
PEMROGRAMAN SISTEM PERNYATAAN DASAR FUNGSI Pertemuan VI
FUNGSI Nyimas Artina Arfansyah, S.Kom, M.Si.
STRUKTUR PERULANGAN 2 (LOOPING-2)
POINTER Bag.2 Pertemuan 22 Dibuat oleh : Renni Angreni, S.Kom. Triana Elizabeth, S.Kom.
STRUKTUR DATA DIMENSIONAL ARRAY
Fungsi, Array dan String
Prosedur dan Fungsi Triana Elizabeth, S.Kom.
Pemrograman Berorientasi Objek C++ Object Oriented Programming Rachmansyah, S.Kom
Universitas Respati Yogyakarta
FUNCTION Fungsi (Function) merupakan sekumpulan instruksi yang membentuk satu unit serta memiliki nama. Fungsi digunakan.
S T R U K T U R.
TYPE DATA ,VARIABEL &KONSTANTA Dalam C++
FUNCTION Fungsi (Function) merupakan sekumpulan instruksi yang membentuk satu unit serta memiliki nama. Fungsi digunakan.
KELAS DAN OBJEK BAGIAN I Pertemuan 6.
P O I N T E R.
PERTEMUAN 10 Algoritma Presented by : Sity Aisyah, M.Kom
- PERTEMUAN 7 - METODE/SUB PROGRAM
STRUCTURE Struktur (Structure = struct) merupakan suatu struktur data yang terdiri dari satu atau lebih variabel yang bertipe data.
Algoritma dan Pemrograman C++ (Data Structures)
Transcript presentasi:

STRUKTUR DATA STRUCT DAN POINTER SULIDAR FITRI, M.Sc

STRUCT Dalam C++, tipe data struktur yang dideklarasikan dengan kata kunci struct, dapat memiliki komponen dengan sembarang tipe data, baik tipe data dasar maupun tipe data turunan, termasuk fungsi. Sehingga, tipe data struktur menjadi sangat berdaya guna.

Contoh Misal : kita ingin membentuk tipe data struktur yang namanya kotak. Maka dapat dideklarasikan sebagai berikut : struct tkotak { double panjang; double lebar; }; tkotak kotak; Untuk memberi nilai ukuran kotak tersebut, kita dapat menggunakan perintah : kotak.panjang = 10; kotak.lebar = 7;

Struktur & Fungsi (1) Cara lain untuk memberi nilai panjang dan lebar adalah dengan membentuk suatu fungsi. Karena fungsi ini hanya digunakan untuk memberi nilai data panjang dan lebar suatu kotak, tentunya fungsi ini khusus milik objek kotak, sehingga harus dianggap sebagai anggota struktur kotak. C++ sebagai bahasa pemrograman dapat mendefinisikan anggota tipe struktur yang berupa fungsi.

Struktur & Fungsi (2) Dengan menambah fungsi tersebut, maka struktur kotak menjadi lebih jelas bentuknya, seperti berikut : struct tkotak { double panjang; double lebar; void SetUkuran(double pj, double lb) panjang = pj; lebar = lb; }; tkotak kotak; Dengan tipe struktur kotak seperti itu, untuk memberi nilai panjang dan lebar hanya dengan memanggil fungsi SetUkuran() : kotak.SetUkuran(10,7);

Struktur & Fungsi (3) Selain punya ukuran panjang dan lebar, kotak juga mempunyai keliling dan luas. Dengan demikian, kita dapat memasukkan fungsi untuk menghitung keliling dan luas ke dalam struktur kotak. Definisi fungsi yang menjadi anggota struktur dapat ditempatkan di luar tubuh struktur.

Struktur & Fungsi (4) Dengan cara ini maka deklarasi struktur kotak menjadi seperti berikut : struct tkotak { double panjang; double lebar; void SetUkuran(double pj, double lb); double Keliling(); double Luas(); }; tkotak kotak;

Struktur & Fungsi - Contoh Contoh penerapan struktur kotak dapat dilihat dalam program berikut : #include<iostream.h> #include<conio.h> struct tkotak { double panjang; double lebar; void SetUkuran(double pj, double lb); double Keliling(); double Luas(); };

Struktur & Fungsi - Contoh int main() { tkotak kotak; kotak.SetUkuran(10,7); cout<<"Panjang : "<<kotak.panjang<<endl; cout<<"Lebar : "<<kotak.lebar<<endl; cout<<"Keliling : "<<kotak.Keliling()<<endl; cout<<"Luas : "<<kotak.Luas()<<endl; getch(); return 0; }

Struktur & Fungsi - Contoh void tkotak::SetUkuran(double pj, double lb) { panjang = pj; lebar = lb; } double tkotak::Keliling() return 2*(panjang+lebar); double tkotak::Luas() return panjang*lebar;

Struktur & Fungsi - Contoh Tampilan Output : Panjang : 10 Lebar : 7 Keliling : 34 Luas : 70

Struct & Class Bentuk program di atas, adalah contoh gaya pemrograman berorientasi prosedur (terstruktur). Dalam pemrograman berorientasi objek, jika kita telah menentukan suatu objek tertentu, maka objek tersebut kita definisikan dalam bentuk tipe baru yang namanya kelas. Tipe data kelas didefinisikan dengan kata kunci (keyword) class, yang merupakan generalisasi dari pernyataan struct. Pernyataan struct secara umum digantikan dengan pernyataan class. Jika objek kotak dideklarasikan dalam bentuk kelas, maka deklarasinya mirip dengan struktur.

Deklarasi class tkotak { double panjang; double lebar; public: void SetUkuran(double pj, double lb); double Keliling(); double Luas(); }; tkotak kotak;

Deklarasi Dalam deklarasi kelas tersebut, muncul kata public. Data atau fungsi yang dideklarasikan di bawah kata kunci public mempunyai sifat dapat diakses dari luar kelas secara langsung. Dalam deklarasi tersebut, variabel panjang dan lebar tidak bersifat public, sehingga tidak dapat diakses secara langsung dari luar kelas. Perintah-perintah di bawah ini tidak dapat dijalankan : kotak.panjang = 10; kotak.lebar = 7; cout<<”Panjang : ”<<kotak.panjang<<endl; cout<<”Lebar : “<<kotak.lebar<<endl;

Perbedaan Struktur & Kelas Dalam kelas, masing-masing data dan fungsi anggota diberi sifat tertentu. Jika semua anggota kelas bersifat public, maka kelas sama dengan struktur. Untuk dapat mengakses data panjang dan lebar pada kelas tkotak harus dilakukan oleh fungsi yang menjadi anggota kelas dan bersifat public. Pada deklarasi kelas tkotak, satu-satunya jalan untuk memberi nilai panjang dan lebar adalah dengan menggunakan fungsi SetUkuran(). Untuk mengambil nilai panjang dan lebar juga harus dilakukan oleh fungsi yang menjadi anggota kelas. Misalnya, kita definisikan fungsi GetPanjang() dan GetLebar() untuk mengambil nilai panjang dan lebar.

Contoh : //program class #include<iostream.h> #include<conio.h> class tkotak { double panjang; double lebar; public: void SetUkuran(double pj, double lb); double Keliling(); double Luas(); double GetPanjang(); double GetLebar(); }; int main() tkotak kotak; kotak.SetUkuran(10,7); cout<<"Panjang : "<<kotak.GetPanjang()<<endl; cout<<"Lebar : "<<kotak.GetLebar()<<endl; cout<<"Keliling : "<<kotak.Keliling()<<endl; cout<<"Luas : "<<kotak.Luas()<<endl; getch(); return 0; }

Contoh void tkotak::SetUkuran(double pj, double lb) { panjang = pj; lebar = lb; } double tkotak::Keliling() return 2*(panjang+lebar); double tkotak::Luas() return panjang*lebar; double tkotak::GetPanjang() return panjang; double tkotak::GetLebar() return lebar; Contoh

Output Tampilan Output : Panjang : 10 Lebar : 7 Keliling : 34 Luas : 70

Definisi Kelas Dapat dilihat dari contoh program, bentuk pendefinisian kelas adalah sebagai berikut : Tipe Nama_Kelas::NamaFungsi() { IsiFungsi } Untuk mendefinisikan variabel kelas, digunakan deklarasi : Nama_Kelas Nama_Variabel; Contoh : Tkotak kotak;

typedef Struktur yang didefinisikan dapat menjadi suatu tipe data baru menggunakan perintah “typedef”.  Contoh: //penggunaan typedef typedef struct Mahasiswa { string nim; string nama; float nilai_uts; float nilai_uas; } MHS; int main() { MHS mhs; mhs.nama="Andi"; cout<<mhs.nama; return 0; }

Typedef Pada Array Pendeklarasian sebuah array bertipe int dapat dilakukan seperti yang terlihat berikut ini. int x[100] Alias dari array bertipe int berukuran 100 di atas dapat dilakukan menggunakan typedef sebagai berikut: Langkah 1: Ganti variabel x dengan nama alias, misalnya Larik sehingga menjadi: int Larik[100]; Langkah 2: Tambahkan statemen typedef sehingga menjadi typedef int Larik[100]; Langkah 3: Deklarasi variabel dengan tipe Larik ukuran 100 adalah: Larik a, b, c;

POINTER

Pengantar mengenai memori komputer Sebelum berbicara mengenai pointer, diperlukan pengetahuan mengenai memori komputer Apakah fungsi memori komputer? Bagaimana hubungan program, variabel, dan memori?

Memori komputer RAM (Random access memory) ROM (Read Only Memory) Istilah untuk memory yang bersifat volatile (isi memori akan hilang jika catu daya dicabut) RAM bisa dibaca dan ditulisi data secara cepat Contoh: DDRAM, SDRAM, cache memory ROM (Read Only Memory) Bersifat non volatile (data masih eksis di memori walaupun cata daya dicabut) ROM bisa dibaca secara cepat, tapi untuk menulisi ROM butuh sekuens/urutan tertentu Contoh: ROM BIOS Pada mata kuliah ini, memori yang akan dibahas adalah RAM

RAM Fungsi RAM: Menyimpan instruksi-instruksi hasil kompilasi program Menyimpan data-data variabel Ketika suatu program di-compile, beberapa byte memori dari RAM akan dialokasikan untuk menyimpan instruksi dan menyimpan data variabel Alamat memori yang dialokasikan ditentukan secara otomatis oleh compiler

Ilustrasi penggunaan RAM Alamat memori 0x1000 0x00 Penyimpan variabel a 0x1001 0x02 Penyimpan variabel b 0x1002 0xA2 0x1003 0x33 0x1004 0x12 Penyimpan instruksi 0x1005 0xF0 0x1006 0x01 . . . . 0x2000 0x00 Penyimpan variabel address_a 0x2001 0x10

Reference Operator (&) Alamat memori tempat suatu variabel disimpan disebut reference dari variabel tersebut Reference suatu variabel diakses melalui suatu reference operator (&) Secara bahasa, operator ‘&’ bisa diartikan menjadi ‘alamat dari’

CONTOH PROGRAM 1 // This program stores the address of a variable in a pointer. #include <iostream.h> void main(void) { int x = 25; int *ptr; ptr = &x; // Store the address of x in ptr cout << "The value in x is " << x << endl; cout << "The address of x is " << ptr << endl; }

OUTPUT CONTOH 1 The value in x is 25 The address of x is 0x7e00

ILUSTRASI 1 0x7e00 25 ptr x Address of x: 0x7e00

Program 2 // This program demonstrates the use of the indirection operator. #include <iostream.h> void main(void) { int x = 25; int *ptr; ptr = &x; // Store the address of x in ptr cout << "Here is the value in x, printed twice:\n"; cout << x << " " << *ptr << endl; *ptr = 100; cout << "Once again, here is the value in x:\n"; }

Program Output Here is the value in x, printed twice: 25 25 25 25 Once again, here is the value in x: 100 100

Program 3 #include <iostream> void main(void) { int x = 25, y = 50, z = 75; int *ptr; cout << "Here are the values of x, y, and z:\n"; cout << x << " " << y << " " << z << endl; ptr = &x; // Store the address of x in ptr *ptr *= 2; // Multiply value in x by 2 ptr = &y; // Store the address of y in ptr *ptr *= 2; // Multiply value in y by 2 ptr = &z; // Store the address of z in ptr *ptr *= 2; // Multiply value in z by 2 cout << "Once again, here are the values of x, y, and z:\n"; }

Program Output Here are the values of x, y, and z: 25 50 75 25 50 75 Once again, here are the values of x, y , and z: 50 100 150

Deklarasi tipe data pointer Contoh : unsigned int *my_pointer; Deklarasi di atas menyatakan deklarasi variabel my_pointer yang bertipe pointer untuk variabel tipe unsigned int (pointer to unsigned int) Variable my_pointer digunakan untuk menyimpan suatu alamat memori suatu variabel bertipe unsigned int Deklarasi suatu pointer diawali dengan tanda ‘*’ sebelum nama variabelnya

Modifier unsigned: Tipe data Ukuran memori Jangkauan nilai dapat diterapkan pada char, int, short, long adalah void dan pointer range nilai yang bisa dijangkau mempresentasikan bilangan seperti pada angka yang ditunjukkan oleh jumlah kilometer yang telah ditempuh pada mobil atau sepeda motor Angka tersebut dimulai dari 0000... dan mencapai maksimum 9999..., dan kembali ke 0000... Jadi dalam unsigned, yang ditampilkan hanyalah bilangan positif keseluruhan dalam range nol sampai ke bilangan maksimum yang dapat diprepresentasikannya. Tipe data Ukuran memori Jangkauan nilai unsigned char 1 byte 0 s/d 255 unsigned int 2 byte 0 s/d 32767 unsigned short 2 byte 0 s/d 32.767 unsigned long 4 byte 0 s/d 2.147.438.647

Dereference operator Selain untuk deklarasi pointer, tanda ‘*’ juga berfungsi untuk dereference operator Dereference adalah kebalikan reference Reference  operasi melihat alamat suatu variabel Dereference  operasi untuk melihat isi dari suatu alamat memori Contoh : a = *my_pointer; Artinya: my_pointer berisi suatu alamat memori, dan variabel a akan berisi data yg tersimpan di alamat memori tsb.

Contoh 1 penggunaan pointer unsigned int a, *pointer_a; a = 10; pointer_a = &a; cout << “nilai a : “ << a; cout << “nilai *pointer_a” << *pointer_a; a = 10; //variabel a diisi nilai 10 pointer_a = &a; //pointer_a berisi alamat memori dari a //setelah perintah di atas, nilai *pointer_a akan berisi //sama dengan a cout << “nilai a : “ << a; cout << “nilai *pointer_a” << *pointer_a;

Mengubah nilai variabel Mengubah nilai variabel secara langsung: a = 250; Mengubah nilai variabel by-reference (tidak langsung) unsigned int a,*pointer_a; pointer_a=&a; *pointer_a=250; unsigned int a,*pointer_a; pointer_a=&a; //variabel pointer_a berisi alamat a *pointer_a=250; //alamat yang ditunjuk pointer_a berisi 250 //dengan kata lain,a akan berisi 250

Any Queries ? Source: Starting out with C++, 3rd edition Erizal, S.Si, M.Kom/ Struktur dan Kelas