21 Jul 2012

Tipe Data Terstruktur




Dalam tipe data terstruktur setiap perubah bisa menyipan lebih dari sebuah nilai data. Masing-masing nilai data disebut komponen. Karakteristik data bertipe tersetruktur ditentukan berdasarkan cara penstrukturan dan tipe masing-masing komponen.
Jenis dalam tipe data terstruktur :
• larik/array
• Record
• Set
• File
Larik/Array
Larik atau array adalah tipe tersetruktur yang mempunyai komponen dalam jumlah tetap dan setiap komponen mempunyai tipe data yang sama. Posisi masing-masing Dalam tipe data terstruktur setiap perubah bisa menyipan lebih dari sebuah nilai data. Masing-masing nilai data disebut komponen. Karakteristik data bertipe tersetruktur ditentukan berdasarkan cara penstrukturan dan tipe masing-masing komponen.
Penulisan Array
komponen dalam larik dinyatakan sebagai nomor index.
Bentuk umum:
• Type pengenal = array [tipe index] of tipe;
Dimana:
• Pengenal : nama tipe data
• Tipe index : tipe data untuk nomor index
• Tipe : tipe data komponen

Contoh Array
Parameter tipe index menentukan banyaknya komponen larik tersebut. Tipe index boleh berupa sembarang tipe ordinal kecuali longint dan subjangkauan dari longint.
Contoh deklarasi data larik :
• Type vek=array[1..100] of integer;
Deklarasi diatas berarti Vek adalah tipe data yang berupa larik yang komponennya bertipe integer dan banyaknya 100 buah. Deklarasi yang demikian disebut deklarasi larik dimensi satu (vector). Jika tipe komponen juga berupa sebuah larik lain, akan kita peroleh larik dimensi banyak.
Contoh :
• Type matrik =array [1..100 ,1..50]  of real;


Tipe Data  Record
• Digunakan untuk penyimpanan suatu kelompok data dengan tipe data yang berbeda-beda.
Contoh Record
type data=record
nama:string;
tanggal,bulan,tahun: integer;
end;
var siswa : data;
{jika siswanya banyak digunakan array}
var siswa :array[1..100] of data;
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 matematik. contoh: A = { 1, 2, 3, 4, 5 }
Sintak :
set of
contoh:
type Angka = set of 0..9;
Huruf = set of 'A'..'Z';
Hari = (Senin, Selasa, Rabu, Kamis,
Jum’at, Sabtu, Minggu);
SetHuruf = set of Huruf;
SetHari = set of Hari;

