Sabtu, 26 November 2011

SORTING DATA

Sorting adalah proses pengurutan data yang sebelumnya disusun secara acak sehingga menjadi tersusun secara teratur menurut suatu aturan tertentu.

Ada beberapa macam metode pengurutan data diantaranya :
  1. Bubble Sort
  2. Selection Sort
  3. Insertion Sort
  4. Merge Sort
  5. Quick Sort
Tetapi, dalam hal ini kelompok kami membuat sebuah program sortir data mahasiswa berdasarkan nama dan kelas dengan metode Quick Sort, berikut adalah sekilas tentang penjelasannya.

Quick Sort

Adalah algoritma yang dijalankan sebagai akibat dari terlalu banyaknya daftar yang diurutkan, dengan menghasilkan lebih banyak daftar yang diurutkan sebagai output. Algoritma merge ini disesuaikan untuk mesin drive tape. Penggunaannya dalam akses memori acak besar yang terkait telah menurun, karena banyak aplikasi algoritma merge yang mempunyai alternatif lebih cepat ketika kamu memiliki akses memori acak yang menjaga semua data. Hal ini disebabkan algoritma ini membutuhkan setidaknya ruang atau memori dua kali lebih besar karena dilakukan secara rekursif dan memakai dua tabel.
Algoritma merge sort membagi tabel menjadi dua tabel yang sama besar. Masing-masing tabel diurutkan secara rekursif, dan kemudian digabungkan kembali untuk membentuk tabel yang terurut. Implementasi dasar dari algoritma merge sort memakai tiga buah tabel, dua untuk menyimpan elemen dari tabel yang telah di bagi dua dan satu untuk menyimpan elemen yang telah terurut. Namun algoritma ini dapat juga dilakukan langsung pada dua tabel, sehingga menghemat ruang atau memori yang dibutuhkan.

Algoritma Merge umumnya memiliki satu set pointer p0..n yang menunjuk suatu posisi di dalam satu set daftar L0..n . Pada awalnya mereka menunjuk item yang pertama pada setiap daftar.


Berikut ini adalah programnya, lalu ketikanlah pada Software Pascal :

{$A+,B-,D+,E-,F-,I+,L+,N-,O-,R-,S+,V+}
{$M 16384,0,655360}
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 masukkan 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 PASCAL >'); 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. FANI TAMALA      ( 32110596 )');
GOTOXY(27,11);WRITE('|'); GOTOXY

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

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

(68,13);WRITE('|');
gotoxy(29,13);WRITELN('4. WINDY KUSUMA P.  ( 39110847 )');
GOTOXY(27,14);WRITE('|');GOTOXY

(68,14);WRITE('|');
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:larikurut;
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 TIDAK DITEMUKAN <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.  


Dibawah ini adalah tampilan pada Software Pascal :


Setelah program tersebut diketikkan pada Software Pascal, maka tekan Ctrl + F9 untuk proses running dan melihat hasil ( output ) dari program tersebut. Terlihat  tampilan <<< MENU FILE >>> diikuti dibawahnya muncul beberapa pilihan,  kalau mengetik angka 1 disamping tulisan 'Pilihan' maka artinya memilih untuk menginput data. Perhatikan gambar dibawah ini :


Jika sudah mengetikkan angka 1 pada pilihan lalu klik ENTER, maka akan menginputkan :
npm  :
kelas :
nama :
save file ...y/n? 
Ini dimaksudkan untuk menginputkan npm, nama, dan kelas yang akan diurutkan datanya. Jika klik y pada save file, maka data yang sudah kita masukkan akan tersimpan. Perhatikan gambar dibawah ini :

Setelah menginput data, kembalilah ke menu utama dengan menekan ENTER. Lalu pilih menu nomor 2 untuk memilih data acak. Berikut adalah tampilannya :


Tampilan setelah mengetik pada pilihan nomor 2 ( ENTER ), maka tampilannya sebagai berikut :


Lalu kembali ke menu utama lagi, selanjutnya pilih menu nomor 3 ( ENTER ) yaitu sortir nama. Maka data akan tersortir berdasarkan Nama. Perhatikan gambar berikut :


Kembali ke menu utama lagi, selanjutnya pilih menu nomor 4 ( ENTER ) yaitu sortir kelas. Maka data akan tersortir berdasarkan Kelas. Perhatikan gambar berikut :





Kembali lagi ke menu utama, selanjutnya pilih menu nomor 5 ( ENTER ) yaitu  menampilkan kelas. Harus menginputkan kelas yang ingin dilihat datanya, setelah itu data yang diinputkan akan muncul. Perhatikan gambar berikut :


Contoh mengetikkan kelas 1AB13 disamping tulisan 'kelas : '
Perhatikan gambar berikut :
 

Lalu klik ENTER disamping tulisan kelas:1AB13. Lihat gambar dibawah ini :


Untuk mengakhiri program, kembali lagi ke menu utama lalu pilih menu nomor 6 yaitu Selesai. Setelah di klik ENTER maka akan terlihat Nama Anggota Kelompok yang membuat Program ini. Perhatikan gambar dibawah :




S e k i a n

Tidak ada komentar:

Posting Komentar