SD Materi #3 dan #4

27

description

SD Materi #3 dan #4

Transcript of SD Materi #3 dan #4

Page 1: SD Materi #3 dan #4
Page 2: SD Materi #3 dan #4

POINTERMerupakan sebuah variabel yang berisi alamat dari variabel lain.

Suatu pointer dimaksudkan untuk menunjukan ke suatu alamat

memori sehingga alamat dari suatu variabel dapat diketahui dengan

mudah.

Terdapat dua macam operator pointer yang disediakan oleh

Borland C++:

1. Operator dereference ( & )

2. Operator reference ( * )

Page 3: SD Materi #3 dan #4

Didalam mendeklarasikan suatu variabel harus pada lokasi

yang pasti didalam penggantian memori.Pada umumnya kita

tidak dapat menentukan dimana variabel akan ditempatkan

Terkadang secara otomatis dilakukan oleh kompiler dan sistem

operasi yang sedang aktif,

Sebagai contoh ILHAM ditempatkan pada memori dengan alamat

0x0012ff88 dan dideklarasikan sebagai berikut :

ILHAM = 75;

AMIR = ILHAM; // AMIR sama dengan ILHAM (75)

RAKA = &ILHAM; // RAKA sama dengan Address Of ILHAM (0x0012ff88)

Page 4: SD Materi #3 dan #4
Page 5: SD Materi #3 dan #4

Dengan menggunakan operator anda dapat mengakses

secara langsung nilai yamg terdapat didalam variabel yang

berpointer, hal ini dapat dilakukan dengan menambahkan

identifier asterisk ( * )

Agar dapat menterjemahkan nilai sebenarnya dari suatu

variabel. Operator ini biasa disebut dengan “value pointed

by”.

Dengan menggunakan operator reference ( * ) ini,

menghasilkan nilai yang berada pada suatu alamat memori

Page 6: SD Materi #3 dan #4

Sebagai contoh ILHAM ditempatkan pada memori dengan alamat 0x0012ff88 dan

dideklarasikan sebagai berikut :

ILHAM = 75;

RAKA = &ILHAM; // RAKA sama dengan Address Of ILHAM

(0x0012ff88)

RAFLI = *RAKA; // RAFLI sama dengan value pointed by

RAKA(75)

Page 7: SD Materi #3 dan #4

Suatu pointer dapat dideklarasikan secara konstanta atau

secara tetap tidak dapat diubah. Untuk mendeklarasikan

pointer secara konstanta dengan memberikan kata const

didepan nama konstanta.

Bentuk penulisan :

Page 8: SD Materi #3 dan #4

//----------------------------------//

//Pendeklarasian Pointer Konstanta //

//----------------------------------//

#include<stdio.h>

#include<conio.h>

#include<iostream.h>

void main()

{

char *const nama = "Borland C++";

clrscr();

cout<<"Nama Program = "<<nama<<endl;

nama = "Visual C++";

cout<<"Nama Program = "<<nama<<endl;

getch();

}

Page 9: SD Materi #3 dan #4

Karena keakhlian dari pointer untuk menunjuk secara langsung

kesuatu nilai, memeriksa satu persatu data yang memiliki pointer

pada saat variabel tersebut pertama kali dideklarasikan.

Bentuk penulisan :

tipe_data *nama_variabel;

Page 10: SD Materi #3 dan #4

//-------------------------------// //Penggunaan Pointer Dereference // //-------------------------------//

#include<stdio.h> #include<conio.h> #include<iostream.h>

main() {

int ilham, amir, *raka; clrscr(); ilham = 75; amir = ilham; raka = &ilham; cout<<"Nilai ILHAM = "<<ilham<<endl; cout<<"Nilai AMIR = "<<amir<<endl;

cout<<"Nilai RAKA = "<<raka<<endl; getch();

}

Page 11: SD Materi #3 dan #4

Pointer Pada Pointer

Tidak terbatas menunjuk alamat dari suatu variabel, pointer dapat

pula menunjuk ke pointer lainnya. Didalam pendeklarasianya, hanya

menambahkan pointer reference ( * ) pada variabel yang akan

ditunjuk.

Sebagai contoh :

char ilham;

char *raka; //pointer ke variabel

