KU1072/Pengenalan Teknologi Informasi B
KU1072/Pengenalan Teknologi Informasi B
T
Tahaahapp TTahuahunnPePertartamamaBerBersamsamaa
Institut Teknologi Bandung
Institut Teknologi Bandung
File Eksternal
File Eksternal
(dalam Bahasa
(dalam Bahasa
Pasc
Pasc
al)
al)
Tim
Tim PePenynyusunusun MatMaterieri
KU
Tujuan
Tujuan
•
• MaMahahasisiswswaa mememamahahamimi kkegegununaaaann fifile le sesebabaggaiai sasarrananaa
pen
penyimpyimpanananan datdata eksta eksternalernal
•
• MaMahahasisiswswaa mememamahahamimi prprimimititifif-p-pririmimititiff dadasasarr dadalalamm
pem
pemrorosessesanan filfile e daldalamam PPascascalal
•
• MaMahahasisiswswaa mememamahahamimi skskemema-a-skskememaa dadasasarr
pe
pemrmrososesesanan sesekukuenensisialal ununtutukk pepembmbacacaaaann dadann pen
Pendahuluan
Pendahuluan
•
• InpInput/ut/OuOutputputt melmelalualuii I/O I/O devdevicice:e:
–
– Flow charaFlow character ancter antartaraa proprogragram dengam dengann I/O deviI/O device :ce :
•
• ContohContoh input deinput device: kvice: keyboardeyboard •
• ContohContoh output devioutput device: monitor/lace: monitor/layaryar
•
• I/O mI/O melalelaluiui devidevice berce bersifsifatat semesementntaraara: begi: begitutu
pr
progogrram am mamatiti mamakaka dadatata/n/nililaiai akakanan hihilalangng
•
• VVariabariable le dalamdalam proprogragram dam dapatpat menmenyimpyimpanan
dat
data/nia/nilai, lai, tapitapi berbersifsifatat semensementartaraa begbegituitu prprogrogramam ma
Pendahuluan
Pendahuluan
Program TulisNama; Program TulisNama; { { MMeemmbbaaccaa nnaammaa ddaarrii kkeeyybbooaarrd d ddaann mmeennuulliisskkaann kkee llaayyaarr }} { KAMUS } { KAMUS } var var nanamama : s: strtrining;g; { ALGORITMA }
{ ALGORITMA } begin
begin wri
write(te('Tu'Tulisliskankan namnama: a: ');'); readln(nama);
readln(nama); wri
writelteln('n('NamNamamuamu adaadalahlah: ', nama: ', nama);); end. end. Contoh Contoh Variable Variable Contoh Contoh Output Output mel
melalualuii monmonitoitorr Contoh
Contoh Input Input melalu
Pendahuluan
•
Pada banyak kasus dibutuhkan agar nilai
input/output atau nilai variabel disimpan
sehingga masih dapat dipakai walaupun
program selesai
– Untuk itu digunakan file [eksternal]
•
File:
– Bentuk penyimpanan eksternal dalam suatu
media penyimpanan, misalnya harddisk
bentuk penyimpanan sementara (untuk data variable dan I/O) adalah memory
File Teks dan File Biner
• File Teks:
– File yang isinya bisa dibaca dan dibuat langsung dengan
menggunakan editor teks biasa
– Contoh editor teks biasa: notepad, wordpad – Digunakan untuk data bertype character text
• File biner (binary file):
– File yang memiliki format khusus yang hanya bisa dibaca dengan
program khusus
– Contoh: Coba buka file *.pdf dengan editor teks biasa. Apa yang
terlihat?
– Digunakan untuk data bertype selain character: file of integer,
Nama Fisik vs Nama Lojik
•
Dalam program setiap file mempunyai 2
nama:
– Nama fisik : nama file dalam media penyimpanan
Contoh: myfile.txt, mydata.dat
– Nama Lojik : nama variabel yang digunakan untuk
Harddisk
Read/Write File
infile.dat
Program
inf : file of integer; assign(inf,’infile.dat’)
outf : file of integer; assign(outf,’outfile.dat’)
Read file (input)
Write file (output) outfile.dat
nama fisik
Contoh
Program ContohFile;
{ Membaca dan menulis file } { KAMUS }
var
inf : file of integer; outf : file of integer; { ALGORITMA } begin assign(inf, ‘infile.dat’); reset(inf); ... assign(outf, ‘outfile.dat’); rewrite(outf); ... close(inf); close(outf); end.
Contoh Variable untuk membaca input dari file
Contoh Variable untuk menuliskan output ke file
Membuka file untuk membaca input dari file
infile.dat
Membuka file untuk menuliskan output ke file
outfile.dat Menutup file
Pemrosesan File Secara Umum
File Input Membaca
Isi File
Menulis Isi
File File Input Pemrosesan Isi file
Buka File
Baca Isi File
Tutup File
Buka File
Tulis Isi File
Pemrosesan File
•
Assign nama fisik ke nama lojik
•Membuka file
– Membuka file untuk membaca isinya (read only) – Membuka file untuk menulis isinya (rewrite)
•
Membaca isi file
•Menulis isi file
•Menutup file
Assign Nama Fisik ke Nama Lojik
• Meng-assign nama file fisik (nama di penyimpanan)
ke nama lojik (nama variabel)
{ KAMUS }
FILE_NAME : string;
fin : file of integer; { tergantung type file } { ALGORITMA }
begin
FILE_NAME := ‘infile.dat’;
assign(fin, FILE_NAME); { assign variable fin ke file dg nama sesuai FILE_NAME } ...
Membuka File untuk Membaca Isinya
• Mempersiapkan file untuk dibaca (read-only ) • Input dari file ke program
{ KAMUS }
fin : text; { tergantung type file } { ALGORITMA }
begin
assign(fin, ‘infile.txt’);
reset(fin); { menyiapkan file untuk dibaca } ...
Membuka File untuk Menulis Isi File
• Output dari program ke file
• Mempersiapkan file untuk siap ditulis (rewrite)
– Jika file fisik belum ada, file di-create
– Jika file tidak kosong, maka isi yang lama dihapus dan akan
ditimpa dengan isi yang baru
{ KAMUS }
fout : text; { tergantung type file } { ALGORITMA }
begin
assign(fout, ‘outfile.txt’);
rewrite(fout); { menyiapkan file untuk ditulis } ...
Membaca Isi File
• Membaca data dalam file dan menampung isinya ke
suatu variable
– Hati-hati dengan deklarasi variable type harus sesuai dengan isi file
{ KAMUS }
fin : text; { tergantung type file } c1, c2, c3 : char; { ALGORITMA } begin assign(fin, ‘infile.txt’); reset(fin); read(fin,c1); { c1 = ‘H’ } read(fin,c2); { c2 = ‘e’ } read(fin,c3); { c3 = ‘l’ } infile.txt Hello
Menulis File
• Menulis nilai-nilai ke dalam file
{ KAMUS }
fout : file of integer; { tergantung type file } i1, i2, i3 : integer;
{ ALGORITMA } begin assign(fout, ‘outfile.dat’); rewrite(fout); write(fout,11); write(fout,45); write(fout,34); ... end. outfile.dat 11 45 34
cek manual isi outfile.dat (apakah bisa
Menutup File
• Menutup file: file tidak dapat dibaca/ditulis lagi • Jika membuka harus menutup!!
{ KAMUS }
fint : file of integer; { ALGORITMA } begin assign(fint, ‘fileint.dat’); reset(fint); ... close(fint); end.
Biasakan selalu menulis close segera setelah
menulis open!! Kode lain sisipkan di
End of File (EOF)
• Sebuah fungsi yang digunakan untuk menyatakan
bahwa pembacaan isi file sudah mencapai akhir file
lihat kegunaannya pada pembahasan berikutnya
{ KAMUS } ftxt : text; { ALGORITMA } begin assign(ftxt, ‘filetxt.txt’); reset(ftxt); if (EOF(ftxt)) then begin writeln(‘File kosong’); end else ... end.
eof berarti sudah berada di akhir file (artinya sudah tidak
ada yang bisa dibaca dari file)
PEMROSESAN FILE SECARA
SEKUENSIAL
File Sekuensial
• File yang dibaca secara sekuensial dari awal sampai
akhir:
– Tidak ada akses di tengah file
– Akses hanya bisa maju, tidak bisa mundur, atau lompat
• Untuk itu file harus diproses juga secara sekuensial • Data yang tersimpan dalam file memiliki type yang
sama:
Membaca data secara sekuensial
hingga akhir file
• Pada banyak kasus, program diharapkan membaca data
secara sekuensial sampai akhir file, contoh:
– File berisi nilai mahasiswa satu kelas (skala 0 s.d. 100). harus dihitung
rata-rata nilai mahasiswa
– File berisi luas wilayah setiap kecamatan suatu kabupaten. harus
dihitung total wilayah kecamatan untuk mendapatkan luas kabupaten
– File berisi data tinggi badan pasien. harus dicari pasien yang tertinggi
• Banyaknya data yang tersimpan di file tidak bisa diketahui:
Data ke-1 Akses sekuensial:
Dari data ke-1 s.d. ke-n 11
Data ke-n
Contoh: Isi file datakecamatan.dat
4846.92 14837.01 23957.65 5500.03 19540.93 15207.37 9193.97 5456.52 5102.91 4013.63 3599.23 4930.30 4524.83 2536.46 2400.66 4617.57 4155.54 6497.79 4291.79 2461.06 1462.32Data luas kecamatan di Kab. Bandung (2009) dlm. Hektar (diakses dari http://bapeda.bandungkab.go.id/
index2.php?option=com_docman&task=doc_view&gid=79&I temid=37 pada 29 Mei 2013)
... 1572.46 2550.68 4730.26 1834.50 1054.33 1102.91 2781.23 3157.51 3011.95 5308.34
Hitung total luas Kabupaten Bandung
berdasarkan luas kecamatan-kecamatannya!!
Versi-1: Menggunakan While
• Buka File
• Jika belum sampai di akhir file (EOF) proses setiap
record menggunakan while
while Buka File false Terminasi true Tutup File EOF? Proses 1 record Baca 1 record
Versi-1: Tidak ada penanganan khusus terhadap file kosong
10/27/2015 KU1072/Pengantar Teknologi Informasi B 26
Program LuasKabupaten;
{ Membaca isi luas kecamatan dari file dan menjumlahkannya untuk mendapatkan luas kabupaten}
{ KAMUS }
{ ALGORITMA } begin
end. var
fin : file of real;
luas : real; { variable utk luas kec yg sdg dibaca } luaskab : real; { variable utk luas kabupaten total }
assign(fin, ‘datakecamatan.dat’); reset(fin); close(fin); luaskab := 0; { inisialisasi } while (not(EOF(fin))) do begin read(fin,luas);
luaskab := luaskab + luas; end;
writeln(‘Luas wilayah kabupaten Bandung tahun 2009 adalah ‘, luaskab:0:2, ‘ hektar’);
Loop akan berhenti jika menemukan EOF
Versi-2: Menggunakan If-Then-Else &
Repeat-Until
• Buka file
• Periksa apakah sudah di akhir file (EOF)
menggunakan if-else
– Jika true, berikan pesan “File kosong”
– Jika false, proses setiap record menggunakan
Repeat-until Buka File Output “File kosong” false Terminasi true Tutup File EOF? Proses 1 record Baca 1 record false true
Versi-2: File Kosong ditangani secara khusus (diberikan pesan khusus: “File kosong”)
Program LuasKabupaten;
{ Membaca isi luas kecamatan dari file dan menjumlahkannya untuk mendapatkan luas kabupaten}
{ KAMUS }
{ ALGORITMA } begin
var
fin : file of real;
luas : real; { variable utk luas kec yg sdg dibaca } luaskab : real; { variable utk luas kabupaten total }
assign(fin, ‘datakecamatan.dat’); reset(fin); if (EOF(fin)) then
begin
writeln(‘File kosong’); end else { File tidak kosong } begin
luaskab := 0; { inisialisasi } repeat
read(fin,luas);
luaskab := luaskab + luas; until (EOF(fin));
writeln(‘Luas wilayah kabupaten Bandung tahun 2009 adalah ‘, luaskab:0:2, ‘ hektar’);
end;
Pemrosesan khusus jika file
Menulis data ke dalam file
• Contoh:
Menyimpan nilai mahasiswa skala 0 s.d. 100 sampai pengguna mengetik angka -999 (tidak termasuk
Program TulisNilai;
{ Membaca masukan dari keyboard dan simpan ke file } { KAMUS } { ALGORITMA } begin 100 20 12 54 66 67 78 99
Contoh isi file:
var
fout : file of integer; nr : integer; assign(fout, ‘datanilai.dat’); rewrite(fout); close(fout); readln(nr); while (nr <> -999) do begin write(fout,nr); readln(nr); end;
Data dibaca dari keyboard sampai pengguna mengetikkan
Contoh-1
• Apa yang akan tertulis di
layar jika kode di samping dieksekusi?
• Isi file dataku.dat adalah:
Program dataku; { KAMUS }
var
ins : file of integer; sum, num : integer; { ALGORITMA } begin assign(ins,‘dataku.dat’); reset(ins); sum := 0; while (not(EOF(ins))) do begin read(ins, num); sum := sum + num; end; close(ins); 1 2 3 4 5 1 2 3
Contoh-2
• Sebuah program digunakan
untuk mengisi sebuah file of string namakota.txt yang
berisi sekumpulan nama kota di Indonesia. Lihat contoh
daftar nama kota di samping.
• Buatlah program untuk
membaca file tersebut dan menuliskan ke layar seluruh nama kota yang tertulis dalam file itu. Jakarta Bandung Semarang Jogjakarta Medan Ambon Jayapura Palangkaraya Manado Kendari Padang Jambi
Contoh-3
• Diketahui sebuah file of integer mymarks.dat yang
berisi daftar nilai mahasiswa di sebuah mata kuliah.
• Buatlah sebuah program yang membaca nilai-nilai
tersebut dan menghasilkan nilai rata-rata dari semua mahasiswa
• File mungkin kosong. Jika file kosong, maka keluarkan
Contoh-4
• Pak Lurah Ganesha ingin menyimpan data umur
penduduk di kelurahannya supaya suatu saat bisa digunakan untuk berbagai kebutuhan
• Bantulah Pak Lurah untuk membuat sebuah program
yang menyimpan data masukan umur semua
penduduk (umur adalah bilangan bulat) ke dalam suatu file, jika diketahui bahwa jumlah penduduk kelurahan adalah 100 orang.
• Petunjuk: gunakan loop for untuk mengendalikan
Contoh-5a
• Diketahui sebuah file IPK.dat yang berisi daftar IPK
mahasiswa sebuah fakultas/sekolah.
• Buatlah program yang membaca isi file IPK.dat dan
kemudian memindahkan isinya ke file IPK_3.dat hanya IPK mahasiswa yang bernilai 3.00.
• File mungkin kosong. Jika file kosong, maka keluarkan
Contoh-5b
• Bagaimana jika diinginkan data IPK mahasiswa yang
bernilai 3.00 tidak disimpan ke file, melainkan ke
sebuah array?
• Asumsikan data IPK yang akan disimpan tidak lebih
banyak dari 100 buah
• Dengan demikian, selanjutnya akan dilakukan
Contoh-1 : Solusi
• Yang tertulis di layar
adalah: 21
Contoh-2 : Solusi
Program namakota;
{ Menuliskan nama kota dari file namakota.txt dan menampilkannya ke layar }
{ KAMUS }
{ ALGORITMA } begin
var
ins : file of string; kota : string; assign(ins,’namakota.txt’); reset(ins); close(ins); while (not(EOF(ins))) do begin read(ins,kota); writeln(kota); end;
Contoh-3: Solusi
10/27/2015 KU1072/Pengantar Teknologi Informasi B 40
end.
{Membaca isi file sekaligus
menjumlahkan dan menghitung banyaknya bilangan} sum := 0; N := 0; while (not(EOF(f))) do begin read(f,x); sum := sum + x; N := N + 1; end; {Menampilkan ke layar} if (N > 0) then begin writeln(‘Nilai rata-rata = ‘, sum/N);
end else {N = 0, file kosong} begin
writeln(‘File kosong’); end;
{ File: nilairataan.pas } Program nilairataan;
{ Membaca nilai-nilai integer dari file dan menghasilkan rata-rata dari nilai-nilai tersebut. } { KAMUS } { ALGORITMA } begin var f : file of real; x : integer; {bilangan} sum : integer; {jml bil} N : integer; {banyak bil} rata : real; {rata-rata}
assign(f,’mymarks.dat’); reset(f);
Contoh-4:
Solusi
Program UmurPenduduk;
{ Membaca data umur sebanyak jumlah penduduk dan menyimpan ke file } { KAMUS }
{ ALGORITMA } begin
var
fout : file of integer; i,
N, { banyak penduduk }
umur : integer; { masukan umur }
assign(fout,’dataumur.dat’); rewrite(fout); close(fout); N := 100; for i:=1 to N do begin read(umur); write(fout,umur); end.
Contoh-5a: Solusi
end.
if (EOF(infile)) then begin
writeln(‘File kosong’); end else { File tidak kosong } begin end; repeat read(infile,ipk); if (ipk >= 3.00) then begin write(outfile,ipk); end; until (EOF(infile)); Program DataIPKFile;
{ Membaca data IPK dari sebuah file dan menyimpan IPK >= 3.00 ke file lain }
{ KAMUS }
{ ALGORITMA } begin
var
infile : file of real; outfile : file of real; ipk : real; assign(infile,’IPK.dat’); reset(infile); assign(outfile,’IPK_3.dat’); rewrite(outfile); close(outfile); close(infile);