Docstoc

Pointer dalam pascal

Document Sample
Pointer dalam pascal Powered By Docstoc
					        PRAKTIKUM
ALGORITMA DAN PEMOGRAMAN II




                 PERTEMUAN V
                   POINTER


          NAMA        : Muhammad Zaien
          NIM         : J1F111016
          ASISTEN I   : Muhammad Shaufi
          ASISTEN II : Oky Rahmanto




       PROGRAM STUDI S-1 ILMU KOMPUTER
FAKULTAS MATEMATIKA DAN ILMU PENGETAHUAN ALAM
       UNIVERSITAS LAMBUNG MANGKURAT
                   BANJARBARU

                        2012
                               PERTEMUAN V

                                      POINTER

1. Tinjauan Pustaka
    Pointer merupakan suatu tipe data dalam Pascal yang berfungsi untuk
menunjuk dan menyimpan alamat memori. Dalam penulisan pointer biasa
digambar dengan panah, sedangkan bagian memori yang ditunjuk digambar
dengan kotak, dan isinya ditulis di dalam kotak (Anonim 2011).
    Pointer sering disebut juga dengan istilah link atau referensi adalah suatu
variabel yang berisi alamat dari suatu variabel yang lain. Sebagai contohnya pada
saat kita mengakses record kita tidak tahu dimana record tersebut secara eksak
diletakkan di dalam memori, karena dengan menggunakan pointer kita
membiarkan     sistem       komputer    mengatur       letak     record   tersebut   ketika
diperlukan (Mustofa 2011).
    Untuk pendekalarasian pointer, sebagai berikut :
           Untuk pointer bertipe:
              <nama_var> : ^<tipe_data>;
           Untuk pointer tidak bertipe:
              <nama_var> : pointer;
           Untuk pointer pada record :
              type
              <nama_var> = ^<nama_record>
                     <nama_record> = record
                              <field1> : <tipe_data>;
                              <field2> : <tipe_data>;
                     End;
    (Anonim 2011).
    Suatu pointer dapat menunjuk ke data               bertipe    elementer,   terstruktur,
pointer yang lain, atau tidak bertipe. Jika suatu pointer tidak menunjuk ke mana-
mana, pointer itu dinamakan dangling, sedangkan bagian memori yang tidak
dapat   diakses    karena     tidak    ada   pointer     yang      menunjuk    dinamakan
garbage(sampah).
    Dalam Pascal, pointer dapat diisi dengan nilai yang berasal dari:
       1. NIL
    NIL merupakan reserved word dalam Pascal, di mana pointer yang bernilai
NIL dianggap tidak menunjuk alamat memori manapun.NIL biasa digambarkan
dengan lambang ground.
       2. Fungsi Ptr
    Sintaks:
               Function Ptr(Seg, Ofs : word) : pointer;
          dengan Seg: segmen memori.
          Ofs: offset memori.
    Fungsi Ptr mengembalikan pointer dari segmen dan offset yang dimasukkan
       3. Operator @
    Sintaks:
               <nama_var>:=@<variabel_yang_alamatnya_diambil>;
    Operator ini digunakan untuk mengambil alamat variabel yang akan ditunjuk.
       4. Prosedur New dan GetMem
    Sintaks:
               New(var P: pointer);
               GetMem(var P: pointer, size: word);
          Dengan P: pointer yang akan diisi.
          Size: ukuran yang dipesan.
    Prosedur Newdigunakan untuk memesan memori untuk pointer bertipe,
