Anda di halaman 1dari 16

LAPORAN PRAKTIKUM VIII

POINTER disusun untuk memenuhi matakuliah praktikum Dasar Pemrograman Komputer yang dibimbing oleh Bapak Wahyu Sakti Gunawan Irianto

Oleh:

Fariz Abu Rizal 120534431460 OFFERING A

FAKULTAS TEKNIK JURUSAN TEKNIK ELEKTRO PRODI PENDIDIKAN TEKNIK ELEKTRO UNIVERSITAS NEGERI MALANG April 2014

MODUL VIII POINTER

A. TUJUAN Setelah mempelajari bab ini diharapkan mahasiswa akan mampu: 1. Mengenal dan memahami penggunaan pointer dalam listing program. 2. Membuat program sederhana dengan menerapkan konsep pointer.

B. DASAR TEORI Keunggulan menggunakan Pointer: 1. Penanganan terhadap array dan string akan lebih singkat, dan efisien. 2. Memungkinkan suatu fungsi untuk menghasulkan lebih dari satu nilai. 3. Memiliki kemampuan untuk mengirimkan alamat suatu fungsi ke fungsi yang lain. 4. Kemampuan berkerja dengan memori yang telah dialokasikan secara dinamik. 5. Memungkinkan untuk berhubungan langsung ke hardware. 6. Untuk menciptakan data structure yang kompleks. 7. Memungkinkan untuk berhubungan langsung dengan parameter command line. Dengan menggunakan pointer yang benar, anda dapat menyusun sebuah program yang berkemampuan tinggi. Sebaliknya sedikit saja kesalahan dalam menggunakan pointer akan mengakibatkan kesalahan fatal pada program anda. Karena pointer dapat langsung menunjukan pada lokasi memori, jika lokasi yang ditunjuk salah, berarti data yang diambil juga akan salah, dan sudah tentu program anda akan menjadi salah juga. Operator deference (&) ampersand sign Operator ini biasa disebut dengan address of atau operator alamat. Dengan menggunakan operator deference variable akan menghasilkan alamat lokasi memori.

Operator reference (*) Operator ini biasa disebut value pointed by. Dengan menggunakan operator ini akan dihasilkan nilai yang berada pada suatu alamat memori. Deklarasi Variabel Pointer Variabel pointer juga harus didelarasikan terlebih dahulu sebelum mulai digunakan bentuk umum cara mendeklarasikan variabel pointer adalah: Tipe *nama_var_pointer. Tipe variabel sama dengan tipe yang dikenal oleh variabel biasa, misalnya int, float, char dan sebagainya. Nama variabel pointer juga mengikuti ketentuan nama variabel biasa. Yang membedakan variabel pointer dengan variabel biasa dengan menggunakan tanda asterisk (*) didepan nama varibel pada waktu deklarasi. Contoh : Int *ptr_x; Ptr merupakan variabel pointer, karena pada deklarasi digunakan tanda (*) didepan nama variabelya. Pengertian dalam deklarasi variabel pointer memiliki perbedaan dengan variabel biasa, jika dalam deklarasi variabel biasa: Float x; Dalam deklarasi pointer: Float *ptr_x; Artinya variabel pointer ptr_x akan menunjukkan pada variabel yang bertipe float. Jadi disini bukan ptr_x-nya yang bertipe float, melainkan variabel lain yang ditunjuk yang bertipe float. Contoh dalam pendeklarasian yang salah: float y; Int *ptr_y; Benar: Float y; Float *ptr_y; Dan untuk mendeklarasikan sebuah variable y yang bertipe integer dengan variabel pointernya yy adalah: Int y; Int *yy; dapat disederhanakan int y,*yy;

Ex: Mencetak Nama Alamat Dengan pointer

Input data Melalui Pointer Anda dapat juga mengimputkan suatu data kedalam variabel dengan dengan menggunankan pointernya, sebagai contoh tinjaulah program dibawah ini: Int x; Int *ptr_x; Ptr_x=&x; Printf(inputkan nilai x : ); Scanf(%d,ptr_x); Ingat! Menginputkan data dengan scanf() membutuhkan alamat dari variabel yang bersangkutan. Karena ptr_x merupakan alamat dari variabel x, maka ptr_x dapat digunakan dalam scanf(). Jadi pernyataan: Scanf(%d,ptr_x); Sama dengan: Scanf(%d,&x); Dimana &x juga menunjukkan alamat dari variabel x. Memberikan suatu nilai pada suatu variabel lewat pointer Nilai suatu variabel dapat juga diberikan lewat pointernya, nilai yang diberikan ini dapat berbentuk kostanta ataupun ekspresi aritmatika. Contoh:

Contoh: Memberikan suatu variabel melalui pointer

Pointer dan fungsi Pengiriman data dari sebuah fungsi kefungsi lain dapat juga dilakukan dengan bantuan pointer, bila pointer digunakan, maka data yang dikirim harus berupa alamat variabel, bukan lagi nama variabel. Contoh_1: Mengirimkan data kesuatu fungsi dengan menggunakan pointer.

Ket: *alm_c=*alm_a**alm_b; Disini turbo c langsung mengetahui bahwa tanda (*) mana yang berarti pointer dan mana yang berarti tanda kali.

Contoh_2: Kombinasi antara pengguna variabel biasa dan pointer

Contoh: dua dimensi (pointer)

Contoh 1:

Hasil Kompilasi:

Contoh 2:

Mula mula variabel tglahir di isi dengan tanggal, bulan, tahun melalui pengaksessan. Variable pointer yang menunjuk alamat array tglahir. Untuk menampilkan tglahir [ ]. Melalui variable pointer digunakan cara * (tgl +i) atau bisa juga dengan *tgl++. Setelah itu dijalankan maka hasil eksekusi akan ditampilkan:

