LABORATORIUM DMAG DAN RPL PROGRAM STUDI TEKNIK INFORMATIKA FAKULTAS TEKNIK UNIVERSITAS MUHAMMADIYAH MALANG 2008/2009
I. TUJUAN
Mahasiswa memahami konsep dasar pointer Mahasiswa memahami dan mampu memenggunakan pointer sederhana Mahasiswa memahami dan mampu menggunakan pointer bersama array
V. KEGIATAN PRAKTIKUM
Kegiatan A: Konsep Dasar Pointer 1. Jalankan program berikut ! #include <stdio.h> void main(void) { int i = 7, j = 11; printf("i = %d, j = %d\n", i, j); printf("&i = %p, &j = %p\n", &i, &j); } 2. Apa yang ditampilkan oleh program di atas? 3. Berapa nilai i, &i, j, &j ? 4. Ketikkan perintah &j = 4; setelah baris printf("&i = %p, &j = %p\n", &i, &j); lalu jalankan lagi program ! 5. Apa yang terjadi ? Mengapa ? 6. Jalankan program berikut ! #include <stdio.h> void main(void) { int i = 7; // Statement 1 int *pOne; // Statement 2 float x = 0.00; printf("&i = %p \n", &i); pOne = &i; // Statement 3 printf("pOne = %p\n", pOne); } 7. Berapa nilai i dan &i ? 8. Setelah Statement 3 dieksekusi, berapa nilai pOne ? 9. Ketikkan perintah pOne = 4; setelah baris printf("pOne = %p\n", pOne); lalu jalankan lagi
program ! 10.Apa yang terjadi ? Mengapa ? 11.Apa perbedaan antara langkah 4 dan langkah 9 ? 12.Coba tambahkan perintah berikut pOne = &x; ! Jalankan program ! 13.Apa yang terjadi ? Mengapa ? Kegiatan B: Pointer dan Array 1. Jalankan program berikut ini ! #include <stdio.h> void main(void) { char a[4] = "Cup"; printf("a = %p\n&a[0] = %p\n&a[1] = %p\n&a[2] = %p\n", a, &a[0], &a[1], &a[2]); } 2. Berapa nilai a ? Nilai a tersebut mewakili nilai apa ? 3. Apakah nilai a dan &a[0] sama ? Buktikan dengan program ! 4. Berapa byte perbedaan antara a[0] dan a[1] ? 5. Berapa byte yang dibutuhkan untuk menyimpan karakter di array tersebut ? 6. Perhatikan kode berikut ini: printf("a + 1 = %p\n&a[1] = %p\n", a + 1, &a[1]); Apakah a + 1 nilainya sama dengan &a[1] ? 7. Perhatikan kode berikut ini: printf("a + 1 = %p\n&a[1] = %p\n", a + 2, &a[2]); Apakah a + 2 nilainya sama dengan &a[2] ? 8. Sebagai kesimpulan, manakah yang benar dari pernyataan berikut ? a == &a? a == &a[0]? a + 1 == &a[1]?
m. j = ptr1 + 3; n. ptr1 = &j[1]; 2. Berapakah nilai alamat untuk ekspresi di bawah ini, jika alamat array j[ ] adalah A008 dan array x[ ] adalah 9008 (ingat bahwa alamat ini menggunakan basis hexadesimal): a. &j[0] b. j c. j 2 d. j + 4 e. &x[4] f. x + 3 g. x 3 h. &x[2] + 3
VI.TUGAS PRAKTIKUM
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. 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. 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 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 : Tahun Jumlah 2009 1750 2008 1345 2007 950 2006 657 9. Gunakanlah malloc untuk membuat array dari pointer dengan spesikasi sbb: No. Tipe Elemen Ukuran Nama array 1 2 3 int oat char 100 50 1000 tabelNilai rata_rata essay