By : Agus Priyanto, M.Kom ST3 Telkom Purwokerto www.st3telkom.ac.id
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 sifatsifat dan operasioperasi yang bisa dilakukan terhadap kelas tersebut. • Contoh: class pada Java
Structure
Structure adalah kumpulan data yang saling
berhubungan, yang
satu unit penyimpanan. disimpan dalam
data pegawai nama, alamat , gaji.
array biasa
Bila menggunakan , 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
array vs structure
Deklarasi structure struct data { char name[20]; char address[20]; int salary; }; data employee1; //Inisialisasi variabel structure
Masukan int main() { printf(“Employee's name : “); scanf(employee1.name); printf(“ Employee's address : "; scanf(employee1.address); printf(“ Employee's salary : "; scanf(employee1.salary);
Keluaran printf(“Employee's data : “); printf(employee1.name); printf(employee1.address); printf(employee1.salary ); return 0; }
Bagaimana jika data lebih dari 1? int i; struct{ char nim[5]; char nama[15]; float nilai; } mhs[5];
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].
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).
Pointer
adalah builtin type di C.
sebenarnya sangat terkait dengan
"Abstract C Machine", yaitu model mesin abstrak dimana program C bekerja.
* pointer / penunjuk
Abstract C Machine adalah mesin abstrak dimana mesin tersebut memiliki prosesor untuk menginterpretasikan stream of instruction, dan addressable memory
Addressable memory adalah memory yang kontennya dapat diambil jika diketahui alamatnya.
Lebih jauh lagi, terdapat asumsi bahwa konten memori dapat di ambil dengan waktu
konstan, tidak
peduli berapa nilai
alamat.
• 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.
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.
Operator pointer
& alamat
operator menghasilkan dari operandnya 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 runtime.
Jika ingin mengetahui dimana suatu variable akan disimpan, dapat dilakukan dengan memberikan tanda ampersand (&) didepan variable , yang berarti Contoh :
"address of".
ted = &andy;
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;
* Menghasilkan nilai yang sebuah alamat
*
berbeda pada
Operator merupakan operator reference. Dengan menggunakan pointer, kita dapat mengakses nilai yang tersimpan secara langsung dengan memberikan awalan operator asterisk (*) pada identifier pointer, yang berarti "value pointed by".
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.
Pointer Bertipe Void • Pada C terdapat pointer yang dapat menunjuk ke tipe data apapun, pointer semacam ini dideklarasikan dengan tipe void sehingga sering dikenal dengan istilah
Pointer.
Void
void *p; int a=10; double b=23.4; char c='s'; p=&a; //p menunjuk ke tipe data int cout<<"alamat (a=10) = "<
Pointer aritmatika
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 : "<
pointer dengan
bila menggunakan cara yang salah maka akan
sistem operasi menjadi rusak.
menyebabkan