Rabu, 09 November 2011

PROGRAM SORTING DATA

Sorting data yaitu suatu cara dimana kita ingin mengurutkan sebuah data sesuai keinginan kita. Dalam bahasa pascal ada banyak macam cara untuk mensortir data yaitu quick sort,bubble sort,selection sort, dan sebagainya. Dalam hal ini kelompok kami membuat sebuah program sortir data mahasiswa berdasarkan nama dan kelas dengan metode Quick Sort. Berikut adalah programnya :

(ketiklah program berikut ke dalam pascal)


program kelompok__2db01;
uses crt;
label awal;
var
oke:char;
type
tipelarik=string[25];
larikurut=array[1..100] of

tipelarik;



procedure masukkan;
label akhir;
const b='            ';
type mhs= record
npm:string[8];kelas:string

[5];nm:string[12];
end;
var vfilemhs:file of mhs;
recmhs:mhs; i:integer; oke:char;
begin
clrscr;
assign(vfilemhs,'kelompok.TXT');
{$i-}reset(vfilemhs);{$i+}

if ioresult <> 0 then rewrite

(vfilemhs);
i:=filesize(vfilemhs);
with recmhs do
begin
write('npm :');readln(npm);
while (npm <>'') and (length

(npm)=8)do
begin
write ('kelas :');readln(kelas);
if length(kelas)<5 then
goto akhir;
write('nama :');readln(nm);
 if length(nm) <12 then
nm:=concat(nm,b);

