Senin, 14 Desember 2015

POINTER

POINTER

TUJUAN

 Tujuan dari mempelajari Modul 8 “Pointer” ini, agar mahasiswa mampu :
1.      Mengetahui arti dan fungsi pointer dalam pemrograman.
2.      Memahamipenggunaanpointerdalamlistingprogram.
3.      Mengetahui keunggulan pointer pada suatu program.
4.      Membuat program sederhana dengan menerapkan konsep pointer.

DASAR TEORI
DEFINISI POINTER
Pointer (variabel penunjuk) adalah suatu variabel yang berisi alamat memori dari suatu variabel lain. Pointer merupakan variabel level rendah yang dapat digunakan untuk menunjuk nilai integer, character, float, double, atau single, dan bahkan tipe-tipe data lain yang didukung oleh bahasa C.
Pointer (variabel penunjuk) adalah suatu variabel yang berisi alamat memori dari suatu variabel lain. Alamat ini merupakan lokasi dari obyek lain (biasanya variabel lain) di dalam memori. Contoh, jika sebuah variabel berisi alamat dari variabel lain, variabel pertama dikatakan menunjuk ke variabel kedua.
Operator Pointer ada dua, yaitu :
a.    Operator &(Operator Diference)
1.         Operator & bersifat unary (hanya memerlukan satu operand saja).
2.         Operator & menghasilkan alamat dari operandnya.
b.    Operator *(Operator Reference)
1.         Operator * bersifat unary (hanya memerlukan satu operand saja).
2.         Operator * menghasilkan nilai yang berada pada sebuah alamat.
Pointer : variabel yang berisi alamat memori
Keterangan:
Type adalah tipe dasar pointer
Variabel name adalah nama variabel pointer
* adalah operator memori untuk mengembalikan nilai variabel pada alamatnya yang ditentukan oleh operand.
Contoh :
#include <iostream.h>
//cetak p dan *p
int main()
{
            int v = 7, *p;
            p = &v;
            cout<<"Nilai v = "<<v<<" dan *p = "<<*p;
            cout<<"Alamatnya = "<<p<<endl;

}

Operasi Aritmatika
Suatu variabel pointer hanya dapat dilakukan operasi aritmatika dengan nilai integer saja. Operasi yang biasa dilakukan adalah operasi penambahan dan pengurangan. Operasi penambahan dengan suatu nilai menunjukkan lokasi data berikutnya (index selanjutnya) dalam memori. Begitu juga operasi pengurangan.
Contoh:
#include <stdio.h>
#include <conio.h>
int main()
{
            int nilai [3], *penunjuk;
            nilai [0] = 125;
            nilai [1] = 345;
            nilai [2] = 750;
            penunjuk = &nilai[0];
            printf("Nilai %i ada di alamat memori %p\n", *penunjuk, penunjuk);
            printf("Nilai %i ada di alamat memori %p\n", *(penunjuk+1), penunjuk+1);
            printf("Nilai %i ada di alamat memori %p\n", *(penunjuk+2), penunjuk+2);
            getch();
}

Operator Logika
Contoh:
#include <stdio.h>
#include <conio.h>

int main()
{
            int a = 100, b = 200, *pa, *pb;
            pa = &a;
            pb = &b;
            if(pa < pb)
                        printf("Pointer a menunjuk ke memori lebih rendah dari pointer b \n");
            if(pa == pb)
                        printf("Pointer a menunjuk ke memori yang sama dengan pointer b \n");
            if(pa > pb)
                        printf("Pointer a menunjuk ke memori yang lebih tinggi dari pointer b \n");
            getch();
}

Input data melalui Pointer
Anda juga dapat menginputkan suatu data kedalam variabel dengan menggunakan pointernya, sebagai contoh tinjaulah program di bawah 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

Keunggulan menggunakan Pointer:
1.      Untuk menciptakan data struktur yang kompleks
2.      Memungkinkan suatu fungsi untuk menghasilkan lebih dari satu nilai
3.      Memiliki kemampuan untuk mengirimkan alamat suatu fungsi ke fungsi yang lain
4.      Penanganan terhadap array dan string akan lebih singkat dan efisien
5.      Memungkinkan untuk berhubungan langsung dengan parameter command line
Kemampuan bekerja dengan memori telah dialokasikan secara dinamik

Tugas Praktikum 1
Pemrograman c++

Nama Program                      : Menentukan nilai dari setiap nama
Bahasa Pemrograman          : C++
Compiler                                : MinGW Developer Studio
Script Program                      :
#include <iostream.h>
#include <conio.h>
int main()

