Selasa, 28 Februari 2012

Tutorial Turbo Pascal 7.0 Part9

Kita akan melanjutkan pembahasan tentang type ciptaan pada tutorial turbo pascal 7.0 Modul 9 ini yang akan membuat program anda lebih terstruktur didalam pengolahan data yang dikenal dengan istilah Record type.

Record type
Record type adalah suatu type data terstruktur yang merupakan pengelompokan beberapa type data lainnya.

Misalnya kita akan mengolah data nilai ujian pascal programming siswa sebagai berikut:

Nis
Nama
Tugas
Teori
Praktek
0123
Neztra Joe
100
90
100

Dari tabel diatas kita dapat menyusun variabel data sebagai berikut :
NIS : String[9];
NAMA : String[30];
Tugas, Teori, Praktek : Byte;
Misalnya jumlah siswa adalah 10 orang, maka kita perlu mendeklarasikan variable tersebut menjadi array:
Var
NIS : Array [1..10] Of String[9];
NAMA : Array [1..10] Of String[30];
Tugas, Teori, Praktek : Array [1..10] Of Byte;


Sedangkan kalau kita menggunakan fasilitas Record Type, maka :

Type
TSiswa = Record
NIS : String[9];
NAMA : String[30];
Tugas, Teori, Praktek : Byte;
End;
Var
Siswa : Array [1..10] of TSiswa;


Bukankan menjadi lebih sederhana dan terstruktur, tetapi bagaimana cara pemakaiannya dalam program ? Misalnya kita anda mengisi data untuk Siswa yang pertama.

Siswa[1].Nis := "02001";
Siswa[1].Nama := "Hendra Soewarno";
Siswa[1].Tugas := 80;
Siswa[1].Teori := 90;
Siswa[1].Praktek := 90;


Bisakah anda bayangkan kalau yang tidak pakai Record Type ! Adakah cara untuk melakukan hal yang sama ? Ya, kita dapat menggunakan block With … End;
Contoh ::
With Siswa[1] Do Begin
Nis := "02001";
Nama := "Hendra Soewarno";
Tugas := 80;
Teori := 90;
Praktek := 90;
End;


Untuk proses input-output sama saja dengan variabel biasanya.
Contoh :
For I := 1 To 10 Do Begin
Write('No. Induk siswa :'); Readln(Siswa[I].Nis);
Write('Nama siswa :'); Readln(Siswa[I].Nama);
Write('Tugas :'); Readln(Siswa[I].Tugas);
Write('Teori :'); Readln(Siswa[I].Teori);
Write('Praktek :'); Readln(Siswa[I].Praktek);
End;


For I := 1 To 10 Do Begin
With Siswa[I] Do Begin
Rata := (Tugas+Teori+Praktek)/3;
Write(Nis:9,' ');
Write(Nama:30,' ');
Write(Tugas:6:2,' ');
Write(Teori:6:2,' ');
Write(Praktek:6:2,' ');
Write(Rata:6:2);
End;
End;


Pengurutan data pada komputer
Mengurut data pada komputer membutuhkan algoritma, beberapa diantaranya adalah :
  1. Bubble Sort (Sangat sederhana tetapi lambat)
  2. Quick Sort (Cepat tetapi agak rumit)
  3. Shell Sort (Paling cepat tetapi sangat rumit)
Konsep kerja dari Bubble Sort
Konsep dasar bubble sort adalah memindahkan data yang lebih kecil ke depan, dengan cara membandingkan seluruh data.
Contoh ::
for i:=1 to NumberOfData-1 do
for j:=i+1 to NumberOfData do
if Data[i]>Data[j] then
begin
t:=Data[i];
Data[i]:=Data[j];
Data[j]:=t;
end;


Pada prinsipnya adalah ambil data ke 1, bandingkan dengan data ke 2, 3, 4, s/d jumlah data, jika data ke 1 lebih besar, maka pindah tempat. Selanjutnya dilakukan terhadap data ke 2, dengan data 3,4,5, s/d jumlah data Selanjutnya dilakukan terhadap data ke 3, dengan data 4,5,6 s/d jumlah data Proses yang sama dilakukan sampai terhadap data ke jumlah data – 1

Konsep kerja Shell Sort
Algoritma ini ditemukan oleh Donald Shell. Konsepnya adalah membandingkan data dengan jarak tertentu dalam array
Contoh ::
for gap:=(NumberOfData div 2) downto 1 do
for i:=1 to (NumberOfData-gap) do
if Data[i]>Data[i+gap] then
begin
t:=Data[i];
Data[i]:=Data[i+gap];
Data[i+gap]:=t;
end;


Misalnya kita ada 8 data, maka gap akan mulai dari 4 s/d 1.
Pada gap = 4, maka :
Bandingkan data 1 dengan 5, 2 dengan 6, 3 dengan 7, 4 dengan 8.
Pada gap =3, maka :
Bandingkan data 1 : 4, 2 : 5, 3 : 6, 4 : 7, 5 : 8
Pada gap = 2, maka :
Bandingkan data 1 : 3, 2 : 4, 3 : 5, 4 : 6, 5 : 7, 6 : 8
Pada gap = 1, maka :
Bandingkan data 1 : 2, 2 : 3, 3 : 4, 4 : 5, 5 : 6, 6 : 7, 7 : 8

Konsep Kerja Quick Sort
Algoritma ini merupakan metode pengurutan data yang tercepat didunia, yang ditemukan oleh E. Hoare. Algoritma ini menggunakan metode recursive. Prinsip kerjanya adalah membagi data menjadi dua bagian dengan data ditengah sebagai titik pivot. Pindahkan data sisi kiri yang lebih besar dari pada pivot dengan data sisi kanan yang lebih kecil dari pada pivot.
Contoh::
procedure qsort(lower, upper : byte)
var
left, right, pivot : byte;
begin
pivot:=Data[(lower+upper) div 2];
left:=lower;
right:=upper;
while left<=right do
begin
while Data[left] < pivot do left:=left+1; { Parting for left }
while Data[right] > pivot do right:=right-1;{ Parting for right}
if left<=right then { Validate the change }
begin
swap Data[left] with Data[right];
left:=left+1;
right:=right-1;
end;
end;
if right>lower then qsort(lower,right); { Sort the LEFT part }
if upper>left then qsort(left ,upper); { Sort the RIGHT part }
end;


Pemakaian : qsort(1,NumberOfData);

Sekian Dulu ya untuk Tutorial Turbo Pascal 7.0 nya. untuk melihat postingan sebelumnya tentang Turbo Pascal baca di Modul 8.

Tidak ada komentar:

Posting Komentar