struktur data (6) pointer dan function

37
STRUKTUR DATA (6) STRUKTUR DATA (6) Pointer dan Function Pointer dan Function

Upload: hanzila

Post on 20-Jan-2016

91 views

Category:

Documents


1 download

DESCRIPTION

STRUKTUR DATA (6) Pointer dan Function. Pointer. Pointer adalah suatu variabel penunjuk , berisi nilai yang menunjuk alamat suatu lokasi memori tertentu. Jadi pointer tidak berisi nilai data, melainkan berisi suatu alamat memori atau null jika tidak berisi data. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: STRUKTUR DATA (6) Pointer dan Function

STRUKTUR DATA (6)STRUKTUR DATA (6)Pointer dan FunctionPointer dan Function

Page 2: STRUKTUR DATA (6) Pointer dan Function

PointerPointer Pointer adalah suatu Pointer adalah suatu variabel penunjukvariabel penunjuk, berisi , berisi

nilai yang menunjuk alamat suatu lokasi memori nilai yang menunjuk alamat suatu lokasi memori tertentu. tertentu.

Jadi pointer Jadi pointer tidaktidak berisi nilai data, melainkan berisi nilai data, melainkan berisi suatu berisi suatu alamat memori alamat memori atauatau null null jika tidak jika tidak berisi data.berisi data.

Pointer yang tidak diinisialisasi disebut Pointer yang tidak diinisialisasi disebut dangling dangling pointerpointer

Lokasi memori tersebut bisa diwakili sebuah Lokasi memori tersebut bisa diwakili sebuah variabelvariabel atau dapat juga berupa nilai alamat atau dapat juga berupa nilai alamat memori memori secara langsungsecara langsung. .

Page 3: STRUKTUR DATA (6) Pointer dan Function

Ilustrasi PointerIlustrasi Pointer

Kita memiliki variabel X yang berisi nilai karakter ‘a’Kita memiliki variabel X yang berisi nilai karakter ‘a’ Oleh kompiler pascal, nilai ‘a’ ini akan disimpan di suatu Oleh kompiler pascal, nilai ‘a’ ini akan disimpan di suatu

alamat tertentu di memori.alamat tertentu di memori. Alamat variabel X dapat diakses dengan menggunakan Alamat variabel X dapat diakses dengan menggunakan

statemen statemen &X&X.. Jika kita ingin menyimpan alamat dari variabel X ini, kita Jika kita ingin menyimpan alamat dari variabel X ini, kita

dapat menggunakan suatu variabeldapat menggunakan suatu variabel misalnya misalnya char alamat_x = &X;char alamat_x = &X;

alamat_x adalah suatu variabel yang berisi alamat alamat_x adalah suatu variabel yang berisi alamat dimana nilai X, yaitu ‘a’ disimpan. dimana nilai X, yaitu ‘a’ disimpan.

Variabel alamat_x disebut variabel pointer atau sering Variabel alamat_x disebut variabel pointer atau sering disebut disebut pointerpointer saja. saja.

Page 4: STRUKTUR DATA (6) Pointer dan Function

Contoh ProgramContoh Program

Format “%p” digunakan untuk menampilkan alamat pointer!

Page 5: STRUKTUR DATA (6) Pointer dan Function

Pointer vs Variabel BiasaPointer vs Variabel Biasa

Page 6: STRUKTUR DATA (6) Pointer dan Function

Operator PointerOperator Pointer

Page 7: STRUKTUR DATA (6) Pointer dan Function

ContohContoh

Pointer dideklarasikan dengan cara:Pointer dideklarasikan dengan cara:tipe_data *nama_variabel_pointer;tipe_data *nama_variabel_pointer;

Contoh inisialisasi pointer, contoh:Contoh inisialisasi pointer, contoh:

Page 8: STRUKTUR DATA (6) Pointer dan Function

AturanAturan

variabel pointer dapat dideklarasikan dengan variabel pointer dapat dideklarasikan dengan tipe data tipe data apapunapapun..

