Kamis, 19 November 2009

POINTER

Pointer

Juni 16, 2009 at 2:12 pm (Uncategorized)

Pointer adalah tipe data dalam bahasa pemrograman yang berisi alamat di memory tersebut. Ini berarti pointer adalah sebuah tipe data yang isinya menunjuk ke data lain di memory. Dalam sistem komputer, semua bagian di memory dapat diasosiasikan dengan suatu nilai numerik yang disebut address atau alamat di memory. Dengan demikian, setiap bagian di memory dapat diakses menggunakan alamat.

Dalam bahasa pemrograman Delphi, khususnya pada tingkat yang lebih lanjut, peran pointer sangatlah penting, meskipun di sisi lain dapat menimbulkan malapetaka. Pointer dapat membangun struktur data dan dapat dimanfaatkan untuk mengelola memori secara akurat. Di sisi lain, dalam penggunaan pointer, sangat mudah terjadi salah pakai yang bisa menimbulkan error yang sulit dicari penyebabnya, yaitu access violation. Karena peran pointer yang sangat besar dalam menghasilkan program yang efektif.

Penggunaan Awal Pointer
Jika variabel merupakan isi memori, dan untuk mengakses isi memori tersebut diperlukan address, lalu bagaimana cara kita mengetahui alamat dari suatu variabel ? Jawabannya adalah : untuk kebanyakan kasus kita sama sekali tidak perlu tahu alamat dari sebuah variabel. Untuk mengakses sebuah variabel kita hanya perlu nama dari variabel tersebut. Tugas kompiler lah yang mentranslasikan nama ke alamat mesin yang diperlukan oleh komputer.

Akan tetapi terdapat beberapa kasus dimana kita tidak mungkin memberi nama pada sebuah entitas di program kita. Hal ini terjadi terutama saat kita menggunakan data struktur dinamis seperti linked list, resizeable array, tree dan lain sebagainya. Hal ini karena kita tidak mungkin memberi nama terhadap entitas yang mungkin ada atau tidak ada. Struktur seperti linked list hampir mustahil dibuat tanpa pointer tanpa harus mendefinisikan LISP-like list.

Inilah awal mula penggunaan pointer sebagai moniker. Istilah moniker di sini berarti sesuatu yang menunjuk atau mengacu kepada entitas lain. Istilah moniker ini bukanlah istilah standard dan lazim , tetapi sesuatu yang saya pilih impromptu untuk membedakan dengan pointer atau reference yang sudah memiliki arti tersendiri.

Penggunaan lain pointer sebagai moniker adalah untuk mengatasi kelemahan bahasa C awal : Dahulu fungsi – fungsi di C hanya mengerti pass by value. Pointer digunakan untuk mengemulasi pass by reference karena pointer berisi alamat ke objek lain, sehingga fungsi tersebut dapat mengubah objek tersebut dengan memanipulasi pointer.

Builtin Array di C dan C++
Sebelum membahas array di C dan di C++, ada baiknya kita membahas tentang array. Array adalah asosiasi antara sebuah index dengan nilai. Jika diketahui sebuah index, kita akan mengetahui nilainya. Dari definisi ini :
1. Tidak disebutkan bahwa index harus integer, atau tipe tertentu.
2. Tidak disebutkan range dari indexnya dimulai dari nilai tertentu, Bahkan tidak disebutkan bahwa indeks nya memiliki batas bawah maupun batas atas.
3. Tidak disebutkan bahwa nilai harus disimpan secara contigous, bahkan tidak disebutkan bahwa nilainya harus di simpan sama sekali.

Bahaya Pointer
1. Bahaya yang mungkin ada dengan pointer sebagai moniker: memory leak, double delete, invalid memory access. Semuanya dapat dihindari dengan ownership analysis yang bagus (pada setiap saat, harus diketahui pihak mana yang bertanggung jawab mendelete sebuah object). Jika hal ini sulit dilakukan, misalnya karena shared ownership, anda dapat menggunakan smart pointer atau garbage collector.
2. Bahaya yang mungkin ada dengan pointer sebagai iterator: array out of bound. Salah satu cara yang efektif menghindari hal ini adalah dengan menggunakan standard algorithm.
3. Bahaya yang mungkin ada dengan pointer sebagai abstraksi fixed memory : Tidak tahu, tetapi ini bukan mainan sembarang programmer.

Bahasa Pemrograman tanpa pointer
1. Semua Bahasa pemrograman Fungsional, terutama yang murni , tidak mengenal pointer atau memerlukan pointer. Akan tetapi bahasa ini menggunakan model komputasi yang jauh berbeda, bukan abstract C machine.

