Modul - Bab 4 - Struct&File
Modul - Bab 4 - Struct&File
4.1. Pendahuluan
Dengan menggunakan struktur data array, sekelompok data yang setipe dapat
dianggap sebagai satu kesatuan sehingga memudahkan pemrosesan kelompok data tadi.
Dalam beberapa kasus, ada sekelompok data yang berlainan tipe tetapi dalam
pemrosesannya dianggap sebagai satu kesatuan, seperti data mahasiswa yang terdiri dari
nama, NPM dan nilai, (lihat tabel 4.1 di bawah ini) atau data karyawan yang terdiri dari
nama, nik, golongan dan gaji, atau data lainnya. Untuk kasus ini digunakan struktur data
struct atau disebut juga struktur data record. Biasanya struktur data struct atau record ini
digunakan untuk penyimpanan data dalam file. Untuk pembahasan selanjutnya hanya akan
digunakan istilah “struct” saja.
mahasiswa (bertipe karakter), dan nilai mahasiswa (bertipe real). Jika digunakan array
untuk menyimpan data mahasiswa ini, maka diperlukan 3 buah array. Masing-masing array
menyimpan satu macam data, seperti contoh deklarasi berikut ini (diasumsikan ada 75
mahasiswa yang akan disimpan datanya).
Dalam contoh di atas, perlu perhatian khusus untuk indeks array agar data seorang
mahasiswa dimasukkan ke indeks yang sama untuk tiap array. Dalam prosesnya, ketiga
array tersebut harus dibaca dan diproses secara bersama-sama.
Tetapi jika digunakan struct, maka ketiga macam data tadi dapat didefinisikan dalam
sebuah struct. Struct untuk menyimpan data seorang mahasiswa adalah:
4. Jika diperlukan member juga dapat bertipe struct yang lain (nested structure). Dalam
hal ini definisikan dulu struct yang akan digunakan.
5. Seluruh member ditulis di antara sepasang tanda kurung { } setelah nama struct.
Bentuk umum definisi struktur data struct dapat dilihat pada gambar 4.1 di bawah ini.
struct nama_struct {
tipe_data_1 nama_member_1
tipe_data_2 nama_member_2
.......
tipe_data_n nama_member_n
}
Sebagai contoh lain dari penggunaan struktur data struct ini adalah untuk menyimpan data
inventori di sebuah minimarket. Misalnya data yang disimpan adalah:
Nomor barang, jenis barang, merek barang, pemasok, harga jual barang,
banyaknya barang
Nomor barang adalah nomor kode untuk memudahkan identifikasi barang-barang yang
disimpan. Jenis barang misalnya mi instant, coklat, permen dan sebagainya. Merek barang
misalnya Indomi Goreng, Supermi Ayam bawang dan sebagainya. Pemasok adalah nama
perusahaan yang menghantarkan barang tersebut. Semua data tersebut bertipe karakter.
Untuk harga jual dan banyaknya barang, tipe data yang digunakan adalah integer. Dengan
demikian contoh struktur data struct untuk menyimpan data barang seperti di atas adalah:
struct STOK {
char Nomor[8]
char JenisBarang[15]
char Merek[20]
char Pemasok[20]
int Harga
int Banyak
}
struct, tanda titik (“.”) dan nama member yang akan digunakan sebagai tempat menyimpan
data. Demikian pula jika ingin mencetak data yang disimpan dalam suatu member. Secara
umum penulisan struct untuk menyimpan atau mencetak data ke/dari member struct adalah:
nama_struct.nama_member
Dengan demikian instruksi untuk menyimpan data ke atau mencetak data dari sebuah
member dari struct MAHASISWA adalah seperti contoh berikut ini:
- Read (MAHASISWA.NAMA_MHS)
data yang dibaca akan disimpan dalam member yang pertama pada struct
MAHASISWA
- Write (MAHASISWA.NPM)
mencetak isi member yang ke dua dari struct MAHASISWA
Ilustrasi dari array of struct Data-M[75] dapat dilihat pada gambar 4.2 di bawah ini.
INDEKS KOMPONEN
Dengan demikian instruksi untuk menyimpan data ke dan mencetak dari array of struct ini
adalah sebagai berikut:
a. Untuk sebuah data dalam suatu member:
- Read (Data_M[3].NAMA_MHS)
data yang dibaca akan disimpan dalam array of struct Data_M pada indeks 3 dan
member yang pertama.
- Write (Data_M[10].NPM)
mencetak isi dari array of struct Data_M pada indeks 10 dan member yang ke 2
membaca 3 buah data dengan urutan: nama mahasiswa, NPM, dan nilai untuk
disimpan dalam array of struct Data_M indeks 0. Tipe data dari tiap data yang
dimasukkan harus sesuai dengan yang telah didefinisikan.
Struct NAMA ini digunakan oleh struct MAHASISWA untuk menyimpan data nama
mahasiswa. Dengan demikian definisi struct MAHASISWA menjadi:
ii. NAMA_MHS.TENGAH
iii. NAMA_ MHS.KELUARGA
iv. NPM
v. NILAI.
Untuk input dan output nested structure ini, caranya sama seperti di atas, yaitu dengan
menulis nama struct yang diikuti oleh semua nama member yang dipisahkan dengan tanda
titik. Sebagai contoh untuk struct MAHASISWA di atas:
- Read (MAHASISWA.NAMA_MHS.DEPAN)
data yang dibaca akan disimpan dalam member yang pertama pada struct
MAHASISWA
- Write (MAHASISWA.NAMA_MHS.KELUARGA)
mencetak data yang disimpan dalam member yang ke tiga dari struct
MAHASISWA
Untuk array of struct yang terdiri dari nested structure, operasi input dan output sama
seperti di atas yaitu dengan menuliskan semua nama member dan dipisahkan dengan tanda
titik. Sebagai contoh didefinisikan :
data yang dibaca akan disimpan pada indeks 5, member yang pertama dari
komponen array of struct Data_M
- Read (Data_M[0])
membaca sebuah komponen array Data_M yang terdiri dari 8 buah data dengan
urutan: nama depan mahasiswa, nama tengah mahasiswa, nama keluarga
mahasiswa, NPM, nilai UTS, nilai UAS, nilai akhir dan nilai huruf untuk disimpan
dalam array of struct Data_M indeks 0. Tipe data dari tiap data yang dimasukkan
harus sesuai dengan yang telah didefinisikan.
Sebuah kelas yang terdiri dari dari 75 mahasiswa akan dihitung nilai akhir dan nilai
hurufnya. Data yang disimpan adalah nama depan mahasiswa, nama tengah
mahasiswa, nama keluarga mahasiswa, nomor pokok mahasiswa, serta nilai UTS dan
nilai UASnya. Nilai akhir mahasiswa dihitung dari 40% nilai UTS ditambah dengan
60% nilai UAS. Nilai huruf ditentukan berdasarkan nilai akhir seperti pada tabel di
bawah ini.
Untuk menyimpan data mahasiswa tersebut di atas akan digunakan array of struct
Data_M[75] yang telah didefinisikan sebelumnya. Untuk memudahkan pembacaan
algoritma, perhitungan nilai akhir dan nilai huruf akan dilakukan oleh fungsi HITUNG.
Dengan demikian, algoritma utama berfungsi untuk membaca data dan menyimpannya ke
array of struct Data_M, memanggil fungsi hitung, menyimpan hasil perhitungan ke array
of struct Data_M, dan menabelkan hasil perhitungan.
}
}
}
Algoritma Hitung_Nilai
Algoritma untuk menghitung nilai akhir dan nilai huruf dari 75 mahasiswa.
Perhitungan nilai akhir dan nilai huruf dilakukan oleh fungsi HITUNG.
Variabel I bertipe integer. Data dan hasil perhitungan disimpan dalam
array of struct Data_M[75] dengan definisi sebagai berikut:
struct NAMA
{
char DEPAN[12]
char TENGAH[12]
char KELUARGA[15]
}
struct NILAI
{
int UTS
int UAS
real AKHIR
char HURUF
}
struct MAHASISWA
{
struct NAMA NAMA_MHS
char NPM[10]
struct NILAI NILAI_MHS
}
[mendeklarasikan array Data_M]
struct MAHASISWA Data_M[75]
[mendeklarasikan fungsi HITUNG]
VOID HITUNG(int, int, real&, char&)
1. [membuat struktur pengulangan untuk memroses data dari 75
mahasiswa]
For ( I = 0 ; I <= 74 ; I ++ )
{
1.a [membaca data untuk disimpan dalam array of struct Data_M]
Read(Data_M[I].NAMA_MHS.DEPAN, Data_M[I].NAMA_MHS.
TENGAH, Data_M[I].NAMA_MHS.KELUARGA, Data_M[I].NPM,
Data_M[I].NILAI_MHS.UTS, Data_M[I].NILAI_MHS.UAS)
1.b [memanggil fungsi Hitung]
Hitung(Data_M[I].NILAI_MHS.UTS, Data_M[I].NILAI_MHS.UAS
Data_M[I].NILAI_MHS.AKHIR, Data_M[I].NILAI_MHS.HURUF)
}
2. [membuat judul tabel]
Write(‘No Nama mahasiswa NPM UTS UAS Akhir Huruf’)
3. [membuat loop untuk menabelkan hasil perhitungan]
For ( I = 0 ; I = 74 ; I ++ )
{ Write(I+1, Data_M[I])
}
4. [selesai]
Halt
Contoh lain untuk aplikasi struktur data struct adalah untuk menyimpan data
inventori sebuah mini market seperti berikut:
Minimarket ABC menjual barang keperluan sehari-hari, ada 1000 jenis barang yang
dijual. Semua data disimpan dalam struct. Tiap kali terjadi penjualan, stok barang
berkurang dan akan dicetak slip penjualan yang berisi nama barang, banyaknya barang
dan harga barang. Dalam 1 slip dapat terdiri dari bermacam-macam barang. Tiap hari
sebelum toko dibuka dijalankan fungsi STOK_AWAL untuk mencatat stok barang.
Setiap terjadi penjualan barang akan mengurangi stok barang yang terjual. Tiap hari
setelah toko ditutup, dijalankan fungsi LAPORAN untuk mengetahui jenis barang yang
dijual, banyaknya barang yang dijual, total penjualan serta menampilkan barang apa
yang stok-nya kurang sehingga harus dipesan. Sebagai batas aman untuk stok barang
adalah 50, jika kurang dari itu, maka barang harus dipesan. Diasumsikan data seluruh
stok barang disimpan dalam array of struct dan diurutkan berdasarkan nomor kode
barang.
struct STOK {
char Nomor[6]
char NamaBarang[15]
char Pemasok[20]
int Harga
int Total
}
VOID STOK_AWAL(DATA[]&)
Fungsi untuk membaca data stok barang yang disimpan ke array DATA.
Data stok barang adalah struct STOK. Diasumsikan data stok ini diurutkan
berdasarkan nomor kode barang. Variabel i bertipe integer.
{
1. [membuat loop untuk membaca array]
For (i = 0; i < 1000 ; i++)
{ Read (DATA[i])
}
}
5. Write(”----------------------------------------------------------------“)
6. Write(“Total penjualan = Rp “, T)
7. Write (“Laporan Daftar Barang yang harus dipesan”)
8. Write (“No Kode Nama barang Pemasok Jumlah”)
9. [membuat loop untuk membaca array]
For (i = 0 ; i < 1000 ; i++)
{ if (AKHIR[i].total < 50)
{
Write (i+1, AKHIR[i].Nomor, AKHIR[i].NamaBarang,
AKHIR[i].Pemasok, AKHIR[i].Total)
}
}
}
Algoritma MiniMarketABC
Algoritma untuk mengelola inventori secara sederhana dari sebuah mini
market. Seluruh data disimpan dalam array of struct. Array AWAL berisi
data barang sebelum minimarket dibuka. Selama minimarket dibuka,
data penjualan disimpan dalam array JUAL. Setelah minimarket ditutup,
dibuat laporan penjualan dan laporan barang yang harus dipesan.
Algoritma dijalankan setiap hari mulai dari sebelum minimarket dibuka
sampai minimarket ditutup. Pada akhir hari dicetak laporan penjualan dan
laporan barang yang harus dipesan. Diasumsikan tidak ada penambahan
barang selama minimarket dibuka dan banyaknya jenis barang yang
dijual ada 1000 jenis. Variabel i, b, tt, jml, dan hrg bertipe integer.
Variabel Jawab bertipe character.
[deklarasi struct]
struct STOK {
char Nomor[6]
char Jenisbarang[15]
char Pemasok[20]
int Harga
int Total
}
[deklarasi array of struct]
struct STOK AWAL[1000]
struct STOK JUAL[1000]
[deklarasi fungsi]
VOID STOK_AWAL(STOK[]&)
VOID LAPORAN(STOK[], STOK[],n)
1. [Menuliskan salam]
Write(”Selamat Pagi, Anda diminta untuk memasukkan kode barang,
nama barang, nama pemasok, harga barang dan banyaknya barang”)
2. [Memanggil fungsi STOK_AWAL]
STOK_AWAL(AWAL[1000])
3. [mengkopi array AWAL ke array JUAL]
For ( i = 0 ; i <1000 ; i++)
{ JUAL[i] = AWAL[i]
}
4. Jawab = ‘y’
5. [membuat loop untuk kedatangan pelanggan]
While (Jawab == ‘y’)
{ tt = 0
Write(“Ketikkan banyaknya jenis barang yang dibeli”)
Read (b)
For (j = 0 ; j < b ; j++)
{ Write (“Nomor barang yang dibeli: “)
Read (nmr)
Write (“Banyaknya barang yang dibeli: “)
Read (jml)
i = 0;
While (nmr != JUAL[i].Nomor)
{ i++ }
Hrg = jml * JUAL[i].Harga
JUAL[i].Total = JUAL[i].Total – jml
tt = tt + Hrg
[mencetak slip pembayaran]
Write (JUAL[i].NamaBarang, jml, hrg)
}
[mencetak total harga barang yang harus dibayar]
Write (“Total harga = “, tt)
Write (“Terimakasih”)
[Apakah ada pelanggan lagi?]
Write (“Apakah ada pelanggan yang datang ?”)
Read (Jawab)
[kembali ke awal loop jika jawab = ‘y’]
}
6. [minimarket tutup, memanggil fungsi laporan untuk menabelkan
semua barang yang terjual dan menabelkan semua barang yang perlu
dipesan]
LAPORAN(AWAL, JUAL,1000)
7. [Menuliskan salam]
Write(“Selamat malam Selamat beristirahat”)
8. [selesai]
Halt
4.2.5 Union
Dalam contoh di atas, dapat dilihat bahwa sebuah struct mempunyai jumlah dan
nama member yang sama. Dalam beberapa kasus, dibutuhkan sebuah struct yang sama
tetapi dapat mempunyai member yang berbeda. Hal ini dimungkinkan dengan instruksi
union. Sebagai contoh, untuk data mahasiswa yang tersimpan dalam struct Data_M[] ada
mahasiswa yang mundur mata kuliah. Untuk kasus ini, mahasiswa tidak mempunyai nilai
UTS, nilai UAS dan nilai akhir, tetapi hanya mempunyai nilai huruf yaitu “K”. Dengan
demikian member dalam struct MAHASISWA tergantung dari status mahasiswa yaitu
aktif atau mundur. Untuk mahasiswa aktif, member dalam struct MAHASISWA terdiri
dari struct NAMA. NPM, STATUS, dan struct nilai. Tetapi untuk mahasiswa yang mundur
mata kuliah, member dalam struct MAHASISWA terdiri dari struct NAMA, NPM,
STATUS, dan nilai huruf. Untuk masalah ini, didefinisikan tipe data untuk menentukan
status mahasiswa:
define aktif 1
define mundur 2
Dengan demikian struct MAHASISWA menjadi:
struct MAHASISWA {
struct NAMA NAMA_MHS
char NPM[9]
int STATUS
union {
struct {
NILAI NILAI_MHS
} aktif
struct {
char HURUF
} mundur
} STATUS
}
Struct MAHASISWA di atas, terdiri dari 2 bagian yaitu bagian yang tetap (fixed) dan yang
tidak tetap (tag) yang ditandai dengan instruksi union. Dalam struct ini, member yang tetap
adalah NAMA_MHS, NPM dan STATUS. Member selanjutnya ditentukan oleh status
mahasiswa yaitu NILAI_MHS atau HURUF.
Untuk contoh penggunaan struct dengan union ini, algoritma HITUNG_NILAI akan
direvisi sehingga dapat menangani kasus mahasiswa yang mundur mata kuliah. Output
algoritma akan dibagi menjadi 2 tabel yaitu tabel yang berisi data mahasiswa aktif beserta
nilainya dan tabel yang berisi data mahasiswa yang mundur mata kuliah.
Algoritma Hitung_Nilai_Revisi_1
Algoritma untuk menghitung nilai akhir dan nilai huruf dari 75 mahasiswa.
Data dan hasil perhitungan disimpan dalam array of struct Data_M[75]
yang komponennya adalah struct MAHASISWA. Array of struct
Data_M[75] digunakan untuk menyimpan data mahasiswa yang berstatus
aktif atau mundur mata kuliah. Untuk mahasiswa aktif, perhitungan nilai
akhir dan nilai huruf dilakukan oleh fungsi HITUNG. Variabel I, J bertipe
integer.
struct NAMA {
char DEPAN[12]
char TENGAH[12]
char KELUARGA[15]
}
struct NILAI {
int UTS
int UAS
real AKHIR
char HURUF
}
define aktif 1
define mundur 2
struct MAHASISWA {
struct NAMA NAMA_MHS
char NPM[10]
int STATUS
union {
struct {
NILAI NILAI_MHS
} aktif
struct {
char HURUF
} mundur
} STATUS
}
struct MAHASISWA Data_M[75]
Read (Data_M[I].STATUS)
1.b [Jika mahasiswa aktif]
If (Data_M[I].STATUS == 1)
{
1.b.i [membaca data status mahasiswa aktif]
Read(Data_M[I].NAMA_MHS.DEPAN, Data_M[I].NAMA_MHS.
TENGAH, Data_M[I].NAMA_MHS.KELUARGA, Data_M[I].NPM,
Data_M[I].NILAI_MHS.UTS, Data_M[I].NILAI_MHS.UAS)
1.b.ii [memanggil fungsi Hitung]
Hitung(Data_M[I].NILAI_MHS.UTS, Data_M[I].NILAI_MHS.UAS
Data_M[I].NILAI_MHS.AKHIR, Data_M[I].NILAI_MHS.HURUF)
}
[Jika mahasiswa mundur mata kuliah]
Else
{
1.b.iii [membaca data status mahasiswa mundur mata kuliah]
Read(Data_M[I].NAMA_MHS.DEPAN, Data_M[I].NAMA_MHS.
TENGAH, Data_M[I].NAMA_MHS.KELUARGA, Data_M[I].NPM)
1.b.iv [menentukan nilai huruf]
Data_M[I].HURUF = ‘K’
}
}
2. [membuat judul tabel untuk mahasiswa aktif]
Write(‘Daftar nilai mahasiswa aktif’)
Write(‘No Nama mahasiswa NPM UTS UAS Akhir Huruf’)
3. [membuat counter]
J=1
4. [membuat loop untuk menabelkan data mahasiswa aktif]
For ( I = 0 ; I = 74 ; I ++ )
{
4.a If (Data_M[I].STATUS == 1)
{ Write(J, Data_M[I].NAMA_MHS.DEPAN, Data_M[I].NAMA_MHS.
TENGAH, Data_M[I].NAMA_MHS.KELUARGA, Data_M[I].NPM,
Data_M[I].NILAI_MHS.UTS, Data_M[I].NILAI_MHS.UAS,
Data_M[I].NILAI_MHS.AKHIR, Data_M[I].NILAI_MHS.HURUF)
}
4.b [increment counter]
J=J+1
}
5. [membuat counter]
J=1
6. [membuat judul tabel untuk mahasiswa mundur]
Write(‘Daftar nama mahasiswa mundur mata kuliah’)
Write(‘No Nama mahasiswa NPM ’)
7. [membuat loop untuk menabelkan data mahasiswa mundur]
For ( I = 0 ; I = 74 ; I ++ )
{
7.a If (Data_M[I].STATUS == 2)
2. Toko buku universitas dapat membuat daftar tunggu sampai 20 permintaan untuk tiap
buku yang tidak tersedia di toko buku. Informasi yang disimpan untuk tiap buku
adalah judul buku (80 karakter), harga buku, dan permintaan untuk buku itu. Tiap
permintaan berisi nama (40 karakter), dan nomor telepon (12 karakter).
a. Buatlah struktur struct untuk menyimpan daftar tunggu ini.
b. Buatlah algoritma untuk menyimpan data ke dalam struct daftar tunggu.
c. Lanjutkan algoritma 2.a sehingga dapat membaca struct daftar tunggu untuk
menampilkan semua orang yang memesan suatu buku jika buku tersebut telah
tersedia.
3. Dewan real estate melakukan survey pada setiap orang yang mengajukan izin (lisensi)
bekerja. Kuesioner yang harus diisi adalah sebagai berikut:
Input data dari kuesioner berisi 5 jawaban: kode jenis izin, kode kota, umur, kode
jenis kelamin, dan kode pendidikan. Gunakan metode end-of-file untuk menentukan
akhir data.
a. Buatlah struktur struct untuk menyimpan jawaban kuesioner dari tiap responden.
b. Buatlah algoritma menganalisis kuesioner dan menjawab pertanyaan berikut ini:
- Total jumlah responden
- Persentasi dari broker dan sales person.
c. Lanjutkan algoritma 3.b. untuk menghitung masalah berikut ini untuk jenis izin
broker dan salesperson:
- rata-rata umur responden
- jumlah responden dari tiap kota
- persentasi laki-laki dan perempuan
- jumlah responden untuk tiap jenis pendidikan.
Nomor produk, nama produk, nama supllier, harga per unit, jumlah unit
5. Sebuah perusahaan real estat mempunyai 50 orang staf penjualan. Setiap kali seorang
staf melakukan penjualan, datanya disimpan dalam sebuah struct yang berisi:
Nomor staf, nama staff, nilai penjualan, komisi.
Struct ini lalu disimpan dalam file. Banyaknya data yang diinput tidak diketahui.
Banyaknya penjualan yang dilakukan oleh seorang staf tidak sama dengan staf yang
lain sehingga seorang staf dapat mempunyai 5 data sementara staf yang lain dapat
mempunyai 10 data.
a. Buatlah struktur data struct untuk menyimpan data di atas
b. Buatlah laporan yang berisi nomor staf, nama staf, total penjualan dan total komisi.
Laporan ini dibuat berurutan berdasarkan nomor staf, mulai dari 1 sampai 50. Pada
akhir laporan, jumlahkan total penjualan dan total komisi.
c. Tambahkan pada algoritma 5.b di atas, fungsi untuk:
- mencari nomor dan nama staf yang total penjualannya paling besar dan kedua terbesar
- mencari nomor dan nama staf yang total komisinya paling besar dan kedua terbesar.
6. Sebuah perusahaan mempunyai 200 pegawai yang terbagi menjadi 3 bagian yaitu
bagian administrasi, bagian penjualan dan bagian kebersihan. Perhitungan gajinya
adalah sebagai berikut:
a. Administrasi: gaji pokok + tunjangan kesehatan + uang transport.
b. Penjualan: uang transport + komisi 5% dari total nilai penjualan.
c. Kebersihan: gaji pokok + uang transport
Uang transport dihitung berdasarkan jumlah hari masuk kerja.
a. Buatlah sebuah struktur data struct untuk menyimpan semua data pegawai di atas.
b. Buatlah fungsi untuk menghitung gaji pegawai
c. Buatlah algoritma untuk memasukkan data ke dalam struct, menghitung gaji dan
menampilkan tabel gaji untuk masing-masing bagian. Hitung pula total gaji dari
masing-masing bagian.
b. Buatlah algoritma untuk memasukkan data ke dalam struct, dan menampilkan tabel
untuk masing-m4asing jenis asuransi. Hitung pula total asuransi dari masing-masing
jenis asuransi.
Struktur data file didefinisikan sebagai suatu kumpulan item data (biasanya disebut
record) yang mempunyai aspek yang sama dan disimpan dalam memori eksternal seperti
disket, harddisk, CD, atau flash disk. Pada umumnya file digunakan untuk:
1. Menyimpan data untuk dieksekusi oleh program.
2. Menyimpan hasil sebuah eksekusi.
4.3.1. Terminologi
Berikut ini adalah beberapa istilah yang digunakan bersama struktur data file dan
aplikasinya:
a. Record: kumpulan item informasi mengenai suatu entity (entitas). Dalam bahasa
pemrograman C++, record diimplementasikan dalam struktur data struct.
Contoh: Record yang berisi data penumpang pesawat terbang
struct Penumpang {
char NAMA_DEPAN[15]
char N_KELUARGA[15]
char ALAMAT[50]
int No_Kursi
char Kode_Psw[10]
b. Item / field dari sebuah record: sebuah unit informasi yang berarti mengenai suatu
entity. Dalam bahasa pemrograman C++ item/field ini dikenal dengan istilah member.
Contoh: item/field dari record PENUMPANG adalah:
PENUMPANG.NAMA_DEPAN, PENUMPANG.N_KELUARGA, PENUMPANG.
ALAMAT, PENUMPANG.No_Kursi, PENUMPANG.Kode_Psw
c. Key: item/field dari record yang unik yang berfungsi sebagai tanda identifikasi record
tersebut dalam file.
Contoh: item/field yang menjadi key dalam record PENUMPANG adalah:
PENUMPANG.No_Kursi
d. Basis Data: kumpulan dari file yang saling berhubungan.
e. Record transaksi (Transaction record): record yang terkena transaksi/operasi atau
dengan kata lain record yang item/field-nya mengalami perubahan seperti diperbaiki
(update), ditambah atau dihapus . Record transaksi disimpan dalam file transaksi.
f. File transaksi (Transaction file): file yang berisi record-record yang terkena
transaksi/operasi.
g. File Master (Master file): file yang menyimpan seluruh record. File master ini yang
akan menjadi file sumber untuk mendapatkan record-record yang terkena transaksi.
1. Open: menghubungkan file dengan program. Setelah itu harus ditentukan file akan
digunakan untuk input (membaca record yang ada dalam file) atau untuk output
(menuliskan record ke file)
3. Input file: setelah file dihubungkan dengan program sebagai input, program akan
membaca data yang disimpan dalam file satu persatu dan menyimpannya dalam suatu
variabel. Contoh perintahnya:
if (!infile)
{write (“File tidak dapat dibuka”)}
else
{while (!infile.eof)
[membaca data dari infile dan disimpan ke variabel angka]
{infile.read (angka)
write (angka)}
infile.close()
}
Jika data yang disimpan dalam file berupa record, maka harus disediakan suatu struct
untuk menampung seluruh data yang dibaca dari record. Sebagai contoh lihat potongan
algoritma berikut, untuk membaca data record dari file DATA.TXT ke struct INFO di
memori komputer.
struct INFO {
char NAMA[15]
char ALAMAT[50]
int Umur
char Telepon[10]
}
INFO person;
ifstream indata;
indata.open(“DATA.TXT”);
[membaca record pertama dari file DATA.TXT dan menyimpannya ke
struct person]
indata.read(person)
while (!indata.eof)
{
[menuliskan isi struct person ke layar]
write(person)
[membaca record berikutnya dari file DATA.TXT]
indata.read(person)
}
indata.close()
4. Output file: setelah file dihubungkan dengan program sebagai output, program dapat
menulis data untuk disimpan dalam file. Contoh perintahnya:
if (!outfile)
{write (“File tidak dapat dibuka”)}
else
{outfile.write (angka)
outfile.close()}
Jika data yang akan ditulis ke file berupa struct, maka sebuah struct akan ditulis menjadi
sebuah record dalam file. Sebagai contoh lihat potongan algoritma berikut, untuk
menuliskan struct INFO ke file HASIL.TXT
struct INFO {
char NAMA[15]
char ALAMAT[50]
int Umur
char Telepon[10]
}
INFO people;
ofstream people;
outfile.open(HASIL.TXT”);
Write(“Ketikkan banyaknya data”)
Read(n)
For (i = 1; i <= n; i++)
{
[membaca data dari keyboard dan menyimpannya ke struct person]
read(people)
[menulis struct person ke file HASIL.TXT]
outfile.write(people)
}
outfile.close()
4. Buatlah program C++ untuk latihan soal bab 4.2 nomor 4. Lalu buatlah file untuk
menyimpan data inventori dari jawaban 50 produk. Jalankan program dan cetak
hasilnya
5. Buatlah program C++ untuk latihan soal bab 4.2 nomor 5. Lalu buatlah file untuk
menyimpan data dari 50 pegawai. Jalankan program dan cetak hasilnya
6. Buatlah program C++ untuk latihan soal bab 4.2 nomor 7. Lalu buatlah file untuk
menyimpan data dari 50 polis asuransi. Jalankan program dan cetak hasilnya