Nugroho's blog.

Monday, April 9, 2012

Array di Delphi

Array dapat digunakan sebagai penyimpanan sementara. Array dapat dipandang sebagai sebuah variabel yang berisi barisan variabel di dalamnya.

Berikut adalah contoh penggunaan array di delphi sekaligus penggunaan listbox dan radiobutton.



Buat sebuah form dengan satu edit, satu button, satut listbox dan tiga radiobutton.

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
ListBox1: TListBox;
RadioButton3: TRadioButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
nama:array [0..100] of string;
n:integer;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
radiobutton1.Caption:='input';
radiobutton2.Caption:='tampilkan';
radiobutton3.Caption:='semua';
edit1.Text:='';
radiobutton1.Checked:=true;
button1.Caption:='OK';
n:=0;
end;

procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
if (radiobutton1.Checked=true) and not(edit1.Text='') then begin
listbox1.Items.add(edit1.Text);
n:=n+1;
nama[n]:=edit1.Text;
end;
if radiobutton2.Checked=true then begin
listbox1.Clear;
if (edit1.Text<='9') and (edit1.Text>='0') and not(edit1.Text='') then begin
listbox1.Items.Add(nama[strtoint(edit1.Text)]);
end;
end;
if radiobutton3.Checked=true then begin
listbox1.Clear;
for i:=1 to n do begin
listbox1.Items.Append(nama[i]);
end;
end;
end;

end.


Tolerance (Einstein)

Laws alone cannot secure freedom of expression; in order that every man present his views without penalty there must be spirit of tolerance in the entire population. -Albert Einstein

Simple Animation using Mathematica

Using Manipulate, we are able to create animation using Walfram's Mathematica. Basically it allow a variable to walk along its range.

Here the code, or, for me, a template to create animation.




Manipulate[
Graphics[{
Blue,
Circle[{t, 0}, 1]
},
PlotRange -> {{-10, 10}, {10, -10}},
ImageSize -> {400, 300},
Background -> GrayLevel[0.9],
Axes -> True
],
{t, 0, 5}
]
and here the result

Musik

Musik adalah pelepas dahaga yang mengisi cangkir keheningan

Sunday, April 8, 2012

Paku dan Papan

Di awal malam sekitar enam tahun yang lalu, aku dan Anggun sedang "ngleyeh" di kamarku di Lazy Home. Mungkin saat itu hari sabtu malam; biasanya Anggun ke rumah hari sabtu, kujemput.

Anggun mengerjakan tugas akademi kebidanannya yang segunung sedangkan aku sedang santai sambil otak-atik Fruity Loop dan Cool Edit di laptop Eeyor. Komputer Pentium 2 di ruang depan menyiarkan siaran Dhamma TV, ada semacam ceramah dari Biksu yang sudah ku kenal namun namanya tidak ku hafal.

Kami tidak perlu bersusah payah lihat TV karena toh gambarnya lebih menyerupai semut daripada gambar Kelenteng. Jika memasang antenna di belakang rumah, memang seperti itu, pilihannya adalah gambar jelek namun suara bagus, atau gambar bagus dengan suara berkeresak. Jika pasang di depan rumah pilihannya adalah gambar bagus dengan suara jernih dan resiko antenna sudah tidak ada saat pulang dari kampus, hm... mungkin itu bukan pilihan.



Diantara suara kertas dan buku yang dibolak-balik dan suara gedebak-gedebuk drum mentah hasil manipulasiku, kudengar kisah Sang Biksu tentang seorang tua dan pemuda. Aku lupa konteksnya, mungkin si pemuda ingin berguru pada sang tua, entahlah

"...seorang tua berkata pada pemuda pemarah 'Nak, cobalah hal ini saat kau marah, tancapkanlah sebuah paku pada papan di pintu depan rumahmu. Saat amarahmu telah reda cabutlah paku yang telah kau tancapkan tadi. Kembalilah padaku saat tidak ada satu paku pun di papan '

Dan begitulah, si pemuda tiap marah menancapkan paku pada papan dan mencabutnya saat amarahnya telah reda. Terkadang ada beberapa paku yang tertancap pada papan karena saat amarahnya belum reda dia kembali marah.

Saat dia telah berhasil mengendalikan amarahnya, si pemuda menemui biksu untuk menunjukkan bahwa tidak ada paku di papan pintu rumahnya.

'Baiklah, sebagai awal akan kuberi engkau sebuah pelajaran sederhana. Mari kita lihat pintu rumahmu'

