Anda di halaman 1dari 9

Nama : M.

Qawiyyun Aziz
Npm : 0620101002

SOAL LATIHAN
1. Diketahui sebuah file sequential yang berisi data gaji pegawai selama satu tahun
dengan kondisi terurut berdasarkan NIP. Buatlah algoritma konsolidasi untuk
menentukan pendapatan rata-rata pegawai per bulan dan berapa pendapatan tertinggi
dari pegawai tersebut!

Judul : Algoritma untuk menghitung gaji rata-rata pegawai


Kamus :
Type Rekaman:<NIP : string, Gaji : integer>
File_Gaji : Sequential File of
(*) Rekgaji : Rekaman
(1) : <“.“>
EOF : Boolean (True jika Rekgaji = <““,0>)
Jumlah_gaji : integer
Rata2 : real
Current_Kategori : string
Algoritma :
{Menyiapkan file_gaji untuk di baca}

OPEN(File_gaji, Rekgaji)

IF EOF(file_gaji)

THEN Output “File Kosong”


ELSE

REPEAT
Jumlah_gaji ← 0
Current_Kategori ß RekNilai.NIM

REPEAT
Jumlah_gaji ← Jumlah_gaji + Rekgaji.gaji
READ(File_gaji,Rekgaji)

UNTIL Current_Kategori <> Rekgaji.NIP


Rata2 ← Jumlah_gaji/gaji
Output “gaji rata-rata : “, Rata2
UNTIL EOF(File_gaii)
CLOSE(File_gaji) {Tutup file}
2. Diketahui sebuah file sequential (Tanpa Separator) yang berisi data nilai mahasiswa
sebagai berikut ini :
NIM KODE_M NILAI SKS
K
01 1 A 3
01 2 B 2
02 1 C 3
02 2 B 2
02 3 D 3
03 3 A 3
…Dst

Buatlah algoritma konsolidasi untuk menentukan :


a. jumlah mata kuliah dan SKS per mahasiswa
b. IPK/mahasiswa
c. IPK tertinggi dan terendah per mahasiswa

Judul : Algoritma Global Konsolidasi dengan Tanpa Separator (dengan penanganan file
kosong)
Kamus :

type Keytype : integer

type Valype : integer (0..100]

type rekaman : < NIM : keytype, {kunci}

Nilai : valtype {nilai ujian} >

Arsipsth. SEQPILE of {input, terurut menurut kunci}

(*) RekMhs : rekaman

(1) <9999999, 0>

Current_NIM : integer {identifikasi kategori yang sedang diproses}

SumNil : integer {jumlah nilai seluruh matakuliah seorg mhs}

NKkuliah : integer {Jumlah matakuliah seorang mahasiswa}

Algoritma :

{Inisialisasi : tidak ada}

OPEN (ArsipMhs ,RekMhs) {First_Elmt}

while (RekMhs .NIM != 9999999) {not EOP} do

{Proses satu kategori = 1 NIM }


SumNil ← 0 { Init_Categ}

NKuliah ← 0 { Init_Categ}

Current_NIM ← RekMhs.NIM

repeat

SumNil ←SuNil + RekMhs.Nilai

NKuliah ← Kuliah + 1 {Proses_Current_Categ}

READ {ArsipMhs ,RekMhs)

until (Current_NIM # RekMhs. NIM)

{ NIM != Current_NIM ,

NIM adalah elemen pertama dari Next_categ}

{Terminasi_Categ}

output (Current NIM, SumNil/NKuliah) ;

CLOSE (ArsipMhs)
3. Diketahui sebuah file sequential (Dengan Separator) yang berisi data nilai
mahasiswa sebagai berikut ini :
NIM KODE_M NILAI SKS
K
# 0 0 0
# 0 0 0
01 1 A 3
01 2 B 2
# 0 0 0
02 1 C 3
02 2 B 2
02 3 D 3
# 0 0 0
# 0 0 0
03 3 A 3
# 0 0 0
…Dst

Buatlah algoritma konsolidasi untuk menentukan :


a. jumlah mata kuliah dan SKS per mahasiswa
b. IPK per mahasiswa
c. IPK tertinggi dan terendah per Mahasiswa

Judul : algoritma konsolidasi Mahasiswa


Kamus :
- Type rekaman : <KeyIn : keytype, ValIn : valtype>
- ArsipIn : Sequential file
*Rekln : rekaman/record
1) (MARK,VAL) := EOF (.)
- Prosedur Inisialisasi_Seluruh_Kategori
- Prosedur Terminasi_Seluruh_Kategori
- Prosedur Kasus_mencari ipk
- Prosedur Inisialisasi_Kategori
- Prosedur Proses_Current_Kategori
- Prosedur Terminasi_Kategori
- Function Separator
Algortima :
Inisialisasi_Seluruh_Kategori
OPEN(ArsipIn,RekIn)

