MAKALAH
PEMROGRAMAN
KOMPUTER 1
“VARIABEL
POINTER”
Dosen:
MAKSUR, S.Kom
Di susun oleh:
NAMA : TARNO
NIM : 11.11.2397
SEKOLAH
TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER
STIMIK
AMIKOM
PURWOKETO
2012
Kata pengantar
Segala
puja dan puji syukur saya limpahkan hanya kepada allah SWT, Tuhan yang
menguasai timur dan barat, tiada sekutu baginya. Sholawat serta salam sejahtera
semoga selalu dilimpahkan atas Nabi Mohammad dan keluarganya, begitu pula atas
para sahabat-sahabat beliau yang senantiasa terhadap ajaran-ajaran islam yang
mulia.
Sebuah
makalah ini di susun berdasarkan untuk memenuhi tugas dari mata kuliah
Pemrograman Komputer 1, dengan dosen
MAKSUR,S.Kom. Tugas ini yaitu sebagai syarat untuk bisa mengikuti responsi. Isi
atau pembahasan dalam makalah ini adalah tentang variabel pointer beserta
contoh programnya.
Saya
berharap dengan pembuatan makalah ini dapat memberikan manfaat bagi saya dan
juga bagi pembacanya. Dan juga dapat membantu saya untuk memperdalam ilmu
pemrograman terutama.
Purwokerto, Desember 2012
Penulis
BAB
I
LATAR BELAKANG
SEKILAS MENGENAI BAHASA PEMROGRAMAN C DAN C++
pemrograman C++
merupakan superset dari bahasa pendahulunya yaitu bahasa pemrograman C. Bahasa
pemrograman C dikembangkan oleh Dennis Ritchie pada tahun 1972 di Laboratorium
Bell. Bahasa pemrograman C adalah bahasa pemrograman yang dapat dikatakan
berada antara bahasa tingkat rendah (berorientase mesin) dan bahasa tingkat
tinggi (bahasa berorientase pada manusia). Bahasa pemrograman C berada satu
tingkat di atas bahasa yang berorientasi pada mesin, namun tetap satu tingkat
dibawah sebagian besar bahasa yang berorientasi persoalan. Bahasa pemrograman C
cukup dekat dengan komputer untuk memberikan kendali yang besar terhadap detil
implementasi pemakaian, namun cukup jauh untuk mengabaikan detil hardware.
Karena itulah bahasa pemrograman C suatu ketika dipandang sebagai bahasa
high-level dan pada saat yang lain dilihat sebagai bahasa low-level.
pemrograman C
merupakan bahasa pemrograman terstruktur, yang membagi program kedalam bentuk
sebuah blok. Tujuannya adalah untuk memudahkan dalam pembuatan dan pengembangan
program. Program yang ditulis dengan bahasa pemrograman C mudah sekali untuk
dipindahkan dari satu jenis mesin ke jenis mesin lainnya. Hal ini berkat adanya
standarisasi bahasa pemrograman C yaitu berupa standar ANSI (American National
Standards Institute) yang dijadikan acuan oleh para pembuat kompiler C.
Bahasa Pemrograman C++ Membawa Bahasa Pemrograman C ke
Lingkungan Pemrograman Berorientasi Obyek
bahasa pemrograman C,
menyusul apa yang kita kenal dengan bahasa pemrograman C++. Bahasa pemrograman
C++ tetap mempertahankan kehebatan C, termasuk kemampuan dan keluwesannya dalam
menangani interface hardware dan software, pemrograman low-levelnya, serta
efisiensinya. bahasa pemrograman C++ diciptakan satu dekade setelah C.
Diciptakan oleh Bjarne Stoustrup, Laboratorium Bell, AT&T, pada tahun 1983.
Bahasa pemrograman C diambil sebagai landasan dari C++,
mengingat keportabilitasan C yang memungkinkannya diterapkan pada berbagai
mesin, dari PC hingga mainframe, serta pada pelbagai sistem operasi (DOS, UNIX,
VMS dan sebagainya). Namun bahasa pemrograman C++ membawa C ke dunia
pemrograman berorientasi obyek, dan tetap mempertahankan keterpaduan dan
efisiensi eksekusi C.
Keistimewaan yang sangat berarti pada bahasa pemrograman C++
adalah karena bahasa ini mendukung pemrograman berorientasi obyek. Tetapi
bahasa pemrograman C++ hanyalah bahasa yang bersifat hibrid, bukan bahasa murni
yang berorientasi obyek. Karena itu, bahasa pemrogram C pada tahap awal dapat
berpindah jalur ke C++ setahap demi setahap. Pustaka-pustaka yang dibangun
dengan C tetap dapat dipakai pada C++, dibaurkan dengan pemrograman yang
berorientasi obyek.
Tujuan utama pembuatan bahasa pemrograman C++ adalah untuk
meningkatkan produktivitas pemrograman dalam bahasa aplikasi. Kebanyakan pakar
setuju bahwa pemrograman berorientasi obyek dan C++ dapat mengurangi
kekompleksitasan, terutama pada program yang besar yang terdiri dari 10.000
baris atau lebih.
BAB II
PEMBAHASAN
dalam
struktur data ada beberapa macam. Salah satunya adalah pemograman C++. Dan yang
akn di bahas dalam makalah ini adalah tentang variabel pointer.
POINTER
1. PENGERTIAN
POINTER
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 :
Ø Operator
&
Operator & merupakan operator alamat. Pada saat
pendeklarasian variable, user tidak diharuskan menentukan lokasi sesungguhnya
pada memory, hal ini akan dilakukan secara otomatis oleh kompiler dan operating
sysem pada saat run-time. Jika ingin mengetahui dimana suatu variable akan
disimpan, dapat dilakukan dengan memberikan tanda ampersand (&)
didepan variable , yang berarti "address of". Contoh
:
ted = &andy;
Penulisan tersebut berarti akan memberikan variable ted
alamat dari variable andy. Karena variabel andy
diberi awalan karakter ampersand (&), maka yang menjadi
pokok disini adalah alamat dalam memory, bukan isi variable. Misalkan andy
diletakkan pada alamat 1776 kemudian dituliskan
instruksi sbb :
andy = 25;
fred = andy;
ted = &andy;
·
Operator & bersifat unary (hanya
memerlukan satu operand saja).
·
Operator & menghasilkan alamat dari
operandnya.
Ø Operator
*
Operator * merupakan operator reference. Dengan menggunakan
pointer, kita dapat mengakses nilai yang tersimpan secara langsung dengan
memberikan awalan operator asterisk (*) pada identifier pointer, yang
berarti "value pointed by". Contoh :
beth = *ted;
(dapat
dikatakan:"beth sama dengan nilai yang ditunjuk oleh ted") beth
= 25, karena ted dialamat 1776,
dan nilai yang berada pada alamat 1776 adalah 25.
Ekspresi dibawah ini semuanya benar, perhatikan :
andy = 25;
&andy = 1776;
ted = 1776;
*ted = 25;
Ekspresi pertama merupakan assignation bahwa andy
= 25;. Kedua, menggunakan operator alamat (address/derefence operator
(&)), sehingga akan mengembalikan alamat dari variabel andy.
Ketiga bernilai benar karena assignation untuk ted adalah
ted = &andy;. Keempat menggunakan reference operator (*)
yang berarti nilai yang ada pada alamat yang ditunjuk oleh ted,
yaitu 25. Maka ekspresi dibawah ini pun akan bernilai benar :
*ted
= andy;
·
Operator * bersifat unary (hanya
memerlukan satu operand saja).
·
Operator * menghasilkan nilai yang
berada pada sebuah alamat.
2. DEKLARASI POINTER
Seperti halnya
variabel yang lain, variabel pointer juga harus dideklarasikan terlebih dahulu
sebelum digunakan.
Bentuk Umum :
Contoh:
int *a; atau int*
a;
char *ket; atau char* ket;
//Contoh9_1
int *px;
char *sh;
Contoh Program :
#include
“IOSTREAM.h”
#include
“conio.h”
void main()
{ int x, y; /* x
dan y bertipe int */
int *px; /* px
pointer yang menunjuk objek */
clrscr();
x = 87;
px = &x; /*
px berisi alamat dari x */
y = *px; /* y
berisi nilai yang ditunjuk px */
cout<<“Alamat
x =”<<&x <<\n”;
cout<<“Isi
px = \n”, px);
cout<<“Isi
x = \n”, x);
cout<<“Nilai
yang ditunjuk oleh px = \n”, *px);
cout<<“Nilai
y = \n”, y);
getch();
}
3. OPERASI
POINTER
a. Operasi
Penugasan
Suatu variable pointer seperti halnya
variable yang lain, juga bisa mengalami operasi
penugasan. Nilai dari suatu variable
pointer dapat disalin ke variable pointer yang lain.
//Contoh9_2
#include
"iostream.h"
#include
"conio.h"
void main()
{ float *x1,y,
*x2;
clrscr();
y = 13.45;
x1 = &y; /* Alamat dari y disalin ke
variabel x1 */
x2 = x1; /* Isi variabel x1 disalin ke
variabel x2 */
cout<<"Nilai
variabel y = "<<y<<
" ada di alamat "<< x1<<"\n";
cout<<"Nilai
variabel y = "<<y<<
" ada di alamat "<< x2<<"\n";
getch();
}
b. 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.
//Contoh9_3
#include
<iostream.h>
#include
<conio.h>
void main()
{ int nilai[3],
*penunjuk;
clrscr();
nilai[0] = 125;
nilai[1] = 345;
nilai[2] = 750;
penunjuk =
&nilai[0];
cout<<"Nilai
"<<*penunjuk <<" ada di alamat memori " <<penunjuk<<"\n";
cout<<"Nilai
"<<*(penunjuk+1) <<" ada di alamat memori "
<<penunjuk+1<<"\n";
cout<<"Nilai
"<<*(penunjuk+2) <<" ada di alamat memori "
<<penunjuk+2<<"\n";
getch();
}
c. Operasi
Logika
Suatu pointer juga dapat dikenai operasi
logika.
//Contoh9_4
#include<iostream.h>
#include
"conio.h"
void main()
{ int a = 100, b
= 200, *pa, *pb;
clrscr();
pa = &a;
pb = &b;
cout<<"nilai
pa= "<<pa<< " nilai pb=
"<<pb<<"\n";
if(pa < pb)
cout<<"pa
menunjuk ke memori lebih rendah dari pb\n";
if(pa == pb)
cout<<"pa
menunjuk ke memori yang sama dengan pb\n";
if(pa > pb)
cout<<"pa
menunjuk ke memori lebih tinggi dari pb\n";
getch();}
4. POINTER
DAN STRING
//Contoh9_5
#include
<iostream.h>
#include
<conio.h>
void
misteri1(char *);
void main() {
char string[] =
"amikom";
cout<<
"String sebelum proses adalah " << string
<<"\n" ;
misteri1(string);
cout<<"String
setelah proses adalah "<<string;
getch();
}
void
misteri1(char *s) {
while ( *s !=
'\0' ) {
if ( *s >=
'a' && *s <= 'z' )
*s -= 32;
++s;
}
}
5. POINTER
MENUNJUK SUATU ARRAY
Pointer pada array sangat digunakan
untuk pengembangan program yang besar, karena secara internal array juga
menyatakan alamat,yaitu pengenal array sama dengan alamat pada elemen pertama
pada array. sebagai contoh sederhana dapat anda lihat pada contoh program
berikut :
//Contoh9_6
#include
"iostream.h"
#include
"conio.h"
void main()
{ static int
tgl_lahir[] = { 13,9,1982 };
int *ptgl;
ptgl =
tgl_lahir; /* ptgl berisi alamat array */
cout<<"Diakses
dengan pointer\n";
cout<<"Tanggal
= "<< *ptgl<<"\n";
cout<<"Bulan
= "<< *(ptgl + 1) <<"\n";
cout<<"Tahun
= "<<*(ptgl + 2) <<"\n";
cout<<"\nDiakses
dengan array biasa\n";
cout<<"Tanggal
= "<< tgl_lahir[0] <<"\n";
cout<<"Bulan
= "<< tgl_lahir[1] <<"\n";
cout<<"Tahun
= "<< tgl_lahir[2] <<"\n";
getch();
}
6. MEMBERI
NILAI ARRAY DENGAN POINTER
//contoh9_7
#include "iostream.h"
#include "conio.h"
void main()
{ int x[5], *p, k;
clrscr();
p = x;
x[0] = 5;
x[1] = x[0];
x[2] = *p + 2;
x[3] = *(p+1) - 3;
x[4] = *(x + 2);
for(k=0; k<5; k++)
cout<<"x["<<k<<"]
= "<< x[k]<<"\n";
getch();
}
7. MEMORI DINAMIS
Pada
contoh program di samping kiri sejumlah memori secara ekplisit disisihkan untuk
menampung array titik yang mempunyai 10 elemen. Sebenamya alokasi memori ini,
hanya yang dibutuhkan saja, dapat dilakukan secara dinamis yaitu dilakukan pada
saat run-time, Untuk melakukan hal ini kita perlu array yang elemen elemennya
adalah pointer ke suatu struktur seperti dijelaskan pada program di samping
kanan.
Alokasi memori secara dinamis dilakukan dengan operator new dan
dealokasi dilakukan dengan operator delete. Keduanya merupakan operator baru
pada C++.
#include <iostream.h>
struct ttk
{
int x;
int y;
};
main()
{
int i;
struct ttk titik[10];
for (i=0; i < 10; ++i)
{
titik[i].x = i ;
titik[i].y=i;}
for(i=0;i< 10;++i)
{cout << titik[i].x << ", " << titik[i].y
<< "\n";
}
return 0;}
|
#include <iostream.h>
struct ttk
{
int x;
int y;
};
main()
{
int i;
struct ttk *titik[10];
for(i=0;i<10;++i)
{
titik[i] = new ttk;
titik[i]->x=i;
titik[i]->y = i;
}
for (i=0;i< 10;++i)
{
cout << titik[i]->x <<
", " << titik[i]->y << "\n";
}
for(i=0;i< 10;++i)
{
// free(titik[i]);
delete titik[i];
}
return 0;
}
|
3 komentar:
ko
terima kasih
My blog
Terimakasih atas blognya
My blog
Posting Komentar