NGÔN NGỮ LẬP TRÌNH NGÔN NGỮ LẬP TRÌNH

VIOLET SCRIPT VIOLET SCRIPT

VIOLET Group

Ngôn ng l p trình Violet Script

ữ ậ

HÀ N I, 5/2004 Ộ

- 2 -

VIOLET Group

Ngôn ng l p trình Violet Script

ữ ậ

M C L C Ụ Ụ

i thi u s l ớ ặ 1. T ng quan ổ 1.1. Gi 1.2. Các đ c đi m chính c a ngôn ng ữ ự ầ ự ả ư ệ ớ ữ

1.3. S d ng Violet Script trong Violet 1.4. C u trúc ngôn ng

2. Ngôn ng Violet Script trong t o bài gi ng ạ ả

3. Các l nh trong VS

ẳ ọ

ươ ệ ố ể

ự 4 ............................................................................................................................. 4 ......................................................................................................... c ệ ơ ượ 4 ............................................................................... ữ ủ ể 1.2.1. Ngôn ng mô ph ng 4 .............................................................................................. ỏ 1.2.2. L a ch n ch đ ch y song song ho c tu n t 4 ................................................... ặ ế ộ ạ ọ 5 ..................................................................... 1.2.3. Kh năng s d ng các th vi n m ở ử ụ 5 ....................................................................... 1.2.4. So sánh ngôn ng VS v i Timeline 6 ................................................................................ ử ụ 7 ......................................................................................................... ữ ấ 7 ................................................................................... t b ng VS 1.4.1. Ch ng trình vi ươ ế ằ 1.4.2. Các l nh đ n gi n 8 ................................................................................................. ơ ả ệ 1.4.3. Các bi u th c 8 ......................................................................................................... ể ứ 1.4.4. Các l nh có c u trúc 8 .............................................................................................. ấ ệ 8 ................................................................................................................. 1.4.5. Các nhãn 9 ......................................................................... ữ 9 ................................................................................................ 2.1. Kh năng c a ngôn ng ữ ả ủ 9 2.2. Các ng d ng ................................................................................................................. ứ 2.3. Ví dụ 9 ............................................................................................................................... 12 ............................................................................................................... ệ ng 12 ............................................................................................ 3.1. Các l nh x lý đ i t ố ượ ệ ử 14 ................................................................................................. 3.2. Các l nh x lý đa giác ệ ử 3.3. Các l nh đ h a 15 ........................................................................................................... ồ ọ ệ 3.4. Các l nh ph c v tính toán trong hình h c ph ng 16 ..................................................... ụ ụ ệ 3.5. Các l nh ch đ i 16 .......................................................................................................... ờ ợ ệ 17 .............................................................................. 3.6. Các l nh ph c v x lý t ng tác ụ ụ ử ệ 17 3.7. Các l nh đi u khi n h th ng .................................................................................... ề ệ 18 4. Các bài toán m uẫ ................................................................................................................. 4.1. Gi 18 i thi u ..................................................................................................................... ệ ớ 4.2. V đ th hàm s 18 ......................................................................................................... ố ẽ ồ ị 4.3. Bài toán qu tích 19 .......................................................................................................... 4.4. Tam giác Napoleon 20 ....................................................................................................... 22 t 3 c nh .......................................................................................... 4.5. D ng tam giác bi ạ ế 23 ............................................................................................... 4.6. Mô ph ng con l c lò xo ắ ỏ

- 3 -

VIOLET Group

Ngôn ng l p trình Violet Script

ữ ậ

1. T ng quan

1.1. Gi

i thi u s l

c ệ ơ ượ

ữ ậ ệ ặ ữ ỏ ạ ộ ề ầ ọ t trong Violet Script (VS) là ngôn ng l p trình chuyên d ng v đ h a, đ c bi ả ể ệ ầ ủ ơ ư ng c a mình, ho c có ặ ưở ả ủ ườ ụ ề ồ ọ vi c t o ra các ho t đ ng mô ph ng. Ngôn ng này có th đ c s d ng r t hi u qu đ ấ ể ượ ử ụ xây d ng các ph n m m multimedia h tr d y h c. V i c u trúc đ n gi n nh ng đ y đ ớ ấ ỗ ợ ạ các ý t i dùng có th d dàng mô t và ch t ch , VS s giúp ng ả ể ễ th s a đ i m t s n ph m có s n cho phù h p k ch b n c a mình. ả ủ ợ ẵ ệ ạ ự ẽ ặ ể ử ổ ẽ ộ ả ẩ ị

