“Fisika itu membosankan, susah, dan kurang menarik”, kata-kata tersebut adalah kata-kata
yang sering dilontarkan orang (termasuk saya) ketika merespon ‘ilmu pamungkas’ dari Albert Einstein ini. Tetapi, tanpa
kita sadari bahwa dalam kehidupan sehari-hari, kita hampir tak lepas dari pengaplikasian fisika.
Contohnya : listrik, mesin-mesin, dan alat-alat transportasi yang kesemuanya itu menggunakan prinsip
fisika sebagai pedomannya.
Oke, setelah cukup berbasa-basi tentang pentingnya belajar fisika, sekarang kita langsung ke
langkah pembuatan animasi fisika dengan menggunakan turbo pascal 7.0 dimana pada tulisan ini
yang dibahas adalah membuat simulasi jarak pengereman.
Yang dibutuhkan adalah :
• Semangat
• Turbo pascal 7.0
• Sedikit pengetahuan fisika dasar tentang GLBB (Gerak Lurus Berubah Beraturan).
+ foto cewek/pacar biar lebih semangat
Oke, langsung saja, yang kita lalukan terlebih dahulu adalah mengatur direktori tempat kita akan
bekerja. Caranya adalah :
1. Buka direktori dimana anda meng-instal turbo pascal (Turbo pascalnya jangan di jalankan
dulu).
2. Buat folder baru (mis : Phy_X’code).
3. Ketika TP (turbo pascal) selesai di-install, akan terdapat 6 Folder
(BGI,BIN,DOC,EXAMPLE,SOURCE,UNITS). Copy-kan isi folder BGI,BIN,SOURCE dan UNITS ke dalam
folder yang telah kita buat tadi (Phy_X’code) dengan tujuan agar file yang akan kita buat
nantinya akan ber-sinkronisasi dengan Grafik adapternya dalam satu folder.
4. Jalankan program TP 7.0, klik menu File – Changer dir – Cari direktori tempat kita membuat
folder “Phy_X’code” tadi setelah itu klik oke. Tujuan kita mengganti direktorinya adalah agar file
yang kita akan kuat langsung tersimpan dalam folder “Phy_X’code”, karena pada bahasa
pemrograman TP file yang ingin disimpan akan secara otomatis tersimpan dalam direktori yang
aktif.
5. Ketikkan source kodenya, atau jika teman-teman malas bisa langung membuka file “simulasi
pengereman.pas” dan copy-kan semua isi file “simulasi pengereman.pas” dan paste ke dalam
file kita tadi.
6. Simpan file yang kita buat, buat nama filenya (mis : Coba.pas).
7. Klik menu Compile (Alt +F9) dan jika succesnya akan ada perintah “Compile Successful : Press
Any Key”.
8. Setelah itu Klik Menu Run (Ctrl+F9).
9. Silahkan Input, mis :
• Kecepatan awal = 20 (dalam satuan m/s)
• Koefisien gesekan = 0.1
10. Dan hasilnya akan terlihat sebuah objek berbentuk bus/truk pertama-tama melewati
permukaan licin dengan kecepatan awal tetap karena belum dipengaruhi oleh gaya gesek,
setelah diberi koefisien gesekan kecepatannya akan semakin menurun ketika melewati
permukaan kasar dan berhenti. Setelah itu akan ada jarak pengereman yang terjadi dalam
satuan meter.
Gampang khan ….(hehehehe klo gitu sih namanya tinggal pake, g ada ilmunya).
Maaf, tadi di atas hanya contoh saja. Tetapi saya akan mencoba menjelaskan bagian2 yang
penting pada Source kode program ini, dengan harapan jika seandainya teman-teman ada yang
berniat membuat simulasi untuk kasus lain dapat terbantu dengan adanya contoh ini:
uses crt, graph;
var
gd,gm,vo,x,xo,xs,c: integer;
uk,a,t:real;
k,l,m,n,o,p,q,r,s:string;
lagi:char;
const
g= 10;
procedure animasi;
begin
gd:= detect;
gm:= detect;
initgraph(gd,gm,'');
Unit crt, graph adalah perintah umum, dimana crt untuk memanipulasi layar, peletakan cursor, warna
teks,dll. Sedangkan graph untuk menyediakan suatu kumpulan grafik.
Variable (var) adalah variabel yang kita gunakan yang nilainya dapat berubah/tidak konstan seperti
konstanta.
Const adalah nilai yang tidak dapat diubah.
Gd,gm adalah perintah untuk mendeteksi VGA komputer.
Initgraph(gd,gm,’’) adalah prosedur untuk menggunakan grafik.
x := 0;
settextstyle(smallfont,horizdir,4);
rectangle(300,50,580,200);
str(vo:2,l);
settextstyle(smallfont,horizdir,4);
outtextxy(450,80,l) ;
outtextxy(310,80,'Kecepatan Awal = ');
outtextxy(480,80,'(m/s)');
Str adalah perintah untuk memunculkan nilai variabel yang tidak bernilai string. Pada umumnya yang
bisa ditampilkan adalah hanya nilai yang bernilai string, sedangkan yang lain tidak.
Sedangkan pada program ini kita harus menampilkan beberapa variabel sebagai keterangan. Mis :
vo(kecepatan awal),uk(koefisien gesekan) yang mana ke-2 variabel ini tidak bernilai string, yaitu vo
bernilai integer dan uk bernilai real yang ditampilkan dalam kotak persegi panjang yang terletak
pada kiri atas program
Untuk itu kita menggunakan Str untuk memunculkannya dengan diwakili oleh sebuah variabel baru
yang bernilai string.
Contoh :
str (vo:2,l);
artinya :
variabel vo(kecepatan awal) yang bernilai integer yang ingin ditampilkan, diwakili oleh variabel l yang bernilai string. Sedangkan ”:2” artinya jarak spasi.
JIKA PERINTAH DIGABUNG
Rectangle(300,50,580,200);
str(vo:2,l);
settextstyle(smallfont,horizdir,4);
outtextxy(450,80,l) ;
outtextxy(310,80,'Kecepatan Awal = ');
outtextxy(480,80,'(m/s)');
ARTINYA :
Gambaran persegi panjang rectangle dengan koordinat{300(x1),50(y1),580(x2),200(y2)}.
Variabel vo yang bernilai integer diwakili oleh l yang bernilai string. Siapkan tulisan dengan jenis
smallfont, horizontal,ukuran 4 psi. setelah itu variabel vo yang diwakili oleh variabel l tadi munculkan
pada koordinat {450(x),80(y)}.Munculkan tulisan pada koordinat {310(x),80(y)} yaitu tulisan ’kecepatan
awal’dan pada koordinat {480(x),80(y)} yaitu tulisan ‘(m/s)’.
Sehingga hasilnya menjadi : Kecepatan Awal = 20 m/s
Note : vo = 20 m/s adalah contoh.
Dan begitu seterusnya untuk koefisien gesekan.
outtextxy(120,305,'0');
outtextxy(170,305,'50');
outtextxy(220,305,'100');
outtextxy(270,305,'150');
outtextxy(320,305,'200');
outtextxy(370,305,'250');
outtextxy(420,305,'300');
outtextxy(470,305,'350');
outtextxy(520,305,'400');
outtextxy(570,305,'450');
outtextxy(620,305,'500');
line(0,300,120,300);
setcolor(blue);
line(120,300,640,300);
setcolor(red);
settextstyle(smallfont,horizdir,4);
setcolor(white);
outtextxy(10,320,'Permukaan Licin');
setcolor(red);
settextstyle(smallfont,horizdir,4);
outtextxy(300,320,'Permukaan Kasar');
Sedangkan perintah diatas ini untuk membuat garis, tulisan permukaan licin/kasar dan
warnanya.
Untuk outtextxy(120,305,'0'); sampai outtextxy(620,305,'500'); adalah memunculkan angka pada garis
permukaan kasar sebagai patokan panjang lintasan.
Untuk line(0,300,120,300); dan setcolor(blue); untuk menggambar garis dengan warna biru. (Dalam hal
ini garis tersebut sebagai permukaan licin).
Untuk line(120,300,640,300); dan setcolor(red); untuk menggambar garis dengan warna merah.
(Dalam hal ini garis tersebut sebagai permukaan kasar). Selanjutnya cara untuk memunculkan tulisan
permukaan licin dan permukaan kasar sama seperti cara diatas. Hanya dalam hal seperti ini
diperlukan sedikit keahlian tentang manipulasi koordinat.
str(vo:2,n);
settextstyle(smallfont,horizdir,4);
setcolor(yellow);
outtextxy(80,260,n) ;
outtextxy(10,260,'V Konstan = ');
outtextxy(100,260,'(m/s kuadrat)');
Perintah di atas berguna untuk memunculkan keterangan bahwa objek bergerak dengan
kecepatan awal yang konstan.
Dan sesuai ketentuan bahwa nilai koefisien gesekan kinetis tidak boleh sama dengan satu (1)
{if uk>=1 then halt;}. Sehingga jika nilai uk diberi 1, program akan menutup dengan sendirinya. Jika
tidak sama dengan satu maka dia akan mengalami gaya gesek {a:= (-uk*(g))}, atau perintah
lengkapnya :
repeat
x := Round(vo*t);
setcolor(8);
rectangle(x+0,286,20+x,296) ;{posisi awal}
line(20+x,290,28+x,294); ---
line(28+x,294,28+x,298); ] Gabungan antara garis dan lingkaran yg mmbntk objek
line(20+x,298,28+x,298); ]
circle(4+x,296,2); ------
circle(17+x,296,2);
delay(100);
cleardevice;
setcolor(white);
settextstyle(smallfont,horizdir,4);
rectangle(300,50,580,200);
str(vo:2,l);
settextstyle(smallfont,horizdir,4);
outtextxy(450,80,l) ;
outtextxy(310,80,'Kecepatan Awal = ');
outtextxy(480,80,'(m/s kuadrat)');
str(uk:0:2,m);
settextstyle(smallfont,horizdir,4);
outtextxy(450,100,m) ;
outtextxy(310,100,'Koefisien Gesekan = ');
outtextxy(120,305,'0');
outtextxy(170,305,'50');
outtextxy(220,305,'100');
outtextxy(270,305,'150');
outtextxy(320,305,'200');
outtextxy(370,305,'250');
outtextxy(420,305,'300');
outtextxy(470,305,'350');
outtextxy(520,305,'400');
outtextxy(570,305,'450');
outtextxy(620,305,'500');
line(0,300,120,300);
setcolor(blue);
line(120,300,640,300);
setcolor(red);
settextstyle(smallfont,horizdir,4);
setcolor(white);
outtextxy(10,320,'Permukaan Licin');
setcolor(red);
settextstyle(smallfont,horizdir,4);
outtextxy(300,320,'Permukaan Kasar');
{keterangan kecepatan awal}
str(vo:2,n);
settextstyle(smallfont,horizdir,4);
setcolor(yellow);
outtextxy(80,260,n) ;
outtextxy(10,260,'V Konstan = ');
outtextxy(100,260,'(m/s kuadrat)');
a:= (-uk*(g));
xo:=100;
t:=t+0.05;
until x>=100;
if (x<=100)then begin t:=0; xo:=100; setcolor(10); outtextxy(100,240,'Mengalami Perlambatan'); repeat xs:=Xo+round(vo*(t)+(0.5)*(sqr(t))*(a)); delay(100); cleardevice; setcolor(white); settextstyle(smallfont,horizdir,4); rectangle(300,50,580,200); str(vo:2,l); settextstyle(smallfont,horizdir,4); outtextxy(450,80,l) ; outtextxy(310,80,'Kecepatan Awal = '); outtextxy(480,80,'(m/s)'); str(uk:0:2,m); settextstyle(smallfont,horizdir,4); outtextxy(450,100,m) ; outtextxy(310,100,'Koefisien Gesekan = '); str(t:2:2,p); settextstyle(smallfont,horizdir,4); outtextxy(450,120,p) ; outtextxy(310,120,'Waktu = '); outtextxy(486,120,'s'); str(xs-100:2,r); settextstyle(smallfont,horizdir,4); outtextxy(450,140,r) ; outtextxy(310,140,'Jarak = '); outtextxy(486,140,'m'); outtextxy(120,305,'0'); outtextxy(170,305,'50'); outtextxy(220,305,'100'); outtextxy(270,305,'150'); outtextxy(320,305,'200'); outtextxy(370,305,'250'); outtextxy(420,305,'300'); outtextxy(470,305,'350'); outtextxy(520,305,'400'); outtextxy(570,305,'450'); outtextxy(620,305,'500'); line(0,300,120,300); setcolor(blue); line(120,300,640,300); setcolor(red); settextstyle(smallfont,horizdir,4); setcolor(white); outtextxy(10,320,'Permukaan Licin'); setcolor(red); settextstyle(smallfont,horizdir,4); outtextxy(300,320,'Permukaan Kasar'); a:= (-uk*(g)); xo:=100; setcolor(8); rectangle(xs,286,xs+20,296); line(20+xs,290,28+xs,294); line(28+xs,294,28+xs,298); line(20+xs,298,28+xs,298); circle(4+xs,296,2); circle(17+xs,296,2); setfillstyle(solidfill,red); floodfill(xs,295,8); t:=t+0.05; setcolor(white); until t>(-vo/a );
end;
Setelah vo dan uk diinput (dimana uk ≠ 0 dan 1 ), maka benda akan bergerak dengan
kecepatan konstan dan objek-objek yang lain seperti garis, keterangan, kotak tempat keterangan
juga terbentuk hingga x>=100. Sebagai pengingat kembali, tadi panjang garis untuk permukaan licin
adalah 100. Setelah itu dia memasuki permukaan kasar. Tentu saja titik mulai objek x>=100, tapi agar
kelihatan lebih rapi kita buat titik awal objek memasuki permukaan kasar adalah 100 sehingga seakanakan
roda depan benda tersebut baru saja melewati daerah yang mulai diberi gaya gesek
(permukaan kasar). Hal ini akan terus berulang dengan penambahan t yaitu t+0.05 sehingga dengan
penambahan variabel t akan menambah variabel x sehingga seakan-akan objek sedang bergerak.
Perulangan ini (loop)selesai jika kecepatan objek menjadi nol atau dalam bahasa pemrogramannya
{until t>(-vo/a );} .
Dan jika koefisien gesekannya diberi nol yang berarti tidak ada gaya gesek {if (uk=0)}, maka
sesuai dengan fisisnya, benda akan terus bergerak dengan kecepatan konstan hingga penekanan
tombol ENTER.
NOTE 1= jangan pernah remehkan jurusan IPS (karena adminnya juga jurusan IPS)
NOTE 2= untuk para copaser tolong bila ingin mengcopas sertakan backlink ke
Paulushack.blogspot.com ~thanks
NOTE 3= yang ingin contoh jadinya silahkan unduh disini!
2 comments:
ada contoh program untuk buat garis vertical,horizontal dan diagonal gak ??
wahhh mas,saya belum ada contoh programnya
ntar saya cariin
kalo udah ketemu nanti saya share
Posting Komentar
Blog ini DOFOLLOW jadi tinggal masukin nama + URL anda.
bila ingin tetap bertukar link dengan saya ya tidak apa apa:D
Jangan SPAM ya :D