const Genap: Angka = [0, 2, 4, 6, 8];
Vokal: Huruf = ['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;
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 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 File

Procedure dan Function Standard Untuk Semua Tipe File

Assign (f:file;name:string)          : digunakan untuk menghubungkan nama dari external    file ke suatu variabel file.
Rewrite (f[:file; recsize:word]): digunakan untuk membuka file yang baru atau yang belum pernah ada di disk.
Reset (f[:file; recsize:word])       : digunakan untuk membuka file yang sudah ada.
Close (f:file)                                : digunakan untuk menutup file yang telah dibuka dengan procedure standard Rewrite, Reset, atau Append (procedure khusus untuk membuka file teks).
Erase (f:file)                                : digunakan untuk menghapus suatu external file. Dalam penggunaanya harus didahului dengan procedure standard Close.
Rename (f:file;newname:string): digunakan untuk mengganti nama suatu external file.
GetDir (d:byte; var s:string)        : digunakan untuk mengetahui direktori yang aktif pada suatu drive.
ChDir (s:string)                           : digunakan untuk mengubah posisi dari direktori.
MkDir (s:string)                           : digunakan untuk membuat suatu direktori.
RmDir (s:string)                          : digunakan untuk menghapus suatu direktori.
Eof (f:file):boolean                      : fungsi ini akan menghasilkan status apakah file sudah berada di posisi akhir dari file atau tidak.

File Teks

File tekas merupakan file yang berisi karakter yang dibentuk dalam baris-baris dan masing-masing baris dengan end-of-line marker berupa karakter carriage return dan karakter line feed (CR/LF). Sedangkan akhir dari file ditunjukkan dengan karakter Ctrl-Z.
Panjang dari tiap-tiap baris dari file teks dapat berbeda-beda, sehingga posisi dari suatu baris tertentu dari file teks tidak dapat dihutung dan akibatnya file tekas hanya dapat diakses secara urut.
File teks sebenarnya merupakan file dengan tipe Char, tetapi mempunyai perbedaan, yaitu nilai yang bukan tipe Char dapat direkam dan dibaca oleh file teks. Nilai yang bukan tipe Char ini akan secara otomatis dirubah ke atau dari tipe Char.

Deklarasi
var
       variabelFile : Text;
begin
end.

Prosedur dan Fungsi Standard File Teks
Append(var f:text);                              : digunakan untuk membuka file yang telah ada untuk keperluan menambah data ke dalam file.
Write([var f:text;] v1 [v2,…,vn])           : digunakan untuk merekam data ke dalam file.
Writeln([var f:text;] v1 [v2,…,vn])        : digunakan untuk merekam data ke dalam file dan memberikan end-of-line marker.
Flush(var f:text)                                   : digunakan untuk segera merekam data yang ada di dalam buffer ke dalam file teks.
Read([var f:text;] v1 [v2,…,vn])            : digunakan untuk membaca satu atau lebih nilai dari file ke dalam satu variabel atau lebih.
Readln([var f:text;] v1 [v2,…,vn])         : kegunaannya sana dengan procedure Read, tetapi procedure ini akan menggeser pembacaan ke awal baris beikutnya dalam file.
Eoln[(var f:text)]:boolean                    : digunakan untuk mengetahui apakah posisi dari file berada di end-of-line marker atau tidak.
SeekEof[(var f:text)]:boolean              : kegunaannya sama dengan Eof, yaitu menghasilkan status akhir dari file.
SeekEoln[(var f:text)]:boolean             : kegunaannya sama dengan Eoln, yaitu menghasilkan status akhir dari baris.

Contoh program:
Membuat file teks baru
uses Crt;
var
  berkasText  : Text;
  kodeBrg     : String[5];
  namaBrg     : String[20];
  unitBrg     : Integer;
  hargaBrg    : Real;
  lagi        : Char;

begin
  {hubungkan dengan external file}
  Assign(berkasText,'Barang.txt');

  {buka file}
  Rewrite(berkasText);

  Lagi:='Y';
  while upCase(Lagi)='Y' do
  begin
    clrScr;
    gotoxy(5,6) ;Write('Kode Barang         : ');
    gotoxy(5,8) ;Write('Nama Barang         : ');
    gotoxy(5,10);Write('Unit Barang         : ');
    gotoxy(5,12);Write('Harga Satuan Barang : ');

    gotoxy(27,6) ;readln(kodeBrg);
    gotoxy(27,8) ;readln(namaBrg);
    gotoxy(27,10);readln(unitBrg);
    gotoxy(27,12);readln(hargaBrg);

    {rekam di file}
Writeln(berkasText,kodeBrg:5,namaBrg:20,unitBrg,hargaBrg:10:2);

    gotoxy(5,15);write('Ada data lagi (Y/T)? ');readln(lagi);
  end;

  {tutup file}
  close(berkasText);
end.

Menampilkan semua isi file

uses Crt;
var
  berkasText  : Text;
  kodeBrg     : String[5];
  namaBrg     : String[20];
  unitBrg     : String;
  hargaBrg    : String;

begin
  {hubungkan dengan external file}
  Assign(berkasText,'Barang.txt');

  {buka file}
  Reset(berkasText);

  clrScr;
  While not(Eof(berkasText)) do
  begin
    Readln(berkasText,kodeBrg,namaBrg,unitBrg,hargaBrg);
    Writeln(kodeBrg,namaBrg:22,unitBrg:7,hargaBrg:10);
  end;
  {tutup file}
  close(berkasFile);
end.


File Bertipe
Berbeda dengan file teks yang hanya dapat diakses secara urut, file bertipe (typed file) disamping dapat juga diakses secara urut (sequential access), dapat juga dikases secara acak (random access). Ini berarti komponen-komponen di dalam file bertipe dapat dibaca atau direkam dari manapun di dalam file.
Dalam file bertipe, kita dapat menambahkan variabel terdefinisi dalam unit standard System untuk menentukan kode akses file bertipe. Adapun kode aksesnya adalah:
0 – read only
1 – write only
2 – read/write (default)

Deklarasi
var
       fileData : File of tipeData;
begin
end.

tipeData dapat berupa integer, real, char, string, array, record, dan sebagainya.

Prosedur dan Fungsi Standard File Bertipe
Write (f,v1[v2,…,vn])                            : digunakan untuk merekam satu atau lebih nilai ke dalam file.
Read (f,v1[v2,…,v3])                             : digunakan untuk membaca satu atau lebih nilai dari file.
Seek (f; n : longint)                              : digunakan untuk mengarhkan penunjuk file ke suatu komponen tertentu, sehingga memungkinkan kita untuk membaca komponen atau menuliskan komponen secara acak.
Truncate(f)                                           : digunakan untuk menghapus sejumlah komponen atau record mulai dari posisi record tertentu.
FilePos(f):longint                                  : digunakan untuk menghasilkan letak posisi sekarang dari penunjuk file.
FileSize(f):longint                                 : digunakan untuk menghasilkan jumlah dari komponen atau record yang sudah ada di file. Fungsi ini harus digunakan setelah file dibuka.

Contoh Program:
Membuat file bertipe (typed file) baru
uses crt;
type
  mahasiswa = record
    nomor : integer;
    nama  : string[25];
    nilai : real;
  end;

var
  fileMhs : File of mahasiswa;
  recordMhs : mahasiswa;
  lagi : char;
begin
  assign(fileMhs,'MHS.dat');
  rewrite(fileMhs);

  lagi:='Y';
  while upcase(lagi)='Y' do
  begin
    clrscr;
    with recordMhs do
    begin
      gotoxy(5,6) ;write('Nomor Mahasiswa    : ');
      gotoxy(5,8) ;write('Nama Mahasiswa     : ');
      gotoxy(5,10);write('Nilai Mahasiswa    : ');

      gotoxy(27,6) ;readln(nomor);
      gotoxy(27,8) ;readln(nama);
      gotoxy(27,10);readln(nilai);
    end;

    write(fileMhs,recordMhs);

    gotoxy(5,15);write('Memasukkan data lagi (Y/T)? ');
    readln(lagi);
  end;

  close(fileMhs);
end.

Menampilkan semua data di file bertipe

uses crt;
type
  mahasiswa = record
    nomor : integer;
    nama  : string[25];
    nilai : real;
  end;

var
  fileMhs : File of mahasiswa;
  recordMhs : mahasiswa;

begin
  assign(fileMhs,'MHS.dat');
  reset(fileMhs);

  while not(Eof(fileMhs)) do
  begin
    read(fileMhs,recordMhs);
    with recordMhs do
      write(nomor:5,nama:17,nilai:10:2);
  end;

  close(fileMhs);
end.


File Tak Bertipe
File tak bertipe (untyped file) adalah channel I/O (Input/Output) level rendah (low level I/O channel) yang digunakan untuk mengakses langsung suatu file di disk tidak peduli bagaimana tipe dan strukturnya.

Deklarasi
            FileData : File;

Karena file tak bertipe tidak memandang tipe dan struktur filenya, maka file tak bertipe ini sifatnya kompatibel dengan file apapun dan tepat digunakan untuk operasi-operasi mengecek keberadaan suatu file di dalam disk, menghapus suatu file, mengganti nama dari suatu file, menyalin suatu file, dan operasi-operasi lainnya yang tidak langsung melibatkan operasi I/O.
Prosedur dan fungsi standard yang dapat digunakan di file bertipe dapat juga digunakan di file tak bertipe, kecuali prosedur standard Read dan Write yang diganti dengan prosedur standard BlockRead dan BlockWrite. Kedua prosedur ini digunakan untuk transfer data dengan kecepatan tinggi.
BlockRead(var f:file;var buf;countword[;result:word]);
BlockWrite(var f:file;var buf;countword[;result:word]);


Dikutip dari berbagai sumber. 

0 komentar:

Posting Komentar

Labels

Blogger (2) Internet (4) Islami (2) Pemrograman (6) Tips (6)

Blog Archive