You are on page 1of 23

NGN NG LP TRNH

VIOLET SCRIPT

VIOLET Group

Ngn ng lp trnh Violet Script

H NI, 5/2004

-2-

VIOLET Group

Ngn ng lp trnh Violet Script

MC LC
1. Tng quan..............................................................................................................................4
1.1. Gii thiu s lc...........................................................................................................4
1.2. Cc c im chnh ca ngn ng..................................................................................4
1.2.1. Ngn ng m phng...............................................................................................4
1.2.2. La chn ch chy song song hoc tun t.......................................................4
1.2.3. Kh nng s dng cc th vin m........................................................................5
1.2.4. So snh ngn ng VS vi Timeline........................................................................5
1.3. S dng Violet Script trong Violet.................................................................................6
1.4. Cu trc ngn ng..........................................................................................................7
1.4.1. Chng trnh vit bng VS.....................................................................................7
1.4.2. Cc lnh n gin...................................................................................................8
1.4.3. Cc biu thc..........................................................................................................8
1.4.4. Cc lnh c cu trc...............................................................................................8
1.4.5. Cc nhn.................................................................................................................8
2. VS trong m phng Hnh hc................................................................................................9
2.1. Kh nng ca ngn ng..................................................................................................9
2.2. Cc ng dng..................................................................................................................9
2.3. V d...............................................................................................................................9
3. Cc lnh trong VS...............................................................................................................12
3.1. Cc lnh x l i tng..............................................................................................12
3.2. Cc lnh x l a gic..................................................................................................14
3.3. Cc lnh ha............................................................................................................15
3.4. Cc lnh phc v tnh ton trong hnh hc phng........................................................16
3.5. Cc lnh ch i...........................................................................................................16
3.6. Cc lnh phc v x l tng tc.................................................................................17
3.7. Cc lnh iu khin h thng.......................................................................................17
3.8. Cc lnh trong th vin Hnh hc.................................................................................17
4. Cc bi ton mu.................................................................................................................18
4.1. Gii thiu......................................................................................................................18
4.2. V th hm s...........................................................................................................18
4.3. Bi ton qu tch...........................................................................................................19
4.4. Tam gic Napoleon.......................................................................................................20
4.5. Dng tam gic bit 3 cnh............................................................................................22
4.6. M phng con lc l xo................................................................................................23

-3-

VIOLET Group

Ngn ng lp trnh Violet Script

1. Tng quan
1.1. Gii thiu s lc
Violet Script (VS) l ngn ng lp trnh chuyn dng v ha, c bit trong vic
to ra cc hot ng m phng. Ngn ng ny c th c s dng rt hiu qu xy dng
cc phn mm multimedia h tr dy hc. Vi cu trc n gin nhng y v cht ch,
VS s gip ngi dng c th d dng m t cc tng ca mnh, hoc c th sa i mt
sn phm c sn cho ph hp kch bn ca mnh.
Khc vi mt phn mm cng c, vic s dng ngn ng lp trnh c tnh m cao
hn, n cho php ngi dng khng phi ch l s dng cc mu m phng c sn m cn c
th t to ra cc mu mi, hoc sa i c nhng mu c mt cch ty (sa cc tham
s, ni dung v trnh t th hin, v.v...). Nh vy, kh nng p ng yu cu ngi dng ca
mt ngn ng lp trnh l cao hn rt nhiu so vi mt phn mm cng c.
VS c xy dng da trn ngn ng Action Script 2.0 ca Macromedia Flash, chnh
v vy, VS rt mnh trong vic thc hin cc m phng c chuyn ng v tng tc, c x
l m thanh v hnh nh. Tt nhin, vic lp trnh bng VS th n gin hn nhiu so vi lp
trnh bng Action Script.
Cc file m ngun ca VS u c th s dng c m vn bn Unicode hoc
Unicode UTF-8. Chnh v vy, khng ch c cc d liu, li gii thch m k c tn cc i
tng (tn bin, tn nhn, tn lnh, tn hm) u c th dng c bng ting Vit c du,
gip ngi dng Vit Nam d tip cn hn nhiu so vi mt ngn ng bng ting Anh.

1.2. Cc c im chnh ca ngn ng


1.2.1. Ngn ng m phng
Ngn ng lp trnh VS h tr rt nhiu v cc k thut m phng. Cc thao tc v
ha v m phng hu ht c lp trnh sn, li thm kh nng m np th vin ng, kh
nng s dng cc d liu m thanh, hnh nh mt cch d dng, VS s gip ngi cho ngi
dng c th vit c nhng phn mm ha cao cp m khng cn nhng kin thc
chuyn su v ha.
C th coi vic lp trnh m phng bng ngn ng VS ch n gin l vic m t li
kch bn ca qu trnh m phng. Sau , trnh thng dch ca VS s thc hin cc cng vic
ha v m phng theo nh kch bn ny. Do vy, ngi dng hon ton c th to c
mt qu trnh m phng phc tp ch bng mt on chng trnh VS rt ngn gn (so vi
cc ngn ng lp trnh khc).