Pendeklarasian variabel pointer dengan tipe data Pendeklarasian variabel pointer dengan tipe data tertentu digunakan untuk menyimpan alamat memori tertentu digunakan untuk menyimpan alamat memori yang berisi data sesuai dengan tipe data yang yang berisi data sesuai dengan tipe data yang dideklarasikan, dideklarasikan, bukanbukan untuk berisi nilai bertipe data untuk berisi nilai bertipe data tertentu.tertentu.

Tipe data digunakan sebagai lebar data untuk alokasi Tipe data digunakan sebagai lebar data untuk alokasi memori (misal char berarti lebar datanya 1 byte, dst)memori (misal char berarti lebar datanya 1 byte, dst) jika suatu variabel pointer dideklarasikan bertipe float, berarti jika suatu variabel pointer dideklarasikan bertipe float, berarti

variabel pointer tersebut variabel pointer tersebut hanya bisahanya bisa digunakan untuk menunjuk digunakan untuk menunjuk alamat memori yang berisi nilai bertipe float juga.alamat memori yang berisi nilai bertipe float juga.

Page 9: STRUKTUR DATA (6) Pointer dan Function

Contoh yang salahContoh yang salah

Page 10: STRUKTUR DATA (6) Pointer dan Function

Operasi pada PointerOperasi pada Pointer

Operasi assignmentOperasi assignment Antar variabel pointer dapat dilakukan operasi Antar variabel pointer dapat dilakukan operasi

assignment.assignment. Contoh 1: Contoh 1: Assignment dan sebuah alamat dapat ditunjuk oleh Assignment dan sebuah alamat dapat ditunjuk oleh

lebih dari satu pointerlebih dari satu pointer Contoh 2: Contoh 2: Mengisi variabel dengan nilai yang ditunjuk oleh Mengisi variabel dengan nilai yang ditunjuk oleh

sebuah variabel pointersebuah variabel pointer Contoh 3: Contoh 3: Mengoperasikan isi variabel dengan menyebut Mengoperasikan isi variabel dengan menyebut

alamatnya dengan pointeralamatnya dengan pointer Contoh 4: Mengisi dan mengganti variabel yang ditunjuk oleh Contoh 4: Mengisi dan mengganti variabel yang ditunjuk oleh

pointerpointer

Page 11: STRUKTUR DATA (6) Pointer dan Function

Assigment, sebuah alamat dapat ditunjuk Assigment, sebuah alamat dapat ditunjuk

oleh lebih dari satu pointeroleh lebih dari satu pointer

Page 12: STRUKTUR DATA (6) Pointer dan Function

Mengisi variabel dengan nilai yang ditunjuk Mengisi variabel dengan nilai yang ditunjuk

oleh sebuah variabel pointeroleh sebuah variabel pointer

Page 13: STRUKTUR DATA (6) Pointer dan Function

Mengoperasikan isi variabel dengan Mengoperasikan isi variabel dengan

menyebut alamatnya dengan pointermenyebut alamatnya dengan pointer

Page 14: STRUKTUR DATA (6) Pointer dan Function

Mengisi dan mengganti variabel yang Mengisi dan mengganti variabel yang ditunjuk oleh pointerditunjuk oleh pointer

Page 15: STRUKTUR DATA (6) Pointer dan Function

Operasi pada PointerOperasi pada Pointer

Operasi aritmatikaOperasi aritmatika Pada pointer dapat dilakukan operasi aritmatika yang Pada pointer dapat dilakukan operasi aritmatika yang

akan menunjuk suatu alamat memori baru.akan menunjuk suatu alamat memori baru. Hanya nilai Hanya nilai integerinteger saja yang bisa dioperasikan pada saja yang bisa dioperasikan pada

variabel pointer.variabel pointer. Biasanya hanya operasi Biasanya hanya operasi penambahan/penguranganpenambahan/pengurangan

