2 CÁC LỆNH CƠ BẢN TRONG NGÔN NGỮ LẬP TRÌNH VIOLET SCRIPT 2.1Các đối tượng và lệnh trong VS a Các đối tượng và lệnh xử lý đối tượng Trong thư viện của trình thông dịch VS môn Hình học có
Trang 1KINH NGHIỆM SỬ DỤNG VIOLET SCRIT TRONG BÀI GIẢNG VIOLET
TRONG BÀI GIẢNG MÔN TOÁN THCS
I) GIỚI THIỆU SƠ LƯỢC VỀ VIOLET SCRIPT
1) Giới thiệu sơ lược về lập trình mô phỏng Violet Script
a) Cấu trúc chương trình : Chương trình VS bao gồm các hàm, trong đó hàm main sẽ được gọi ngay khi bắt đầu chạy chương trình.
function main
appear Text, 8, 4, "Hello world"
end
Một chương trình con (một hàm, chức năng) sẽ được khai báo như sau:
function <tên hàm> <các tham số>
input_line &ax, &ay, &bx, &by
get_point &x, &y, x1, y1, angle, 2
b) Các lệnh đơn giản
Ngôn ngữ VS cung cấp các loại lệnh sau:
• 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ương trình trên
• Các lệnh gọi chương trình con: có cú pháp giống như lệnh cơ bản
c) Các biểu thức
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 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:
Trang 2• 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à ")"
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
Trang 32) CÁC LỆNH CƠ BẢN TRONG NGÔN NGỮ LẬP TRÌNH VIOLET SCRIPT
2.1Các đối tượng và lệnh trong VS
a) Các đối tượng và lệnh xử lý đối tượng
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ượng hình ảnh như sau:
Ruler
(thước kẻ)
Sử dụng làm vật kê để vẽ các đoạn thẳng
TSquare(ê-ke)
Dùng để vẽ đoạn thẳng vuông góc với một đoạn thẳng có sẵn
Compa
(compa)
Dùng để vẽ các hình tròn hoặc cung tròn
Measurer(thước đo)
Dùng để đo cạnh hoặc góc
Burin(dao cắt)
Dùng để cắt các đa giác
Để sử dụng các loại đối tượng của VS cũng như các đối tượng được nạp từ bên ngoài, ngôn ngữ VS cung cấp các lệnh sau:
Trang 4function main appear Pencil // Xuất hiện bút chì ở (0,0) move Pencil, 5, 5 // Đưa bút chì ở vị trí (5,5) appear Point, 5, 5, A // Xuất hiện điểm A ở (5,5) delay 12 // Tạm dừng 1 giây
disappear Pencil // Làm biến mất bút chì end
move
dịch_chuyển
Tên đối tượngTọa độ mới (x, y)Góc quay đối tượng
Vừa dịch chuyển vừa quay đối tượng tới vị trí mới và góc quay mới Nếu không nhập góc quay thì góc quay mặc định là 0°
function main
b) Các lệnh xử lý đa giác
Tên lệnh Tham số Tác dụng Ví dụ : Cắt ghép các góc của tam giác để chứng minh định lí về tổng ba góc của tam
giácpolygon
đa_giác
Tên đa giác
Vị trí đa giácTọa độ các điểm của
đa giác
Tạo một đa giác
Khi chạy, người dùng sẽ xác định các đường cắt qua góc thứ nhất và đường cắt qua góc thứ hai, sau mỗi lần cắt thì các mẩu cắt sẽ được ghép vào đúng vị trí cần thiết
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
clip
cắt
Tọa độ của 2 điểm bất
kỳ nằm trên đường thẳng cắt
Cắt tất cả các đa giác trên màn hình theo một đường thẳng
unify
hợp
Tên đa giácTên các đa giác sẽ được hợp vào đa giác
Hợp nhiều đa giác thành một đối tượng
Trang 5erase Tên đối tượng cần xóa Xóa nội dung của đối
tượng 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
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
circle Tọa độ của tâm
Ba điểm hoặc 3 tọa độ điểm
Đánh dấu góc và ký hiệu giá trị của góc
note_edge
ký_hiệu_cạnh
Kiểu đánh dấuGiá trị ký hiệuHai điểm hoặc 2 tọa
độ điểm
Đánh dấu cạnh và ký hiệu giá trị của cạnh
attach_pen Đối tượng
Tọa độ điểm được gắn bút
Gắn vào đối tượng một điểm, mà khi thay đổi vị trí của đối tượng thì điểm này
sẽ lưu lại vếtdetach_pen Đối tượng Gỡ bỏ điểm đã gắn ra khỏi
đối tượng
d) Các lệnh phục vụ tính toán trong hình học phẳng e) Lệnh tương tác các đối tượng
Trang 6lấy_điểm
Tọa độ của kết quảTọa độ của điểm gốcGóc ϕ
Khoảng cách R
Chuyển từ tọa độ cực sang tọa
độ Đề-các (tính tọa độ của điểm biết R và ϕ trong hệ tọa
Lấy góc ϕ (trong hệ tọa độ cực) từ tọa độ của một điểm so với điểm gốc
nhấn chuột
get_intersection1 Tọa độ điểm kết quả
Tọa độ 2 điểm trên đường thẳng thứ nhấtTọa độ 2 điểm trên đường thẳng thứ hai
Tính giao điểm giữa hai đường thẳng
Tiêu đề và tham số thứ 1
Tiêu đề và tham số thứ 2
Hiện ra một hộp thoại cho phép nhập một hoặc nhiều tham số từ bàn phím
get_intersection2 Tọa độ điểm kết quả
thứ 1Tọa độ điểm kết quả thứ 2
Tọa độ 2 điểm trên đường thẳngTọa độ tâm đường tròn
Bán kính đường tròn
Tính hai giao điểm của một đường thẳng và một đường tròn
get_intersection 3
(Lấy giao điểm 2 đường tròn)
&ax,&ay
&bx,&by4,48,432
Tọa độ điểm kết quả thứ 1Tọa độ điểm kết quả thứ 2Tọa độ tâm của đường tròn 1Tọa độ tâm của đường tròn 2Bán kính đường tròn 1Bán kính đường tròn 2
f) Các lệnh chờ đợi
Trang 7Các nút đồ họa có thể được nạp từ file ngoài bằng lệnh load_movie
g) Các lệnh trong thư viện Hình học (MathTools.vs)
• create_line x1, y1, x2, y2: Mô phỏng vẽ một đoạn thẳng bằng thước kẻ và bút chì từ điểm (x1, y1) đến điểm (x2, y2)
• create_corner x1, y1, angle, len: Mô phỏng vẽ một góc bằng thước đo độ, thước kẻ, bút chì Đầu tiên đưa thước đo độ đến vị trí của đường nằm
ngang, tâm thước là (x1, y1), lấy một điểm ở góc angle, rồi kẻ từ tâm đi qua điểm đó một đoạn có độ dài là len
• rotate_compa Compa, radius, angle: Quay đối tượng Compa một góc angle từ vị trí hiện tại, còn radius là độ mở của Compa (phải giống như ở
lệnh call Compa.Open,… trước đó)
• create_arc x1, y1, radius, start, end: Mô phỏng vẽ một cung tròn tâm (x1, y1), bán kính radius (được xác định bằng compa và thước kẻ), từ góc
start đến góc end
• cut_polygon x1, y1, x2, y2: Mô phỏng cắt bằng dao cắt đối với tất cả các hình đa giác được tạo bằng lệnh polygon
2.2) Cách đưa phần lập trình mô phỏng vào trong bài giảng Violet
Ở trang soạn thảo , chọn nút “Công cụ” , tiếp đó ta chọn “Lạp trình mô phỏng” , trên màn hình sẽ xuất hiện của số như sau :
Trang 8Tiếp đó ta chép đoạn mã lệnh của chương trình cần thực hiện và khung này
( Thực hiện lệnh Ctrl+C , Ctrl+V) Ví dụ đoạn mã lệnh về vẽ đường trung
trực của đoạn thẳng AB
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
hình xuất hiện cửa sổ
Trang 9Chọn nút có dấu 3 chấm ở mục “Các file thư viện nguồn”
Cách khai báo đường dẫn chi tiết của tệp này l à:
C:\Program Files\Platin ViOLET\Lecture\vpScript\Common\Mathtool.vs
( Khai báo nguồn dữ liệu)
Trang 10Chọn nút 3 chấm ở mục “Các đối tượng”
Và lệnh khai báo đối tượng ( công cụ vẽ hình) , có đường dẫn là :
C:\Program Files\Platin ViOLET\Lecture\vpScript\Template\
Trong mục này ta chọn lần lượt các công cụ : thước kẻ (Rule) , Compa ( Compa) , bút chì (Pencil)
Mỗi lần thêm công cụ nhấn vào nút dấu “ +”
Có màn hình như sau :
Sau khi khai báo xong , nhấn nút “Đồng ý”
Lúc này chương trình tự chạy các bước để vẽ đường trung trực của đoạn thẳng AB ( Kết quả xem hình bên )
Trang 112.3) Tìm hiểu ý nghĩa của một số mã lệnh về mô phỏng
a)M· lÖnh ch ¬ng tr×nh vÏ ®o¹n th¼ng MN b»ng ®o¹n th¼ng AB
function main set_paper Draft, 3, 0xFF0000 Line 3, 2, 8, 2
Appear Point, 3, 2, "A", below Appear Point, 8, 2, "B", below
radius = 5 get_angle &angle, 1, 1, 1, 1
set_paper Draft, 1, 0x0000FF appear Compa
move Compa, 3, 2 call Compa.OpenCompa, 5
set_paper Draft, 3, 0xFF0000 Line 3, 7, 12, 7 Appear Point, 3, 7, "M", below
set_paper Draft, 1, 0x0000FF move Compa, 3, 7, angle-10 call Compa.OpenCompa, 5 rotate_compa Compa, radius, angle+10
disappear Compa Appear Point, 8, 7, "N", belowend
Định dạng bản vẽ, độ dày nét vẽ là 3, màu đỏ
Vẽ đoạn thẳng từ toạ độ 3,2 đến toạ độ 8,2Xuất hiện_điểm, toạ độ 3,2; tên điểm là A, chữ ở dưới điểmXuất hiện_điểm, toạ độ 8,2; tên điểm là B, chữ ở dưới điểmBán kính bằng 5
Nhập liệu góc điều hướng com pa (bạn có thể thay đổi số để cảm nhận)
Định dạng bản vẽ, độ dày nét vẽ là 1, màu xanh thẫmXuất hiện compa (2 dòng xanh phía trên có thể cho xuống bản
vẽ này)
Di chuyển compa tới toạ độ 3,2 (tức là đinh compa đặt vào A)
Mở compa, bán kính 5 (ngầm định là mở theo phương nằm ngang tức là đầu chì trùng với B – ta hiểu là compa đo AB)Định dạng bản vẽ, độ dày nét vẽ là 3, màu đỏ
Vẽ đoạn thẳng từ toạ độ 3,7 tới toạ độ 12,7Xuất hiện điểm toạ độ là 3,7; tên điểm là M, chữ ở dưới điểm (Do chỉ có 1 điểm M ở một đầu nên ta tưởng như 1 tia gốc M)Định dạng bản vẽ, độ dày nét vẽ là 1, màu xanh
Di chuyển compa tới vị trí 3,7; xoay compa -10 độ)
Độ mở compa là 5 (tưởng như nó đo đoạn AB rồi di chuyển xuống M)
Quay compa, bán kính 5, +10 độ (so với phương nằm ngang)Biến mất compa
Xuất hiện điểm N tại vị trí 8,7; chữ ở dưới điểmKết thúc
b) Mã lệnh chương trình vẽ góc bằng thước đo góc
Trang 12Mã lệnh Ý nghĩa từng dòng Hình minh họa function main
appear Text, 8.25, 0.5, "Hãy vẽ một tia OA", 2 input_line &ax, &ay, &bx, &by disappear Text appear Point, ax, ay, "O", below appear Point, bx, by, "A", below set_paper Paper, 2, 0x0003FF create_line ax, ay, (3*bx-ax)/2, (3*by-ay)/2 get_angle &angle, ax, ay, bx, by appear Protractor move Protractor, ax, ay, angle appear Text, 8.25, 0.5, "Hãy đánh dấu điểm thuộc cạnh thứ hai theo mép thước", 2 input_point &cx, &cy appear Point, cx, cy, "B", below disappear Text disappear Protractor
set_paper Paper, 2, 0x0003FF create_line ax, ay, (3*cx-ax)/2, (3*cy-ay)/2
set_paper Paper, 2, 0xF00000 note_angle 2, "value", bx, by, ax, ay, cx, cy end
Vết đoạn thẳng từ 2 toạ độ ax, ay và bx, by do click chuột
Vẽ đoạn từ O đến (3*bx-ax)/2, (3*by-ay)/2 ( vượt qua A ) Nhập liệu hướng điều khiển thước đo góc ( theo hướng OA ) Xuất hiên thước đo góc Di chuyển thước đo góc tâm thước trùng vào O, hướng OA …………
Nhập liệu toạ độ điểm do click chuột ……
……
Biến mất thước đo góc ……
Vẽ đoạn thẳng từ O đến (3*cx-ax)/2, (3*cy-ay)/2 (tưởng như vẽ tia vì nó vượt qua B ) ……
Đánh dấu góc, kiểu 2 , “số đo”, tạo bởi bx,
by, ax, ay, cx, cy
…
c)
Trang 13nextend
…Cho t từ 0 đến 60 bước nhảy 1 Xuất hiện dòng chữ tại toạ độ 8.3, 5.5, tên chữ là t
Độ trễ 12Tiếp tục
…
Đường tròn
function mainset_paper Draft1,5,0x0000FF circle 8,6,2
appear Point, 8,6, "O",rightbelowset_paper Draft,5,0xFF0000 for t from 0 to 8 step 0.03 erase
appear Point, t+4,6, "O'",rightbelow circle t+4,6,1.5
delay 1 nextend
Vẽ đường tròn tại toạ độ t+4, 6, bán kính 1.5
Độ trễ 1 Tiếp tục
…Bán kính function main
set_paper Draft1,5,0x0000FF circle 8,6,2
appear Point, 8,6, "O",rightbelowset_paper Draft,5,0xFF0000 for v from 0 to 360*v step 5 get_point &ax, &ay, 8, 6, v, 2 appear Point, ax,ay, "A", right erase
line ax, ay, 8,6 delay 1
Xoá đối tượng
Vẽ đoạn thẳng từ ax, ay đến 8, 6
Độ trễ 1
…
Trang 14end …
Hệ quả của góc
nội tiếp
function mainset_paper Paper, 5,0x0000FF circle 1, 5, 3
appear Point, 1, 5, "O"
get_point bx, by, 1, 5, 180, 3 appear Point, bx, by, "B", leftbelow get_point cx, cy, 1, 5, 0, 3
appear Point, cx, cy, "C", rightbelow appear TSquare
move TSquare, ax, ay for v from 0 to 180 step 2 get_point &ax, &ay, 1, 5, v, 3 appear Point, ax,ay, "M", right set_paper Draft,3,0x000000 erase
note_angle 0, "", bx, by, ax, ay, cx, cy get_angle &g, ax, ay, cx, cy
set_pos TSquare, ax, ay, g set_paper draft, 3, 0xFF00FF erase
line ax, ay, bx, by line ax, ay, cx, cy line bx, by, cx, cy delay 1
next
appear TSquare move TSquare, ax, ay for v from 180 to 360 step 2 get_point &ax, &ay, 1, 5, v, 3 appear Point, ax,ay, "M", right set_paper Draft,3,0x000000 erase
note_angle 0, "", cx, cy, ax, ay, bx, by get_angle &g, cx, cy,ax, ay
set_pos TSquare, ax, ay, g-90
…
…
…
…Tính toạ độ của điểm so với gốc 1,5, góc ϕ là 180 độ, cách gốc là 3 sau đó đặt tên là B, chữ ở phía trái bên dưới điểm
…
…Xuất hiện thước đo góc
Di chuyển thước đo góc đến toạ độ ax, ayCho v từ 0 đến 180 (độ), bước nhảy là 2Tính toạ độ của điểm so với gốc 1,5, góc ϕ là v, cách gốc là 3Xuất hiện điểm M tại vị trí vừa tính toạ độ
…
…Đánh dấu góc vuôngTính độ lớn của góc g từ toạ độ ax, ay so với gốc cx, cyThiết lập sự biến đổi của thước đo góc theo toạ độ ax, ay và g
Đây là chương trình dùng liên tiếp 2 nhóm lệnh lặp để mô phỏng việc góc nội tiếp chắn nửa đường tròn là góc vuông (cả nửa trên và nửa dưới đường tròn)
Trang 15set_paper draft, 3, 0xFF00FF erase
line ax, ay, bx, by line ax, ay, cx, cy line bx, by, cx, cy delay 1
nextend
Nét đứt
function main set_paper Paper, 5, 0xFF00FF appear Ruler,5,4
for t from -4 to 6 appear Pencil attach_pen Pencil
for x from t to t+0.4 step 0.4 set_pos Pencil,x+9,4 next
t= t-0.1 delay 2 next
disappear Pencil disappear Rulerend
Chương trình này các bạn hoàn toàn có thể “phiên dịch” theo từng dòng lệnh, xin miễn cho tôi.thuyết minh phần này
Đây là chương trình dùng hai nhóm lệnh lặp lồng vào nhau để mô phỏng việc
vẽ nét đứt (nét khuất) Vòng lặp thứ nhất (chữ đỏ) chứa vòng lặp thứ hai (chữ xanh)
Vòng lặp xanh có tác dụng tạo ra các nét vẽ Điều hướng nét vẽ (bạn tham khảo thêm chương trình vẽ hình hộp chữ nhật để xem cách điều chỉnh các nét khuất theo các hướng khác nhau)
Vòng lặp ngoài màu đỏ có tác dụng tạo ra các khoảng trống giữa các nét vẽ,
độ thưa của nét vẽ, độ dài tổng thể của cả đoạn
Đồ thị
function main set_paper Paper, 5, 0x0000FF appear Pencil
attach_pen Pencil for x from -4.2 to 4.25 step 0.1 y= x*x
set_pos Pencil, 8+x,12 - y delay 1
next disappear Pencilend
Đây là chương trình dùng vòng lặp để mô phỏng cách vẽ đồ thị hàm số y = x*x Tuy nhiên trong file minh hoạ gửi kèm, tôi có dùng mô dun vẽ đồ thị hàm số để vẽ thêm một hệ trục toạ độ và các đường dóng toạ độ tương ứng của hàm y = x*x , thực ra tôi đã vẽ cả đồ thị của y =x*x nhưng tôi tô màu trắng nên các bạn không nhìn thấy nó mà chỉ thấy hệ trục và các đường dóng
Đây là chương trình kết hợp giữa hiệu quả của 2 modun khác nhau trong violet Sau này các bạn nên để ý đến sự kết hợp tác dụng của nhiều modun trong một bài giảng Đó mới là tác dụng to lớn mà phần mềm VIOLET mang lại cho chúng ta
2.5) Một số mã lệnh sử dụng các công cụ vẽ hình