Entri Populer

Rabu, 23 Februari 2011

pengertian ARRAY & RECORD

                                                                            ARRAY

Pengertian Array

Array (larik) merupakan tipe data tersetruktur dimana didalamnya terdiri dari komponen – komponen yang mempunyai tipe data yang sama. Didalam suatu array jumlah komponen banyaknya adalah tetap. Didalam suatu larik atau array setiap kompoenen ditunjukan oleh suatu index yang unik. Index dari setiap komponen array menunjukan urutan data atau identitas yang mewakili data yang ada didalamnya.
Logika sederhananya array itu bisa disamakan dengan dua orang dengan nama yang sama didalam suatu komunitas, untuk membedakan antara nama yang satu atau dengan nama yang lain maka diberikan initial tambahan untuk setiap nama.


Pengertian array satu dimensi, dua dimensi dan multi dimensi
* Array satu dimensi

Merupakan sebuah variabel yang menyimpan sekumpulan data yang memiliki tipe sama dan elemen yang akan diakses hanya melalui 1 indeks atau subskrip.

Bentuk umum pendeklarasian:

nama_array[jumlah_eleman];

* Array dua dimensi

Merupakan sebuah variabel yang menyimpan sekumpulan data yang memiliki tipe sama dan elemen yang akan diakses melalui 2 indeks atau subskrip yaitu indeks baris dan indeks kolom.

Bentuk umum pendeklarasian:

nama_array[jumlah_eleman_baris][jumah_eleme_kolom];

* Array multidimensi

Merupakan sebuah variabel yang menyimpan sekumpulan data yang memiliki tipe sama dan elemen yang akan diakses melalui banyak indeks atau subskrip. Array seperti ini biasa digunakan untuk matik, array 2 dimensi juga termasuk kedalam array multidimensi.

Deklarasi Array

Didalam penulisan bahasa pemograman setiap penggunaan array harus dideklarsikan terlebih dahulu. Pendeklarasian array diawali dengan nama variabel array diikuti dengan indeks array yang dituliskan didalam tanda “[]” , diikuti dengan kata cadangan of dan tipe data yang dibutuhkan.

Bentuk Umum Penulisan

Tanda_pengenal : array [..tipe index ..] of tipe data;

Contoh :

Var
A : array[1..4] of integer;
B : array[1..5] of string;
C: array[1..10] of real;

Keterangnan :
A,B,C merupakan tanda pengenal/ nama variabel dari array;
1..4 : merupakan tipe indek dari array, yang menunjukan banyaknya data yang mampu disimpan.
Integer : menunjukan bahwa data yang diinput berupa bilangan bulat.

6.3. Alokasi Penggunaan Array

a. Array Static (Static Array)

array static adalah model pendeklarasian array dimana tipe data yang digunakan mempunyai nilai yang tetap. Nilai yang digunakan untuk menentukan jangkauan pada umumnya bernilai integer. Array Static juga bisa disebut Array dengan deklarasi tipe indeks subrange integer.



Bentuk Umum

array[indexType1, ..., indexTypen] of baseType

Keterangan = index type menunjukan tipe data ordinal yang menunjukan batasan atau elemen maksimul terhadap seberapa besar variabel tersebut menyimpan komponen.

Contoh

Var arrayku : array[1..5] of char

Atau juga

type
jangkauan = 1..5;
var
nilai : array[jangkauan] of integer;

b. Array Dinamis (Dynamic arrays)

Larik atau array dinamis merupakan array yang tidak mempunyai suatu jangkauan atau ukuran yang tetap. Tetapi ketika program dijalankan maka memori untuk suatu array dinamis direalokasikan ketika kita menugaskan suatu nilai kepada array. Dynamic-Array jenis ditandai oleh konstruksi (menyangkut) format

Bentuk Umum

array of baseType

Contoh

var nilai: array of Real;

Dari deklarasi tersebut nilai yang merupakan deklarasi array belum memperoleh nilai yang tetap, tetapi hanya diberikan batasan sebagai tipe data real. Untuk mendeklarasikan array tersebut kita harus menempatkan array didalam suatu memori, caranya adalah dengan memanfaatkan fungsi dari perintah sellength.

Selllength(nilai,20)

Dari penggalan program tersebut nilai untuk array nilai tersebut mempunyai range sebanyak atau cakupan 20 untuk tipe data real, dengan indeex dimulai dari 0 sampai dengan 20.









6.4. Studi Kasus program dengan Array

