Jumat, 30 September 2011

SIMULASI PENDARATAN PESAWAT DENGAN TURBO PASCAL 7.1

----|||--
Simulasi dengan turbo pascal memerlukan beberapa hal.
Pertama memerlukan perhitungan dalam analisis hasil dari simulasi yang bekerja

Dalam simulasi ini misalnya digunakan permasaan umum Newton F=m.a
f merupakan gaya
m merupakan massa
a merupakan percepatan.
Simulasi ini misalnya memerlukan apa saja yang mempengaruhi dalam pendaratan,diantara dapat kita tentukan suhu udara untuk menentukan kerapatan udara
sedangkan kecepatan udara tidak kita perhatikan.



-----------------------------------------------------------------
Simulasi ini kita siapkan program pesawat dan nantinya program tersebut kita masukkan


{pesawat siap dipanggil}
procedure pesawat;
begin
vt:=10000;
i:=1;
massa:=10/(1.020*suhu);{penentuan kerapan udara}
d:=b-(a/massa);{kecepatan saat di rem}
while i<=d do
begin
i:=i+1;
bar(i,180,(40+i),190); {bentuk pesawat}
bar((30+i),170,(35+i),200);{sayap pesawat}
bar(10, 150,(c+50), 160);{bentuk landasan tambah 50 meter}
bar(10, 220,(c+50), 230);{bentuk landasan tambah 50 meter}
delay(vt-b);
clearDevice;
delay(vt-b);

{analisa saat kecelakaan}
if d>=c then {bila kecepatan melebihi panjang landasan}
begin
OutTextXY(90,300,'Pesawat Kecelakaan');

xmax:=GetmaxX;
yMax:=GetmaxY;
{garis koordinat grafik}
Line(xmax div 10,0, xmax div 10,ymax);
Line(0,ymax div 2, xmax,ymax div 2);

{angka koordinat y}
OutTextXY(45,165,'5');
OutTextXY(45,180,'4');
OutTextXY(45,195,'3');
OutTextXY(45,210,'2');
OutTextXY(45,225,'1');
OutTextXY(40,250,'-1');
OutTextXY(40,265,'-2');
OutTextXY(40,280,'-3');
OutTextXY(40,295,'-4');
OutTextXY(40,310,'-5');

{pembuatan Analisa Grafik}
a:=1;
while i<=d do  {analisa perulangan}
begin
a:=a+1;
For i := 0 to (i+10)  do  {letak pembuatan animasi}
Begin
Y1 := round((d-i)*cos((d-i)*pi/180));
Y := GetMaxY div 2-y1;
PutPixel(i+xmax div 10,y,GetMaxColor);
rectangle(255,292,(256+i),308);
{loading}
rectangle(85,290,250,310);
rectangle(250,290,GetMaxX,310);
delay(20);{kecepatan animasi minimal 20}
delay(20);
end;
end;
end;
end;
end;

-----------------------------------------------------------------

Program yang kita perlukan selanjutnya Program memasukkan data

{program pembukaan mulai}
procedure awal;
begin
setColor(blue);
rectangle(5,30,400,100);
OutTextXY(10,35, 'Kekuatan Rem      :           Newton');
OutTextXY(10,50, 'Kecepatan pesawat :           m/s');
OutTextXY(10,65, 'Panjang Landasan  :           m');
OutTextXY(10,85, 'Suhu Udara        :           Celcius');
write('                     '); readln(a);{Kekuatan rem}
write('                     '); readln(b);{Kecepatan peswat}
write('                     '); readln(c);{panjang landasan}
write('                     '); readln(suhu);{suhu udara}
end;
-----------------------------------------------------------------
Dari Program yang diatas masukkan ke dalam Program utama seperti gambar



gambar 2

Alasan kita menggunakan procedure agar program tersebut tidak mempengaruhi program utama selama tidak diaktifkan.

-----------------------------------------------------------------
Keseluruhan isi program simulasi
-----------------------------------------------------------------
program simulasiPesawatMendarat;
uses
graph, crt;
var
a,d,t,e,suhu, massa:real;{a rem, b kecepatan, d hasil, massa udara}
i,f,c,b,y,y1,v,vt,xmax,ymax, gd, gm:integer;{i perulangan, f pilihan, c landasan}

