sequential file

16
INSTITUT TEKNOLOGI TELKOM BAB 12. SEQUENTIAL FILE 1. Pada pemrosesan arsip sekuensial, perintah procedure RESET (Input NamaArsip) berarti: A. Arsip sekuensial dibuka, namun tidak dapat diakses maupun ditulisi. B. Arsip sekuensial siap dibaca. Rekaman pertama yang informasinya ada pada <rekaman> dapat diakses. C. Data pada <rekaman> direkam pada posisi aktual arsip. Kemudian posisi diajukan satu. D. Arsip sekuensial siap untuk direkam. E. Arsip sekuensial siap dibaca dan ditulis Jawab : B. Arsip sekuensial siap dibaca. Rekaman pertama yang informasinya ada pada <rekaman> dapat diakses Pembahasan : Prosedur RESET digunakan untuk membuka file yang akan dibaca. Setelah prosedur RESET dipanggil, maka data pertama pada record dapat mulai diakses. 2. Perhatikan program berikut: Program AyoTebak Kamus: type rekaman : < NIM : integer, tahun_lahir:integer[1980..1990] > ArsipMhs : SEQFILE of (*) RekMhs : rekaman { setiap mahasiswa punya 1 rekaman } (1) <9999999, val> Sum : integer JumMhs: integer Algoritma : OPEN(ArsipMhs, RekMhs) {First_Elmt} if RekMhs.NIM =9999999 then output ('Arsip kosong') else SumNil 0 { Inisialisasi } JumMhs 0 { Inisialisasi } repeat Sum Sum + (2007-

Upload: tommy-darmadi

Post on 03-Jan-2016

26 views

Category:

Documents


2 download

DESCRIPTION

Kumpulan soal dan pembahasan sequential file

TRANSCRIPT

Page 1: Sequential File

INSTITUT TEKNOLOGI TELKOM

BAB 12. SEQUENTIAL FILE

1. Pada pemrosesan arsip sekuensial, perintah procedure RESET (Input NamaArsip) berarti: A. Arsip sekuensial dibuka, namun tidak dapat diakses maupun ditulisi.B. Arsip sekuensial siap dibaca. Rekaman pertama yang informasinya ada pada

<rekaman> dapat diakses.C. Data pada <rekaman> direkam pada posisi aktual arsip. Kemudian posisi diajukan

satu.D. Arsip sekuensial siap untuk direkam.E. Arsip sekuensial siap dibaca dan ditulis

Jawab : B. Arsip sekuensial siap dibaca. Rekaman pertama yang informasinya ada pada<rekaman> dapat diaksesPembahasan :Prosedur RESET digunakan untuk membuka file yang akan dibaca. Setelah prosedur RESETdipanggil, maka data pertama pada record dapat mulai diakses.

2. Perhatikan program berikut:

Program AyoTebak

Kamus:type rekaman : < NIM : integer, tahun_lahir:integer[1980..1990] > ArsipMhs : SEQFILE of(*) RekMhs : rekaman { setiap mahasiswa punya 1 rekaman } (1) <9999999, val>Sum : integerJumMhs: integer

Algoritma :OPEN(ArsipMhs, RekMhs) {First_Elmt}if RekMhs.NIM =9999999 then

output ('Arsip kosong')else

SumNil ← 0 { Inisialisasi }

JumMhs ← 0 { Inisialisasi } repeat

Sum ← Sum + (2007-RekMhs.tahun_lahir) JumMhs ← JumMhs + 1READ(ArsipMhs,RekMhs) {Next_Elmt}

until (RekMhs.NIM=9999999) {EOP} Output (Sum/JumMhs) {Terminasi}CLOSE (ArsipMhs)

TIM ALGORITMA FAKULTAS ELEKTRO DAN KOMUNIKASI 1

Page 2: Sequential File

INSTITUT TEKNOLOGI TELKOM

Program tersebut melakukan operasi…A. Merekam data mahasiswa dan menghitung nilai rata-rata mahasiswa

B. Membaca arsip sambil menghitung rata-rata umurC. Merekam data mahasiswa dan menghitung nilai rata-rata umurD. Membaca arsip sambil menghitung nilai rata-rata mahasiswaE Mengelompokkan setiap kategori dan memrosesnya (konsolidasi)

Jawab : B. Membaca arsip sambil menghitung rata-rata umurPembahasan :Dari pemanggilan prosedur READ(ArsipMhs,RekMhs), kita dapat menyimpulkan bahwa program akan membaca file ArsipMhs.Kemudian dari statement:

Sum ← Sum + (2007-RekMhs.tahun_lahir)

JumMhs ← JumMhs + 1Sum/JumMhskita dapat menyimpulkan bahwa program akan menghitung nilai rata-rata umur mahasiswa.

3. Urutkan baris program/ instruksi di bawah ini agar menjadi suatu deklarasi file bertipe rekaman/record , dengan record yang terdiri dari 3 elemen bertipe string. Diperlukan juga sebuah variabel bertipe record, dua variabel integer.

1 Program File;2 A1,a2,a3:string;3 x,y : integer;4 Var Fabc : file of abc;5 End;6 Type Abc : Record7 Vabc : abc;

A. 1,6,2,5,4,7,3 D. 1,4,3,7,6,2,5B. 1,6,7,2,4,3,5 E. 1,6,7,3,4,2,5C. 1,4,7,3,5,6,2

Jawab : A. 1, 6, 2, 5, 4, 7, 3Pembahasan :

• Setiap program pasti diawali oleh deklarasi nama program, yaitu statement pada baris ke-1.

• Karena akan digunakan file bertipe rekaman/record, maka statement berikutnya adalah pendefinisian nama tipe record yang akan dipakai. Pendefinisian ini mencakup pendefinisian nama tipe dan pendefinisian field-field yang ada di dalam record.

• Pendefinisian nama tipe ada di baris ke-6, dan pendefinisian field-fieldnya ada di baris ke-2.

• Pendefinisian diakhiri dengan statement end; (baris ke-5).

• Selanjutnya adalah pendeklarasian variabel, mulai dari baris ke-4 (yang menggunakan keyword Var). Dilanjutkan dengan baris ke-7 dan ke-3 (dapat ditukar urutannya).

Jadi urutan baris yang seharusnya adalah 1, 6, 2, 5, 4, 7, 3

TIM ALGORITMA FAKULTAS ELEKTRO DAN KOMUNIKASI 2

Page 3: Sequential File

INSTITUT TEKNOLOGI TELKOM

4. Diinginkan untuk meng-copy dari file F1 ke file F2. F2 adalah file baru.Assign(F1,’c:\abc\abc1.dat’); {File asal } Assign(F2,’c:\abc\abc2.dat’); { File hasil copy } Reset(F1);………………(F2);while not eof(F1) do begin………………………(……, XXX); { baca file F1}………………………(……, ………);end;Close(F1); Close(F2); End;

Isi titik-titik diatas dengan instruksi-instruksi di bawah : A. Reset ; Write; F1; Write; F2; XXXB. Rewrite; Read; F1;Rewrite; F2; XXX C. Append; Read; F1; Rewrite; F2; XXX D. Reset; Read; F1; Write; F2; XXXE. Rewrite; Read; F1; Write; F2; XXX

Jawab : E. Pembahasan :Prinsip algoritma untuk mengcopy file F1 ke file F2 adalah: baca file F1, lalu tulis ke file F2. Langkah-langkahnya adalah sebagai berikut.

1) Siapkan variabel file yang akan merefer ke file fisik yang akan dibaca dan ditulis.Prosedur yang digunakan adalah prosedur Assign (baris ke-1 dan ke-2).File fisik yang akan dibaca adalah ’c:\abc\abc1.dat’, variabel file yang digunakan adalahF1.File fisik yang akan ditulis adalah ’c:\abc\abc2.dat’, variabel file yang digunakan adalahF2.