a. Hasil ketika form Dijalankan



Gambar 5.1 Form Konversi Tanggal

b. Desain Properties

Object Caption/Text Name
Label 1 Tanggal Label1
Label 2 Bulan Label2
Label 3 Tahun Label3
Label 4 Hari Pada Tanggal tersebut Adalah Label4
GroupBox1 Entry Tanggal Groupbox1
Edit1 - Etgl
Edit2 - Ebln
Edit3 - Etahun
Edit4 - Ehari
Command1 OK bok

c. Listing Program

Program untuk Command OK

procedure TForm12.bhariClick(Sender: TObject);
type
x = string[7];
const
faktorbln : array[1..12] of byte = (0,3,3,6,1,4,6,2,5,0,3,5);
hari : array[0..8] of
x=('Minggu','Senin','Selasa','','Rabu','Kamis','','Jum''at','Sabtu');
var
hr : string;
nama : string[255];
j1,j2,j3,j4 : integer;
tanggal,bulan,tahun : integer;
begin
tanggal := strtoint(etgl.Text);
bulan := strtoint(ebln.Text);
tahun := strtoint(ethn.Text);
if tahun > 1900 then tahun := tahun - 1900;
j1 := trunc(tahun * 365.25);
j2 := j1 + faktorbln[bulan];
if (tahun/4 = int(tahun/4)) and (bulan < 3) then j2 := j2-1;
j3 := j2 + tanggal;
j4 := trunc(frac(j3/7) * 10);
hr := Hari[j4];
ehari.Text := hr;
end;

Posted by Chaika Catherine qq Ady


                                                                  RECORD

Sebuah record rekaman disusun oleh
beberapa field. Tiap field berisi data dari
tipe dasar / bentukan tertentu. Record
mempunyai kelebihan untuk menyimpan
suatu sekumpulan elemen data yang
berbeda-beda tipenya (di banding array).
Contoh , sebuah record dengan empat
 buah field


Cara Pendefinisian
• Cara pendeklarasian dari record adalah sbb:
• Mendefinisikan tipe dari record (jumlah field, jenis
tipe data yang dipakai),
• Mendefinisikan variabel untuk dilakukan operasi.

sumber bayoe.stafff

Rabu, 16 Februari 2011

tipe data dan tipe data bersturktur

1. Tipe Data Sederhana
merupakan tipe data dasar yang sering dipakai oleh program, meliputi: integer (bilangan bulat), real (bilangan pecahan), char (alphanumerik dan tanda baca), dan boolean (logika). Untuk data integer dan real masing-masing terbagi menjadi beberapa kategori
a. Bilangan Integer
merupakan tipe data berupa bilangan bulat, terbagi atas beberapa kategori seperti terlihat dalam tabel 1. tabel 1 menunjukkan jenis data, ukuran dalam memori dan rentang nilainya.

tabel 1. Tipe Data Bilangan Integer Tipe Data Ukuran Tempat Rentang Nilai
Byte 1 byte 0 s/d +255
Shortint 1 byte -28 s/d +127
integer 2 bytes -32768 s/d 32767
Word 2 bytes 0 s/d 65535
Longint 4 bytes 2147483648 s/d 2147483647



Contoh bilangan integer adalah: 34 6458 -90 0 1112 Penggolongan tipe data integer tersebut dimaksudkan untuk membatasi alokasi memori yang dibutuhkan misalkan untuk suatu perhitungan dari suatu variabel bilangan diperkirakan nilai maksimumnya 32767 kita cukup mendeklarasikan variabel bilangan sebagai integer (2 byte), daripada sebagai longint(4 byte). Di dalam kompilernya, Pascal menyediakan konstanta untuk bilangan Integer yaitu: MaxInt and MaxLongInt, pemrogram bisa menggunakannya di dalam programnya tanpa harus terlebih dahulu mendefinisikannya.
-MaxInt bernilai 32.767
-MaxLongint bernilai 2.147.483.647.
contoh:

Program display_maxint;
uses wincrt;
begin writeln (maxint)
end.

Hasilnya: 32.767

