Đối tượng, mục đích Đối tượng của cuốn sách này: - Học sinh, cha mẹ học sinh, và bất kỳ ai muốn học hỏi tìm hiểu sâu hơn về ngôn ngữ lập trình Scratch theo hướng mong muốn thiết kế các
Trang 1Bùi Việt Hà
Hà Nội - 2017
Viết kịch bản và thiết kế nhân vật Đạo diễn toàn bộ chương trình Thiết kế hệ thống thông tin lõi
Sơ đồ thiết kế hệ thống
Trang 2Lời nói đầu
Các bạn đang có trên tay cuốn sách rất đặc biệt về lập trình Scratch Cuốn sách có tên THIẾT KẾ PHẦN MỀM VÀ TRÒ CHƠI GIÁO DỤC bằng ngôn ngữ lập trình Scratch Cuốn sách này là một phát triển cao hơn nữa của cuốn sách TỰ HỌC LẬP TRÌNH SCRATCH đã phát hành trước đây
Đối tượng, mục đích
Đối tượng của cuốn sách này:
- Học sinh, cha mẹ học sinh, và bất kỳ ai muốn học hỏi tìm hiểu sâu hơn về ngôn ngữ lập trình Scratch theo hướng mong muốn thiết kế các chương trình, phần mềm, trò chơi hoàn chỉnh phục vụ công việc của mình
- Giáo viên đang hoặc sẽ giảng dạy môn Tin học trong tương lai muốn tìm hiểu sâu hơn hướng ứng dụng lập trình Scratch để thiết kế, xây dựng các chương trình hoàn chỉnh Việc dùng một ngôn ngữ lập trình cụ thể để thiết kế các phần mềm hoàn chỉnh chính là hướng giáo dục STEM tốt nhất của môn Tin học
- Cuốn sách này cũng hướng đến các giáo viên các bộ môn khác hoặc chuyên gia trong lĩnh vực phần mềm, giáo dục STEM Có thể nói rằng Scratch, hay các ngôn ngữ lập trình trực quan là công cụ giáo dục STEM tốt nhất của môn Tin học và các môn học khác có liên quan
Môn Tin học trong tương lai sẽ như thế nào?
Môn Tin học của Việt Nam được xây dựng để đưa vào các trường THPT của Việt Nam vào đầu những năm 1990, nhưng phải đến đợt thay SGK sau 2000 môn Tin học mới chính thức được đưa vào cấp THPT Sau đó các chương trình tự chọn của Tin học và SGK dành cho THCS, Tiểu học dần được thiết lập Vào khoảng 2008, môn Tin học trong nhà trường Việt Nam đã hình thành đầy đủ với toàn bộ chương trình và SGK phủ kín từ lớp 3 đến 12 Tuy nhiên chương trình cho cấp Tiểu học
và THCS là tự chọn, điều đó có nghĩa là không phải tất cả HS đều được học môn học này liên tục từ lớp 3 đến lớp 12.
Có thể điểm qua toàn bộ các module kiến thức chính của môn Tin học trong trường phổ thông của Việt Nam cho đến hiện nay (2017) là:
Soạn thảo văn bản
Lập trình Pascal
CSDL Access
Môn Tin học ở các nước trên thế giới cùng có 1 lộ trình tương tự Có thể với tên gọi khác nhau nhưng nội dung thì cũng gần tương tự của Việt Nam chúng ta.
Trang 3Từ lâu các các chuyên gia giáo dục trên thế giới (ví dụ trong cuốn shutdown or restart [11]), đã phân tích sự tụt hậu của chương trình môn Tin học ở qui mô toàn
thế giới Có thể tóm tắt như sau:
- Rời rạc, không liên thông, không liền mạch
- Không đủ cơ sở vật chất hỗ trợ giảng dạy hoặc rất lạc hậu so với công nghệ hiện tại
- Không khoa học hoặc rất khó xác định tính khoa học chặt chẽ và mạch chính của kiến thức
- GV dạy không hứng thú, không có động lực để học thêm, đào sâu thêm kiến thức
- HS học nhàm chán vì kiến thức công nghệ bị lạc hậu với thực tế
- Riêng ở Việt Nam, môn Tin học trong suốt thời gian qua là môn phụ, không được thi ở bất cứ cấp học nào, vì vậy HS và GV càng không có động lực để học, dạy môn học này
Do vậy môn Tin học đứng trước thách thức rất lớn là cần thay đổi Nhưng thay đổi như thế nào? Theo hướng nào? Thay đổi để làm sao khắc phục được các khuyết điểm trên? Tất cả những vấn đề đó đều rất rất khó giải quyết Không phải các chuyên gia, các nhà giáo không biết những điều trên, họ biết hết nhưng lực bất tòng tâm Vấn đề lớn nhất của môn Tin học là công nghê liên quan đến CNTT,
ICT phát triển quá nhanh, trong khi kiến thức khoa học lõi của ngành này lại không thể hoặc chưa thể đưa xuống dạy cho học sinh từ nhỏ tuổi.
Một trong những tài liệu đầu tiên đề cập tới vấn đề này là cuốn sách Shutdown or restart mà tôi nhắc đến ở trên Cuốn này được viết năm 2012 và là tiền đề để
nước Anh là quốc gia đầu tiên thực hiện cuộc cách mạng thay đổi hoàn toàn môn Tin học trong nhà trường Trong cuốn sách đó, lần đầu tiên các chuyên gia đã phân loại chính xác 3 hướng nội dung chính của kiến thức Tin học trong trường học Việc phân loại này sẽ giúp các nhà quản lý và chuyên gia GD hiểu rõ hơn và định hướng được tương lai của môn học này Phân loại nội dung trong cuốn sách
đó như sau:
Toàn bộ kiến thức cần học của Tin học sẽ được chia làm 3 nhóm chính:
1 CS (computer science): Khoa học máy tính
DL - Học vấn số hóa phổ thông: Các kỹ năng cơ bản, tối thiểu cần có trong thời đại số hóa, ví dụ: Kỹ năng sử dụng chuột, gõ bàn phím; Soạn thảo văn bản, bảng tính, trình chiếu; Khai thác Internet Sử dụng thư điện tử và mạng xã hội
Theo tôi việc phân loại, định hướng kiến thức của môn Tin học trong nhà trường theo 3 nhóm như trên là một phát triển đột phá trong việc định hình lại môn Tin học trong nhà trường Trong chương trình Giáo dục Phổ thông mới của Bộ GD &
Trang 4ĐT sau 2018 rất may mắn đã kịp đưa các thay đổi này vào chương trình môn Tin học Môn Tin học sẽ là môn học có thay đổi lớn nhất trong Chương trình Giáo dục Phổ thông mới này
Như vậy, tương lai kiến thức môn Tin học trong trường phổ thông sẽ được phân tách thành 3 hướng kiến thức (phân môn) chính:
1 Khoa học máy tính (CS - Computer Science)
2 CNTT và ứng dụng (IT - Information Technology)
3 Kỹ năng số hóa phổ thông (DL - Digital Literacy)
Trong đó, chắc tất cả đều hiểu: phân môn Khoa học máy tính (CS) sẽ là quan
trọng nhất, đóng vai trò trung tâm, cốt lõi của môn Tin học
Trong 3 hướng này, IT và DL là những nội dung mà giáo viên Tin học hiện nay vẫn đang giảng dạy, do đó sẽ không có gì bỡ ngỡ Riêng hướng CS là hoàn toàn mới và hoàn toàn khác biệt so với hiện nay
Có thể tóm tắt hướng đi, phát triển tương lai của 3 nhóm, phân môn của môn Tin học trong bảng sau:
DL - Học vấn số hóa phổ
thông
IT - Ứng dụng CNTT và truyền thông
CS - Khoa học máy tính
Các kỹ năng cơ bản, tối
thiểu cần có trong thời đại
vụ yêu cầu Ví dụ đồ họa, phim, ảnh, ứng dụng trong các công việc đời sống
Lý thuyết và thực hành về xử
lý số, tư duy giải quyết vấn
đề, thiết lập chương trình, thuật toán, tư duy máy tính
Đây là những kỹ năng,
năng lực tối thiểu đơn giản
nhất cần có của mọi công
dân trong thế giới số hiện
2 Nhóm các ứng dụng
CNTT, truyền thông bên trong ICT
Lõi của môn học này là khái
niệm tư duy máy tính hay tư duy thuật toán Đây là kiến
thức cơ bản nằm bên dưới các khái niệm quen thuộc như phần mềm, phần cứng máy tính Đi cùng mô hình tư duy này là 1 tập hợp các kiến thức lõi, cơ bản về lý thuyết cũng như thực hành, kỹ năng, năng
Khoa học máy tính
CS
Kỹ năng số hóa phổ thông
Ứng dụng CNTT - truyền thông
Trang 5DL - Học vấn số hóa phổ
thông
IT - Ứng dụng CNTT và truyền thông
CS - Khoa học máy tính
lực phân tích, mô phỏng và giải quyết vấn đề
Trong tương lai, những
kiến thức này sẽ chỉ được
có nhóm 2 và sẽ định hướng cho nghề Tin học ứng dụng
Đây là định hướng chính, cơ bản nhất và quan trọng nhất của môn Tin học trong tương lai Chính hướng này sẽ quyết định để môn Tin học trở thành một môn học lõi, có tính khoa học chặt chẽ, có tính kế thừa và phát triển liên tục cho các bậc học tiếp theo
Có thể mô tả bảng trên theo sơ đồ sau:
Có thể so sánh 3 nhánh kiến thức của môn Tin học theo sơ đồ trên với các sơ dồ sau của môn Toán và Ngữ văn - tiếng Việt
CS và IT là 2 mảng kiến thức bắt buộc cần dạy cho HS ngay từ cấp Tiểu học,
ngay từ lớp 1 Hai nhóm kiến thức này là độc lập với nhau, gần như bổ sung cho nhau và có nhiều cách tiếp cận, định hướng khác nhau hoàn toàn Giáo viên Tin học cần hiểu rõ điều này khi giảng dạy Các chuyên gia thiết kế chương trình môn
DL - Học vấn số
hóa phổ thông
Kỹ năng tối thiểu
cho mỗi công dân
trong thời đại số
IT1- Ứng dụng trong các lĩnh vực ngoài ICT
IT2- Ứng dụng bên trong ICT
CS - Khoa học máy tính
Kiến thức lõi của Tin học:
xử lý số, cấu trúc dữ liệu, lập trình, tư duy máy tính, giải quyết vấn đề
Bảng chữ
cái, học đánh vần
Đọc hiểu
Ngữ pháp, ngôn ngữ, cảm thụ văn học
Trang 6Tin học cần vạch rõ những sự khác biệt này giữa 2 hướng trên trong quá trình thiết kế của mình
a) So sánh định hướng nội dung giữa CS và IT
CS - Khoa học máy tính IT - CNTT và ứng dụng
1- Là 1 tập hợp ý tưởng, quan niệm
thống nhất, chặt chẽ, logic của 1 môn
học Ví dụ các quan niệm như Chương
trình; Thuật toán; Cấu trúc dữ liệu;
Kiến trúc hệ thống
1- Là một tập hợp các ứng độc lập, rời rạc của CNTT trong các lĩnh vực khác nhau của đời sống
2- Là 1 tập hợp các kỹ thuật, kỹ năng
logic chặt chẽ, có phát triển từ thấp
đến cao Ví dụ kỹ thuật lập trình, thuật
toán, kiểm thử, sửa lỗi chương trình
2- Là 1 tập hợp các kỹ thuật, kỹ năng, năng lực có logic, phát triển từ thấp đến cao, tuy nhiên các kỹ năng này sẽ tập trung phục vụ ứng dụng chứ không phục vụ cho việc giải quyết vấn đề 3- Có 1 hệ thống tư duy độc lập, riêng
biệt của môn học Ví dụ tư duy máy
tính, tư duy thuật toán, tư duy giải
quyết vấn đề, …
3- Mỗi ứng dụng có những hệ thống tư duy riêng, rời rạc, không thống nhất
và không định hướng giải quyết vấn
đề
4- Có tính chất bền vững với thời gian
Chú ý rằng tính chất này không thể
đúng với IT vì CNTT phát triển rất
nhanh nên không có 1 hệ thống nào
bền vững với thời gian
4 - Hoàn toàn phụ thuộc vào công nghệ, dễ thay đổi với thời gian
5- Hệ thống lý thuyết độc lập với công
nghệ Ví dụ hệ thống các ngôn ngữ lập
trình, thuật toán, … đều độc lập với
kỹ thuật và công nghệ cụ thể
5 - Không có hệ thống lý thuyết độc lập, tất cả đều phụ thuộc vào công nghệ
b) So sánh mục đích, đối tượng và yêu cầu năng lực CS và IT
IT - CNTT và ứng dụng CS - Khoa học máy tính
Hệ thống máy
tính
Hệ thống máy tính được sử dụng như thế nào
Hệ thống máy tính được hoạt động, làm việc như thế nào
Đối tượng Con người là trung tâm của
Tập trung, quan tâm đến tư duy thuật toán, đến cách mà vấn đề có thể phân rã thành các bài toán, vấn đề nhỏ hơn
Trang 7IT - CNTT và ứng dụng CS - Khoa học máy tính
Sử dụng sản
phẩm
Nhấn mạnh việc lựa chọn, đánh giá sử dụng phần mềm trong công việc
Nhấn mạnh đến các nguyên lý
và kỹ thuật của hệ thống, phần mềm Lập trình luôn đóng vai trò trung tâm của các vấn đề quan tâm
Tư duy hệ
thống
Hệ thống ứng dụng CNTT phải hỗ trợ hoạt động của con người hay tự động hóa hoạt động của con người
Các ứng dụng thực tế cần được xây dựng thông qua các
tư duy của "máy tính" Thông qua tư duy này chúng ta sẽ hiểu được thế giới tự nhiên như bản chất nó có, nhưng theo cách tư duy riêng của chúng ta, thông qua máy tính
Định hướng
chung
Định hướng ứng dụng, nghề nghiệp
Định hướng chuyên nghiệp, hàn lâm
Tư duy máy tính: năng lực tư duy quan trọng nhất của
Khoa học máy tính
Xuất xứ của khái niệm Tư duy máy tính (computational thinking)
Người đầu tiên nhắc đến cụm từ này là Seymour Papert (29/2/1928 – 31/7/2016),
giáo sư toán đại học MIT đồng thời là tác giả của phần mềm và ngôn ngữ lập trình LOGO, trong khi muốn đưa việc giảng dạy thuật toán bằng phần mềm này cho học sinh nhỏ tuổi
“… the thought processes involved in formulating problems and their solutions
so that the solutions are represented in a form that can be effectively carried out
by an information-processing agent”
tạm dịch:
"… là các quá trình tư duy bao gồm cả mô tả và lời giải bài toán sao cho lời giải có thể được thực hiện một cách hiệu quả bởi các tác tử xử lý thông tin" Tác giả GS Jeannette Wing (hiện là phó chủ tịch Microsoft) là người đầu tiên
đưa ra định nghĩa của khái niệm này (tư duy máy tính), như sau:
“The solution can be carried out by a human or machine, or more generally, by combinations of humans and machines.”
tạm dịch:
"Lời giải phải (và có thể) được thực hiện bởi con người hoặc máy tính, hoặc tổng quát hơn, bởi sự kết hợp (đồng thời) con người và máy tính"
Như vậy tư duy máy tính chính là kỹ năng rất cơ bản để chúng ta có thể hiểu,
biết một cách có lý, logic về thế giới xung quanh dựa trên sức mạnh của máy tính Phân môn "Khoa học máy tính" là môn học dạy các nguyên tắc lý thuyết và thực hành cho mô hình tính toán máy tính và các ứng dụng của mô hình này Lõi của
môn học này là khái niệm tư duy máy tính hay tư duy thuật toán Đây là mô
hình tư duy lõi, cơ bản nằm bên dưới các khái niệm quen thuộc như phần mềm, phần cứng máy tính Mô hình tư duy này sẽ cung cấp các khung kiến thức để giải quyết các bài toán, vấn đề nảy sinh Đi cùng mô hình tư duy này là 1 tập hợp các
Trang 8kiến thức lõi, cơ bản về lý thuyết cũng như thực hành, kỹ năng, năng lực phân tích, mô phỏng và giải quyết vấn đề
Khoa học máy tính đi sâu vào tìm hiểu cách làm việc và vận hành của máy tính và các hệ thống máy tính, tìm hiểu các máy tính và chương trình được thiết kế và lập trình như thế nào Học sinh sẽ được tiếp cận với các hệ thống tính toán theo mọi
khía cạnh, có thể cần hoặc không cần có máy tính "Tư duy máy tính" sẽ có ảnh
hưởng đến cả các lĩnh vực khoa học khác như sinh học, hóa học, ngôn ngữ, tâm lý học, kinh tế và thống kê Cũng chính tư duy đó sẽ giúp học sinh có thể giải các bài toán, giải quyết vấn đề, thiết kế hệ thống, sản phẩm và hiểu được sức mạnh cũng như giới hạn, hạn chế của con người và máy móc Chính tư duy đó sẽ là yêu cầu
kỹ năng, năng lực mà mỗi học sinh cần hiểu và nắm bắt được dù chỉ một phần của
nó Nếu có các kỹ năng, tư duy, suy luận như "máy tính" thì các học sinh này sẽ hiểu tốt hơn và có nhiều cơ hội hơn trong việc tiếp thu các công nghệ "dựa trên máy tính" (computer-based technology) và sẽ được chuẩn bị tốt hơn khi trở thành công dân tương lai trong xã hội hiện đại
Khoa học máy tính là môn học thực hành, trong đó rất khuyến khích sự dũng cảm
và sáng tạo Học sinh được học các nguyên tắc, lý thuyết hàn lâm của môn học và khuyến khích ứng dụng sáng tạo để hiểu và mô phỏng được thế giới thực xung quanh các em Sự kết hợp hài hòa giữa lý thuyết, thực hành và sáng tạo sẽ làm cho môn học này trở nên vô cùng hấp dẫn, giúp các học sinh có thể tạo ra được các sản phẩm vừa có ích ("Nó chạy rồi!") vừa trí tuệ ("Nó quá đẹp!")
Tư duy máy tính ở đây cần được hiểu là nói về khả năng con người có thể làm,
chứ không phải máy tính có thể làm Ví dụ khi nhắc đến tư duy máy tính người ta thường nhắc đến các khả năng suy nghĩ và làm việc logic, có tính (tối ưu) thuật toán, có thể lặp lại và có thể trừu tượng hóa
Trong mô hình phân môn Khoa học máy tính của Tin học, tư duy máy tính cần được trang bị cho học sinh ngay từ cấp Tiểu học
Các năng lực, kỹ năng cơ bản của tư duy máy tính bao gồm Trừu tượng hóa và Lập trình
Tin học và vai trò của các ngôn ngữ lập trinh trực quan
Chúng ta cùng xem lại các mốc sự kiện công nghệ quan trọng với môn Tin học và ngành CNTT, ICT nói chung
1945 Ra đời máy tính điện tử, ra đời ngành CNTT, khoa học máy tính
1970x Xuất hiện các máy tính mainframe, nhỏ hơn nhiều so với những chiếc máy tính thế hệ đầu tiên Ngành Khoa học máy tính, CNTT chính thức được hình thành và giảng dạy trong các trường đại học
1980 Máy tính cá nhân (PC) ra đời, đưa các ứng dụng của CNTT đến từng gia đình Lần đầu tiên môn Tin học (chỉ bao gồm học các ứng dụng) được đưa xuống nhà trường cho học sinh các lớp cuối cấp
1990-2000 Bùng nổ Internet các ứng dụng mạng trên qui mô toàn cầu Môn Tin học được đưa xuống cấp 1, nhưng chỉ dừng lại ở việc học các ứng dụng cụ thể, rời rạc
2005-7 Xuất hiện điện thoại thông minh, sau đó là các ứng ụng IoT, len lỏi vào khắp các ngành công nghiệp và dịch vụ Xuất hiện các khoa học mới như tự động hóa, khoa học dữ liệu, trí tuệ nhân tạo có ứng dụng cụ thể hàng ngày CMCN 4.0 xuất hiện
Trang 92010-2016 Xuất hiện các ngôn ngữ lập trình trực quan, lập trình kéo thả, ví dụ Scratch Cơ hội để đưa phân môn Khoa học máy tính xuống dạy cho học sinh từ cấp Tiểu học
Như vậy Ngôn ngữ lập trình trực quan, ví dụ như Scratch, đóng vai trò vô cùng quan trọng trong sự phát triển của môn Tin học Có thể so sánh đây là 1 cuộc cách mạng lớn về giáo dục, lần đầu tiên, học sinh có thể học lập trình, tư duy máy tính, thuật toán, khoa học máy tính ngay từ lớp 1
Scratch và giáo dục STEM
Gần đây, cùng với từ khóa CMCN 4.0, STEM cũng trở thành 1 cụm từ rất hot Nhà nhà nói STEM, người người nói STEM
Vậy STEM là gì? nó có phải là một môn học? hay một phương pháp giảng dạy mới? hay là một công nghệ giáo dục mới của thế giới?
Câu trả lời là không phải như vậy STEM không phải là môn học, cũng không
phải là một phương pháp giảng dạy, cũng không phải là một công nghệ gì mới STEM là 4 chữ cái đầu của các từ Kỹ nghệ (Engineering), Toán học
(Mathematics), Khoa học (Science) và Công nghệ (Technology)
Bản thân STEM được các nhà khoa học và giáo dục đưa ra chỉ để muốn nhấn mạnh đến tầm quan trọng đặc biệt của 4 chuyên ngành trên trong sự phát triển khoa học kỹ thuật và ứng dụng hiện nay
Trên thực tế những phát minh công nghệ, khoa học, ứng dụng mới rất nhiều là một tích hợp công nghệ từ những chuyên ngành trên Do vậy các nhà khoa học
mới đưa ra 4 chữ cái trên, như một slogan để khuyến khích việc học tập, nghiên
cứu xung quanh các môn học này và các tích hợp giữa chúng
Tuy nhiên có 1 chuyên ngành nữa mà ai cũng biết đóng vai trò then chốt nhất, tích hợp giữa các hướng trên, đó chính là Tin học, hay nói chính xác hơn là khoa học máy tính trong tin học
Khoa học máy tính là môn học mang đặc tính STEM rõ nhất, môn học này có nhiều điểm chung nhất với đồng thời các thành phần khác của STEM như Kỹ
nghệ (Engineering), Toán học (Mathematics), Khoa học (Science) và Công nghệ (Technology) Sau đây là một vài lý giải cho mệnh đề trên
- Hướng kiến thức này dựa trên một hệ thống cơ sở lý luận toán học chặt chẽ, logic và khoa học
- Trọng tâm của Khoa học máy tính là "tư duy máy tính", có cơ sở lý luận hàn lâm nền tảng kết hợp thực nghiệm và đánh giá, đo đạc số liệu một cách khoa
học
- Lõi của Khoa học máy tính là phần kiến thức lập trình, một kỹ năng đòi hỏi quá
trình thiết kế, xây dựng, kiểm thử và đánh giá dựa trên các tiêu chuẩn kỹ thuật
- Khoa học máy tính yêu cầu và có liên quan rất nhiều đến sự hiểu biết, ứng dụng,
đánh giá các công nghệ của nhiều chuyên ngành khác nhau
Trang 10Hơn nữa Khoa học máy tính còn có ứng dụng rất sâu trong tất cả các lĩnh vực STEM khác như chúng ta vẫn biết rõ điều đó Có thể nói tư duy máy tính, các nguyên tắc cơ bản của tính toán, các cơ sở lý thuyết giải quyết vấn đề dựa trên máy tính là chìa khóa dẫn đến thành công của các nhánh khoa học khác như kỹ nghệ, kinh doanh và thương mại trong thế kỷ 21
Do vậy mô hình hay cái gọi là STEM cần được thể hiện lại chính xác hơn như hình sau
STEM bắt buộc phải gắn liền với Tin học, với Khoa học máy tính, chúng tuy 2 nhưng là 1 thực thể thống nhất, không thể tách rời Khoa học máy tính là nền tảng
lý thuyết và công nghệ kết nối các chuyên ngành khác nhau trong mô hình STEM
Scratch là môi trường lập trình hỗ trợ giáo dục STEM tốt nhất
Vì sao lại có thể khẳng định Scratch là môi trường lập trình hỗ trợ giáo dục STEM tốt nhất?
Như chúng ta đã biết, điểm cốt lõi cơ bản nhất của giáo dục STEM là vừa học vừa làm, thực hành làm ra các sản phẩm cụ thể, từ đó nâng cao sự đam mê, yêu thích môn học của mình
Với cách hiểu trên thì với môn Tin học, tinh thần giáo dục STEM chính là khuyến khích làm ra các sản phẩm cụ thể từ chính các kiến thức môn học của mình Ngôn ngữ lập trình Scratch rất trực quan, dễ dàng tạo ra các sản phẩm, chương trình, phần mềm hay đơn giản là một trò chơi Đây chính là điểm mạnh nhất của Scratch mà các ngôn ngữ lập trình bậc cao khác không thể làm được, vì qui trình làm ra một sản phẩm hoàn chỉnh bằng các ngôn ngữ lập trình bậc cao khác là khá phức tạp
Cuốn sách này được viết nhằm mục đích chính tăng cường giáo dục STEM của môn Tin học
Giới thiệu nhanh các chủ đề cuốn sách
Sau đây là giới thiệu nhanh nội dung cuốn sách
Sách sẽ có 8 chương Mỗi chương là một chủ đề độc lập, định hướng vào công nghệ, kỹ thuật làm phần mềm hoặc định hướng nội dung phần mềm Các chủ đề đều có thể đọc độc lập 3 chủ đề đầu tiên là định hướng công cụ, 5 chủ đề sau là định hướng nội dung thiết kế phần mềm
Sau mỗi chủ đề là một số bài tập nhỏ Chúng tôi sẽ liên tục bổ sung thêm các bài tập, mở rộng này trong tương lai
Trang 11Chủ đề 1 Một số nguyên tắc và qui trình thiết kế phần mềm Mục tiêu:
- Giới thiệu một số nguyên tắc thiết kế phần mềm, trò chơi trên Scratch
- Mô tả các bước thiết kế 1 chương trình phần mềm hoàn chỉnh
Chủ đề 1 sẽ trình bày một số nguyên tắc, và đặc biệt trình bày, đưa ra 1 qui trình thiết kế phần mềm bằng Scratch Có 4 qui trình quan trọng nhất của việc thiết kế phần mềm là:
- Viết kịch bản phần mềm
- Thiết kế nhân vật
- Thiết kế bộ dữ liệu hệ thống
- Lập trình
Để có thể lập trình dễ dàng, không mắc lỗi, cần xây dựng và vẽ được Sơ đồ thiết
kế - hoạt động của chương trình Sơ đồ này càng được vẽ cẩn thận, chính xác bao
nhiêu thì việc cài đặt, lập trình sẽ càng dễ dàng bấy nhiêu
Chủ đề 2 Clone và một số kỹ thuật xử lý Clone
Mục tiêu:
- Giới thiệu nhanh khái niệm và một số kỹ thuật lập trình với Clone trong Scratch
- Ứng dụng kỹ thuật Clone trong việc thiết kế phần mềm, trò chơi giáo dục
Chủ đề này nhắc lại các kiến thức, kỹ thuật chính liên quan đến Clone (phân thân) Clone có lẽ đóng vai trò trung tâm nhất của toàn bộ quá trình thiết kế phần mềm Nội dung của chủ đề này được lấy chủ yếu từ cuốn sách TỰ HỌC LẬP TRÌNH SCRATCH mà tôi đã viết trước đây
Chủ đề 3 Các công cụ và kỹ thuật thiết kế phần mềm
Mục tiêu:
- Một số kỹ thuật chính khi thiết kế phần mềm thực sự so sánh với việc chỉ viết chương trình theo yêu cầu của người khác
- Một vài kỹ thuật và đặc thù chính của một phần mềm hay trò chơi
Chủ đề này trình bày một số kỹ thuật và công cụ hay dùng trong khi viết các chương trình phần mềm cụ thể Các công cụ này rất cần thiết cho mọi người muốn
tự học thiết kế phần mềm Ví dụ các công cụ đã trình bày trong chủ đề này:
- Kỹ thuật đếm điểm số, do thời gian
- Kỹ thuật hiển thị số lần chơi
- Kỹ thuật hiển thị số hoặc chữ lớn
- Một số cách thiết kế và thuật toán sinh ngẫu nhiên
Chủ đề 4 Thiết kế một số phần mềm quen thuộc
Mục tiêu:
- Thiết kế một số phần mềm giáo dục quen thuộc, từ dễ đến khó để rèn luyện các
kỹ năng cơ bản thiết kế phần mềm
Chủ đề này sẽ bắt đầu thực sự thiết kế chi tiết một số phần mềm quen thuộc và tiêu biểu Hầu hết các phần mềm trong chủ đề này đều đã được giới thiệu trong
Trang 12cuốn sách trước của tôi, nhưng trong cuốn sách này, các phần mềm này sẽ được
mô tả hoàn toàn chi tiết đến mức lập trình
Các phần mềm được mô tả trong chủ đề này là:
- Bút vẽ tự do và nâng cao
- Flappy Bird
- Kỹ thuật bắn súng
- Tham quan bảo tàng
- Trò chơi đoán từ Hangman
- Phần mềm tập chuột, bàn phím cho học sinh
Chủ đề này bắt đầu bằng việc mô tả các kỹ thuật điều khiển bàn phím, chuột và kỹ năng nhận biết điều khiển chuột
Các thao tác chuột sau được mô tả chi tiết trong chủ đề:
- Di chuyển chuột
- Nháy chuột
- Kéo thả chuột
- Nháy đúp chuột
Phần mềm Mouse Skills dùng để luyện các thao tác với chuột được thiết kế chi
tiết trong phần này
Ngoài ra một phần mềm học gõ bàn phím bằng 10 ngón cũng được thiết kế, mô tả trong chủ đề này
Chủ đề 6 Phần mềm hỗ trợ học khoa học máy tính
Mục tiêu:
- Một số thuật toán chính biến đổi số trong các hệ đếm khác nhau
- Thiết kế phần mềm, trò chơi liên quan đến biến đổi số trong các hệ đếm khác nhau
- Một số phần mềm khác hỗ trợ giảng dạy khoa học máy tính trong trường phổ thông
Chủ đề này tập trung mô tả một số chương trình ứng dụng có liên quan đến phân môn khoa học máy tính của môn Tin học Các chủ đề cụ thể bao gồm:
- Các thuật toán và bài toán mô tả việc chuyển đổi giữa các hệ đếm thập phân, nhị phân và hexa
- Các thuật toán sắp xếp và phần mềm mô phỏng sắp xếp
Trang 13- Các trò chơi có liên quan đến sắp xếp số
Chủ đề 7 Phần mềm hỗ trợ học toán
Mục tiêu:
- Thiết kế một số phần mềm hỗ trợ học và dạy môn Toán
- Một số thuật toán sinh dãy số ngẫu nhiên, sinh các bài toán đầu vào cho các phần mềm học Toán
Chủ đề này tập trung mô tả các phần mềm ứng dụng học và giải toán Các dạng toán trắc nghiệm và điền số trực tiếp được mô tả trong chủ đề này
Một lớp các bài toán điền số vào dãy được thiết kế dữ liệu cẩn thận và mô tả chi tiết trong chủ đề này
Chủ đề 8 Phần mềm hỗ trợ học khoa học
Mục tiêu:
- Thiết lập các dạng bài toán mô tả các hiện tượng thực tế, có tính chính xác và khoa học
- Thiết kế một số phần mềm đơn giản cho môn Khoa học tự nhiên
Chủ đề này chỉ bao gồm những ví dụ nhỏ ban đầu của hướng phần mềm dành cho nhóm các môn học khoa học Đặc điểm của các ứng dụng này là tính chính xác khoa học của các mô phỏng
Chủ đề bao gồm 1 số chương trình, ứng dụng mô phỏng lịch tháng và đồng hồ số,
mô phỏng viên đạn bắn ra khỏi nòng súng, mô phỏng chuyển động của bánh xe, chuyển động của quả bóng trong trò chơi bi-a
Chủ đề này sẽ có có rất nhiều phát triển trong tương lai
Trang 15MỤC LỤC
Lời nói đầu 2
Đối tượng, mục đích 2
Môn Tin học trong tương lai sẽ như thế nào? 2
Tư duy máy tính: năng lực tư duy quan trọng nhất của Khoa học máy tính 7
Tin học và vai trò của các ngôn ngữ lập trinh trực quan 8
Scratch và giáo dục STEM 9
Scratch là môi trường lập trình hỗ trợ giáo dục STEM tốt nhất 10
Giới thiệu nhanh các chủ đề cuốn sách 10
Chủ đề 1 Một số nguyên tắc và qui trình thiết kế phần mềm 11
Chủ đề 2 Clone và một số kỹ thuật xử lý Clone 11
Chủ đề 3 Các công cụ và kỹ thuật thiết kế phần mềm 11
Chủ đề 4 Thiết kế một số phần mềm quen thuộc 11
Chủ đề 5 Phần mềm tập chuột, bàn phím 12
Chủ đề 6 Phần mềm hỗ trợ học khoa học máy tính 12
Chủ đề 7 Phần mềm hỗ trợ học toán 13
Chủ đề 8 Phần mềm hỗ trợ học khoa học 13
Chủ đề 1 Một số nguyên tắc và qui trình thiết kế phần mềm 19
Nội dung chính 19
1 Ai là người thiết kế phần mềm? 19
2 Các bước thiết kế phần mềm 20
3 Sơ đồ thiết kế phần mềm 21
4 Ví dụ 1: Tìm hiểu các con vật 22
5 Ví dụ 2: Math Board 27
Câu hỏi - Bài tập - Mở rộng 34
Chủ đề 2 Clone và một số kỹ thuật xử lý Clone 36
Nội dung chính 36
1 Khái niệm phân thân - clone trong Scratch 36
2 Rừng hoa 39
3 Hai chú mèo sinh đôi 40
4 Thuộc tính của nhân vật 41
5 Biến nhớ riêng là thuộc tính của nhân vật 45
6 Clone kế thừa thuộc tính nhân vật 46
7 Giao tiếp người dùng - clone, clone - clone 50
Câu hỏi - Bài tập - Mở rộng 52
Chủ đề 3 Các công cụ, kỹ thuật thiết kế phần mềm 54
Nội dung chính 54
1 Một số đặc điểm của phần mềm trò chơi 54
Trang 162 Kỹ thuật đếm ngược 56
3 Mô phỏng lượt chơi cho các nhân vật 57
4 Kỹ thuật tính điểm số cho người chơi 59
5 Thể hiện số và đếm số 60
6 Thể hiện chữ, tên người, nhân vật 65
7 Kỹ thuật sinh ngẫu nhiên trong các trò chơi và phần mềm 66
8 Thuật toán sinh ngẫu nhiên 1 bộ đáp án, trong đó có 1 đáp án đúng 70
9 Ví dụ: trò chơi điều khiển bóng 72
Câu hỏi - Bài tập - Mở rộng 77
Chủ đề 4 Thiết kế một số phần mềm quen thuộc 79
Nội dung chính 79
1 Chương trình Bút vẽ màu hoàn chỉnh 79
2 Trò chơi, phần mềm, kỹ thuật bắn súng 83
3 Flappy Bird 92
4 Trình diễn trong bảo tàng 101
5 Bút vẽ nâng cao và bài toán vẽ hình mẫu 109
6 Trò chơi hangman 116
7 Trò chơi mưa từ 127
8 Trò chơi luyện trí nhớ 133
9 Trò chơi Ô chữ 146
Câu hỏi - Bài tập - Mở rộng 166
Chủ đề 5 Phần mềm tập chuột, bàn phím 168
Nội dung chính 168
1 Điều khiển nhân vật bằng bàn phím 168
2 Điều khiển nhân vật bằng chuột 168
3 Mô phỏng di chuyển chuột 171
4 Mô phỏng tập nháy chuột 173
5 Mô phỏng tập kéo thả chuột 175
6 Mô phỏng tập nháy đúp chuột 178
7 Phần mềm tập gõ bàn phím 181
8 Ví dụ: phần mềm Mouse Skills 189
Câu hỏi - Bài tập - Mở rộng 196
Chủ đề 6 Phần mềm hỗ trợ học Khoa học máy tính 198
Nội dung chính 198
1 Thuật toán biến đổi số thập phân, nhị phân và hexa 198
2 Phần mềm hiển thị và biến đổi giữa số thập phân, nhị phân và hexa 203
3 Mô phỏng sắp xếp (loại 1) 204
4 Mô phỏng sắp xếp (loại 2) 211
Trang 175 Biểu diễn nhị phân 219
6 Mô phỏng sắp xếp (loại 3) Trò chơi xếp số trong hình vuông 224
7 Mô phỏng sắp xếp (loại 4) 233
Câu hỏi - Bài tập - Mở rộng 238
Chủ đề 7 Phần mềm hỗ trợ học Toán 242
Nội dung chính 242
1 Trò chơi điền số vào dãy, vào bảng 242
2 Trò chơi tìm số 255
3 Trò chơi bắn súng giải toán 269
Câu hỏi - Bài tập - Mở rộng 278
Chủ đề 8 Phần mềm hỗ trợ học Khoa học 282
Nội dung chính 282
1 Mô phỏng đồng hồ và lịch 282
2 Các bánh xe quay 292
3 Bánh xe lăn trên đường thẳng 294
4 Bánh xe quay trong vòng tròn 296
5 Bánh xe lăn trên đường cong bất kỳ 299
6 Mô phỏng bắn súng 305
7 Mô phỏng Bi-a 312
Câu hỏi - Bài tập - Mở rộng 320
PHỤ LỤC: CÁC TẬP LỆNH SCRATCH 322
1 Nhóm câu lệnh Move 322
2 Nhóm câu lệnh Look 323
3 Nhóm câu lệnh Sound 325
4 Nhóm câu lệnh Pen 326
5 Nhóm câu lệnh Variable 327
6 Nhóm câu lệnh Event 328
7 Nhóm câu lệnh Control 330
8 Nhóm câu lệnh Sensing 331
9 Nhóm câu lệnh Operators 334
10 Nhóm lệnh More Blocks 335
Tài liệu tham khảo 337
Trang 19Chủ đề 1
Một số nguyên tắc và qui trình thiết kế phần mềm Mục tiêu:
- Giới thiệu một số nguyên tắc thiết kế phần mềm, trò chơi trên Scratch
- Mô tả các bước thiết kế 1 chương trình phần mềm hoàn chỉnh
A Người viết kịch bản và thiết kế nhân vật
Như chúng ta đều biết, cái đầu tiên cần có của mọi bộ phim, vở diễn hay bất cứ sụ kiện trình diễn nào đó chính là kịch bản Kịch bản ở đây được hiểu là cốt truyện, nội dung chính của truyện, lời thoại, hoạt động của các nhân vật chính Kịch bản còn có thông tin như mục đích, yêu cầu, đối tượng muốn hướng đến của câu chuyện
Với phần mềm cũng vậy, cái cần đầu tiên và số 1 là kịch bản của phần mềm Hay cái mà chúng ta vẫn thường gọi là yêu cầu cụ thể của bài toán
Điều này cũng đúng với Scratch
Người viết kịch bản và thiết kế nhân vật của phần mềm Scratch chính là người đầu tiên và quan trọng nhất phác thảo ra yêu cầu, nội dung, kịch bản và hoạt động
cụ thể của các nhân vật trong phần mềm
Trên thực tế người viết kịch bản và thiết kế nhân vật cho 1 chương trình
Scratch thực hiện những công việc sau:
- Thiết kế yêu cầu cụ thể và chi tiết của phần mềm bao gồm các hoạt động chính, các chức năng chính, nêu được mục đích và đối tượng sử dụng của chương trình
- Thiết kế các nhân vật chính, các nút lệnh chính của chương trình
- Mô tả các chức năng, hoạt động chi tiết của từng nhân vật, từng nút lệnh trong chương trình
B Đạo diễn chính toàn bộ hoạt động của phần mềm
Đạo diễn là người tổng chỉ huy việc thiết kế toàn bộ chương trình từ khi có kịch bản cho đến khi kết thúc, hoàn thiện chương trình
Đối với chương trình, phần mềm Scratch, công việc của đạo diễn là:
- Xác định công nghệ chính sẽ được sử dụng trong chương trình Chú ý rằng 1 bài toán, 1 kịch bản có thể có nhiều cách làm khác nhau, dựa vào các công nghệ, kỹ thuật khác nhau Ví dụ trong kịch bản sẽ có 3 nhân vật A, B, C Đạo diễn sẽ là người quyết định thiết lập 3 nhân vật độc lập hay chỉ dùng 1 nhân vật với 3 clone
để thể hiện
Trang 20- Thiết kế toàn bộ giao diện đồ họa của chương trình bao gồm nhân vật, nền sân khấu và các nút lệnh
- Tìm kiếm âm thanh sẽ được sử dụng trong chương trình
- Quản trị toàn bộ chương trình, kiểm tra, kiểm thử, sửa lỗi trong suốt quá trình thiết kế chi tiết và lập trình
- Quyết định thời điểm chương trình hoàn thành và nghiệm thu
C Người thiết kế hệ thống thông tin: tổng quát và chi tiết
Sau khi đã có kịch bản và thiết kế nhân vật, xác định xong công nghệ lõi thực hiện thì bước tiếp theo là thiết kế hệ thống thông tin tổng quát và chi tiết Các công việc chính của người thiết kế hệ thống thông tin bao gồm:
- Thiết kế các biến nhớ và dữ liệu tổng thể
- Phân rã chương trình
- Tổng quát hóa và trừu tượng hóa các mô hình: nhân vật, sự kiện, hành động
- Thiết kế sơ đồ quan hệ giữa các nhân vật và nền sân khấu
- Chuẩn bị các thuật toán cần thiết cho các bài toán con đã được phân rã
D Người lập trình (coding) cụ thể
Cuối cùng là người lập trình (coding) cụ thể Người lập trình sẽ phải tuân thủ tất
cả các đề nghị, yêu cầu và kiểm soát bởi 3 người phía trên
2 Các bước thiết kế phần mềm
Trong mục này sẽ mô tả chi tiết các bước cần thực hiện của công việc thiết kế phần mềm Các công việc này là nhiệm vụ của người đạo diễn (B) và người thiết
kế hệ thống (C) ở phần trên
2.1 Chuẩn bị công nghệ xử lý và giải quyết bài toán
Đây là bước thiết kế đầu tiên sau khi đã có kịch bản, yêu cầu chi tiết của chương trình Chúng ta đều biết rằng một bài toán Tin học sẽ có cách giải, nhiều cách tiếp cận với các công nghệ khác nhau Người thiết kế phần mềm phải quyết định điều này
Thông thường ở bước này, cần đưa ra các quyết định sau cho 1 chương trình, phần mềm trên Scratch
- Với từng nhân vật, nhóm nhân vật, có dùng Clone hay không? Nếu dùng Clone thì sẽ triển khai như thế nào?
- Thiết kế bộ dữ liệu chính của chương trình Thường bước này là việc thiết kế các mảng dữ liệu chính sẽ dùng trong chương trình
- Chuẩn bị và thiết kế các thuật toán chính sẽ dùng trong phần mềm
2.2 Thiết kế nhân vật, nền sân khấu
Đây là bước vẽ, thiết kế chi tiết hình ảnh nhân vật, trang phục nhân vật, vẽ các hình sân khấu, vẽ các nút lệnh chính của chương trình
2.3 Thiết lập các biến nhớ hệ thống và dữ liệu quan trọng
Đây là bước rất quan trọng: thiết kế các biến nhớ hệ thống và các bộ dữ liệu quan trọng của chương trình Tại bước này nếu thiết kế không tốt sẽ ảnh hưởng đến toàn bộ quá trình viết chương trình về sau Người thiết kế chương trình tốt là
Trang 21người cần có quan sát tổng thể, có tầm nhìn xa để nhìn thấy cần thiết kế các biến
2.5 Coding - Lập trình chi tiết
Cuối cùng, tất nhiên, là công việc lập trình cụ thể Trong quá trình lập trình có thể quay lại bất cứ bước nào ở phía trên
Một trong những công việc rất quan trọng trong quá trình lập trình là kiểm thử, tìm lỗi và sửa lỗi
3 Sơ đồ thiết kế phần mềm
Sơ đồ thiết kế phần mềm là một trong những tài liệu quan trọng nhất của quá trình thiết kế phần mềm trong Scratch Không có 1 định nghĩa chính xác của Sơ đồ thiết
kế này nhưng có thể xác định các yếu tố sau cần có trong Sơ đồ này
- Trong Sơ đồ này phải hiển thị tất cả các nhân vật (và sân khấu nếu có tham gia vào chương trình)
- Mô tả chi tiết quan hệ giữa các nhân vật và nền sân khấu thông qua thông điệp
và biến nhớ hệ thống
- Mô tả các hoạt động chính của nhân vật, nền sân khấu liên quan đến các sự kiện thông điệp
- Các thông tin quan trọng khác nếu có
Nhìn vào sơ đồ này, người lập trình sẽ hiểu rõ cần phải tiến hành các bước lập trình cụ thể như thế nào
Dưới đây là hình ảnh 2 Sơ đồ thiết kế tương ứng với 2 ví dụ thiết kế phần mềm của bài học này
Trang 224 Ví dụ 1: Tìm hiểu các con vật
Chúng ta bắt đầu từ một bài toán, chương trình đơn giản: Tìm hiểu các con vật
Kịch bản của chương trình bắt nguồn từ 1 bộ dữ liệu gốc trong bảng sau:
Hình ảnh Tên con vật Mô tả
mèo Loài vật nuôi trong nhà rất phổ biến trong mọi gia
đình
khủng long Loài vật khổng lồ nhất trên trái đất, đã tuyệt chủng
từ cách đây hàng triệu năm
chó Loài vật nuôi có tác dụng giữ nhà rất phổ biến
voi Con vật 4 chân lớn nhất hiện nay Voi sống nhiều
ở châu Phi và châu Á
ngựa Loài vật thường dùng để kéo xe, chở đồ, rất phổ
biến
sư tử Loài vật được mệnh danh là chúa rừng xanh
khỉ Loài vật gần với người nhất về bề ngoài, hay leo
trèo trên cây
cáo Loài vật giống chó nhưng sống trong rừng, chuyên
Ý tưởng chính của bài toán là cần sinh ngẫu nhiên các câu hỏi trắc nghiệm từ bộ
dữ liệu trên, đối tượng là các bạn học sinh nhỏ tuổi Câu hỏi kiểm tra có thể là một trong các dạng sau:
- Quan sát hình ảnh đoán tên con vật
- Đọc mô tả đoán tên con vật
- Ghép nối hình ảnh và tên con vật
Kịch bản cụ thể của phần mềm được thiết kế trong ví dụ này được thiết kế theo
mô hình câu hỏi trắc nghiệm thứ nhất ở trên
Mô tả kịch bản, yêu cầu chương trình
- Cần 1 nhân vật đóng vai Giáo viên sẽ liên tục đưa ra các câu hỏi "Đây là con gì?" Chính giữa màn hình sẽ xuất hiện hình ảnh con vật cần xác định tên
- Bên dưới sẽ hiện 4 đáp án trong đó có 1 đáp án đúng
Trang 23- Người dùng cần làm bài bằng cách nháy chuột lên một trong các nút có chữ A,
B, C, D ở phía dưới mỗi đáp án
- Nếu làm đúng, Giáo viên sẽ thông báo "Đúng rồi" (có thể có âm thanh kèm theo)
và sau đó Giáo viên hiển thị thông tin mô tả con vật này để người chơi biết thêm thông tin Sau khi dừng 2 giây, Giáo viên sẽ hỏi câu tiếp theo
- Nếu làm sai, Giáo viên thông báo "Sai rồi" (có thể có âm thanh kèm theo) và sau
2 giây sẽ tiếp tục hỏi câu hỏi mới
Tất cả nội dung các câu hỏi đều phải là ngẫu nhiên để người chơi không thể học thuộc lòng các đáp án
Hình ảnh mô tả của phần mềm có thể hình dung như sau
(1) Chuẩn bị công nghệ xử lý bài toán
Điểm mấu chốt công nghệ của chương trình là ở chỗ cần thiết kế 1 nhân vật (có tên Animal) với các trang phục là hình ảnh các con vật khác nhau Như vậy đáng
lẽ cần thiết kế mỗi con vật là 1 nhân vật thì chúng ta sẽ chỉ cần 1 nhân vật là đủ
Hệ thống trang phục của nhân vật này tương thích với 2 bảng
dữ liệu chính:
Animal và Animal_list
Hệ thống sân khấu và nhân vật tham gia hoạt động trong bài toán này: nhân vật chính, thầy giáo, 4 nút phương án và sân khấu
Tim hieu con
chương trình
Hình ảnh con vật chính của câu hỏi trắc nghiệm
Các phương án cần chọn Nút lựa chọn đáp án
Trang 24(2) Thiết kế nhân vật, nền sân khấu
Danh sách nhân vật được thiết kế trong chương trình
Nhân vật này là trung tâm và tham gia như một nguồn dữ liệu hình ảnh chính Mỗi hình ảnh con vật sẽ là 1 trang phục của nhân vật này
Chú ý tên của trang phục (costume name) cần phải trùng với tên con vật
trong dãy (list) Animals
Nhân vật Giáo viên chính, đóng vai trò MC của chương trình
Các nút lệnh, mỗi nút lệnh là 1 nhân vật
(3) Thiết kế biến nhớ hệ thống và các dữ liệu chung
Danh sách các biến nhớ hệ thống của chương trình
Giá trị nhận được từ 1 đến
4
choice Biến nhớ ghi lại đáp án do người
dùng lựa chọn khi làm bài
Nhận giá trị từ 1 đến 4 Vậy người dùng làm bài đúng
khi và chỉ khi choice = PA_correct
List Animals,
Animal_list
Bộ dữ liệu gốc của chương trình
Animals: dãy tên các con vật
Dãy tên này trùng với dãy tên các trang phục của nhân vật chính Animal của chương trình
Animal_list: dãy thông tin mô
tả các con vật Dãy này tương ứng với Animals
Độ dài của 2 dãy này bằng nhau và bằng số trang phục
của nhân vật Animal của
chương trình
Hoàn toàn có thể mở rộng
dữ liệu bằng cách bổ sung vào 2 bảng này và bổ sung trang phục tương ứng cho
Animal
PA_list Dãy 4 phẩn tử chỉ ra 4 chỉ số
được lấy ngẫu nhiên từ mảng Animals dùng làm dữ liệu cho câu hỏi trắc nghiệm
PA_list được sinh ngẫu nhiên bằng cách lấy ra 4 chỉ
số ngẫu nhiên trong khoảng 1->length(Animalss)
Trang 25(4) Sơ đồ thiết kế hệ thống
Sơ đồ thiết kế và hoạt động của chương trình thể hiện trong mô hình sau
Có thể mô tả bằng lời Sơ đồ thiết kế hoạt động của chương trình như sau:
- Thông điệp Next có ý nghĩa bắt đầu 1 phiên làm việc mới của chương trình Công việc cụ thể sau lệnh Next là:
+ Sinh ngẫu nhiên bộ dữ liệu câu hỏi trắc nghiệm bao gồm các biễn nhớ PA_list, PA_correct, Aname, Bname, Cname, Dname
+ MC ra câu hỏi: đây là con gì
+ Nhân vật Animal chuyển trang phục sang số thứ tự con vật tương ứng
- Sau khi hiển thị bài toán, chương trình chờ người chơi nháy chọn đáp án bằng cách nháy lên 1 trong các nút A, B, C, D Khi người dùng nháy, hệ thống cập nhật
biến choice và ra thông điệp Done
- Thông điệp Done có ý nghĩa đã chọn xong đáp án Giáo viên nhận thông điệp
này sẽ xử lý đáp án, thông báo đúng, sau
- Sau đó Giáo viên gửi thông điệp Next để bắt đầu lại câu hỏi mới
Hiển thị câu hỏi: Đây là con gì? Khi người dùng click chuột, nạp
lựa chọn vào biến nhớ choice và gửi thông điệp Done
Trang 262 Xứ lý thông điệp Next
Các công việc quan trọng là thiết lập bộ dữ liệu đầu vào cho câu hỏi trắc nghiệm
Cụ thể như sau
- Thiết lập mảng 4 dữ liệu PA_list Bảng này sẽ lấy ngẫu nhiên 4 giá trị từ dãy các
số tự nhiên 1, 2, 3, … (độ dài = length(Animals) Thuật toán sử dụng là sinh ngẫu nhiên 1 tập con của 1 dãy số cho trước Trong chương trình sau, dãy Temp_list được tạo ra để lưu trữ dãy các số 1, 2, 3, … (độ dài = length(Animals), từ đó sẽ lấy ra 4 phần tử ngẫu nhiên đưa vào PA_list
Chương trình sinh bảng PA_list như sau
- Thiết lập dữ liệu cho các biến PA_correct, Aname, Bname, Cname, Dname Chương trình sinh bộ đáp án bao gồm PA_correct, Aname, Bname, Cname, Dname
- Sau khi sinh xong các bộ dữ liệu trên thì việc tiếp theo là hiển thị con vật giữa màn hình cho đúng câu hỏi
đi khỏi dãy Temp_list
PA_correct lấy ngẫu nhiên
từ 1 đến 4
Các biến Aname, Bname, Cname, Dname lần lượt lấy tên của các con vật có chỉ số lấy từ PA_list
Trang 274 Xử lý thông điệp Done
Cuối cùng là xử lý thông điệp Done Giáo viên là người xử lý thông điệp này
- Nếu đúng, GV thông báo đúng rồi, sau đó hiển thị thông tin mô tả của con vật tương ứng
- Nếu sai, GV thông báo sai rồi
Đợi 1 thời gian ngắn, GV sẽ gửi thông điệp Next để bắt đầu một câu hỏi mới
5 Ví dụ 2: Math Board
Ý tưởng của chương trình này là xây dựng một mô hình mô phỏng các bài học môn Toán đơn giản dành cho học sinh nhỏ tuổi Trong ví dụ cụ thể, các bài toán chỉ là phép tính cộng, trừ đơn giản trong phạm vi 3-4 chữ số
Kịch bản tưởng tượng của chương trình như hình sau
Yêu cầu các bước thực hiện của chương trình như sau:
Chương trình sẽ tự động sinh các phép toán cộng, trừ số đơn giản Phép tính được hiện trên màn hình với các số thể hiện bằng đồ họa
Chương trình
Math Board
Math Board.sb2
Trang 28Người dùng nhập trực tiếp từ bàn phím đáp án Khi người dùng nhập xong, đáp án
do người dùng nhập sẽ hiện trên phép tính ở màn hình Khi nó nút Check xuất
hiện Nháy nút này để kiểm tra đúng hay sai
Nếu sai, chương trình sẽ hiện thông báo Sai rồi và hiện đáp án đúng bên dưới
Đồng thời xuất hiện nút Next Nháy lên nút này để bắt đầu 1 phép tính mới
Nếu đúng, chương trình sẽ xuất hiện thông báo Đúng rồi Đồng thời xuất hiện nút
Next Nháy lên nút này để bắt đầu 1 phép tính mới
(1) Chuẩn bị công nghệ xử lý bài toán
Đặc điểm công nghệ chính của chương trình này là yêu cầu hiển thị số, phép toán bằng hình ảnh lớn để HS dễ quan sát Phần mếm sẽ cần sử dụng hai nhân vật:
Number để hiển thị số và Operation để hiện thị phép toán
(2) Thiết kế nhân vật, nền sân khấu
Bảng các nhân vật của chương trình như sau, chú ý 2 nhân vật đầu tiên
Tên nhân
vật, nút
lệnh
Nhân vật Mô tả ý nghĩa
Number Nhân vật này có nhiệm vụ hiển thị số trên màn hình
theo hình ảnh lớn để học sinh dễ quan sát Đây là công nghệ chính, quan trọng nhất của chương trình này Nhân vật sẽ có 10 trang phục, có tên lần lượt
là 0, 1, 2, …, 9 Để hiển thị hình ảnh trên màn hình
sẽ dùng lệnh Stamp
Operation Nhân vật này sẽ có 3 trang phục tương ứng với dấu
cộng (+), dấu trừ (-) và dấu bằng (=).Để hiển thị
Next Nút thực hiện thông điệp Next, chuyển sang bài
toán tiếp theo
Đúng -
Sai
Nút thể hiện thông báo Đúng / Sai trên màn hình
(3) Thiết kế biến nhớ hệ thống và các dữ liệu chung
Danh sách các biến nhớ hệ thống của chương trình
N1, N2 Giá trị 2 số tự nhiên là đầu
vào của phép tính cần thực hiện của phần mềm
Các số đầu vào của bài toán sẽ được sinh ngẫu nhiên
Trang 29Biến nhớ Ý nghĩa Ghi chú thêm
op Giá trị mô tả phép toán
= 1, phép cộng
= 2, phép trừ
Tham số này có thể mở rộng lên cho cả các phép tính nhân, chia
Hiển thị đáp án của người dùng nhập
Hiển thị đáp
án đúng bên dưới
Hiển thị nút Check
Ẩn nút
Kiểm tra Đúng/ Sai và hiển thị trang phục tương ứng
Nếu sai, gửi thông
điệp ShowCorrect
Trang 30Stt Sự kiện -
Thông điệp
Người thực hiện
Công việc cần thực hiện
Next
- Sinh ngẫu nhiên bộ dữ liệu phép toán gốc:
op, N1, N2
- Gửi thông điệp Start
2 Start Sân khấu - Hiện thị hình ảnh phép toán và dấu =
- Hiển thị các số N1, N2 bằng chữ số lớn trên màn hình
- Bắt đầu cho người dùng nhập đáp số của
phép tính, lưu vào biến nhớ UserNumber
- Khi người dùng nhập xong thì gửi thông
điệp InputDone
3 InputDone Sân khấu - Hiển thị số người dùng đã nhập lên phép
tính trên màn hình
- Gửi thông điệp WaitCheck
4 WaitCheck Numbers - Xuất hiện nút Check
- Khi người dùng nháy nút Check thì gửi
thông điệp CheckDone
5 CheckDone Nút Check Kiểm tra kết quả đúng hay sai
- Nếu Sai, hiển thị nút Sai và gửi thông điệp
ShowCorrect
- Nếu Đúng, hiển thị nút Đúng
- Hiển thị nút Next Nếu nháy nút Next sẽ gửi
thông điệp Next
6 ShowCorrect Nút Đúng-Sai Hiển thị đáp án đúng bên dưới số người dùng
đã nhập
(5) Coding - lập trình cụ thể
1 Công cụ hiển thị số bằng hình ảnh to trên màn hình
Thiết lập thủ tục ShowNumber (n) tại vị trí X, Y
Thủ tục được thiết lập cho
số này)
Trang 312 Hoạt động của sân khấu khi bắt đầu khởi động chương trình: thiết lập thông
điệp Next
3 Xử lý thông điệp Next
Khi nhận được thông điệp Next, sân khấu sẽ khởi động việc sinh bộ dữ liệu tính toán gốc bao gồm N1, N2, op và Solution Trong ví dụ này chúng ta sẽ thiết lập
mô hình bài toán đơn giản là phép + hoặc -, các số N1, N2 được sinh ngẫu nhiên trong khoảng từ 10 đến 999 Việc tổng quát hóa bài toán sẽ nằm trong các bài tập Biến op sẽ nhận ngẫu nhiên 1 hoặc 2, tương ứng vớp phép tính + và -
Chú ý: Dữ liệu N1, N2 được sinh trong ví dụ trên là các bài tập tính +, - bất kỳ (có nhớ) trong phạm vi 3 chữ số)
4 Xử lý thông điệp Start
Sau khi bộ dữ liệu gốc ban đầu đã được thiết lập (các biến N1, N2, op, Solution),
thông điệp Start được gửi đi thông báo bắt đầu quá trình làm bài của người dùng Các xử lý tiếp theo sau thông điệp Start bao gồm:
- Các chữ số và phép tính được thể hiện trên màn hình
Đoạn chương trình thể hiện 2 số N1, N2 trên màn hình:
Biến op nhận giá trị 1 hoặc 2
Sinh ngẫu nhiên N1, N2 sao cho N1 + N2 < 1000
Sinh ngẫu nhiên N1 trong khoảng [200, 900], N2 từ [50, N1-50] do đó N1-N2 sẽ luôn > 50
Đoạn chương trình của nhân vật Operation thể hiện phép tính (+ hoặc -)
và dấu = sau phép tính
Trang 32- Đồng thời, sân khấu gửi lời yêu cầu nhập đáp số phép tính Dữ liệu người dùng
nhập sẽ được đưa vào biến nhớ UserNumber, sau đó gửi thông điệp InputDone
5 Xử lý thông điệp InputDone
Sau khi người dùng nhập xong, thì đáp án của người dùng sẽ hiển thị trên màn
hình bên phải dấu = Sau đó thông điệp WaitCheck được gửi đi để chờ người
dùng kiểm tra đúng, ai
6 Xử lý thông điệp WaitCheck
Nút Check sẽ hiển thị sau thông điệp WaitCheck và chờ người dùng nháy chuột
sẽ kiểm tra Cửa sổ lệnh của nút Check như sau
7 Xử lý thông điệp CheckDone
Nút lệnh Đúng-Sai sẽ xử lý thông điệp CheckDone, chuyển trang phục để thông báo đúng, sai Nếu người dùng làm sai thì thông điệp ShowCorrect sẽ được gửi đi
để nhân vật Number hiển thị đáp án đúng phía dưới đáp án sai
Nút chỉ hiển thị khi nhận thông điệp
Sau đó ẩn đi và gửi thông điệp
CheckDone để kích hoạt nút thông
báo Đúng/Sai
Trang 34Câu hỏi - Bài tập - Mở rộng
1 Hoàn thiện 2 chương trình Tìm hiểu con vật và Math Board đã thiết kế trong
bài học
2 Mở rộng chương trình Tìm hiểu con vật theo hướng sau: bổ sung thêm 1 dạng
câu hỏi nữa
Giáo viên khi hỏi sẽ đưa ra nội dung câu hỏi = mô tả con vật + "Đó là con gì?", ví
dụ 1 câu hỏi như sau:
Người dùng vẫn trả lời bằng cách nháy lên một trong các nút A, B, C, D Nếu người dùng làm đúng, hình ảnh con vật sẽ hiện trên màn hình
Phần mềm sẽ tự động sinh ngẫu nhiên một trong hai loại câu hỏi như trên
3 Mở rộng phần mềm Math Board thành 4 phép toán +, -, x, : như sau:
- Phần mềm sẽ sinh bài toán ngẫu nhiên với các phép tính cộng, trừ, nhân, chia
- Với các phép toán, bộ dữ liệu ban đầu được sinh ngẫu nhiên như sau:
+ Phép cộng: sinh 2 số ngẫu nhiên có 2 hoặc 3 chữ số, nhưng tổng số < 1000 + Phép trừ: trừ 2 số tự nhiên ngẫu nhiên có 2 hoặc 3 chữ số
+ Phép nhân: nhân 1 số có 2, 3 chữ số với số có 1 chữ số, tích < 1000
+ Phép chia: số bị chia (N1) có 2 hoặc 3 chữ số, số chia có 1 chữ số, phép chia phải là chia hết
4 Thiết kế phần mềm Con gì ăn gì? theo kịch bản sau
Trên màn hình bên trái là các con Mèo, Khỉ, Ngựa Bên phải là Táo, Chuối và
Cỏ Mỗi con chỉ ăn 1 thứ mà thôi: Khỉ ăn Chuối, Mèo ăn Táo, Ngựa ăn Cỏ
Chương trình chơi như sau:
Người dùng lần lượt phải dùng chuột kéo thả các con vật ở bên trái sang đúng vị trí thức ăn của nó ở bên phải
- Nếu kéo thả không đúng (chưa tới hoặc nhầm) thì con vật sẽ kêu "Ối ối" và chạy
về chỗ cũ
Loài vật nuôi trong nhà rất phổ biến trong mọi
gia đình Đó là con gì?
Trang 35- Nếu kéo thả đúng vị trí thì con vật sẽ dính vào thức ăn của mình và kêu "Ngon quá"
- Trò chơi kết thúc khi người chơi kéo thả đúng cả 3 con Mèo, Khỉ, Ngựa
5 Mở rộng chương trình Con gì ăn gì? theo hướng sau:
- Chỉ cần 2 nhân vật chính là Con thú và Thức ăn
- Mỗi nhân vật này có 1 dãy các trang phục tương ứng với các con vật và thức ăn của chúng Giao diện chương trình tương tự bài trên nhưng các con vật và thức ăn lấy ngẫu nhiên từ dãy các trang phục của 2 nhân vật chính trên Quá trình thực hiện trò chơi tương tự bài trên
Trang 36Chủ đề 2
Clone và một số kỹ thuật xử lý Clone Mục tiêu:
- Giới thiệu nhanh khái niệm và một số kỹ thuật lập trình với Clone trong Scratch
- Ứng dụng kỹ thuật Clone trong việc thiết kế phần mềm, trò chơi giáo dục
Nội dung chính
Clone - phân thân là 1 công nghệ rất đặc biệt của Scratch và có rất nhiều ứng dụng trong các bài toán thiết kế phần mềm, trò chơi trong Scratch
1 Khái niệm phân thân - clone trong Scratch
Tất cả các nhân vật trong Scratch đều có thể "phân thân", tức là tạo ra các nhân vật khác là song sinh với chính bản thân mình Các nhân vật được phân thân đó gọi là Clone
Chúng ta cùng xem 1 chương trình ngắn để bước đầu làm quen và phân biệt được
2 khái niệm: nhân vật chính (gốc) và phân thân (clone) của nhân vật này
Chúng ta cùng xem đoạn chương trình của nhân vật chính con mèo
Bảng sau mô tả nhanh sự giống nhau và khác nhau giữa nhân vật bình thường và phân thân của nhân vật (clone)
Nhân vật bình thường Clone (phân thân)
Có là nhân vật không?
Cửa sổ lệnh riêng?
với nhân vật gốc
Chịu sự điều khiển của các lệnh Scratch
Nhân vật chính, gốc Nhân vật được phân thân, là song sinh của nhân vật gốc Nhân vật
này được gọi là clone của nhân
Trang 37Là nhân vật phân thân từ 1 nhân vật gốc, được khởi tạo bởi lệnh
create clone of Clone sau khi
được tạo ra sẽ có đầy đủ tính chất như 1 nhân vật bình thường
và kế thừa mọi thuộc tính từ nhân vật gốc của mình Clone không hoạt động vĩnh viễn
Khởi tạo
Clone
Nhân vật chính dùng lệnh
để tạo Clone Có thể tạo Clone của mình hoặc của các nhân vật khác
Chú ý: Sân khấu cũng có quyền tạo Clone cho mọi nhân vật
Nhân vật gốc là khái niệm Nhân vật
(Sprite) mà chúng ta vẫn biết từ trước
đến nay trong môi trường Scratch
Mỗi nhân vật khi được tạo ra sẽ có
các tính chất, thuộc tính riêng như
hình ảnh, tọa độ x, y, hướng quay,
trang phục, âm thanh, kích thước, các
biến nhớ riêng Mỗi nhân vật có 1 cửa
sổ lệnh riêng của mình
Mỗi nhân vật có thể tạo ra các phân
thân (clone) của riêng mình
Clone được khởi tạo từ 1 nhân vật gốc Clone là 1 phân thân của nhân vật gốc và có mọi thuộc tính của nhân vật gốc
Khi bắt đầu khởi tạo, clone kế thừa toàn bộ tính chất, thuộc tính của nhân vật gốc Tuy nhiên sau khi ra đời, có thể điều khiển clone bằng tất cả các lệnh của Scratch như 1 nhân vật bình thường Điểm khác biệt chỉ ở chỗ:
- Các chương trình điều khiển Clone bắt buộc nằm trong lệnh sự kiện
when I start as a clone
- Bản thân clone có thể xóa chính mình
Trang 38Chúng ta cùng xét 1 ví dụ sau Ví dụ này minh họa cho quan hệ giữa nhân vật
chính và các phân thân - clone của chính mình
Chương trình cụ thể trên Scratch như sau:
Tạo 1 biến nhớ riêng có tên CloneID của nhân vật chính Chương trình sẽ lần lượt tạo ra 3 clone, và trước mỗi lần tạo
sẽ gán giá trị CloneID lần lượt là 1, 2,
3 Các clone này sẽ kế thừa biến nhớ CloneID cho riêng mình với các giá trị lần lượt là 1, 2, 3 Khi tạo ra, các clone
sẽ di chuyển ngẫu nhiên, tự do trên màn hình và luôn hiện giá trị CloneID của riêng mình để phân biệt với các clone khác
Chương trình chính:
Sau mỗi giây, tăng CloneID lên 1 đơn
vị và tạo 1 Clone mới của Mèo Clone
mới này sẽ mang giá trị biến CloneID
tương ứng bằng 1, 2, 3 Giá trị này sẽ
gắn với từng Clone và không thay đổi
nữa Sau khi tạo xong 3 Clone thì nói
"tôi không là Clone"
Chương trình cho mỗi Clone:
Khi được sinh ra, mỗi Clone
sẽ đọc CloneID của riêng mình và sau đó chạy xung quanh sân khấu, sau mỗi 0.1 giây thì thay đổi màu áo của mình
Trang 39Clone có ý nghĩa gì trong các ứng dụng thực tế của Scratch, chúng ta cùng tìm hiểu các hoạt động tiếp theo
2 Rừng hoa
Chương trình đơn giản sau cho em hiểu thêm hoạt động của clone
Chương trình đơn giản này chỉ có đúng 1 nhân vật là bông hoa, nhưng với nhiều hình ảnh đẹp mắt khác nhau
Mục đích của chương trình là tạo ra 1 rừng hoa với nhiều màu sắc sặc sỡ
Để làm như vậy, em cần sưu tầm nhiều hình ảnh hoa với màu sắc đa dạng khác nhau và đưa vào thành các trang phục của nhân vật này
Chương trình được xây dựng đơn giản như sau:
- Nhân vật chính bông hoa cần tạo ra nhiều hình ảnh khác nhau nhưng có kích thước gần giống nhau làm trang phục Ví dụ:
- Trong mạch chương trình chính, em cho bông hoa lần lượt tạo ra 50 clone của chính mình
- Mỗi phân thân, clone sẽ di chuyển nhanh tới 1 vị trí ngẫu nhiên trên màn hình với thể hiện trang phục ngẫu nhiên
Thiết lập các hình bông hoa có kích thước gần giống nhau và màu sắc đa dạng khác nhau
Dãy các trang phục (costume)
được đánh số từ 1
Lệnh này sẽ tạo ra 50 bản clone của nhân vật chính Các phân thân clone này khi tạo ra có trang phục và khuôn dạng giống với nhân vật chính và ở tại đúng vị trí của nhân vật chính (nhưng nằm phía dưới)
Rung hoa.sb2
Trang 403 Hai chú mèo sinh đôi
Giả sử chúng ta có 1 chương trình mà Mèo mẹ sinh ra 1 cặp mèo sinh đôi Hai chú mèo này, một có tên "Mèo vàng", một có tên "Mèo đen" Chương trình sử dụng công nghệ Clone để từ 1 nhân vật ban đầu tạo ra 2 Clone tương ứng với cặp mèo sinh đôi như hình dưới đây
Giả sử chúng ta cần thiết lập 2 clone của nhân vật Mèo mẹ này, nhân vật 1 (ID=1)
có tên là Mèo vàng, nhân vật 2 (ID=2) có tên là Mèo đen Để thực hiện được những việc trên chúng ta sẽ thiết lập 2 biến riêng (local) của nhân vật chính là ID
và Name ID dùng để chỉ số thứ tự các clone, biến Name để lưu trữ tên của các Clone được khởi tạo Khi bắt đầu chương trình, các biến nhớ riêng được gán giá trị ban đầu là ID = 0, Name = (empty) Đoạn chương trình sau sẽ tạo Clone đầu tiên
Chú ý khi Clone đầu tiên tạo ra sẽ kế thừa và có giá trị ID = 1 và Name = "Mèo vàng"
Sau đây là các đoạn chương trình thiết lập ban đầu
Yêu cầu của chương trình: khi nháy chuột lên nhân vật thì nhân vật sẽ nói và kêu lên, ví dụ: Tôi là Mèo vàng / Mèo đen
Thiết lập thêm 2 trang phục cho nhân vật chính của chương trình với tên Mèo vàng, Mèo đen
Đoạn chương trình tạo Clone đầu tiên, đặt ID = 1 và Name = Mèo vàng
Hai chu meo
sinh doi.sb2