37
Structure and Pointer Pertemuan ke 3 Algoritma dan struktur data y : Tenia Wahyuningrum, S.Kom., MT T3 Telkom Purwokerto ww.st3telkom.ac.id

Structure and pointer

Embed Size (px)

DESCRIPTION

membahas tentang struktur dan pointer pada c++. pointer adalah struktur data dinamis yang dibentuk pada saat program dijalankan.

Citation preview

Page 1: Structure and pointer

Structure and Pointer

Pertemuan ke 3

Algoritma dan struktur data

By : Tenia Wahyuningrum, S.Kom., MTST3 Telkom Purwokertowww.st3telkom.ac.id

Page 2: Structure and pointer

UDT (User Defined Type) Tipe Data Bentukan User

• Bahasa pemrograman bisa memiliki tipe data:– Built-in : sudah tersedia oleh bahasa

pemrograman tersebut• Tidak berorientasi pada persoalan yang dihadapi.

– UDT : User Defined Type, dibuat oleh pemrogram.

• Mendekati penyelesaian persoalan yang dihadapi• Contoh: record pada Pascal, struct pada C/C++, class

pada Java– ADT : Abstract Data Type

• memperluas konsep UDT dengan menambahkan pengkapsulan atau enkapsulasi, berisi sifat-sifat dan operasi-operasi yang bisa dilakukan terhadap kelas tersebut.

• Contoh: class pada Java

Page 3: Structure and pointer

Structure

Page 4: Structure and pointer

Structure adalah kumpulan data yang saling

berhubungan, yang

disimpan dalam satu unit penyimpanan.

Page 5: Structure and pointer

data pegawai

nama, alamat , gaji.

Page 6: Structure and pointer

Bila menggunakan array biasa, maka diperlukan tiga variable yang bebas satu dengan yang lain, yaitu variabel

nama, alamat dan gaji.

Dengan menggunakan structure, data tersebut diorganisasikan dalam satu kesatuan

* Dalam pascal, structure disebut record

Page 7: Structure and pointer

array vs structure

Page 8: Structure and pointer

Deklarasi structure

struct data{ char name[20]; char address[20]; int salary; };

data employee1;//Inisialisasi variabel structure

Page 9: Structure and pointer

Masukan

int main() { cout << "Employee's name : "; cin >> employee1.name; cout << "Employee's address : "; cin >> employee1.address; cout << "Employee's salary : "; cin >> employee1.salary;

Page 10: Structure and pointer

Keluaran

cout << endl << "Employee's data : ";cout << employee1.name << ", "; cout << employee1.address << ", ";cout << employee1.salary;

return 0;}

Page 11: Structure and pointer

Bagaimana jika data lebih dari 1?

   int i;struct{     char nim[5];     char nama[15];     float nilai;} mhs[5];

Page 12: Structure and pointer

Pointer

Page 13: Structure and pointer
Page 14: Structure and pointer

Contoh kasus

Dideklarasikan array int data[5] Apa yang terjadi ketika data yang

akan diinputkan ternyata 10 buah, maka langkah yang dilakukan adalah harus mengubah programnya dan mengganti int data[5] menjadi int data[10].

Page 15: Structure and pointer

Cara lain untuk membuat program tersebut adalah dengan menggunakan

suatu variabel array yang dinamis dimana pemesanan tempat yang diperlukan untuk menyimpan data tidak dideklarasikan dalam program tapi dilakukan secara

runtime (ketika program berjalan).

Page 16: Structure and pointer

Pointer adalah built-in type di C dan C++,

dimana C++ mengambil konsep pointer dari C.

sebenarnya sangat terkait dengan

"Abstract C Machine", yaitu model mesin abstrak dimana program C bekerja.

* pointer / penunjuk

Page 17: Structure and pointer

Abstract C Machine adalah mesin abstrak dimana mesin tersebut memiliki prosesor untuk menginterpretasikan stream of instruction, dan addressable memory