b. Bilangan Real
Bilangan real atau nyata merupakan jenis bilangan pecahan, dapat dituliskan secara biasa atau model scientific . Contoh bilangan real: 34.265 -3.55 0.0 35.997E+11, dimana E merupakan simbol perpangkatan 10. Jadi 452.13 mempunyai nilai sama dengan 4.5213e2. Penggolongan tipe data bilangan real dapat dilihat pada tabel 2.
tabel 2. Bilangan Real Tipe Data Ukuran Tempat Rentang Nilai
real 6 bytes 2.9 x 10-39 s/d 1.7 x1038
single 4 bytes 1.5 x 1045 s/d 3.4 x 1038
double 8 bytes 5.0 x 10-324 s/d 1.7 x 10308
extended 10 bytes 3.4 x 10-4932 s/d 1.1 x 104932
comp 8 bytes -9.2x 1018 s/d 9.2x 1018


c. Char
tipe data ini menyimpan karakter yang diketikkan dari keyboard, memiliki 266 macam yang terdapat dalam tabel ASCII (American Standard Code for Information Interchange). Contoh: 'a' 'B' '+', dsb. Yang perlu diingat bahwa dalam menuliskannya harus dengan memakai tanda kutip tunggal. Jenis data ini memerlukan alokasi memori sebesar 1(satu) byte untuk masing-masing data.

d. Tipe Data Boolean
merupakan tipe data logika, yang berisi dua kemungkinan nilai: TRUE (benar) atau FALSE (salah). Turbo Pascal for Windows memiliki tiga macam jenis ini yaitu: Boolean, WordBool, dan LongBool. Tipe boolean memakai memori paling kecil, sedangkan WordBool dan LongBool dipakai untuk menulis program yang sesuai dengan lingkungan Windows.

Tabel 2. Tipe Data Boolean Tipe Data Ukuran Tempat
Boolean 1 byte
WordBool 2 byte
Longbool 3 byte

Sebagai bilangan ordinal boolean true mempunyai nilai 1(satu), sedangkan false nilainya adalah 0(nol).
Contoh:


Program display_bool;
uses wincrt;
begin writeln(ord(true));
writeln(ord(false));
end.

Hasilnya: 1 0 3.2.

2. tipe data berstruktur
tipe ini terdiri atas : array, record, set, dan file. String adalah tipe data jenis array, tetapi karena string memiliki kekhasan tersendiri sebagai array dari karakter maka penulis perlu memberikan penjelasan tersendiri. Sedangkan untuk array, record, dan file perlu dijelaskan dalam bab yang lain karena agak banyak hal-hal yang perlu dibahas.

a. Tipe Data String String
merupakan suatu data yang menyimpan array (larik), sebagai contoh 'ABCDEF' merupakan sebuah konstanta string yang berisikan 6 byte karakter. Ukuran Tempat untuk tipe data ini adalah 2 s/d 256 byte, dengan jumlah elemen 1 s/d 255. String dideklarasikan dengan string [ konstanta ] atau string. Bila ukuran string tidak didefinisikan maka akan banyak memakan ruang, karena ukuran string menyesuaikan dengan defaultnya. Misalkan
var kata: string [20]; atau var kata: string; karena string merupakan array dari karakter. Maka kata[1] merupakan karakter pertama dari string, kemudian kata[2], merupakan elemen kedua, dst.
Contoh:

Program hal_string;
Uses wincrt;
var s : string;
begin s:='Hello';
writeln(s);
writeln('panjang dari string adalah: ',ord(s[0]));
end.