1.2.2. La chn ch chy song song hoc tun t


Cc ngn ng thng dch thng phi chy di dng tun t (chy ht lnh ny ri
mi n lnh khc). Tuy vy, trong m phng, i khi ta cn to nhiu thao tc m phng
ng thi (v d nh hai hay nhiu vt cng chuyn ng mt lc). V vy, VS c th cho
php ngi lp trnh thit lp c ch x l lnh l song song hay tun t.
y cng l mt c im c o v tin dng ca ngn ng VS so vi cc ngn
ng lp trnh khc.

-4-

VIOLET Group

Ngn ng lp trnh Violet Script

1.2.3. Kh nng s dng cc th vin m


Tuy VS l ngn ng chuyn dng trong lnh vc ha v m phng, song ha l
mt lnh vc rt rng nn VS ch c tnh tng qut. N khng th bao hm c ht tt c
cc thao tc m phng, chng trnh thng dch VS cng khng th cha tt c cc d liu,
th vin hnh nh thng dng cho mi sn phm. Tuy nhin, i vi ngi lp trnh khng
chuyn, vn t ra l phi lm sao cho mi th hu nh c sn ht.
V vy, ngn ng VS c mt h thng th vin y km theo v cp nht thng
xuyn. Cc th vin ny cha nhiu hnh nh, m hnh, biu tng thng dng v c th ly
ra s dng mt cch d dng, cc thao tc chuyn ng c lp trnh sn, cc mu chng
trnh chun cng c th s dng vi kh nng ty bin cao.
V d: trong vic to bi ging, nu phn loi theo cc mn hc th ngn ng VS (c
th l trnh thng dch ca ngn ng VS) s phc v cho tt c cc mn. Tuy nhin, th vin
s dng cho tng mn s khc nhau, ngha l ta s c th vin cho mn Ton, th vin cho
mn Vt L, v.v Nh vy, kh nng ci tin chng trnh v cp nht t liu ca VS s tr
nn d dng.
Th vin ng l mt trong nhng u im hn hn ca VS so vi hu ht cc phn
mm cng c to bi ging hin nay.

1.2.4. So snh ngn ng VS vi Timeline


Nhng ngi tng dng hoc xem cc chng trnh nh Macromedia Flash,
Macromedia Diector, Adobe Premier, hn khng th khng bit n khi nim Timeline
(trc thi gian). y l mt cng c thit k rt quan trng trong vic to ra cc chuyn
ng, cc hiu ng ca hnh nh v m thanh, lm phim hot hnh, xy dng cu trc ca
mt sn phm, Timeline l mt cng c rt hu ch, c bit i vi ngi khng bit lp
trnh cng c th dng n xy dng phn mm multimedia ng dng c.
Tuy nhin im nhc c bn ca Timeline l khng c tnh m. V d: dng
Timeline c th d dng to mt chuyn ng trong vng 3 giy, nhng khng th dng
Timeline to chuyn ng trong vng n giy, vi n l mt gi tr c nhp t bn phm
hoc t file bn ngoi.
Trong khi , vic xy dng cc phn mm tr ging li i hi cng c phi c tnh
m. V bi ging ca mi gio vin l khng ging nhau, nn phn mm tr ging phi cho
php gio vin t sa theo mnh c. Trong trng hp ny, ngi sn xut phn mm
khng cn cch no khc l phi la chn mt ngn ng lp trnh.
Mt khc, i vi nhng ngi bit lp trnh ri th dng ngn ng cng d chu hn
so vi dng Timeline. V d: c th sa i s liu mt cch d dng v chnh xc, c th
comment (vit li gii thch) cho cc on chng trnh, c th phn chia chng trnh ln
thnh cc module nh Vic thao tc vi cc dng code cng d dng hn so vi cc i
tng ha v Timeline. Code c th dng bt c chng trnh son tho vn no to
lp v sa i ch khng cn phi mt h thng s nh khi dng Timeline.
Tuy vy, dng Timeline cng c mt u im hn so vi ngn ng l tnh n nh, t
b li. Cn vic lp trnh nu khng cn thn th s c th sinh ra rt nhiu li. Do , trong
qu trnh pht trin th ngn ng th cng phi dn dn khc phc yu im ny.

-5-

VIOLET Group

Ngn ng lp trnh Violet Script

1.3. S dng Violet Script trong Violet


Violet Script khi ngun l mt ngn ng chy c lp, c th dng t xy dng
c cc bi ging hon chnh. Khi c kt hp vi cng c Violet, ngn ng ny thng
ch dng to mt on m phng ngn trn mt trang mn hnh, v vy nn s n gin
hn v d qun l hn. i vi ngi dng th va c c s linh hot ca ngn ng, li
va s dng c cc tnh nng d dng ca Violet nh to hiu ng, to cc bi tp,...
s dng VS trong Violet, vo mc son tho trang mn hnh, nhn nt Cng c,
mt menu hin ln, ta chn mc Lp trnh m phng. Mn hnh sau hin ra v ta c th
son tho trc tip chng trnh vo y.