Page 18: Structure and pointer

Addressable memory adalah memory yang konten-nya dapat diambil jika diketahui alamatnya.

Page 19: Structure and pointer

Lebih jauh lagi, terdapat asumsi bahwa konten memori dapat di ambil

dengan waktu konstan,

tidak peduli berapa nilai alamat.

Page 20: Structure and pointer

• Hal ini disebut dengan Random Access Memory.

• Pointer (variabel penunjuk) juga sering di defenisikan sebagai suatu

variabel yang berisi alamat memori dari suatu variabel lain.

Page 21: Structure and pointer

Alamat ini merupakan lokasi dari obyek lain (biasanya variabel lain) di dalam memori.

Contoh, jika sebuah variabel berisi alamat dari

variabel lain, variabel pertama dikatakan menunjuk ke variabel kedua.

Page 22: Structure and pointer

Operator pointer

Page 23: Structure and pointer

operator menghasilkan alamat dari

operand-nya Operator & merupakan operator alamat.

Pada saat pendeklarasian variable, user tidak diharuskan menentukan lokasi sesungguhnya pada memory, hal ini akan dilakukan secara otomatis oleh kompiler dan operating sysem pada saat run-time.

Page 24: Structure and pointer

Jika ingin mengetahui dimana suatu variable akan disimpan, dapat dilakukan dengan memberikan tanda ampersand (&) didepan variable ,

yang berarti "address of". Contoh :

ted = &andy;

Page 25: Structure and pointer

Penulisan tersebut berarti akan memberikan

variable ted alamat dari variable andy.

Karena variabel andy diberi awalan karakter ampersand (&), maka yang menjadi pokok disini adalah alamat dalam memory, bukan isi

variable. Misalkan andy diletakkan pada alamat 1776 kemudian dituliskan instruksi sbb : andy = 25; fred = andy; ted = &andy;

Page 26: Structure and pointer
Page 27: Structure and pointer

*

Menghasilkan nilai yang berbeda pada sebuah alamat

Operator * merupakan operator reference. Dengan menggunakan pointer, kita dapat

mengakses nilai yang tersimpan secara langsung dengan mem berikan awalan operator asterisk (*) pada identifier pointer, yang ber arti "value pointed by".

Page 28: Structure and pointer

contoh

beth = *ted;

(dapat dikatakan:"beth sama dengan nilai yang ditunjuk oleh ted") beth = 25, karena ted dialamat 1776, dan nilai yang berada pada alamat 1776 adalah 25.

Page 29: Structure and pointer
Page 30: Structure and pointer

Pointer Bertipe Void 

• Pada C++ terdapat pointer yang dapat menunjuk ke tipe data apapun, po inter semacam ini dideklarasikan dengan tipe void sehingga sering

dikenal dengan istilah Void Pointer.

Page 31: Structure and pointer

void *p; int a=10; double b=23.4; char c='s'; p=&a; //p menunjuk ke tipe data int cout<<"alamat (a=10) = "<<p<<endl; p=&b; //p menunjuk ke tipe data double cout<<"alamat (b=23.4) = "<<p<<endl; p=&c; //p menunjuk ke tipe data double cout<<"alamat (c='s') = "<<p<<endl;

Page 32: Structure and pointer
Page 33: Structure and pointer

Pointer aritmatika

Page 34: Structure and pointer

int a[5]; int *p; a[0]=24; a[1]=32; a[2]=81; a[3]=44; a[4]=23;

p=&a[0]; cout<<"alamat p : "<<p<<endl; cout<<"nilai p : "<<*p<<endl; p=p+3; cout<<"alamat p : "<<p<<endl;

cout<<"nilai p : "<<*p<<endl;

Page 35: Structure and pointer
Page 36: Structure and pointer

bila menggunakan pointer dengan cara yang salah maka akan menyebabkan

sistem operasi menjadi rusak.

Page 37: Structure and pointer