repeat
write('save file ...

y/n?');readln(oke);
until oke in ['Y','y','n','N'];
if oke in ['y','Y'] then
 begin
seek(vfilemhs,i);write

(vfilemhs,recmhs);inc(i);
end;
akhir
:writeln;
write('npm:');readln(npm);

end;
writeln('data yang anda masukin

salah');
end;
close(vfilemhs);readln;
end;


procedure quicksort(var

x:larikurut;  bawah,atas:word);
var i,j:word;
sementara:tipelarik;
begin
while atas>bawah do
begin
i:=bawah;
j:=atas;
sementara:=x[bawah];
while i<j do
begin
   WHILE x[J]>sementara

Do
             J:=J-1;
    x[i]:=x[j];
             while(i<j) and (x

[i]<=sementara) do
             i:=i+1;
    x[j]:=x[i];
    end;
    x[i]:=sementara;
        quicksort(x,bawah,i-1);
        bawah:=i+1;
        end;
        end;


PROCEDURE GARIS;
BEGIN
 writeln

('-------------------------------

---------');
END;
procedure kelompok;
begin
clrscr;
GOTOXY(28,4);
GARIS;
GOTOXY(27,5);WRITE('|');  GOTOXY

(68,5);WRITE('|');
GOTOXY(27,6);WRITE('|');  GOTOXY

(68,6);WRITE('|');
gotoxy(35,6);writeln('<<<KELOMPOK

 PEMROGRAMAN >>>'); GOTOXY

(68,7);WRITE('|');
GOTOXY(27,7);WRITE('|'); GOTOXY

(68,7);WRITE('|');
GOTOXY(47,7);WRITELN

('2DB01');GOTOXY(68,8);WRITE

('|');
GOTOXY(27,8);WRITE('|');GOTOXY

(68,9);WRITE('|');
GOTOXY(27,9);WRITE('|'); GOTOXY

(68,10);WRITE('|');
GOTOXY(28,9);GARIS;
GOTOXY(27,10);WRITE('|');
gotoxy(29,10);WRITELN('1.

ASTRI');
GOTOXY(27,11);WRITE('|'); GOTOXY

(68,11);WRITE('|');
gotoxy(29,11);WRITELN('2. DWI');
GOTOXY(27,12);WRITE('|');GOTOXY

(68,12);WRITE('|');
gotoxy(29,12);WRITELN('3. IMAM');
GOTOXY(27,13);WRITE('|');GOTOXY

(68,13);WRITE('|');
gotoxy(29,13);WRITELN('4. MAYA');
GOTOXY(27,14);WRITE('|');GOTOXY

(68,14);WRITE('|');
gotoxy(29,14);WRITELN('5. MILA');
GOTOXY(28,15);
GARIS;

END;
procedure tampilan(var x:char);
type
mhs=record
npm:string[8];
kelas:string[5];
nm:string[12];

end;label awal,akhir,empat;
var
gabung,gabung1,name,npms,class:la

rikurut;
vfilemhs: file of mhs;
recmhs:mhs;
i,J:integer;temp:STRING[5];
COBA:CHAR;
begin
awal:
clrscr;
assign(vfilemhs,'kelompok.txt');
reset(vfilemhs);
for i:= 1 to filesize(vfilemhs)

do
begin
seek(vfilemhs,i-1);
read(vfilemhs,recmhs);
name[i]:=recmhs.nm;
class[i]:=recmhs.kelas;
npms[i]:=recmhs.npm;
gabung[i]:=concat(name[i],npms

[i],class[i]);
gabung1[i]:=concat(class[i],name

[i],npms[i]);

end;
J:=2;
if x='2' then
quicksort(gabung,1,filesize

(vfilemhs));
if x='3' then
quicksort(gabung1,1,filesize

(vfilemhs));
if x='4' then
begin
              quicksort

(gabung1,1,filesize(vfilemhs));
              write('kelas

:');readln(temp);
              IF LENGTH(TEMP)<>5

THEN
              BEGIN
              clrscr; gotoxy

(28,10);repeat writeln('SEARCH

KELAS TIDAH DI TEMUKAN <ULANGI

(y/n)!!>');readln(coba);
              until COBA in

['Y','y','n','N'];
              if COBA in

['y','Y'] then
              goto AWAL else goto

akhir;
              end;

              clrscr;
             gotoxy

(30,2);writeln('KELAS :',temp);
             gotoxy

(29,3);writeln('DAFTAR

MAHASISWA');
             goto empat;
             end;



clrscr;
empat:
GOTOXY (23,4);
GARIS;
GOTOXY (23,6);
writeln('|no  npm        kelas  

nama        |');
GOTOXY (23,8);
GARIS;
writeln;

for i:=1 to filesize(vfilemhs)

do
begin
if (name[i]<>'') then  begin
if x='1' then  BEGIN
GOTOXY (23,I+9);writeln

('|',i:2,'| ',copy(gabung

[i],13,8),'   ',copy(gabung

[i],21,5) ,'    ',copy(gabung

[i],0,12),'|'); END;
if x='2' then  BEGIN
GOTOXY (23,I+9);writeln

('|',i:2,'| ',copy(gabung

[i],13,8),'   ',copy(gabung

[i],21,5) ,'    ',copy(gabung

[i],0,12));   END;
if x='3' then  BEGIN
GOTOXY (23,I+9);writeln

('|',i:2,'| ',copy(gabung1

[i],18,8),'   ',copy(gabung1

[i],0, 5) ,'    ',copy(gabung1

[i],6,12));END;
if (x='4') and (copy(gabung1

[i],1,5)=temp) then  BEGIN
GOTOXY (23,I+9);writeln

('|',i:2,'| ',copy(gabung1

[i],18,8),'   ',copy(gabung1

[i],0, 5) ,'    ',copy(gabung1

[i],6,12));END;

end;
J:=I+10;
end;
GOTOXY(23,J);GARIS;
akhir:
end;

var
m:char;
begin

awal:
clrscr;
GOTOXY (28,3);WRITELN('<<< MENU

FILE >>>');
GOTOXY (28,5);writeln('1 INPUT

DATA');

GOTOXY (28,6);writeln('2 DATA

ACAK');
GOTOXY (28,7);writeln('3 SORTIR

NAMA');
GOTOXY (28,8);writeln('4 SORTIR

KELAS');
GOTOXY (28,9);writeln('5

MENAMPILKAN KELAS');
GOTOXY(28,10);WRITELN('6

SELESAI');

GOTOXY (28,12);write('PILIHAN

?');readln(oke);
IF NOT (OKE IN ['1'..'6']) THEN
BEGIN
WRITELN(CHAR(7));
GOTOXY (28,13);WRITELN('PILIHAN

SALAH !!!');
READLN;
GOTO awal;
END;
case oke of
'1':begin masukkan;goto awal;

end;
'2':BEGIN m:='1';tampilan

(m);readln;goto awal; end;
'3':begin m:='2';tampilan

(m);readln;goto awal; end;
'4':begin m:='3';tampilan

(m);readln;goto awal; end;
'5':begin m:='4' ;tampilan(m);

readln;goto awal; end;
'6':begin kelompok; end;
end;
readln;
end.


Tampilan pada pascal :



setelah program diketik, kemudian RUN dengan menekan CTRL+F9, maka akan tampil seperti berikut :
kemudian dalam tampilan tersebut (MENU FILE), pada pilihan ketik angka 1.artinya kita akan memilih menu INPUT DATA. Kemudian tekan ENTER, maka kita akan diperintahkan untuk menginput data. Data yang saya input sebagai berikut :





setiap data yang kita input akan disimpan (save) apabila kita pilih Y. Setelah menginput, kembali ke menu awal dengan menekan ENTER. Maka akan kembali ke menu utama. Kemudian pilih menu no 2 untuk data acak.




tampilannya sebagai berikut :


Untuk menginput data lagi, kita cukup kembali ke menu utama dan pilih menu no 1 yaitu menu INPUT DATA. Kemudian kita tinggal input data kembali sebagai contoh saya menginput data sebagai berikut :



otomatis data akan bertambah apabila kita save data yang baru saja kita input tadi. Sehingga ketika kita kembali ke menu utama dan memilih menu DATA ACAK, data mengalami penambahan.




selanjutnya kembali ke menu utama lagi, pilih menu no 3 SORTIR NAMA. Maka data akan tersortir berdasarkan nama.






selanjutnya kembali ke menu utama lagi, pilih menu no 4 SORTIR KELAS. Maka data akan tersortir berdasarkan kelas.





selanjutnya kembali ke menu utama lagi, pilih menu no 5 MENAMPILKAN KELAS. Input kelas yang ingin kita lihat datanya. Maka data di kelas yang kita input tadi akan muncul. Disini saya ambil contoh kelas 2db01








untuk mengakhiri program, kembali ke menu utama pilih menu no 6 yaitu SELESAI. Maka akan muncul nama-nama kelompok kami yang membuat program ini.





Tidak ada komentar:

Posting Komentar