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