Nội dung chính
Đề bài : Biết cạnh tam giác đều >50 và <250 hãy viết chương trình vẽ, tô màu và tính phần diện tích màu xám.
Phân tích: Ở đây tôi thêm các điểm vào cho dễ hình dung, đầu tiên tôi vẽ tam giác đều lần lượt D → B → C(ghi nhớ tọa độ đỉnh) → A sau đó tôi quay lại D.Tiếp theo lấy tọa độ của D và cho quay rùa hướng về C, kế đó ta thực hiện công việc so sánh tọa đọ của D và C nếu giống nhau thì dừng (rùa đã đi đến C) còn không giống nhau thì tiếp tục cho rùa tiến lên 1 bước.
Ban đầu tôi dùng biến mảng Make “C pos và Make “D pos tuy nhiên khi chương trình chạy thì rùa cứ phăng phăng 1 mạch qua cả điểm C, tiến hành show các giá trị ra thì tôi thấy rằng có sai số và D tăng lên không thể nào bằng C được ví dụ C 0 172.2358 còn D lúc tăng tới C 0 172.999999 vì vậy tôi dùng xcor và ycor đã làm tròn các giá trị để lấy và so sánh các tọa độ với nhau. Tôi dùng biến h để ghi nhận số lần di chuyển của rùa, sau khi có độ dài chiều cao tôi lấy 3/2 của nó sẽ ra được trọng tâm.
Một cách làm khác các bạn hãy sử dụng lệnh đo khoảng cách DISTANCE để tính chiều cao, cách giải dưới đây đã cũ, chúng tôi sẽ sửa lại sau. (Tham khảo phần vè hình dưới đây)
To tamgiac :n
IF [OR :n<50 :n>250] [MESSAGEBOX [Thong bao] [Canh tam giac 50<n<250 . Bam OK de thoat.] Halt]
Pd Fd :n/2 ; bắt đầu vẽ từ nửa cạnh
Lt 120 Fd :n Lt 120
Make “X Round Xcor Show :X
Make “Y Round Ycor Show :Y ;lấy tọa độ đỉnh C
Wait 20 Fd :n Lt 120 Fd :N/2 ; vẽ xong tam giác đều
Lt 90 ; hướng về phía góc C
Make “X1 Round Xcor Make “Y1 Round Ycor ; lấy tọa độ chân đường cao D
Make “h 0
Pu
Until [And :X=:X1 :Y=:Y1 ][Make “h :h+1
Fd 1
Make “X1 Round Xcor
Make “Y1 Round Ycor Wait 1] ;khi chưa đi tới vị trí đỉnh thì cứ bước thêm 1 bước
Make “r (:h*2/3)/2 Bk 2*:r Pd
Circle :r
Pu
SETFLOODCOLOR [195 195 195]
Repeat 3[Fd :r+10 Fill Bk :r+10 Rt 120]
Home
SetXY -150 -150
Rt 90
Label (list “Dien “tich “can “tinh “= :n*:h/2-3.14*:r*:r)
End
Kết quả
Cám ơn thầy Đoàn Thanh Hải (FB) đã giúp chúng tôi hoàn thiện bài viết này.
thầy ơi sao em mở bài này trong lo go ma nó báo lỗi tamgiac 60
IF doesn’t like [OR :n250] as input in tamgiac
[IF [OR :n250] [MESSAGEBOX [Thong bao] [Canh tam giac 50<n<250 . Bam OK de thoat.] Halt]]
Có vẻ như chỗ điều kiện chưa đúng OR :n 250, nếu bạn copy từ website thì có thể nó bị mất một số ký tự định dạng, bạn so sánh lại nhé.