char **amir; //pointer pada pointer

ilham = '75';

raka = &ilham;

amir = &raka;

Page 12: SD Materi #3 dan #4

Pointer Pada Pointer #include<stdio.h>

#include<conio.h>

#include<iostream.h>

main()

{

int ilham;

int *raka; //pointer ke variabel

int **amir; //pointer pada pointer

clrscr();

ilham = 75;

cout<<"Nilai ILHAM = "<<ilham<<endl;

//-> Penugasan Ke Alamat Memori

raka = &ilham;

amir = &raka;

cout<<"Nilai RAKA Hasil Mengakses ILHAM = ";

cout<<*raka<<endl;

cout<<"Nilai AMIR Hasil Mengakses ILHAM = ";

cout<<**amir<<endl;

getch();

}

Page 13: SD Materi #3 dan #4

Linked list merupakan suatu variabel yang bertipe pointer yang

membentuk suatu untaian yang saling berhubungan. Tiap untaian

tersebut diletakkan pada memory. Tempat yang disediakan pada

suatu area memori tertentu untuk menyimpan data dikenal dengan

sebutan Node/Simpul.

Linked list juga disebut dengan seranai beranai merupakan suatu

variabel pointer yang simpulnya bertipe Struct.

Pengertian Linked List

Page 14: SD Materi #3 dan #4

Untuk mengolah data yang banyaknya tidak bisa ditentukan sebelumnya,

maka disediakan satu fasilitas yang memungkinan untuk menggunakan

suatu perubah yang disebut dengan perubah dinamis (Dinamic variable)

Perubah Dinamis (Dinamic variable)

Suatu perubah yang akan dialokasikan hanya pada saat

diperlukan, yaitu setelah program dieksekusi.

KONSEP POINTER DAN LINKED LIST

Perbedaan Perubah Statis & Dinamis

Pada perubah statis, isi Memory pada lokasi tertentu (nilai perubah)

adalah data sesungguhnya yang akan diolah. Pada perubah dinamis,

nilai perubah adalah alamat lokasi lain yang menyimpan data

sesungguhnya. Dengan demikian data yang sesungguhnya dapat

dimasukkan secara langsung. Dalam hal cara pemasukkan data dapat

diilustrasikan

seperti dibawah ini.

Page 15: SD Materi #3 dan #4

1. Linked list selalu memiliki pointer petunjuk yang selalu menunjuk pada awal

dari list yang disebut Head.

2. Linked list juga selalu memiliki pointer petunjuk menunjuk pada akhir dari list

yang disebut Tail, kecuali untuk jenis circular.

3. Setiap simpul yang terbentuk selalu memiliki nilai NIL, kecuali jika simpul

tersebut sudah ditunjuk oleh simpul yang lainnya (Linked list belum

terhubung).

4. Posisi simpul terakhir pada linked list selalu bernilai NIL karena ia tidak

menunjuk pada simpul yang lainnya, kecuali bentuk circular.

5. Operasi yang dapat dilakukan pada Linked List diantaranya adalah :

a. Menambah Simpul (di Depan, Belakang dan Tengah).

b. Menghapus Simpul (di Depan, Belakang dan Tengah).

c. Membaca isi linked list (Membaca maju dan mundur).

Page 16: SD Materi #3 dan #4
Page 17: SD Materi #3 dan #4
Page 18: SD Materi #3 dan #4
Page 19: SD Materi #3 dan #4
Page 20: SD Materi #3 dan #4

Ada tiga jenis operasi pada linked list, yaitu :

1. Menambah Simpul /Node

Menambah simpul pada linked list ada yaitu menambah di depan, dan belakang

Page 21: SD Materi #3 dan #4
Page 22: SD Materi #3 dan #4
Page 23: SD Materi #3 dan #4
Page 24: SD Materi #3 dan #4

2. Menghapus Simpul

Operasi menghapus simpul yaitu menghapus simpul di depan dan

belakang. Untuk menghapus sebuah simpul diperlukan satu buah

tambahan variabel pointer yaitu variabel bantu yang berguna untuk

menunjukkan simpul manakah yang akan dihapus.

Page 25: SD Materi #3 dan #4
Page 26: SD Materi #3 dan #4
Page 27: SD Materi #3 dan #4