Upload
adrina
View
156
Download
4
Embed Size (px)
DESCRIPTION
Pemrogramman Terstruktur. POINTER. Teknik Informatika Universitas Muhammadiyah Malang 2012. Tujuan Instruksional. Mahasiswa memahami tentang pointer pada C dan mampu menggunakannya Mahasiswa memahami dan mampu menggunakan pointer. Topik. Variabel Pointer Operasi pointer. P OINTER. - PowerPoint PPT Presentation
Citation preview
POINTER
Teknik InformatikaUniversitas Muhammadiyah Malang
2012
Pemrogramman Terstruktur
Tujuan Instruksional
• Mahasiswa memahami tentang pointer pada C dan mampu menggunakannya
• Mahasiswa memahami dan mampu menggunakan pointer
Topik
• Variabel Pointer• Operasi pointer
POINTER
• Pointer adalah variabel yang berisi alamat memori.
• Operator ‘&’ digunakan untuk mendapatkan alamat dari variabel
• Operator ‘*’ digunakan untuk mendapatkan objek/nilai yang ditunjuk (pointed to) oleh pointer
4
KELEBIHAN POINTER
• Kelebihan penggunaan pointer– Flexibilitas– Kode ringkas– Efisiensi memory
• Pointer digunakan dalam:– Array– Fungsi– Struktur
5
Deklarasi Pointer
• Sama seperti variabel, pointer harus dideklarasikan sebelum digunakan.
• Format deklarasi pointer :tipe_ data *nama_ var;
6
Contoh Deklarasi pointer
int *nilai_ptr, p;• Artinya : nilai_ptr adalah pointer to int• int menyatakan tipe data yang ditunjuk oleh
ptr.• Sedangkan p bukanlah pointer krn tidak ada
tanda * sebelum p
7
Inisialisasi Pointer
• Saat pointer dideklarasikan, dia tidak menunjuk kemanapun. Anda harus membuatnya menunjuk ke sesuatu sebelum digunakan.
• Pointer diinisialisasi dengan alamat variable.Contoh: int *ip, i=100;
ip=&i;
Error ip = i;
8
Operator Pointer
• Operator alamat (address operator) & akan menghasilkan alamat memori dari operannya. Contoh : int y = 5;
int *yPtr;
yPtr = &y; assignment alamat y ke yPtr
9
Inisialisasi Pointer
• Pointer tidak dapat menunjuk :– Pointer tidak dapat langsung diinisialisasi dengan
konstanta, contoh :
– Pointer harus menunjuk ke alamat variabel tertentu baru bisa di-assignment dengan konstanta. Tetapi sebenarnya yang berubah nilainya adalah variabel yg telah ditunjuk. Dan bukan pointer itu sendiri.
10
Contoh Pointer
11
Contoh Pointer
12
13
Contoh Program
14
15
16
Operasi pada Pointer
• Variabel pointer dapat dioperasikan sebagaimana variabel biasa, antara lain :– Operasi assignment– Operasi aritmatika– Operasi logika
17
Operasi Assignment
18
Operasi Aritmatika
• Variabel pointer dapat ditambah atau dikurangi dengan nilai integer.
• Operasi pertambahan dengan suatu nilai integer merupakan suatu peningkatan nilai pointer yang menunjukkan lokasi data berikutnya di memori
19
Operasi Aritmatika
• Misalnya pointer p menyimpan alamat 1000, maka :– Jika p adalah pointer to int, maka p++ akan
menunjuk alamat 1004 (krn int berukuran 4 byte)– Jika p adalah pointer to char, maka p++ akan
menunjuk alamat 1001 (krn ukuran char adalah 1 byte)
20
21
Operasi Logika
22
• Dua variabel pointer dapat dibandingkan jika keduanya mempunyai tipe yang sama atau keduanya bernilai null.
Operasi Pointer pd Array
• Bagaimana mengoperasikan array menggunakan pointer?
• Nama array yang ditulis tanpa indeks, menyatakan alamat elemen pertamanya.
• Gunakan operasi aritmatika pada pointer
23
Operasi Pointer untuk Array
• Nama array yang ditulis tanpa indeks, menyatakan alamat elemen pertamanya.
• Misalnya array X dan pointer P=X :– Alamat masing2 elemennya dpt dituliskan :
• Elemen ke-1 : &X[0] atau X atau X+0 atau P atau P+0• Elemen ke-2 : &X[1] atau X+1 atau P+1• Elemen ke-n : &X[n-1] atau X+(n-1) atau P+(n-1)
– Isi array dpt diakses sbb :• Elemen ke-1 : X[0] atau *(X+0) atau *P atau *(P+0)• Elemen ke-2 : X[1] atau *(X+1) atau *(P+1)• Elemen ke-n : X[n-1] atau *(X+n-1) atau *(P+n-1)
24
Contoh-contoh
25
• Bagaimanakah menulis seluruh isi array menggunakan pointer?
26
Latihan Soal
• Buatlah sebuah array bertipe char berisi huruf A-J. Tampilkan seluruh elemennya menggunakan pointer!
• Buatlah array bertipe int yang berisi bilangan genap antara 0-10. Tampilkan seluruh elemennya menggunakan pointer!
• Buatlah program yang akan menerima masukan berupa string dari user. Tanpa menggunakan fungsi strlen, hitunglah berapa panjang string tersebut dengan menggunakan pointer!
27
Latihan
• Tanpa menggunakan fungsi strcpy, salinlah isi sebuah string ke variabel string lainnya (gunakan pointer)
• Buat penjumlahan dua buah big integer, dimana jumlah digit dan nilai untuk masing masing bilangan diinputkan oleh user
28
Perbedaan Array & Pointer
• Jika pa adalah pointer dan a adalah array dapat kita lakukan pa = a (yang identik dengan pernyataan pa = &a[0]) dan pa++
• Tetapi karena Array bukanlah pointer sehingga tidak dapat kita lakukan a = pa dan a++
29
Pointer sbg Array
• Kita dapat membuat array yang dinamis ukurannya dengan alokasi
• Alokasi dinamis pada array memungkinkan kita untuk membuat array yang ukurannya disesuaikan dengan kebutuhan program.
• Fungsi alokasi : malloc (ada di stdlib.h)• Contoh array dinamis :
int *a;a = (int *)malloc (5 *sizeof(int))
30
31
Pointer sbg Array
32
33
Pointer sbg Array
• Contoh : menyimpan string yang berbeda panjangnya
34
Array Multidimensi & Pointer
• Sebuah array 2 dimensi sebenarnya adalah array of array.
• Mendeklarasikan array 2 dimensi dg pointer :tipe_data (*nama_array)[banyak_kolom]Contoh :
int (*b)[4] mendeklarasikan array b dengan ukuran kolom 4
35
• Jika kita membuat array 2 dimensi :int a[ ][20] identik dengan int (*a)[20]
36
37
38
Exercise
1. [Poin:5]Buatlah sebuah array bertipe char yang berisi huruf A-Z. Dengan menggunakan perulangan tampilkan seluruh elemennya menggunakan pointer.
2. [Poin:5]Buatlah array bertipe int yang berisi bilangan genap antara 0-100. Tampilkan seluruh elemennya menggunakan pointer.
39
3. [Poin:6]Buatlah program untuk membaca 5 angka dari user dan disimpan ke array. Gunakan pointer untuk menyimpan tiap nilainya.
4. [Poin:6]Buatlah program untuk membaca sebuah string dari user. Tampilkan per-karakter menggunakan pointer.
40
5. [Poin:6] Buatlah program yang akan menerima masukan berupa string dari user. Tanpa menggunakan fungsi strlen, hitunglah berapa panjang string tersebut dengan menggunakan pointer.
6. [Poin:6] Tanpa menggunakan fungsi strcpy, salinlah isi sebuah string ke variabel string lainnya (gunakan pointer).
41
7. [Poin:6] Dengan menggunakan pointer, buatlah program yang akan menggabungkan 2 buah string (tanpa menggunakan strcpy dan turunannya).
8. Dengan menggunakan pointer, buatlah array untuk menyimpan dan menampilkan data berikut :
42
Tahun Jumlah
2009 1750
2008 1345
2007 950
2006 657
9. Gunakanlah malloc untuk membuat array dari pointer dengan spesifikasi sbb :
10.
43
No. Tipe Elemen Ukuran Nama array
1 int 100 tabelNilai
2 float 50 rata_rata
3 char 1000 essay
Daftar Pustaka
• Budi Hartanto, “Pembuatan Program C”, Penerbit Andi, 2004
• Jogiyanto H., “Konsep Dasar Pemrograman Bahasa C”, Penerbit Andi, 2003