Karakter nol merupakan karakter yang menyatakan panjang string. Sehingga ord(s[0]) menyatakan panjang dari string tersebut. Panjang string juga bisa dinyatakan sebagai length(s).
routines pada Pascal untuk manipulasi string :
-Length : menghasilkan panjang string.
Syntax : length(s)
Contoh : n:=length(s);
Misal s:='pemrograman'; n akan sama dengan 11.
-Copy : mengkopi suatu ekstrak karakter dari sebuah string.
Syntax : copy(s,dari,banyaknya)
Contoh : st:=copy(s,5,3); mengekstrak 3 karakter dari s, dimulai dari karakter kelima.
Misal s:='Who are you ?'; st adalah 'are'.
catatan: bila indek lebih bear dari panjang string maka hasilnya akan kosong:
Contoh : st:=copy(s,15,4); { kosong} jika banyaknya string yang akan diekstrak lebih besar dari s, maka hasilnya adalah bagian yang tersisa dari string.
Contoh : st:=copy(s,9,10); st hasilnya adalah 'you ?'
-Pos : menghasilkan posisi dari suatu substring dari suatu string.
Syntax : Pos(substr,s)
Contoh : n:=pos('are','Who are you ?'); { n:=5; }
Jika substring tidak ditemukan, maka hasilnya 0.
-Val : mengkonversi string ke numerik.
Syntax : val(strvar,numvar,errorcode)
strvar adalah variabel string yang akan dikonversi, numvar variabel numerik ( bisa integer atau real, dan errorcode adalah variabel integer yang menyimpan error code (kode kesalahan). Jika errorcode adalah 0, konversi berhasil. Sebaliknya, hal ini akan menunjukan posisi dimana pada strvar yang menyebabkan kegagalan.
Contoh :

program konversiangka;
uses wincrt;
var s : string;
e : integer; r : real;
begin
write('masukkan angka : ');
readln(s);
val(s,r,e);
if e<>0 then writeln('salah pada posisi : ',e)
else writeln('itu adalah : ',r:4:3);
end.

-Str : mengkonversi numerik ke string.
Syntax : str(numvar,strvar)
Contoh :

program konversiangka_1;
uses wincrt;
var s : string;
i : integer;
begin
write('masukkan angka: ');
readln(i);
str(i,s);
writeln('itu adalah: ',s);
end.

-Concat : Menggabungkan dua atau lebih string.
Syntax : concat(s1,s2,...,sn)
Contoh : st:=concat(s1,s2); Jikas1='ABC' dan s2='DEF',
st akan menjadi 'ABCDEF' st:=concat('Borland ','Pascal ','ver. ','7.0'); akan menjadi 'Borland Pascal ver. 7.0'
-Insert : Menyisipkan suatu string ke dalam string yang lain.
Syntax : insert(asal,target,indek)

Contoh :


program sisip ;
uses wincrt;
var s1, s2 : string;
begin
s1:='tidak ';
s2:='saya bekerja';
insert(s1,s2,6);
writeln(s2); {saya tidak bekerja }
end.

Jika hasilnya lebih dari 255 maka akan terpotong menjadi 255.
-Delete : menghapus n karakter dari string s berawal dari indek i.
Syntax : delete(s,i,n);
Contoh :

program hapus;
uses wincrt;
var s : string;
begin
s:='saya seorang insinyur';
delete(s,6,3);
writeln(s); { 'saya sang insinyur'}
end.

-Fillchar : mengisi string s dengan karakter c sampai s sama dengan n-1 panjang karakternya.
Syntax : fillchar(s,n,c); Hati-hati : s[0] akan tertumpuki, jangan lupa menambahkan s[0]:=chr(n-1); untuk menormalkannnya.
Contoh :

program isikarakter;
uses wincrt;
var s : string;
begin
fillchar(s,51,'=');
s[0]:=chr(50);
end.

b. Tipe Data Set
Sebuah set merupakan suatu himpunan yang berisi nilai (anggota). set merupakan Tipe data yang khusus untuk Pascal. Set dalam pemrograman sangat mirip dengan himpunan dalam ilmu matematika,
contoh: A = { 1, 2, 3, 4, 5 }
Syntax: set of contoh:
type Digits = set of 0..9;
Letters = set of 'A'..'Z';
type Day = (Sun, Mon, Tue, Wed, Thu, Fri, Sat);
CharSet = set of Char;
Digits = set of 0..9;
Days = set of Day;
const EvenDigits: Digits = [0, 2, 4, 6, 8];
Vowels: Letters = ['A', 'E', 'I', 'O', 'U', 'Y'];
Kita tidak bisa menulis atau membaca isi dari set, tetapi kita bisa melakukan operasi yang lain dengan data yang ada pada set (mis. relasional).
Contoh:

Program contoh_set;
Uses wincrt;
type hari = (ahad, sen, sel, rab, kam,jum, Sab);
var semua_hari : set of hari;
hari_kerja : set of sen .. jum;
hari_ini : hari;
begin
hari_ini:=sen;
if hari_ini in hari_kerja then
writeln('HARI INI HARI KERJA')
else
writeln('HARI LIBUR');
end.

Salah satu manfaat dari penggunaan tipe data set adalah untuk mengecek apakah suatu nilai muncul dalam suatu range tertentu. Misalnya, untuk mementukan apakah suatu karakter berupa lower case letter (huruf kecil), mis. Ch adalah tipe Char, kita bisa menulis,

if (Ch >= 'a') and (Ch <= 'z') then Writeln( Ch,' merupakan huruf kecil.');

atau, dengan notasi set, kita bisa menulis ,

if Ch in ['a'..'z'] then Writeln( Ch,' merupakan huruf kecil.');

-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.
sumber : dzulcyber