Tipe Data Pointer dalam Pascal

July 26, 2011 at 9:22 am Leave a comment

-Tipe Data Pointer
pointer merupakan variabel khusus yang berisi suatu address (alamat) di lokasi lain didalam memory. Suatu variabel yang points(menunjuk) ke sesuatu sehingga disebut pointer. Ada dua macam pointer:
-typed(tertentu): merupakan pointer yang menunjuk pada tipe data tertentu pada variable.
-generic(umum): merupakan pointer yang tidak menunjuk pada tipe data tertentu pada variable.
Contoh deklarasi pointer:

var p : ^integer;

Contoh di atas merupakan deklarasi variabel p sebagai pointer dari integer. Dengan menambahkan tanda caret (^) di depan nama tipe data variabel yang dideklarasikan:
contoh :

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.

Program contoh_pointer2;
uses wincrt;
Type Pemployee = ^Temployee;
Temployee = record Name : string[10];
Position : char;
Salary : longint;
end;
var p : pemployee;
begin
new(p);
p^.name:=’Saddam’;
p^.position:=’S’;
p^.salary:=3000;
writeln(p^.name,’ ‘,p^.position,’ ‘,p^.salary);
dispose(p);
end.

Pada blok begin…end blok, kita bisa melihat meskipun p tidak menunjuk pada suatu variable tetapi dapat diisi dengan nilai. Pernyataan new(p); tidak memerlukan alokasi memori. Setelah itu kita bisa melakukan apapun pada variabel tersebut sampai kita membuangnya dari memori dengan memakai perintah dispose(p);. Variable dengan cara ini dinamakan dengan dynamic variable.
Generic Pointer
adalah pointer tanpa tipe data tertentu. Biasanya, pointer berkaitan dengan tipe data khusus, sedangkan generic pointer tidak.
Deklarasi:

Var P : pointer;

Dipergunakan sebagai buffer sementara (tidak permanen). Sehingga kita bisa melepasnya untuk suatu saat tidak diperlukan. Untuk itu pointer sangat bagus karena sifatnya yang dinamis. Tetapi, generic pointer tidak sama dengan typed pointer. Typed pointer menggunakan “new” untuk menampung memori dan “dispose” untuk melepasnya.  Generic pointer menggunakan “getmem” untuk mendapatkan memori dan “freemem” untuk melepasnya. Pada pointer dengan tipe tertentu, program Pascal mengetahui ukuran dari memori yang harus dilaokasikan, sedangkan tipe umum (generic pointer) Pascal tidak bisa, karena Pascal tidak mengetahui variabel apa yang akan dipakai. Sehingga dengan getmem kita perlu untuk menentukan berapa besar memori yang akan kita alokasikan. Ukuran terbesar adalah 65532 bytes (hampir 64K).

Program contoh_pointer2;
uses wincrt;
Var P : pointer;
Begin
Getmem(p,8192); { Reserve 8192 bytes }{ We use it then }
freemem(p,8192); { Release it, 8192 bytes }
end.

4. Operator

Beberapa operator yang disediakan oleh PASCAL:
1. Aritmatika
2. Boolean
3. Relasional
4. Set

Tabel 2. Operator Aritmatika PASCAL

Operator Operasi Tipe Operand Tipe Hasil Operasi
+ Penjumlahan Integer, real Integer, real
Pengurangan Integer, real Integer, real
* Perkalian Integer, real Integer, real
/ Pembagian Integer, real Integer, real
div  Pembagian integer, integer integer
mod Sisa pembagian integer, integer integer

Contoh :
9 + 2 (hasil: 11)
9 – 2 (hasil: 7)
9 * 2 (hasil: 18) 9 / 2 (hasil: 4.5)
9 div 2 (hasil: 4)
9 mod 2 (hasil: 1)

Tabel 3. Operator Boolean PASCAL

Operator  Operasi Tipe Operand Tipe Hasil Operasi
not negasi boolean boolean
and logika ‘and’ boolean boolean
or logika ‘or’ boolean boolean
xor logika ‘xor’ boolean boolean

 

Contoh: A dan B suatu variabel boolean

A not (A)
TRUE FALSE
FALSE TRUE

 

 

A B A and B A or B A xor B
TRUE TRUE TRUE TRUE FALSE
TRUE FALSE FALSE TRUE TRUE
FALSE TRUE FALSE TRUE TRUE
FALSE FALSE FALSE FALSE FALSE

 

Tabel 3. Operator Relasional

 