Mn hnh son tho Script


Nu chng trnh c s dng cc i tng nh, hoc cc th vin m ngun t file
text, th sau khi vit xong, click vo nt "Tip tc", mn hnh sau hin ra:

Mn hnh nhp cc m ngun bn ngoi v cc i tng

-6-

VIOLET Group

Ngn ng lp trnh Violet Script

Trong :
Khung pha trn cho php nhp cc file m ngun VS t file text bn ngoi. Thng
thng, Violet s cung cp sn mt s file th vin cc thao tc chun c th s dng
c lun.
Ta cng c th vit m ngun VS cho m phng ca mnh ra file text bn ngoi, ri
nhp vo y, m khng cn phi vit g trong phn son tho m ngun trc . Cch
lm ny hay hn (v nn dng), v son tho file text bn ngoi s d dng hn l son trc
tip trong Violet. Nh trong hnh trn ta thy phn chng trnh v ng phn gic s nm
trong file Vephangiac.vs ch khng phi nm trong phn son tho Script ca Violet.
Khung pha di cho php nhp cc i tng hnh nh s c s dng trong phn
mm. Cc i tng ny c th ly t file SWF hoc file JPG. Tuy nhin, ch c file SWF
(lm bng Flash) th mi c th chnh c v tr no trn nh l v tr (0, 0). V d vi mt
nh chic bt ch, ta cn chnh sao cho ch u bt ch ch ng vo v tr (0, 0) trong Flash.
Khi , nu ta dch chuyn i tng bt ch ti v tr (x, y) th u bt ch s ch ng vo v
tr (x, y) . Cn nu s dng nh JPG, th v tr gc trn bn tri ca nh s ng vo v tr
(x, y) ch khng phi ch u bt ch.
Sau khi nhp xong chng trnh, cc file m ngun chun v cc file nh, ta nhn nt
"ng ". sa i m ngun hay cc thng tin khc, ta click p vo bt k i tng
no trong hot cnh m phng.

1.4. Cu trc ngn ng


Violet Script 1.0, gn ging ngn ng Basic cc cu trc lnh v ngn ng C cu
trc chng trnh.

1.4.1. Chng trnh vit bng VS


Ging nh C, chng trnh VS bao gm cc hm, trong hm main s c gi
ngay khi bt u chy chng trnh.
function main
appear
end

Text, 8, 4, "Hello world"

Mt chng trnh con (mt hm, chc nng) s c khai bo nh sau:


function <tn hm> <cc tham s>
<lnh 1>
<lnh 2>
...
end

Trong tn chng trnh con khng c du cch (c th dng du gch chn "_"
thay cho du cch). Cc tham s th phi khai bo cch nhau bi du phy. C th xem thm
cc v d minh ha trong cc phn sau.
Nu chng trnh con tr v cc gi tr cho cc tham s th khi gi ta nn thm du &
vo pha trc tham s (ging c php ca ngn ng C). V d:
input_line
get_point

&ax, &ay, &bx, &by


&x, &y, x1, y1, angle, 2

-7-

VIOLET Group

Ngn ng lp trnh Violet Script

1.4.2. Cc lnh n gin


Ngn ng VS cung cp cc loi lnh sau:

Cc lnh gn, v d a = 2; a = 10*5 + 1; b = a^2 + a + 1

Cc lnh c bn: v d lnh appear nh trong chng trnh trn

Cc lnh gi chng trnh con: c c php ging nh lnh c bn

1.4.3. Cc biu thc


Cc biu thc ton hc c th s dng trong v phi ca cc lnh gn, hoc lm tham
s ca cc lnh khc. Mt biu thc bao gm cc thnh phn:

Cc ton hng: gi tr s, bin s

Cc ton t: + , - , * , / , ^

Cc hm s: sin, cos, tg, cotg, arcsin, arccos, arctg, arccotg, abs, sqrt, ln

Cc du ngoc n"(" v ")"

V d tnh gc B ca tam gic ABC nu bit di 3 cnh AB, AC v BC, p dng


nh l hm s cos.
lenAB =
lenAC =
lenBC =
angleB =

2
3
4
arccos((lenAB^2 + lenBC^2 - lenAC^2)/(2*lenAB*lenBC))

1.4.4. Cc lnh c cu trc


Lnh iu kin
if <iu kin> then
<cc lnh>
end_if

Lnh lp
for <tn bin> from <cn di> to <cn trn> step <bc nhy>
<cc lnh>
next

