Kegunaan Pointer

Forum diskusi pemrograman Visual C++ .NET / CLI

Kegunaan Pointer

Postby Achmadpdam » 05 May 2011, 16:05

Selamat siang .

Saya merasa bingung tentang dari kegunaan pointer , menurut paper yang sering saya baca , pointer itu berguna untuk memanipulasi memory . nah ini yang membuat saya bingung :

1.Memory apa yang dimanipulasi ? , apakah maksudnya memory RAM komputer atau Memory Virtual Page File .

2.Untuk apa memanipulasi memory didalam pemrograman . padahal tanpa pointer ( seperti visual basic ) program yang dibuat bisa jadi dan dapat digunakan .

maaf karena saya masih awam .terima kasih .
Achmadpdam
Prajurit Satu
Prajurit Satu
 
Posts: 67
Joined: 18 Sep 2010, 21:05
Location: Banjarmasin
Memberi kopi: 6 cangkir
Mendapat kopi: 1 cangkir

Re: Kegunaan Pointer

Postby flack » 05 May 2011, 23:43

saya bantu dikit oom... :D

1. Memory RAM yg di modifikasi,
Memory virtual page sudah di urusi sendiri oleh OS melalui Resource Memory Management. :)

2. Hehe... kalo di VB memang tidak mengenal pointer seperti yg di C++ om. Jadi, Kenapa harus ada pointer ?
Untuk kasus2 program yg tidak memerlukan manajemen memory yg krusial, pointer memang kurang dibutuhkan. Tapi untuk dunia game, satu buah byte dalam memory sangatlah berharga. Jadi harus di manajemen sebaik mungkin. :)
Jangan malu mengklik tombol kopi pada member yang telah membantu atau memberikan pengetahuannya kepada Anda
Dan ingat selalu Peraturan Memposting !
User avatar
flack
Administrator
Administrator
 
Posts: 1257
Joined: 08 Mar 2010, 07:59
Location: Sidoarjo
Memberi kopi: 49 cangkir
Mendapat kopi: 73 cangkir

Re: Kegunaan Pointer

Postby Achmadpdam » 06 May 2011, 07:12

flack wrote:saya bantu dikit oom... :D

1. Memory RAM yg di modifikasi,
Memory virtual page sudah di urusi sendiri oleh OS melalui Resource Memory Management. :)

2. Hehe... kalo di VB memang tidak mengenal pointer seperti yg di C++ om. Jadi, Kenapa harus ada pointer ?
Untuk kasus2 program yg tidak memerlukan manajemen memory yg krusial, pointer memang kurang dibutuhkan. Tapi untuk dunia game, satu buah byte dalam memory sangatlah berharga. Jadi harus di manajemen sebaik mungkin. :)


1.Saya kira virtual page memory yang dimodifikasi om . :)

2.kalau dalam game maksudnya 1 byte berharga itu untuk apa om ?
dan saya juga sering melihat program program yang dibuat dari c++,program yang hanya menampilkan
tulisan berjalan saja sudah menggunakan pointer, padahal jika dipascal tanpa pointer pun bisa berjalan .
kalau disitu apa perbedaanya om ?

terima kasih :D
Achmadpdam
Prajurit Satu
Prajurit Satu
 
Posts: 67
Joined: 18 Sep 2010, 21:05
Location: Banjarmasin
Memberi kopi: 6 cangkir
Mendapat kopi: 1 cangkir

Re: Kegunaan Pointer

Postby flack » 06 May 2011, 08:02

hehe... :D
sebenarnya permasalahannya bukan "bisa" atau "tidak bisa" berjalan, tetapi lebih kepada manajemen memorinya.
Untuk bahasa-bahasa yg tidak mempunyai fasilitas akses memory (pointer), biasanya sudah mempunyai GC sendiri untuk menajemen memorynya. Tetapi pada umumnya, GC ini seringkali melewatkan data-data yg sudah tidak digunakan (walaupun sedikit kemungkinannya).
Namun untuk pembuatan game yang sarat dengan memory, GC harus benar-benar dikelola sendiri. Dimana kita harus memastikan bahwa data yang sedang tidak digunakan benar-benar dihapus dari memory. Untuk melakukan hal ini, maka diperlukanlah POINTER. :)

