arsip beruntunsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/bab-iv...rekaman adalah head. posisi...
TRANSCRIPT
![Page 1: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/1.jpg)
ARSIP BERUNTUN
BAB IV
![Page 2: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/2.jpg)
DEFENISI
Arsip (File) adalah struktur penyimpanan
data didalam memori sekunder seperti
disk
Data disimpan didalam arsip agar
sewaktu-waktu dapat diakses kembali
Setiap item data yang direkam didalam
arsip disebut rekaman (record)
![Page 3: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/3.jpg)
Lanjutan…
Rekaman tersebut diorganisasikan
penyimpanannya
Ada 2 metode pengorganisasian :
Arsip Beruntun (sequential)
Arsip Acak (random) / Direct Access
![Page 4: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/4.jpg)
Arsip Beruntun
Penyimpanan rekaman secara berurutan, rekaman yang satu setelah rekaman yang lainnya
Untuk mengakses data tertentu, program harus mengakses mulai dari rekaman pertama sampai rekaman yang diinginkan
Pengaksesan arsip jenis ini, biasanya sangat lambat, khususnya bila arsip berukuran besar, Namun arsip beruntun mudah dibuat dan dipelihara
![Page 5: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/5.jpg)
Arsip Acak
Rekaman diakses secara langsung, tanpa
memulai dari awal.
Keuntungan jenis arsip ini, pengaksesan
data individual lebih cepat daripada arsip
beruntun, tetapi arsip acak lebih sulit
dibuat dan dipelihara.
![Page 6: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/6.jpg)
Defenisi Arsip Beruntun
Sekumpulan rekaman bertipe sama yang
diakses secara beruntun mulai dari rekaman
pertama sampai rekaman yang terakhir
Rekaman pada arsip beruntun diakses satu
persatu secara searah
Rek 1 Rek2 ….. RekN
Urutan Akses (satu-per Satu)
Rekaman 1 Rekaman 2
![Page 7: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/7.jpg)
Tanda Akhir Arsip Beruntun Pada arsip beruntun akhir file ditandai
dengan menambahkan sebuah rekaman fiktif yang berfungsi sebagai “penanda” akhir arsip.
Bila pembacaan arsip menemui tanda tersebut, maka pemrosesan arsip dihentikan,
Rekaman fiktif tersebut dinamakan “mark” Fungsi mark pada arsip sama dengan fungsi karakter “.”
![Page 8: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/8.jpg)
Pendeklarasian Arsip didalam
Algoritma
Deklarasi
NamaArsip : SeqFile of TipeRekaman
Cara deklarasi arsip beruntun sebagai tipe
bentukan :
type ArsipBeruntun : SeqFile of TipeRekaman
NamaArsip : ArsipBeruntun
![Page 9: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/9.jpg)
Contoh :
Arsip bil berisi sekumpulan bilangan bulat
Deklarasi
bil : seqfile of integer {nama arsip bilangan bulat}
Mendefinisikan arsip bilangan bulat sebagai tipe bentukan
Deklarasi
type ArsipBil : seqfile of integer
bil : ArsipBil
![Page 10: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/10.jpg)
Lanjutan…
Arsip MHS yang berisi data mahasiswa (NIM, Nama, dan IPK)
Deklarasi
Type datamhs : record <NIM : integer,
Nama : string,
IPK : real>
MHS : seqfile of datamhs
Mendefinisikan arsip diatas sebagai tipe baru
tipe arsipmhs : seqfile of datamhs
Mhs : arsipmhs
![Page 11: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/11.jpg)
Arsip KAR yaitu arsip yang berisi data bertipe
karakter. Setiap rekaman bertipe karakter
Deklarasi :
KAR : Seqfile of char ;
![Page 12: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/12.jpg)
Contoh Arsip
1.
2.
3.
359601 ' Adi Purwanto ' 3,82
359604 ' Fitria Handini ' 2,97
359605 ' Dewi Kurniati ' 2,74
359606 ' Andrie Irwansyah ' 3,02
359608 ' Cahyo Kumolo ' 2,05
359610 ' Anton Previanto ' 3,99
999999 x' 9,99
345 78 120 0 26 698 125 237
999
9
'h' 'a' 'I' 'o' 'k' 'a' 'w' 'a' 'n' ' '
![Page 13: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/13.jpg)
Instruksi Baku untuk arsip beruntun
Instruksi baku tersebut berupa prosedur
atau fungsi yang dianggap sudah
tersedia sehingga apat langsung dipakai
tanpa perlu mendefinisikan prototypenya.
Instruksi baku dilakukan dengan
memanggil prosedur yang dimaksud
![Page 14: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/14.jpg)
1. OPEN
Fungsi :
Membuka arsip beruntun untuk siap dibaca / ditulis. Setelah memanggil fungsi ini pointer pembacaan/penulisan akan menunjuk ke awal rekaman pertama
Keterangan :
Piranti keras yang melakukan operasi baca/tulis rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer
![Page 15: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/15.jpg)
Prosedur OPEN
Procedure OPEN( Input NamaArsip :
ArsipBeruntun, Input kode :Integer)
{Membuka arsip beruntun nama arsip siap dibaca/ditulis, kode 1 artinya
dibuka untuk dibaca, kode 2 artinya dibuka untuk direkam }
Contoh :
OPEN (MHS, 1) {Arsip MHS dibuka untuk dibaca}
OPEN (BIL, 2) {Arsip BIL dibuka untuk ditulis}
OPEN (KAR, 1) {Arsip KAR dibuka untuk dibaca}
![Page 16: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/16.jpg)
2. FREAD
Fungsi :
Membaca rekaman yang sekarang sedang
ditunjuk oleh pointer pembacaan.
Contoh :
FREAD (MHS, RekMhs)
FREAD (BIL, I)
FREAD (KAR, ch)
![Page 17: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/17.jpg)
3. FWRITE
Fungsi
Menulis rekaman kedalam arsip beruntun
Procedure FWRITE :
FWRITE (MHS, <456901, “Ida Bagus Adi
Sudewa‟, 4.23>)
FWRITE (BIL,765) {menambah 765 ke arsip BIL}
FWRITE (KAR,‟R‟) {menambah R pada KAR}
![Page 18: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/18.jpg)
4. Close
Fungsi
Menutup arsip yang telah dibuka untuk
pembacaan atau dibuka untuk perekaman
Contoh :
Close (MHS)
Close (BIL)
Close (ArsipKar)
![Page 19: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/19.jpg)
Mark
Fungsi Mark mengembalikan nilai true jika tanda
akhir arsip dicapai atau false jika tidak
Contoh :
Function Mark (input x : integer)
Deklarasi
{tidak ada}
Deskripsi
return (x = 9999)
![Page 20: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/20.jpg)
- Function Mark (input M : DataMhs)
Deklarasi
{tidak ada}
Deskripsi
return (M.nim = 9999 and M.nama = „x‟ and M.IPK = 9.99)
- Function Mark (input c : char)
Deklarasi
{tidak ada}
Deskripsi
return (c = „.‟)
![Page 21: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/21.jpg)
Membuat Arsip Beruntun
Arsip hanya dapat di proses jika sudah
terdefinisi isinya. Langkah-langkah :
1. Menyiapkan arsip untuk perekaman
(gunakan perintah OPEN dengan Kode=2)
2. Membaca file yang direkam
3. Menulis data yang akan direkam ke dalam
arsip (dgn perintah FWRITE)
4. Jika arsip sudah selesai,arsip ditutup
dengan perintah CLOSE
![Page 22: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/22.jpg)
Contoh :
Algoritma IsiArsipBilangan_1
Deklarasi :
BIL : Seqfile of integer
N : integer
k : integer
Deskripsi
OPEN (BIL,2)
read(N)
for k 1 to N do
FWRITE (BIL,k)
endfor
Write (BIL, 9999)
CLOSE (BIL)
![Page 23: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/23.jpg)
Algoritma IsiArsipBilanganBulat_2
Deklarasi :
FINT : Seqfile of integer
N : integer
k : integer
x : integer
Deskripsi
OPEN (FINT,2) { buka arsip FINT untuk perekaman }
read (N)
for k 1 to N do
read (x)
FWRITE (FINT,k)
endfor
Write (FINT, 9999)
CLOSE (FINT)
![Page 24: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/24.jpg)
Membaca Arsip Beruntun
Langkah pertama adalah menyiapkan
arsip untuk pembacaan (OPEN dengan
kode=1)
Langkah kedua ada 2 yaitu :
Menangani arsip kosong secara khusus
Tidak menangani
Pemakaian langkah ke 2 tergantung dari
spesifikasi persoalan
![Page 25: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/25.jpg)
Deklarasi :
BIL : Seqfile of integer
N : integer
x : integer
Function MARK (input x : integer) boolean
{Mengembalikan nilai true jika x adalah rekaman tanda akhir arsip atau false jika tidak}
Deskripsi
OPEN (BIL,1) {buka arsil BIL untuk membaca}
FREAD (BIL,x)
if MARK (x)
write („Arsip kososng”)
else
repeat
WRITE (x)
FREAD(BIL,x)
Until MARK(x)
endif
CLOSE (BIL)
![Page 26: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/26.jpg)
Deklarasi :
BIL : Seqfile of integer
N : integer
x : integer
Function MARK (input x : integer) boolean
{Mengembalikan nilai true jika x adalah rekaman tanda akhir arsip atau false jika tidak}
Deskripsi
OPEN (BIL,1) {buka arsil BIL untuk membaca}
FREAD (BIL,x)
While not MARK (x)
WRITE (x)
FREAD(BIL,x)
endwhile
CLOSE (BIL)
![Page 27: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/27.jpg)
Contoh :
Pengelolaan Arsip pegawai
135001 ' Laila ' ' IIIa ' ' Asisten Ahli ' 1150000
135002 ' Raihan ' ' IIIa ' ' Asisten Ahli ' 1150000
135003 ' Namira ' ' IIIb ' ' Lektor ' 1500000
135004 ' Naila ' ' IIIa ' ' Asisten Ahli ' 1150000
135005 ' Az_zahra ' ' IIIa ' ' Asisten Ahli ' 1150000
135006 ' Nania ' ' IVa ' ' Lektor Kepala ' 1750000
999999 „xxxxxx‟ „xxxxx‟ „xxxx‟, 9999999
NIRP Nama Gol Pangkat Gaji
![Page 28: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/28.jpg)
Contoh Program_rekam_data_pegawai
Deklarasi
Type DataPeg : record < nirp : integer, nama : string, gol : string, pangkat : string, gaji : integer >
Type ArsipPeg : SeqFile of DataPeg
Pegawai : ArsipPeg
Function Mark (input : RekPeg : DataPeg)
Procedure Rekam_data_pegawai
Deklarasi :
KelolaPeg : DataPeg
![Page 29: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/29.jpg)
Deskripsi :
OPEN (pegawai, 2) {buka arsip Pengelolaan untuk perekaman}
read (kelolaPeg.nirp) {baca data nirp pertama, mungkin 9999}
While (kelolaPeg.nirp <>9999)
read (kelolaPeg.Nama)
read (kelolaPeg.gol)
read (kelolaPeg.pangkat)
read (kelolaPeg.gaji)
FWRITE (Pegawai, kelolaPeg) {rekaman kelolapeg kedalam arsip Pegawai)
read (kelolaPeg.nirp)
EndWhile
{kelolapeg.nirp = 99999)
FWRITE (Pegawai, < 999999, „xxxxxx‟, „xxxxx‟, „xxxx‟, 9999999 >
CLOSE (pegawai)
![Page 30: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/30.jpg)
Contoh
Procedure Tampilkan_data_pegawai
Deklarasi :
kelolaPeg : DataPeg
Deskripsi :
OPEN (pegawai, 1)
{buka arsip Pegawai untuk dibaca}
FREAD (kelolaPeg.nirp)
{baca data nirp pertama, mungkin 9999}
While (KelolaPeg.nirp <>
9999)
FREAD (pegawai,
kelolapeg)
Write (‘nirp = ‘)
Write (kelolapeg.nirp)
Write (‘nama = ‘)
Write (kelolapeg.nama)
Write (‘gol = ‘)
Write (kelolapeg.gol)
![Page 31: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/31.jpg)
Write („pangkat = „)
Write (kelolapeg.pangkat)
Write („gaji = „)
Write (kelolapeg.gaji)
FREAD (kelolaPeg.nirp)
End while;
{kelolaPeg.nirp = 9999}
CLOSE (pegawai)
![Page 32: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/32.jpg)
Menyalin Arsip
Menyalin arsip artinya mengkopi arsip ke
arsip lain
Penyalinan dapat dilakukan terhadap
seluruh rekaman atau hanya rekaman
tertentu saja
![Page 33: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/33.jpg)
type DataMhs : record <NIM : integer, Nama : string, IPK : real>
ArsipMhs : SeqFile of DataMhs :
MHSl, MHS2 : ArsipMhs
function MARK (input RekMHS : DataMhs) ->boolean
{ Mengembalikan nilai true jika RekMHS adalah rekaman tanda akhir arsip; atau false jika tidak) .
![Page 34: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/34.jpg)
Menyalin seluruh rekaman di dalam
arsip MHS1 ke arsip baru MHS2
procedure SalinArsip ( Menyalin seluruh isi arsip MHS1 ke arsip MHS2. }
{ K.Awal : sembarang }
( K.Akhir: MHS2 berisi salinan seluruh rekaman dari arsip MHS1 )
DEKLARASI
RekMHS : DataMhs
![Page 35: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/35.jpg)
DESKRIPSI:
OPENIMHS1, 1) { buka arsip MHS1 untuk pembacaan } OPEN(MHS2, 2) { buka arsip MHS2 untuk penulisan } FREAD(MHS1, RekMHS) { baca rekaman pertama, mungkin TANDA }
while (not MARK(RekMHS)) do
FWRITE(MHS2, RekMHS) { salin RekMHS ke arsip MHS2 } FREAD(MHS1, RekMHS) { baca RekMHS dari arsip MHS1 }
endwhile
{ MARK (RekMHS! }
FWRITE(MHS2, <999999, 'X', 99.9>) { tulismark }
CLOSE(MHS1)
CLOSE(MHS2)
![Page 36: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/36.jpg)
Menyalin data mahaiswa yang IPK-nya di
atas 2.0 dari arsip MHS1 arsip baru MHS2 procedure SalinYangLulusSaja
{ Menyalin data mahasiswa yang IPK-nya di atas 2.0. Data mahasis
dibaca dari arsip MHS1. }
{ K.Awal : sembarang }
{ K.Akhir: MHS2 berisi data mahasiswa yang lulus dengan IPK > 2.0. )
DEKLARASI
RekMHS : DataMhs
DESKRIPSI:
OPEN(MHS1, 1) { buka arsip MHS1 untuk pembacaan )\
OPEN(MHS2, 2) { buka arsip MHS2 untuk penulisan }
FREAD(MHS1, RekMHS) { baca rekaman pertama, mungkin TANDA }
![Page 37: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/37.jpg)
while not MARK(RekMHS) do
if RekMHS.IPK > 2.0 then
FWRITE(MHS2, RekMHS)
endif
FREAD(MHS1, RekMHS) { baca rekaman selanjutnya }
endwhile { MARK tRekMHS) }
FWRITE(MHS2, <999999, 'X', 99.9>) { tulismark }
CLOSE(MHS1)
CLOSE(MHS2)
![Page 38: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/38.jpg)
Penggabungan Arsip
Penggabungan dua buah arsip dengan
penyambungan
Menyalin isi dua buah arsip kedalam sebuah
arsip baru. Arsip-arsip yang akan digabung
mungkin belum terurut (berdasarkan field
tertentu) atau mungkin sudah terurut
Cara penggabungannya adalah dengan
penyambungan (concatenation)yaitu menyalin
arsip kedua setelah arsip pertama.
![Page 39: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/39.jpg)
![Page 40: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/40.jpg)
DEKLARASI
type DataMhs : record <NIM : integer, Nama : string, IPK : real>
type ArsipMhs : SeqFile of DataMhs
MHS1, MHS2, MHS3 : ArsipMhs
function MARK(input RekMHS : DataMhs) boolean
{Mengembalikan nilai true jika RekMHS adalah rekaman tanda akhir
arsip; atau false jika tidak}.
![Page 41: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/41.jpg)
Prosedur penggabungan arsip : procedure GabungArsipl
{ Menggabungkan dua buah arsip, MHS1 dan MHS2, menjadi sebuah arsip baru MHS3, dengan cara menyambung isi arsip MHS1 dengan isi arsip MHS2 kedalam arsip MHS3. }
{ K.Awal : sembarang. }
( K.Akhir: arsip MHS3 berisi hasil penggabungan MHS1 dan MHS2 }
DEKLARASI
RekMHS : DataMHS
DESKRIPSI
OPEN(MHS1, 1) { buka arsip MHS1 untuk pembacaan }
OPEN(MHS2, 1) { buka arsip MHS2 untuk pembacaan }
OPEN(MHS3, 2) { buka arsip MHS3 untuk penulisan }
FREAD(MHS1, RekMHS)
![Page 42: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/42.jpg)
( baca rekaman pertama dari MHS1, mungkin mark
while (not MARK(RekMHS} do
FWRITE(MHS3, RekMHS)
FREAD(MHS1, RekMHS)
endwhile { MARK (RekMHS) }
{ Sambung MHS2 setelah MHS1 }
FREAD(MHS2, RekMHS) { baca rekaman pertama dari MHS2, mungkin mark
while (not MARK(RekMHS) do
FWRITE(MHS3, RekMHS)
FREAD(MHS2, RekMHS) endwhile { MARK (RekMHS) }
FWRITEIMHS3, <999999, 'X', 99.9>) { tulis mark }
CLOSE(MHS1)
CLOSE(MHS2)
CLOSE(MHS3)
![Page 43: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/43.jpg)
Penggabungan Arsip
Penggabungan arsip terurut
Cara penggabungan sama seperti
concatenation
![Page 44: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/44.jpg)
Pemutakhiran Arsip
Pemuktakhiran (updating adalah proses yang dilakukan untuk mengubah nilai suatu rekaman didalam arsip. Arsip dimutakhirkan dengan nilai baru yang dibaca dari piranti masukan atau dibaca dari arsip transaksi lain
sebuah arsip beruntun tidak dapat dibaca sekaligus ditulisi. Sebuah arsip hanya dapat dibuka untuk pembacaan saja atau untuk penulisan saja. Jadi, tidak mungkin membaca rekaman di dalam arsip, mengubahnya, dan kemudian menuliskannya kembali ke arsip tersebut.
keterbatasan ini menyebabkan pemutakhiran arsip merupakan proses yang rumit. Pemutakhiran arsip memerlukan dua buah arsip. Satu arsip (arsip master} adalah arsip asaI yang akan dimutakhirkan, dibuka untuk pembacaan. Arsip kedua (arsip temporer), yang dibuka untuk penulisan, berisi rekaman dari arsip lama plus rekaman yang sudah dimutakhlirkan. Jadi, arsip master merupakan arsip masukan, sedangkan arsip temporer merupakan arsip keluaran. Setelah pemutakhiran, isi arsip temporer disalin kembali, ke arsip master.
![Page 45: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/45.jpg)
Deklarasi arsip data mahasiswa
(untuk pemutakhiran) type ArsipMHS record <NIM : integer, Nama : string, IPK : real>
type ArsipMHS : SeqFile of DataMHS
MAST : ArsipMHS { natna arsip master }
TEMP : ArsipMHS { nanta arsip temporer }
function MARK(input RekMHS : DataMhs) boolean { Mengembalikan nilai true jika RekMHS adalah rekaman tanda akhir arsip; atau false jika tidak}.
![Page 46: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/46.jpg)
misalkan arsip MAST menyimpan data mahasiswa (NIM, Nama, IPK) arsip MAST mungkjn kosong.
Jika akan menambah isi arsip MAST(setelah rekaman terakhir) dengan sejumlah data baru yang dibaca dari piranti masukan. Pembacaan data berakhir jika NIM yang dimasukan adalah 9999. Langkah-langkahnya adalah:
(i). buka arsip MASTuntuk pembacaan
(ii) buka arsip TEMP untuk penulisan
(iii) baca seluruh rekaman dari arsip MAST, lalu tuliskan ke arsip
TEMP
(iv) baca data baru dari piranti masukan, tulis ke arsip TEMP
(v) buka arsip TEMP untuk pembacaan
(vi) buka arsip MAST untuk penulisan
(vii) baca seluruh rekaman dari arsip TEMP, lalu tuliskan ke arsip
TEMP
![Page 47: ARSIP BERUNTUNsi.ilkom.unsri.ac.id/wp-content/uploads/2018/11/Bab-IV...rekaman adalah head. Posisi awal rekaman yang ditunjuk oleh head ditunjuk secara logik dengan suatu pointer Prosedur](https://reader030.vdocuments.pub/reader030/viewer/2022021723/5ceb4d9b88c9935a3b8bd866/html5/thumbnails/47.jpg)
procedure TambahDataMahasiswa
{ Menambah sejumlah data baru ke arsip MAST; data dibaca dari piranti masukan, proses penambahan data berhenti jika NIM yang dibaca = 9999 { K.Awal : arsip MAST mungkin kosong. } ( K.Akhir: arsip MAST berisi da,ta plus data yang baru. }
DEKLARASIRekMHS DataMhs
DESKRIPSI:OPEN(MAST, 1) OPEN(TEMP, 2) { buka arsip MAST untuk pembacaan } { buka arsip TEMP untuk penulisan }
{ baca seluruh rekaman dari MAST, tulis ke TEMP }
FREAD(MAST, RekMHS) ( baca rekaman pertama dari MAST, mungkin
while not MARK(RekMHS) do
FWRITE(TEMP, RekMHS)
FREAD(MAST, RekMHS) endwhile { MARK(REkMHS) }
read (RekMHS. NIM) (baca data NIM pertama dari piranti masu
mungkin 9999 } while(RekMHS.NIM * 9999) do {baca data field lainnya}
read(RekMHS.Nama)
read(RekMHS.IPK)
FWRITEIKULIAH, KuliahMHS) {rekam KuliahMHS ke dalam arsip KULItt
read(KuliahMHS.NIM) endwhile { KuliahMHS.NIM = 9999}
FWRITEfKULIAH, <9999999, 99.9>)
CLOSE(KULIAH)