1.4.5. Cc nhn
C th coi nhn l cc lnh c bit, c k hiu bi du ":" v tn nhn. Nhn dng
va nh du, va m t cc on lnh. Nhn thng c dng nh mt nh danh
c th truy cp (goto) n on lnh t bt k v tr no trong chng trnh.
V d:
function main
goto
:START
appear
wait_click
:ERASE
erase
wait_click
goto
end

ERASE
Text, 8, 4, "Hello world"
Paper
START

-8-

VIOLET Group

Ngn ng lp trnh Violet Script

2. VS trong m phng Hnh hc


2.1. Kh nng ca ngn ng
Hin ti, chng ti cung cp sn mt file m ngun chun cha cc thao tc dng
hnh c bn nh v ng thng bng thc k, v ng trn bng compa, ct ghp a gic
v.v... l C:\Program Files\Platin Violet\Lecture\vpScript\Common\Mathtool.vs
V vy, trong mn Hnh hc, ngn ng Violet Script s h tr nhiu trong cc loi
cng vic sau:

V hnh trn mn hnh ha (on thng, ng trn, th,)

S dng cc i tng c sn trong th vin (v d vi mn hnh hc c: compa,


thc k, bt, ty, -ke, thc o , giy mu, dao ct), v m phng hot
ng ca tng i tng ny.

X l cc tng tc vi ngi dng (nhn chut, ko th, nhp t bn phm,)

2.2. Cc ng dng
Hin ti chng ti cung cp sn th vin hnh nh v cc on chng trnh c bn
dng cho mn Hnh hc, vi phm vi ng dng l cp THCS. Phn ny s ch yu tp trung
vo Hnh hc clit, bao gm cc loi bi ton nh sau:

Bi ton v hnh v x l tng tc vi ngi dng

Bi ton dng hnh bng cc dng c dng hnh thng dng

Bi ton ct ghp hnh (m phng vic ct ghp cc mnh giy mu)

Bi ton qu tch v v th hm s

2.3. V d
V d m t mt bi ton dng hnh: v trung trc ca mt on thng c ngi
dng nhp vo khi chy chng trnh. Kch bn ca on m phng ny nh sau:

Ngi dng nhn chut xc nh im th nht, nhn tip chut xc nh


im th hai

nh du v k hiu hai im A, B va nhp

M phng vic dng thc k v bt ch v mt on thng gia hai im AB

Xut hin mt compa v a compa vo v tr ca im A

M rng compa (khong cch 2 u compa bng khong 2/3 AB)

Quay compa mt na vng trn (cung hng vo im B). Trong khi quay compa
th cung trn cng s c v theo, nt v phi mnh v nht th hin y ch
l v nhp.

a compa n im B

Quay compa mt na vng trn (cung hng vo im A)

-9-

VIOLET Group

Ngn ng lp trnh Violet Script

Dng thc k v bt ch v mt on thng i qua 2 giao im ca 2 cung


trn, di ca on thng ny l mt gi tr hp l. chnh l ng trung
trc ca on thng AB.

nh du im M l giao im ca ng trung trc vi on thng AB

K hiu gc M vung

K hiu M l trung im ca AB

Xa cc nt cung trn v

Ta s m ha kch bn m phng trn thnh ngn ng VS nh sau:


function main
appear
input_line
disappear
appear
appear
create_line
radius =
get_angle

end

Text, 8.25, 0.5, "Hy v mt on thng", 2


&ax, &ay, &bx, &by
Text
Point, ax, ay, "A", below
Point, bx, by, "B", below
ax, ay, bx, by
sqrt((ax-bx)^2 + (ay-by)^2) / 3 * 2
&angle, ax, ay, bx, by

set_paper
appear
move
call
rotate_compa
move
rotate_compa
disappear

Draft
Compa
Compa, ax, ay, angle-90
Compa.OpenCompa, radius
Compa, radius, angle+90
Compa, bx, by, angle+90
Compa, radius, angle+270
Compa

mx =
my =
angle =
get_point

(ax + bx) / 2
(ay + by) / 2
angle + 90
&cx, &cy, mx, my, angle, 4

set_paper
create_line
appear
note_angle
note_edge
note_edge

Paper
cx, cy, 2 * mx
Point, mx, my,
0, "", bx, by,
0, "", ax, ay,
0, "", mx, my,

- cx, 2 * my - cy
"M", leftbelow
mx, my, cx, cy
mx, my
bx, by

Lu : Mt n v tnh trong Violet Script c quy nh mc nh l 40 pixel,


rng ca mn hnh hin th l 660x460 pixel, tc l khong 16.5x11.5 n v.
Chng trnh ny s dng cc thao tc dng hnh chun (trong file Mathtool.vs) v
cc i tng hnh nh: thc k, bt ch, compa. V vy, sau khi son xong chng trnh, ta
phi khai bo cc d liu ny nh sau:

- 10 -

VIOLET Group

Ngn ng lp trnh Violet Script

Nhn nt ng , ta s c on m phng dng ng trung trc ca mt on