ớ ữ ậ ề ở ụ ả ẫ ẵ ể ự ạ ặ ẫ ớ ộ ể ử ổ ượ th hi n, v.v...). Khác v i m t ph n m m công c , vi c s d ng ngôn ng l p trình có tính m cao ệ ử ụ ầ ộ i dùng không ph i ch là s d ng các m u mô ph ng có s n mà còn h n, nó cho phép ng ỏ ử ụ ỉ ườ ơ có th t c các m u có s n m t cách tùy ý t o ra các m u m i, ho c có th s a đ i đ ẵ ẫ (s a các tham s , s a n i dung và trình t ố ử ộ ự ể ệ ử

ượ ự ủ VS đ ậ ữ ệ ự ạ ệ ể ấ ỏ ệ ậ ộ ơ ử ả ấ ằ c xây d ng d a trên ngôn ng Action Script 2.0 c a Macromedia Flash, ng chính vì v y, VS r t m nh trong vi c th c hi n các mô ph ng có chuy n đ ng và t ươ ự tác, có x lý âm thanh và hình nh. T t nhiên, vi c l p trình b ng VS thì đ n gi n h n ơ ả nhi u so v i l p trình b ng Action Script. ớ ậ ề ằ

ồ ể ử ụ ề ả ượ ờ ả ỉ ng (tên bi n, tên nhãn, tên l nh, tên hàm…) đ u có th dùng đ ệ i dùng Vi ặ c mã văn b n Unicode ho c i thích mà k c tên các i gi t ệ ể ữ ằ t Nam d ti p c n h n nhi u so v i m t ngôn ng b ng ề ể ả c b ng ti ng Vi ế ượ ằ ộ ữ ệ ề ơ ế ườ ễ ế ệ ậ ớ Các file mã ngu n c a VS đ u có th s d ng đ ủ Unicode UTF-8. Chính vì v y, không ch có các d li u, l ậ đ i t ố ượ có d u, giúp ng ấ ti ng Anh. ế

1.2. Các đ c đi m chính c a ngôn ng

1.2.1. Ngôn ng mô ph ng

Ngôn ng l p trình VS h tr r t nhi u v các k thu t mô ph ng. Các thao tác v ỗ ợ ấ ậ ỏ ượ ậ ề ẵ ở ạ ế ầ ả ạ ả ễ i dùng có th vi ộ ồ ọ ề ầ ấ ề ỹ ề ữ ậ ư ệ đ h a và mô ph ng h u h t đã đ i thêm kh năng m n p th vi n c l p trình s n, l ỏ ồ ọ đ ng, kh năng s d ng các d li u âm thanh, hình nh m t cách d dàng, VS s giúp ữ ệ ộ ẽ ử ụ ầ t đ c nh ng ph n m m đ h a cao c p mà không c n ng ữ ể ế ượ ườ nh ng ki n th c chuyên sâu v đ h a. ề ồ ọ ữ ả i cho ng ế ườ ứ

Có th coi vi c l p trình mô ph ng b ng ngôn ng VS ch đ n gi n là vi c mô t ể ệ ậ ữ ệ ỏ ả ả ẽ ự ệ ả ỏ ả ằ i k ch b n c a quá trình mô ph ng. Sau đó, trình thông d ch c a VS s th c hi n các i dùng hoàn toàn có ấ ng trình VS r t ị ậ ộ ỉ ằ ượ ươ ỏ ỉ ơ l ủ ỏ ạ ị công vi c đ h a và mô ph ng theo nh k ch b n này. Do v y, ng ệ th t o đ ể ạ ạ ứ ạ ng n g n (so v i các ngôn ng l p trình khác). ọ ắ ủ ồ ọ ườ ư ị c m t quá trình mô ph ng ph c t p ch b ng m t đo n ch ộ ớ ữ ậ

1.2.2. L a ch n ch đ ch y song song ho c tu n t

ế ộ ạ

ầ ự

i d ng tu n t Các ngôn ng thông d ch th ữ ướ ạ ườ ả ị ạ ề ạ ỏ ậ ầ ự ầ ạ ộ ụ ư ề ể ậ ộ c ch đ x lý l nh là song song hay tu n t i l p trình thi (ch y h t l nh này ng ph i ch y d ế ệ r i m i đ n l nh khác). Tuy v y, trong mô ph ng, đôi khi ta c n t o nhi u thao tác mô ớ ế ệ ồ ph ng đ ng th i (ví d nh hai hay nhi u v t cùng chuy n đ ng m t lúc). Vì v y, VS có ờ ậ ồ th cho phép ng ườ ậ t l p đ ế ậ ượ ế ộ ử . ầ ự ỏ ể ệ

Đây cũng là m t đ c đi m đ c đáo và ti n d ng c a ngôn ng VS so v i các ngôn ệ ộ ặ ụ ủ ữ ể ộ ớ ng l p trình khác. ữ ậ

- 4 -

VIOLET Group

Ngôn ng l p trình Violet Script

ữ ậ

1.2.3. Kh năng s d ng các th vi n m ử ụ

ư ệ

ữ ự ồ ọ ụ ỏ ộ ự ấ ộ ể ổ ỉ ỏ ị Tuy VS là ngôn ng chuyên d ng trong lĩnh v c đ h a và mô ph ng, song đ h a ồ ọ t c h t t ượ ế ấ ữ t c các d i l p trình ư ệ ọ ả là m t lĩnh v c r t r ng nên VS ch có tính t ng quát. Nó không th bao hàm đ ng trình thông d ch VS cũng không th ch a t c các thao tác mô ph ng, ch ươ ả li u, th vi n hình nh thông d ng cho m i s n ph m. Tuy nhiên, đ i v i ng ụ ệ không chuyên, v n đ đ t ra là ph i làm sao cho m i th h u nh đã có s n h t. ể ứ ấ ả ườ ậ ố ớ ế ẵ ả ề ặ ứ ầ ẩ ọ ư ấ ả

ậ ư ệ ầ ậ ườ ộ ệ ố ứ ủ ể ượ ề ả ậ Vì v y, ngôn ng VS có m t h th ng th vi n đ y đ kèm theo và c p nh t ng thông d ng và c l p trình s n, các ng xuyên. Các th vi n này ch a nhi u hình nh, mô hình, bi u t ể ấ ữ ư ệ ộ ượ ậ ử ụ ụ ẵ ể ộ ng trình chu n cũng có th s d ng v i kh năng tùy bi n cao. th có th l y ra s d ng m t cách d dàng, các thao tác chuy n đ ng đ ễ m u ch ế ẫ ể ử ụ ươ ẩ ả ớ

ụ ữ ế ả ọ ạ ụ ụ ấ ả ủ ữ ệ ạ ị ừ ẽ ẽ ư ệ ng trình và c p nh t t ả ế ư ậ ươ ậ ả ậ Ví d : trong vi c t o bài gi ng, n u phân lo i theo các môn h c thì ngôn ng VS (c th là trình thông d ch c a ngôn ng VS) s ph c v cho t t c các môn. Tuy nhiên, ẽ th vi n s d ng cho t ng môn s khác nhau, nghĩa là ta s có th vi n cho môn Toán, ậ ư th vi n cho môn V t Lý, v.v… Nh v y, kh năng c i ti n ch li u c a VS s tr nên d dàng. ẽ ở ụ ể ư ệ ử ụ ư ệ ệ ủ ễ

ư ệ ớ ầ ủ ư ữ ế ể ẳ ơ ộ ph n m m công c t o bài gi ng hi n nay. Th vi n đ ng là m t trong nh ng u đi m h n h n c a VS so v i h u h t các ề ộ ụ ạ ệ ầ ả

1.2.4. So sánh ngôn ng VS v i Timeline

Nh ng ng ặ ừ ữ ườ ươ ư i đã t ng dùng ho c xem các ch ể ờ ụ ộ ọ ủ ệ ạ ự t đ i v i ng ệ ứ ẩ ặ c. ng trình nh Macromedia Flash, t đ n khái ni m Timeline Macromedia Diector, Adobe Premier,… h n không th không bi ẳ ệ ế ế (tr c th i gian). Đây là m t công c thi ể t k r t quan tr ng trong vi c t o ra các chuy n ế ế ấ ụ ủ đ ng, các hi u ng c a hình nh và âm thanh, làm phim ho t hình, xây d ng c u trúc c a ạ ả ộ m t s n ph m,… Timeline là m t công c r t h u ích, đ c bi ế t ụ ấ ữ ườ ộ ộ ả l p trình cũng có th dùng nó đ xây d ng ph n m m multimedia ng d ng đ ầ ự ể ậ ấ i không bi ượ ệ ố ớ ứ ụ ể ề

ể ơ ả ủ ở ể ộ ụ ể c nh p t ậ ừ ư ị ượ ể ạ ể ớ ộ c c b n c a Timeline là không có tính m . Ví d : dùng Timeline có th d dàng t o m t chuy n đ ng trong vòng 3 giây, nh ng không th dùng ộ Timeline đ t o chuy n đ ng trong vòng n giây, v i n là m t giá tr đ bàn phím ho c t Tuy nhiên đi m nh ượ ạ ể ễ ộ file bên ngoài. ặ ừ

ự ụ ề ầ ạ Trong khi đó, vi c xây d ng các ph n m m tr gi ng l ở ỏ ầ ả ợ ả ố c. Trong tr ỗ ự ử ượ ườ i đòi h i công c ph i có ệ ả tính m . Vì bài gi ng c a m i giáo viên là không gi ng nhau, nên ph n m m tr gi ng ợ ả ề ủ ph i cho phép giáo viên t ấ i s n xu t ng h p này, ng ườ ả ph n m m không còn cách nào khác là ph i l a ch n m t ngôn ng l p trình. s a theo ý mình đ ả ự ợ ữ ậ ả ầ ề ọ ộ

ữ ườ ữ ễ ồ ụ ộ i thích) cho các đo n ch i gi i bi ể ử ổ ố ệ ươ ạ ng trình, có th phân chia ch ể t l ế ờ ả ễ ỏ ớ ơ ồ ọ ể ả ệ ng đ h a và Timeline. Code có th dùng b t c ch ố ấ ứ ươ ộ ớ ố ượ ể ạ ồ ộ ử ứ ệ ả ậ ổ ị t l p trình r i thì dùng ngôn ng cũng d ch u M t khác, đ i v i nh ng ng ố ớ ặ ế ậ h n so v i dùng Timeline. Ví d : có th s a đ i s li u m t cách d dàng và chính xác, có ơ ễ ớ ươ ng th comment (vi ể ớ trình l n thành các module nh … Vi c thao tác v i các dòng code cũng d dàng h n so v i ng trình so n th o văn các đ i t ạ nào đ t o l p và s a đ i ch không c n ph i m t h th ng đ s nh khi dùng ư ầ Timeline.

ậ ữ ể ơ ớ ệ ậ ị ỗ ể ế ẩ Tuy v y, dùng Timeline cũng có m t u đi m h n so v i ngôn ng là tính n đ nh, ộ ư ị ổ i. Còn vi c l p trình n u không c n th n thì s có th sinh ra r t nhi u l ít b l i. Do đó, ề ỗ ậ trong quá trình phát tri n thì ngôn ng thì cũng ph i d n d n kh c ph c y u đi m này. ể ấ ụ ế ẽ ả ầ ữ ể ầ ắ

- 5 -

VIOLET Group

Ngôn ng l p trình Violet Script

ữ ậ

1.3. S d ng Violet Script trong Violet

ử ụ

ộ ồ ở ể Violet Script kh i ngu n là m t ngôn ng ch y đ c l p, có th dùng đ t ượ ể ự ữ ỉ

c các bài gi ng hoàn ch nh. Khi đ ỏ ộ ỉ ố ớ ả ể ạ ễ ả ơ i v a s d ng đ ữ ạ ộ ậ ượ ế ợ ớ ng ch dùng đ t o m t đo n mô ph ng ng n trên m t trang màn hình, vì v y nên s ắ ộ i dùng thì v a có đ ườ ủ ễ xây c k t h p v i công c Violet, ngôn ng này ụ ẽ ạ ậ c s linh ho t c a ạ ủ ơ ừ ạ c các tính năng d dùng c a Violet nh t o hi u ng, t o ệ ứ ượ ượ ự ư ạ d ng đ ự th ườ đ n gi n h n và d qu n lý h n. Đ i v i ng ơ ngôn ng , l các bài t p,... ả ữ ạ ừ ử ụ ậ

ể ử ụ ụ ạ Công ả ỏ ”. Màn hình sau hi n ra và ta có ấ ệ ậ ọ ng trình vào đây. Đ s d ng VS trong Violet, vào m c so n th o trang màn hình, nh n nút “ ụ L p trình mô ph ng ộ ể ạ cụ”, m t menu hi n lên, ta ch n m c “ ệ th so n th o tr c ti p ch ự ế ả ươ

Màn hình so n th o Script ạ ả

ng nh, ho c các th vi n mã ngu n t ng trình có s d ng các đ i t ử ụ ố ượ ươ ả ặ ồ ừ N u ch ế file text, thì sau khi vi ư ệ t xong, click vào nút "Ti p t c", màn hình sau hi n ra: ệ ế ụ ế

Màn hình nh p các mã ngu n bên ngoài và các đ i t ng ố ượ ậ ồ

- 6 -

VIOLET Group

Ngôn ng l p trình Violet Script

ữ ậ

Trong đó:

Khung phía trên cho phép nh p các file mã ngu n VS t ậ

ự ng th ng b ng th c k , v đ file text bên ngoài. Thông ồ ng v i các bài toán d ng hình, Violet đã cung c p s n m t file th vi n các thao tác ấ ẵ ng tròn b ng compa, c t ghép đa giác ẻ ẽ ườ ớ ư ẽ ườ ư ệ ắ ừ ộ ằ ườ ẩ ướ ẳ ằ th chu n nh v đ v.v... là “C:\Program Files\Platin Violet\Lecture\vpScript\Common\Mathtool.vs”

Ta cũng có th vi ể ế ậ tr ồ ở ướ ồ ả ỏ ầ ế ầ ả ả ơ ng trình v đ ươ ế ạ ấ ầ ả ằ ẽ ườ ả ạ ứ ầ ồ t mã ngu n VS cho mô ph ng c a mình ra file text bên ngoài, r i ủ c đó. t gì trong ph n so n th o mã ngu n nh p vào đây, mà không c n ph i vi ạ Cách làm này hay h n (và nên dùng), vì so n th o file text bên ngoài s d dàng h n là ơ ẽ ễ ạ so n tr c ti p trong Violet. Nh trong hình trên ta th y ph n ch ng phân ự ư giác s n m trong file Vephangiac.vs ch không ph i n m trong ph n so n th o Script ẽ ằ c a Violet. ủ

ậ ố ượ ng hình nh s đ ả ẽ ượ ử ụ i cho phép nh p các đ i t ng này có th l y t ầ ướ ố ượ ặ ằ ượ ả ớ ị c v trí nào trên nh là v trí (0, 0). Ví d ỉ ộ ả ế ị ể ấ ừ ỉ ể ỉ ể ầ ị i v trí (x, y) thì đ u bút chì s ớ ị ị ị c s d ng trong Khung phía d file SWF ho c file JPG. Tuy nhiên, ch có file ph n m m. Các đ i t ỉ ề ụ SWF (làm b ng Flash) thì m i có th ch nh đ ị v i m t nh chi c bút chì, ta căn ch nh sao cho ch đ u bút chì ch đúng vào v trí (0, 0) ớ ỗ ầ ẽ ng bút chì t trong Flash. Khi đó, n u ta d ch chuy n đ i t ố ượ ế ch đúng vào v trí (x, y) đó. Còn n u s d ng nh JPG, thì v trí góc trên bên trái c a nh ủ ả ế ử ụ ả ỉ s đúng vào v trí (x, y) ch không ph i ch đ u bút chì. ỗ ầ ả ẽ ứ ị

ươ ẩ ả ồ ng trình, các file mã ngu n chu n và các file nh, ta nh n ấ ố ". Đ s a đ i mã ngu n hay các thông tin khác, ta click đúp vào b t kỳ đ i ấ ổ ồ Sau khi nh p xong ch ậ nút "Đ ng ý ể ử ồ t ượ ng nào trong ho t c nh mô ph ng. ạ ả ỏ

1.4. C u trúc ngôn ng

Violet Script 1.0, g n gi ng ngôn ng Basic các c u trúc l nh và ngôn ng C ữ ầ ố ở ữ ệ ấ ở ng trình. c u trúc ch ấ ươ

1.4.1. Ch

ng trình vi

t b ng VS

ươ

ế ằ

function main

appear

Text, 8, 4, "Hello world"

end

ư ồ ẽ ượ ọ c g i ng trình VS bao g m các hàm, trong đó hàm main s đ ng trình. Gi ng nh C, ch ố ngay khi b t đ u ch y ch ắ ầ ươ ươ ạ

function

...

end

ng trình con (m t hàm, ch c năng) s đ c khai báo nh sau: M t ch ộ ươ ẽ ượ ứ ộ ư

Trong đó tên ch ươ ấ ấ ạ ể ở ấ ể ấ ả ẩ ố ng trình con không có d u cách (có th dùng d u g ch chân "_" thay cho d u cách). Các tham s thì ph i khai báo cách nhau b i d u ph y. Có th xem thêm các ví d minh h a trong các ph n sau. ọ ụ ầ

input_line &ax, &ay, &bx, &by get_point &x, &y, x1, y1, angle, 2

N u ch ế ả ề ố ọ ị & vào phía tr ươ c tham s (gi ng cú pháp c a ngôn ng C). Ví d : ụ ng trình con tr v các giá tr cho các tham s thì khi g i ta nên thêm d u ấ ữ ủ ố ố ướ

- 7 -

VIOLET Group

Ngôn ng l p trình Violet Script

ữ ậ

1.4.2. Các l nh đ n gi n ệ

ơ

ữ Ngôn ng VS cung c p các lo i l nh sau: ấ

ệ ụ

ng trình trên ươ ư

ạ ệ • Các l nh gán, ví d a = 2; a = 10*5 + 1; b = a^2 + a + 1 • Các l nh c b n: ví d l nh appear nh trong ch ụ ệ ệ ơ ả • Các l nh g i ch ệ ươ ố ọ ng trình con: có cú pháp gi ng nh l nh c b n ơ ả ư ệ

1.4.3. Các bi u th c ứ

ứ ệ ế ể ặ ọ tham s c a các l nh khác. M t bi u th c bao g m các thành ph n: Các bi u th c toán h c có th s d ng trong v ph i c a các l nh gán, ho c làm ồ ố ủ ể ử ụ ứ ả ủ ầ ệ ể ộ

ạ ị ố ế ố

: + , - , * , / , ^ ử

• Các toán h ng: giá tr s , bi n s • Các toán t • Các hàm s : sin, cos, tg, cotg, arcsin, arccos, arctg, arccotg, abs, sqrt, ln • Các d u ngo c đ n"(" và ")" ặ ơ ấ

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

Ví d tính góc B c a tam giác ABC n u bi ụ ủ ế ế ộ ụ t đ dài 3 c nh AB, AC và BC, áp d ng ạ đ nh lý hàm s cos. ị ố

1.4.4. Các l nh có c u trúc

ệ > then

ề if <đi u ki n

end_if

L nh đi u ki n ệ ề ệ

ướ

for from

ướ > to

i

> step

c nh y

ả >

next

L nh l p ệ ặ

1.4.5. Các nhãn

t, đ ệ ệ ng đ Có th coi nhãn là các l nh đ c bi ừ ệ ể ượ ấ c ký hi u b i d u ":" và tên nhãn. Nhãn c dùng nh m t ư ộ ng trình. ở ấ ườ b t kỳ v trí nào trong ch ượ ặ dùng v a đ đánh d u, v a đ mô t ừ ạ ệ ả đ nh danh đ có th truy c p (goto) đ n đo n l nh t ế ậ ể ị các đo n l nh. Nhãn th ị ể ể ể ạ ệ ừ ấ ươ

function main

goto ERASE

:START

Text, 8, 4, "Hello world"

appear wait_click

:ERASE

erase Paper wait_click goto START

end

Ví d :ụ

- 8 -

VIOLET Group

Ngôn ng l p trình Violet Script

ữ ậ

2. Ngôn ng Violet Script trong t o bài gi ng

2.1. Kh năng c a ngôn ng

Trong các ph n m m công c t o bài gi ng, ng ụ ạ ả ẵ ể ạ ề ề ứ c vi c bao quát c m t ch ườ ử ụ ể ệ ộ ọ ầ ầ ệ ề ầ i c n nhi u thao tác căn ch nh và thi ượ ứ ế ậ ứ ề ỗ ứ i s d ng s s d ng các ch c ẽ ử ụ năng có s n trong ph n m m đ t o ra các màn hình th hi n n i dung ki n th c. Vì v y, ậ ế ụ ẽ ầ ng trình h c thì ph n m m công c s c n đ th c hi n đ ể ự ươ ả ộ ệ t l p tham có r t nhi u ch c năng, m i ch c năng l ỉ ạ ầ ấ ề s , do đó s r t khó dùng. ẽ ấ ố

Ngôn ng l p trình tránh đ c nh ề ả ượ ể ả ấ ứ ậ i dùng c a m t ngôn ng l p trình là không có gi c đi m này, vì v b n ch t nó không ph i là ượ ữ ậ "s d ng các ch c năng có s n" mà giúp "t o ra các ch c năng m i". Do v y, kh năng ả ứ ớ ạ ẵ ử ụ i h n. đ th c hi n nh ng yêu c u ng ớ ạ ữ ể ự ữ ậ ườ ủ ệ ầ ộ

ữ ỗ ợ ệ ề

ng tròn, đ th ,…) ồ ọ ườ ẽ ẳ ạ ồ ị

