Nih coding-coding algoritma 2 gw.
Operasi dengan array
program array_record;
{$APPTYPE CONSOLE}
uses
SysUtils;
type mhs = record
npm,nama :string;
tugas,uts,uas,na,ind :real;
end;
var mahasiswa :array[1..2]of mhs;
i,j:byte;
jm :integer;
function nakhir(a,b,c:real):real;
begin
nakhir:=0.2*a+0.3*b+0.5*c;
end;
function index(nilaiA:real):char;
begin
if (nilaiA>=85) then index:='A'
else if (nilaiA>=70) then index:='B'
else if (nilaiA>=60) then index:='C'
else if (nilaiA>=50) then index:='D'
else index:='E';
end;
begin
//input data
i:=1;
write('Nama : '); readln(mahasiswa[i].nama);
while (mahasiswa[i].nama <>'') do
begin
write('NPM : '); readln(mahasiswa[i].npm);
write('Tugas : '); readln(mahasiswa[i].tugas);
write('UTS : '); readln(mahasiswa[i].uts);
write('UAS : '); readln(mahasiswa[i].uas);
i:=i+1;
write('Nama : '); readln(mahasiswa[i].nama);
end;
//hitung nilai
jm:=i-1;
for j:=1 to jm do
mahasiswa[j].na:=nakhir(mahasiswa[j].tugas,mahasiswa[j].uts,mahasiswa[j].uas);
//tampil
writeln('----------------------------------------------------------');
writeln(' NPM Nama Tugas UTS UAS NA INDEX');
writeln('----------------------------------------------------------');
for j:=1 to jm do
begin
with mahasiswa[j] do
begin
ind:=index(mahasiswa[j].na);
writeln(npm:10,nama:20,tugas:7:0,uts:7:0,uas:7:0,na:7:0, ind);
end;
end;
writeln('----------------------------------------------------------');
readln;
end.
Operasi dengan File
{**************************************************
** File operation 1 written by Anta **
** -cara pertama- **
**************************************************
** - Read File **
** - Write File **
** - Search File **
**************************************************
** opensource & openmind project **
** http://soalanta.gk3.org (anta@gk3.org) **
****************************************************************
** Fungsi baru **
****************************************************************
** Uppercase(string) = untuk membesarkan semua char di string **
** eks 'Anta' -> 'ANTA' **
** Lowercase(string) = Sebaliknya **
** Fileexists(nfile) = menghasilkan true bila nfile(namafile) **
** ada dalam storage **
** Filesize(file) = Besar File (Bila file of byte) or **
** Jumlah Record (Bile file of record) **
** Filepos(file) = Posisi File dalam satuan record **
** (Bila file of record) **
** Seek(file,pos) = Lompat ke posisi pos dalam file **
** pos dalam satuan record **
** Rewrite(file) = Membuat ulang file, ati2 data yang **
** lama keapus lho! (kalo ada)... **
** AssignFile = Menandai bahwa file akan di tulis/baca **
** (file,namafile) pada/ke namafile **
****************************************************************
** mau tau lebih lanjut??? lu tanya aja ibu inge :p or baca **
** delphi help di "Help->Delphi Help" (Pedoman Gue Selalu) **
****************************************************************}
program soal_file;
{$APPTYPE CONSOLE}
uses
SysUtils;
type TData = Record
Nama : String[100];
// ati2 buat file tuh panjang string harus di cantumin
Kode : char;
Lama : integer;
End;
var key : char; // global variable
const ffile = 'cobacoba.dat'; // cuma biar lebih efisien (ga ditulis berulang2)
function gaji( kd:char): real;
begin
case kd of
'1' : gaji:= 1000000;
'2' : gaji:= 100000;
'3' : gaji:= 3000000
else gaji := 0;
end;
end;
function jabatan(kd : char): string;
begin
case kd of
'1' : Jabatan:= 'Manager';
'2' : Jabatan:= 'Supervisor';
'3' : Jabatan:= 'Staff'
else jabatan := '';
end;
end;
function lembur(lm:integer; gj:real): real;
begin
if lm>40 then lembur:= (lm-40)* (0.1*gj)
else lembur:=0;
end;
procedure TambahData;
var F : file of TData; // file of
D : TData; // data
begin
AssignFile(F, ffile);
// cek file dah ada ato belom
if not Fileexists(ffile) then ReWrite(F) // buat file
else
Begin
Reset(F); // buka file
Seek(F,Filesize(F)) // Lompat ke Posisi Paling Akhir
End;
Write('Nama : ');Readln(D.Nama);
while (D.Nama <> '') do
begin
Write('Kode : ');Readln(D.Kode);
write('Lama kerja : ');readln(D.lama);
Write(F, D); // tulis ke file
Writeln;
Write('Nama : ');Readln(D.Nama);
end;
CloseFile(F);
end;
procedure cetakdata;
var F : file of TData; // file of
D : TData; // data
tgj : Real;
begin
AssignFile(F, ffile);
// cek file dah ada ato belom
if Fileexists(ffile) then
Begin
Reset(F); // buka file
writeln('====================================================================');
Writeln(' Kode | Nama | Jabatan | Gaji | Lembur | Totalgaji');
writeln('====================================================================');
While not EOF(F) Do
Begin
Read(F, D); // baca dari file ke record D
with D do
begin
tgj := gaji(kode)+lembur(lama,gaji(kode));
Writeln(' ',kode:5, ' | ', Nama:10,' | ', Jabatan(kode):10,' | ', gaji(kode):8:0,' | ', lembur(lama,gaji(kode)):8:0,' | ',Tgj:9:0);
end;
End;
writeln('====================================================================');
CloseFile(F); // jangan lupa tutup file;
End else Writeln('File ga ada tuh...');
Writeln;
end;
procedure caridata;
var F : file of TData; // file of
D : TData; // data
ncari : string;
ketemu: boolean;
begin
ketemu := false;
Write('Nama yang dicari? ');Readln(ncari);
AssignFile(F, ffile);
// cek file dah ada? dan ncari bukan ''
if Fileexists(ffile) and (ncari <> '') then
Begin
Reset(F); // buka file
// loop ampe ujung file dan 'not ketemu'
While (not EOF(F)) and (not ketemu) Do
Begin
// baca dari file
Read(F, D);
// capital(D) = capital(ncari)? >yoi?! set ketemu = true
if Uppercase(D.Nama) = Uppercase(ncari) then
ketemu := true;
End;
if ketemu then Writeln('Data ditemukan di posisi ',FilePos(F))
else Writeln('Data ga ketemu...');
CloseFile(F); // jangan lupa tutup file;
End
else Writeln('File ga ada tuh ato nama ga diisi...');
Writeln;
end;
begin
repeat
Writeln;
Writeln('---------[ MENU ]---------');
Writeln('1. Tambah Data');
Writeln('2. Cari Data');
Writeln('3. Cetak Data');
Writeln('4. Keluar');
Writeln;
write('pilihan : ');readln(key);
Writeln;
case key of
'1' : TambahData;
'2' : Caridata;
'3' : cetakdata;
end;
until key='4'; // looping terus sampe key = 4
Writeln('dadah...');
end.
Operasi File 2
{**************************************************
** File operation 2 written by Anta **
** -cara kedua- **
**************************************************
** - Read File - Fillchar (opsional) **
** - Write File **
** - Search File **
**************************************************
** opensource & openmind project **
** http://soalanta.gk3.org (anta@gk3.org) **
****************************************************************
** Fungsi baru **
****************************************************************
** Fillchar(variable,length,char) = membanjiri variable **
** tertentu dengan suatu char**
** SizeOf(variable) = Besar ukuran suatu **
** variable dalam byte **
****************************************************************}
program soal_file2;
{$APPTYPE CONSOLE}
uses
SysUtils;
type TData = Record
Nama : String[100];
// ati2 buat file tuh panjang string harus di cantumin
Kode : char;
Lama : integer;
Lembur : Real;
TotalGaji : Real;
End;
var key : char; // global variable
const ffile = 'cobacob2.dat'; // cuma biar lebih efisien (ga ditulis berulang2)
function gaji( kd:char): real;
begin
case kd of
'1' : gaji:= 1000000;
'2' : gaji:= 100000;
'3' : gaji:= 3000000
else gaji := 0;
end;
end;
function jabatan(kd : char): string;
begin
case kd of
'1' : Jabatan:= 'Manager';
'2' : Jabatan:= 'Supervisor';
'3' : Jabatan:= 'Staff'
else jabatan := '';
end;
end;
function hlembur(lm:integer; gj:real): real;
begin
if lm>40 then hlembur:= (lm-40)* (0.1*gj)
else hlembur:=0;
end;
procedure TambahData;
var F : file of TData; // file of
D : TData; // data
begin
AssignFile(F, ffile);
// cek file dah ada ato belom
if not Fileexists(ffile) then ReWrite(F) // buat file
else
Begin
Reset(F); // buka file
Seek(F,Filesize(F)) // Lompat ke Posisi Paling Akhir
End;
FillChar(D,SizeOf(D), 0); // mengosongkan seluruh data D
Write('Nama : ');Readln(D.Nama);
while (D.Nama <> '') do
begin
Write('Kode : ');Readln(D.Kode);
write('Lama kerja : ');readln(D.lama);
Write(F, D); // tulis ke file
Writeln;
FillChar(D,SizeOf(D), 0); // mengosongkan seluruh data D
Write('Nama : ');Readln(D.Nama);
end;
CloseFile(F);
end;
procedure calcdata;
var F : file of TData; // file of
D : TData; // data
begin
AssignFile(F, ffile);
// cek file dah ada ato belom
if Fileexists(ffile) then
Begin
Reset(F); // buka file
While not EOF(F) Do
Begin
Read(F, D); // baca dari file ke record D
with D do
begin
Lembur := hlembur(lama,gaji(kode)); // kalkulasi lebur
TotalGaji := gaji(kode)+lembur; // kalkulasi totalgaji
end;
Seek(F,FilePos(F)-1); // lompat ke posisifile -1
Write(F, D); // timpa posisifile dengan data record
End;
Writeln('Kalkulasi berhasil...');
CloseFile(F); // jangan lupa tutup file;
End else Writeln('File ga ada tuh...');
Writeln;
end;
procedure cetakdata;
var F : file of TData; // file of
D : TData; // data
begin
AssignFile(F, ffile);
// cek file dah ada ato belom
if Fileexists(ffile) then
Begin
Reset(F); // buka file
writeln('====================================================================');
Writeln(' Kode | Nama | Jabatan | Gaji | Lembur | Totalgaji');
writeln('====================================================================');
While not EOF(F) Do
Begin
Read(F, D); // baca dari file ke record D
with D do
begin
Writeln(' ',kode:5, ' | ', Nama:10,' | ', Jabatan(kode):10,' | ', gaji(kode):8:0,' | ', lembur:8:0,' | ',Totalgaji:9:0);
end;
End;
writeln('====================================================================');
CloseFile(F); // jangan lupa tutup file;
End else Writeln('File ga ada tuh...');
Writeln;
end;
procedure caridata;
var F : file of TData; // file of
D : TData; // data
ncari : string;
ketemu: boolean;
begin
ketemu := false;
Write('Nama yang dicari? ');Readln(ncari);
AssignFile(F, ffile);
// cek file dah ada? dan ncari bukan ''
if Fileexists(ffile) and (ncari <> '') then
Begin
Reset(F); // buka file
// loop ampe ujung file dan 'not ketemu'
While (not EOF(F)) and (not ketemu) Do
Begin
// baca dari file
Read(F, D);
// capital(D) = capital(ncari)? >yoi?! set ketemu = true
if Uppercase(D.Nama) = Uppercase(ncari) then
ketemu := true;
End;
if ketemu then Writeln('Data ditemukan di posisi ',FilePos(F))
else Writeln('Data ga ketemu...');
CloseFile(F); // jangan lupa tutup file;
End
else Writeln('File ga ada tuh ato nama ga diisi...');
Writeln;
end;
begin
repeat
Writeln;
Writeln('---------[ MENU ]---------');
Writeln('1. Tambah Data');
Writeln('2. Cari Data');
Writeln('3. Cetak Data');
Writeln('4. Calc Data');
Writeln('5. Keluar');
Writeln;
write('pilihan : ');readln(key);
Writeln;
case key of
'1' : TambahData;
'2' : Caridata;
'3' : cetakdata;
'4' : calcdata;
end;
until key='5'; // looping terus sampe key = 4
Writeln('dadah...');
end.
kalo ada yang kelewat, error, ga ngerti tentang algoritma 2 posting ke thread ini aja.