penuding

34
PENUDING PENUDING DAN TATASUSUNAN PENUDING DAN STRUKTUR

Upload: argyle

Post on 13-Jan-2016

32 views

Category:

Documents


2 download

DESCRIPTION

PENUDING. PENUDING DAN TATASUSUNAN PENUDING DAN STRUKTUR. PENUDING DAN TATASUSUNAN. Nama tatasusunan adalah satu penuding yg menuding kpd unsur pertama tatasusunan. Merujuk kpd nilai dlm tatasusunan menggunakan nama tatasusunan atau penuding int nom[5] = {10, 20, 30, 40, 50}; - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: PENUDING

PENUDING

PENUDING DAN TATASUSUNANPENUDING DAN STRUKTUR

Page 2: PENUDING

Nama tatasusunan adalah satu penuding yg menuding kpd unsur pertama tatasusunan.

Merujuk kpd nilai dlm tatasusunan menggunakan nama tatasusunan atau penuding

int nom[5] = {10, 20, 30, 40, 50};

nom [0] akan memberi nilai 10

int *tunjuknom = nom;

*nom bermakna nilai 10 akan dirujuk

PENUDING DAN TATASUSUNAN

Page 3: PENUDING

PENUDING DAN TATASUSUNAN//merujuk nilai sama dengan menggunakan penuding atau nama tatasusunan

#include <iostream.h>void main(){int a, tata[5]={10,20,30,40,50};int *tunjuktata;tunjuktata=tata;cout <<“Menggunakan subskrip tatasusunan :”<< endl;for (a=0; a<5; a++)cout <<tata[a];cout << endl <<“Menggunakan subskrip penuding :”<< endl;for (a=0; a<5; a++)cout <<tunjuktata[a];//penuding arithmetikcout << endl <<“Menggunakan penuding arithmetik tatasusunan :”<< endl;for (a=0; a<5; a++)cout << *(tata + a);cout << endl <<“Menggunakan penuding arithmetik penuding :”<< endl;for (a=0; a<5; a++)cout << *(tunjuktata + a);}

Aturcara 2.2.1

Page 4: PENUDING

Output aturcara 2.2.1

Latihan :

sekiranya pernyataan berikut di tambah dalam aturcara 2.2.1, apakah output bagi aturcara tersebut.

PENUDING DAN TATASUSUNAN

Menggunakan subskrip tatasusunan :1020304050Menggunakan subskrip penuding :1020304050Menggunakan penuding arothmetik tatasusunan :1020304050Menggunakan penuding arithmetik penuding :1020304050

cout << endl << tata[1];cout << endl << tunjuktata[1];

cout << endl << *(tata +1);cout << endl << *(tunjuktata +1);

Page 5: PENUDING

PENUDING DAN TATASUSUNAN Penuding juga boleh menuding kpd satu

koleksi data spt tatasusunan dan struktur Contoh pengisytiharan :

int *nombor = new int[5]; Penggunaan tatasusunan membenarkan

pengguna bebas memasukkan bilangan data yang dikehendaki.

Page 6: PENUDING

CONTOH ATURCARA#include <iostream.h>int main (){

int *nombor;int i, saiz;float purata, jumlah;

cout<<“Bilangan nombor yang ingin dimasukkan ?” ;cin>> saiz;nombor = new int[saiz];

for (i=0; i<saiz; i++) {cout<<“\n Nombor : “;cin>>nombor[i];jumlah+=nombor[i];}purata = jumlah/saiz;cout<<“\nNombor yang anda masukkan adalah : “;for (i=0; i<saiz; i++)

cout<<“\n”<<nombor[i];cout<<“\nPurata bagi nombor yang dimasukkan: “<<purata;

return 0;}

Page 7: PENUDING

CONTOH OUTPUT

Bilangan nombor yang ingin dimasukkan ? 3Nombor : 45Nombor : 67Nombor : 34Nombor yang anda masukkan adalah :456734Purata bagi nombor yang dimasukkan : 48.667

Page 8: PENUDING

KANDUNGAN INGATAN BAGI CONTOH PENGGUNAAN PENUDING & TATASUSUNAN

Pernyataan Gambaran Kandungan Ingatan Serta Penerangan

int *nombor;

?

nombor

Page 9: PENUDING

KANDUNGAN INGATAN BAGI CONTOH PENGGUNAAN PENUDING & TATASUSUNAN

Pernyataan Gambaran Kandungan Ingatan Serta Penerangan

nombor = new int[saiz];

Berdasarkan kpd output a/c, input saiz bernilai 3. pernyataan new akan memulangkan tiga alamat yang berturutan atau tatasusunan bersaiz tiga dan penuding nombor akan menyimpan alamat pertama bagi lokasi tersebut.

9765

nombor 9765 9766 9767

[0] [1] [2]

Page 10: PENUDING

KANDUNGAN INGATAN BAGI CONTOH PENGGUNAAN PENUDING & TATASUSUNAN

