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 ướ > to i > step
c nh y ả > next L nh l p ệ ặ 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 - 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
ử
…) 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 ẽ ồ ị ố ỹ 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 - • 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 - 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 - 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 - Đ 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 - 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 - 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 - 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 đ
ườ 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 - ngoài b ng l nh load_movie
ệ ằ 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
ề
... 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 - ỉ ơ ả ủ 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.ượ
đ ươ ẽ ồ ị ả ấ ề ậ ố ế 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 - 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 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 - 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. ủ
ỉ 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 - ẽ ươ ườ ể ả ỉ 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 - Tam giác Napoleon ự ự ộ ế ộ ạ
t đ dài 3 c nh ậ ạ 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 - Các th vi n mã ngu n và hình nh s d ng trong bài toán d ng hình ư ệ ử ụ ự ả ồ ỏ ể ộ ả ắ ể ử ụ
ủ ộ
ỹ ẽ ậ ổ ự ế ả ậ ế ạ ộ ể ạ
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 - 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 -1.4.5. Các nhãn
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
ủ
ả
ữ
2.2. Các ng d ng
ứ
ụ
2.3. Ví dụ
VIOLET Group
Ngôn ng l p trình Violet Script
ữ ậ
VIOLET Group
Ngôn ng l p trình Violet Script
ữ ậ
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
ố ượ
ử
ệ
VIOLET Group
Ngôn ng l p trình Violet Script
ữ ậ
VIOLET Group
Ngôn ng l p trình Violet Script
ữ ậ
3.2. Các l nh x lý đa giác
ử
ệ
VIOLET Group
Ngôn ng l p trình Violet Script
ữ ậ
3.3. Các l nh đ h a
ồ ọ
ệ
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
ụ ụ
ọ
ệ
ẳ
3.5. Các l nh ch đ i
ờ ợ
ệ
VIOLET Group
Ngôn ng l p trình Violet Script
ữ ậ
3.6. Các l nh ph c v x lý t
ng tác
ụ ụ ử
ệ
ươ
3.7. Các l nh đi u khi n h th ng
ề
ệ ố
ệ
ể
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
ớ
ệ
4.2. V đ th hàm s
ẽ ồ ị
ố
VIOLET Group
Ngôn ng l p trình Violet Script
ữ ậ
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.
VIOLET Group
Ngôn ng l p trình Violet Script
ữ ậ
4.4. Tam giác Napoleon
ạ
ẽ
VIOLET Group
Ngôn ng l p trình Violet Script
ữ ậ
VIOLET Group
Ngôn ng l p trình Violet Script
ữ ậ
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
ế
ộ
ấ ơ ả
c k và compa.
ướ ẻ
VIOLET Group
Ngôn ng l p trình Violet Script
ữ ậ
4.6. Mô ph ng con l c lò xo
ỏ
ắ
VIOLET Group
Ngôn ng l p trình Violet Script
ữ ậ