Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
1
CS1023 Pemrograman Komputer
Lecture 23 Sequential File [1]
2
Agenda Definisi Primitif Akses Primitif Penulisan
Pemrosesan Arsip Sekuensial Algoritma Konsolidasi
3
Definisi File Sequensial
Sekumpulan rekaman yang dapat diakses secara berurutan mulai dari rekaman pertama sampai dengan rekaman terakhir Akses dilakukan rekaman demi rekaman secara searah 1 2 3 4 5 EOF Ani 111 Budi 112 Ida 113 Ali 114 Rudi 115 Rek1 Rek2 Rek3 Rek4 Rek5 Mark
4
Keterangan Rekaman terakhir adalah fiktif, sebagai penanda akhir dari arsip, yang sering disebut dengan EOF (end-of-file). Setiap rekaman berisi type dasar atau bentukan yang telah didefinisikan, dan bertipe sama. Arsip sekuensial merupakan hasil dari penulisan yang dilakukan rekaman (record) per rekaman.
5
Deklarasi File Elemen dalam rekaman disebut field.
Cara mendefinisikan file : type rekaman : <…….> namaArsip : SEQFILE of (*) <nama_rek> : rekaman (1) <mark>
6
Cara Akses Setiap rekaman dapat diakses secara berurutan
Akses terdiri dari pembacaan atau penulisan. Perekaman (recording) dapat dilakukan melalui primitif penulisan Pada satu saat, akses pada arsip sekuensial hanya dapat dilakukan satu modus operasi: diakses/dibaca atau ditulis.
7
Primitif Akses [1] ASSIGN : merefer ke nama file fisik
Procedure ASSIGN (Input NamaArsip, NamaFisik) { Arsip sekuensial dengan nama NamaArsip merefer ke file fisik dengan nama NamaFisik I.S. : sembarang F.S.: Arsip dengan NamaArsip pada program siap dipakai } Contoh : F1 adalah variabel untuk file …………………….. Assign ( F1, ‘C:\Coba1.txt’) ……………………
8
Primitif Akses [2] RESET : membuka file untuk dibaca
Procedure Reset (Input NamaArsip) { I.S. : sembarang F.S.: Arsip dengan NamaArsip pada program siap dibaca. } Contoh : F1 adalah variabel untuk file …………………….. Assign ( F1, ‘C:\Coba1.txt’) Reset (F1) ……………………
9
Primitif Akses [3] APPEND: membuka file untuk ditulis / ditambah
Procedure Append (Input NamaArsip) { I.S. : sembarang F.S.: Arsip NamaArsip pada program siap ditambah. } Contoh : F1 adalah variabel untuk file …………………….. Assign ( F1, ‘C:\Coba1.txt’) Append (F1) ……………………
10
Primitif Akses [4] REWRITE: membuat file baru
Procedure Rewrite (Input NamaArsip) { I.S. : sembarang F.S.: Dibuat arsip baru dengan NamaArsip, dan siap ditulis. } Contoh : F1 adalah variabel untuk file …………………….. Assign ( F1, ‘C:\Coba1.txt’) Rewrite (F1) ……………………
11
Primitif Akses [5] CLOSE: menutup & menyimpan perubahan file
Procedure Close (Input NamaArsip) { I.S. : sembarang F.S.: Menyimpan file secara permanen ke media penyimpan } Contoh : F1 adalah variabel untuk file …………………….. Assign ( F1, ‘C:\Coba1.txt’) Close (F1) ……………………
12
Primitif Akses [6] WRITE: menulis data ke file
Procedure Write (Input NamaArsip, Rekaman) { I.S. : sembarang F.S.: Menulis Rekaman ke file } Contoh : F1 adalah variabel untuk file Assign ( F1, ‘C:\Coba1.txt’) Rewrite(F1) Write(F1,Mhs1)
13
Primitif Akses [7] READ: membaca data dari file
Procedure Read (Input NamaArsip, Rekaman) { I.S. : sembarang, file dalam keadaan terbuka F.S.: membaca data dan menyimpan ke variabel Rekaman. } Contoh : F1 adalah variabel untuk file Assign ( F1, ‘C:\Coba1.txt’) Reset(F1) Read(F1,Str1)
14
Primitif Akses [8] RENAME: mengganti nama
Procedure Rename (Input NamaArsip, StringNama) { I.S. : file dalam keadaan tertutup / closed. F.S.: mengganti nama file fisik menjadi StringNama. } Contoh : F1 adalah variabel untuk file Assign ( F1, ‘C:\Coba1.txt’) ……………….. Close(F1) Rename (F1,’C:\Asli.txt’)
15
Primitif Akses [9] ERASE: menghapus file fisik dari media
Procedure Erase (Input NamaFisik) { I.S. : file dalam keadaan tertutup / closed. F.S.: menghilangkan file dengan nama NamaFisik. } Contoh : F1 adalah variabel untuk file Assign ( F1, ‘C:\Coba1.txt’) ……………….. Close(F1) Erase (F1)
16
Pemrosesan Arsip Sekuensial
Jika setiap rekaman harus diproses dengan cara sama, pemrosesan arsip sekuensial dapat dilakukan dengan memakai skema pemrosesan sekuensial dengan mark. Contoh1: sebuah arsip sekuensial type rekaman : < NIM : integer, nilai:integer [0..100] > ArsipMhs: SEQFILE of (*) RekMhs : rekaman (1) < , 99>
17
Contoh Pemrosesan Analisa : pemrosesan sekuensial dari elemen arsip sekuensial Model dengan MARK, jika i adalah deret yang diproses, i berharga 1,2,3..N EOP adalah NIM= First_Elmt : Reset(ArsipMhs) Read(ArsipMhs, RekMhs ) Next_Elmt : READ(ArsipMhs, RekMhs) Proses : membaca arsip sambil menghitung nilai rata-rata mahasiswa
18
Contoh Pembacaan – lanj.
Program Rata2 Kamus type rekaman : <NIM : integer, nilai : integer [0..100]> ArsipMhs :SEQFILE of (*) Rek : rekaman (1) < ,0> Sumnil, JumMhs : integer Algoritma Assign(ArsipMhs,’C:\Coba.txt’) Reset(ArsipMhs) Read(ArsipMhs, Rek) if Rek.NIM= then Output(‘Arsip kosong’) else { Lanjutkan ke hal berikut }
19
Contoh Pembacaan – lanj.
{Else} SumNil 0; JumMhs 0 Repeat SumNil SumNil + Rek.Nilai JumMhs JumMhs + 1 Read(ArsipMhs,Rek) Until (Rek.NIM= ) Output (SumNil / JumMhs) Close(ArsipMhs)
20
Algoritma Konsolidasi
Didefinisikan sebuah sequential file yang terurut, arsip tersebut mengandung kelompok-kelompok data dengan kunci sama yang harus diproses sebagai satu kesatuan. Ada dua model arsip semacam ini : Tanpa separator Dengan separator
21
Tanpa Separator Antar kelompok dibedakan dengan adanya perbedaan kunci
Klas1 Ani 111 Klas1 Budi 112 Klas1 Ida 113 Klas2 Rudi 114 Klas2 Ina 115 Klas3 Andi 116 Klas3 Ita 117 Klas3 Didi 118 Kelompok Klas1 Kelompok Klas2 Kelompok Klas3 Arah Pemrosesan
22
Program Konsolidasi1 { Tanpa kasus penangananan kosong}
{ Input : arsip sequensial terurut } { Proses : memproses per kelompok} { output : hasil proses } Kamus type rekaman : <Kelompok : type, lainnya : type> Arsip :SEQFILE of (*) Rek : rekaman (1) <mark,nilailain> EOP : boolean { true jika mark } procedure Inisialisasi_File { inisialisasi seluruh file } procedure Terminasi_File {Terminasi seluruh file } Katageri : type { sesuai tipe Kelompok } procedure proses_Elemen_I { Proses awal suatu kelompok } procedure Init_Kelompoki { Inisialisasi_Kelompok} procedure proses_kelompok { memproses suatu kelompok } procedure Terminasi_kelompok {Terminasi suatu kelompok}
23
Tanpa kasus kosong- lanj
Algoritma Inisialisasi_File Read(Arsip, Rek) While not EOP do Init_Kelompok Kategori Rek.Kelompok Repeat Proses_kelompok Until ( kategori Rek.Kelompok ) Terminasi_kelompok Terminasi_File
24
Contoh Diketahui sebuah arsip nilai mahasiswa,
Satu mahasiswa dapat mempunyai beberapa buah nilai (karena dalam satu semester mengambil beberapa matakuliah dan setiap mahasiswa tidak sama matakuliahnya). Buat algoritma untuk menghitung nilai rata-rata setiap mahasiswa, dan membuat daftar nilai sederhana, yaitu menuliskan NIM dan nilai rata-rata setiap mahasiswa
25
Contoh -lanj Program Nilai { Tanpa kasus penangananan kosong}
{ Input : arsip sequensial berisi NIM dan Nilai } { Proses : menghitung nilai rata-rata} { output : NIm dan nilai tiap mahasiswa} Kamus type rekaman : <NIM : integer, Nilai : integer [0..100]> Arsip :SEQFILE of (*) RekMhs : rekaman (1) < ,0> KelNIM : integer { Kelompok NIM yang diproses } SumNil : integer { Total nilai tiap NIM } NKuliah : integer { cacah matakuliah }
26
Contoh -lanj Algoritma Assign(Arsip,’C:\Coba.txt’) Reset(Arsip)
Read(Arsip, Rek) While not (Rek.NIM ) do SumNil 0; NKuliah 0 KelNIM Rek.NIM Repeat SumNil Sumnil+Rek.Nilai NKuliah NKuliah + 1 Until ( KelNIM Rek.NIM ) Output(KelNIM,SumNil/NKuliah) Close(Arsip)
27
Dengan kasus kosong Dapat menangani kasus kosong Dilakukan dengan memberikan mekanisme untuk menyaring kasus kosong dan memberikan instruksi jika terjadi kasus kosong Model dengan mark : If (Kelompok = mark ) then Penanganan_kasus_kosong
28
Dengan Separator Ada data yang memisah antar kelompok
Dibuat fungsi Separator(Kelompok), yang akan membuang data separator/pemisah. Misal : data kosong Klas1 Ani 111 Klas1 Budi 112 Klas2 Rudi 114 Klas3 Andi 116 Klas3 Ita 117 Klas3 Didi 118 Separator Separator
29
Algoritma konsolidasi -lanj
Inisialisasi_File Read(Arsip, Rek) If EOP then Penanganan_kasus_kosong else Repeat While not EOP and Separator(Kelompok) do Read(Arsip,Rek) Init_Kelompok While not EOP and not Separator(kelompok) do Proses_Kelompok Terminasi_kelompok Until Rek.Kunci=mark Terminasi_File Close(Arsip)
30
Contoh Diberikan sebuah arsip teks yang dapat diakses sequential huruf per huruf. Hendak dihitung jumlah huruf pada kata yang terpanjang dalam teks tersebut. Diandaikan bahwa teks hanya mengandung huruf dan spasi. Kata adalah sekumpulan huruf yang dipisahkan oleh satu atau beberapa blank.
31
Proses Pembuatan Algoritma
Diberikan sebuah arsip teks yang dapat diakses sequential huruf per huruf. Buat seqfile dg tipe elemen : karakter Hendak dihitung jumlah huruf pada kata yang terpanjang dalam teks tersebut. Buat variabel untuk jumlah huruf & panjang kata maksimum Kata adalah sekumpulan huruf yang dipisahkan oleh satu atau beberapa blank. Teks diakhiri titik. Separator : spasi Mark : Titik
32
Contoh -lanj Program JmlHuruf
{ Menghitung jumlah huruf pd kata terpanjang } Kamus type rekaman : <Karakter : character > Arsip :SEQFILE of (*) Rek : rekaman (1) <‘.’> constant spasi:character = ‘ ‘ JChar : integer { Jumlah karaker pd kata } KataMax : integer { Jumlah huruf pd kata terpanjang }
33
Algoritma Assign(Arsip,’C:\Coba.txt’) Reset(Arsip) Read(Arsip, Karakter) If ( Karakter = ‘.’ ) then Output( ‘Arsip kosong’) else Katamax 0 Repeat while (karakter ‘.’) and (Karakter=blank) do JChar 0; while (Karakter’.’) and (Karakterb;ank) do JChar JChar + 1 if Katamax < JChar then Katamax JChar Until ( Karakter = ‘.’) Output(Katamax) Close(Arsip)
34
latihan Pada file text, cari kata yang memiliki huruf A. Cari juga kata terpanjang yang memiliki huruf A. Cari juga kata yang memiliki huruf A terbanyak. Tampilkan maing-masing kata tersebut. Pada file arsip nilai mhs, cari nilai yang paling besar untuk tiap mahasiswa dan nilai terbesar untuk seluruh mahasiswa. Tampilkan NIM mhs tersebut. Jika ada 10 mahasiswa, tampilkan 3 nilai rata-rata terbaik.
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.