LAPORAN PRAKTIKUM VIII POINTER

  

LAPORAN PRAKTIKUM VIII

POINTER

Disusun untuk Memenuhi Matakuliah Praktikum Dasar Pemrograman C++

Dibimbing oleh Bpk. Wahyu Sakti G.I

  

Oleh:

Ananda Putri Syaviri

130533608243

  

S1 PTI’13 OFF B

UNIVERSITAS NEGERI MALANG

FAKULTAS TEKNIK

JURUSAN TEKNIK ELEKTRO

PRODI PENDIDIKAN TEKNIK INFORMATIKA

  

November 2013

POINTER

A. Tujuan

  Setelah mempelajari bab ini diharapkan mahasiswa akan mampu : 1. Mengenaldanmemahami penggunaan pointer dalam listing program.

2. Membuat program sederhana dengan menerapkan konseppointer .

B. Dasar Teori.

  Definisi Pointer  Pointer berisi alamat dari suatu data, BUKAN data seperti pada variabel.  Variabel disimpan dalam memori, dan akan ditempatkan pada alamat tertentu.  Pointer dalam program digunakan untuk me-nunjuk kesuatu alamat memori. Pointer adalah sebuah variabel yang berisi alamat lain. Suatu pointer dimaksudkan

untuk menunjukan kesuatu alamat memori sehingga alamat dari suatu variable dapat diketahui

dengan mudah.

  Keunggulan menggunakan Pointer: 1. Penanganan terhadap array dan string akan lebih singkat, dan efisien.

  2. Memungkinkan suatu fungsi untuk menghasilkan 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 Tipe variable sama dengan tipe yang dikenal oleh variable biasa, misalnya int, float, char

dan sebagainya. Nama variabel pointer juga mengikuti ketentuan nama variable biasa. Yang

membedakan variabel pointer dengan variable 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 variabelnya. Pengertian dalam deklarasi variabel pointer memiliki perbedaan dengan

variable biasa, jika dalam deklarasi variable biasa:

  Float x; Dalamdeklarasi pointer: Float *ptr_x;

  Artinya variabel pointer ptr_x akan menunjukkan pada variable 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 adalah: Int y; Int *yy; dapat disederhanakan Int y,*yy;

  Input data Melalui Pointer

Anda dapat juga mengimputkan suatu data ke dalam variable dengan dengan menggunakan

pointernya, sebagai contoh tinjaulah program dibawah ini: Int x; Int *ptr_x; Ptr_x=&x; Printf(”inputkannilai 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 variable lewat pointer

Nilai suatu variabel dapat juga diberikan lewat pointernya, nilai yang diberikan ini dapat

berbentuk kostanta ataupun ekspresi aritmatika.

  Pointer danfungsi Pengiriman data dari sebuah fungsi ke fungsi lain dapat juga dilakukan dengan bantuan

pointer, bila pointer digunakan, maka data yang dikirim harus berupa alamat variabel, bukan

lagi nama variabel.

  Latihan Praktikum 1 Pemrograman C++

Nama Program :Program menggunakan suatu pointer dari fungsi

Bahasa Pemrogramam : C++ Compiler : MinGW Developer Studio Script program :

  #include <stdio.h> char*nama_bulan(int n); main() { int bl; printf("Bulan(1..2*)"); scanf("%d",&bl); printf("%s\n",nama_bulan(bl));

  } char*nama_bulan(int n) { static char*bulan[]={

  "Kode Bulan Salah", "Januari","Februari","Maret","Appril","Mei","Juni","Juli","A gustus", "September","Oktober","Nopember","Desember"}; return((n<1||n>12)?bulan[0]:bulan[n]);

  }

  Output Program: Algoritma: 1. Mulai.

  2. Masukkan bilangan bulan (1...2).

  3. Cetak hasil.

  scanf("%d",&bl); printf("%s\n",nama_bulan(bl));

  4. Jika inputan bilangan selain 1-12, maka “Kode Bulan Salah”.

  5. Cetak hasil.

  return((n<1||n>12)?bulan[0]:bulan[n]); 6. Selesai.

  Deskripsi: Program diatas menggunakan file header stdio karena menggunakan printf dan scanf.

  

Menggunakan fungsi main. Menggunakan tipe data string, static char, char dan int. Menggunakan

operator ||, <. Menggunakan fungsi return((n<1||n>12)?bulan[0]:bulan[n]); , yang artinya jika n

bernilai 1-12 maka bernilai benar hasilnya

“"Januari" /"Februari"/"Maret"/"Appril"/"Mei"/"Juni" /"Juli"/"Agustus"/"September"/"Oktober"/"

Nopember"/"Desember"}; , jika lebih dari 12 atau kurang dari 1 maka bernilai salah dan hasilnya

“Kode bulan salah”.

  LatihanPraktikum2 Pemrograman C++

  

Nama Program :Program menghitung banyak karakter

