Anda di halaman 1dari 6

Arsip Beruntun

• Informasi yang direkam di dalam arsip


• Informasi yang disimpan di dalam media penyimpan disebut rekaman (record).
sekunder dikelompokkan dalam bentuk arsip (file).
• Suatu arsip merupakan organisasi dari sejumlah • Metode pengorganisasian rekaman dalam
rekaman. Masing-masing rekaman dapat terdiri dari satu pengarsipan dibedakan sebagai berikut:
atau beberapa field dan setiap field dapat terdiri dari satu
atau beberapa byte. 1. arsip beruntun (sequential file);
• Informasi yang disimpan oleh satu buah arsip atau lebih
berkategori sama. Contohnya data mahasiswa disimpan 2. arsip acak (random file);
dalam arsip mahasiswa, data nilai mahasiswa disimpan
dalam arsip nilai mahasiswa, data buku komputer 3. arsip berindeks (indexed file;
disimpan dalam arsip buku komputer, dll.
• Catatan nama setiap arsip harus unik (tidak boleh 4. dll.
sama).

Kamis, 25 Mei 2006 Algoritma dan Pemrograman II 1 Kamis, 25 Mei 2006 Algoritma dan Pemrograman II 2

Definisi Arsip Beruntun Contoh Arsip Beruntun


• Arsip beruntun adalah sekumpulan rekaman yang Arsip mahasiswa yang berisi NIM, Nama dan IPK.
disimpan di dalam penyimpanan sekunder komputer,
yang dapat diakses secara beruntun mulai dari rekaman type DataMhs : record <NIM : integer, Nama : string, IPK : real>
pertama sampai dengan rekaman terakhir, rekaman type ArsipMhs : SeqFile of DataMhs and MARK =
demi rekaman secara searah. <99999999999,'.',0.00>
MHS : ArsipMhs
• Karena komputer "tidak mengetahui" akhir arsip, maka di • 08053110001 Abdullah 3.10
dalam arsip beruntun ditambahkan rekaman fiktif yang • 08053110021 Fidha Rozak 2.87
berfungsi sebagai "tanda" bahwa akhir arsip sudah
• 08053110029 Sumiati 3.65
tercapai sehingga pembacaan rekaman dihentikan.
Rekaman fiktif ditambahkan sesudah rekaman terakhir. • 08053110030 Mila Rossa 2.21
• 99999999999 . 0.00

• Setiap rekaman boleh bertipe dasar maupun tipe


terstruktur yang telah didefinisikan.
Kamis, 25 Mei 2006 Algoritma dan Pemrograman II 3 Kamis, 25 Mei 2006 Algoritma dan Pemrograman II 4

1
Perintah Dasar Arsip Beruntun Dalam program bahasa C/C++
Prototype fungsi fopen() ada di header fungsi “stdio.h”

Bentuk umum :
1. OPEN FILE *fopen(char *namafile, char *mode);
Sebelum arsip dapat diakses (dibaca atau ditulis) mula-mula arsip haruslah diaktifkan terlebih
dahulu. Untuk keperluan ini fungsi yang digunakan OPEN. Keterangan :
Fungsi OPEN adalah membuka arsip beruntun untuk siap dibaca. Pointer pembacaan menunjuk namafile adalah nama dari file yang akan dibuka/diaktifkan.
ke rekaman pertama.
mode adalah jenis operasi file yang akan dilakukan terhadap file.
Prosedur OPEN
Jenis-jenis operasi file :
procedure OPEN (input NamaArsip : ArsipBeruntun, Output NamaRek : Rekaman)
r : menyatakan file hanya dapat dibaca (file harus sudah ada).
{Membuka arsip beruntun NamaArsip untuk siap dibaca
w : menyatakan file baru akan dibuat/diciptakan (file yang sudah ada akan dihapus).
K.Awal : Sembarang
a : untuk membuka file yang sudah ada dan akan dilakukan proses penambahan data (jika file belum
K.Akhir : NamaRek berisi nilai rekaman pertama} ada, otomatis akan dibuat).
r+ : untuk membuka file yang sudah ada dan akan dilakukan proses pembacaan dan penulisan.
Contoh: w+ : untuk membuka file dengan tujuan untuk pembacaan atau penulisan.
OPEN (MHS, RekMhs){MHS = nama arsip, RekMhs bertipe DataMhs} Jika file sudah ada, isinya akan dihapus.
a+ : untuk membuka file, dengan operasi yang akan dilakukan berupa perekaman maupun
Bila arsip yang dibuka berisi rekaman seperti contoh di atas, maka kedua perintah OPEN di atas pembacaan.
menyebabkan: Jika file sudah ada, isinya akan dihapus.

RekMhs berisi <08053110001, Abdullah, 3.10> Contoh :

pf = fopen(“COBA.TXT”, “w”);

Kamis, 25 Mei 2006 Algoritma dan Pemrograman II 5 Kamis, 25 Mei 2006 Algoritma dan Pemrograman II 6

2. READ 3. REWRITE
Fungsinya membaca rekaman yang sekarang sedang ditunjuk oleh pointer
pembacaan.
Fungsinya menyiapkan arsip untuk perekaman.
procedure READ(input NamaArsip : ArsipBeruntun,output NamaRek :
Rekaman) procedure REWRITE(input NamaArsip :
{ membaca rekaman yang sekarang sedang ditunjuk oleh pointer pembacaan
dari arsip yang bernama NamaArsip. ArsipBeruntun)
K.Awal : -
K.Akhir : NamaRek berisi nilai rekaman yang sedang ditunjuk oleh pointer { Menyiapkan arsip NamaArsip untuk ditulisi
pembacaan.
pointer pembacaan menunjuk ke awal rekaman berikutnya.} K.Awal : -
READ (MHS,RekMhs) K.Akhir : pointer penulisan menunjuk ke awal arsip
Jika pointer pembacaan menunjuk ke awal rekaman kedua dari contoh di atas, NamaArsip, siap untuk menulis rekaman}
maka perintah READ menyebabkan:
RekMhs berisi <08053110021,Fidha Rozak,2.87>
setelah perintah READ di atas, pointer pembacaan sekarang menunjuk ke awal
rekaman ketiga dan siap untuk membaca rekaman ketiga itu. REWRITE(MHS)

Kamis, 25 Mei 2006 Algoritma dan Pemrograman II 7 Kamis, 25 Mei 2006 Algoritma dan Pemrograman II 8

2
4. WRITE 5. CLOSE
Fungsinya menulis rekaman ke dalam arsip beruntun.
Fungsinya menutup arsip yang telah dibuka
procedure WRITE(input NamaArsip : ArsipBeruntun,output NamaRek :
Rekaman)
untuk pembacaan atau dibuka untuk
{ menulis NamaRek ke arsip yang namanya NamaArsip. perekaman.
K.Awal : pointer penulisan sudah berada pada posisi siap merekam
K.Akhir : NamaRek tertulis ke dalam arsip NamaArsip. Pointer penulisan maju
satu posisi.}
procedure CLOSE(input NamaArsip :
WRITE(MHS,<08053110033,'Ariel Peterpan',1.99>) ArsipBeruntun)
Catatan: Arsip yang dibuka untuk pembacaan (dengan perintah OPEN) tidak { menutup arsip yang telah dibuka.
dapat digunakan untuk perekaman. Demikian juga sebaliknya, arsip yang
dibuka untuk perekaman (dengan perintah REWRITE) tidak dapat dibaca. K.Awal : Sembarang
Operasi baca dan tulis tidak dapat dilakukan sekaligus pada arsip beruntun.
K.Akhir : Arsip NamaArsip telah ditutup, tidak
Cara mengakhiri arsip dengan MARK:
WRITE (MHS,<99999999999,'.',0.00>)
dapat diproses lagi.}

Kamis, 25 Mei 2006 Algoritma dan Pemrograman II 9 Kamis, 25 Mei 2006 Algoritma dan Pemrograman II 10

Skema pemrosesan beruntun


Skema Pemrosesan Beruntun untuk Arsip beruntun tanpa penanganan kasus kosong

1. Skema pemrosesan beruntun dengan penanganan kasus kosong

PEMROSESANBERUNTUN1 PEMROSESANBERUNTUN2

KAMUS KAMUS
type Rekaman : record <deklarasi nama field dan tipenya>
type ArsipBeruntun : SeqFile of Rekaman and MARK = <rekaman fiktif> type Rekaman : record <deklarasi nama field dan tipenya>
NamaArsip : ArsipBeruntun type ArsipBeruntun : SeqFile of Rekaman and MARK = <rekaman fiktif>
NamaRek : Rekaman NamaArsip : ArsipBeruntun
ALGORITMA NamaRek : Rekaman
OPEN(NamaArsip, NamaRek)
if NamaRek = MARK then ALGORITMA
output(‘Arsip kosong’)
else Inisialisai
Inisialisasi OPEN(NamaArsip, NamaRek)
repeat while (NamaRek ≠ MARK) do
Proses(NamaRek)
READ(NamaArsip, NamaRek) Proses(NamaRek)
until NamaRek = MARK READ(NamaArsip, NamaRek)
Terminasi endwhile
Endif
CLOSE(NamaArsip) Terminasi
CLOSE(NamaArsip)

Kamis, 25 Mei 2006 Algoritma dan Pemrograman II 11 Kamis, 25 Mei 2006 Algoritma dan Pemrograman II 12

3
Penggabungan dua buah arsip dengan
Penggabungan Arsip Penyambungan
Penggabungan arsip (merging) dilakukan untuk Misalkan diberikan dua buah arsip bilangan bulat, yang
menggabungkan rekaman yang disimpan di pertama bernama Bil1 dan yang kedua bernama Bil2.
dalam dua buah arsip berbeda. Hasil Arsip Bil1:
penggabungan disimpan pada sebuah arsip 1. 123 23 32 12 213 9999
baru. Arsip Bil2:
Penggabungan dapat dilakukan untuk arsip terurut 2. 45 54 13 9999
dan arsip belum terurut. Maka arsip Bil3 berisi hasil penyambungan arsip Bil1
dengan arsip Bil2. Rekaman Bil2 ditambahkan setelah
Cara penggabungan yang paling sederhana rekaman Bil1.
adalah penggabungan yang dilakukan dengan Arsip Bil3:
menambah rekaman arsip yang kedua setelah 3. 123 23 32 12 213 45 54 13 9999
rekaman terakhir arsip pertama.
Kamis, 25 Mei 2006 Algoritma dan Pemrograman II 13 Kamis, 25 Mei 2006 Algoritma dan Pemrograman II 14

KAMUS ALGORITMA

type BilBulat : integer REWRITE(Bil3)


type ArispBIL : SeqFile of BilBulat and MARK = OPEN(Bil1,I)
while (I ≠ 9999) do
<9999> WRITE(Bil3, I)
Bil1, Bil2, Bil3 : ArsipBil READ(Bil1,I)
endwhile
procedure PenyambunganArsip1 OPEN(Bil2,I)
{K.Awal : arsip Bil1 atau Bil2 mungkin kosong while (I ≠ 9999) do
WRITE(Bil3, I)
K.Akhir: arsip Bil3 berisi hasil penggabungan Bil1 READ(Bil2,I)
dan Bil2} endwhile
WRITE(Bil3, <9999>)
CLOSE(Bil1)
KAMUS LOKAL CLOSE(Bil2)
CLOSE(Bil3)
I : BilBulat
Kamis, 25 Mei 2006 Algoritma dan Pemrograman II 15 Kamis, 25 Mei 2006 Algoritma dan Pemrograman II 16

4
Penggabungan Dua Arsip Terurut Penggabungan arsip secara terurut ada 2
versi:
Misalkan arsip pertama dan arsip kedua sudah terurut
menaik dan akan digabungkan juga terurut menaik.
1. Versi AND
Arsip Bil1:
2. Versi OR
1. 12 23 32 123 213 9999

Arsip Bil2:
2. 13 45 54 9999

Arsip Bil3:
3. 12 13 23 32 45 54 123 213 9999
Kamis, 25 Mei 2006 Algoritma dan Pemrograman II 17 Kamis, 25 Mei 2006 Algoritma dan Pemrograman II 18

while (Angka1 ≠ 9999) AND (Angka2 ≠ 9999) do


Versi AND if (Angka1 ≤ Angka2) then
WRITE(Bil3, Angka1)
READ(Bil1, Angka1)
else
procedure GabungArsipVersiAND WRITE(Bil3, Angka2)
{K.Awal : arsip Bil1 atau Bil2 mungkin kosong. Jika tidak kosong berisi READ(Bil2, Angka2)
rekaman yang terurut menaik. endif
endwhile
K.Akhir: arsip Bil3 berisi hasil penggabungan Bil1 dan Bil2 dan
rekamannya terurut menaik. Jika kedua arsip masukan kosong, while (Angka1 ≠ 9999) do
maka arsip Bil3 kosong. } WRITE(Bil3, Angka1)
READ(Bil1, Angka1)
endwhile
KAMUS LOKAL
Angka1, Angka2 : BilBulat while (Angka2 ≠ 9999) do
WRITE(Bil3, Angka2)
READ(Bil2, Angka2)
ALGORITMA endwhile
OPEN(Bil1, Angka1)
WRITE( Bil3, <9999>)
OPEN(Bil2, Angka2) CLOSE(Bil1)
REWRITE(Bil3) CLOSE(Bil2)
CLOSE(Bil3)

Kamis, 25 Mei 2006 Algoritma dan Pemrograman II 19 Kamis, 25 Mei 2006 Algoritma dan Pemrograman II 20

5
Versi OR Pemutakhiran Arsip
procedure GabungArsipVersiAND
{K.Awal : arsip Bil1 atau Bil2 mungkin kosong. Jika tidak kosong berisi rekaman yang terurut menaik.
K.Akhir: arsip Bil3 berisi hasil penggabungan Bil1 dan Bil2 dan rekamannya terurut menaik. Jika kedua arsip masukan
kosong, maka arsip Bil3 kosong. } Pemutakhiran (updating) adalah proses yang
KAMUS LOKAL
Angka1, Angka2 : BilBulat
dilakukan untuk mengubah atau meremajakan
ALGORITMA
OPEN(Bil1, Angka1)
rekaman arsip induk (master file). Peremajaan
OPEN(Bil2, Angka2)
REWRITE(Bil3)
rekaman arsip dapat dilakukan dengan data
while (Angka1 ≠ 9999) OR (Angka2 ≠ 9999) do
if (Angka1 ≤ Angka2) then
rekaman yang baru diketik dari papan ketik atau
WRITE(Bil3, Angka1)
READ(Bil1, Angka1)
dibaca dari arsip transaksi. Satu rekaman pada
else
WRITE(Bil3, Angka2)
arsip yang diremajakan (arsip induk) dapat
READ(Bil2, Angka2)
endif mengalami beberapa kali perubahan atau
endwhile
peremajaan. Peremajaan langsung dilakukan
WRITE( Bil3, <9999>)
CLOSE(Bil1) terhadap arsip master.
CLOSE(Bil2)
CLOSE(Bil3)

Kamis, 25 Mei 2006 Algoritma dan Pemrograman II 21 Kamis, 25 Mei 2006 Algoritma dan Pemrograman II 22

procedure PemutakhiranArsip if (M.NIM = NimB) then


{ Meremajakan rekaman pada arsip MAST output(M.NIM, M.NAMA, M.TGL_LAHIR, M.ALAMAT, M.TELEPON)
K.Awal : Arsip MAST terdefinisi, terurut menaik. input(AlamatB)
K.Akhir : field dari rekaman tertentu pada arsip MAST dimutakhirkan dan data tetap terurut.} M.ALAMAT ← AlamatB
WRITE(TEMP, M)
Kamus Lokal READ(MASK, M)
M : dataMhs else
NimB, AlamatB : string output(NimB,’ tidak ada pada arsip master’)
endif
Algoritma while (M ≠ MARK) do
WRITE(TEMP, M)
OPEN(MAST, M) READ(MASK, M)
if (M = MARK) then endwhile
output(‘Arsip kosong’) CLOSE(MASK)
else CLOSE(TEMP)
output(‘Ketikan NIM alamat yang akan OPEN(TEMP, M)
diubah’) REWRITE(MAST)
input(NimB) while (M ≠ MARK) do
REWRITE(TEMP) WRITE(MASK, M)
while (M.NIM < NimB) and (M ≠ MARK) do READ(TEMP, M)
WRITE(TEMP, M) endwhile
READ(MAST, M) WRITE(MAST, <‘#’, ’#’, ‘#’, ‘#’,’#’>)
endwhile CLOSE(TEMP)
CLOSE(MASTER)

Kamis, 25 Mei 2006 Algoritma dan Pemrograman II 23 Kamis, 25 Mei 2006 Algoritma dan Pemrograman II 24

Anda mungkin juga menyukai