www.opulsa.com

Membuat Simulasi Jarak Pengereman Turbo Pascal

Membuat Simulasi Jarak Pengereman Turbo Pascal ~ “Fisika itu membosankan, susah, dan kurang menarik”, kata-kata tersebut adalah kata-kata yang sering dilontarkan orang 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).
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 :
Gambarkan 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 ’kecepatanawal’dan pada koordinat {480(x),80(y)} yaitu tulisan ‘(m/s)’.
Sehingga hasilnya menjadi :
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);
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.


Demikaianlah Artikel tentang bagaimana membuat simulasi jarak pengereman di Turbo Pascal.

semoga bisa menjadi tambahan referensi buat teman-teman yang belajar pemrograman turbo pascal.
Share on :
Bookmark and Share
| November 6, 2012 | 1 Komentar

1 Komentar:

Anonymous said...

kalo pembentukan byangan pada cermin dan lensa ad ngk mz?

Post a Comment

Berkomentarlah dengan Baik, Mari kita Jalin Tali Silaturrahmi yang erat sesama blogger dan Pembaca Setia Agungjie's Blogs
dan Terima Kasih telah Berkomentar.