2) Buka file F1 untuk dibaca.Prosedur yang digunakan adalah Reset.

3) Buka file F2 untuk ditulis.Prosedur yang digunakan adalah Rewrite.

4) Lakukan proses mengcopy file, dalam bentuk looping. Proses yang dilakukan di dalam looping adalah baca file F1, lalu tulis ke file F2.Untuk membaca file F1, gunakan prosedur Read(F1, XXX). Untuk menulis ke file F2, gunakan prosedur Write(F2, XXX).

5) Setelah selesai, tutup file F1 dan F2. Prosedur yang digunakan adalah Close.

TIM ALGORITMA FAKULTAS ELEKTRO DAN KOMUNIKASI 3

Page 4: Sequential File

INSTITUT TEKNOLOGI TELKOM

Maka listing programnya menjadi:

Assign(F1,’c:\abc\abc1.dat’); {File asal } Assign(F2,’c:\abc\abc2.dat’); { File hasil copy } Reset(F1);Rewrite(F2);while not eof(F1) do begin

Read(F1, XXX); { baca file F1} Write(F2, XXX);

end;Close(F1); Close(F2); End.

5. Sebuah file F1 dengan tipe record. Nama tipe record adalah Rekaman, yang terdiri dari fieldNama, NIM dan kelas. Tersedia variabel XXX dengan tipe record tersebut. Untuk menuliskan isi Nama dari file tersebut ke layar monitor, digunakan :A. Read(F1,Rekaman);

