Do vậy, đề xuất của John là: Ngay từ tiểu học, trẻ em ở Anh bất kể năng lực và nguồn gốc cần có cơ hội: học một số kiến thức cơ bản về khoa học máy tính; hiểu cách tư duy điện toán; học
Trang 1THAY LỜI NÓI ĐẦU…
Hãy đọc và suy nghĩ về nội dung bài báo mạng dưới đây về vấn đề dạy tin học cho trẻ
“Cách dạy công nghệ thông tin cho trẻ em hiện nay đang cần được xem xét lại một cách triệtđể” Tác giả John Naughton giải thích vấn đề trên và đề xuất hướng cải cách trong bài viết này Điều gìcòn thiếu trong việc dạy công nghệ thông tin tại các trường học đang là vấn đề lớn
Một cuộc thảo luận sôi nổi đã và đang diễn ra - trong và ngoài chính phủ - về vấn đề “Cần phảilàm gì đối với Công nghệ thông tin và truyền thông (ICT) trong chương trình phổ thông” Các tổ chức
- Royal Society, Association for Learning Technology, Computing at School (Tổ chức của các giáoviên liên quan) và British Computer Society - đã công bố các báo cáo và tài liệu thảo luận nhắm tới các
bộ trưởng và Bộ Giáo dục Michael Gove, thư ký giáo dục của Nhà trắng, trình bày bài phát biểu tạihội thảo công nghệ BETT gần đây, chỉ ra rằng Nhà trắng đang cân nhắc Trong lúc đó, đang xảy ra một
số sự kiện đáng ngạc nhiên, chẳng hạn như hơn một triệu người đã đặt hàng sản phẩm Raspberry Pi,một máy tính rẻ tiền, nhỏ xíu cỡ thẻ tín dụng từ Cambridge geeks
Vậy thì, điều gì đang xảy ra: đang có một sự dịch chuyển kiến tạo Các trường đại học muốnthay đổi sự giảm sút số lượng học viên ở các khóa học khoa học máy tính Các công ty sản xuất tròchơi muốn có nhiều lập trình viên hơn Chính phủ đòi hỏi nhân viên có trình độ công nghệ cao hơn.Các nhà sản xuất muốn có nhân viên biết thiết kế hệ thống nhúng Và giáo viên muốn có nhiều tiềnhơn cho các phòng thí nghiệm máy tính
Câu chuyện thiếu gì rõ ràng là một vấn đề lớn Do vậy, đề xuất của John là:
Ngay từ tiểu học, trẻ em ở Anh bất kể năng lực và nguồn gốc cần có cơ hội: học một số kiến thức cơ bản về khoa học máy tính; hiểu cách tư duy điện toán; học lập trình; và có cơ hội tiến tới các cấp độ hoàn hảo hơn trong các lĩnh vực này.
Chúng ta sẽ đi vào câu hỏi tại sao việc này lại quan trọng và cần thiết, nhưng trước hết ta cầnđối mặt với thực tế “đau thương” Đó là phần lớn những gì ta đang làm cho giáo dục ICT tại cáctrường học nước Anh trong hai thập kỷ qua đã bị lạc hướng và hầu như là vô ích Thay vì giáo dục trẻ
em về công nghệ tiên tiến nhất, ta lại tập trung vào giáo dục chúng sử dụng các sản phẩm phần mềmlỗi thời Và chúng ta làm điều này vì ta gặp phải vấn đề mà nhà triết học Gilbert Ryle đã gọi là “sai lầmthể loại” - các việc cùng loại được biểu hiện như là thuộc về loại khác Ta đang mắc sai lầm khi nghĩrằng học về máy tính giống như học lái xe ô tô, và do kiến thức về công nghệ đốt trong không cần thiếtcho việc trở thành một lái xe chuyên nghiệp, nên kéo theo là những hiểu biết về sự hoạt động của máytính không quan trọng đối với trẻ em
Điều ta đã quên mất là xe hơi không vận hành thế giới, không giám sát truyền thông, không hỗtrợ điện thoại di động, không giúp quản lý tài khoản ngân hàng, không lưu trữ nhật ký, không can thiệpvào các hoạt động xã hội và thậm chí - ở một số nước - không tính được số phiếu bầu cử Nhưng máytính được nối mạng có thể làm được tất cả các việc trên, và hơn thế nữa
Do vậy ta cần phải thừa nhận rằng “ICT trong trường học” đã trở thành món hàng độc hại Taphải thay thế nó bằng một môn học khác tương đương, hỗ trợ về mặt tri thức và mở rộng cuộc sốngcho sinh viên Nếu cần một cái tên hay hơn, hãy gọi môn đó là khoa học máy tính Đây là thuật ngữlớn, bao trùm hai lĩnh vực riêng biệt Trước tiên là tập hợp các khái niệm cơ bản cần thiết nếu trẻ emmuốn hiểu về thế giới mạng mà chúng đang lớn lên trong đó Và thứ hai là khoa học máy tính liênquan tới cách suy nghĩ giải quyết vấn đề: còn gọi là suy nghĩ điện toán, và nó là những hiểu biết về sựkhác biệt giữa trí tuệ con người và trí tuệ nhân tạo, đồng thời là suy nghĩ đệ quy, là tỉnh táo trước nhucầu ngăn chặn, dò tìm và chống lại các nguy cơ, sử dụng tư duy trừu tượng và phân tích khi giải quyếtcác công việc lớn, và là huy động năng lực phỏng đoán, lặp và tìm kiếm để khám phá giải pháp chocác vấn đề phức tạp
Sẽ có rất nhiều thảo luận thú vị về các khái niệm cơ bản mà sinh viên cần phải hiểu được, ở đâyđưa ra một danh mục khái niệm cho người mới bắt đầu Trẻ em cần biết về: thuật toán (các công thứctoán học để làm thành các chương trình); mật mã (mức độ bảo mật thông tin trên mạng); trí tuệ máy(cách các dịch vụ Youtube, NetFlix, Google và Amazon đoán được ý muốn của bạn); sinh học điệntoán (cách hoạt động của mã di truyền); tìm kiếm (cách ta tìm cây kim trong một tỉ đống cỏ khô); đệquy (một phương pháp trong đó giải pháp phụ thuộc vào các giải pháp cho các mẫu nhỏ của cùng vấn
Trang 2Nếu các khái niệm này là bí ẩn cho phần nhiều độc giả, thì đó là do chúng ta sống trong môitrường văn hóa mà những khái niệm cho các thế hệ bị cố ý che đi Về mặt này, tác phẩm “TwoCultures” của C.P Snow đang tồn tại, tốt và ở ngay nước Anh Và nếu bạn nghĩ rằng những khái niệmnày quá phức tạp để dạy cho trẻ nhỏ, thì đó là vì bạn chưa bao giờ biết tới những giáo viên tài năng vàsáng tạo đang thực hiện điều này Trên thực tế, nhiều độc giả Anh ở độ tuổi 30 sẽ biết tới đệ quy, ví dụ,
vì ngày xửa xưa nhiều trường học Anh đã dạy lập trình Logo, giúp trẻ em học cách chế tạo một con rùamáy để thực hiện các vận động phức tạp Nhưng cuối cùng, hầu hết các trường đều từ bỏ dạy Logo vàquay lại dạy trẻ sử dụng Microsoft Word
Nhân tiện, câu chuyện Logo cho thấy một minh họa về việc tại sao dạy trẻ viết các chươngtrình máy tính phải là một phần tất yếu trong bất kỳ chương trình khoa học máy tính mới Lý do là sẽ
không có cách nào tốt hơn để giúp một người hiểu các khái niệm như đệ quy hay thuật toán bằng cách
cho họ tự viết mã thực thi các khái niệm này Đó cũng là lý do tại sao câu thần chú thời thượng - “mã
là bộ chữ Latin mới” - lại khó hiểu đến vậy Điều này có nghĩa rằng lập trình là một kỹ năng phù hợpnhưng lại không hữu ích và chỉ là tùy chọn Bộ chữ Latin là loại ngôn ngữ thú vị, nhưng đã chết; mãmáy tính là ngôn ngữ của cuộc sống kết nối mạng - và đồng thời là của sự tái tạo di truyền
Một quan niệm sai nữa đang lan tràn trong cuộc tranh luận về chương trình mới là lý do cănbản cho điều này là kinh tế: ta cần nhiều trẻ em hiểu điều này vì nền công nghiệp “sáng tạo” đang cầnnguồn nhân lực có thể viết mã, từ đó suy ra rằng các trường đại học cần nguồn sinh viên nhất địnhthành thạo máy tính Đó là sự thật, hiển nhiên, nhưng không phải là lý do chính mà ta cần phải tạo rathay đổi tận gốc đối với hệ thống giáo dục
Lời biện hộ lớn nhất cho sự thay đổi không phải là kinh tế mà là đạo đức Đó là nếu ta khônghành động ngay bây giờ, ta sẽ là lừa đảo trẻ con Chúng sống trong thế giới được hình thành nhờ cácnhà vật lý, hóa học, sinh học và lịch sử, và do vậy ta muốn chúng hiểu những thứ này Nhưng thế giớicủa chúng cũng sẽ được định hình nhờ điện toán mạng và nếu chúng không có hiểu biết sâu hơn vềnhững khái niệm này thì chúng sẽ tê liệt về tri thức
Chúng sẽ lớn lên như những người thụ động sử dụng các thiết bị và sản phẩm đóng, dẫn tớicuộc sống bị bao bọc bởi công nghệ do một số người ưu tú tạo ra từ các công ty khổng lồ như Google,Facebook và những công ty giống như vậy Thực vậy, ta sẽ nuôi lớn các thế hệ chuột cảnh trongchuồng có bánh xe lấp lánh do Mark Zuckerberg và đồng nghiệp anh ta tạo ra
Đó có phải là điều ta muốn không? Đương nhiên là không Vậy thì bắt tay vào thôi
Trang 3I LOGO LÀ GÌ?
1 XUẤT XỨ
Bắt đầu từ thế hệ 3 của máy tính, vào giữa thập kỷ 60, ý tưởng về “máy tính thông minh” đãnảy nở và ngành trí tuệ nhân tạo đã hình thành Tại Viện công nghệ MIT, nơi đang có dự án v ề trí tuệnhân tạo, đã ra đời ngôn ngữ lập trình LISP, một ngôn ngữ chuyên xử lý danh sách, nghĩa là có tính phi
số, phục vụ cho việc nghiên cứu trí tuệ nhân tạo, đã ra đời ngôn ngữ lập trình LISP, một ngôn ngữchuyên xử lý danh sách, nghĩa là có tính phi số, phục vụ cho việc nghiên cứu trí tuệ nhân tạo Cũng tại
đó, nhà tin học sư phạm S.Papert lại nảy ý muốn nghiên cứu sự hình thành trí tuệ trẻ em Từ 1967 ông
đã cùng J.Piaget hợp tác nghiên cứu J.Piaget là nhà tâm lý nổi tiếng, từ thập kỷ 20 đã đưa ra giả thuyết
về trí tuệ có cấu trúc thao tác và đã minh họa hệ thống thao tác đó bằng logic toán Sự thành công củaMTĐT, một công cụ của logic hình thức, đã biện hộ ý tưởng của J.Piaget Sự hợp tác của hai nhà báchọc thuộc hai lĩnh vực khác nhau vì sự ưu ái tuổi thơ đã đưa đến sự ra đời LOGO, một ngôn ngữ lậptrình được sự công nhận quốc tế là ngôn ngữ sư phạm dành cho trẻ em Theo cách chiết tự thì LOGO
có bao hàm hai nhân tố đặc trưng: LOGOS (ý niệm trí tuệ) và LISP (truyền thống kế thừa) Nghĩa làLOGO tự coi là xuất thân từ LIPS vì trí tuệ trẻ em Chịu ảnh hưởng sâu sắc tư tưởng kiến thiết củaJ.Piaget, S Papert đã thiết kế LOGO như môi trường tin học có “các - thực - thể - để - cùng - tư - duy”nhằm giúp các em phát triển trí tuệ trong quá trình giao tiếp với LOGO Cụ thể trong môi trường ấycác em có thể “chơi mà học và học như chơi”, phù hợp với sự phát triển tự nhiên của tâm sinh lý trẻem
Thành công của các thử nghiệm ban đầu trong thập kỷ 70 đã cho phép S.Papert đưa ra nhậnxét: “Ngày nay trong giáo dục khi trẻ em được đặt đối diện với máy tính thì y như rằng để thử thách,
để giải các bài toán có cỡ, để nhồi nhét thông tin Ấy là máy chương trình hóa các em, không hơnkhông kém Với môi trường LOGO thì tình thế sẽ đảo ngược: chính các em chế ngự máy, chươngtrình hóa máy” Quan điểm sư phạm và giàu tính nhân hậu ấy được sự tán đồng rộng rãi nên từ nhữngnăm 80 cùng với sự phổ cập máy vi tính, LOGO đã đi vào phục vụ đại trà các em học sinh, từ tuổi mẫugiáo trở đi, tại nhiều nước có nên công nghiệp tin học phát triển Để các em có thể giao tiếp với máynhư thể với người thân Từ 1996 LOGO theo các nhà tin học sư phạm Pháp đến Việt Nam
2 CÁC ĐẶC TRƯNG CƠ BẢN CỦA LOGO
2.1 Đơn giản Đơn giản được hiểu theo nghĩa ai cũng có thể sử dụng được ngay và sẽ phát
triển dần theo sở thích, nhu cầu và mức độ hiểu biết Điều này bảo đảm yếu tố chủ động, tích cực vàtiềm năng sáng tạo của người dùng
2.2 Trực quan Bằng con Rùa, một rôbốt trên màn hình, và bằng các thông báo ngắn gọn trong
chế độ thông dịch, LOGO vừa trực quan hóa ý tưởng người dùng vừa bám sát nâng giấc trong từngbước đi chập chững của từng người Mặt khác nó cũng tạo những cơ chế để có thể rà soát, khảo sát và
mô phỏng, ngay cả với các tình huống phức tạp nhất Cụ thể, người dùng có thể làm chậm lại quá trìnhchế biến và cho hiển thị tất cả những thông tin cần quan sát, như thể quay chậm để xác minh các phagay cấn trên sân cỏ Nói chung, LOGO có thể giúp cho mỗi người từ tư duy hình tượng đi dần vào tưduy trừu tượng, từ biểu tượng đi vào khái niệm, phán đoán và suy lý Đó là "chơi mà học và học nhưchơi" phù hợp với lứa tuổi đang phát triển, giàu tưởng tượng, năng động nhưng cũng rất cần sự hài hòacủa các em bé
2.3 Mở LOGO được xây dựng từ bộ từ vựng nguyên thủy, tức từ một số từ khóa ban đầu Số
từ khóa này hoàn toàn có thể được bổ sung, tức bộ từ vựng có thể được mở rộng Không chỉ mở rộng
bộ từ vựng mà ý tưởng tạo ra các vi thế giới của LOGO sẽ tạo nên những phần mềm mở, có thể môphỏng thế giới hiện thực lẫn thế giới viễn tưởng Như vậy nguyên lý mở của LOGO có dụng ý trìnhbày một quan điểm về tương lai Chúng ta là những người đương thời, chưa ý thức được đầy đủ tươnglai mà chỉ hình dung nó, cảm thấy nó Vậy ta hãy đặt vào tay thế hệ trẻ một công cụ có thể tự phác họathiết kế tương lai
2.4 Hiện đại Tuy rất giản đơn nhưng LOGO vẫn chứa một tiềm năng hiện đại lớn Trước hết
đó là cách để nó tồn tại, vì tin học phát triển như vũ báo Yếu tố hiện đại ấy thể hiện ở năng lực xử lýdanh sách và kỹ thuật đệ quy cùng tính cấu trúc của nó Là ngôn ngữ có cấu trúc nhưng với cách cấutrúc môđun theo nguyên lý "phân tán tuyệt đối", LOGO thích ứng được với mọi trình độ lập trình, mở
Trang 4được coi như một phần mềm dạy học và là phần mềm mở, một ngôn ngữ sư phạm Ở đây chúng tachưa đi vào các khía cạnh tinh tế nhưng cũng gắng minh họa các đường nét có tính phác thảo toàncảnh.
3 TÌM HIỂU CÁC THÀNH PHẦN CƠ BẢN CỦA LOGO
3.1 Bộ chữ viết và bộ từ vựng LOGO
LOGO được xây dựng trên bộ ký tự bao gồm:
+ Bộ chữ cái latinh: 26 chữ cái hoa A, B, Z và 26 chữ cái thường a, b, , z
+ Bộ chữ số thập phân : 0, 1 , 9
+ Bộ các ký hiệu toán học thông dụng : +, -, *, / , =, >, <, ()
+ Bộ các ký hiệu đặc biệt
+ Dấu gạch nối và dấu cách
Bộ từ vựng LOGO có 207 từ gốc nguyên thủy và 40 từ gốc tiện ích Tất cả chúng được liệt kê,giải trình chức năng và cách sử dụng trong bộ ba LOGO
3.2 Văn phạm LOGO
Văn phạm là hệ thống quy tắc cấu tạo các thành phần của ngôn ngữ mà ở đây chủ yếu là cấutạo từ, từ gốc và câu để phục vụ cho việc lập trình Văn phạm nào cũng phải quan tâm đ ến cả ba mặtcủa các thành phần trong ngôn ngữ là cú pháp, ngữ nghĩa và thực dụng Với LOGO, tính đơ n giảnđược thể hiện ở chỗ nó có văn phạm rất gần với văn phạm của ngôn ngữ tự nhiên và có cố gắng ít tạo
ra các tìn huống nhân tạo để người sử dụng bằng vốn ngôn ngữ tự nhiên có thể tiếp nhận nó ngay Đểlàm điều đó, văn phạm LOGO đưa ra một số định nghĩa tối thiểu
3.3 Định nghĩa đối tượng LOGO.
LOGO có hai đối tượng là từ và danh sách
a) Từ: Từ là dãy ký tự viết liền nhau, không được dài quá 248 ký tự Từ chỉ có một ký tự gọi là
ký tự Từ không có ký tự nào gọi là từ rỗng Từ cũng được chia thành 3 loại chính, được đánh dấu đểnhận diện:
+ Từ gốc được quy định bởi ngôn ngữ LOGO
+ Từ là từ bất kỳ được quy định phải viết với dấu nháy kép (“) ở đầu Ví dụ ta muốn đưa thôngtin là từ “MSW logo” vào chương trình chạy thì phải gõ: “MSW logo tức là gõ dấu nháy kép trước rồimới gõ “MSW logo”
+ Từ là một tên (tức là một biến), tức khi từ được dùng để đại diện cho sự vật nào đó Ví dụ, sựvật ấy là hoa hồng nhưng muốn được gọi là HH thì HH là đại diện hay là tên Để máy hiểu từ đó làmột biến thì nó phải được đặt sau dấu hai chấm (:), cụ thể phải viết: :HH thì chương trình mới nhậndiện được Việc này sẽ nói rõ ở các ví dụ cụ thể trong các chương sau
b Danh sách: danh sách được hiều là một thực thể gồm nhiều thành phần đặt trong ngoặc
vuông, với các thành phần đó có thể là các ký tự, từ hay danh sách thành phần
Ví dụ ta có các kiểu danh sách sau:
[A B C D E] : danh sách chỉ gồm các ký tự (các ký tự viết rời nhau)
[A B [C D E]] : danh sách gồm ký tự và danh sách thành phần
[[A B][C D E]] : danh sách gồm hai danh sách thành phần
[A B ANH EM] : danh sách gồm ký tự và từ
[A [B C D] ANH] : danh sách gồm ký tự, từ và danh sách thành phần
Trong danh sách các ký tự và từ viết không có dấu nháy kép ở đầu Số phần tử không hạn chếmiễn không quá 248 ký tự, kể cả dấu cách Danh sách không có thành phần nào là danh sách rỗng và
trí xuất phát)
Trang 5trí hiện tại
trước khi thực hiện lệnh tiếptheo (m/100 giây)
14 Setpensize Setpensize [k k] làm cho nét bút lớn hơn đến độ
rộng k, để xem dễ dàng hơn!
kích thước bút mặc định là [11]
15 Label Label[MSWLogo] Viết tại vị trí rùa đang đứng
dòng chữ “MSWLogo” theohướng của rùa
17 ARoundCircle ARC ARC k n Vẽ cung tròn k độ bán kính n
và vị trí rùa đứng là tâm vào phía bên trái sau lưng rùa, hướng rùa không thay đổi
19 Repeat Repeat n[ … ] Lặp lại n lần các lệnh trong
ngoặc vuông
số dư của phép chia số m cho
số n (m, n là các số tự nhiênkhác 0)
Ellipse
Ví dụ: repeat
72[ellipse 250 150 rr
5 fd 5]
ellipse m n Vẽ elip trục ngang m trục đứng
n (không thay đổi vị trí rùa)
Trang 6Mở đầu bao giờ cũng bắt đầu bằng từ gốc TO Sau TO là tên thủ tục Tên thủ tục do người lậptrình đặt bằng một từ Đó là từ không có dấu nháy kép ở đầu Sau tên thủ tục có thể có dữ liệu của tên
ấy Nếu có thì dữ liệu cũng được đặc trưng bằng tên, tức bằng một từ có dấu (:) ở đầu Có thể có mộthay nhiều dữ liệu Sau dữ liệu là sang dòng
Thân thủ tục bao gồm các câu lệnh Các câu lệnh sẽ xác lập nội dung và chức năng của thủ tục.
Thân có thể chứa nhiều câu, miễn mỗi câu không quá 248 ký tự, kể cả dấu cách Khi thân được xác lậpxong phải sang dòng
Kết thúc chỉ gồm mỗi từ gốc END đứng ở dầu dòng Đó là quy định nghiêm ngặt.
Ví dụ ta muốn vẽ một hình vuông ta có thể thực hiện lần lượt từng lệnh vào cửa sổ lệnh nhưsau:
TO và END là hai từ gốc đặc biệt, chỉ dùng vào việc mở đầu và kết thúc thủ tục
FD và RT (ý nghĩa: rùa bước tới và rùa quay phải) là hai từ gốc, sẽ điều khiển Rùa vẽ nên hìnhvuông, tức xác lập nội dung và chức năng cho thủ tục HINHVUONG 100 và 90 là dữ liệu của FD và
RT Khi ta viết FD 100 hay RT 90 là viết theo cú pháp đã quy định là FD n, RT m, với n, m là các một
số Tên HINHVUONG do ta đặt nhưng phải tuân thủ một số quy định sau:
* Tên thủ tục phải là một từ, ví dụ ta không thể viết HINHVUONG thành HINH VUONG,nghĩa là thành hai từ
* Tên thủ tục không được trùng với tên từ gốc Nếu trùng chương trình sẽ thông báo lỗi (ở chế
Với thủ tục HINHVUONG trên có thẻ dùng tham số như sau:
Mở đầu TO DAGIAC :canh :goc
Thân REPEAT :goc[FD :canh RT 360/:goc]
4 Sử dụng biến trong MSWLogo:
4.1 Khái niệm về biến:
Biến là một đại lượng có thể thay đổi giá trị của nó
Tại sao 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ổngquát của dạng bài toán Sau này khi sử dụng thành thạo, ta sẽ còn nhiều trường hợp khác cũng phảidùng đến biến
Trang 7Trong bài toán tính số kẹo kể trên, các biến a, b và c sẽ đưa vào từ bên ngoài để chương trìnhthực hiện tính toán, khi đó ta sẽ khai báo các biến này cùng dòng với dòng ghi tên thủ tục bằng cáchghép dấu hai chấm(:) ngay trước tên biến:
Ví dụ: Bạn Mai có a cái kẹo, Mai cho Minh b cái, sau đó Mai lại ăn hết c cái Hỏi Mai còn lạimấy cái kẹo?(a ≥ b + c)
2/ Đối với các biến nhận giá trị trong khi chạy thủ tục:
Trường hợp các biến nhận giá trị từ một biểu thức có trong thủ tục, ta khai báo theo cú phápsau:
Make “<Tên _biến> <biểu _thức>
Cần phân biệt: Nếu biến nhận giá trị từ bên ngoài thì dùng dấu hai chấm (:) ngay trước tênbiến, đối với biến nhận giá trị từ một biểu thức trong thủ tục sẽ dùng dấu nháy kép (“) ngay trước tênbiến
Loại biến này thường sử dụng khi giải toán bằng phương pháp dùng ký hiệu thay thế
Ví dụ: Một hình chữ nhật có chu vi là M cm Biết rằng chiều rộng bằng
4
3 chiều dài Hãy tínhdiện tích của hình chữ nhật đó
Ta gọi a và b là chiều dài và chiều rộng của hình chữ nhật, ta có:
b = M - aGọi S là diện tích của hình chữ nhật, ta có S = a × b.
Ta viết thủ tục như sau:
LÖnh 2
§ iÒu kiÖn
Nếu điều kiện (logic) được thỏa mãn thì các lệnh 1, 2,…
lần lượt được thực hiện còn nếu không thỏa thì thôikhông làm gì cả
Cú pháp: IF <điều_kiện> [Lệnh 1, Lệnh 2, …]
Câu lệnh này được MSWLogo thực hiện như sau:
Nếu điều kiện Đúng thì lệnh 1, 2, … được thực hiện, còn nếu điều kiện Sai thì không làm gì cả.
Trang 8Ví dụ: Hãy vẽ một đa giác có N cạnh, chiều dài mỗi cạnh là M bước rùa với số cạnh lớn nhất là 10.
To vedagiac :M :N
CS
IF :N < 11 [DAGIAC :M :N]
End
2) Gộp nhiều điều kiện:
Hãy xem lại ví dụ trên, ta nhận thấy: Một hình đa giác phải có ít nhất là 3 cạnh (gọi là tamgiác) Như vậy với số cạnh là N được đưa từ ngoài vào, ngoài việc kiểm tra điều kiện không vượt quá
10, ta còn phải kiểm tra xem số đó có lớn hơn 2 hay không? Trong MSWLogo có sử dụng một số hàm
để gộp các điều kiện như sau:
a) Hàm And
Cú pháp: And (điều_kiện 1) (điều_kiện 2)…
Hàm sẽ xét các điều kiện và chỉ kết quả Đúng khi tất cả các điều kiện đều thỏa mãn (Đúng) Chỉ cần một điều kiện không thỏa mãn (Sai) thì hàm sẽ cho kết quả Sai.
Như vậy, ví dụ trên phải sửa lại chính xác như sau:
Ngược lại với hàm And, hàm sẽ xét các điều kiện và cho kết quả Đúng nếu chỉ cần 1 điều kiện
thỏa mãn (Đúng) Chỉ khi nào tất cả các điều kiện đều không thỏa mãn (Sai) thì hàm sẽ cho kết quả
Sai.
3) Về so sánh trong các biểu thức logic:
Về cơ bản MSWLogo vẫn có các phép so sánh như các ngôn ngữ lập trình khác như so sánhbằng (=), so sánh lớn hơn (>), so sánh nhỏ hơn (<),…
Riêng phép so sánh tuy nhiên, do phần mềm sử dụng mã nguồn mở nên mỗi nhà phát triển lạitheo một hướng khác nhau Cụ thể là phép so sánh “Khác”
Với FMS Logo, phép so sánh “Khác” có thể dùng cặp toán tử “nhỏ lớn” (<>), tuy nhiên trongMSWLogo lại không cho dùng toán tử này
Để giải quyết vấn đề, ta dùng toán tử “=” hoặc hàm “Bằng” – EQUALP
a) Cú pháp: NOT <A> = <B> (trong đó <A>, <B> là hằng hoặc biến)
Ý nghĩa: Nếu đẳng thức A = B là sai thì cho kết quả TRUE ngược lại cho kết quả FALSE
Ví dụ: Not 1 = 2 thì sẽ cho kết quả là: “You don't say what to do with true”.
Not 1 = 1 thì sẽ cho kết quả là: “You don't say what to do with false”.
Show Not 1 = 2 sẽ cho kết quả là: “true”.
Show Not 1 = 1 sẽ cho kết quả là: “false”.
b) Cú pháp: EQUALP <A> <B> (trong đó <A>, <B> là hằng hoặc biến)
Ý nghĩa: Hàm trả về kết quả là TRUE nếu <A> = <B> đúng, ngược lại kết quả là FALSE.Nên cú pháp so sánh khác nhau là: NOT EQUALP <A> <B>
Ý nghĩa: Hàm trả về kết quả là TRUE nếu <A> khác <B> đúng, ngược lại kết quả làFALSE
Ví dụ: Not Equalp 1 2 thì sẽ cho kết quả là: “You don't say what to do with true”.
Not Equalp 1 1 thì sẽ cho kết quả là: “You don't say what to do with false”.
Show Not Equalp 1 2 thì sẽ cho kết quả là: “true”.
Show Not Equalp 1 1 thì sẽ cho kết quả là: “false”.
3) Câu lệnh Ifelse:
Trang 9§
Lªnh aLÖnh b
Câu lệnh này được MSWLogo thực hiện như sau:
Nếu điều kiện Đúng thì thực hiện lệnh 1, 2,… còn nếu
điều kiện Sai thì thực hiện lệnh a, b, …
Ví dụ: Hãy vẽ một đa giác có N cạnh, chiều dài mỗi cạnh là M bước rùa với số cạnh lớn nhất là 10
to vedagiac :M :N
IFELSE and (:N < 11) (:N >2) [DAGIAC :M :N]
[LABEL [so canh khong phu hop]]
Cách thực hiện vòng lặp như sau: MSWLogo cho thực hiện N lần dãy lệnh lệnh1 lênh2 …
Ví dụ 1: vẽ một đa giác đều có số cạnh và độ dài mỗi cạnh do người chạy chương trình ra lệnh
to DG_NcanhM :M :Nrepeat :N[FD :M RT 360/:N]
end
Rõ ràng sô lần lặp được biết trước đó là N
Ví du 2: Giải đề thi tin học trẻ toàn quốc năm 2015
Câu 1 (20 điểm): Biển báo
Em viết các câu lệnh trong chương trình MSWLogo
để vẽ hình 1 – Biển báo giao thông “cấm dừng và đổ xe”
Biết rằng bán kính vòng tròn ngoài là 110 đơn vị, bán kính
vòng tròn trong là 90 đơn vị, độ dày đường chéo là 10 đơn
vị Tô màu như quy định trong biển báo giao thông
Em viết các câu lệnh trong chương trình MSWLogo
để vẽ hình 2 Biết rằng Hình 2 được tạo thành từ các hình
vuông và tam giác đều có kích thước cạnh là 100 đơn vị
Trang 10Một bể nước có thể tích 2015 lít và 2 thùng đựng nước có thể tích là 31 lít và 8 lít Chỉ có haithao 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 8 lít đổ vào bể
Em sử dụng các câu lệnh của MSWLogo để tính và đưa ra đúng số cách sử dụng 2 thao tác trên
để làm đầy bể nước Hai cách được gọi là khác nhau nếu tổng số thao tác sử dụng khác nhau
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 một công việc Trong câu lệnh này, số bước lặp đã đượcbiết trước và MSWLogo sẽ thực hiện đúng số bước đã chỉ định
Ví dụ 1: Cần tính tổng S = 1 + 2 + 3 + 4 + 5 + …+ N
Ta có thể giải quyết bài toán trên với 2 biến S và A và thực hiện như sau: Đầu tiên, ta cho S = 0
và A = 1; thực hiện lặp N lần với hai công việc là cộng dồn S = S + A và cho tăng A một đơn vị: A = A+ 1
Ví dụ 2: Tính tổng S = 3 + 7 + 11 + 15 + 19 + … cho đến khi số hạng cuối cùng gần bằng 100nhất
Cũng giống như bài trên, ta có thể giải quyết với 2 biến là S và A, đầu tiên ta cho S=0 và A=3;sau đó thực hiện lặp với hai việc là cộng dồn S = S + A và tăng A = A + 4 (vì khoảng cách giữa các số
hạng là 4) Vấn đề đặt ra là: Số lần lặp là bao nhiêu ?
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ị là <giá trị đầu>
- [Câu lệnh] được thực hiện khi <biến chạy> còn nhỏ hơn hoặc bằng giá trị cuối, mỗi lần thựchiện câu lệnh <biến chạy> tăng lên <giá trị tăng>
Ví dụ:
Trang 111/Vẽ 6 hình vuông lồng nhau như hình vẽ bên có kích thước
2/ Vẽ hình tái tim với cạnh ngắn nhất là 20, cạnh dài nhất
200, mỗi cạnh tăng, giảm lần lượt là 10, góc giữa các cạnh
2.2 Câu lệnh While:
Cú Pháp: While [điều_kiện] [lệnh1 lênh2 …]
Trang 12mản thì lệnh1 lênh2 … tiếp tục được thực hiện… cứ như thế cho đến khi [điều_kiện] không được thỏa
mản nửa (tức là Sai) thì dừng lại
Ví dụ 2: Tính tổng S=3+7+11+15+19+…… cho đến khi số hạng cuối cùng gần bằng 100 nhất.Cũng giống như bài toán trên, ta có thể giải quyết với 2 biến là S và A, đầu tiên ta cho S=0 vàA=3; sau đó sẽ thực hiện lặp với hai việc là cộng dồn S=S+A và tăng A=A+4 (vì khoảng cách giữa các
VI.Một số bài toán:
Bài 1: Giải bài toán cổ:
Nếu có 1 con gà và 35 con chó thì số chân là 142>100 nên loại
Nếu có 2 con gà và 34 con chó thì số chân là 140 >200 nên loại
…
Cứ như thế nếu số chân đúng bằng 100 thì ta chọn phương án đó
Cách giải này dễ, nhưng quá dài và mất nhiều thời gian Tuy nhiên, đối với máy tính, việc “lấycần cù bù khả năng” là một ưu thế, nên nếu sử dụng phương pháp này sẽ thuận lợi hơn cho người viếtchương trình
Gọi số gà là x, số chó là y, bắt đầu với x = 1 và y = 35, sau đó lần lượt kiểm tra số chân, khi nàotổng số chân đúng bằng 100 thì dừng lại
to gacho
CS
Make "x 1
Make "y 35
Make "chan 2*:x + 4*:y
While [Not :chan = 100] [make "x :x + 1 make "y :y - 1 make "chan 2* :x + 4 * :y]
RT 90 Label [so ga la:] PU FD 85 Label :x FD 50 Label [so cho la:] FD 90 Label :y
Trang 13Trong giỏ vừa thỏ vừa gà
100 cái cẳng, 43 cái đầuHỏi có bao nhiêu gà, bao nhiêu thỏ ?2/ Chuồn chuồn và nhện:
Chuồn chuồn và Nhện hợp sức để chống lại lão Tò vò độc ác Một hôm, chúng tập trung lại đểcùng tấn công Tò vò Mới đầu, chúng đồng loạt bò trên mặt đất và lão Tò vò đếm được tất cả có 200cái chân Sau đó chúng thay đổi chiến thuật, Nhện thì bò dưới đất, còn Chuồn chuồn thì bay, con bòlàm lão Tò vò hoa mắt và chỉ đếm được tất cả có 28 cái đầu, không biết mỗi loại có mấy con Em hãytính giúp xem có bao nhiêu Nhện và bao nhiêu Chuồn chuồn cùng tấn công lão Tò vò, biết rằng 1 connhện có 8 chân, 1 con chuồn chuồn có 6 chân
3/ Giải bài toán cổ:
Trăm trâu trăm cỏTrâu đứng ăn 5Trâu nằm ăn 3
5/ Cho dãy số 5, 8, 11, … trong đó số cuối cùng không lớn hơn 64000 Hãy tính trung bìnhcộng của các số có trong dãy
SetPenSize[n n] Chỉnh độ rộng của nét vẽ SetPenSize[5 5]
muốn quay về chế độ bình thường
dùng Pennormal
màu nền báo trước bởi Setfloodcolor [r g b]
Setfloodcolor [255 0 255] Fill
ARC a r Vẽ cung tròn a độ với bán kính r, rùa
đứng tại tâm cung tròn
ARC 90 30 Vẽ cung tròn 90 độvới bán kính 30
ARC2 a r Vẽ cung tròn a độ bán kính r rùa
chạy theo vòng cung
Trang 14Wait n Chờ n/60 giây Wait 60 chờ 1 giây.
BÀI TẬP DÙNG LỆNH MSWLOGO VẼ HÌNH
Hãy dùng các lệnh của MSWLogo để vẽ các hình sau:
Bài 1 Em hãy viết các câu lệnh trong chương trình MSWLogo để vẽ hình như bên cạnh và lưu lại với tên file
Trang 15Repeat 6 [Repeat 3 [FD 50 RT 360/3] RT 360/6]
HT
Bài 5 Em hãy viết các câu lệnh trong chương trình MSWLogo để vẽ hình như Hình 1 sau đó viết lệnh để xếp
các hình tam giác ở hình 1 xếp thành hình 2 và lưu lại với tên file bai5.doc gồm:
Trang 22- Các câu lệnh của MSWLogo theo trình tự đã vẽ.
Trang 24- Các câu lệnh của MSWLogo theo trình tự đã vẽ.
Perspective Repeat 72 [Circle 100 rr 5]
HT
perspective - Chuyển sang đồ hoạ 3D.
RR - rightroll - Cuộn đi một cung tròn độ (72 × 5 = 360) – Circle:
Trang 25HT REPEAT 30 [FD 10 Repeat 20[fd 5 RT 18] Repeat 20[FD 2 RT 18] LT 12]
Bài 42: Em hãy viết các câu lệnh trong chương trình MSWLogo để vẽ hình như bên cạnh và lưu lại với tên file
Trang 26Bài 48: Một người cha có một miếng đất hình chữ nhật có chiều rộng 200 m; chiều dài 240 m muốn chia cho 5
người con, mỗi người đều được chia một miếng đất bằng nhau và giống nhau Hãy viết các câu lệnh trong
chương trình MSWLogo để vẽ kết quả chia đó Kết quả lưu lại với tên file chiadat doc gồm:
Trang 27Bài 52: Một người cha có một miếng đất hình chữ nhật có chiều rộng 150 m; chiều dài 180 m muốn chia cho 5
người con, mỗi người đều được chia một miếng đất bằng nhau và giống nhau Hãy viết các câu lệnh trong chương trình MSWLogo để vẽ kết quả chia đó và ghép 5 miếng đất đó thành hính 2 Kết quả lưu lại với tên file
Trang 28Bài 53: Một chiếc khăn hình chữ nhật có chiều dài 200 đơn vị, chiều
Setpencolor 4 pd Repeat 12 [Rt 30 Repeat 2[FD 20 RT 45 FD 20 RT 135]
Bài 54: Em viết các câu lệnh trong chương trình MSWLogo
để vẽ hình 2 Biết rằng Hình 2 được tạo thành từ các hình
vuông và tam giác đều có kích thước cạnh là 100 đơn vị
(Đề thi Quốc gia năm 2015)
chiều dài, nền đỏ, ở giữa có ngôi sao vàng năm
cánh Tâm ngôi sao vàng đặt đúng tâm lá cờ
Khoảng cách tâm ngôi sao đến đầu cánh sao bằng
một phần năm chiều dài của lá cờ Một cánh sao
hướng rhawngr lên phía trên
Em hãy viết các câu lệnh trong chương trình
MSWLogo để vẻ một lá cờ Tổ quốc
Em hãy lưu kết quả trong tệp văn bản có tên