{pesawat siap dipanggil}
procedure pesawat;
begin
vt:=10000;
i:=1;
massa:=10/(1.020*suhu);{penentuan kerapan udara}
d:=b-(a/massa);{kecepatan saat di rem}
while i<=d do
begin
i:=i+1;
bar(i,180,(40+i),190); {bentuk pesawat}
bar((30+i),170,(35+i),200);{sayap pesawat}
bar(10, 150,(c+50), 160);{bentuk landasan tambah 50 meter}
bar(10, 220,(c+50), 230);{bentuk landasan tambah 50 meter}
delay(vt-b);
clearDevice;


{analisa saat kecelakaan}
if d>=c then {bila kecepatan melebihi panjang landasan}
begin
OutTextXY(90,300,'Pesawat Kecelakaan');

xmax:=GetmaxX;
yMax:=GetmaxY;
{garis koordinat grafik}
Line(xmax div 10,0, xmax div 10,ymax);
Line(0,ymax div 2, xmax,ymax div 2);

{angka koordinat y}
OutTextXY(45,165,'5');
OutTextXY(45,180,'4');
OutTextXY(45,195,'3');
OutTextXY(45,210,'2');
OutTextXY(45,225,'1');
OutTextXY(40,250,'-1');
OutTextXY(40,265,'-2');
OutTextXY(40,280,'-3');
OutTextXY(40,295,'-4');
OutTextXY(40,310,'-5');

{pembuatan Analisa Grafik}
a:=1;
while i<=d do  {analisa perulangan}
begin
a:=a+1;
For i := 0 to (i+10)  do  {letak pembuatan animasi}
Begin
Y1 := round((d-i)*cos((d-i)*pi/180));
Y := GetMaxY div 2-y1;
PutPixel(i+xmax div 10,y,GetMaxColor);
rectangle(255,292,(256+i),308);
{loading}
rectangle(85,290,250,310);
rectangle(250,290,GetMaxX,310);
delay(20);{kecepatan animasi 500}
delay(20);
end;
end;
end;
end;
end;

{program pembukaan mulai}
procedure awal;
begin
setColor(blue);
rectangle(5,30,400,100);
OutTextXY(10,35, 'Kekuatan Rem      :           Newton');
OutTextXY(10,50, 'Kecepatan pesawat :           m/s');
OutTextXY(10,65, 'Panjang Landasan  :           m');
OutTextXY(10,85, 'Suhu Udara        :           Celcius');
write('                     '); readln(a);{Kekuatan rem}
write('                     '); readln(b);{Kecepatan peswat}
write('                     '); readln(c);{panjang landasan}
write('                     '); readln(suhu);{suhu udara}
end;

begin {program utama}
gd:=detect;
initGraph(gd, gm,'');
repeat
setColor(red);
bar(0,0,700,10);
bar(0,470,700,500);
OutTextXY(10,20, 'Mulai tekan 1, Hapus Tekan 2, exit Tekan Huruf dan enter :');
GotoXY(60,2);
readln(f);
if f=1 then {jika 1 panggil program awal dan pesawat}
begin
awal;{program awal dipanggil}
pesawat;{program pesawat dipanggil}
end;
if f=2 then {jika 2 hapus program}
begin
clearDevice;
clearViewPort;{hapus}
clearDevice;
end;
until KeyPressed;
closeGraph;
end.

--------------------------------------------------------------------
Dalam simulasi diatas masih banyak kekurangan, selanjutnya untuk simulasi yang lain dapat kalian buat dengan berpatokan dari perhitungan yang digunakan.

Dalam Pemindahan File Pesawat, misal ke D dengan menyertakan file EGAVGA dan CGA. Seperti Gambar Di bawah




Silahkan unduh file download Pesawat windows XP
download Turbbo Pascal 7.1 For Windows XP TERIMA KASIH

Sabtu, 24 September 2011

ANIMASI DENGAN TURBO PASCAL 7.1

Turbo pascal merupakan program pembuatan tampilan komputer dan dapat dibilang merupakan visual pascal.
Pada pembahasan sebelumnya sudah dibahas macam-macam bentuk gambar, dalam pembahasan ini bagaimana membuat animasi dengan menggunakan pascal yang hanya merupakan program. Lebih jelas Contoh awal dari pembuatan animasi seperti penjelasan dibawah

Membuat tulisan bergerak ke kanan dengan program berikut:
program TulisanKeKanan;
uses
graph, crt;
var
a, gd, gm:integer;
begin
gd:=cga;
gm:=cgahi;
initgraph(gd,gm,'');
repeat;

a:=1;
while a<=600 do {teks berpindah sejauh 600 ukuran layar}
begin
a:=a+1;
OutTextXY((10+a),100,'Bergerak kekanan'); {letak pembuatan animasi}
delay(1000); {Kecepatan sebesar 1000}
clearDevice;
delay(1000); {semakin besar angka delay maka kecepatan semakin lambat}