'Nak, lihatlah. Engkau telah berhasil mengendalikan amarahmu, terbukti tidak ada satupun paku yang tertancap di papan ini. Namun lihatlah bekas-bekas paku yang kau tancapkan, meski paku telah kau cabut, bekasnya masih ada.

Begitulah amarah, saat engkau marah, engkau tidak dapat mengendalikan diri dan mungkin melampiaskan amarahmu ke orang-orang disekitarmu, melukai mereka; mungkin fisik, mungkin jiwa. Lambat laun amarahmu pasti akan mereda, orang-orang yang telah kau lukai mungkin juga telah memaafkanmu, namun kejadian itu telah menjadi catatan kehidupanmu, seperti lubang di papan bekas tancapan paku... '

...
"
(lupa lanjutannya)


Friday, April 6, 2012

Sebuah Relic Berusia Ribuan Tahun

Berikut adalah pemikiran dari seseorang yang menolak perilaku ekstrim; semacam memiskinkan atau memperkaya diri. Yang berpikir bahwa makan terlalu banyak akan menimbulkan berbagai penyakit namun berpuasa ekstrim juga akan membuat badan lemas, mata berkunang-kunang dan suplai nutrisi ke otak berkurang.

***

-kehidupan manusia itu pada dasarnya tidak bahagia;

-sebab-musabab ketidakbahagiaan ini adalah memikirkan kepentingan diri sendiri serta terbelenggu oleh nafsu;

-pemikiran kepentingan diri sendiri dan nafsu dapat ditekan habis bilamana segala nafsu dan hasrat dapat ditiadakan;

-menimbang benar, berpikir benar, berbicara benar, berbuat benar, cari nafkah benar, berusaha benar, mengingat benar, meditasi benar;


Wednesday, April 4, 2012

Record di Delphi

Record dapat dikatakan sebagai sebuah obyek di Delphi, semacam variabel yang memiliki variabel. Seperti Button yang memiliki caption atau edit yang memiliki text, kita dapat membuat sebuah obyek yang memiliki variabel sendiri.


Berikut adalah contoh program menggerakkan sebuah kotak (menggunakan shape). Kita membuat record baru bernama tkotak yang memiliki variabel x, y, vx, vy, ax, ay. Variabel kotak merujuk pada record tkotak.


Tombol jika diklik akan menjalankan perintah pada prosedur proses. Prosedur proses adalah metode Euler untuk mengupdate posisi dan kecepatan kotak berdasarkan posisi dan kecepatan awal.







Kode lengkapnya adalah sebagai berikut


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;

type
TForm1 = class(TForm)
Shape1: TShape;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
tkotak=record
x,y,vx,vy,ax,ay:real;
end;
var
Form1: TForm1;
jalan:boolean;
kotak:tkotak;
dt:real;

implementation

{$R *.dfm}
procedure proses;
begin
kotak.vx:=kotak.vx+kotak.ax*dt;
kotak.x:=kotak.x+kotak.vx*dt;
form1.Shape1.Left:=round(kotak.x);

end;

procedure TForm1.FormCreate(Sender: TObject);
begin
button1.Caption:='jalan';
jalan:=false;
kotak.x:=0;
kotak.y:=0;
kotak.vx:=5;
kotak.vy:=0;
kotak.ax:=10;
kotak.ay:=0;
dt:=0.1;
shape1.Left:=round(kotak.x);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
jalan:=not(jalan);
if jalan=true then button1.Caption:='stop' else button1.Caption:='jalan';
while jalan=true do begin
proses;
application.ProcessMessages;
sleep(100);
end;
end;

end.

323f (5) amp (1) android (12) apple (7) arduino (18) art (1) assembler (21) astina (4) ATTiny (23) blackberry (4) camera (3) canon (2) cerita (2) computer (106) crazyness (11) debian (1) delphi (39) diary (286) flash (8) fortran (6) freebsd (6) google apps script (8) guitar (2) HTML5 (10) IFTTT (7) Instagram (7) internet (12) iOS (5) iPad (6) iPhone (5) java (1) javascript (1) keynote (2) LaTeX (6) lazarus (1) linux (29) lion (15) mac (28) macbook air (8) macbook pro (3) macOS (1) Math (3) mathematica (1) maverick (6) mazda (4) microcontroler (35) mountain lion (2) music (37) netbook (1) nugnux (6) os x (36) php (1) Physicist (29) Picture (3) programming (189) Python (109) S2 (13) software (7) Soliloquy (125) Ubuntu (5) unix (4) Video (8) wayang (3) yosemite (3)