Mesin Abstrak Sequential File Overview Deskripsi Tujuan

advertisement
Overview
Deskripsi
Deskripsi
Tujuan Instruksional
Referensi
Mesin Abstrak
Sequential File
Konsep Record/Struktur dan Pointer
Konsep & Pengelolaan Mesin Abstrak
Konsep & Pengelolaan File Sequential
Studi Kasus
Pertemuan 14-15
Pada materi ini, akan dipelajari tentang
Konsep Record/Struktur dan Pointer
Konsep Mesin Abstrak (Mesin Karakter,
Mesin Integer, Mesin Rekam)
Definisi & Manfaat File terutama
Sequential File
Pengelolaan
Sequential
File
menggunakan Bahasa C/C++
Input Data dalam File
Baca Data dalam File
Jurusan Teknik Informatika
Tujuan Instruksional
XIV/XV - 4
Universitas Widyatama
Jurusan Teknik Informatika
XIV/XV - 3
Universitas Widyatama
Referensi
Mahasiswa diharapkan dapat :
Menjelaskan
pengertian
dan
manfaat
Record/Struktur & Pointer, serta cara
penulisannya dalam program
Menjelaskan pengertian dan manfaat File,
serta cara penulisannya dalam program
Menjelaskan pengelolaan Sequential File
(Input data dan baca data)
Menjelaskan penggunaan Sequential File
(Input data dan baca data) dalam C/C++
Menggunakan Sequential File (Input data dan
baca data) dalam C/C++
Jurusan Teknik Informatika
XIV/XV - 2
Universitas Widyatama
1.
2.
3.
4.
5.
6.
Liem, Inggriani; Diktat Kuliah Algoritma &
Pemrograman Prosedural : Bagian I; Teknik
Informatika, ITB
Hartono,
Jogiyanto,
“Konsep
Dasar
Pemorgraman Bahasa C”. Andi, Yogyakarta,
2000
Hartanto,
Budi,
“Memahami
Logika
Pembuatan Program C Secara Mudah”, Andi,
Yogyakarta, 2004
Yatini B., Indra; Nasution, Erliansyah,
“Algoritma & Struktur Data dengan C++”,
Graha Ilmu,Yogyakarta, 2005
Deitel,
“C
How
To
Program
4thEdition”,Pearson-Prentice Hill, 2004
Solichin, Achmad, “Pemrograman Bahasa C
dengan Turbo C”, IlmuKomputer.com,2003
Jurusan Teknik Informatika
XIV/XV - 5
Konsep Mesin Abstrak
Universitas Widyatama
1
Definisi
Mesin Karakter
Mesin adalah mekanisme yang terdefinisi dan mengerti
serta mampu untuk mengeksekusi aksi-aksi primitif
yang terdefinisi untuk mesin tersebut.
Mesin abstrak adalah mesin yang dianggap ada, dan
diasumsikan mampu melakukan mekanisme yang
didefinisikan untuk mesin tersebut. Mesin abstrak
memodelkan suatu semesta (universe) tertentu.
Mendefinisikan mesin abstrak berarti mendefinisikan:
sekumpulan state yang mungkin
sekumpulan aksi primitif yang diasumsikan dapat
dimengerti
dan
dieksekusi
oleh
mesin
yang
bersangkutan.
Jurusan Teknik Informatika
XIV/XV - 7
Universitas Widyatama
Studi Kasus kasus mesin
karakter
1.
2.
3.
4.
5.
Mesin karakter adalah mesin abstrak yang
terdiri dari :
Pita berisi deret karakter, yang diakhiri dengan
tanda titik (.), dan pita yang hanya berisi titik
disebut sebagai pita kosong.
Tombol START, ADV yang digunakan untuk
mengubah state mesin.
Sebuah lampu EOP (End Of Pita)
“Jendela” yang ukurannya sebesar satu karakter,
memuat karakter dan hanya karakter pada posisi
jendela yang dapat dibaca dan disebut CC
(Current Character), karakter lain tidak kelihatan.
Jurusan Teknik Informatika
XIV/XV - 8
Universitas Widyatama
Mesin
mempunyai
mekanisme untuk mengubah
posisi pita (START dan
ADV) dan menyalakan
lampu EOP jika karakter
yang ada pada jendela
adalah titik. Keadaan dari
mesin setiap saat ditentukan
oleh CC dan lampu EOP.
Mesin
hanya
dapat
dioperasikan jika EOP tidak
menyala.
Jurusan Teknik Informatika
EOP
T
START
ADV
XIV/XV - 9
Universitas Widyatama
Mesin Integer
Mesin rekam adalah mesin abstrak yang terdiri dari :
pita dan tombol READY, REC dan sebuah tombol
MARKER. Mesin ini digunakan untuk merekam pita
karakter yang akan dibaca oleh mesin karakter
Mesin integer adalah mesin abstrak yang terdiri dari
tombol : RESET dan INC. Pada mesin ini juga
terdapat sebuah jendela yang menunjukan sebuah
angka integer yang diingatnya yang disebut CI
(Current Integer). Mesin ini berfungsi sebagai
pencacah bilangan integer
D
0
5
MARKER
RESET
READY
XIV/XV - 10
Universitas Widyatama
Mesin Rekam
Diketahui sebuah pita yang berisi karakter, berapa
jumlah karakter yang terdapat pada pita tersebut
Dari soal nomor 1, berapa jumlah karakter sebagai
huruf vokal yang terdapat pada pita tersebut ?
Kembangkan kasus pada soal nomor 2, untuk
mengetahui berapa jumlah rata-rata kemunculan
karakter sebagai huruf vokal tersebut ?
Misalnya, untuk mencari jumlah kata, kata
terpanjang, jumlah kemunculan setiap huruf
Padukan solusi yang telah saudara buat dengan
memanfaatkan mesin integer pada pembahasan
berikunya
Jurusan Teknik Informatika
Gambaran Mesin Karakter
Jurusan Teknik Informatika
XIV/XV - 11
INC
Setelah tombol RESET
ditekan
REC
Universitas Widyatama
Jurusan Teknik Informatika
RESET
INC
Setelah 5 kali menekan tombol
INC
XIV/XV - 12
Universitas Widyatama
2
Studi kasus mesin integer dan
mesin rekam
1. Dari contoh kasus mesin karakter,
buatlah
algoritma
dengan
memanfaatkan mesin integer !
2. Apabila kita memiliki suatu karakter
yang membentuk kalimat, bagaimana
merekam kalimat tersebut dalam suatu
pita ?
3. Dari soal nomor 2, bagaiman kita
menghitung jumlah kata dalam pita
karakter tersebut ?
Jurusan Teknik Informatika
XIV/XV - 13
Algoritma
Collections of related variables under one
name. Structures may contain variables of
many diferent data types. Structures are
commonly used to defines records to be stored
in files[4]
Pengelompokan dari variable-variable (yang
memungkinkan untuk memiliki tipe data yang
berbeda) yang bernaung dalam satu nama.
Variable-variable yang membentuk suatu
struktur selanjutnya disebut sebagai elemen
atau anggota struktur [1]
Pengelompokan sekumpulan data dengan tipe
yang sama dan/atau berbeda yang saling
terkait dalam satu blok data [2]
Konsep Record / Struktur
Konsep Pointer
Universitas Widyatama
Deklarasi Record/Struktur
Bahasa C/C++
nama_data_struktur : RECORD
tipe_data1 nama_variabel-1;
tipe_data2 nama_variabel-2;
…dst
END RECORD
Definisi Record/Struktur
Jurusan Teknik Informatika
Deklarasi Record/Struktur
KdBarang[7]
NmBarang[25]
Jurusan Teknik Informatika
Ex :
struct{
char KdBarang[7];
char NmBarang[25];
int JmlBarang;
float Harga_Satuan;
} DtBarang;
XIV/XV - 16
Universitas Widyatama
Mengakses Record/Struktur
Ex :
DtBarang
Ex :
DtBarang: RECORD
KdBarang:STRING[7]
NmBarang:STRING[25]
JmlBarang:INTEGER
Harga_Satuan:REAL
END RECORD
Algoritma
Program
JmlBarang
DtBarang.KdBarang[7]
DtBarang.KdBarang[7]
Harga_Satuan
INPUT DtBarang.KdBarang[7]
scanf(“%s”, &DtBarang.KdBarang[7]);
OUTPUT
“Kode
Barang
DtBarang.KdBarang[7]
Jurusan Teknik Informatika
Universitas Widyatama
Dikarenakan struktur terdiri dari lebih dari satu variabel
dengan tipe data yang berbeda, hal ini mengakibatkan
terdapat penanganan khusus untuk mengakses variabel
dalam struktur, yaitu :
nama_data_struktur.nama_variabel-x
Isi Memori untuk pendeklarasian DtBarang
struct{
tipe_data1 nama_variabel-1;
tipe_data2 nama_variabel-2;
…dst
} nama_data_struktur;
XIV/XV - 15
XIV/XV - 17
Universitas Widyatama
Jurusan Teknik Informatika
:
”,
printf(“Kode
Barang
DtBarang.KdBarang[7]);
XIV/XV - 18
:
%s”,
Universitas Widyatama
3
Definisi Pointer
Deklarasi Pointer
Variables whose values are memory
addresses/contains an address of a
variable that contaon a specific value[4]
Suatu Variabel yang berisi alamat lokasi
suatu memori untuk data tertentu [1]
tipe_data *nama_variabel_Pointer;
Ex :
float *Ptr_Nilai;
float Nilai = 12.12;
Ptr_Nilai=&Nilai;
PtrNilai
Nilai
Konsep File
12.12
Lihat file : Pointer.C
Jurusan Teknik Informatika
XIV/XV - 19
Universitas Widyatama
Jurusan Teknik Informatika
Storage of data (all such data not lost when a programs
terminates)[4]
Data yang disimpan pada external memory dan bersifat
permanen [1]
Tempat penyimpanan data dalam disk [2]
Sekumpulan rekaman yang disimpan dalam media
penyimpanan sekunder komputer, yang dapat diakses
secara berurutan mulai dari rekaman pertama sampai
dengan rekaman yang terakhir, rekaman per rekaman
secara searah )sequential) atau secara acak (random).
Rekaman terakhir adalah rekaman fiktif, yang
menandai akhir dari arsip yang disebut sebagai EOF
(End Of File).
XIV/XV - 22
Universitas Widyatama
Jenis File :
[2]
1.Berdasarkan Jenis Data yang disimpan
Definisi File
Jurusan Teknik Informatika
XIV/XV - 20
Universitas Widyatama
File Teks : semua data yang disimpan dalam file
akan diubah menjadi teks
File Biner : semua data yang disimpan dalam file
akan disimpan berdasarkan nilai binernya
Perbedaan
No
Kategori
1
Jenis Penyimpanan
File Teks
File Biner
Teks
Bilangan Biner
Lebih Cepat
2
Kecepatan Akses
Lebih lambat
3
Pengaksesan
Semua program Hanya oleh programmer
pengolah kata
yang mengetahui tipe dari
data yang disimpan
Jurusan Teknik Informatika
XIV/XV - 23
Universitas Widyatama
Jenis File :
2.Berdasarkan Operasi Input/Output
[1]
File berpenyangga (buffered files) atau file arus
(stream file) atau file standar (standards file) :
menggunakan penyangga (buffer) untuk menampung
sementara data yang akan dipindahkan dari memori
internal komputer ke dan/atau dari file. Menyediakan
fasilitas untuk melakukan format data yang akan
dibaca dan/atau dimasukan pada file, sehingga lebih
cocok digunakan untuk operasi input/output pada file
teks.
File tidak berpenyangga (unbuffered files) : tidak
menggunakan penyangga (buffer), sehingga data
langsung dibaca dari dalam file dan/atau dimasukan
ke dalam file. Tidak menyediakan format data khusus ,
sehingga lebih cocok digunakan untuk operasi
input/output pada file biner.
Jurusan Teknik Informatika
XIV/XV - 24
Universitas Widyatama
4
Jenis File :
3.Berdasarkan Cara Pengaksesan
File Sekuensial (Sequential File) : Data dalam
file diakses secara sekuensial/berurutan
mulai dari urutan pertama sampai dengan
akhir file.
File Random (Random File) : Data dalam file
diakses secara random/acak tergantung
kebutuhan.
Jurusan Teknik Informatika
XIV/XV - 25
Insert, delete (nenambah dan menghapus data)
Updating (peremajaan data)
Akan dibahas lebih
Merging (penggabungan file) lanjut di Algoritma &
Pemrograman II
Split (pemisahan data)
Setiap rekaman dapat diakses dan dibaca
menurut urutannya dengan pemanggilan
prosedur yang tersedia, misalnya :
ASSIGN (nama_file, nama_fisik),
OPEN (nama_file,<rekaman>)
READ(nama_file,<rekaman>)
CLOSE(nama_file)
REWRITE(nama_file)
WRITE(nama_file,<rekaman>
XIV/XV - 28
Setiap rekaman boleh berisi type dasar
ataupun
type
terstruktur
yang
telah
didefinisikan.
Setiap rekaman strukturnya sama.
Elemen dari rekaman disebut sebagai Field.
Ada filed atau sekumpulan field rekaman yang
karena kekhususannya dalam proses disebut
sebagai Key
Jika key dari setiap rekaman tidak ada yang
sama (unik), maka key menjadi identitas
rekaman yang disebut sebagai Primary Key.
Pengelolaan File
Universitas Widyatama
Pemanfaatan File Sequential
Jurusan Teknik Informatika
Pendefenisian File Sequential
[4]
Jurusan Teknik Informatika
Pemanfaatan File Sequential
(*) <nama_rek> : rekaman
(1) <mark>
Ex :
Type DtFile :RECORD
NPM:CHAR[8]
Nama_Mhs:CHAR{25]
IPK:REAL
END RECORD
File_NilaiMhs : SEQUENTIAL FILE OF
Jurusan Teknik Informatika
XIV/XV - 29
Universitas Widyatama
Mengaktifkan atau Membuka File (1)
Algoritma
ASSIGN (nama_file, nama_fisik)
Ex : ASSIGN(File_NilaiMhs,”NilaiMhs.Dat”)
OPEN (nama_file,<rekaman>)//baca
Ex : OPEN(File_NilaiMhs,IsiFile)
REWRITE(nama_file)//tulis
Ex : REWRITE(File_NilaiMhs,IsiFile)
Bahasa C/C++ (Header File : stdio.h)
Sintaks :
FILE *Pointer_File; (Buffer untuk file)
Pointer_File=fopen(char *Nama_File, char *Mode) atau
Pointer_File=fopen(”<Nama File>”,”<Mode File>”);
Mode File : r, w, a, t, b, r+, w+, a+, rb, wb, ab, rb+, wb+, ab+
(penjelasan masing-masing fungsi mode file lihat slide 36-37)
ex : FILE *File_NilaiMhs;
File_NilaiMhs=fopen(“NilaiMhs.Dat”,”r”);//baca
File_NilaiMhs=fopen(“NilaiMhs.Dat”,”w”);//tulis
Pendefinisian File :
Type rekaman : <…..>
Nama_arsip : SEQUENTIAL FILE OF
(*) IsiFile : DtFile
(1) EOF : Boolean
Universitas Widyatama
XIV/XV - 27
Universitas Widyatama
Jurusan Teknik Informatika
XIV/XV - 30
Universitas Widyatama
5
Mengaktifkan atau Membuka File (2)
Bahasa C/C++ ( Header File : fstream.h)
Sintaks :
ofstream Pointer_File;atau
(Buffer
ofstream Pointer_File(“<Nama_File>”, <Mode File>); file)
Pointer_File.open(“<Nama_File>”) atau
Pointer_File.open(”<Nama File>”, <Mode File>);
Mode File : ios::app, ios::ate, ios::in, ios::out, ios::nocreate
ios::noreplace, ios::true, ios::binary
ex : ofstream File_NilaiMhs;
File_NilaiMhs.open(“NilaiMhs.Dat”,ios::app); atau
File_NilaiMhs.open(“NilaiMhs.Dat”,ios::app | ios::out);
Catt: Coba cari fungsi dari mode file di atas !!!
Memproses file (1)
Memproses file (2)
Algoritma
Menyimpan data ke dalam file
WRITE(nama_file,<rekaman>
Bahasa C/C++( Header File : fstream.h)
Menyimpan data ke dalam file
ex :WRITE(File_NilaiMhs, IsiFile)
Sintaks :
Membaca data
READ(nama_file,<rekaman>
ofstream Pointer_File; atau
ofstream Pointer_File(“<Nama_File>”, <Mode File>);
ex :READ(File_NilaiMhs, IsiFile)
Bahasa C/C++(Header File : stdio.h)
Menyimpan data ke dalam file perintah yang digunakan : fputc(), fgetc(),
putw(), getw(), fputs(), fgets(), fscanf(), fprintf(), fwrite(), fread()
ex :
fprintf(File_NilaiMhs,
“%s
%s
IsiFile.NPM,IsiFile.Nama_Mhs,IsiFile.IPK);
fwrite(&IsiFile,sizeof(IsiFile),1,File_NilaiMhs);
%.2f”,
Membaca data Perintah yang digunakan : rewind(), fseek(), ftell(), fread(),
fscanf()
ex :
fread(&IsiFile,sizeof(IsiFile),1,File_NilaiMhs);
fscanf(File_NilaiMhs,
“%s
%s
&IsiFile.NPM,&IsiFile.Nama_Mhs,&IsiFile.IPK);
%.2f”,
(Buffer
file)
Pointer_File.put(); atau
Pointer_File<<Nama_Data; atau
Pointer_File.write((char*)&Rekaman, sizeof(Rekaman));
ex :
File_NilaiMhs<<IsiFile.NPM<<“
“<<IsiFile.Nama_Mhs<<“
“<<IsiFile.IPK;
File_NilaiMhs.write((char*)&IsiFile, sizeof(IsiFile));
Catt : Cari apa perbedaan perintah put(), <<,write() di atas !!!
Catt: Fungsi dari perintah di atas dapat dilihat pada slide 38-41
Jurusan Teknik Informatika
XIV/XV - 31
Universitas Widyatama
Memproses file (3)
Membaca data
Sintaks :
int Max=<Jumlah max karakter per baris>;
char penyangga[Max];
ifstream Pointer_File;
atau
(Buffer
ifstream Pointer_File(“<Nama_File>”, <Mode File>); file)
Pointer_File.get(); atau
Pointer_File.getline(penyangga, Max); atau
Pointer_File.read((char *)&Rekaman, sizeof(Rekaman));
ex : ifstream File_Coba (“Coba.Dat”,ios::app | ios::out);
File_NilaiMhs.getline(dtNilai, 50); atau
File_NilaiMhs.read((char *)&IsiFile, sizeof(IsiFile));
Catt : Cari apa perbedaan get(), getline(), read() di atas !!!
XIV/XV - 34
XIV/XV - 32
Universitas Widyatama
Menutup File
Bahasa C/C++( Header File : fstream.h)
Jurusan Teknik Informatika
Jurusan Teknik Informatika
Universitas Widyatama
Modus Open file
Sintaks :
fclose(Pointer_File); {Menutup sebuah file yang aktif} atau
fcloseall(Pointer_File); {Menutup semua file yang aktif}
ex : fcose(File_NilaiMhs);
fcloseall();
Bahasa C/C++( Header File : fstream.h)
Sintaks :
Pointer_File.close()l;
ex : File_NilaiMhs.close();
XIV/XV - 35
XIV/XV - 33
Universitas Widyatama
Konsep Pengelolaan File (3)
Algoritma
CLOSE(File_NilaiMhs)
Bahasa C/C++( Header File : stdio.h)
Jurusan Teknik Informatika
Jurusan Teknik Informatika
Universitas Widyatama
[4]
Mode
Description
r
Open a file for reading
w
Create a file for writing. If the file already exist,
discard the current contents
a
Append; open or create a file for writing at the end
of the file
r+
Open a file for update (reading and writing)
w+ Create a file for update. If the file already exist,
discard the current contents
a+ Append; open or create a file for update; writing is
done at the end of the file
rb
Open a file for reading in binary mode
Jurusan Teknik Informatika
XIV/XV - 36
Universitas Widyatama
6
Konsep Pengelolaan File (4)
Modus Open file
[4]
Operasi file Berpenyangga
Mode
Description
wb Create a file for writing in binary mode. If the file
already exists, discard the current contents
ab
Append; open or create a file for writing at the end
of the file in binary mode
rb+ Open a file for update (reading and writing) in
binary mode
wb+ Create a file for update in binary mode. If the file
already exist, discard the current contents
ab+ Append; open or create a file for update in binary
mode; writing is done at the end of the file
Jurusan Teknik Informatika
XIV/XV - 37
Universitas Widyatama
Konsep Pengelolaan File (7)
Operasi file Berpenyangga
Operasi
fseek()
fflush()
fgetpos()
[1]
Operasi
fputc()
fgetc()
putw()
getw()
fputs()
1.
2.
ferror()
perror()
clearerr()
freopen()
Mendapatkan
posisi
pembacaan
perekaman di suatu posisi tertentu di file.
Menyimpan data di buffer ke file
Mendapatkan
posisi
pembacaan
perekaman di file pada saat tertentu.
XIV/XV - 40
atau
Konsep Pengelolaan File (6)
Operasi file Berpenyangga
Universitas Widyatama
Konsep Pengelolaan File (8)
Operasi
fsetpos()
Jurusan Teknik Informatika
XIV/XV - 38
Operasi file Berpenyangga
SEEK_SET/0 : Pembacaan data mulai dari awal file
SEEK_CUR/1 : Pembacaan data mulai dari posisi saat ini
pada file
SEEK_END/2 : Pembacaan data mulai dari akhir file
[1]
Kegunaan
Meletakan sebuah nilai karakter ke buffer untuk
direkam ke file
Membaca sebuah nilai karakter dari file untuk
diletakan di buffer
Meletakan sebuah nilai integer ke buffer untuk
direkam ke file
Membaca sebuah nilai integer dari file untuk
diletakan di buffer
Meletakan sebuah nilai string ke buffer untuk
direkam ke file
Jurusan Teknik Informatika
Kegunaan
Menempatkan pembacaan atau perekaman
suatu data ke posisi tertentu di file. Terdiri dari
3 buah konstanta pencarian :
3.
ftell()
Konsep Pengelolaan File (5)
[1]
Operasi
fgets()
fprintf()
fscanf()
fwrite()
fread()
[1]
Kegunaan
Membaca sebuah nilai string dari file untuk
diletakan di buffer
Meletakan sekumpulan data terformat ke buffer
untuk direkam ke file
Membaca sekumpulan data terformat dari file
untuk diletakan di buffer
Meletakan sebuah blok data ke buffer untuk
direkam ke file
Membaca sebuah blok data dari file untuk
diletakan di buffer
Jurusan Teknik Informatika
XIV/XV - 39
Konsep Pengelolaan File (9)
Operasi File Tidak Berpenyangga
Kegunaan
Mengembalikan
posisi
pembacaan
atau
perekaman di file pada saat tertentu (mirip
dengan operasi fseek())
Mendeteksi kesalahan yang terjadi
Menampilkan kesalahan yang terjadi
Menghapus semua status kesalahan di flags
Menutup suatu file dan membuka file yang lain
dengan menggunakan pointer yang sama
Universitas Widyatama
Operasi
close()
creat()
lseek()
open()
read()
write()
[1]
Kegunaan
Menutup file
Membuat file baru
Menempatkan
pembacaan/menutup
file
rekaman ke posisi byte tertentu
Membuka file yang ada atau membuat file baru
Membaca data dari file
Menyimpan data ke file
atau
Universitas Widyatama
Jurusan Teknik Informatika
XIV/XV - 41
Universitas Widyatama
Jurusan Teknik Informatika
XIV/XV - 42
Universitas Widyatama
7
Konsep Pengelolaan File (10)
Operasi File
[1]
Operasi
fdopen()
Kegunaan
Mengoperasikan file yang dibuat dengan
operasi
tidak
berpenyangga,
dengan
menggunakan operasi file berpenyangga
access() Mengecek keberadaan suatu file
rename() Mengganti nama file
unlink() Menghapus file
fileno()
Mendapatkan nomor pengenal file
filelength() Mendapatkan ukuran file
Jurusan Teknik Informatika
XIV/XV - 43
Universitas Widyatama
8
Download