end;

until keypressed;
closegraph;
end.
-----------------------------------------------------
Contoh diatas merupakan animasi teks yang dibuat dengan perulangan. Pembuatan animasi dengan menggunakan pascal dengan memanfaatkan while

while dengan nilai 600 (while a<=600 do) jadi teks bergerak sejauh 600 pixel.

gambar 1

Dalam pembuatan program dapat dijelaskan gambar berikut:

gambar 2

gambar 3

-------------------------------------------------------------------
untuk animasi teks bergerak ke kiri dengan menggantikan OutTextXY((600-a),100,'Teks Bergerak Kekiri');

Contoh Animasi Bergerak KeKiri

program TulisanKeKiri;
uses
graph, crt;
var
a, gd, gm:integer;
begin
gd:=cga;
gm:=cgahi;
initgraph(gd,gm,'');
repeat;

a:=1;
while a<=600 do
begin
a:=a+1;
OutTextXY((600-a),100,'Bergerak kekanan');
delay(1000);
clearDevice;

end;


until keypressed;
closegraph;
end.

Animasi teks bergerak Ke bawah dengan menggantikan OutTextXY(100,(10+a),'Teks Kebawah');
Animasi teks bergerak Ke Atas dengan menggantikan OutTextXY(100,(200-a),'Teks KeAtas');
Pembuatan animasi arah ke kanan dengan nilai positif, misal 10+a
Pembuatan animasi ke arah kiri dengan nilai negatif, misal 600-a
Pembuatan animasi ke bawah dengan nilai positif, misal 10+a
Pembuatan animasi Ke atas dengan nilai negatif, misal 200-a

-----------------------------------------------------
Rumus-rumus koordinat sudah dibahas sebelumnya, untuk mengingat rumus-rumus macam-macam gambar sebagai berikut:

Teks dengan rumus
OutTextXY(x,y,'Masukkan Teks');

Garis
line(x,y,x1,y1);

Kotak
Rectangle(x,y,x1,y1);

Lingkaran
Circle(x,y,jari-jari);

Kotak dengan Warna Dalam
Bar(x,y,x1,y1);
-----------------------------------------------------
Lebih jelasnya macam-macam bentuk dapat dilihat pada indeks yang disediakan turbo pascal

Contoh animasi Kotak Bergerak Kekanan

program KotakBergerakKeKanan;
uses
graph, crt;
var
a, gd, gm:integer;
begin
gd:=cga;
gm:=cgahi;
initgraph(gd,gm,'');
repeat;

a:=1;
while a<=600 do
begin
a:=a+1;
rectangle(a,10,(10+a),50); {dengan nilai penambahan}
delay(1000);
clearDevice;


end;
until KeyPressed;
closegraph;
end.

-----------------------------------------------------
Kotak bergerak Kekiri dengan Menggantikan rectangle((500-a),10,(600-a),50);

program KotakBergerakKeKiri;
uses
graph, crt;
var
a, gd, gm:integer;
begin
gd:=cga;
gm:=cgahi;
initgraph(gd,gm,'');
repeat;

a:=1;
while a<=600 do
begin
a:=a+1;
rectangle((500-a),10,(600-a),50); {dengan nilai pengurangan}
delay(1000);
clearDevice;


end;
until KeyPressed;
closegraph;
end.

Selanjutnya coba ganti nilai y untuk animasi bergerak ke atas dan ke bawah rectangle(x,y,x1,y1);
-----------------------------------------------------
Contoh animasi kotak membesar dan mengecil

program kotakMembesarKecil;
uses
graph, crt;
var
a, gd, gm:integer;
begin
gd:=cga;
gm:=cgahi;
initgraph(gd,gm,'');
repeat;

a:=1;
while a<=600 do
begin
a:=a+1;
rectangle(a,10,(600-a),50);
delay(1000);
clearDevice;

end;

until keypressed;
closegraph;
end.

-----------------------------------------------------
Animasi lingkaran bergerak Kekanan

program LingkaranKeKanan;
uses
graph, crt;
var
a, gd, gm:integer;
begin
gd:=cga;
gm:=cgahi;
initgraph(gd,gm,'');
repeat;

a:=1;
while a<=600 do
begin
a:=a+1;
Circle(a,100,50);{letak pembuatan animasi}
delay(1000);
clearDevice;
delay(1000);
end;

until keypressed;
closegraph;
end.

-----------------------------------------------------
Lingkaran bergerak kekiri dengan contoh sebagai berikut

