Wednesday, April 27, 2011

Tipe Data Terstruktur Dalam Pascal

Type Data Terstruktur
Type Data Terstruktur di dalam bahasa Pascal terdiri dari :
  • Array
  • Record
  • Set
  • File
Tipe Data Array / Larik
  • Larik : deretan data yang punya type data sejenis.
Misalnya : Daftar Nomor Telpon, Tabel Pajak dll.
  • Tiap rinci data disebut komponen/Elemen Larik.
  • Tiap larik bisa dioperasikan menggunakan pemilih elemen larik yang disebut INDEX atau Subskrib. Dan Index ini diletakkan dalam tanda ‘[ ]’, sesudah nama larik.
Deklarasi ARRAY
Deklarasi perubah selalu diawali dengan kata VAR Dalam deklarasi perubah biasa, kita hanya perlu menentukan type data perubah tersebut misalnya: real, integer, boolean atau char, sedangkan pada deklarasi larik (array), kita perlu mendefinisikan type larik, juga harus menentukan banyaknya index yang akan mengisi larik tersebut.
Format :
VAR nama : ARRAY [index] OF type
Keterangan :
Nama : nama larik yang dideklarasikan;
Index : batasan index (cacah elemen);
Type : tipe data dari larik;
Larik dapat bertipe data sederhana byte, word, integer, real, boolean, char atau string dan tipe data skalar atau subrange.
Index dari larik menunjukkan maksimum banyaknya elemen-elemen dari larik. Index larik ini dapat berupa tipe subrange atau skalar apapun (integer, byte, word, char ) kecuali tipe real.
Suatu larik tidak hanya dapat berupa suatu variabel yang dideklarasikan di bagian variabel, tetapi juga dapat berupa uatu konstanta yang dideklarasikan di bagian deklarasi konstanta.
Type Data Record (Rekaman)
Seperti halnya array(larik), record juga punya elemen, di sini elemennya disebut "Field". Tiap elemen bisa punya type data yang berbeda. Banyaknya field dapat bervariasi atau bisa juga tetap.
Record yang punya field yang bervariasi disebut ‘Variant Record’.
Deklarasi type data Record dapat ditetapkan di bagian deklarasi var atau Type.
Format :
TYPE pengenal = RECORD
Field1 : type1;
Field2 : type2;
:
fieldn : typen;
END;
Membaca dan menulis field
Dapat dilaksanakan pada seluruh record atau sebagian record.
Format :
Nama_record.Nama_field
Tanda titik harus ditulis
Notasi ini disebut Penandaan field (‘field designator’).
Berbeda dengan statement pemberian (assigment), maka untuk membaca dan menulis record selalu dialakukan menurut Field yang ada, tidak dilakukan secara keseluruhan record.
Contoh : Read(Tanggal.Tgl);
Read(Tanggal.bulan);
Read(Tanggal.tahun);
  • Statement WITH