thng bt k c nhp vo t con chut (nhn, ko v th).

M phng v ng trung trc bng compa, thc k, bt ch


C th thy vic vit mt chng trnh m phng nh trn ch n gin l m ha 1:1
kch bn m phng thnh ngn ng VS.
R rng vic to bi ging Hnh hc bng ngn ng VS s n gin hn nhiu so vi
cc ngn ng lp trnh khc. V d nu s dng C/C++ th to mt bi ging, c th phi
vit chng trnh di n hng nghn dng lnh v hng chc file d liu, cn nu dng ngn
ng VS th ch cn vi chc dng lnh v khng cn file d liu.

- 11 -

VIOLET Group

Ngn ng lp trnh Violet Script

3. Cc lnh trong VS
3.1. Cc lnh x l i tng
Trong th vin ca trnh thng dch VS mn Hnh hc c cc loi i tng hnh nh
nh sau:
Tn i tng

ng dng

Hnh nh

Point
(im)

K hiu im trn hnh v

Ruler
(thc k)

S dng lm vt k v cc on
thng

Compa
(compa)

Dng v cc hnh trn hoc cung


trn

Pencil
(bt ch)

Dng v on thng hoc cc


ng th

Protractor
(thc o gc)

Dng xc nh gc trong vic v


gc

TSquare
(-ke)

Dng v on thng vung gc vi


mt on thng c sn

Measurer
(thc o)

Dng o cnh hoc gc

Burin
(dao ct)

Dng ct cc a gic

- 12 -

C hnh dng l thc k hoc


thc o gc ty ngi s dng

VIOLET Group

Ngn ng lp trnh Violet Script

s dng cc loi i tng ca VS cng nh cc i tng c np t th vin


bn ngoi, ngn ng VS cung cp cc lnh sau:
Tn lnh

Tham s

Tc dng

appear
xut_hin

1. Tn i tng
To lp v cho xut hin mt i
tng ti v tr X, Y vi cc tham s
2. Ta ca i tng
c th ty theo loi i tng.
3. Tham s c trng 1 (ch
dng cho mt s i tng)
4. Tham s c trng 2 (ch
dng cho mt s i tng)

disappear
bin_mt

Tn mt (hoc nhiu) i
tng

Lm cho cc i tng bin mt (m


dn ri mt hn)

move
dch_chuyn

1. Tn i tng
2. Ta mi (x, y)
3. Gc quay i tng

Va dch chuyn va quay i tng


ti v tr mi v gc quay mi. Nu
khng nhp gc quay th gc quay
mc nh l 0.

V d di y s m phng vic v mt im bng bt ch


function main
appear Pencil
move Pencil, 5, 5
appear Point, 5, 5, A
delay 12
disappear Pencil
end

//
//
//
//
//

Xut hin thc k v tr (0,0)


a bt ch v tr (5, 5)
Xut hin im A v tr (5, 5)
Tm dng 1 giy
Lm bin mt bt ch

M phng v mt im bng bt ch

- 13 -

VIOLET Group

Ngn ng lp trnh Violet Script

3.2. Cc lnh x l a gic


Tn lnh

Tham s

Tc dng

polygon
a_gic

Tn a gic
V tr a gic
Ta cc im ca a gic

To mt a gic

clip
ct

Ta ca 2 im bt k nm
trn ng thng ct

Ct tt c cc a gic trn mn hnh


theo mt ng thng

unify
hp

Tn a gic
Tn cc a gic s c hp
vo a gic u tin

Hp nhiu a gic thnh mt i


tng

flip
lt

Tn a gic

Lt mt a gic qua trc tung

Phn v d di y l mt chng trnh hon chnh, thc hin vic ct v ghp cc


gc ca mt tam gic chng minh tng ca chng bng 180. Khi chy, ngi dng s xc
nh cc ng ct qua gc th nht v ng ct qua gc th hai, sau mi ln ct th cc
mu ct s c ghp vo ng v tr cn thit.
function main
polygon
input_line
cut_polygon
move
input_line
cut_polygon
move
end

Tamgiac, 8, 6, 0x7F7FFF, -1, -3, 3, 1, -3, 1


&px1, &py1, &px2, &py2
px1, py1, px2, py2
Tamgiac2, 4, 4, -180
&px1, &py1, &px2, &py2
px1, py1, px2, py2
Tamgiac12, 10, 4, 180

M phng ct mt gc ca hnh tam gic bng dao ct

- 14 -

VIOLET Group

Ngn ng lp trnh Violet Script

3.3. Cc lnh ha
Tn lnh

Tham s

Tc dng

erase

Tn i tng cn xa

Xa ni dung ca i tng

circle

Ta ca tm
Bn knh ng trn

V ng trn bit tm v bn knh.

line

Ta 2 im u mt

V on thng qua 2 im

note_angle
k_hiu_gc

Kiu nh du
Gi tr k hiu
Ba im hoc 3 ta im