Pernyataan Gambaran Kandungan Ingatan Serta Penerangan

For (i=0; i<saiz; i++) {

cout<<“\n Nombor :”;

cin>>nombor[i];

jumlah+=nombor[i];

}

Berdasarkan kpd output a/c, tiga input bagi tatasusunan tersebut adalah 45, 67 dan 34. input ini dimasukkan melalui gelung dengan pernyataan cin>>nombor[i];.

9765 45 67 34

nombor 9765 9766 9767

[0] [1] [2]

Page 11: PENUDING

PENGURUSAN MEMORI : OPERATOR NEW DAN DELETE Menggunakan tatasusunan dengan unsur yg tetap, contoh :

int tata[100]; Tatasusunan ini menyediakan sebanyak 100 ruang untuk nilai

integer. Tatasusunan sgt berguna untuk menyimpan data, ttp terdapat

banyak ruang yg tidak digunakan. Untuk mengisi saiz tatasusunan yg tepatperlu diketahui saiznya

sblm aturcara dicompile agar compiler dpt menyediakan ruang yg secukupnya

Untuk mengelak penggunaan memori yang membazir, adalah lebih baik menggunakan peruntukan memori dinamik yang diperlukan semasa larian atur cara

Page 12: PENUDING

OPERATOR NEW

Operator new memperoleh memori dari komputer dan memulangkan penuding kpd permulaan alamat

Format penyataan untuk memperoleh memori drp heap umpukkan kpd penuding kata kunci new diikuti dengan jenis data dan nombor.

penuding = new jenis_data [nombor]; Jenis penuding mestilah sama dengan jenis_data. Contoh:

int *pmem;

pmem = new int [100]; Kesannya sama seperti mengisytiharkan tatasusunan tata[100],

kecuali memori itu diperolehi daripada heap. Contoh aturcara:

Page 13: PENUDING

Operator delete memulangkan memori kepada komputer dan membolehkan memori itu digunakan untuk tujuan yg lain.

Format pernyataan untuk memulangkan memori kepada heap adalah dengan kata kunci delete diikuti dengan nama penuding.

delete nama_penuding;

OPERATOR DELETE

Page 14: PENUDING

PENUDING KEPADA PENUDING Pembolehubah menyimpan pemalar atau nilai, manakala

pembolehubah penuding menyimpan alamat pembolehubah lain. Pembolehubah penuding kepada penuding ialah pembolehubah yg

menyimpan alamat bg pembolehubah penuding yg lain Cara mengisytiharkan pembolehubah penuding kpd penuding ialah

dengan menggunakan simbol “**” sebelum pemboleh ubah. Format pengisytiharannya seperti berikut :-

jenis_data **pointertopointer;

contohnya :

int ** Ptp;

int *Ptr, data=10;

Ptr=&data;

Ptp=&ptr;

Page 15: PENUDING

PENUDING KEPADA PENUDING

1002 1003 10

Ptp Ptr data

1001 1002 1003

Rajah 2.2.1 : Hubungan pembolehbah penuding kepada penuding dengan data

Page 16: PENUDING

PENUDING DAN STRUKTUR

Bagi penggunaan penuding dan struktur, penambahan perlu dilakukan semasa pengisytiharan penuding struktur.

Pengisytiharan struktur yang asas adalah seperti yang dibincangkan sebelum ini.

Contoh aturcara di bawah menunjukkan pengisytiharan penuding p,q dan sementara.

Page 17: PENUDING

CONTOH PENGSIYTIHARAN PENUDING DAN STRUKTUR.

struct rekodPekerja{char nama[20];char jabatan[50];int tahun Bekerja;float gaji;

};rekodPekerja *p, *q, *sementara;

Page 18: PENUDING

PENUDING DAN STRUKTUR

Apabila penuding struktur telah diisytiharkan, operasi boleh dijalankan ke atas unsur bagi struktur tersebut.

Terdapat 2 cara untuk merujuk unsur bagi penuding struktur; iaitu menggunakan operator * atau menggunakan ->.

Penggunaan operator * memerlukan operator kurungan digunakan bersama.

Page 19: PENUDING

PENUDING DAN STRUKTUR

Cara pertama untuk merujuk unsur nama bagi penuding struktur p adalah seperti berikut:

(*p).nama; Bagi cara kedua dengan menggunakan

operator -> pernyataannya adalah seperti berikut :

p->nama;

Page 20: PENUDING

PENUDING DAN STRUKTUR

Selain drp rujukan terhadap unsur, penuding struktur juga boleh diubah tundingannya.

Kandungan yang terdapat di dalam penuding struktur juga boleh diumpukkan ke dalam kandungan penuding struktur yang lain dengan menggunakan operator *. Contoh :

*p = *q; Pernyataan ini menunjukkan kandungan unsur yang

dituding oleh penuding q diumpukkan kpd kandungan unsur penuding struktur p.

Page 21: PENUDING