saja.saja. Misal pointer X bertipe int (2 bytes), maka X+1 akan Misal pointer X bertipe int (2 bytes), maka X+1 akan

menunjuk pada alamat memori sekarang (mis. 1000) menunjuk pada alamat memori sekarang (mis. 1000) ditambah sizeof(X), yaitu 2, jadi 1002.ditambah sizeof(X), yaitu 2, jadi 1002.

Lihat contohLihat contoh

Page 16: STRUKTUR DATA (6) Pointer dan Function
Page 17: STRUKTUR DATA (6) Pointer dan Function

Pointer pada ArrayPointer pada Array

Pada array, pointer hanya perlu menunjuk Pada array, pointer hanya perlu menunjuk pada alamat pada alamat elemen pertamaelemen pertama saja karena saja karena letak alamat array sudah berurutan pada letak alamat array sudah berurutan pada memori.memori.

Variabel pointer hanya perlu Variabel pointer hanya perlu increment increment Lihat contoh-contoh!Lihat contoh-contoh!

Page 18: STRUKTUR DATA (6) Pointer dan Function

Pada array 1DPada array 1D

Page 19: STRUKTUR DATA (6) Pointer dan Function
Page 20: STRUKTUR DATA (6) Pointer dan Function

Review: FunctionReview: Function

Fungsi/function adalah bagian dari Fungsi/function adalah bagian dari program yang memiliki program yang memiliki namanama tertentu tertentu yang unik, digunakan untuk mengerjakan yang unik, digunakan untuk mengerjakan suatu pekerjaan tertentu, serta letaknya suatu pekerjaan tertentu, serta letaknya dipisahkandipisahkan dari bagian program yang dari bagian program yang menggunakan/memanggil fungsi tersebut.menggunakan/memanggil fungsi tersebut.

Page 21: STRUKTUR DATA (6) Pointer dan Function

Review:Review: Keuntungan Function Keuntungan Function

Dapat melakukan pendekatan Dapat melakukan pendekatan top-downtop-down dan dan divide-and-divide-and-conquerconquer: program besar dapat dipisah menjadi program-: program besar dapat dipisah menjadi program-program kecil.program kecil.

Dapat dikerjakan oleh beberapa orang sehingga Dapat dikerjakan oleh beberapa orang sehingga koordinasi mudah.koordinasi mudah.

Kemudahan dalam mencari kesalahan-kesalahan Kemudahan dalam mencari kesalahan-kesalahan karena alur logika jelas dan kesalahan dapat dilokalisasi karena alur logika jelas dan kesalahan dapat dilokalisasi dalam suatu modul tertentu saja.dalam suatu modul tertentu saja.

Modifikasi program dapat dilakukan pada suatu modul Modifikasi program dapat dilakukan pada suatu modul tertentu saja tanpa mengganggu program keseluruhan.tertentu saja tanpa mengganggu program keseluruhan.

Mempermudah dokumentasi.Mempermudah dokumentasi. ReusabilityReusability: Suatu fungsi dapat digunakan kembali oleh : Suatu fungsi dapat digunakan kembali oleh

program atau fungsi lainprogram atau fungsi lain

Page 22: STRUKTUR DATA (6) Pointer dan Function

Review: Review: Kategori Function pada CKategori Function pada C

Standard Library FunctionStandard Library Function Yaitu fungsi-fungsi yang telah disediakan oleh C dalam Yaitu fungsi-fungsi yang telah disediakan oleh C dalam

file-file header atau librarynya.file-file header atau librarynya. Misalnya: Misalnya: clrscr(), printf(), getch()clrscr(), printf(), getch() Untuk function ini kita harus mendeklarasikan terlebih Untuk function ini kita harus mendeklarasikan terlebih

dahulu library yang akan digunakan, yaitu dengan dahulu library yang akan digunakan, yaitu dengan menggunakan preprosesor direktif: menggunakan preprosesor direktif: #include #include <conio.h><conio.h>

