• Tidak ada hasil yang ditemukan

KU1072 FileEksternal Pascal v251015

N/A
N/A
Protected

Academic year: 2021

Membagikan "KU1072 FileEksternal Pascal v251015"

Copied!
43
0
0

Teks penuh

(1)

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

(2)
(3)

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

(4)

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

(5)

Pendahuluan

Pendahuluan

Program TulisNama; Program TulisNama; { { MMeemmbbaaccaa nnaammaa ddaarrii kkeeyybbooaarrd d ddaann mmeennuulliisskkaann kkee llaayyaarr }} { KAMUS } { KAMUS } var var na

namama : 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

(6)

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

(7)

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,

(8)

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

(9)

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

(10)

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

(11)

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

(12)

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

(13)

 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 } ...

(14)

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 } ...

(15)

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 } ...

(16)

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

(17)

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

(18)

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

(19)

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)

(20)

PEMROSESAN FILE SECARA

SEKUENSIAL

(21)

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:

(22)

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:

(23)

Data ke-1 Akses sekuensial:

Dari data ke-1 s.d. ke-n 11

Data ke-n

(24)

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.32

Data 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!!

(25)

Versi-1: Menggunakan While

• Buka File

• Jika belum sampai di akhir file (EOF)  proses setiap

record menggunakan while

(26)

while Buka File false Terminasi true Tutup File EOF? Proses 1 record Baca 1 record

Versi-1: Tidak ada penanganan khusus terhadap file kosong

(27)

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

(28)

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

(29)

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”)

(30)

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

(31)

Menulis data ke dalam file

• Contoh:

Menyimpan nilai mahasiswa skala 0 s.d. 100 sampai pengguna mengetik angka -999 (tidak termasuk

(32)

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

(33)
(34)

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

(35)

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

(36)

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

(37)

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

(38)

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

(39)

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

(40)

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;

(41)

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);

(42)

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.

(43)

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);

Referensi

Dokumen terkait

Berkenaan dengan program piloting tersebut , jurusan PLB FIP UPI sebagai lembaga pengkajian pengembangan pendidikan inklusif dan sekaligus sebagai mitra Dinas Pendidikan

Berdasarkan rumusan masalah di atas, penelitian ini memiliki tujuan sebagai berikut. 1) Untuk mengetahui apakah keadilan pajak berpengaruh terhadap persepsi

SIMULASI ALIRAN FLUIDA YANG MELEWATI KATUP TEKAN BERBENTUK PLAT DATAR PADA POMPA HIDRAM DENGAN MENGGUNAKAN..

Dengan demikian dapat diketahui jika tingkat kosmopolitan cenderung berpengaruh terhadap tingkat penerapan usahatani padi organik di Kelompok Tani Ngudi Rejeki

Ustaz muhyiddin menjadi salah satu pemrakarsa utama dari pendirian UnnU di Sulawesi Selatan. Peran itu dapat ia lakukan karena didukung oleh pengalamannya sebagai guru dan

Condi+onal  statement:  if   DEPARTEMEN ILMU KOMPUTER INSTITUT PERTANIAN BOGOR kondisi?. statements TRUE

Akan tetapi, daripada kita menghakimi para pemimpin Gereja, barangkali lebih baik bagi kita untuk mempertimbangkan tantangan-tantangan yang dihadapi oleh para pemimpin Gereja

Kabupaten Karanganyar sebagai berikut: (1) Sulitnya akses jaringan internet di desa-desa dikarenakan desa-desa yang terpencil jauh dari jangkauan provider-