Trong nhiều trường hợp, số lần lần lặp lại không biết trước và số vòng lặp được xác định bởi một điều kiện nào đó... Cấu trúc lặp với số lần lặp chưa biết trước (lặp có điều kiện) 2.1.[r]
(1)I KHÁI NI M V BI NỆ Ề Ế
Bi n m t đ i lế ộ ạ ượng có th thay đ i giá tr c a nóể ổ ị ủ
T i ph i dùng bi n? Có th hi u m t cách đ n gi n nh t: Dùng bi n đ đ m b o tính ả ế ể ể ộ ả ấ ế ể ả ả tính t ng quát c a m t d ng toán Sau s d ng thành th o ta th y nhi u ổ ủ ộ ụ ấ ề trường h p khác ph i dùng đ n bi nợ ả ế ế
Ví d : Mai có 20 k o, Mai cho Minh cái, sau Mai l i ăn h t H i Mai l i bao ụ ẹ ế ỏ nhiêu k o?ẹ
Trong toán này, ta bi t trế ước (ch c ch n) là: S k o Mai có 20 cái, s k o Mai cho ắ ắ ố ẹ ố ẹ Minh 5, s k o Mai ăn 3.ố ẹ
d ng t ng quát, toán đ c phát bi u nh sau: B n Mai có a k o, Mai cho Minh
Ở ổ ượ ể ẹ
b cái, sau Mai l i ăn h t c k o H i Mai l i k o?ạ ế ẹ ỏ ẹ
Ta bi t r ng s a,b,c ch a bi t ta vi t th t c, có th thay chúng b ng b t kỳ ế ằ ố ế ế ủ ụ ể ằ ấ s Trố ường h p ta g i s a, b,c bi n.ợ ọ ố ế
Chú ý: V i cách gi i toán b ng phớ ả ằ ương pháp dùng ký hi u thay th ký hi u thay th ệ ế ệ ế đượ ọc g i bi n.ế
II CÁCH KHAI BÁO BI N TRONG TH T CẾ Ủ Ụ 1 Đ i v i bi n nh n giá tr tr c ti p t bên ngoàiố ớ ế ậ ị ự ế ừ
- Trong tốn tính s k o trên, bi n a, b c đố ẹ ế ược đ a vào t bên ngồi đ ể chương trình th c hi n tính tốn, ta ự ệ khai báo bi n dòng v i dòng ế ớ ghi tên th t c b ng cách ghép d u hai ch m( :) trủ ụ ằ ấ ấ ước tên bi n ( có th s d ng ế ể ụ nhi u bi n th t c)ề ế ủ ụ
Khai báo:
TO KEO :a :b :c ( bi n a, b, c đở ế ược khai báo dòng ghi tên th t c KEO ủ ụ b ng cách ghép d u (:) trằ ấ ước tên bi n)ế
Ví d : TO KEO :a :b :cụ
Lúc bi n a,b,c tr thành giá tr đ th c hi n bi u th c có th t c:ế ị ể ự ệ ể ứ ủ ụ TO KEO :a :b :c
Cs
RT 90 LABEL [ S k o l i là:]ố ẹ PU FD 250 PD LABEL :a - :b - :c Ho c:ặ
(2)Khi th c hi n, ta nh p giá tr c a a,b,c dòng v i l nh g i th t c t i c a ự ệ ậ ị ủ ớ ệ ọ ủ ụ ử s l nhổ ệ
ví d : TO KEO 20 Khi bi n a, b,c nh n l n lụ ế ậ ầ ượt giá tr 20, ,3 th c hi nị ự ệ tính k t qu ế ả
Bài t p1: Vẽ hình vuông bi t chi u dài m i c nh a đ n v ậ ế ề ỗ ạ ơ ị To hinhvuong :a
Cs
Repeat [ fd :a rt 90] Ht
end
Khi th c hi n, ta nh p giá tr c a a dòng v i l nh g i th t c t i c a s l nh, ví ự ệ ậ ị ủ ớ ệ ọ ủ ụ ổ ệ d : hinhvuong100; hinhvuong 200,… Khi vẽ hình vng có đ dài c nh l n lụ ộ ạ ầ ượt 100,200,
Bài t p 2: Vi t th t c vẽ tính di n tích hình ch nh t bi t chi u dài a đ n v , ậ ế ủ ụ ệ ữ ậ ế ề ơ ị chi u r ng b đ n v ề ộ ơ ị
To HCN :a :b Cs
Repeat [ fd :b rt 90 fd :a rt 90 ]
Pu bk 50 rt 90 label [ dien tich hinh chu nhat la:] Pu fd 250 label :a *:b
Ht end
Th c hành: ch y l i th t c v i nhi u giá tr a,b,c khác nhauự ạ ạ ủ ụ ớ ề ị 2 Đ i v i bi n nh n giá tr ch y th t cố ớ ế ậ ị ạ ủ ụ
Trường h p bi n nh n giá tr t m t bi u th c có th t c, ta khai báo theo cú ợ ế ậ ị ộ ể ứ ủ ụ pháp sau:
MAKE “< Tên bi n>ế :< Bi u th c>ể ứ
ví dụ Make “n 100 có nghĩa n =100, muốn giá trị n ta dùng Show :n
Ví d : ụ
(3)Cs
MAKE "a :b+3 //ở bi n a = b+3ế Show :a
END
C n phân bi t: N u bi n nh n giá tr t bên dùng d u hai ch m trầ ệ ế ế ậ ị ừ ấ ấ ước tên bi n, đ i v i bi n nh n giá tr t m t bi u th c th t c dùng d u nháy ế ố ớ ế ậ ị ộ ể ứ ủ ụ ấ kép trước tên bi n.ế
Lo i bi n thạ ế ường s d ng gi i toán b ng PP dùng ký hi u thay th ụ ả ằ ệ ế Ví d 1:ụ
to tinhtoan :a :b make "tong :a+:b make "hieu :a-:b make "tich :a*:b make "thuong :a/:b
rt 90 label (list "tong "la: :a+:b ",hieu "la: :a-:b ",tich "la: :a*:b ",thuong "la: :a/:b )
end Ví d 2:ụ
M t m nh đ t hình ch nh t có chi u lài a đ n v Bi t r ng chi u r ng b ng 2/3 chi u ộ ả ấ ữ ậ ề ị ế ằ ề ộ ằ ề dài
Hãy vi t th t c vẽ hình tính di n tích m nh đ t hình ch nh t đó?ế ủ ụ ệ ả ấ ữ ậ Th t c m u:ủ ụ ẫ
to hcn :a CS
make "b :a*2/3
repeat [ fd :b rt 90 fd :a rt 90]
pu bk 50 rt 90 pd label [ Dien tich hình cn la:] pu fd 200 label :a* :b Ho c:ặ
pu bk 50 rt 90 pd
label (list "Dien "tich "hinh "cn "la: :a*:b ) end
(4)L nh ệ label :a* :b hi n th tính giá tr di n tích = a *b = * 6= 54ể ị ị ệ Ví dụ :
M t khu đ t hình ch nh t có chi u dài a, chi u r ng b ng ¾ chi u dài Ngộ ấ ữ ậ ề ề ộ ằ ề ười ta đào m tộ gi ng hình trịn có tâm n m t i giao m hai đế ằ ể ường chéo c a khu đ t, bán kính b ng ¾ ủ ấ ằ chi u r ng c a khu đ t Hãy vi t th t c vẽ l i khu đ t tính di n tích ph n đ t ề ộ ủ ấ ế ủ ụ ấ ệ ầ ấ l i sau đào gi ng.ạ ế
Th t c m u:ủ ụ ẫ
To khudat :a // Khai báo bi n a chi u dài hình cn ế ề Cs st pd
Make "b :a*3/4 // chi u r ngề ộ b b ng ¾ chi u dàiằ ề a b =a *3/4 Make "r :b/4 // bán kính r k b ng ¾ chi u r ng ằ ề ộ là: r = b *3/4 Make "Scn :a* :b // Di n tích c a hình ch nh t là: Scn = a*bệ ủ ữ ậ
Make "Sht :r * :r * 3.14 // Di n tích hình trịn gi ng là: Sht = r*r*3.14ệ ế
Make "Scl :Scn- :Sht // Di n tích cịn l i = di n tích hcn - di n tích hình trònệ ệ ệ Repeat [ fd :b rt 90 fd :a rt 90] // Vẽ hình ch nh t chi u dài a, chi u r ng bữ ậ ề ề ộ
Pu setxy :a/2 :b/2 // Nh c bút Đ a rùa v tâm đấ ề ường tròn
pd circle :r // h bút vẽ đạ ường tròn bán kính r, rùa tâm đở ường trịn Pu home bk 30 rt 90 Label [ Dien tich khu dat lai la:]
// Nh c bút ti n lên 30 bấ ế ước xoay hướng 90 đ đ vi t dòng ch ộ ể ế ữ Dien tich khu dat con lai la:
fd 300 label :Scl //ti n thêm 300 bế ước n a đ hi n th giá tr c a di n tích cịn l iữ ể ể ị ị ủ ệ ht
(5)V CẤU TRÚC LẶP
1 Cấu trúc lặp với số lần lặp biết trước: người ta thường dùng cú pháp sau: 1.1.Câu lệnh REPEAT:
Cú pháp: Repeat N[ lệnh1 lệnh2 …]
Ý nghĩa: Lặp lại N lần lệnh: lệnh1 lệnh2 …
Cách thực vòng lặp sau: MSWLogo cho thực N lần dãy lệnh lệnh1 lênh2 … Ví dụ 1: vẽ đa giác có số cạnh độ dài cạnh người chạy chương trình lệnh
to DG_NcanhM :M :N
repeat :N[FD :M RT 360/:N] end
Rõ ràng sơ lần lặp biết trước N Ví du 2: Giải đề thi tin học trẻ toàn quốc năm 2015 Câu (20 điểm): Biển báo
Em viết câu lệnh chương trình MSWLogo để vẽ hình – Biển báo giao thơng “cấm dừng đổ xe” Biết bán kính vịng trịn ngồi 110 đơn vị, bán kính vịng trịn 90 đơn vị, độ dày đường chéo 10 đơn vị Tô màu quy định biển báo giao thông
Giải: to bienbao
cs pd setpc [255 0] circle 110 rt 45 pu fd lt 90 fd pd
repeat 4[fd 85 rt 90 arc2 90 85 rt 90 fd 85 pu fd 10 pd] pu home setFC fill fd 30 setFC fill rt 135 fd 40 repeat 3[fill rt 90 fd 40]pd ht
end
Hình 1(bản màu đen, xám)
Câu (10 điểm): Hình vẽ
Em viết câu lệnh chương trình MSWLogo để vẽ hình Biết Hình tạo thành từ hình vng tam giác có kích thước cạnh 100 đơn vị
Giải:
to vehinh cs pd
(6)90]
fd 100 lt 90
repeat 2[rt 120 fd 100]
rt 75 pu fd 100*sqrt(2) rt 180 pd]
end
Hình
Câu (10 điểm): Tinh tốn
Một bể nước tích 2015 lít thùng đựng nước tích 31 lít lít Chỉ có hai thao tác:
- Thao tác 1: Múc đầy thùng 31 lít đổ vào bể - Thao tác 2: Múc đầy thùng lít đổ vào bể
Em sử dụng câu lệnh MSWLogo để tính đưa số cách sử dụng thao tác để làm đầy bể nước Hai cách gọi khác tổng số thao tác sử dụng khác Giải:
to tinhtoan cs
make "d make "m make "n
repeat 66[repeat 251[if (:m*31+:n*8)=2015[make "d :d+1] make "n :n+1] make "n make "m :m+1]
rt 90
label [so cach la] pu fd 100 pd label :d ht
end
2 Cấu trúc lặp với số lần lặp chưa biết trước (lặp có điều kiện)
Ta biết câu lệnh Repeat để lặp lại công việc Trong câu lệnh này, số bước lặp biết trước MSWLogo thực số bước định
Ví dụ 1: Cần tính tổng S = + + + + + …+ N
Ta giải toán với biến S A thực sau: Đầu tiên, ta cho S = A = 1; thực lặp N lần với hai công việc cộng dồn S = S + A cho tăng A đơn vị: A = A +
To cong :N CS
Make “S Make “A
Repeat :N [Make “S :S*:A Make “A :A+1] RT 90 Label :S
End
Với toán trên, N biến ta biết trước thực chương trình Trong nhiều trường hợp, số lần lần lặp lại khơng biết trước số vịng lặp xác định điều kiện Khi cần sử dụng vịng lặp có điều kiện While (hay gọi vòng lặp với số lần lặp khơng xác định)
Ví dụ 2: Tính tổng S = + + 11 + 15 + 19 + … số hạng cuối gần 100
(7)1.2.Câu lệnh FOR:
Cú Pháp: For [<biến chạy> <giá trị đầu> <giá trị cuối> <giá trị tăng>] [Câu lệnh] Công dụng:
- Ban đầu <biến chạy> nhận giá trị <giá trị đầu>
- [Câu lệnh] thực <biến chạy> nhỏ giá trị cuối, lần thực câu lệnh <biến chạy> tăng lên <giá trị tăng>
Ví dụ:
1/Vẽ hình vng lồng hình vẽ bên có kích thước 30; 60; 90; 120; 150; 180 Cách 1:
to vehinhvuong cs pd
For [I 1][repeat 4[fd :i*30 rt 90]]
HT Cách 2: end
to vehinhvuong cs pd
For [I 1][repeat 4[fd :i*30 rt 90]]
HT
2/ Vẽ hình tái tim với cạnh ngắn 20, cạnh dài 200, cạnh tăng, giảm 10, góc cạnh 10 độ (Như hình vẽ bên) to vetraitim
cs pd
For [i 20 200 10][fd :i BK :i rt 10]
For [i 200 20 -10][fd :i BK :i rt 10]
HT end
2 Cấu trúc lặp với số lần lặp chưa biết trước (lặp có điều kiện) 2.1 Mở đầu:
Ta biết câu lệnh Repeat, For để lặp lại công việc Trong câu lệnh này, số bước lặp biết trước MSWLogo thực số bước định
Ví dụ 1: Cần tính tổng S = 1+2+3+4+5+…… +N
Ta giải tốn với biến S A thực sau: Đầu tiên, ta cho S=0 A=1; thực lặp N lần với hai công việc cộng dồn S=S+A cho tăng A đơn vị: A=A+1
to cong :N CS
(8)Make “A
Repeat :N [Make “S :S+:A Make “A :A+1] RT 90 Label :S
HT end Hoặc to cong :N Make “S
For [I :N][Make “S :S+1] RT 90 Label :S
HT End