nh du gc v k hiu gi tr ca
gc

note_edge
k_hiu_cnh

Kiu nh du
Gi tr k hiu
Hai im hoc 2 ta im

nh du cnh v k hiu gi tr ca
cnh

attach_pen

i tng
Ta im c gn bt

Gn vo i tng mt im, m khi


thay i v tr ca i tng th im
ny s lu li vt

detach_pen

i tng

G b im gn ra khi i tng

V d v tam gic qua 3 im (x1, y1), (x2, y2), (x3, y3) vi y k hiu cnh gc
function ShowTriangle x1, y1, x2, y2, x3, y3
poly_line
x1, y1, x2, y2, x3, y3, x1,
set_paper
Paper, 2, 0x003FBF
note_edge
2, "value", x2, y2, x1, y1
note_edge
1, "value", x3, y3, x2, y2
note_edge
0, "value", x1, y1, x3, y3
note_angle
0, "value", x2, y2, x1, y1,
note_angle
2, "value", x3, y3, x2, y2,
note_angle
1, "value", x1, y1, x3, y3,
end
function main
ShowTriangle
end

2, 7, 7, 7, 3.5, 4

- 15 -

y1

x3, y3
x1, y1
x2, y2

VIOLET Group

Ngn ng lp trnh Violet Script

3.4. Cc lnh phc v tnh ton trong hnh hc phng


Tn lnh

Tham s

Tc dng

get_point
ly_im

Ta ca kt qu
Ta ca im gc
Gc
Khong cch R

Chuyn t ta cc sang ta cc (tnh ta ca im bit R v


trong h ta cc)

get_angle
ly_gc

Gc (kt qu)
Ta ca im
Ta ca im gc
Kiu v on thng

Ly gc (trong h ta cc) t
ta ca mt im so vi im gc

get_perpendicular

Ta im kt qu
Ta im
Ta ca hai im nm
trn ng thng

Tnh v tr ca chn ng vung gc


h t mt im xung mt ng
thng

get_intersection1

Ta im kt qu
Ta 2 im trn ng
thng th nht
Ta 2 im trn ng
thng th hai

Tnh giao im gia hai ng thng

get_intersection2

Ta im kt qu th 1
Ta im kt qu th 2
Ta 2 im trn ng
thng
Ta tm ng trn
Bn knh ng trn

Tnh hai giao im ca mt ng


thng v mt ng trn

3.5. Cc lnh ch i
Tn lnh

Tham s

Tc dng

delay
tr

Thi gian tr

Dng (tr) mt khong thi gian

wait_click
i_nhn

Tn cc nt ha ang
ch c nhn

i cho n khi ngi dng click vo nt


ha trn mn hnh. Nu lnh khng c
tham s ngha l ch n khi nhn nt
Next v nt Back.
Cc nt ha c th c np t file
ngoi bng lnh load_movie

- 16 -

VIOLET Group

Ngn ng lp trnh Violet Script

3.6. Cc lnh phc v x l tng tc


Tn lnh

Tham s

Tc dng

set_drag
ko_th

1. i tng cn thao tc
2. Thao tc (true) hay
khng (false)

Thit lp mt i tng l c th ko th
c hay khng

input_line
nhp_on

Ta 2 im u mt
on thng

Nhp mt on thng (2 im) bng cch


nhn vo ko chut

input_point

Ta im

Nhp mt im bng cch nhn chut

input_data

Tiu hp nhp
Tiu v tham s th 1
Tiu v tham s th 2
...

Hin ra mt hp thoi cho php nhp mt


hoc nhiu tham s t bn phm

3.7. Cc lnh iu khin h thng


Tn lnh

Tham s

Tc dng

parallel
song_song

Khng

Thit lp ch thc hin cc lnh l


song song

sequence
tun_t

Khng

Thit lp ch thc hin cc lnh l


tun t

Fscommand

1. command
2. param

Thc hin lnh fscommand ca Flash


Action Script.

3.8. Cc lnh trong th vin Hnh hc


1) create_line x1, y1, x2, y2
M phng v mt on thng bng thc k v bt ch t im (x1, y1) n im (x2, y2)

2) create_corner x1, y1, angle, len


M phng v mt gc bng thc o , thc k, bt ch. u tin a thc o n v
tr ca mt ng nm ngang, tm thc l (x1, y1), ly mt im gc angle, ri k t tm
i qua im mt on c di l len.

3) rotate_compa Compa, radius, angle


Quay i tng Compa mt gc angle t v tr hin ti, cn radius l m ca Compa (phi
ging nh lnh call Compa.Open, trc )

4) create_arc x1, y1, radius, start, end


M phng v mt cung trn tm (x1, y1), bn knh radius (c xc nh bng compa v
thc k), t gc start n gc end.

5) cut_polygon x1, y1, x2, y2


M phng ct bng dao ct i vi tt c cc hnh a gic c to bng lnh polygon
- 17 -

VIOLET Group

Ngn ng lp trnh Violet Script

4. Cc bi ton mu
4.1. Gii thiu
Cc bi ton mu di y l cc v d hon chnh vit bng ngn ng VS, gip cho
ngi c hiu c tng c bn ca vic lp trnh, ng thi cho thy cc quy tc chung
to lp mt chng trnh VS. Ngi dng hon ton c th s dng v pht trin cc bi
tp mu ny theo nhng tng ring ca mnh.
Cc bi tp mu c trnh by ngn gn v d hiu, vi mc ch cho thy kh nng
to cc bi ging sinh ng bng VS l rt d dng. Tt nhin, nhng kh nng thc s m
VS lm c cn ln hn nhiu so vi nhng nhng g th hin trong cc v d y, m
thm ch ngay c tc gi ca ngn ng lp trnh cng cha th khm ph ra ht c.

4.2. V th hm s
Trong chng trnh hc cp 2 v c cp 3 u c cc bi tp v th hm s. gii
quyt mt bi tp ny s khng h n gin (phi tnh o hm, vi phn, kho st s bin
thin hm s,), vy m cng ch quanh qun mt s dng hm s c bn. Tuy nhin, vi
mt ngn ng lp trnh bnh thng, ta c th v c th bt k m khng cn phi tnh
ton o hm, vi phn, Vi VS, vic v th cn d dng hn nhiu.
V d di y s v th hm s y = (x-2)*(x-1)*x*(x+1)*(x+2), ngha l mt th
ct trc honh ti cc im -2, -1, 0, 1 v 2.
function main
line 0, y0 = 6, 16, y0
line x0 = 8, 0, x0, 12
set_paper Paper, 3, 0xFF00FF
appear Pencil
attach_pen Pencil
for x from -2.2 to 2.4 step 0.05
y = (x-2)*(x-1)*x*(x+1)*(x+2)
set_pos Pencil, x0 + x, y0 - y
delay 1
next
end

- 18 -

VIOLET Group

Ngn ng lp trnh Violet Script

4.3. Bi ton qu tch


Bi ton 1: Cho mt im A c nh nm trong ng trn tm O, k ng thng qua A ct
ng trn ti P. Tm qu tch trung im M ca OP khi P chuyn ng trn ng trn.
function main
set_paper Paper, 2,
appear Point, ox=8,
appear Point, ax=8,
circle ox, oy, 4
appear Point, 0, 0,
attach_pen PointM

0xBF00BF
oy=6, "O", right
ay=8, "A", left
"M"

for angle from 135 to 135-360 step -2


get_point &px, &py, ox, oy, angle, 4
appear Point, px, py, "P"
set_pos PointM, (px+ax)/2, (py+ay)/2
set_paper Draft,
erase
line ax, ay, px,
note_edge 2, "",
note_edge 2, "",
delay 1

2, 0x0000BF
py
M, P
M, A

next
end

Bi 2: ng Cycloide
ng qu tch c sinh ra khi mt vng trn chy xung quanh mt vng trn khc.
Trong phn chng trnh di y 3 bin s R1, R2 v L c th c sa i ty s to ra
v vn nhng loi ng cycloide khc nhau.
function main
R1 = 2.0
R2 = 0.8
L = 2.0
set_paper Draft, 2, 0
circle x0=8.25, y0=5.75, R1
set_paper Wheel, 2, 0x0000FF
set_fill 0x7FBFFF, 50

- 19 -

VIOLET Group

circle 0, 0,
line 0, -R2,
line -R2, 0,
circle L*R2,

Ngn ng lp trnh Violet Script

R2
0, R2
L*R2, 0
0, 0.1

set_paper Paper, 3, 0xFF0000


attach_pen Wheel, L*R2, 0

end

for t from 0 to 720 step 2


get_point &x, &y, x0, y0, t, R1+R2
set_pos Wheel, x, y, t*(R1+R2)/R2
delay 1
next
disappear Wheel
disappear Draft

M phng cch v ng Cycloide

Mt trong nhng dng ng Cycloide

4.4. Tam gic Napoleon


T 3 cnh ca 1 tam gic bt k v ra pha ngoi 3 tam gic u. Tm ca 3 tam gic
u ny s l nh ca mt tam gic u gi l tam gic Napoleon.
Phn chng trnh di y s v tam gic Napoleon. Ngi dng c th ko th cc
nh ca tam gic ban u thy tam gic Napoleon bin i nh th no.
- 20 -

VIOLET Group

function v_hnh
set_paper
erase
get_pos
get_pos
get_pos
poly_line

Ngn ng lp trnh Violet Script

Draft, 3, 0x0000FF
&x3, &y3, PointA
&x1, &y1, PointB
&x2, &y2, PointC
x1, y1, x2, y2, x3, y3, x1, y1

set_paper
set_fill
get_angle
get_point
poly_line
cx1 =
cy1 =

Draft, 2
0x7FBFFF, 50
&angle, x1, y1, x3, y3
&x, &y, x1, y1, angle+60, sqrt((x3-x1)^2+(y3-y1)^2)
x3, y3, x, y, x1, y1
(x3 + x + x1) / 3
(y3 + y + y1) / 3

get_angle
get_point
poly_line
cx2 =
cy2 =

&angle,
&x, &y,
x3, y3,
(x3 + x
(y3 + y

x3, y3, x2, y2


x3, y3, angle+60, sqrt((x3-x2)^2+(y3-y2)^2)
x, y, x2, y2
+ x2) / 3
+ y2) / 3

get_angle
get_point
poly_line
cx3 =
cy3 =
end_fill

&angle,
&x, &y,
x2, y2,
(x1 + x
(y1 + y

x2, y2, x1, y1


x2, y2, angle+60, sqrt((x2-x1)^2+(y2-y1)^2)
x, y, x1, y1
+ x2) / 3
+ y2) / 3

set_paper
set_fill
poly_line

Draft, 3, 0xFF0000
0xFF3F3F, 75
cx1, cy1, cx2, cy2, cx3, cy3, cx1, cy1

end
function main
appear
appear
appear
set_drag
set_drag
set_drag
v_hnh
end

Point, ax=7, ay=3, "A", above


Point, bx=5, by=6, "B", leftbelow
Point, cx=11,cy=6, "C", rightbelow
PointA, true, v_hnh
PointB, true, v_hnh
PointC, true, v_hnh

Tam gic Napoleon

- 21 -

VIOLET Group

Ngn ng lp trnh Violet Script

4.5. Dng tam gic bit 3 cnh


y l mt bi rt c bn trong dng hnh: Dng mt tam gic bit di 3 cnh m
ch dng thc k v compa.
function main
input_data
angleB =
get_point
DrawTriangle
end

"Nhp 3 cnh", "AB", lenAB, "AC", lenAC, "BC", lenBC


arccos((lenAB^2 + lenBC^2 - lenAC^2)/(2*lenAB*lenBC))
&ax, &ay, 4, 7, angleB, lenAB
4, 7, 4+lenBC, 7, ax, ay, B, C, A

function DrawTriangle x1, y1, x2, y2, x3, y3, a1, a2, a3
create_line2 x1, y1, x2, y2
appear
Point, x1, y1, a1, below
appear
Point, x2, y2, a2, below
note_edge
-1, value, x2, y2, x1, y1
delay
12

end

set_paper
create_arc
create_arc
appear
delay

Draft
x1, y1, lenAB, 0, 90
x2, y2, lenAC, 90, 180
Point, x3, y3, a3, above
12

set_paper
create_line
note_edge
create_line
note_edge
delay
erase

Paper
x1, y1, x3, y3
-1, value, x1, y1, x3, y3
x3, y3, x2, y2
-1, value, x3, y3, x2, y2
12
Draft

on m phng ny c s dng th vin cc thao tc dng hnh chun (chnh l file


Mathtool.vs) c cung cp km theo Violet, v cc i tng hnh nh nh sau:

Cc th vin m ngun v hnh nh s dng trong bi ton dng hnh

- 22 -

VIOLET Group

Ngn ng lp trnh Violet Script

4.6. M phng con lc l xo


m phng mt con lc l xo co gin, c th s dng mt nh l xo, sau co gin
nh. Tuy nhin k thut ny s lm cho dy ca dy l xo thay i nn khng ng thc
t. to mt chic l xo co gin p, ta phi lp trnh v to ra mt i tng ring cho VS.
Trong Macromedia Flash, to mt file mi, click chut vo frame duy nht trn
timeline, sau m hp son tho Action Script (nhn F9), g on m sau vo:
function DrawSpring(len) {
clear();
lineStyle(3, 0, 100);
for (var i = 0; i<20; i++) {
lineTo((i%2*2-1)*15, (i+0.5)*len/20);
}
lineTo(0, len);
}

Dch file ny thnh file swf, trong file thng tin ca chng trnh dch VS, khai bo
tn i tng l L_xo v ch ng dn n file swf. Sau vit chng trnh VS nh sau:
function main
set_paper Giado, 8, 0x7F7F7F
poly_line 5, 10, 6, 10, 6, 1, 10, 1, 10, 10, 11, 10
appear Spring, 8, 1
set_paper Sphere
sphere 0, 0.6, 0.6, 0x0000FF, 0xBFBFFF
for t from 0 to 100000
len = 6 + sin(t*15)
set_pos Sphere, 8, len + 1
call Spring.DrawSpring, len
delay 1
next
end

Kt qu chy chng trnh trn nh sau. Con lc l xo s dao ng iu ha vi l xo


co gin m dy ca si dy l xo khng thay i.

M phng con lc l xo ng dao ng iu ha

- 23 -

You might also like