Write(F1,XXX);B. Read(F1,XXX);

Write(F1,XXX.Nama);C. Read(F1,Rekaman);

Write(Rekaman.Nama);

D. Read(F1,XXX); Write(XXX.Nama);

E. Read(F1,Rekaman); Write(rekaman.Nama);

Jawab : D. Pembahasan :Yang harus dilakukan oleh program untuk menuliskan isi Nama dari file F1 adalah sebagaiberikut.

1) Membaca variabel bertipe record Rekaman dari file F1. Variabel tersebut bernama XXX.Sintaksnya adalah Read[F1, XXX);

2) Menuliskan isi Nama ke layar monitor. Perhatikan bahwa Nama adalah field dari variabel XXX yang bertipe Rekaman. Ketika kita akan mengakses data pada field, maka yang dipanggil adalah variabel bertipe record, bukan nama tipe recordnya. Jadi, sintaksnya adalah Write(XXX.Nama);

6. Perhatikan program berikut ini…

program prog25A (input,output,outfile); {create student file}const outname1 = 'STUDENT4.DAT'; const outname2 = 'STUDENT3.DAT'; const outname3 = 'STUDENT2.DAT'; const outname4 = 'STUDENT1.DAT'; type student = record

name : string[16]; mark : integer; end;

var class : array [1..10] of student;

TIM ALGORITMA FAKULTAS ELEKTRO DAN KOMUNIKASI 4

Page 5: Sequential File

INSTITUT TEKNOLOGI TELKOM

loopcount : integer;i : integer;

outfile : file of student;begin

class[1].name := 'Joe Bloggs '; class[1].mark := 56; class[2].name := 'Bill Anderson '; class[2].mark := 24; class[3].name := 'William Tell '; class[3].mark := 78; class[4].name := 'Bob Crane '; class[4].mark := 23; class[5].name := 'Peter Hall '; class[5].mark := 57; class[6].name := 'Charles French '; class[6].mark := 76; class[7].name := 'Bryan Goldwater '; class[7].mark := 65; class[8].name := 'Stewart Phelps '; class[8].mark := 89; class[9].name := 'Dave Stevens '; class[9].mark := 78; class[10].name := 'Ted Rosse '; class[10].mark := 64;i := 1;assign( outfile, outname3 );rewrite( outfile );for loopcount := 4 to 9 do

write( outfile, class[loopcount] );i := i + 1;close( outfile )

end.

Program di atas menulis ke file dengan nama … A. STUDENT1.DATB. STUDENT2.DAT C. STUDENT3.DAT D. STUDENT4.DAT E. STUDENT5.DAT

Jawab : B. STUDENT2.DATPembahasan :Perhatikan bahwa outfile adalah nama variabel untuk file yang akan digunakan di dalam program (baris ke 13). Kemudian pada baris ke-26, ada statement assign( outfile, outname3 );, yang berarti variabel outfile akan mengacu ke file fisik outname3, sementara pada baris ke-4 telah dideklarasikan bahwa outname3 = 'STUDENT2.DAT';. Jadi, program akan menulis pada file STUDENT2.DAT.

7. Perhatikan program berikut ini ..

program prog25A (input,output,outfile); {create student file}const outname1 = 'STUDENT4.DAT'; const outname2 = 'STUDENT3.DAT'; const outname3 = 'STUDENT2.DAT'; const outname4 = 'STUDENT1.DAT'; type student = record

name : string[16];

TIM ALGORITMA FAKULTAS ELEKTRO DAN KOMUNIKASI 5

Page 6: Sequential File

INSTITUT TEKNOLOGI TELKOM

mark : integer;end;

var class : array [1..10] of student;loopcount : integer;

i : integer;outfile : file of student;