Programmer-Defined FunctionProgrammer-Defined Function Adalah function yang dibuat oleh programmer sendiri. Adalah function yang dibuat oleh programmer sendiri.

Function ini memiliki nama tertentu yang unik dalam Function ini memiliki nama tertentu yang unik dalam program, letaknya terpisah dari program utama, dan program, letaknya terpisah dari program utama, dan bisa dijadikan satu ke dalam suatu library buatan bisa dijadikan satu ke dalam suatu library buatan programmer itu sendiri yang kemudian juga di-include-programmer itu sendiri yang kemudian juga di-include-kan untuk penggunaanya.kan untuk penggunaanya.

Page 23: STRUKTUR DATA (6) Pointer dan Function

Review: Jenis function (1)Review: Jenis function (1)Function yang VoidFunction yang Void Fungsi yang void sering disebut juga prosedurFungsi yang void sering disebut juga prosedur Disebut void karena fungsi tersebut tidak mengembalikan suatu nilai Disebut void karena fungsi tersebut tidak mengembalikan suatu nilai

keluaran yang didapat dari hasil proses fungsi tersebut.keluaran yang didapat dari hasil proses fungsi tersebut. Ciri: tidak adanya keyword Ciri: tidak adanya keyword returnreturn.. Ciri: tidak adanya Ciri: tidak adanya tipe datatipe data di dalam deklarasi fungsi. di dalam deklarasi fungsi. Ciri: menggunakan keyword Ciri: menggunakan keyword voidvoid.. Tidak dapat langsung ditampilkan hasilnyaTidak dapat langsung ditampilkan hasilnya Tidak memiliki nilai kembalian fungsiTidak memiliki nilai kembalian fungsi Contoh: Contoh: clrscr(), printf()clrscr(), printf() Contoh program? Contoh program?

Page 24: STRUKTUR DATA (6) Pointer dan Function

Review: Jenis Function (2)Review: Jenis Function (2)

Fungsi yang Non-VoidFungsi yang Non-Void Fungsi non-void disebut juga functionFungsi non-void disebut juga function Disebut non-void karena mengembalikan nilai kembalian yang Disebut non-void karena mengembalikan nilai kembalian yang

berasal dari keluaran hasil proses function tersebutberasal dari keluaran hasil proses function tersebut Ciri: ada keyword Ciri: ada keyword returnreturn Ciri: ada Ciri: ada tipe datatipe data yang mengawali deklarasi fungsi yang mengawali deklarasi fungsi Ciri: tidak ada keyword Ciri: tidak ada keyword voidvoid Memiliki nilai kembalianMemiliki nilai kembalian Dapat dianalogikan sebagai suatu variabel yang memiliki tipe data Dapat dianalogikan sebagai suatu variabel yang memiliki tipe data

tertentu sehingga dapat langsung ditampilkan hasilnya.tertentu sehingga dapat langsung ditampilkan hasilnya. Contoh: Contoh: sin(), getch()sin(), getch() Contoh program?Contoh program?

Page 25: STRUKTUR DATA (6) Pointer dan Function

Review:Review: The “main“ functionThe “main“ function Sebuah program yang paling sederhana dalam C, AGAR Sebuah program yang paling sederhana dalam C, AGAR

DAPAT DIEKSEKUSI harus terdiri dari minimal DAPAT DIEKSEKUSI harus terdiri dari minimal 11 buah buah fungsi, yaitu function fungsi, yaitu function main()main()

Pada saat program C dijalankan, maka compiler C akan Pada saat program C dijalankan, maka compiler C akan mencari function mencari function main()main() dan melaksanakan instruksi- dan melaksanakan instruksi-instruksi yang ada di sana.instruksi yang ada di sana.

Di dalam function main, sering dideklarasikan dalam 2 Di dalam function main, sering dideklarasikan dalam 2 bentuk:bentuk: int main()int main() void main()void main()

Page 26: STRUKTUR DATA (6) Pointer dan Function