Ngôn ng Violet Script h tr nhi u trong các lo i công vi c sau: ạ • V hình trên màn hình đ h a (đo n th ng, đ • S d ng các đ i t ẵ ụ ớ ọ c k , bút, t y, ê-ke, th ẩ ng có s n trong th vi n (ví d v i môn hình h c có: c đo đ , gi y màu, dao c t…), và mô ấ ư ệ ộ ắ ố ượ ử ụ compa, th ẻ ph ng ho t đ ng c a t ng đ i t ướ ng này. ướ ạ ộ ố ượ ủ ừ

ng tác v i ng bàn phím, ươ ớ ườ i dùng (nh n chu t, kéo th , nh p t ộ ậ ừ ấ ả ỏ • X lý các t ử …)

2.2. Các ng d ng ứ

Hi n t ệ ạ ươ ư ệ ụ ấ ẵ ạ ạ ầ ớ ng trình c ơ i chúng tôi đã cung c p s n th vi n hình nh và các đo n ch b n dùng cho môn Hình h c, v i ph m vi ng d ng là c p THCS. Ph n này s ch y u ẽ ủ ế ứ ọ ả clit, bao g m các lo i bài toán nh sau: t p trung vào Hình h c ạ ậ ả ấ ư

ng tác v i ng i dùng ử ườ ớ

ụ ự ụ ụ ự ằ

ệ ắ ắ ả ấ ỏ

ọ Ơ ồ • Bài toán v hình và x lý t ẽ ươ • Bài toán d ng hình b ng các d ng c d ng hình thông d ng • Bài toán c t ghép hình (mô ph ng vi c c t ghép các m nh gi y màu) • Bài toán qu tích và v đ th hàm s ẽ ồ ị ố ỹ

2.3. Ví dụ

m t bài toán d ng hình: v trung tr c c a m t đo n th ng đ Ví d mô t ụ ả ộ ủ ự ẽ ạ ẳ ộ ượ c ng i dùng nh p vào khi ch y ch ườ ậ ự ng trình. K ch b n c a đo n mô ph ng này nh sau: ạ ả ủ ươ ư ạ ỏ ị

ườ ộ ể ộ ể ứ ế ể ấ ấ ị • Ng ấ đ nh đi m th hai ị i dùng nh n chu t đ xác đ nh đi m th nh t, nh n ti p chu t đ xác ể ứ

ấ ừ ệ ể

• Đánh d u và ký hi u hai đi m A, B v a nh p ậ • Mô ph ng vi c dùng th ướ ẻ ệ ỏ ể c k và bút chì đ v m t đo n th ng gi a hai đi m ể ẽ ộ ữ ạ ẳ AB

ấ ủ ể ệ ộ ị

• Xu t hi n m t compa và đ a compa vào v trí c a đi m A ư • M r ng compa (kho ng cách 2 đ u compa b ng kho ng 2/3 AB) ở ộ ả ằ ả ầ

- 9 -

VIOLET Group

Ngôn ng l p trình Violet Script

ữ ậ

• Quay compa m t n a vòng tròn (cung h ộ ử ướ ể c v theo, nét v ph i m nh và nh t đ th ả ng vào đi m B). Trong khi quay ạ ể ể ẽ ẽ ả ẽ ượ ệ ẽ

ế ư

ng vào đi m A) ướ ể