program LingkaranKekiri;
uses
graph, crt;
var
a, gd, gm:integer;
begin
gd:=cga;
gm:=cgahi;
initgraph(gd,gm,'');
repeat;

a:=1;
while a<=600 do
begin
a:=a+1;
Circle((600-a),100,50);{letak pembuatan animasi}
delay(1000);
clearDevice;

end;

until keypressed;
closegraph;
end.

Animasi lingkaran bergerak ke bawah dengan menggunakan Circle(100,a,50);
Animasi lingkaran bergerak ke atas dengan menggunakan Circle(100,(200-a),50);
Posisi animasi dapat diganti dengan mengubah nilai x dan nilai y.
-----------------------------------------------------
-----------------------------------------------------
^Latihan Animasi^ Latihan
Contoh animasi gelombang bergerak

program Gelombang;
uses
graph, crt;
var
a,y1,y, x, xmax, ymax, gd, gm:integer;

begin
gd:=cga;
gm:=cgahi;
initgraph(gd,gm,'');
repeat;



xmax:=GetmaxX;
yMax:=GetmaxY;
{garis koordinat}
Line(xmax div 10,0, xmax div 10,ymax);
Line(0,ymax div 2, xmax,ymax div 2);

{angka koordinat y}
OutTextXY(45,45,'5');
OutTextXY(45,55,'4');
OutTextXY(45,65,'3');
OutTextXY(45,75,'2');
OutTextXY(45,85,'1');
OutTextXY(40,105,'-1');
OutTextXY(40,115,'-2');
OutTextXY(40,125,'-3');
OutTextXY(40,135,'-4');
OutTextXY(40,145,'-5');

{pembuatan gelombang}
a:=1;
while a<=600 do  {jarak terjauh 600}
begin
a:=a+1;
For x := a to (a+10)  do  {letak pembuatan animasi}
Begin
Y1 := round(10*cos(x*pi/180));
Y := GetMaxY div 2-y1;
PutPixel(x+xmax div 10,y,GetMaxColor);
delay(500);{kecepatan animasi 500}
delay(500);
end;
end;

until KeyPressed;
closegraph;
end.


-----------------------------------------------------
Dalam pembuatan instal windows yang digunakan dengan cara sebagai berikut:

program SimulasiInstal;
uses
graph, crt;
var
a, gd, gm:integer;

begin
gd:=cga;
gm:=cgahi;
initGraph(gd, gm,'');
repeat;
OutTextXY(10,10,'Windows XP Profesional Setup');
line(1,24,300,24);
line(1,26,300,26);
OutTextXY(155,50,'Please wait while Setup copies file');
OutTextXY(155,60,'to the Windows installation folders.');
OutTextXY(140,70,'This might take several minutes to complete');
OutTextXY(78,108,'Setup is copying files. . .');
Rectangle(70,100,530,140);
Rectangle(73,103,527,137);
Rectangle(98,118,505,133);
Bar(0,190,500,200);
Bar(505,190,800,200);
a:=1;
while a<=400 do
begin
a:=a+1;
rectangle(101,120, (a+100),130);
Delay(4000);
Delay(4000);
end;

until KeyPressed;
closeGraph;
end.

Instal window diatas merupakan simulasi, untuk benar-benar dapat membuat program instal windows dengan memasukkan dos kedalam uses.
Lebih mendalami turbo pascal dengan membaca buku pascal yang ada sampai ketahap yang benar-benar membuat program komputer sendiri. Penjelasan di atas merupakan garis besar dasar dari pembuat tampilan.

-------------------------------------------------------
Dalam memindahkan file yang sudah dibuat dari bin, misal memindahkan file garis ke data D yang mengcopy file penyerta yaitu cga.BGI
seperti gambar berikut










PEMBUATAN ANIMASI DENGAN MENGGUNAKAN PERULANGAN FOR

 Dalam pembuatan perulangan for untuk animasi hampir sama dengan menggunakan while dan contohnya seperti berikut:
 Contoh yang kita ambil yaitu animasi kotak kekiri

program KotakBergerakKeKiri;
uses
graph, crt;
var
a, gd, gm:integer;
begin
gd:=cga;
gm:=cgahi;
initgraph(gd,gm,'');
repeat;


for a:=0 to 600 do
begin

rectangle((500-a),10,(600-a),50); {dengan nilai pengurangan}
delay(1000);
clearDevice;


end;
until KeyPressed;
closegraph;
end.
download Turbbo Pascal 7.1 For Windows XP
TERIMA KASIH