2. Beberapa bahasa pemrograman dengan reference semantik dapat mengklaim mereka tidak memiliki pointer, akan tetapi setiap variabel sebenarnya adalah pointer. Secara fisik mungkin reference tidak memiliki struktur seperti pointer (biasanya merupakan data struktur yang lebih kompleks sehingga lebih friendly terhadap garbage collector) tapi reference tersebut memiliki fungsi yang mirip dengan pointer di C atau C++. Ada yang bilang bahwa reference dalam bahasa – bahasa ini menyebabkan optimasi lebih mudah karena tidak menyebabkan aliasing, tetapi optimasi tersebut juga mungkin dilakukan di C dan C++ ( dengan restrict pointer, sayangnya belum merupakan bagian dari standard C++).

Contoh program pointer

//Program :pointer1. cpp

#include

// cetak p dan *p

Void main(void)

{

int v = 7, *p;

p = &v;

cout << “Nilai v = “ << p =" “">

<< “ \nAlamatnya = “ <<>

}

Hasil dari program adalah sebagai berikut :

Nilai v = 7 dan *p = 7

Alamatnya = efffb24

Pointer Dalam Pointer

C++ memperbolehkan penggunaan pointer dalam pointer

Yang masing-masing berisi data yang sama atau berbeda.

Selasa, 06 Oktober 2009

C++ adalah salah satu bahasa pemrograman komputer. Dibuat pada tahun 1980-an oleh Bell Labs (Bjarne Stroustrup) sebagai pengembangan dari Bahasa pemrograman C. Salah satu perbedaan yang paling mendasar dengan bahasa C adalah dukungan terhadap konsep pemrograman berorientasi objek (Object Oriented Programming).

Daftar isi

[sembunyikan]

[sunting] Program C++ pertama

Contoh program sederhana C++ untuk hello world dengan menggunakan Pustaka Dasar C++ dapat dilihat di bawah ini:

#include  // provides std::cout

int main()
{
std::cout << "Hello, world!\n";
return 0;
}

[sunting] Kata yang dipesan

[sunting] Kelompok pertama

C++ mempunyai 32 buah kata yang dipesan (reserved words). Kata kunci kelompok pertama merupakan turunan dari bahasa C, di antaranya:

auto const double float int short struct unsigned
break continue else for long signed switch void
case default enum goto register sizeof typedef volatile
char do extern if return static union while

[sunting] Kelompok kedua

Kata yang dipesan kelompok kedua berjumlah 30. Kata-kata ini adalah baru dan hanya ada di bahasa C++.

asm dynamic_cast namespace reinterpret_cast try
bool explicit new static_cast typeid
catch false operator template typename
class friend private this using
const_cast inline public throw virtual
delete mutable protected true wchar_t

Kata-kata yang dipesan tersebut di atas tidak boleh dipakai sebagai nama variable, class, enum, macro, dan struct.

[sunting] Tipe data dasar

Untuk menyimpan suatu variabel diperlukan tempat khusus di dalam memori komputer. Besar dan tipe dari variabel-variabel di dalam standar program C++ dispesifikasikan sebagai berikut.

Nama Keterangan Ukuran Jangkauan
char Abjad/karakter atau untuk bilangan bulat kecil 1 byte signed: -128 to 127

unsigned: 0 to 255

short int (short) Bilangan bulat dengan jangkauan pendek 2 byte signed: -32768 to 32767

unsigned: 0 to 65535

int Bilangan bulat 4 byte signed: -2147483648 to 2147483647

unsigned: 0 to 4294967295

long int (long) Integer dengan jangkauan panjang 4 byte signed: -2147483648 to 2147483647

unsigned: 0 to 4294967295

bool Boolean, dapat bernilai benar atau salah (true or false) i byte true or false
float Angka dengan titik mengambang (bilangan cacah) 4 byte 3.4e +/- 38 (7 digit)
double Bilangan cacah dengan ketelitian ganda 8 byte 1.7e +/- 308 (15 digits)
long double Bilangan cacah dengan ketelitian ganda panjang 8 byte 1.7e +/- 308 (15 digits)
wchar_t Karakter lebar, biasa dipakai untuk Unicode karakter 2 byte 1 karakter lebar

[sunting] Daftar C++ compiler

Untuk mengubah kode-kode C++ program menjadi suatu program aplikasi yang dimengerti oleh sistem operasi dan komputer, diperlukan sebuah kompilator C++. Berikut ini adalah beberapa kompilator C++ yang dapat digunakan secara gratis.

[sunting] Pranala luar


By : wikipedia

Pelajaran C++

C++ adalah salah satu bahasa pemrograman komputer. Dibuat pada tahun 1980-an oleh Bell Labs (Bjarne Stroustrup) sebagai pengembangan dari Bahasa pemrograman C. Salah satu perbedaan yang paling mendasar dengan bahasa C adalah dukungan terhadap konsep pemrograman berorientasi objek (Object Oriented Programming).

by:wikipedia