LISTING PROGRAM
uses crt;
type data = array[1..100] of real;
statis = object
procedure input;
procedure regresi_yx;
procedure regresi_xy;
procedure menu;
end;
var i,n : integer;
a,b : real;
x,y,x2,y2,xy : data;
pil : char;
function sigma(k:data):real;
var dat : real;
begin
dat := 0;
for i:= 1 to n do
dat:=dat+k[i];
sigma:=dat;
end;
procedure statis.input;
begin
clrscr;
write('Banyaknya data : ');
readln(n);
writeln;
writeln('Nilai X : ');
writeln;
for i:= 1 to n do
begin
write('Nilai X-',i,' : ');
readln(x[i]);
end;
writeln;
writeln('Nilai Y : ');
writeln;
for i:= 1 to n do
begin
write('Nilai Y-',' : ');
readln(y[i]);
end;
for i:= 1 to n do
begin
x2[i]:=x[i]*x[i];
y2[i]:=y[i]*y[i];
xy[i]:=x[i]*y[i];
end;
readln;
end;
procedure statis.regresi_yx;
begin
clrscr;
a:=((sigma(y)*sigma(x2)) - ( sigma(x)*sigma(xy))) / ((n*sigma(x2) - sigma(x)*sigma(x)));
b:=(n*(sigma(xy))-(sigma(x)*sigma(y))) / ((n*sigma(x2))-(sigma(x)*sigma(x)));
writeln;
writeln('Regresi Y terhadap X');
Writeln('--------------------');
writeln;
writeln('a = ',a:4:2);
writeln('b = ',b:4:2);
writeln;
writeln('Y = ',a:4:2,'+ (',b:4:2,') X');
readln;
readln;
end;
procedure statis.regresi_xy;
begin
clrscr;
a:=((sigma(x)*sigma(y2))-(sigma(y)*sigma(xy))) / ((n*sigma(y2))-(sigma(y)*sigma(y)));
b:=(n*(sigma(xy))-(sigma(x)*sigma(y))) / ((n*sigma(y2))-sigma(y)*sigma(y));
writeln;
writeln('Regresi X terhadap Y');
Writeln('--------------------');
writeln;
writeln('a = ',a:4:2);
writeln('b = ',b:4:2);
writeln('X = ',a:4:2,'+ (',b:4:2,') Y');
readln;
readln;
end;
procedure statis.menu;
begin
repeat
clrscr;
writeln('Menu');
writeln('1. Input');
writeln('2. Regresi y terhadap x');
writeln('3. Regresi x terhadap y');
writeln('4. Keluar');
writeln('Masukkan pilihan anda : ');
read(pil);
case pil of
'1':begin
input
end;
'2':begin
regresi_yx
end;
'3':begin
regresi_xy
end;
'4':halt;
end;
until pil = '4';
readln;
end;
var s : statis;
begin
s.menu;
end.
PENJELASAN PROGRAM
Pada laporan akhir kali ini akan membahas mengenai regresi linier. Regresi linier adalah persamaan matematika yang memungkinkan kita meramalkan nilai-nilai suatu peubah tidak bebas dari nilai-nilai satu atau lebih peubah bebas. Pada listing program diatas terdapat beberapa procedure dan juga function. Procedure-procedure tersebut diantaranya function sigma dan beberapa procedure, yakni procedure statis.input, procedure statis.regresi_yx, procedure statis.regresi_xy, procedure statis.menu. Pada procedure menu berisi beberapa pilihan, yakni 1. input, 2. Regresi y terhadap x, 3. Regresi x terhadap y, dan 4. Keluar.
LOGIKA PROGRAM
uses crt;
type data = array[1..100] of real;
statis = object
procedure input;
procedure regresi_yx;
procedure regresi_xy;
procedure menu;
end;
var i,n : integer;
a,b : real;
x,y,x2,y2,xy : data;
pil : char;
Pada listing program ini, uses crt berfungsi apabila akan digunakan unit crt. Pertama-tama dalam membuat suatu program maka kita harus mendeklarasikan tipe data apa saja yang akan dipakai. Kita mendeklarasikan type data yakni bertipe array. Selain itu juga beberapa procedure yang akan dipakai, yakni procedure input, procedure regresi_yx, procedure regresi_xy dan procedure menu. Dan mita juga memakai beberapa variabel. i,n bertipe data integer, a, b bertipe data real kemudian juga ada x, y, x2, y2, xy dan juga ada pilihan yang bertipe data char.
function sigma(k:data):real;
var dat : real;
begin
dat := 0;
for i:= 1 to n do
dat:=dat+k[i];
sigma:=dat;
end;
Function sigma diatas berfungsi untuk mencari jumlah dari semua data yang telah dinput, dan bertipe data real. Rumus dari penjumlahan adalah dat:=dat+k[i];, dimana k:data dan sigma:=dat;. Data tersebut dimulai dari data 1 sampai dengan data ke-n.
procedure statis.input;
begin
clrscr;
write('Banyaknya data : ');
readln(n);
writeln;
writeln('Nilai X : ');
writeln;
for i:= 1 to n do
begin
write('Nilai X-',i,' : ');
readln(x[i]);
end;
writeln;
writeln('Nilai Y : ');
writeln;
for i:= 1 to n do
begin
write('Nilai Y-',' : ');
readln(y[i]);
end;
for i:= 1 to n do
begin
x2[i]:=x[i]*x[i];
y2[i]:=y[i]*y[i];
xy[i]:=x[i]*y[i];
end;
readln;
end;
Selanjutnya procedure statis.input. Procedure ini digunakan untuk memasukkan input dari data. Pada procedure input ini kita akan diminta untuk menginput nilai x dan nilai y, dimana pada masing-masing inputan dari nilai x dan y ini kita diminta untuk menginput atau memasukkan data x dan y tersebut melalui keyboard. Setelai itu kita diminta looping sesuai jumlah yang kita input sebelumnya. Selain itu juga kita menghitung nilai dari x2, y2, dan xy. Untuk menghitung nilai x2 kita menggunakan rumus x2[i]:=x[i]*x[i];, untuk menghitung y2 kita menggunakan rumus y2[i]:=y[i]*y[i];, sedangkan untuk menghitung xy kita menggunakan rumus xy[i]:=x[i]*y[i];.
procedure statis.regresi_yx;
begin
clrscr;
a:=((sigma(y)*sigma(x2)) - ( sigma(x)*sigma(xy))) / ((n*sigma(x2) - sigma(x)*sigma(x)));
b:=(n*(sigma(xy))-(sigma(x)*sigma(y))) / ((n*sigma(x2))-(sigma(x)*sigma(x)));
writeln;
writeln('Regresi Y terhadap X');
Writeln('--------------------');
writeln;
writeln('a = ',a:4:2);
writeln('b = ',b:4:2);
writeln;
writeln('Y = ',a:4:2,'+ (',b:4:2,') X');
readln;
readln;
end;
Procedure selanjutnya yakni procedure statis.regresi_yx. Procedure tersebut digunakan untuk menampilkan regresi y terhadap x. Program tersebut pertama-tama akan mencetak Regresi y terhadap x. Untuk menghitung nilai a menggunakan rumus :=((sigma(y)*sigma(x2)) - ( sigma(x)*sigma(xy))) / ((n*sigma(x2) - sigma(x)*sigma(x)));. Sedangkan untuk menghitung nilai b menggunakan rumus b:=(n*(sigma(xy))-(sigma(x)*sigma(y))) / ((n*sigma(x2))-(sigma(x)*sigma(x)));. Nilai a akan ditampilkan sebagai nilai dari x, sedangkan nilai b akan ditampilkan sebagai nilai dari y apabila perhitungan dari rumus tersebut telah selesai.
procedure statis.regresi_xy;
begin
clrscr;
a:=((sigma(x)*sigma(y2))-(sigma(y)*sigma(xy))) / ((n*sigma(y2))-(sigma(y)*sigma(y)));
b:=(n*(sigma(xy))-(sigma(x)*sigma(y))) / ((n*sigma(y2))-sigma(y)*sigma(y));
writeln;
writeln('Regresi X terhadap Y');
Writeln('--------------------');
writeln;
writeln('a = ',a:4:2);
writeln('b = ',b:4:2);
writeln('X = ',a:4:2,'+ (',b:4:2,') Y');
readln;
readln;
end;
Kemudian procedure statis.regresi_xy. Procedure tersebut digunakan untuk menampilkan regresi x terhadap y. Program tersebut pertama-tama akan mencetak Regresi x terhadap y. Untuk menghitung nilai a menggunakan rumus a:=((sigma(x)*sigma(y2))-(sigma(y)*sigma(xy))) / ((n*sigma(y2))-(sigma(y)*sigma(y)));, sedangkan untuk menghitung nilai b menggunakan rumus b:=(n*(sigma(xy))-(sigma(x)*sigma(y))) / ((n*sigma(y2))-sigma(y)*sigma(y));. Seperti halnya program diatas, pada program ini nilai a juga akan ditampilkan sebagai nilai dari x, sedangkan nilai b akan ditampilkan sebagai nilai dari y apabila perhitungan dari rumus tersebut telah selesai.
procedure statis.menu;
begin
repeat
clrscr;
writeln('Menu');
writeln('1. Input');
writeln('2. Regresi y terhadap x');
writeln('3. Regresi x terhadap y');
writeln('4. Keluar');
writeln('Masukkan pilihan anda : ');
read(pil);
case pil of
'1':begin
input
end;
'2':begin
regresi_yx
end;
'3':begin
regresi_xy
end;
'4':halt;
end;
until pil = '4';
readln;
end;
var s : statis;
begin
s.menu;
end.
Selanjutnya akan masuk pada procedure yang terakhir dalam listing program diatas yakni procedure menu. Di dalam procedure menu diatas akan menjalankan perintah repeat (perulangan), kemudian clrscr digunakan untuk membersihkan layar dan juga akan mencetak menu pilihan, yaitu 1. input, 2. Regresi y terhadap x, 3. Regresi x terhadap y, 4. Keluar. Dan juga menampilkan tulisan Masukkan pilihan anda :. Kemudian memasukan pilihan user ke var pil. Repeat (perulangan) di sini di gunakan agar menu tidak akan keluar atau berakhir sampai user memilih menu pil 4. Pada program procedure menu ini menggunakan case of,dimana menu pertama hanya sebagai penulisan input dan selanjutnya adalah memperlihatkan regresi y terhadap x dan juga regresi x terhadap y.
OUTPUT PROGRAM
Tampilan menu awal.
Tampilan apabila memilih menu 1 dan kita menginput banyaknya data sebanyak 4.
Tampilan apabila memilih menu 2. Regresi y terhadap x.
Tampilan apabila memilih menu 3. Regresi x terhadap y.
Tidak ada komentar:
Posting Komentar