Operator Operasi Tipe Operand Tipe Hasil Operasi
= Sama dengan  tipe sederhana, string, pointer dan set boolean
<> Tidak sama dengan  tipe sederhana, string, pointer dan set boolean
< Lebih kecil dari tipe sederhana, string boolean
> Lebih besar dari tipe sederhana, string boolean
<= Lebih kecil atau = tipe sederhana, string boolean
>= Lebih besar atau = tipe sederhana, string boolean

 

Contoh: Misal suatu variable A:=9 dan B:=2,
maka: A = B (hasil: FALSE);
A <= B (hasil: FALSE) A <> B (hasil: TRUE);
A >= B (hasil: TRUE)
A < B (hasil: FALSE)
A > B (hasil: TRUE)

4. Operasi pada Set
a. Operasi Relasional pada Set
Ada empat perbandingan relasional yang diperkenankan pada set.
Tabel 4. Operator Relasional pada set

Operator Operasi Tipe Operand Tipe Hasil Operasi
= Sama dengan Set, set boolean
<> Tidak sama dengan Set, set boolean
<= Lebih kecil atau = Set, set boolean
>= Lebih besar atau = Set, set boolean

Misal A dan B adalah merupakan dua buah set. A = B : mempunyai hasil True jika A dan B memiliki anggota-anggota yang sama.
Contoh: [Sun, Tue, Fri] = [Tue, Fri, Sun].
A <> B: mempunyai hasil True jika A dan B memiliki anggota-anggota yang tidak sama.
A <= B : menunjukkan bahwa A adalah subset dari B.
Contoh: Jika A berisi [Sun, Mon, Tue] dan B berisi [Sun, Mon, Tue, Wed, Thu], maka A adalah merupakan subset dari B dan ekspresi menghasilkan nilai True.
A >= B : menunjukkan bahwa A adalah superset dari B.
Contoh: Jika A berisi [Sun..Sat] dan B berisi [Mon..Fri], maka A adalah merupakan superset dari B dan ekspresi menghasilkan nilai True.

b. Operasi Logika pada Set
Ada tiga operasi logika pada set.
Tabel 5. Operator Logika pada set

Operator Operasi Tipe Operand Tipe Hasil Operasi
+ Union Set Set
Difference Set Set
* Intersection Set Set

Misal:
+ atau Union: [Sun, Mon, Tue, Wed] + [Mon, Thu, Fri] menghasilkan [Sun, Mon, Tue, Wed, Thu, Fri].
– atau Difference: [Sun, Mon, Tue, Wed] – [Mon, Tue, Fri] menghasilkan [Sun, Tue, Wed], yang merupakan anggota adari set pertama yang bukan anggota set yang kedua.
* atau Intersection: [Sun, Mon, Tue, Wed] * [Mon, Tue, Fri] menghasilkan [Mon,Tue], yang merupakan anggota kedua set.

5. Ekspresi Merupakan kombinasi antara operator dan operand. Ekspresi matematik yang terjadi dalam dunia nyata diterjemahkan kedalam bahasa Pascal dengan sedikit perubahan tanda.
Contoh:

Ekspresi matematika Ekspresi PASCAL
• a + b • a + b
• x ( y + z ) • x * ( y + z )
• b2 – 4ac • b * b – 4*a*c

Contoh: Bila dideklarasikan var i, j: integer; maka, i + j adalah ekspresi aritmatik (menghasilkan suatu bilangan integer) i < j adalah ekspresi boolean (menghasilkan logika TRUE atau FALSE)

6. Fungsi Matematik Standar dalam PASCAL
Tabel 6. Beberapa fungsi matematik standar yang disediakan oleh PASCAL

Nama Fungsi Deskripsi Tipe Argumen Tipe Hasil Operasi
abs absolute value  real/integer real/integer
arctan arctan (radian) Real/integer real
cos cosine (radian)  real/integer real
sin sin (radian) real/integer real
exp fungsi Perpangkatan e real/integer real
 ln ln real/integer real
round Pembulatan terdekat real integer
sqr kuadrat real/integer real/integer
sqrt Akar kuadrat real/integer real
trunc Pembulatan ke bawah real/integer integer

Contoh :
Abs(-11) (hasil: 11)
Round(10.6) (hasil: 11)
Trunc(10.6) (hasil: 10)
Sqrt(4) (hasil: 2)
Sqr(4) (hasil: 16)
Untuk fungsi trigonometri:
x = sin phi menjadi x:=sin (3.1416);

Entry filed under: matrikulasi. Tags: .

10 Hal yang tidak bisa dibeli dengan Uang ReCaptcha

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Trackback this post  |  Subscribe to the comments via RSS Feed


Calendar

July 2011
M T W T F S S
« Aug   Aug »
 123
45678910
11121314151617
18192021222324
25262728293031

Most Recent Posts


%d bloggers like this: