Nugroho's blog.

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.

Tuesday, April 3, 2012

Tahlil Bilingual

Beberapa hari yang lalu saya pintu kamar mandi saya digedor-gedor tetangga.

"Woi, lagi mandi ya!!!"
"Iya..." sahut bibiku yang lagi mandi

"Ups, sori,..." ganti dia gedor-gedor WC
"Woi, lagi di WC ya!!!" walah..., gimana mau jawab. Aku diam aja, mood-ku langsung hilang.

"Eh, kok diam saja? lagi di dalam WC ya?" ckckck...

"Ada apa Gus?" kataku nongol dari pintu WC
"Baru dari WC?" Busyet dah...




Aku menyerah
"Iya" sambil ngeloyor ke depan TV mau lihat Spongebob sore

"Nanti habis maghrib diundang syukuran di Pak Wari" kata Gus sambil nguntit aku. Waduh, gak bisa lihat Spongebob nih!

"Soalnya aku sakit perut" jawabku sekenanya

"eh?"

Begitulah suasana desa, ngobrol dengan seseorang yang sedang konsentrasi penuh di WC dianggap biasa. Dan pertanyaan yang terus diulang walaupun sudah tahu jawabannya. Basa-basi memang kadang merepotkan.

******

Habis maghrib aku ke rumah Pak Wari yang rumahnya melewati tritisan rumah Pakde di utara rumahku. Sudah ada beberapa orang di sana.

"Memang acara apa Pak"

"40 harinya mbah Prapti"

Aku lega tidak bertanya "Memang syukuran apa?", dasar Gus!

Biasanya, acara semacam itu diisi dengan baca Surat Yaa-Sin, sekitar setengah jam, dilanjutkan dengan bacaan tahlil, beberapa surat pendek dan beberapa potongan surat panjang dan doa-doa entah apa namanya.


Namun malam itu tidak. Pak Ja'i Mengumumkan kalau acaranya hanya diisi bacaan tahlil saja, wow, masih bisa lihat Spongebob nih. Dan bukan hanya aku yang lega, hehehe. Eh, bukan berarti semua yang diundang juga pengin cepat-cepat pulang lihat Spongebob; waktu antara maghrib dan isya' adalah waktu ngleyeh di desaku.

Tahlil berlangsung lima belas menit dan makanan pun dihidangkan. Setelah puas melahap soto, bingkisan berkat untuk dibawa pulang pun dibagikan.

Aku siap-siap menunggu Shalawat Dongkrak ketika Pak Sutomo, sesepuh Dusun mengambil mic dan...

"Salamalekum,  dinten menika kula dalah panjenengan sedaya dumugi wonten mriki minangka .... mugi pinaringan kawilujengan..."

Whaaaat???!!!

Ternyata ada semacam "Tahlilan Jawa" setelah berkat dibagikan dan lebih lama dari "Tahlil Arab". Tahlil jawa ini diucapkan dalam bahasa kawi yang isinya berupa penjelasan kenapa kami beada di sini, acara apa dan semoga tuan rumah terkabul hajatnya.

Karena diucapkan dalam bahasa jawa, maka kata "amin" yang biasa diucapkan bersama-sama diganti dengan "inggih..." (iya).

Saat pulang, aku senyum-senyum sendiri sambil terkenang-kenang jaman SMP saat aku bersusah payah menghafalkan suluk pembuka pagelaran wayang di halaman belakang Kembang Setaman.

"Swuh rep data pitana. Anenggih negari kapundi ta kang kaeka adi dasa purwa. Eka marang sawiji adi luwih dasa sepuluh purwa wiwitan. Nadyan katah titahing jawata kang kasongan ing akasa kasangga ing pratiwi kaapit ing samudra...

negara dwarawati ya dwaraka negara kang panjang punjung pasir wukir. Panjang dawa pocapane, punjung luhur kawibawane,  pasir samudra wukir gunung... gemah ripah loh jinawi tata tentrem kerta raharja"

Nostalgia...



Monday, April 2, 2012

Toggle di Delphi

Toggle adalah sebuah tombol dengan sifat jika saat itu on maka jika ditekan akan off jika ditekan lagi on jika ditekan lagi akan off dan seterusnya.

Di Delphi kita dapat membuat tombol jenis ini.

Buat sebuah aplikasi baru, letakkan sebuah tombol di form. Berikut adalah perintah lengkapnya.




unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
jalan:boolean;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
jalan:=not(jalan);
if jalan=true then button1.Caption:='stop' else button1.Caption:='jalan';
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
jalan:=false;
end;

end.

Shape di Delphi

Shape adalah sebuah object berupa bentuk-bentuk dasar di Delphi.

Di Delphi ada beberapa cara untuk menggambar; diantaranya menggunakan Shape. Cara lain menggunakan canvas dengan perintah moveto+lineto+fill. Meskipun cara terakhir menawarkan felkesibilitas bentuk yang tinggi, mereka tidak dapat digerakkan dengan mudah; kita harus menghapus dan membuat lagi dari awal.



Shape dapat dengan mudah digerakkan karena memiliki properties top dan left. Berikut adalah cara menggerakkan sebuah Shape dengan fitur kecepatan dan percepatan serta sebuah tombol toggle jalan/stop.

Buat aplikasi baru, letakkan dua edit, satu shape dan satu button.

Berikut adalah perintah lengkapnya.
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Label1: TLabel;
Label2: TLabel;
Shape1: TShape;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
jalan:boolean;
ax,vx,xx,dt:real;
implementation

{$R *.dfm}

procedure proses;
begin
xx:=xx+vx*dt;
vx:=vx+ax*dt;
with form1 do begin
edit2.Text:=floattostr(vx);
shape1.Left:=round(xx);
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
jalan:=false;
edit1.Text:='0';
edit2.Text:='1';
dt:=0.1;
button1.Caption:='jalan';
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
jalan:=not(jalan);
ax:=strtofloat(edit1.Text);
vx:=strtofloat(edit2.Text);
xx:=shape1.left;
if jalan=true then button1.Caption:='stop' else button1.Caption:='jalan';
while jalan=true do begin
proses;
application.ProcessMessages;
sleep(100);
end;
end;

end.

Stringgrid di Delphi

Buat aplikasi baru
Letakkan sebuah tombol, edit dan stringgrid di form
Kosongkan bagian text pada edit1
Ubah caption pada button1 menjadi input
Pada properties stringgrid1, ubah colcount->7 kemudian rowcount -> 17
Dobelklik form1, ketikkan perintah berikut
  stringgrid1.Cells[0,0]:='No';
stringgrid1.Cells[1,0]:='Nama';
stringgrid1.Cells[2,0]:='U1';
stringgrid1.Cells[3,0]:='U2';
stringgrid1.Cells[4,0]:='U3';
stringgrid1.Cells[5,0]:='U4';
stringgrid1.Cells[6,0]:='Nil'; 
Jalankan program. Kini stringgrid1 memiliki judul pada baris pertama tiap kolom.



Untuk mengisi kolom nama pada stringgrid, kita gunakan tombol input.
Agar dapat otomatis berganti baris kita perlu membuat sebuah variabel global n bertipe integer.
Dobelklik tombol input, ketikkan perintah berikut
  stringgrid1.Cells[1,n]:=edit1.Text;
stringgrid1.Cells[0,n]:=inttostr(n);
n:=n+1;
Jalankan program. Ketikkan sebarang nama di edit1, kemudian klik tombol input, lakukan berulang-ulang.










Tuesday, March 27, 2012

Loop di Delphi

Buat aplikasi baru

Tempatkan sebuah edit dan dua buah tombol, isi edit dengan nilai nol, ganti caption tombol masing-masing “Jalan” dan “Stop”

Buat variabel global “jalan” berjenis boolean

Dobelklik tombol “Jalan”, ketikkan perintah sebagai berikut



jalan:=true;
x:=strtoint(edit1.Text);
while jalan=true do begin
x:=x+1;
edit1.Text:=inttostr(x);
application.ProcessMessages;
sleep(1000);
end;