IF EOF(ArsipIn)
THEN
Kasus_mencari ipk {Mendefinisikan file mencari ipk}
ELSE
Inisialisasi_Seluruh_Kategori
REPEAT
WHILE (Not EOF) AND Separator(KeyIn)
DO
READ(ArsipIn,RekIn)
END WHILE
Inisialisasi_Kategori
WHILE (Not EOF) AND (Not Separator(KeyIn))
DO
Proses_Current_Kategori
READ(ArsipIn,RekIn)
END WHILE

Terminasi_Kategori
UNTIL EOF(ArsipIn)
Terminasi_Seluruh_Kategori {Menampilkan seluruh hasil}
CLOSE(ArsipIn)
END IF
4. Diketahui sebuah file sequential (Tanpa Separator) yang berisi data sebagai berikut
ini :
Kode_Sale Kode_Barang Tanggal_Jua Jumlah_Barang
s l
A01 01 11/11/2003 10
A01 03 12/11/2003 15
A01 05 12/11/2003 18
A02 03 10/11/2003 20
A02 05 10/11/2003 15
A03 01 11/11/2003 30
…Dst

Buatlah algoritma konsolidasi untuk menentukan :


a. jumlah barang yang dijual/sales
b. kode sales dengan jumlah penjualan barang paling banyak
c. jumlah barang yang paling banyak dijual/sales

Judul : membuat algoritma konsolidasi barang


 jumlah barang yang dijual/sales
 kode sales dengan jumlah penjualan barang paling banyak
 jumlah barang yang paling banyak dijual/sales

Kamus :

type Keytype : integer

type Valype : integer (0..100]

type rekaman : < kode sales : keytype, {kunci}

Nilai : valtype {barang} >

Arsipsth. SEQPILE of {input, terurut menurut kunci}

(*) Rekbarang : rekaman

Current_kode sales : integer {identifikasi kategori yang sedang diproses}

SumNil : integer {jumlah seluruh barang}

NKbarang : integer {Jumlah barang}


Algoritma :

{Inisialisasi : tidak ada}

OPEN (Arsipbarang ,Rekbarang) {First_Elmt}


while (Rekbarang .barang ) {not EOP} do

{Proses satu kategori = 1 barang }

SumNil ← 0 { Init_Categ}

Nbarang ← 0 { Init_Categ}

Current_barang ← Rekbarang.barang

repeat

Sumtanggal_jual ←Sutanggal_jual + Rekbarang.tanggal jual

Nbarang ← barang + 1 {Proses_Current_Categ}

READ {Arsipbarang ,Rekbarang)

until (Current_barang # Rekbarang. barang)

{ barang != Current_barang ,

barang adalah elemen pertama dari Next_categ}

{Terminasi_Categ}

output (Current barang, Sumtanggal_jual/Njumlah_barang) ;

CLOSE (Arsipbarang)
5. Diketahui sebuah file sequential (Tanpa Separator) yang berisi data sebagai berikut
ini :
Kode_Barang Kode_Sales Tanggal_Jual Jumlah_Barang
01 A01 11/11/2003 10
01 A03 12/11/2003 15
03 A02 12/11/2003 18
03 A02 10/11/2003 20
05 A01 10/11/2003 15
05 A03 11/11/2003 30
…Dst

Buatlah algoritma konsolidasi untuk menentukan :


a. jumlah barang yang dijual per barang
b. barang yang paling banyak dan paling sedikit terjual

Judul : algoritma konsolidasi untuk menentukan :


 jumlah barang yang dijual per barang
 barang yang paling banyak dan paling sedikit terjual
Kamus :

Rekaman: (barang : integer)

FileBarang :sequential file of


(*) Rek : Rekaman
(I) : (“…”)
EOF : Boolean (true jika Rek Barang + <” ”,0>)
Jumlah.Barang : Integer
Funetion seperator (K: keyType) → Boolean

Algoritma :

OPEN (FileBarang.Rek)
If EOf (FileBarang)
Then Output “File Kosong”
Else
Repeat
while (Not EOF) and seperator (KeyIn) do
Read (FileBarang.Rek)
EndWhile
Jumlah.Barang ← 0
While (Not EOF) and (Not sepetaroe KeyIn) do
Read (FileBarang.Rek)
EndWhile

Output “Jumlah Barang : “ .JumlahBarang


Until EOF (FileBarang)\

Close (FileBarang)

Anda mungkin juga menyukai