TYPE DATA RECORD DAN ARRAY YANG
DIGUNAKAN PADA PROGRAM PASCAL.
SETELAH KEMARIN SAYA TELAH MEMBAHAS
TENTANG TYPE DATA ARRAY DAN LENGKAP DENGAN CONOHNYA, KALI INI SAYA AKAN
MEMBAHAS TENTANG TYPE DATA RECORD DAN FILE YANG DIGUNAKAN PADA PROGRAM PASCAL.
BAIKLAH, LANGSUNG SAJA KE POKOK
BAHASAN MATERINYA DIBAWAH INI:
1. RECORD
Record merupakan kumpulan data yang tidak
sejenis atau variasi. Penggunakan
record berkaitan dengan deklarasi suatu
type.
Type
NamaTipeData = TipeDataPascal;
Dideklarasikan dengan
Var NamaVariabel : NamaTipeData;
Contoh
:
Type
Bulat = integer;
Pecahan
= real; type
menggunakan sama dengan
Logika
= boolean;
Var Umur, JumlahAnak : bulat;
Gaji, Tunjangan : pecahan;
Status
:
logika; var menggunakan titi dua.
Tanda yang harus diperhatikan untuk
deklarasi tipe adalah tanda sama dengan untuk
namavariabel/tipe data dan jenis tipe.
Untuk tipe data di atas akan lebih praktis
jika dituliskan langsung tanpa memakai deklarasi
tipe yaitu :
Var Umur, JumlahAnak : integer;
Gaji, Tunjangan : pecahan;
Status : boolean;
Pembuatan deklarasi tipe nampak akan
memperpanjang program namun untuk jenis array
dan RECORD
pemakaian tipe sangat dianjurkan dan
menguntungkan.
Misalkan :
Var Umur : array[1..n] of integer;
Nama : array[1..n] of string;
JumAnak : array[1..n] of integer;
Dapat ditulis dengan type seperti :
Type Larik1 = array[1..n] of integer;
Larik2 = array[1..n] of string[20];
Var Umur, JumAnak : Larik1;
Nama : Larik2;
Namun untuk tipe data RECORD maka deklarasi
data merupakan keharusan, karena variabel
bertipe record tidak dapat diberi tipe data
record secara langsung.
Type NamaTypeRecord = RECORD
Namaitem1 : TipeitemData1
Namaitem2 : TipeitemData2
….
End;
Var NamaVariabelRecord :
NamaTypeRecord;
Contoh
Type RecBarang = Record
Kodebarang : string[5];
NamaBarang : String[20];
Harga : Real;
End;
Var Barang : RecBarang;
Contoh 5.1
Program pendataan_buku_dengan_record;
Uses Crt;
Const Max=100;
Type Rbuku = Record
Kode : String[7];
Judul : String[7];
Ekse : Integer;
Harga : Real;
End;
Var
Buku : Rbuku;
Dafbuku : array[1..max] of Rbuku;
J, Ccbk : integer;
Jum, Rat : real;
Pilih : char;
Begin
Repeat
Clrscr;
Writeln(‘Menu Pilihan : ‘);
Writeln(‘[1]. Masukkan data Buku’);
Writeln(‘[2]. Lihat Daftar Buku’);
Writeln(‘[3]. Tambah Data Buku’);
Writeln(‘[4]. Selesai’);
Write(‘Pilihan Proses : ); readln(Pilih);
Case Pilih Of
‘1’ :
begin
Clrscr;
Write(‘Berapa Buku ? : ‘); Readln(CcBk);
For J := 1 to Ccbk do
Begin
Writeln(‘Data ke – ‘,j);
Write(‘Kode Buku : ‘); Readln(Buku.Kode);
Write(‘Judul Buku : ‘); Readln(Buku.Judul);
Write(‘Eksemplar : ‘); Readln(Buku.Ekse);
Write(‘Harga Buku : ‘); Readln(Buku.Harga);
Dafbuku[J]:= Buku;
End;
End;
‘2’ :
begin
Clrscr;
Writeln(‘Daftar BUKU’);
Writeln(‘========================================’);
Writeln(‘No. Kode Judul eks. Harga’);
Writeln(‘========================================’);
For J := 1 to CcBk do
With dafbuku[J] do
Begin
Writeln(j:3, Kode:6, judul:15, Ekse:8,
Harga:9:2);
End;
Readln;
‘3’ :
begin
Clrscr;
Writeln(‘TAMBAH DATA’);
J := CcBk;
Repeat
Inc(J);
Writeln(‘Data Ke- ‘,j);
Writeln(‘KODE BUKU HABIS=SELESAI’);
Readln(Buku.Kode);
If Buku.Kode <> ‘HABIS’ then
Begin
Write(‘JUDUL BUKU : ‘); Readln(Buku.Judul);
Write(‘EKSEMPLAR : ‘); Readln(Buku.Ekse);
Write(‘HARGA BUKU : ‘); Readln(Buku.Harga);
End;
Until Buku.Kode=’HABIS’;
End;
End;
Until Pilih = ‘4’
End.
run
Menu Pilihan :
[1]. Masukkan data Buku
[2]. Lihat Daftar Buku
[3]. Tambah Data Buku
[4]. Selesai
Pilihan Proses :
Berapa Buku ? : 3
Data ke - 1
Kode Buku : A01
Judul Buku : BASIC
Eksemplar : 4
Harga Buku : 2000
Data ke - 2
Kode Buku : A02
Judul Buku : PASCAL
Eksemplar : 3
Harga Buku : 1000
Data ke - 3
Kode Buku : A03
Judul Buku : PDE
Eksemplar : 3
Harga Buku : 3000
Daftar BUKU
====================================
No. Kode Judul eks. Harga
====================================
1 A01 BASIC 4 2000.00
2 A02 PASCAL 3 1000.00
3 A03 PDE 3 3000.00
2. FILE DATA
Dalam memprogram tentunya melibatkan
data-data yang cukup banyak, tidaklah
mungkin kalau menyimpan data hanya pada
array, atau hanya diinputkan dari keyboard
sehingga jika komputer mati maka data
hilang. File data berfungsi sebagai penampung dari
inputan sehingga membentu berkas yang
berisi data diperlukan untuk proses input
selanjutnya. Dalam Pascal ada dua macam
tipe file yaitu :
1. FILE TEXT
2. FILE BERTIPE
Berikut adalah perbedaan antara file text
dan file bertipe :
File text File Bertipe
1. Data direkam dalam format text
ASCII
1. Data direkam dalam format BINER
2. Akses/ rekam data harus urut 2. Akses/
rekam data bersifat
acak/sembarang
3. Akses hanya dapat satu arah 3. Akses
dapat langsung dua arah
FILE TEXT
Beberapa perintah yang berkaitan dengan
file text adalah :
1. Assign(f, nf)
Perintah ini berguna untuk mengaitkan suatu
variabel file (f) dengan suatu nama file (nf).
Contoh : Assign(Mhs, ‘B:DataMhs’);
2. Rewrite(F)
Perintah ini berguna untuk membuka file,
sehingga file tersebut telah dikaitkan dengan
variabel file (f) melalui procedure Assign.
Perintah Rewrite akan mempunyai mode akses
REKAM, yaitu file
tersebut dibuka untuk direkamkan data ke dalamnya
Contoh: Rewrite(Mhs);
3. Append(f)
Perintah ini membuka file seperti
rewrite(f), tetapi file yang dibuka HARUS SUDAH
ADA terlebih dahulu. Sedangkan data yang
direkam ke dalamnya akan MENAMBAH
pada data yang telah ada sebelumnya.
Contoh : APPEND(f)
4. Reset(f)
Perintah ini berguna untuk membuka file,
sehingga file tersebut telah dikaitkan dengan
variabel file (f) melalui Assign juga. Perbedaan
dengan Rewrite adalah Mode aksesnya
yaitu Reset mempunyai mode akses BACA.
Reset berarti dibuka untuk dibaca data dari
dalam file tersebut.
5. Writeln(f, data) dan Write(f, data)
Perintah ini berguna untuk
menuliskan/simpan ke dalam file yang nama filenya dikaitkan
ke variabel file f. Perbedaan Writeln dan
Write mempunyai efek yang sama dengan efek
ke layar. Data akan dituliskan ke file
dapat berupa KONSTANTA, EKSPRESI atau
VARIABEL.
Contoh : Assign(f2,’File_A’);
Rewrite(f2);
Write(f2,’Hallo’); Writeln(‘IPTTI’);
X := ‘Selamat Pagi’;
Writeln(f2,x);
6. Readln(f, Var)
Perintah ini berguna untuk membaca data
dari file dengan variabel file f. Data akan
ditampung dalam variabel Var.
Perintah ini berkaitan dengan membuka file
dengan RESET(f).
Contoh : Assign(f2,’DataMhs’);
Reset(f2);
Readln(f2,noMhs,Nama)
7. Close(f)
Peintah ini berguna untuk menutup file
dengan variabel file f.
Contoh : close(f);
8. Eof (f)
Fungsi sebagai boolean yang berarti TRUE
jika pointer baca dari file dengan variabel file
f berada di posisi paling akhir/terakhir
dan bernilai FALSE jika tidak.
Berikut agar lebih jelas lihat contoh
program
Contoh 5.2 :
Program Nilai_Mhs;
Uses Crt;
Var
F : text; {variabel fle}
NoMhs : string[5];
Nama : String[20];
Nilai : real;
Pil : Char;
Procedure RekamData;
Begin
Clrscr;
Assign(f,’Datmhs’);
Rewrite(f); {buka file baru}
Repeat
Writeln(‘KETIK No.Mhs = HABIS jika
selesai’);
Write(‘Nomor Mhs : ‘); Readln(NoMhs);
If NoMhs <> ‘HABIS’ then
begin
Write(‘Nama Mhs : ‘); Readln(Nama);
Write(‘Nilai angka : ‘); Readln(Nilai);
Writeln;
{rekam ke file}
Writeln(f, NoMhs:5, Nama:20, Nilai: 5:2);
End;
Until NoMhs=’HABIS’;
Close(f);
End;
Procedure TambahData;
Begin
Assign(f,’DatMhs’);
Append(f); {buka file untuk ditambah data}
Rekamdata;
End;
Procedure LihatData;
Begin
Assign(f,’DatMhs’);
Reset(f); {buka file untuk diBACA/Dilihat
datanya}
Clrscr;
Writeln(‘Daftar Nilai Siswa’);
Writeln(‘=====================================’);
Writeln(‘No Mhs Nama Nilai ‘);
Writeln(‘=====================================’);
While not eof (f) do
Begin
{baca dari file}
Readln(f,NoMhs, Nama, Nilai);
Writeln(Nomhs: 5, Nama: 20, ‘ ‘,Nilai:
5:2);
End;
Writeln(‘=====================================’);
Readln;
Close(f);
End;
Begin {program inti}
Repeat
Clrscr;
Writeln(‘MENU UTAMA’);
Writeln(‘1. Rekam Data’);
Writeln(‘2. Tambah Data’);
Writeln(‘3. Lihat Data’);
Writeln(‘4. Selesai’);
Write(‘Pilihan proses : ‘); Readln(Pil);
Case pil of
‘1’ : RekamData;
‘2’ : TambahData;
‘3’ : LihatData;
End;
Until Pil=’4’;
End.
Run
MENU UTAMA
1. Rekam Data
2. Tambah Data
3. Lihat Data
4. Selesai
Pilihan proses :
KETIK No.Mhs = HABIS jika selesai
Nomor Mhs : 01
Nama Mhs : Andria
Nilai angka : 80
KETIK No.Mhs = HABIS jika selesai
Nomor Mhs : 02
Nama Mhs : Basuki
Nilai angka : 82
KETIK No.Mhs = HABIS jika selesai
Nomor Mhs : 03
Nama Mhs : RIYAN
Nilai angka : 90
KETIK No.Mhs = HABIS jika selesai
Nomor Mhs : HABIS
Daftar Nilai Siswa
=====================================
No Mhs Nama Nilai
=====================================
01 Andria 80.00
02 Basuki 82.00
03 RIYAN 90.00
=====================================
FILE BERTIPE
Dalam mendeklarasikan variabel file, ada
perbedaan antara file teks dengan file
bertipe yaitu :
Untuk file teks selalu : Var NamaVarFile :
text
Untuk file bertipe : Var NamaVarFile : File Of Tipedata;
Dengan Tipedata dapat berupa integer, real,
char, string atau record.
Contoh deklarasi variabel file dalam file
bertipe adalah :
F : file of Real;
F : file of String[20];
F : file of RecMhs; 􀃆 recMhs merupakan Type data Record
Adapun perintah yang ada dalam file text
maupun file bertipe adalah :
Assign(f,’namfile’);
Rewrite(f);
Reset(f);
Close(f);
Fungsi EOF(f)
File bertipe mempunyai fungsi eof yang
berbeda yaitu :
1. Untuk menulis ke file maka perintah yang
dipakai HANYA : Write(f,NamaVar);
2. Untuk membaca file perintah yang dipakai
HANYA : Read(f,NamaVar);
Disamping itu posisi record yang direkam
dan dibaca dapat ACAK dan dapat DUA ARAH
yaitu REKAM/BACA.
Berikut adalah perintah yang ada pada file
tipe :
1. Seek(f, noRec)
Perintah ini untuk memposisikan pointer
baca pada noRec. Perlu ketahui bahwa
record pertama ada pada posisi 0, record ke
dua ada ada posisi 1 dan seterusnya.
Contoh : Seek (f, 4); Read(f,V);
Hasil : Record 5 akan dibaca, hasilnya
disimpan di variabel V.
Contoh : Seek(f,9); Write(f,V);
Hasil : Isi variabel V direkam di posisi
record 10
2. Truncate(f)
Perintah ini untuk menghapus seluruh record
mulai dari posisi POINTER BACA
berada.
Contoh : seek(f,5); Truncate(f);
Hasil : Seluruh record mulai posisi 5 akan
dihapus dari file.
3. FilePos(f)
Perintah ini untuk mendapatkan pointer
sekarang dari penunjuk file.
Contoh : Seek(f,5); p:=FilePos(F);
Writeln(p);
Hasil : 3 posisi sekarang.
4. FileSize(f)
Berguna untuk mendapatkan cacah record dari
file yang dibuka.
Contoh : Reset(f); n:=FileSize(f);
Hasil : n akan berisi cacah record dari
file dengan varfile f.
Berikut contoh untuk File Record bertipe :
Contoh 5.3 File Beritpe
Uses Crt;
Type
RecSiswa = Record
NoMhs : String[5];
Nama : String[20];
Nilai : Real;
End;
Var
Fsis : File Of RecSiswa;
Siswa : RecSiswa;
Pil : Char;
Procedure RekamBaru;
Begin
Assign(fsis,’Datmhs’);
Rewrite(fsis);
Repeat
Writeln(‘KETIK NoMhs = HABIS jika
selesai’);
Write(‘Nomor Mhs : ‘); Readln(Siswa.NoMhs);
If Siswa.NoMhs <> ‘HABIS’ then
Begin
Write(‘Nama Mhs : ‘); Readln(Siswa.Nama);
Write(‘Nilai Angka : ‘);
Readln(Siswa.Nilai);
{rekam file}
Write(fsis,siswa);
Writeln;
End;
Until Siswa.NoMhs=’HABIS’;
Close(fSis);
End;
Procedure Tambahdata;
Begin
Assign(fSis,’DatMhs’);
Reset(fsis);
Seek(fsis, FileSize(fSis));
RekamBaru;
End;
Procedure BacaSemua;
Var P : Integer;
Begin
Assign(Fsis,’DatMhs’);
Reset(Fsis);
Writeln(‘Daftar Nilai’);
Writeln(‘=========================================’);
Writeln(‘NoMhs Nama Nilai ‘);
Writeln(‘=========================================’);
For P:= 1 to FileSize(fSis) do
Begin
Read(Fsis,Siswa);
With Siswa do
Writeln(NoMhs:5, Nama:20, Nilai:5,2);
End;
Writeln(‘=========================================’);
Readln;
Close(Fsis);
End;
Begin {program inti}
Repeat
Clrscr;
Writeln(‘MENU UTAMA’);
Writeln(‘1. Rekam Baru’);
Writeln(‘2. Tambah Data’);
Writeln(‘3. Lihat Data’);
Writeln(‘4. Selesai’);
Write(‘Pilihan proses : ‘); Readln(Pil);
Case pil of
‘1’ : RekamBaru;
‘2’ : TambahData;
‘3’ : BacaSemua;
End;
Until Pil=’4’;
End.
Run
MENU UTAMA
1. Rekam Baru
2. Tambah Data
3. Lihat Data
4. Selesai
Pilihan proses :
mantull ni min
ReplyDeletesolder infrared