MODUL V
Pertemuan :7
Waktu : 2 x 60 menit (di Laboratorium)
Arsip Mhs2:
359603 ’Irwanti Sukma’ 2.81
359609 ’Melati Rahmi’ 3.01
359614 ’Gus Hamid’ 2.46
Arsip Mhs3:
359601 ’Adi Purwanto’ 3.82
359604 ’Fitria Susanti’ 2.97
359605 ’Dewi Ramadhani’ 2.74
359606 ’Andrie Yanto 3.02
359603 ’Irwanti Sukma’ 2.81
359609 ’Melati Rahmi’ 3.01
359614 ’Gus Hamid’ 2.46
Arsip Mhs2:
359603 ’Irwanti Sukma’ 2.81
359609 ’Melati Rahmi’ 3.01
359614 ’Gus Hamid’ 2.46
Arsip Mhs3:
359601 ’Adi Purwanto’ 3.82
359603 ’Irwanti Sukma’ 2.81
359604 ’Fitria Susanti’ 2.97
359605 ’Dewi Ramadhani’ 2.74
Untuk menentukan kondisi npm di arsip Mhs1 dan arsip Mhs2 telah habis
dapat digunakan hubungan relasi AND atau OR, sehingga akan didapatkan
dua bentuk algoritma.
Selain itu apabila terdapat data nilai yang sama maka dapat pula dibatasi
hanya satu nilai yang sama yang direkam, sehingga pada langkah point 2.b.
perlu dikembangkan
Contoh Kasus :
Diketahui sebuah file pegawai yang terurut berdasarkan NIP, maka lakukan
pemisahan file pegawai tersebut sebagai berikut :
- menjadi beberapa arsip sesuai dengan kode golongan
- menjadi dua buah file yaitu pegawai dengan NIP di bawah 100 dan lebih besar
sama dengan 100
Ilustrasi file sumber :
NIP GOL
001 B
030 B
057 C
095 A
102 B
135 C
… ..
1. penggabungan file mhs1 dan mhs2 ke dalam file mhs3 disambung tanpa
terurut
close(Mhs1)
close(Mhs2)
close(Mhs3)
2. penggabungan file mhs1 dan mhs2 ke dalam file mhs3 disambung terurut
berdasarkan nim
Mhs2 : sequential of
*) RekMhs2 : datamhs main(){
1) <9999, “”, 999.999> Mhs1=fopen("mhs1.dat", "rb");
Mhs3 : sequential of Mhs2=fopen("mhs2.dat", "rb");
*) RekMhs3 : datamhs Mhs3=fopen("mhs3.dat", "wb");
1) <9999, “”, 999.999>
fread(&RekMhs1, sizeof(RekMhs1),
1, Mhs1);
Algoritma : fread(&RekMhs2, sizeof(RekMhs2),
open(Mhs1, RekMhs1) 1, Mhs2);
open(Mhs2, RekMhs2)
rewrite(Mhs3) while(!feof(Mhs2) || !feof(Mhs1))
{
while not eof(Mhs1)or not eof(Mhs2) if (feof(Mhs1)){
do fwrite(&RekMhs2,
if(eof(Mhs1)) then sizeof(RekMhs2), 1, Mhs3);
read(Mhs2, RekMhs2) fread(&RekMhs2,
write(Mhs3, RekMhs2) sizeof(RekMhs2), 1, Mhs2);
else if (eof(Mhs2)) then }else if (feof(Mhs2)){
read(Mhs1, RekMhs1) fwrite(&RekMhs1,
write(Mhs3, RekMhs1) sizeof(RekMhs1), 1, Mhs3);
else if(RekMhs1.nim < fread(&RekMhs1,
RekMhs2.nim) then sizeof(RekMhs1), 1, Mhs1);
read(Mhs1, RekMhs1) }else if(RekMhs1.nim <=
write(Mhs3, RekMhs1) RekMhs2.nim){
else fwrite(&RekMhs1,
read(Mhs2, RekMhs2) sizeof(RekMhs1), 1, Mhs3);
write(Mhs3, RekMhs2) fread(&RekMhs1,
endif sizeof(RekMhs1), 1, Mhs1);
endwhile }
else
close(Mhs1) {
close(Mhs2) fwrite(&RekMhs2,
close(Mhs3) sizeof(RekMhs2), 1, Mhs3);
fread(&RekMhs2,
sizeof(RekMhs2), 1, Mhs2);
}
}
fclose(Mhs1);
fclose(Mhs2);
fclose(Mhs3);
}
3. Pemisahan file pegawai berdasarkan NIP < 100 dan NIP >= 100
Notasi algoritma Bahasa C
Program Pemisahan file pegawai #include <stdio.h>
5.3 Praktikum V
5.3.1 Tugas Pendahuluan V
Didefinisikan sebuah sequential file data buku di Perpustakaan ”Cinta Buku”
sebagai berikut :
File Buku di Perpustakaan ”Cinta Buku”
Kode Buku Jenis Harga Sewa Stok
1021 1 Rp. 2.500 15
1022 1 Rp. 2.300 3
1024 1 Rp. 2.700 20
2023 2 Rp. 4.900 1
2025 2 Rp. 4.700 10
2026 2 Rp. 4.500 4
3021 3 Rp. 500 20
3025 3 Rp. 400 30
3027 3 Rp. 900 25
FILE *Data_Nilai_MHS;
void InputData();
void OutputData();
void Splitting();
void Merging();
void KonsolidasiTanpaSeparator();
void KonsolidasiDenganSeparator();
int main(){
//input data ke dalam file tanpa separator
InputData();
getche();
return 0;
}
void InputData() {
fprintf(Data_Nilai_MHS,"%d %s %s
%d\n",Rekaman.NPM,Rekaman.Nama,Rekaman.Kelas,Rekaman.Nilai);
}
fclose(Data_Nilai_MHS);
}
void OutputData(){
//isi dengan program untuk membaca data dari file
void Splitting(){
//isi dengan hasil konversi algoritma Splitting ke program
C/C++
void Merging(){
//isi dengan hasil konversi algoritma Merging ke program
C/C++
void KonsolidasiTanpaSeparator(){
//isi dengan hasil konversi algoritma konsolidasi tanpa
separator ke program C/C++
void KonsolidasiDenganSeparator(){
//isi dengan hasil konversi algoritma konsolidasi dengan
separator ke program C/C++
Kasus 1
Didefinisikan sebuah sequential file data kendaraan di Rental Mobil ”Pantang
Mundur” sebagai berikut :
File Kendaran Rental Mobil ”Pantang Mundur”
Kode Jenis Harga Sewa Stok
Kendaraan
101 A Rp. 250.000 5
102 A Rp. 230.000 3
104 A Rp. 270.000 2
203 B Rp. 390.000 1
205 B Rp. 375.000 10
206 B Rp. 335.000 4
301 C Rp. 505.000 1
305 C Rp. 420.000 2
307 C Rp. 490.000 3
Note :
Gunakan template program yang sudah diberikan.
Untuk fungsi Merging, silakan buat file Kendaraan2.txt secara manual di
Notepad atau editor teks lainnya.
Kasus 2
Didefinisikan sebuah sequential file data barang di Toko Beras “Maju Terus”
sebagai berikut :
Note :
Gunakan template program yang sudah diberikan.
Untuk fungsi Merging, silakan buat file Barang2.txt secara manual di
Notepad atau editor teks lainnya.
1. Kerjakan sisa soal Latihan Praktikum yang belum selesai di luar jam
praktikum.
2. Buat laporan praktikum berdasarkan hasil pada praktikum pertemuan pertama
ini. Laporan tersebut berisi:
a. Soal latihan praktikum
b. Solusi dengan menggunakan algoritma
c. Solusi program dengan menggunakan bahasa C
d. Screenshot hasil eksekusi program
Keempat poin tersebut disusun per nomor soal latihan.
Perhatikan bahwa laporan ini harus merupakan hasil karya sendiri. Kesamaan
seluruh/sebagian isi laporan dengan mahasiswa lain akan mengakibatkan nilai
laporan menjadi Nol.