C. LATIHAN Praktikum 1 Nama Program Bahasa Pemrograman Compiler Algoritma 1. Mulai 2. Input angka 1-12 3. Baca angka 4. Static nama bulan 5. Tampilkan nama bulan 6. Selesai Script Program
#include <stdio.h> #include <conio.h> char *nama_bulan(int n); int main () { int bl; printf("Bulan (1-12) : ");scanf("%d",&bl); printf("%s\n",nama_bulan(bl)); getch(); } char *nama_bulan(int n) { static char*bulan[]={ "Kode Bulan Salah", "Januari","Februari","Maret","April","Mei","Juni","Juli", "Agustus","September","Oktober","November","Desember" }; return ((n<1 || n>12)? bulan[0]:bulan[n]); getch(); }

: Input Nama Bulan : C++ : MinGWStudio

Output Program

Praktikum 2 Nama Program Bahasa Pemrograman Compiler Algoritma 1. mulai 2. baca integer 3. baca char 4. input string 5. proses kata yang di input 6. masuk ke perulangan for 7. tampilkan hasil perlungan berupa angka 8. selesai : Program Menghitung Banyak Karakter : C++ : MinGWStudio

Script Program
#include <stdio.h> #include <conio.h> int misteri3(char*s); main() { char string[80]; printf("Ketikan sebuah string: "); scanf("%s", &string); printf("%d\n", misteri3(string)); getch(); return 0; } int misteri3(char*s) { int x=0; for (;*s!='\0';s++) { ++x; } return x; }

Output Program

Praktikum 3 Nama Program Bahasa Pemrograman Compiler Algoritma 1. Mulai 2. Baca data integer 3. Input nilai aziz,defa,dewi 4. Proses aziz=aziz, defa=&aziz, dewi=defa+1 5. Tampilkan nilai 6. Selesai Script Program : Program Nilai : C++ : MinGWStudio

#include <iostream.h> #include <stdio.h> #include <conio.h> main () { int Aziz, Defa, Dewi, *def; Aziz = 57082; Defa = Aziz; Dewi = 1+Defa; cout<<"___________________\n\n"; cout<<" Diketahui\n"; cout<<"___________________\n"; cout<<"Aziz= 57082\n"; cout<<"Defa= Aziz\n"; cout<<"Dewi= Defa+1\n\n\n"; cout<<"___________________\n\n"; cout<<" Ditanya\n"; cout<<"___________________\n"; cout<<"Berapa nilai Defa? \n"; cout<<"Berapa nilai Dewi? \n\n\n"; cout<<"___________________\n\n"; cout<<" Jawab\n"; cout<<"___________________\n"; cout<<"Nilai Defa : "<<Defa<<endl; cout<<"Nilai Dewi : "<<Dewi<<endl<<endl; def=&Aziz; Dewi=1+*def; cout<<"Nilai cout<<"Nilai cout<<"Nilai cout<<"Nilai getch(); } Defa Dewi Defa Dewi : : : : "<<*def<<endl; "<<Dewi<<endl<<endl; "<<*def<<endl; "<<Dewi<<endl<<endl;

Output Program

D. TUGAS PRAKTIKUM Praktikum 1 Nama Program Bahasa Pemrograman Compiler Algoritma 1. Mulai 2. Baca data char 3. Input kalimat 4. Jalankan perulangan 5. Tampilkan hasil 6. Selesai : Program Pembalik Kata : C++ : MinGWStudio

Flowchart

Baca x

P=[0]?

Script Program
#include <conio.h> #include <stdio.h> #include <iostream.h> main() { char x[255]; char *p=&x[0]; printf("Masukkan sebuah kalimat: "); gets(x); do { p++; } while(*p!='\0'); printf("\nHasil: "); while(p != &x[0]) { putchar(*--p); } getch(); }

Output Program

Praktikum 2 Nama Program Bahasa Pemrograman Compiler Flow Chart


Start

: Program Pengganda Kata : C++ : MinGWStudio

Read a,b,c

A=2*a B=2*b C=2*c

Print A,B,C

End

Algoritma 1. Mulai 2. Input nilai a,b,c 3. Float 2x (a,b,c) 4. Tampilkan 5. Selesai Script Program

#include <iostream.h> #include <conio.h> void l(float *, float *, float *); main() { float a,b,c; cout<<"Masukkan nilai a: "; cin>>a; cout<<"Masukkan nilai b: "; cin>>b; cout<<"Masukkan nilai c: "; cin>>c; l(&a,&b,&c); getch(); } void l(float *p_a, float *p_b, float *p_c) { float A,B,C; A=2**p_a; B=2**p_b; C=2**p_c; cout<<"\n\nNilai yang sudah digandakan: \n\n\n"; cout<<"Nilai a: "<<A<<endl; cout<<"Nilai b: "<<B<<endl; cout<<"Nilai c: "<<C<<endl; }

Output Program

E. KESIMPULAN Dengan menggunakan pointer yang benar, anda dapat menyusun sebuah program yang berkemampuan tinggi. Sebaliknya sedikit saja kesalahan dalam menggunakan pointer akan mengakibatkan kesalahan fatal pada program anda. Karena pointer dapat langsung menunjukan pada lokasi memori, jika lokasi yang

ditunjuk salah, berarti data yang diambil juga akan salah, dan sudah tentu program anda akan menjadi salah juga.

F. DARTAR RUJUKAN TIM Asdos UM. 2014. Modul 1 PENGENALAN SISTEM OPERASI, IDE

VISUAL C++, DAN ALGORITMA PEMROGRAMAN. Malang. Universitas Negeri Malang.