Digunakan untuk mengurangi penulisan yang berulang-ulang untuk nama recordnya. Maka dengan menggunakan statement WITH hanya cukup sekali saja menyebutkan nama recordnya.
Format :
WITH nama_record DO
{langsung dimasukkan/dicetak fieldnya}
Record Varian
Dengan menggunakan ‘varian record’ kita bisa membuat rekaman menjadi lebih komplex (varian), tergantung dari kondisi.
Format :
TYPE pengenal = RECORD
Field1 : tipe1;
Field2 : tipe2;
:
fieldn : tipen;
CASE pengenal_kasus : type_kasus OF
Label1 : (field_a : tipe_a; Field_b : tipe_b;
:
field_x : tipe_x);
Label2 : (field_t : tipe_t; Field_s : tipe_s;
:
field_v : tipe_v);
:
END;
Field dalam bagian variant sering disebut ‘tag field’ misalnya : fielda,fieldb,…..fieldx. Untuk tag field di atas yang diawali dengan ‘CASE’ mempunyai aturan sebagai berikut :
  1. Nilai dari tag field diantara Case dan Of menentukan struktur yang akan digunakan untuk keseluruhan record (rekaman). Tag field punya 2 komponen, yaitu pengenal field yang menyimpan nilai ‘tag field’ dan type data yang menunjukkan semua kemungkinan nilai ‘tag field’. Untuk rekaman Gaji di atas, maka tag fieldnya bisa berupa :
  2. Case stat_peg : status of
    : :
    tag field type tag
  3. Semua kemungkinan nilai tag digunakan sebagai label dalam bagian statement Case. Jika terdapat beberapa label, maka dipisahkan dengan koma, Struktur record (rekaman) yang akan dipilih tergantung dari nilai tag.
  4. Misalnya : untuk rekaman Gaji, jika statement yang akan diekskusi : Gaji.Stat_Peg := J; (* lihat contoh di bawah ini *).
    Maka bagian variant dari rekaman yang akan terbentuk berupa upah perjam, jumlah jam kerja dan lembur.
  5. Tiap structure varian ditulis dalam tanda kurung. Di dalam tanda kurung digunakan aturan yang sama seperti halnya dibagian tetap. Juga dimungkinkan adanya "bagian varian dalam bagian varian" (nested variant).
  6. Satu statement End menutup bagian tetap dan bagian varian dari definisi record.
  1. Contoh
  1. Ketikkan program berikut, dan simpan dengan nama CONTOH81.PAS
  2. Program Contoh1;
    Uses crt;
    Var
    Bil : Array[1...10] of real;
    Jum, rata : real;
    I,N : integer;
    Begin
    Clrscr;
    I:=0; jum:=0;
    Write(‘Jumlah data : ‘); readln(N);
    While I<=N Do
    Begin
    I:=I+1;
    Write(‘Bilangan ke-‘,I,’);readln(bil[I]);
    Jum:=jum+bil[I];
    End;
    Rata:=jum/N;
    Writeln(‘Total data : ‘,jum:6:2);
    Writeln(‘Rata-rata : ‘,rata:6:2);
    Readln;
    End;
  3. Ketikkan program berikut, dan simpan dengan nama CONTOH82.PAS
  4. Program Contoh_Arr;
    uses crt;var a,b:array[1..6,1..6] of integer;
    x,y,BAR,COL,PER,b2,c2,b1,c1,URUT,HASIL:integer;
    ISI:BOOLEAN;s1,s2 : string;
    begin
    s1:=' ---- Program Perkalian Matrik ---- ';
    s2:='Ulangi!,Kolom Matrik 1 harus sama dengan baris Matrik 2';
    WINDOW(1,1,80,25);textbackground(0);clrscr;
    WINDOW(10,4,70,5);textbackground(1);clrscr;
    WINDOW(5,2,75,4);textbackground(3);clrscr;
    GOTOXY((70-length(s1)) div 2,2);textcolor(1);writeln(s1);
    WINDOW(5,8,75,16);textbackground(4);
    ISI:=FALSE;
    WHILE ISI=FALSE DO
    BEGIN
    textcolor(15);
    CLRSCR;
    GOTOXY((70-17) div 2,2);WRITE('Baris Matrik 1 : ');READLN(B1);
    GOTOXY((70-17) div 2,3);WRITE('Kolom Matrik 1 : ');REAzDLN(C1);
    GOTOXY((70-17) div 2,4);WRITE('Baris Matrik 2 : ');READLN(B2);
    GOTOXY((70-17) div 2,5);WRITE('Kolom Matrik 2 : ');READLN(C2);
    IF C1<>B2 THEN
    BEGIN
    GOTOXY((70-length(s2)) div 2,7);WRITE(s2);
    GOTOXY((70-length('Tekan ENTER !')) div 2,8);
    textcolor(3+blink);WRITE('Tekan ENTER !');READLN
    END
    ELSE
    ISI:=TRUE;
    END;
    WINDOW(1,8,80,25);textbackground(2);CLRSCR;
    gotoxy(3,2);WRITE('Pengisian Matrik I (',B1,'x',C1,')');
    WRITELN(' '); gotoxy(30,2);write('Matrik Hasil Perkalian');
    gotoxy(38,3);write(b1,' x ',c2);
    GOTOXY(55,2);WRITE('Pengisian Matrik II(',B2,'x',C2,')'); WRITELN(' ');URUT:=3;
    window(3,12,25,24);textbackground(4);clrscr;
    window(28,12,52,24);textbackground(1);clrscr;
    window(55,12,78,24);textbackground(4);clrscr;
    window(1,1,80,25);
    FOR BAR:=1 TO B1 DO
    BEGIN
    FOR COL:=1 TO C1 DO
    BEGIN
    gotoxy(col*3+2,bar*2+11);READLN(A[BAR,COL]);
    END;
    END;
    FOR BAR:=1 TO B2 DO
    BEGIN
    FOR COL:=1 TO C2 DO
    BEGIN
    gotoxy(col*3+54,bar*2+11);READLN(B[BAR,COL]);
    END;
    END;
    FOR BAR:=1 TO B1 DO
    BEGIN
    FOR COL:=1 TO C2 DO
    BEGIN
    HASIL:=0;
    FOR PER:=1 TO C1 DO
    BEGIN
    HASIL:=HASIL+A[BAR,PER]*B[PER,COL];
    END;
    for x:=1 to hasil do
    begin
    textbackground(1);textcolor(15);
    gotoxy(col*3+27,bar*2+11);WRITE(x);delay(100);
    textbackground(4);textcolor(13+blink);
    for y:=1 to c1 do
    begin
    gotoxy(y*3+2,bar*2+11);write(a[bar,y]);
    end;
    for y:=1 to b2 do
    begin
    gotoxy(col*3+54,y*2+11);write(b[y,col]);
    end;
    end;
    textbackground(4);textcolor(15);
    for y:=1 to c1 do
    begin
    gotoxy(y*3+2,bar*2+11);write(a[bar,y]);
    end;
    for y:=1 to b2 do
    begin
    gotoxy(col*3+54,y*2+11);write(b[y,col]);
    end;
    END;
    END;
    READLN;
    END.
  5. Ketikkan program berikut, dan simpan dengan nama CONTOH83.PAS
Program Contoh3; {Program input data pada record}
Uses crt;
Type
Barang = record
Kode : string;
Nb : string;
Jumlah : integer;
Harsat : longint;
End;
Var Brg : Array [word] of barang;
Lagi : char;
I : integer;
Begin
Clrscr;
I:=0;
Repeat
Inc(I)
Write(‘Kode Barang :’); readln(brg[I].kode);
Write(‘Nama Barang :’); readln(brg[I].Nb);
Write(‘Jumlah Barang :’); readln(brg[I].Jumlah);
Write(‘Harga satuan :’); readln(brg[I].Harsat);
Write(‘Ada lagi : ‘); readln(lagi);
Until lagi<>’Y’ or lagi<>’y’
End.
 cr: http://www.dzulfadhli.co.cc

No comments: