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,
) READ(nama_file,) CLOSE(nama_file) REWRITE(nama_file) WRITE(nama_file, 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
(*) : 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,)//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(””,”<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(“”, <Mode File>); file) Pointer_File.open(“”) atau Pointer_File.open(””, <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,
Bahasa C/C++( Header File : fstream.h)
Menyimpan data ke dalam file
ex :WRITE(File_NilaiMhs, IsiFile)
Sintaks :
Membaca data READ(nama_file,
ofstream Pointer_File; atau ofstream Pointer_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<
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(“”, <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