{
            int aziz, defa, dewi;
            int *p_aziz, *p_defa, *p_dewi;

            aziz = 85067;
            defa = aziz;
            dewi = defa + 3;
            p_aziz = &aziz;
            p_defa = &defa;
            p_dewi = &dewi;
            *p_aziz = aziz;
            *p_defa = defa;
            *p_dewi = dewi;
            cout<<"Syaiful Ulum\n";
            cout<<"140534603100\n";
            cout<<"S1 PTE C\n\n";
            cout<<"Aziz = 85063\n";
            cout<<"Defa = aziz\n";
            cout<<"Dewi = defa + 3\n";
            cout<<"\n";
            cout<<"a. Berapakah nilai defa? "<<*p_defa;
            cout<<"\nb. Berapakah nilai dewi? "<<*p_dewi;
            cout<<"\n";
           
            aziz = 85067;
            p_defa = &aziz;
            dewi = *p_defa + 3;
            cout<<"\nAziz = 85067\n";
            cout<<"defa = aziz\n";
            cout<<"dewi = defa + 3\n";
            cout<<"\n";
            cout<<"c. Berapakah nilai defa? "<<*p_defa;
            cout<<"\nd. Berapakah nilai dewi? "<<*p_dewi;
}
Output Program :
Algoritma :
1.      Mulai
2.       Mendeklarasikan variabel aziz, defa dan dewi
3.      Mendeklarasikan *p_aziz, *p_defa, *p_dewi
4.      Mendeklarasikan nilai aziz = 85067
5.      Mendeklarasikan defa sama dengan aziz
6.      Mendeklarasikan dewi sama dengan defa ditambah 3
7.      Mendeklarasikan *p_aziz sama dengan aziz
8.      Mendeklrasikan *p_defa sama dengan defa
9.      Mendeklarasikan *p_dewi sama dengan dewi
10.  Menampilkan tampilan aziz = 85063
11.  Menampilkan tampilan defa sama dengan aziz
12.  Menampilkan tampilan dewi sama dengan defa ditambah 3
13.  Menampilkan nilai defa
14.  Menampilkan nilai dewi
15.  Menampilkan tampilan aziz sama dengan 85067
16.  Menampilkan tampilan defa sama dengan aziz
17.  Menampilkan tampilan dewi sama dengan defa ditambah tiga
18.  Menampilkan nilai defa
19.  Menampilkan nilai dewi
20.  Selesai

Penjelasan Program :
Program ini menggunakan file header iostram.h karena menggunakan cin dan cout. Cin digunakan sebagai inputan sedangkan cout digunakan sebagai keluaran atau untuk menampilkan sesuatu yang ada di dalam cout. Pertama mendeklarasikan variabel aziz, defa dan dewi yang menggunakan tipe data integer. Kedua mendeklarasikan pointer p_aziz, p_defa, p_dewi yang memiliki tipe data integer. Selanjutnya program mendeklarasikan ni;ai aziz sama dengan 85067, defa sama dengan aziz dan dewi sama dengan defa ditambah defa. Lalu program akan menampilkan bahwa nilai aziz sama dengan 85063, defa sama dengan aziz dan dewi sama dengan defa. Maka ketika terdapat program yang menanyakan berapakah nilai dari defa? Hasilnya adalah 85067. Alasannya sudah dideklarasikan sebelumnya bahwa nilai aziz adalah 85067. Senagkan untuk pertanyaan yang menanyakan berapa nilai dewi maka hasilnya adalah 85070. Alasannya karena tadi sudah dijelaskan bahwa untuk nilai dewi pendeklarasiannya adalah nilai defa ditambah tiga maka itu adalah nilai dewi. Untuk nilai defa bernilai 8506 kemudian ditambah 3 hasilnya 85070, itu adalah nilai dari dewi.
Sekarang program membuat pendeklarasian yaitu aziz sama dengan 65067, p_defa sama dengan nilai aziz dan dewi sama dengan p_defa ditambah tiga. Sebelumnya sudah dideklarasikan juga bahwa p_aziz = &aziz, p_defa = &defa, p_dewi = &dewi, *p_aziz = aziz, *p_defa = defa, *p_dewi = dewi. Lalu program menampilkan nilai defa yaitu 85067 karena pada script untuk keluaran nilai defa disimpan di dalam variabel *p_defa. Kembali lagi ke pendeklarasian tadi bahwa *p_defa sama dengan defa dan sama dengan aziz, untuk nilai aziz adalah 85067 maka nilai defa 85067. Nilai dewi sama dengan 85070, 85070 didapat sam seperti nilai defa yang berdasarkan pendeklarasian pada program.

KESIMPULAN
1.        Pointer adalah variable yang berisi alamat memory sebagai nilainya dan berbeda dengan variable biasa yang berisi nilai tertentu.
2.        Operator pointer ada dua, yaitu :
·         Operator &(Operator Diference)
menghasilkan alamat dari operandnya
·         Operator *(Operator Referebce)
menghasilkan nilai yang berada pada sebuah alamat
3.        Macam Pointer :
·         Operator Aritmatika
·         Operator Logika
4.        Pointer memiliki banyak keunggulan, seperti :
·         Penanganan terhadap array dan string akan lebih singkat, dan efisien.
·         Memungkinkan suatu fungsi untuk menghasilkan lebih dari satu nilai. 
DAFTAR RUJUKAN
            Kadir, Abdul. 2003. Pemrograman C++. Yogyakarta: Penerbit ANDI.

Tidak ada komentar:

Posting Komentar