(jangan lupa membuat variabel lokal “x” berjenis integer sebelum begin)

Dobelklik tombol “Stop”, ketikkan perintah sebagai berikut

jalan:=false
jalankan program. Jika gagal, ubah deklarasi x dari x:int; menjadi x:integer;

Preman (lagi)

Tadaa…

Masih tentang "pengemis" atau mungkin lebih tepat jika disebut preman kemanusiaan, karena jika benar-benar diperhatikan, mereka tidak masuk kategori pengemis ataupun preman meski

Pernahkah anda melihat pengemis di perempatan jalan? Bagaimana penampilannya

Jaman dulu

Kebanyakan tua
pakaian compang-camping
pake sandal jelek bahkan telanjang kaki
bawa selendang tuk tempat uang



"Pengamen" atau "pengemis" sekarang

semua umur
pakaian lusuh tetapi tetap melindungi kulit dari sengatan matahari
pakai sandal nyaman, ada yang bersepatu
memakai tas ransel, atau selendang bagi yang bawa bayi

Apa yang "dijual" oleh mereka? Kita tahu bahwa pengamen menjual suara merek lewat lagu, di bus kita bahkan sering terhibur dengan lirik-lirik lagu yang kadang mereka ciptakan sendiri. Kita juga tahu pengemis (tanpa tanda petik) menjual keadaan mereka; kemiskinan, penyakit bahkan mungkin harga diri.

Di perempatan memang ada pengamen dan dan pengemis yang sesungguhnya; anak-anak punk yang memang terjun ke jalan. Anak-anak jalanan ini benar-benar menyanyi meskipun tentu saja kita tidak bisa menikmati keseluruhan lagu seperti di bus, dan tentu saja mereka patut untuk mendapatkan imbalannya, sekeping lima ratus rupiah.

Bahkan saya pernah di panas terik dimintai "belas kasihan" oleh seorang "pengemis" kecil; dia minum jus melon sambil ngobrol seru dengan temannya yang memakai tas pinggang Eiger. Dengan keadaan demikian tentu saja saya tidak bisa berbelas kasihan, saya tidak begitu bodoh untuk

Tidak bisakah mereka menjadi pengemis yang profesional? Dengan pakaian dinas yang sesuai dan tingkah laku profesional layaknya pengemis sesungguhnya? Saya kira tidak, mereka sudah terlalu nyaman dengan rutinitas mereka meskipun saya yakin jika mereka bisa bertingkah laku secara profesional, pendapatan harian mereka bisa meningkat.

Tidak pernah ada yang tahu jalan pikiran mereka, tetapi tidak sulit untuk ditebak. Mereka turun ke perempatan-perempatan yang berlampu merah dengan pikiran optimis bahwa jika mereka meminta pasti diberi karena mereka pikir para pengendara menyangka mereka patut dikasihani; dan orang yang patut dikasihani tentu saja harus dikasih uang. Mereka mengeksploitasi rasa belas kasihan kita saat melihat pengemis. Mereka memaksa kita untuk berbelas kasihan meskipun sebenarnya dalam hati beberapa dari kita pasti bertanya “apa iya mereka ini benar-benar patut dikasihani?”.

Cara ini sedikit banyak berhasil. Ironisnya pengendara kebanyakan mengabaikan anak-anak punk yang terkadang malah benar-benar menjual suara mereka dan cenderung memberikan recehan mereka pada anak-anak kecil. Bias ini bisa dimaklumi tentu saja, lihat pakaian anak punk jalanan itu. Namun apakah belas kasihan kita telah benar pada tempatnya?

Memberi recehan pada anak kecil di perempatan mungkin melegakan kita; membantu anak yang kekurangan. Namun anak yang kita beri recehan tersebut sangat mungkin untuk tetap di situ bertahun-tahun kemudian. Mereka telah mendapatkan mata pencaharian yang gampang, mereka tidak butuh sekolah karena lebih enak di jalanan. Dengan memberi mereka recehan kita telah menghancurkan kemungkinan mereka untuk sadar akan pentingnya pendidikan.
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)