44
POINTER Teknik Informatika Universitas Muhammadiyah Malang 2012 Pemrogramman Terstruktur

POINTER

  • 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

Page 1: POINTER

POINTER

Teknik InformatikaUniversitas Muhammadiyah Malang

2012

Pemrogramman Terstruktur

Page 2: POINTER

Tujuan Instruksional

• Mahasiswa memahami tentang pointer pada C dan mampu menggunakannya

• Mahasiswa memahami dan mampu menggunakan pointer

Page 3: POINTER

Topik

• Variabel Pointer• Operasi pointer

Page 4: 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

Page 5: POINTER

KELEBIHAN POINTER

• Kelebihan penggunaan pointer– Flexibilitas– Kode ringkas– Efisiensi memory

• Pointer digunakan dalam:– Array– Fungsi– Struktur

5

Page 6: POINTER

Deklarasi Pointer

• Sama seperti variabel, pointer harus dideklarasikan sebelum digunakan.

• Format deklarasi pointer :tipe_ data *nama_ var;

6

Page 7: POINTER

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

Page 8: POINTER

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

Page 9: POINTER

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

Page 10: POINTER

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

Page 11: POINTER

Contoh Pointer

11

Page 12: POINTER

Contoh Pointer

12

Page 13: POINTER

13

Page 14: POINTER

Contoh Program

14

Page 15: POINTER

15

Page 16: POINTER

16

Page 17: POINTER

Operasi pada Pointer

• Variabel pointer dapat dioperasikan sebagaimana variabel biasa, antara lain :– Operasi assignment– Operasi aritmatika– Operasi logika

17

Page 18: POINTER

Operasi Assignment

18

Page 19: POINTER

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

Page 20: POINTER

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

Page 21: POINTER

21

Page 22: POINTER

Operasi Logika

22

• Dua variabel pointer dapat dibandingkan jika keduanya mempunyai tipe yang sama atau keduanya bernilai null.

Page 23: POINTER

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

Page 24: POINTER

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

Page 25: POINTER

Contoh-contoh

25

Page 26: POINTER

• Bagaimanakah menulis seluruh isi array menggunakan pointer?

26

Page 27: POINTER

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

Page 28: POINTER

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

Page 29: POINTER

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

Page 30: POINTER

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

Page 31: POINTER

31

Page 32: POINTER

Pointer sbg Array

32

Page 33: POINTER

33

Page 34: POINTER

Pointer sbg Array

• Contoh : menyimpan string yang berbeda panjangnya

34

Page 35: POINTER

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

Page 36: POINTER

• Jika kita membuat array 2 dimensi :int a[ ][20] identik dengan int (*a)[20]

36

Page 37: POINTER

37

Page 38: POINTER

38

Page 39: POINTER

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

Page 40: POINTER

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

Page 41: POINTER

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

Page 42: POINTER

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

Page 43: POINTER

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

Page 44: POINTER

Daftar Pustaka

• Budi Hartanto, “Pembuatan Program C”, Penerbit Andi, 2004

• Jogiyanto H., “Konsep Dasar Pemrograman Bahasa C”, Penerbit Andi, 2003