Lebih jauh tentang pointer ? Baca ini : Pointer. Hehehe...

Semoga berguna. :)
Jangan malu mengklik tombol kopi pada member yang telah membantu atau memberikan pengetahuannya kepada Anda
Dan ingat selalu Peraturan Memposting !
User avatar
flack
Administrator
Administrator
 
Posts: 1257
Joined: 08 Mar 2010, 07:59
Location: Sidoarjo
Memberi kopi: 49 cangkir
Mendapat kopi: 73 cangkir

Re: Kegunaan Pointer

Postby Seruling » 10 May 2011, 23:11

Sejauh yang saya pahami, yang dimaksud manajemen memory di sini adalah yang berkaitan dengan memory RAM.

Pointer digunakan untuk "menunjuk" alamat memory.
Misalnya dalam sebuah array bola terdapat bola merah, hijau dan biru.
Jika tanpa pointer maka harus secara eksplisit menunjuk warna bola. Dengan pointer dapat menunjuk dengan istilah bola "pertama", "kedua" dan seterusnya tanpa memperhatikan nilainya.

Penggunaan pointer juga dapat mempercepat sebuah loop.
Misalnya kode seperti ini:
Code: Select all
int hasil;  // variabel global
int main()
{
for (i=0;i<1000;i++)
{
    for(j=0;j<1000;j++)
    {
        // lakukan operasi aritmetik melalui fungsi yang mengembalikan nilai 7 setiap iterasi
        hasil = jumlah(3,4);
    };
};
};
//  Fungsi "jumlah" yang mengembalikan nilai
int jumlah(int x, int y)
{
    return(x+y);
};


dibandingkan kode di atas, maka kode di bawah ini akan berjalan lebih cepat:
Code: Select all
int hasil;  // variabel global
int main()
{
for (i=0;i<1000;i++)
{
    for(j=0;j<1000;j++)  // total inner loop dan outer loop adalah 1 juta kali
    {
        // lakukan operasi aritmetik melalui fungsi yang mengembalikan nilai 7 setiap iterasi, yang langsung memodifikasi variabel "hasil"
        jumlah(3,4,&hasil);
    };
};
};
//  Fungsi "jumlah" yang tidak mengembalikan nilai, namun langsung memodifikasi parameter "hasilnya" yang menggunakan referensi alamat memory.
void jumlah(int x, int y, int *hasilnya)
{
    hasilnya=x+y;
};


Barangkali ada yang sedikit keliru di kode di atas, namun pada intinya adalah penggunaan pointer yang tepat dapat mempercepat sebuah proses secara signifikan.

Pada Visual Basic, penggunaan pointer untuk referensi dapat digunakan pada parameter sebuah sub atau function dengan awalan "ByRef".
Secara default, VB6 menggunakan "ByRef" untuk setiap parameter. Jika ingin menggunakan nilai, maka secara eksplisit harus dinyatakan dengan "ByVal".
Namun pada VB.NET, hal ini tidak berlaku lagi. Secara default justru menggunakan nilai sebagai data yang dikirim untuk parameter, sehingga jika ingin menggunakan alamat variabel harus dinyatakan secara eksplisit menggunakan "ByRef".

Demikian yang saya tau.
=== Seruling ===
User avatar
Seruling
Kopral Dua
Kopral Dua
 
Posts: 688
Joined: 28 Jun 2010, 19:01
Location: Berhadapan dengan Acer Aspire
Memberi kopi: 34 cangkir
Mendapat kopi: 37 cangkir


Return to Visual C++ .NET

Who is online

Users browsing this forum: No registered users and 1 guest