Bahasa Pemrogramam : C++ Compiler : MinGW Developer Studio Script program :

  //PROGRAM MENGHITUNG BANYAK KARAKTER #include <stdio.h> int misteri3(const char *); main () { char string[80]; printf("Ketikkan sebuah string : "); scanf("%s",&string); printf("%d\n", misteri3(string)); return 0;

  } int misteri3(const char *s) { int x=0; for(;*s!='\0';s++)

  • x; return x;

  }

  Output Program : Algoritma: 1. Mulai.

2. Ketikkan sebuah string.

  scanf("%s",&string); printf("%d\n", misteri3(string)); return 0; 3. Cetak hasil. int x=0; for(;*s!='\0';s++)

  • x;

4. Selesai.

  Deskripsi: Program diatas menggunakan file header stdio karena menggunakan printf dan scanf.

  

Menggunakan array satu dimensi. Menggunakan tipe data integer, string. Menggunakan fungsi

main. Menggunakan fungsi return 0 dan return x.

  LatihanPraktikum3 Pemrograman C++ Nama Program :Program untuk menjawab pertanyaan Bahasa Pemrogramam : C++ Compiler : MinGW Developer Studio Script program :

  #include <iostream.h> #include <conio.h> int main() { int aziz, defa, dewi; int *aziz1, *defa1, *dewi1; aziz=57082; defa=aziz; dewi=defa+1; aziz1=&aziz; defa1=&defa; dewi1=&dewi;

  • aziz1=aziz;
  • defa1=defa;
  • dewi1=dewi; cout<<"\t === ANANDA PUTRI SYAVIRI === \n\n"; cout<<"\t === 130533608243 === \n\n"; cout<<"\t === PTI'13 OFF B === \n\n"; cout<<"\t ===---------------**--------------=== \n\n"; cout<<"================================================\n"; cout<<" aziz=57082\n"; cout<<" defa=aziz\n"; cout<<" dewi=defa+1\n"; cout<<"================================================\n";
cout<<" a. Berapa nilai defa?\n"; cout<<" Nilai defa = "<<*defa1<<endl; cout<<endl; cout<<" b. Berapa nilai dewi?\n"; cout<<" Nilai dewi = "<<*dewi1<<endl; cout<<endl; aziz=57082; defa1=&aziz; dewi=*defa1+1; cout<<"================================================\n"; cout<<" aziz=57082\n"; cout<<" defa=&aziz\n"; cout<<" dewi=*defa+1\n"; cout<<"================================================\n"; cout<<" c. Berapa nilai defa?\n"; cout<<" Nilai defa = "<<*defa1<<endl; cout<<endl; cout<<" d. Berapa nilai dewi?\n"; cout<<" Nilai dewi = "<<*dewi1<<endl; cout<<endl;

  }

  Output Program : Algoritma: 1. Mulai.

  2. Membaca integer main aziz, defa, dewi.

  3. Membaca integer aziz1, defa1, dewi1.

  4. Membaca hasil dari nama-nama yang ingin diproses.

  5. Proses:

  aziz=57082; defa=aziz; dewi=defa+1; aziz1=&aziz; defa1=&defa; dewi1=&dewi;

  • aziz1=aziz;
  • defa1=defa;
  • dewi1=dewi;

  6. Membaca :

  cout<<" aziz=57082\n"; cout<<" defa=aziz\n"; cout<<" dewi=defa+1\n";

  7. Membaca nilai defa :

  cout<<" a. Berapa nilai defa?\n"; cout<<" Nilai defa = "<<*defa1<<endl;

  8. Membaca nilai dewi :

  cout<<" b. Berapa nilai dewi?\n"; cout<<" Nilai dewi = "<<*dewi1<<endl;

  9. Menghasilkan nilai defa dan dewi

  aziz=57082; defa1=&aziz; dewi=*defa1+1;

  10. Membaca nilai defa1

  cout<<" c. Berapa nilai defa?\n"; cout<<" Nilai defa = "<<*defa1<<endl;

  11. Membaca nilai dewi1

  cout<<" d. Berapa nilai dewi?\n"; cout<<" Nilai dewi = "<<*dewi1<<endl;

  12. Selesai.

  Deskripsi: Program diatas menggunakan file header iostream karena menggunakan cout dan cin,

menggunakan file header conio sebagai header standar. Menggunakan tipe data integer.

  

Menggunakan fungsi main. Menggunakan pointer dimana berfungsi untuk mengalokasikan

(mengetahui) alamat suatu memori dalam bahasa C++.

  TugasPraktikum 1 Pemrograman C++

Nama Program :Program menampilkan kalimat terbaik dari suatu kalimat yang di

