Pointer
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. 
Bentuk umum dari deklarasi tipe pointer:
 Untuk pointer bertipe:
 <nama_var> : ^<tipe_data>;
 Untuk pointer tidak bertipe:
 <nama_var> : pointer;
Suatu pointer dapat menunjuk ke data bertipe elementerterstrukturpointer 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
  2. Fungsi Ptr
  3. Operator @
  4. Prosedur New dan GetMem

Reserved word 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.
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. Operator @
      Sintaks:
                  <nama_var>:=@<variabel_yang_alamatnya_diambil>;
      Operator ini digunakan untuk mengambil alamat variabel yang akan ditunjuk.
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 New digunakan untuk memesan memori untuk pointer bertipe, sedangkan prosedur GetMem untuk pointer tidak bertipe. Kedua prosedur ini akan membentuk suatu variabel dinamik yang diletakkan dalam HeapHeap 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 dan variabel-variabel di data segmen.
      Pointer yang belum digunakan sebaiknya diisi dengan NIL, dan untuk pointer yang telah menunjuk sebuah alamat yang sudah dipesan memorinya, isinya dapat dimanipulasi melalui pointer.
    Contoh1:  program sederhana
Uses crt;                             
Type ptr = ^string;          
Var        
ptrnama, ptrkls, ptrnpm : ptr;
nama,kls,npm : string; 
x,n : integer;                     
begin                                                    
clrscr;                                                   
writeln(‘data mahasiswa : ‘);      
writeln(‘ ‘);                        
writeln(‘masukan angka : ‘);       
readln (n);                                          
for x := 1 to n do                              

begin                                                    
writeln(‘data ke ‘,x);                                      
write(‘nama = ‘); readln(nama);                  
write(‘kelas = ‘);readln(kls);                                  
write(‘npm = ‘); readln(npm);   
                                 
ptrnama := @nama;                                       
ptrkls := @kls;                   
ptrnpm := @npm;           
writeln(‘nama = ‘,ptrnama^);    
writeln(‘kelas = ‘,ptrkls^);                           
writeln(‘npm = ‘,ptrnpm^);        
end; 
readln;                      
end.

 Contoh 2 :
Program_pointer;
uses crt;
type
pointer = ^cell;
cell = record
     value : integer;
     next: pointer;
end;
var last, belakang, q, p: pointer;
    angka,nomor : integer;
    jawab : char;
    found : boolean;
procedure printlist;
begin
     last:=belakang;
     while last <> nil do
     begin
          writeln (last^.value);
          last:=last^.next;
     end;
end;
procedure look;
begin
writeln ('Masukkan Angka yang Akan Dicari: ');
     readln (angka);
     last:=belakang;
     found:=false;
     while (last<>nil) and (found<>true) do
     begin
          if last^.value=angka then
          begin
               found:=true;
               writeln ('Angka Ditemukan ');
               writeln (last^.value);
               found:=true;
          end
          else
          last:=last^.next;
     end;
end;
procedure delete;
begin
     writeln ('Angka Lain Dihapus? ');
     readln (angka);
     last:=belakang;
     found:=false;
     while (last<>nil) and (found<>true) do
     begin
          last:=last^.next;
          if q^.value=angka then
          begin
               dispose (q);
               found:=true;
          end
          else
          if last^.value=angka then
          begin
               writeln (last^.value,' ','Ditemukan dan Dihapus');
               q^.next:=last^.next;
               dispose (last);
               found:=true;
          end;
     end;
end;
begin
clrscr;
     belakang:=nil;
     nomor:=1;
     writeln('Nomor: ',nomor);
     jawab:='y';
     while (jawab<>'t') do
     begin
          writeln ('Masukkan Angka: ');
          readln (angka);
          new (last);
          last^.value:=angka;
          last^.next:=belakang;
          belakang:=last;
          nomor:=nomor+1;
          writeln ('Nomor: ',nomor);
          writeln ('Terus? Y/T');
          readln (jawab);
     end;
     printlist;
     look;
     delete;
     printlist;
     readln;
end.


:)

SHARE PLEASE..


0 komentar:

Poskan Komentar

Jangan lupa klik iklannya, ngak susah kok! siapa tahu ada yang menarik.. karena setiap klik agan, sangat berarti buat blog ini biar tetep eksis!

KOMENTAR:
- mau koment ngasih link idup, mau ngasih link mati, terserah yang penting koment!!
- mau panjang atau pendek, ngak masalah yang penting koment!!
- mau kasar, SARA atau jorok, terserah yang penting koment!

( MANUSIA YG BERAKAL, BERAKHLAK & BERIMAN BOLEH KOMENT ASALKAN BUKAN ROBOT MBAH GOOGLE!!)

About Me


Saya seorang Blogger Pemula, Lahir di Banjarmasin 11 Desember 1993, saat ini sekarang saya sedang Kuliah di Universitas Lambung Mangkurat , Banjarbaru. untuk jurusan dan fakultas, saya di Fakultas MIPA Banjarbaru dan mengambil Jurusan Ilmu Komputer angakatan 2011.

jika kalian kenal, jangan ragu untuk menyapa, saya orangnya terbuka dan ramah kok! siap berteman dengan siapa saja hehe... dan jika kalian belum kenal, maka kita ada baiknya kenalan yuk!! sekian dulu, wassalam!
More About Me


FOLLOW & LIKE DULU GAN!



[X] CLOSE
close klik kanan