ể ẽ ộ ể ạ ướ ẻ ủ c k và bút chì đ v m t đo n th ng đi qua 2 giao đi m c a 2 cung ẳ ng trung ị ợ ủ ườ ộ ạ tròn, đ dài c a đo n th ng này là m t giá tr h p lý. Đó chính là đ ẳ tr c c a đo n th ng AB. ạ compa thì cung tròn cũng s đ hi n đây ch là v nháp. ỉ • Đ a compa đ n đi m B ể • Quay compa m t n a vòng tròn (cung h ộ ử • Dùng th ộ ự ủ

ng trung tr c v i đo n th ng AB ủ ườ ự ớ ạ ẳ ể ể

ệ ể

ẳ • Đánh d u đi m M là giao đi m c a đ ấ • Ký hi u góc M vuông • Ký hi u M là trung đi m c a AB ủ • Xóa các nét cung tròn đã vẽ

ẽ ộ

function main appear Text, 8.25, 0.5, "Hãy v m t đo n th ng", 2 input_line &ax, &ay, &bx, &by disappear Text appear Point, ax, ay, "A", below appear Point, bx, by, "B", below create_line ax, ay, bx, by radius = sqrt((ax-bx)^2 + (ay-by)^2) / 3 * 2 get_angle &angle, ax, ay, bx, by

set_paper Draft appear Compa move Compa, ax, ay, angle-90 call Compa.OpenCompa, radius rotate_compa Compa, radius, angle+90 move Compa, bx, by, angle+90 rotate_compa Compa, radius, angle+270 disappear Compa

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

set_paper Paper create_line cx, cy, 2 * mx - cx, 2 * my - cy appear Point, mx, my, "M", leftbelow note_angle 0, "", bx, by, mx, my, cx, cy note_edge 0, "", ax, ay, mx, my note_edge 0, "", mx, my, bx, by end

Ta s mã hóa k ch b n mô ph ng trên thành ngôn ng VS nh sau: ữ ư ẽ ả ỏ ị

M t đ n v tính trong Violet Script đ ượ ị ộ L u ý:ư ủ ộ ơ ể ị ị r ng c a màn hình hi n th là 660x460 pixel, t c là kho ng 16.5x11.5 đ n v . ị ộ ứ c quy đ nh m c đ nh là 40 pixel, đ ặ ị ơ ả

- 10 -

VIOLET Group

Ngôn ng l p trình Violet Script

ữ ậ

ng trình này s d ng các thao tác d ng hình chu n (trong file ự ẩ ươ c k , bút chì, compa. Vì v y, sau khi so n xong ch ậ ạ Mathtool.vs) và ươ ng các đ i t trình, ta ph i khai báo các d li u này nh sau: Ch ng hình nh: th ả ố ượ ả ử ụ ướ ẻ ữ ệ ư

ự ạ ỏ ộ ng trung tr c c a m t ự ủ ấ đo n th ng b t kỳ đ Nh n nút “Đ ng ý”, ta s đ ẽ ượ ồ c nh p vào t ừ ượ ẳ c đo n mô ph ng d ng đ ườ con chu t (nh n, kéo và th ). ả ấ ấ ậ ạ ộ

c k , bút chì Mô ph ng v đ ỏ ẽ ườ ng trung tr c b ng compa, th ự ằ ướ ẻ

Có th th y vi c vi ng trình mô ph ng nh trên ch đ n gi n là mã hóa t m t ch ộ ể ấ ế ỉ ơ ư ả ỏ ệ 1:1 k ch b n mô ph ng thành ngôn ng VS. ươ ữ ả ỏ ị

ệ ạ ữ ề ả ơ ẽ ơ ể ạ ả ộ t ch ả ữ ệ ụ ế ế ả Rõ ràng vi c t o bài gi ng Hình h c b ng ngôn ng VS s đ n gi n h n nhi u so ọ ằ v i các ngôn ng l p trình khác. Ví d n u s d ng C/C++ thì đ t o m t bài gi ng, có ớ ụ ế ử ụ th ph i vi ng trình dài đ n hàng nghìn dòng l nh và hàng ch c file d li u, còn ệ ể n u dùng ngôn ng VS thì ch c n vài ch c dòng l nh và không c n file d li u. ế ữ ậ ươ ữ ữ ệ ỉ ầ ụ ệ ầ

- 11 -

VIOLET Group

Ngôn ng l p trình Violet Script

ữ ậ

3. Các l nh trong VS

3.1. Các l nh x lý đ i t

ng

ố ượ

ng hình ư ệ ủ ạ ố ượ ọ ị Trong th vi n c a trình thông d ch VS môn Hình h c có các lo i đ i t nh nh sau: ư ả

Ứ ng d ng ụ Hình nhả Tên đ iố ngượ t

Ký hi u đi m trên hình v ể ệ ẽ

Point (đi m)ể

ể ẽ ậ S d ng làm v t kê đ v các đo n ạ ử ụ th ngẳ Ruler (th c k ) ướ ẻ

ể ẽ ặ Dùng đ v các hình tròn ho c cung tròn Compa (compa)

ẳ ặ Dùng đ v đo n th ng ho c các ạ đ ườ ể ẽ ng đ th ồ ị Pencil (bút chì)

ể ệ ị ẽ Dùng đ xác đ nh góc trong vi c v góc c đo góc) Protractor (th ướ

ẳ Dùng đ v đo n th ng vuông góc v i m t đo n th ng có s n ẵ ớ ể ẽ ạ ạ ẳ ộ TSquare (ê-ke)

Dùng đ đo c nh ho c góc ạ ể ặ ướ c đo góc tùy ý ng ặ c k ho c ẻ ườ ử i s c đo) Measurer (th ướ Có hình d ng là th ạ th ướ d ngụ

Dùng đ c t các đa giác ể ắ

Burin (dao c t)ắ

- 12 -

VIOLET Group

Ngôn ng l p trình Violet Script

ữ ậ

Đ s d ng các lo i đ i t ng đ c n p t th ể ử ụ ủ ư ố ượ ượ ạ ừ ư vi n bên ngoài, ngôn ng VS cung c p các l nh sau: ữ ệ ng c a VS cũng nh các đ i t ạ ố ượ ấ ệ

Tên l nhệ Tham số Tác d ngụ

ng ấ ố ượ ạ ị ố ng appear xu t_hi n ấ ệ ng. T o l p và cho xu t hi n m t đ i ộ ố ạ ậ ệ i v trí X, Y v i các tham s t ng t ượ ớ c th tùy theo lo i đ i t ạ ố ượ ụ ể ỉ

ng) 1. Tên đ i t 2. T a đ c a đ i t ọ ộ ủ ố ượ 3. Tham s đ c tr ng 1 (ch ư ố ặ dùng cho m t s đ i ộ ố ố t ượ

ng) 4. Tham s đ c tr ng 2 (ch ư ố ặ ộ ố ố dùng cho m t s đ i t ượ

ộ ề ấ ng bi n m t ế Làm cho các đ i t (m d n r i m t h n) Tên m t (ho c nhi u) đ i ố ặ ngượ t ố ượ ấ ẳ ờ ầ ồ disappear bi n_m t ấ ế

ng ớ ị ớ i v trí m i và góc quay m i. ể ừ ớ move d ch_chuy n ể ị ậ ng 1. Tên đ i t ố ượ 2. T a đ m i (x, y) ọ ộ ớ 3. Góc quay đ i t ố ượ (cid:176) . V a d ch chuy n v a quay đ i ố ừ ị t ng t ượ N u không nh p góc quay thì góc ế quay m c đ nh là 0 ặ ị

function main

ẻ ở ị

// Xu t hi n th

c k v trí (0,0)

ướ ở ị ể

ở ị

ế

appear Pencil ư move Pencil, 5, 5 // Đ a bút chì v trí (5, 5) appear Point, 5, 5, A // Xu t hi n đi m A v trí (5, 5) ạ delay 12 // T m d ng 1 giây disappear Pencil // Làm bi n m t bút chì

end

Ví d d ụ ướ i đây s mô ph ng vi c v m t đi m b ng bút chì ệ ẽ ộ ể ẽ ằ ỏ

Mô ph ng v m t đi m b ng bút chì ẽ ộ ể ằ ỏ

- 13 -

VIOLET Group

Ngôn ng l p trình Violet Script

ữ ậ

3.2. Các l nh x lý đa giác

Tên l nhệ Tham số Tác d ngụ

T o m t đa giác ộ ạ

polygon đa_giác

Tên đa giác V trí đa giác T a đ các đi m c a đa giác ể ị ọ ộ ủ

ể ấ C t t ắ ấ ả theo m t đ ng th ng T a đ c a 2 đi m b t kỳ ọ ộ ủ ng th ng c t n m trên đ ắ ẳ ườ ằ t c các đa giác trên màn hình ộ ườ ẳ clip c tắ

ề ộ ố H p nhi u đa giác thành m t đ i ợ ngượ t unify h pợ ẽ ượ ợ c h p Tên đa giác Tên các đa giác s đ vào đa giác đ u tiên ầ

Tên đa giác L t m t đa giác qua tr c tung ụ ậ ộ

flip tậ l

function main polygon Tamgiac, 8, 6, 0x7F7FFF, -1, -3, 3, 1, -3, 1 input_line &px1, &py1, &px2, &py2 cut_polygon px1, py1, px2, py2 move Tamgiac2, 4, 4, -180 input_line &px1, &py1, &px2, &py2 cut_polygon px1, py1, px2, py2 move Tamgiac12, 10, 4, 180 end

Ph n ví d d i đây là m t ch ụ ướ ươ ỉ ủ ể ổ ộ ng trình hoàn ch nh, th c hi n vi c c t và ghép ự i ườ ỗ ng c t qua góc th hai, sau m i ằ ắ ườ ứ ẽ t. ệ ắ ệ ộ ầ (cid:176) . Khi ch y, ng các góc c a m t tam giác đ ch ng minh t ng c a chúng b ng 180 ạ ứ ủ dùng s xác đ nh các đ ị l n c t thì các m u c t s đ ầ ắ ứ ắ ườ c ghép vào đúng v trí c n thi ẩ ắ ẽ ượ ng c t qua góc th nh t và đ ầ ấ ị ế

Mô ph ng c t m t góc c a hình tam giác b ng dao c t ắ ủ ắ ằ ộ ỏ

- 14 -

VIOLET Group

Ngôn ng l p trình Violet Script

ữ ậ

3.3. Các l nh đ h a ồ ọ ệ

Tên l nhệ Tham số Tác d ngụ

erase Tên đ i t Xóa n i dung c a đ i t ng ố ượ ng c n xóa ầ ủ ố ượ ộ

circle V đ ng tròn bi t tâm và bán kính. ẽ ườ ế

T a đ c a tâm ọ ộ ủ Bán kính đ ng tròn ườ

line V đo n th ng qua 2 đi m T a đ 2 đi m đ u mút ể ọ ộ ầ ẽ ể ẳ ạ

ể ấ ệ Đánh d u góc và ký hi u giá tr c a ị ủ góc note_angle ký_hi u_góc ệ

Ki u đánh d u ấ Giá tr ký hi u ệ Ba đi m ho c 3 t a đ đi m ặ ọ ộ ể ị ể

ể ấ ạ ệ Đánh d u c nh và ký hi u giá tr c a ị ủ c nhạ note_edge ký_hi u_c nh ệ ạ

Ki u đánh d u ấ Giá tr ký hi u ệ ị Hai đi m ho c 2 t a đ đi m ặ ể ọ ộ ể

attach_pen ắ ể ộ ng thì c g n bút Đ i t ng ố ượ T a đ đi m đ ọ ộ ể ượ ắ ng m t đi m, mà G n vào đ i t ố ượ khi thay đ i v trí c a đ i t ủ ố ượ ổ ị i v t đi m này s l u l ẽ ư ạ ế ể

detach_pen Đ i t ng ố ượ ắ G b đi m đã g n ra kh i đ i ỏ ố ỡ ỏ ể ngượ t

function ShowTriangle x1, y1, x2, y2, x3, y3

poly_line x1, y1, x2, y2, x3, y3, x1, y1 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, x3, y3 note_angle 2, "value", x3, y3, x2, y2, x1, y1 note_angle 1, "value", x1, y1, x3, y3, x2, y2

end

function main

ShowTriangle 2, 7, 7, 7, 3.5, 4

end

ạ Ví d v tam giác qua 3 đi m (x1, y1), (x2, y2), (x3, y3) v i đ y đ ký hi u c nh ớ ầ ụ ẽ ủ ệ ể góc

- 15 -

VIOLET Group

Ngôn ng l p trình Violet Script

ữ ậ

3.4. Các l nh ph c v tính toán trong hình h c ph ng

ụ ụ

Tên l nhệ Tham số Tác d ngụ

ể ừ ọ ộ ự ọ ộ ể ế t R get_point l y_đi m ấ ể Chuy n t t a đ c c sang t a đ Đ -các (tính t a đ c a đi m bi ề và j trong h t a đ c c) ọ ộ ủ ệ ọ ộ ự

j ừ ệ ọ ộ ự ể ộ ớ get_angle l y_góc ấ (trong h t a đ c c) t L y góc ấ ể t a đ c a m t đi m so v i đi m ọ ộ ủ g cố (k t qu ) ả ể ể

T a đ c a k t qu ả ọ ộ ủ ế T a đ c a đi m g c ố ể ọ ộ ủ Góc j Kho ng cách R ả Góc j ế T a đ c a đi m ọ ộ ủ T a đ c a đi m g c ọ ộ ủ ố Ki u v đo n th ng ể ẽ ạ ẳ

get_perpendicular ả ế ể Tính v trí c a chân đ ng vuông ủ ị ườ m t đi m xu ng m t góc h t ộ ạ ừ ộ ố ng th ng đ ẳ ườ ể T a đ đi m k t qu ọ ộ ể T a đ đi m ọ ộ ể T a đ c a hai đi m n m ằ ọ ộ ủ ng th ng trên đ ẳ ườ

get_intersection1 ữ ườ ng ế Tính giao đi m gi a hai đ ể th ngẳ

ườ ng T a đ đi m k t qu ả T a đ 2 đi m trên đ ườ ng ể th ng th nh t ứ ấ T a đ 2 đi m trên đ ể th ng th hai ọ ộ ể ọ ộ ẳ ọ ộ ẳ ứ

get_intersection2 ả ứ ế ọ ộ ể ể ộ ườ ng ủ ng tròn Tính hai giao đi m c a m t đ th ng và m t đ ộ ườ ẳ

ả ứ ế ọ ộ ể

ọ ộ ể ườ ng

ng tròn

ườ ng tròn T a đ đi m k t qu th 1 T a đ đi m k t qu th 2 T a đ 2 đi m trên đ th ngẳ T a đ tâm đ ọ ộ Bán kính đ ườ

3.5. Các l nh ch đ i ờ ợ ệ

Tên l nhệ Tham số Tác d ngụ

Th i gian tr D ng (tr ) m t kho ng th i gian ờ ễ ừ ễ ả ộ ờ

delay trễ

i dùng click vào ợ ườ Tên các nút đ h a đang ồ ọ c nh n ch đ ấ ờ ượ ồ ọ wait_click đ i_nh n ấ ợ

c n p t file Đ i cho đ n khi ng ế ế ệ nút đ h a trên màn hình. N u l nh không có tham s nghĩa là ch đ n khi ờ ế ố nh n nút Next và nút Back. Các nút đ h a có th đ ồ ọ ể ượ ạ ừ

- 16 -

VIOLET Group

Ngôn ng l p trình Violet Script

ữ ậ

ngoài b ng l nh load_movie ệ ằ

3.6. Các l nh ph c v x lý t

ng tác

ụ ụ ử

ươ

Tên l nhệ Tham số Tác d ngụ

ng c n thao tác ng là có th kéo ố ượ ầ ộ ố ượ ể Thi th đ t l p m t đ i t c hay không ế ậ ả ượ 1. Đ i t 2. Thao tác (true) hay set_drag kéo_thả không (false)

ầ ậ ể ạ T a đ 2 đi m đ u mút ể đo n th ng ọ ộ ạ ẳ Nh p m t đo n th ng (2 đi m) b ng ằ ẳ cách nh n vào kéo chu t ộ ộ ấ input_line nh p_đo n ạ ậ

input_point T a đ đi m ọ ộ ể Nh p m t đi m b ng cách nh n chu t ộ ằ ể ậ ấ ộ

input_data ạ ậ Hi n ra m t h p tho i cho phép nh p ậ ộ ộ bàn phím m t ho c nhi u tham s t ề ệ ộ ố ừ ặ

ố ứ ố ứ

Tiêu đ h p nh p ề ộ Tiêu đ và tham s th 1 ề Tiêu đ và tham s th 2 ề ...

3.7. Các l nh đi u khi n h th ng ề

ệ ố

Tên l nhệ Tham số Tác d ngụ

Không t l p ch đ th c hi n các l nh là ế ộ ự ệ ệ Thi ế ậ song song parallel song_song

Không t l p ch đ th c hi n các l nh là ế ộ ự ệ ệ Thi ế ậ tu n tầ ự sequence tu n_tầ ự

fscommand ự ủ Th c hi n l nh fscommand c a Flash ệ ệ Action Script. 1. command 2. param

- 17 -

VIOLET Group

Ngôn ng l p trình Violet Script

ữ ậ

4. Các bài toán m uẫ

4.1. Gi

i thi u

ỉ ơ ả ủ t b ng ngôn ng VS, giúp ế ằ ng c b n c a vi c l p trình, đ ng th i cho th y các quy ờ ồ ệ ậ i dùng hoàn toàn có th s d ng và phát ng trình VS. Ng i đây là các ví d hoàn ch nh vi ụ ưở ươ ữ ấ ể ử ụ ườ ng riêng c a mình. Các bài toán m u d ẫ ướ i đ c hi u đ c ý t cho ng ể ườ ọ ượ t c chung đ t o l p m t ch ể ạ ậ ộ ắ tri n các bài t p m u này theo nh ng ý t ẫ ậ ữ ể ưở ủ

ẫ ượ Các bài t p m u đ ậ ụ ắ ấ ớ ạ c trình bày ng n g n và d hi u, v i m c đích cho th y kh ộ ễ ể ấ ữ ằ ả ả c còn l n h n nhi u so v i nh ng nh ng gì th hi n trong các ví d ượ ữ ọ ấ ễ ữ ữ ậ ề ả ủ ể ệ ư ớ ả ể ậ ả năng t o các bài gi ng sinh đ ng b ng VS là r t d dàng. T t nhiên, nh ng kh năng th c ự ụ ở s mà VS làm đ ớ ơ ự đây, mà th m chí ngay c tác gi ế c a ngôn ng l p trình cũng ch a th khám phá ra h t c.ượ đ

4.2. V đ th hàm s ẽ ồ ị

ươ ẽ ồ ị ả ấ ề ậ ố ế Trong ch ộ ng trình h c c p 2 và c c p 3 đ u có các bài t p v đ th hàm s . Đ i quy t m t bài t p này s không h đ n gi n (ph i tính đ o hàm, vi phân, kh o sát s ả ọ ấ ẽ ậ ạ ả ả ế ả ố ơ ả ẩ ở ộ ố ạ ề ơ ỉ ố ậ ữ ậ ộ gi bi n thiên hàm s ,…), v y mà cũng ch quanh qu n nhiên, v i m t ngôn ng l p trình bình th ườ c n ph i tính toán đ o hàm, vi phân,… V i VS, vi c v đ th còn d dàng h n nhi u. ớ ạ ầ ể ự m t s d ng hàm s c b n. Tuy c đ th b t kỳ mà không ể ẽ ượ ồ ị ấ ơ ng, ta có th v đ ệ ẽ ồ ị ớ ả ễ ề

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

i đây s v đ th hàm s y = (x-2)*(x-1)*x*(x+1)*(x+2), nghĩa là m t đ ụ ướ ộ ồ ố Ví d d th c t tr c hoành t i các đi m -2, -1, 0, 1 và 2. ị ắ ụ ẽ ẽ ồ ị ể ạ

- 18 -

VIOLET Group

Ngôn ng l p trình Violet Script

ữ ậ

ng tròn tâm O, k đ ng th ng qua A ố ị ằ ng tròn t ạ ỹ ườ ộ ẳ i P. Tìm qu tích trung đi m M c a OP khi P chuy n đ ng trên đ ủ ẻ ườ ộ ể ể ườ ng

4.3. Bài toán qu tíchỹ Bài toán 1: Cho m t đi m A c đ nh n m trong đ ể c t đ ắ ườ tròn.

function main set_paper Paper, 2, 0xBF00BF appear Point, ox=8, oy=6, "O", right appear Point, ax=8, ay=8, "A", left circle ox, oy, 4 appear Point, 0, 0, "M" attach_pen PointM

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, 2, 0x0000BF erase line ax, ay, px, py note_edge 2, "", M, P note_edge 2, "", M, A delay 1 next end

Bài 2: Đ ng Cycloide

function main R1 = 2.0 R2 = 0.8 L = 2.0 set_paper Draft, 2, 0 circle x0=8.25, y0=5.75, R1

ỹ ộ c sinh ra khi m t vòng tròn ch y xung quanh m t vòng tròn ạ c s a đ i tùy ý i đây 3 bi n s R1, R2 và L có th đ ươ ể ượ ử ổ ộ ế ố ướ ng cycloide khác nhau. ườ Đ ng qu tích đ ườ khác. Trong ph n ch ầ s t o ra vô vàn nh ng lo i đ ữ ẽ ạ ượ ng trình d ạ ườ

- 19 -

VIOLET Group

Ngôn ng l p trình Violet Script

ữ ậ

set_paper Wheel, 2, 0x0000FF set_fill 0x7FBFFF, 50 circle 0, 0, R2 line 0, -R2, 0, R2 line -R2, 0, L*R2, 0 circle L*R2, 0, 0.1

set_paper Paper, 3, 0xFF0000 attach_pen Wheel, L*R2, 0

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 end

Mô ph ng cách v đ ng Cycloide ẽ ườ ỏ

M t trong nh ng d ng đ ng Cycloide ữ ạ ộ ườ

ừ ủ ề ấ giác đ u này s là đ nh c a m t tam giác đ u g i là tam giác Napoleon.

4.4. Tam giác Napoleon ạ ẽ

ủ ỉ T 3 c nh c a 1 tam giác b t kỳ v ra phía ngoài 3 tam giác đ u. Tâm c a 3 tam ọ ẽ ề ủ ề ộ

- 20 -

VIOLET Group

Ngôn ng l p trình Violet Script

ữ ậ

ươ ườ ể ả ỉ ng trình d ướ ầ i đây s v tam giác Napoleon. Ng ổ ể ấ ế i dùng có th kéo th ư ế

set_paper Draft, 2 set_fill 0x7FBFFF, 50 get_angle &angle, x1, y1, x3, y3 get_point &x, &y, x1, y1, angle+60, sqrt((x3-x1)^2+(y3-y1)^2) poly_line x3, y3, x, y, x1, y1 cx1 = (x3 + x + x1) / 3 cy1 = (y3 + y + y1) / 3

get_angle &angle, x3, y3, x2, y2 get_point &x, &y, x3, y3, angle+60, sqrt((x3-x2)^2+(y3-y2)^2) poly_line x3, y3, x, y, x2, y2 cx2 = (x3 + x + x2) / 3 cy2 = (y3 + y + y2) / 3

get_angle &angle, x2, y2, x1, y1 get_point &x, &y, x2, y2, angle+60, sqrt((x2-x1)^2+(y2-y1)^2) poly_line x2, y2, x, y, x1, y1 cx3 = (x1 + x + x2) / 3 cy3 = (y1 + y + y2) / 3 end_fill

set_paper Draft, 3, 0xFF0000 set_fill 0xFF3F3F, 75 poly_line cx1, cy1, cx2, cy2, cx3, cy3, cx1, cy1 end

ẽ ẽ ẽ

function main appear Point, ax=7, ay=3, "A", above appear Point, bx=5, by=6, "B", leftbelow appear Point, cx=11,cy=6, "C", rightbelow set_drag PointA, true, v _hình set_drag PointB, true, v _hình set_drag PointC, true, v _hình ẽ v _hình end

Ph n ch ầ ẽ ẽ các đ nh c a tam giác ban đ u đ th y tam giác Napoleon bi n đ i nh th nào. ủ function v _hình set_paper Draft, 3, 0x0000FF erase get_pos &x3, &y3, PointA get_pos &x1, &y1, PointB get_pos &x2, &y2, PointC poly_line x1, y1, x2, y2, x3, y3, x1, y1

- 21 -

VIOLET Group

Ngôn ng l p trình Violet Script

ữ ậ

Tam giác Napoleon

4.5. D ng tam giác bi

t 3 c nh ạ

ự Đây là m t bài r t c b n trong d ng hình: D ng m t tam giác bi

ự ự ộ ế ộ ạ t đ dài 3 c nh

ế ộ ấ ơ ả c k và compa. ướ ẻ

function main input_data "Nh p 3 c nh", "AB", lenAB, "AC", lenAC, "BC", lenBC angleB = arccos((lenAB^2 + lenBC^2 - lenAC^2)/(2*lenAB*lenBC)) get_point &ax, &ay, 4, 7, angleB, lenAB DrawTriangle 4, 7, 4+lenBC, 7, ax, ay, B, C, A end

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

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

set_paper Paper create_line x1, y1, x3, y3 note_edge -1, value, x1, y1, x3, y3 create_line x3, y3, x2, y2 note_edge -1, value, x3, y3, x2, y2 delay 12 erase Draft end

mà ch dùng th ỉ

Đo n mô ph ng này có s d ng th vi n các thao tác d ng hình chu n (chính là ự ạ ư ệ ử ụ ng hình nh nh sau: file Mathtool.vs) đ ỏ c cung c p kèm theo Violet, và các đ i t ượ ấ ố ượ ả ẩ ư

- 22 -

VIOLET Group

Ngôn ng l p trình Violet Script

ữ ậ

Các th vi n mã ngu n và hình nh s d ng trong bài toán d ng hình ư ệ ử ụ ự ả ồ

4.6. Mô ph ng con l c lò xo

ỏ ể ộ ả ắ ể ử ụ ủ ộ ỹ ẽ ậ ổ ự ế ả ậ ế ạ ộ ể ạ ng riêng cho VS. Đ mô ph ng m t con l c lò xo co giãn, có th s d ng m t nh lò xo, sau đó co giãn nh. Tuy nhiên k thu t này s làm cho đ dày c a dây lò xo thay đ i nên không ả ộ đúng th c t ộ ố . Đ t o m t chi c lò xo co giãn đ p, ta ph i l p trình và t o ra m t đ i ẹ t ượ

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);

}

Trong Macromedia Flash, t o m t file m i, click chu t vào frame duy nh t trên ấ ạ ớ ộ ộ timeline, sau đó m h p so n th o Action Script (nh n F9), gõ đo n mã sau vào: ở ộ ạ ạ ấ ả

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

D ch file này thành file swf, trong file thông tin c a ch ủ ươ ng là Lò_xo và ch đ ng d n đ n file swf. Sau đó vi t ch ị ố ượ ỉ ườ ế ẫ ng trình d ch VS, khai báo ư ị ng trình VS nh ươ ế tên đ i t sau:

- 23 -

VIOLET Group

Ngôn ng l p trình Violet Script

ữ ậ

K t qu ch y ch ả ế ớ ng trình trên nh sau. Con l c lò xo s dao đ ng đi u hòa v i ư ề ẽ ộ ắ ươ lò xo co giãn mà đ dày c a s i dây lò xo không thay đ i. ổ ủ ợ ạ ộ

Mô ph ng con l c lò xo đ ng dao đ ng đi u hòa ề ạ ắ ộ ỏ

- 24 -