Bùi Việt Hà
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
Hà Nội - 2017
Lờ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à:
Tiểu học
THCS
THPT
Cấu trúc máy tính.
Tập chuột, tập gõ bàn
phím.
Học vẽ.
Học nhạc.
Soạn thảo văn bản.
LOGO
Phần mềm học tập.
Máy tính, hệ điều hành.
Mạng Internet.
Soạn thảo văn bản.
Bảng tính.
Trình chiếu.
Lập trình Pascal.
Phần mềm học tập.
Máy tính, hệ điều hành.
Mạng máy tính. Mạng
Internet.
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.
2|Thiết kế phần mềm
Từ 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.
2. IT (infomation technology): CNTT và ứng dụng.
3. DL (digital literacy): Học vấn số hóa phổ thông.
Tóm tắt như sau:
CS - Khoa học máy tính: 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.
IT - CNTT và ứng dụng: Sử dụng công nghệ xử lý số, phần mềm để ứng dụng và
tạo ra các sản phẩm số. Ví dụ đồ họa, phim, ảnh, ứng dụng trong các công việc
đời sống.
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 &
3|Thiết kế phần mềm
Đ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).
Khoa học máy tính
CS
Ứng dụng CNTT truyền thông
IT
DL
Kỹ năng số hóa phổ
thông
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
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.
Sử dụng công nghệ xử lý số,
phần mềm để ứng dụng và
tạo ra các sản phẩm số phục
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
nay. Có thể ví như học
đếm trong môn Toán và
học đánh vần trong môn
Tiếng Việt.
Mảng kiến thức này sẽ được
phân thành 2 nhóm:
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
1. Nhóm ứng dụng CNTT,
phần mềm vào các chuyên
ngành, môn học khác với
Tin học.
2. Nhóm các ứng dụng
CNTT, truyền thông bên
trong ICT.
4|Thiết kế phần mềm
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
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
dạy ở cấp Tiểu học và
được học ngoài giờ học
chính thức.
Hướng 1 sẽ được chuyển
giao cho các bộ môn chuyên
biệt. Môn Tin học chỉ còn
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:
Tin học
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 đề.
Toán học
Học đếm,
bảng cửu
chương
Ngữ văn
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.
Bảng chữ
cái, học
đánh vần
Đo lường
Đọc hiểu
Cơ sở toán học:
số, tập hợp, phép
tính tích phân
Ngữ pháp, ngôn
ngữ, cảm thụ
văn học
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
5|Thiết kế phần mềm
Tin 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 Hệ thống máy tính được sử
tính
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
môn học.
Máy tính là trung tâm của
môn học.
Định hướng
cốt lõi
Tập trung, quan tâm đến sự
phát triển của hệ thống
hướng tới nhu cầu người sử
dụng.
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
để giải quyết.
Sản phẩm
Quan tâm đến việc sử dụng
các phần mềm, hệ thống đã
có để đáp ứng nhu cầu hiện
tại.
Quan tâm đến việc thiết kế các
hệ thống, phần mềm mới.
6|Thiết kế phần mềm
IT - 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
7|Thiết kế phần mềm
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 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.
8|Thiết kế phần mềm
2010-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.
9|Thiết kế phần mềm
Hơ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.
10 | T h i ế t k ế p h ầ n m ề m
Chủ đề 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
11 | T h i ế t k ế p h ầ n m ề m
cuố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.
- Trò chơi mưa từ.
- Trò chơi Luyện trí nhớ.
- Trò chơi Ô chữ.
Chủ đề 5. Phần mềm tập chuột, bàn phím
Mục tiêu:
- Các phương pháp điều khiển nhân vật bằng chuột và bàn phím.
- Một số kỹ thuật xử lý chuột.
- 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.
12 | T h i ế t k ế p h ầ n m ề m
- 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.
13 | T h i ế t k ế p h ầ n m ề m
14 | T h i ế t k ế p h ầ n m ề m
MỤ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
15 | T h i ế t k ế p h ầ n m ề m
2. 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
16 | T h i ế t k ế p h ầ n m ề m
5. 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
17 | T h i ế t k ế p h ầ n m ề m
18 | T h i ế t k ế p h ầ n m ề m
Chủ đề 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.
Nội dung chính
Nhắc lại rằng những điều được viết ra trong bài học này, cũng như quyển sách
này, chỉ có ý nghĩa trong phạm vi môi trường lập trình kéo thả Scratch. Tuy nhiên
nó có ích cho tất cả những ai đã và đang làm trong ngành CNTT, đặc biệt là lập
trình và thiết kế phần mềm.
1. Ai là người thiết kế phần mềm?
Người thiết kế phần mềm bằng lập trình Scratch phải là người đóng các vai trò
sau (4 trong 1).
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.
19 | T h i ế t k ế p h ầ n m ề m
- 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à
20 | T h i ế t k ế p h ầ n m ề m
ngườ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
dữ liệu một cách hợp lý nhất.
Nguyên tắc chung của việc thiết kế dữ liệu hệ thống là vừa đủ, tiết kiệm.
2.4. Sơ đồ thiết kế hệ thống
Sơ đồ thiết kế hệ thống là Sơ đồ mô tả quan hệ giữa các nhân vật chính và trình tự
các hoạt động chính của phần mềm.
Thiết kế Sơ đồ thiết kế hệ thống là một trong những bước quan trọng nhất của quá
trình thiết kế chương trình và phần mềm.
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.
Tìm hiểu con vật
21 | T h i ế t k ế p h ầ n m ề m
Math Board
4. 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
ăn thịt các động vật khác.
cánh cụt
Loài chim sống phổ biến ở châu Nam Cực, có
cánh ngắn.
cá mập
Loài cá có răng sống dưới biển, chuyên ăn thịt các
loại cá khác.
Ý 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.
22 | T h i ế t k ế p h ầ n m ề m
- 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.
Tim hieu con
vat.sb2
Giáo viên, người hướng dẫn
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.
(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
23 | T h i ế t k ế p h ầ n m ề m
(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
Ý nghĩa
Ghi chú thêm
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.
Kiểu
Tên biến nhớ
Ý nghĩa
Ghi chú
Biến
đơn
Aname,
Bname,
Cname, Dname
Lưu 4 thông tin đáp án của câu
hỏi trắc nghiệm.
Giá trị được lấy từ bảng
Animals.
PA_correct
Lưu chỉ số của đáp án đúng
trong số 4 đáp án được xếp có
thứ tự A, B, C, D của các biến
nhớ trên.
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.
Animals,
Animal_list
Bộ dữ liệu gốc của chương trình.
Độ 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.
List
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.
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.
24 | T h i ế t k ế p h ầ n m ề m
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 đượ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).
(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.
Chọn ngẫu nhiên 4 phương án, gán
vào các biến nhớ Aname, Bname,
Cname, Dname; sinh ngẫu nhiên 1
phương án đúng, hiển thị trang phục
theo phương án đúng.
Next
Kiểm tra
choice và
đáp án đúng,
hiện thông
báo Đúng
rồi, hoặc Sai
rồi. Chờ 2
giây và gửi
thông điệp
Next.
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.
Done
Next
Click chuột
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.
(5) Coding chương trình
1. Việc lập trình bắt đầu từ sân khấu, thực hiện 1 lệnh duy nhất là gửi thông điệp
Next.
25 | T h i ế t k ế p h ầ n m ề m