Review:Review: int dan void main() int dan void main()

int main()int main() berarti di dalam function main tersebut berarti di dalam function main tersebut harus terdapat keyword return di bagian akhir fungsi dan harus terdapat keyword return di bagian akhir fungsi dan mengembalikan nilai bertipe data int,mengembalikan nilai bertipe data int,

Mengapa hasil return harus bertipe int juga? karena tipe Mengapa hasil return harus bertipe int juga? karena tipe data yang mendahului fungsi main() diatas data yang mendahului fungsi main() diatas dideklarasikan intdideklarasikan int

Jika sebuah program C dieksekusi, maka akan Jika sebuah program C dieksekusi, maka akan dikembalikan status eksekusi program, jika “terminated dikembalikan status eksekusi program, jika “terminated successfully” maka, akan dikembalikan status 0, successfully” maka, akan dikembalikan status 0, sedangkan jika “terminated unsuccessfully” akan sedangkan jika “terminated unsuccessfully” akan dikembalikan nilai status tidak 0 dikembalikan nilai status tidak 0

void main()void main() berarti function yang void dan tidak berarti function yang void dan tidak mengembalikan nilai status program sehingga nilai mengembalikan nilai status program sehingga nilai status program tidak bisa diketahuistatus program tidak bisa diketahui

Page 27: STRUKTUR DATA (6) Pointer dan Function

Review: Review: Argumen pada FunctionArgumen pada Function

Sebuah fungsi bisa memiliki argumen-argumen yang Sebuah fungsi bisa memiliki argumen-argumen yang bersifat opsional.bersifat opsional.

Argumen-argumen tersebut berfungsi sebagai parameter Argumen-argumen tersebut berfungsi sebagai parameter inputan yang berupa variabel-variabel bagi fungsi inputan yang berupa variabel-variabel bagi fungsi tersebut (bersifat lokal).tersebut (bersifat lokal).

Argumen harus bertipe data tertentu.Argumen harus bertipe data tertentu. Terdapat 2 jenis parameter:Terdapat 2 jenis parameter:

Parameter formal: parameter yang ditulis pada deklarasi fungsi.Parameter formal: parameter yang ditulis pada deklarasi fungsi. Parameter aktual: parameter yang diinputkan dalam Parameter aktual: parameter yang diinputkan dalam

program pemanggil fungsi tersebut. Dapat berupa program pemanggil fungsi tersebut. Dapat berupa variabel atau langsung berupa nilai tertentu sesuai variabel atau langsung berupa nilai tertentu sesuai dengan tipe data yang dideklarasikan untuk masing-dengan tipe data yang dideklarasikan untuk masing-masing parameter fungsi. masing parameter fungsi.

Page 28: STRUKTUR DATA (6) Pointer dan Function

Contoh argumen functionContoh argumen function

Page 29: STRUKTUR DATA (6) Pointer dan Function

Review: Review: Ruang Lingkup VariabelRuang Lingkup Variabel

Variabel Global: dikenal disemua bagianVariabel Global: dikenal disemua bagianVariabel Lokal: dikenal hanya di bagian Variabel Lokal: dikenal hanya di bagian

tertentu sajatertentu sajaVariabel Static: nilainya tetap dan nilai Variabel Static: nilainya tetap dan nilai

terakhir akan tetap disimpan.terakhir akan tetap disimpan.Ruang lingkup di atas tergantung cara Ruang lingkup di atas tergantung cara

pandangnya (ruang lingkupnya)pandangnya (ruang lingkupnya)

Page 30: STRUKTUR DATA (6) Pointer dan Function

Review:Review: Pengiriman by value Pengiriman by value

Yang dikirimkan ke fungsi adalah Yang dikirimkan ke fungsi adalah nilainyanilainya, , bukanbukan alamat memorialamat memori letak dari datanyaletak dari datanya