inputkan

  Bahasa Pemrogramam : C++ Compiler : MinGW Developer Studio Script program :

  #include <iostream.h>

  #include <conio.h> #include <stdio.h> int main() { char kata[100]; char *balik; int i,jumlah; jumlah=0; balik=kata; char x; do { cout<<"\t === ANANDA PUTRI SYAVIRI === \n\n"; cout<<"\t === 130533608243 === \n\n"; cout<<"\t === PTI'13 OFF B === \n\n"; cout<<"\t ===---------------**--------------=== \n\n"; cout<<"\t ===---------------**--------------=== \n\n"; cout <<"\t Masukkan kata : "; gets(kata); for(i=0;kata[i]!='\0';i++) {jumlah ++;} cout<<"\n\t ===---------------**--------------=== \n\n"; cout << "\t Setelah Pembalikan Kata :"; for(i=jumlah -1;i>=0;i--) {cout << *(balik + i);} cout<<"\n\n\t ===---------------**--------------=== \n\n"; cout<<"\n\t Tekan y untuk mengulang = "; cin>>x; } while ((x=='y') || (x=='Y')); getch();

  }

  Output Program:

  Algoritma: 1. Mulai.

  2. Membacafungsi main.

  3. Membacatipe data integer dan char.

  4. Membaca array satudimensi.

  5. Membaca pointers char balik.

  6. Jumlah = 0 balik=kata for(i=0;kata[i]!='\0';i++) {jumlah ++;} 7. Masukkan kata.

  8. Cetak hasil pembalikkan kata.

  for(i=jumlah -1;i>=0;i--) {cout << *(balik + i);} 9. Jika ingin mengulang , maka “Tekan y untuk mengulang”. cout<<"\n\t Tekan y untuk mengulang = "; cin>>x; } while ((x=='y') || (x=='Y')); getch(); } 10. Cetak hasil.

  11. Kembali ke menu awal jika ‘y’, program berakhir jika ‘n’.

  12. Selesai.

  Deskripsi: Program diatas menggunakan file header iostream karena menggunakan cout dan cin,

menggunakan conio karena menggunakan getch, menggunakan stdio sebagai header standar dan

menggunakan fungsi gets(kata). Menggunakan tipe data integer dan char. Menggunakan pointer

char balik. Menggunakan array satu dimensi. Menggunakan perulangan do while dan for.

  Menggunakan fungsi getch dan gets(kata).

  Tugas Praktikum 2 Pemrograman C++ Nama Program :Program3 Variabel.

  Compiler : MinGW Developer Studio Script program :

  #include <iostream.h> #include <conio.h> intpengali(int*); int main() { inta,b,c; char x; do { cout<<"\t === ANANDA PUTRI SYAVIRI === \n\n"; cout<<"\t === 130533608243 === \n\n"; cout<<"\t === PTI'13 OFF B === \n\n"; cout<<"\t ===---------------**--------------=== \n\n"; cout<<"\n\t Masukkannilai a = "; cin>>a; cout<<"\n\t Masukkannilai b = "; cin>>b; cout<<"\n\t Masukkannilai c = "; cin>>c; cout<<"\t ===---------------**--------------=== \n\n"; pengali(&a); pengali(&b); pengali(&c); cout<<"\t Nilai a sesudahdieksekusi = "<<a<<endl; cout<<"\n\t Nilai b sesudahdieksekusi = "<<b<<endl; cout<<"\n\t Nilai c sesudahdieksekusi = "<<c<<endl; cout<<"\n\t ===---------------**--------------=== \n\n"; cout<<"\n\t Tekan y untukmengulang = "; cin>>x;

  } while ((x=='y') || (x=='Y')); getch();

  } intpengali(int *x) {

  • x=*x*2;

  }

  Output Program: Algoritma: 1. Mulai.

  2. Membaca file header.

  3. Membaca fungsi main, fungsi pengali(int*).

  4. Membaca tipe data integer a,b,c dan char x.

  5. Masukkan nilai a.

  6. Masukkan nilai b.

  7. Masukkan nilai c 8. Cetak hasil pengali.

  pengali(&a); pengali(&b); pengali(&c); 9. Jika ingin mengulang, maka “Tekan y untuk mengulang”. cout<<"\n\t Tekan y untuk mengulang = "; cin>>x;

  } while ((x=='y') || (x=='Y')); getch();

  } 10. Cetak hasil.

  11. Kembali ke menu awal jika ‘y’, program berakhir jika ‘n’.

  12. Selesai.

  Deskripsi: Program diatas menggunaka file header iostream karena menggunakan cout dan cin, conio

karena menggunakan getch. Menggunaka fungsi main dan pengali(int*). Menggunakan tipe data

integer dan char. Menggunakan perulangan do- while. Menggunakan fungsi getch.

  

KESIMPULAN

  1. Pointer adalah sebuah variabel yang berisi alamat lain. Suatu pointer dimaksudkan untuk menunjukan kesuatu alamat memori sehingga alamat dari suatu variable dapat diketahui dengan mudah.

  2. Dengan menggunakan pointer yang benar, dapat menyusun sebuah program yang berkemampuan tinggi. Sebaliknya sedikit saja kesalahan dalam menggunakan pointer akan mengakibatkan kesalahan fatal pada program tersebut.

  

3. Menggunakan operator deference variable akan menghasilkan alamat lokasi memori.

  4. Menggunakan operator reference akan dihasilkan nilai yang berada pada suatu alamat memori.

  

DAFTAR RUJUKAN

Tim Asisten Dosen. 2013. Modul 8.POINTER. Malang: Universitas Negeri M alang.

  Kadir, Abdul. 2003. Pemrograman C++. Yogyakarta: Penerbit ANDI.