PENUDING DAN STRUKTUR

Penuding struktur juga boleh dihantar kepada fungsi, ia hanya boleh dilakukan secara penghantaran alamat nilai atau rujukan.

Page 22: PENUDING

KANDUNGAN INGATAN BAGI PENUDING STRUKTUR

Pengisytiharan penuding

rekodPekerja *p, *q, *sementara;

?

p q sementara

Page 23: PENUDING

KANDUNGAN INGATAN BAGI PENUDING STRUKTURPemberian lokasi ingatan kepada

penuding

p= new rekodPekerja;

q=new rekodPekerja;

nama jabatan tahunBekerja gaji

nama jabatan tahunBekerja gaji

p

q

?

sementara

Page 24: PENUDING

KANDUNGAN INGATAN BAGI PENUDING STRUKTURMerujuk unsur dengan cara

pertama dan cara kedua

i) Merujuk unsur bagi penuding struktur p

strcpy((*p).nama, “Ahmad”);

strcpy((*p).jabatan, “JTMK”);

(*p).tahunBekerja=1999;

(*p).gaji=3500.0;

p= new rekodPekerja;

q=new rekodPekerja;

Ahmad JTMK 1999 3500.0

nama jabatan tahunBekerja gaji

p

?

sementara

Page 25: PENUDING

KANDUNGAN INGATAN BAGI PENUDING STRUKTURMerujuk unsur dengan cara

pertama dan cara kedua

i) Merujuk unsur bagi penuding struktur p

strcpy((*p).nama, “Ahmad”);

strcpy((*p).jabatan, “JTMK”);

(*p).tahunBekerja=1999;

(*p).gaji=3500.0;Ahmad JTMK 1999 3500.0

nama jabatan tahunBekerja gaji

p

?

sementara

Page 26: PENUDING

KANDUNGAN INGATAN BAGI PENUDING STRUKTURMerujuk unsur dengan cara

pertama dan cara kedua

ii) Merujuk unsur bagi penuding struktur q

strcpy(q->nama, “Asmah”);

strcpy(q->jabatan, “JKE”);

q->tahunBekerja=2005;

q->gaji=2000.0;Asmah JKE 2005 2000.0

nama jabatan tahunBekerja gaji

q

Page 27: PENUDING

KANDUNGAN INGATAN BAGI PENUDING STRUKTURMenukar lokasi ingatan yang dituding oleh penuding struktur p dan q.

i) sementara=p;

Ahmad JTMK 1999 3500.0

nama jabatan tahunBekerja gaji

p

sementara

Page 28: PENUDING

KANDUNGAN INGATAN BAGI PENUDING STRUKTURMenukar lokasi ingatan yang dituding oleh penuding struktur p dan q.

ii) p=q;

Asmah JKE 2005 2000.0

nama jabatan tahunBekerja gaji

q

p

Page 29: PENUDING

KANDUNGAN INGATAN BAGI PENUDING STRUKTURMenukar lokasi ingatan yang dituding oleh penuding struktur p dan q.

i) q=sementara;

Ahmad JTMK 1999 3500.0

nama jabatan tahunBekerja gaji

sementara

q

Page 30: PENUDING

KANDUNGAN INGATAN BAGI PENUDING STRUKTUR

nama jabatan tahunBekerja gaji

awal

Abdul JKA 2004 3000.5

Penambahan unsur paut pada nod

paut

Page 31: PENUDING

KANDUNGAN INGATAN BAGI PENUDING STRUKTURDua nod yang bersambungan menggunakan unsur

paut

Abdul JKA 2004 3000.5

awal

Razak JKM 2003 2800.0

Page 32: PENUDING

PENUDING DAN STRUKTUR

Jika dilihat kandungan ingatan, penuding struktur p dan q menuding kepada struktur masing-masing atau lebih dikenali sebagai nod.

Oleh itu apabila seratus maklumat pekerja dimasukkan, seratus penuding struktur perlu dicipta,

Ini merupakan cara yang tidak efisyen bagi penggunaan penuding struktur.

Page 33: PENUDING

PENUDING DAN STRUKTUR

Untuk mengatasi masalah ini, suatu unsur pada struktur harus diwujudkan untuk menyambungkan satu penuding struktur dengan penuding struktur yang lain.

Mengikut kepada rajah kandungan ingatan, satu unsur bernama paut telah digunakan dan nod ini dituding oleh penuding awal.

Bagi membolehkan capaian dilakukan ke atas data yang terdapat pada penuding struktur, hanya satu penuding digunakan untuk menuding kepada nod di hadapan.

Page 34: PENUDING

PENUDING DAN STRUKTUR

Ini boleh dilihat spt gerabak keretapi yang mempunyai kepala keretapi dan gerabak-gerabak di belakangnya yang bersambungan antara satu sama lain.

Pelaksanaan nod yang bersambungan ini lebih dikenali sebagai senarai berpaut (akan dipelajari pada bab seterusnya).