beginclass[1].name := 'Joe Bloggs '; class[1].mark := 56; class[2].name := 'Bill Anderson '; class[2].mark := 24; class[3].name := 'William Tell '; class[3].mark := 78; class[4].name := 'Bob Crane '; class[4].mark := 23; class[5].name := 'Peter Hall '; class[5].mark := 57; class[6].name := 'Charles French '; class[6].mark := 76; class[7].name := 'Bryan Goldwater '; class[7].mark := 65; class[8].name := 'Stewart Phelps '; class[8].mark := 89; class[9].name := 'Dave Stevens '; class[9].mark := 78; class[10].name := 'Ted Rosse '; class[10].mark := 64;i := 1;assign( outfile, outname3 );rewrite( outfile );for loopcount := 4 to 9 do

write( outfile, class[loopcount] );i := i + 1;close( outfile )

end.

Nama mahasiswa yang tidak tertulis ke dalam file adalah: A. Peter HallB. Bob CraneC. Dave StevensD. Ted RosseE. Charles French

Jawab : D. Ted RossePembahasan :Perhatikan statement write( outfile, class[loopcount] );, sementara loopcount dimulai dari nilai4 hingga 9. Berarti yang akan ditulis di file adalah data class[4] hingga class[9]. Jadi yang tidak akan tertulis di dalam file adalah class[1] atau class[2] atau class[3] atau class[10]. Ted Rosse adalah data pada class[10].name.

8. Perhatikan program berikut ini…

program prog25A (input,output,outfile); {create student file}const outname1 = 'STUDENT4.DAT'; const outname2 = 'STUDENT3.DAT'; const outname3 = 'STUDENT2.DAT'; const outname4 = 'STUDENT1.DAT';type student = record

TIM ALGORITMA FAKULTAS ELEKTRO DAN KOMUNIKASI 6

Page 7: Sequential File

INSTITUT TEKNOLOGI TELKOM

name : string[16]; mark : integer; end;

var class : array [1..10] of student;loopcount : integer;

i : integer;outfile : file of student;

beginclass[1].name := 'Joe Bloggs '; class[1].mark := 56; class[2].name := 'Bill Anderson '; class[2].mark := 24; class[3].name := 'William Tell '; class[3].mark := 78; class[4].name := 'Bob Crane '; class[4].mark := 23; class[5].name := 'Peter Hall '; class[5].mark := 57; class[6].name := 'Charles French '; class[6].mark := 76; class[7].name := 'Bryan Goldwater '; class[7].mark := 65; class[8].name := 'Stewart Phelps '; class[8].mark := 89; class[9].name := 'Dave Stevens '; class[9].mark := 78; class[10].name := 'Ted Rosse '; class[10].mark := 64;i := 1;assign( outfile, outname3 );rewrite( outfile );for loopcount := 4 to 9 do

write( outfile, class[loopcount] );i := i + 1;close( outfile )

end.

Nilai i terakhir adalah:A. 1 B. 9 C. 7 D 2 E. 4

Jawab : D. 2Pembahasan :Perhatikan bahwa variabel diinisialisasi dengan nilai 1. Kemudian setelah proses looping for selesai, ada statement i := i + 1; (perhatikan bahwa statement ini di luar looping, bukan di dalam looping, sehingga hanya dieksekusi 1 kali). Jadi, nilai i di akhir program adalah 2.

9. Operasi File Sequential yang mensyaratkan file harus dalam keadaan tertutup (Closed)adalah:

A. Read B. Write C. Rewrite D Rename E. Close

Jawab : D. Rename

10. Urutan operasi yang benar pada suatu file adalah:

A. Assign, reset, read, closeB. Assign, read, reset, close C. Assign, reset, write, close D. Assign, rewrite, read, close

TIM ALGORITMA FAKULTAS ELEKTRO DAN KOMUNIKASI 7

Page 8: Sequential File

INSTITUT TEKNOLOGI TELKOM

E. Assign, read, write, close

Jawab : A. Assign, reset, read, closePembahasan :Operasi-operasi dasar pada Sequential File adalah sebagai berikut.

• Assign : mempersiapkan file untuk dibaca atau ditulis.

• Reset : Mempersiapkan file untuk di baca

• Append : Menambahkan record di akhir file

• Rewrite : Mempersiapkan file untuk ditulis

• Close : Menutup file

• Rename : mengganti nama file

• Erase : menghapus file

Bandung, Desember 2010

TIM ALGORITMA F. ELKO

TIM ALGORITMA FAKULTAS ELEKTRO DAN KOMUNIKASI 8