Fungsi yang menerima kiriman nilai ini akan menyimpan nilainya di Fungsi yang menerima kiriman nilai ini akan menyimpan nilainya di alamat terpisahalamat terpisah dari nilai asli yang digunakan oleh program yang dari nilai asli yang digunakan oleh program yang memanggil fungsi tersebutmemanggil fungsi tersebut

Karena itulah pengubahan nilai di dalam fungsi Karena itulah pengubahan nilai di dalam fungsi tidak akan tidak akan berpengaruhberpengaruh pada nilai asli di program yang memanggil fungsi pada nilai asli di program yang memanggil fungsi walaupun keduanya menggunakan nama variabel yang samawalaupun keduanya menggunakan nama variabel yang sama

Sifat pengiriman Sifat pengiriman satu arahsatu arah, dari program pemanggil ke fungsi yang , dari program pemanggil ke fungsi yang dipanggil saja.dipanggil saja.

Parameter bisa berupa ungkapan (statemen)Parameter bisa berupa ungkapan (statemen) Lihat Contoh!Lihat Contoh!

Page 31: STRUKTUR DATA (6) Pointer dan Function

ContohContoh

Page 32: STRUKTUR DATA (6) Pointer dan Function

Hasil dan kondisi memoryHasil dan kondisi memory

Page 33: STRUKTUR DATA (6) Pointer dan Function

Pengiriman by referencePengiriman by reference

Yang dikirimkan adalah Yang dikirimkan adalah alamat memorialamat memori letak dari nilai datanya, letak dari nilai datanya, bukanbukan nilai datanyanilai datanya

Fungsi yang menerima parameter ini akan Fungsi yang menerima parameter ini akan menggunakan/mengakses data dengan menggunakan/mengakses data dengan alamat yang samaalamat yang sama dengan dengan alamat nilai datanyaalamat nilai datanya

Karena itulah pengubahan nilai di fungsi Karena itulah pengubahan nilai di fungsi akan mengubahakan mengubah juga nilai juga nilai asli di program pemanggil fungsi tersebutasli di program pemanggil fungsi tersebut

Pengiriman parameter by reference adalah pengiriman Pengiriman parameter by reference adalah pengiriman dua arahdua arah, , yaitu dari program pemanggil ke fungsi dan sebaliknya dari fungsi yaitu dari program pemanggil ke fungsi dan sebaliknya dari fungsi ke program pemanggilnyake program pemanggilnya

Pengiriman parameter by reference Pengiriman parameter by reference tidak dapattidak dapat digunakan untuk digunakan untuk suatu ungkapan (statemen), hanya bisa untuk variabel, konstanta suatu ungkapan (statemen), hanya bisa untuk variabel, konstanta atau elemen array saja atau elemen array saja

Lihat Contoh!Lihat Contoh!

Page 34: STRUKTUR DATA (6) Pointer dan Function

ContohContoh

Page 35: STRUKTUR DATA (6) Pointer dan Function

Hasil dan kondisi memoriHasil dan kondisi memori

Page 36: STRUKTUR DATA (6) Pointer dan Function

Parameter berupa arrayParameter berupa array

Pengiriman parameter berupa array sebenarnya Pengiriman parameter berupa array sebenarnya adalah pengiriman adalah pengiriman by referenceby reference, yang , yang dikirimkan adalah dikirimkan adalah alamat elemen pertamaalamat elemen pertama dari dari array, bukan seluruh nilai-nilai arraynya.array, bukan seluruh nilai-nilai arraynya.

Pada parameter formal, alamat elemen pertama Pada parameter formal, alamat elemen pertama dari array dapat ditulis berupa nama array saja dari array dapat ditulis berupa nama array saja tanpa ditulis indeksnya (kosong)tanpa ditulis indeksnya (kosong)

Pada parameter aktual, penulisan dilakukan Pada parameter aktual, penulisan dilakukan dengan menuliskan nama arraynya sajadengan menuliskan nama arraynya saja

Page 37: STRUKTUR DATA (6) Pointer dan Function

ContohContoh