sedangkan prosedur GetMem untuk pointer tidak bertipe. Kedua prosedur ini
akan membentuk suatu variabel dinamik yang diletakkan dalam Heap. Heap
adalah memori-memori di komputer yang belum dialokasikan, yaitu memori yang
tidak digunakan oleh DOS, oleh program-program resident, oleh program Turbo
Pascal, internal stack yang digunakan oleh Turbo Pascal danvariabel-variabel di
data segmen.
    (Anonim 2011).
    Contoh program pointer
    program contoh_pointer1;
    uses wincrt;
    var
        p : ^integer;
        m, n : integer;
    begin
        m:=10;
        n:=15;
        p:=@m; { p sekarang menunjuk ke m }
        p^:=12; { hal ini sama dengan m:=12; }
        p:=@n; { p sekarang menunjuk ke n }
        p^=m; { { hal ini sama dengan n:=m; }
        writeln(‘m = ‘,m,’, n = ‘,n); { m = 12, n = 12 }
    end.
    Ketika p menunjuk ke m ( p:=@m , mengakses p^ sama dengan mengakses
m. Dalam membuat program, dalam penggunaan pointer kita memerlukan alokasi
memori tertentu: Ketika kita mendeklarasikan variabel pointer dalam “var”
sehingga merupakan suatu static variable, yang mana Static variable ini dibatasi
oleh kapasitas 64KB untuk tiap module. Yang berarti dalam program utama kita
hanya bisa menggunakan hanya 64KB dan tiap unit Pascal hanya bisa memakai
64KB. Sehingga kita perlu memecahkan program kebeberapa unit. Salah satu
teknik yang dipakai untuk mengatasi persoalan ini adalah seperti program berikut
(Jordan 2012).


2. Deskripsi Program
    Program ini adalah program yang memakai pointer yang diisi dengan
operator @. Program ini terdapat 4 variabel yaitu a,b dengan tipe data string Dan
c,d dengan tipe data pointer string. Pertama program meminta inputan variabel a
dan b, kemudian nilai variabel c dan d diisi dengan c^:=@a; , dan d^:=@b;.
Kemudian menampilkan nilai c, dan d. Setelah itu program akan meminta inputan
untuk variabel c, dan d. Dan menampilkan nilai a,b,c dan d. Yang mana nilai a,
dan b akan berubah sesuai dengan nilai c, dan d.
   3. Source Code
uses crt;
var
   c,d:^string;
   a,b:string;
begin
     write ('Input   a    : ');readln (a);
     write ('Input   b    : ');readln (b);
     c:=@a;
     d:=@b;
     writeln;
     writeln (' c^   : ',c^);
     writeln (' d^   : ',d^);
     writeln;
     write ('Input   c^ : ');readln (c^);
     write ('Input   d^ : ');readln (d^);
     writeln;
     writeln (' c^   :   ',c^);
     writeln (' d^   :   ',d^);
     writeln (' a    :   ',a);
     writeln (' b    :   ',b);
     readkey;
end.
4. Alur Program
                           Begin


                        Readln (a)


                        Readln (b)


                         c^:=@a;


                         d^:=@b;



                  writeln (' c^ : ',c^);
                  writeln (' d^ : ',d^);




                        Readln (c^)




                        Readln (d^)




                  writeln (' c^ : ',c^);
                  writeln (' d^ : ',d^);
                  writeln (' a : ',a);
                  writeln (' b : ',b);



                           End.
5. Output
6. Kesimpulan
  Kesimpulan dari hasil praktikum ini adalah sebagai berikut :
     1. Pointer adalah sebuah tipe data yang dapat mengalokasikan memory
         (menunjuk dan menyimpan alamat memory).
     2. Penggunaan pointer dapat mengefisiensikan pemakaian memory
         karena   pointer   akan   mengalokasikan     memory     hanya   ketika
         diperlukan.
     3. Terdapat 4 cara pengisian pointer yaitu, NIL dimana pointer yang
         bernilai nil tidak menunjuk alamat memory manapun. Fungsi Ptr yaitu
         mengembalikan pointer dari segmen dan offset yang dimasukkan.
         Operator @ untuk mengambil alamat memory variabel yang akan
         ditunjuk. New dan Getmem adalah prosedur untuk memesan memory,
         new untuk pointer bertipe dan getmem untuk pointer yang tak bertipe.
                           DAFTAR PUSTAKA

Anonim. Gunadarma. 23 Juni 2011.
       faramita.staff.gunadarma.ac.id/Downloads/files/27122/POINTER.pdf
       (diakses Mei 13, 2012).
Jordan, Oliver. Catatan Sehari-hari Warga UGM. 1 October 2012.
       http://blog.ugm.ac.id/2010/10/01/pointer-pada-pascal/ (diakses 13 Mei,
       2012).
Mustofa, Khabib. Gadjah Mada. 23 Januari 2011.
       http://khabib.staff.ugm.ac.id/index.php?option=com_content&view=article&i
       d=85%3Amemori-dinamis-a-pointer&catid=28%3Aintroduction-to-
       algorithm-and-programming&Itemid=33 (diakses 13 Mei, 2012).

				
DOCUMENT INFO
Shared By:
Stats:
views:215
posted:5/13/2012
language:
pages:9
Description: berisi laporan praktikum algoritma dan pemograman bahasa pascal