SlideShare une entreprise Scribd logo
1  sur  45
Télécharger pour lire hors ligne
2016
Dạy số nhị phân không cần máy
tính?
Tổng quan môi trường lập trình
Scratch
Bản chất của tư duy máy tính
CS4S. Computer Science for Schools
2 | P a g e
Mục lục
Vì sao CS4S?..................................................................................................................3
Bản chất của tư duy máy tính .........................................................................................4
The nature of computational thinking ............................................................................4
Chương trình khung và chi tiết cho môn Khoa học máy tính trong nhà trường ............8
Thuật toán mã hóa Học sinh & Giáo viên trong các phần mềm quản lý nhà trường phổ
thông .............................................................................................................................11
CHỦ ĐỀ 1: HỆ NHỊ PHÂN.........................................................................................18
Tổng quan Scratch........................................................................................................26
Xếp số thứ tự trong ma trận vuông...............................................................................39
Danh sách cộng tác viên CS4S.....................................................................................45
CS4S. Computer Science for Schools
3 | P a g e
Vì sao CS4S?
Trên tay các bạn là số đầu tiên của ấn phẩm điện tử CS4S: Computer Science for
Schools có thể dịch là "Khoa học máy tính trong nhà trường". Vậy CS4S ra đời
nhằm mục đích gì và vì sao nó lại ra đời tại điểm này?
Đối tượng của CS4S
Đối tượng của CS4S trước tiên dành cho các giáo viên bộ môn Tin học đang giảng
dạy môn học này trong các nhà trường phổ thông và đại học, cao đẳng.
Tuy nhiên ấn phẩm không chỉ hướng đến đội ngũ giáo viên tin học mà tất cả giáo viên
có quan tâm đến lĩnh vực này, đến việc ứng dụng CNTT trong giảng dạy.
Đối tượng chính, đông đảo của CS4S chắc chắn phải là các em học sinh, sinh viên say
mê CNTT, say mê lập trình, say mê với các ứng dụng đa dạng của CNTT trong cuộc
sống.
Mục đích của CS4S
Mục đích chính của ấn phẩm CS4S là tuyên truyền, hỗ trợ, quảng bá cho các chương
trình, định hướng giảng dạy, nghiên cứu môn Tin học trong nhà trường, nhằm giúp
thêm cho giáo viên và học sinh có thêm thông tin, kiến thức và định hướng cho môn
học này.
Hiện trạng của môn Tin học trong nhà trường Việt Nam hiện nay:
- Là môn học có chương trình không đồng bộ, chắp vá và lạc hậu với thực tế.
- Đội ngũ giáo viên Tin học không được coi trọng, ít có điều kiện đào tạo và cập nhật
kiến thức mặc dù bản thân ngành CNTT, ICT là ngành có sự phát triển nhanh nhất
trên thế giới.
- Môn Tin học luôn là môn học phụ, do đó việc học tập, giảng dạy môn học này có rất
nhiều bất cập trên thực tế.
Yêu cầu thiết lập lại chương trình môn Tin học, nâng cao trình độ giáo viên Tin học,
nâng cao vai trò của môn học này trong nhà trường là yêu cầu cấp bách. CS4S ra đời
với mục đích cùng tham gia vào quá trình thay đổi này.
Vì sao lại là Computer Science mà không là IT hay ICT
Đây là câu hỏi rất thú vị, chúng tôi sẽ lần lượt trả lời trong các bài viết của CS4S.
CS4S phát hành như thế nào?
Dự kiến CS4S sẽ được phát hành 1 tháng 1 số, ấn phẩm sẽ là điện tử và hoàn toàn
miễn phí cho cộng đồng.
Tuy nhiên việc phát hành các số cụ thể còn phụ thuộc
Liên hệ với CS4S
Hòm thư chính thức của CS4S sẽ là cs4s.vn@gmail.com.
CS4S. Computer Science for Schools
4 | P a g e
Bản chất của tư duy máy tính
The nature of computational thinking
Bài viết này là bản dịch nhanh từ 1 tài liệu có tên
Computational Thinking. A Guide for Teacher, nhóm tác
giả là các chuyên gia về chương trình môn Tin học trong
nhà trường của Anh quốc do Simon Humphreys thực
hiện. Bản dịch này là chương đầu tiên của bài báo trên.
Bản dịch của bạn Phạm Thị Nga, giáo viên tin trường
chuyên Lam Sơn, Thanh Hoá.
Bản chất của tư duy máy tính
Tư duy máy tính cung cấp nền tảng mạnh mẽ để nghiên cứu tính toán, có ứng dụng
rộng rãi không chỉ ở lĩnh vực tính toán. Đó là quá trình nhận biết các khía cạnh của
tính toán trong thế giới xung quanh chúng ta, các công cụ ứng dụng và kỹ thuật từ
máy tính để hiểu và giải thích lý do về hệ thống và các quá trình tự nhiên, xã hội, nhân
tạo. Nó cho phép học sinh giải quyết bài toán, chia chúng thành những phần có thể
giải quyết và đưa ra các thuật toán để giải quyết chúng. Thuật ngữ tư duy máy tính lần
đầu tiên được sử dụng bởi Seymour Papert, mặc dù Giáo sư Jeannette Wing phổ biến
rộng rãi các ý tưởng trong việc ủng hộ tư duy máy tính cho tất cả các tân sinh viên đại
học (Wing, 2006). Bà định nghĩa tư duy máy tính là "... các quá trình suy nghĩ tham
gia xây dựng nên các bài toán và lời giải của nó mà các lời giải được mô tả trong một
dạng có thể được thực hiện bởi một trung gian xử lý thông tin một cách hiệu quả"
(Cuny, Snyder, Wing, 2010, cited in Wing, 2011, p.20) và “lời giải có thể được mô tả bởi người
hoặc máy, hoặc phổ biến hơn là bởi sự kết hợp của người và máy.” (Wing, 2011, p. 20).
Trọng tâm rõ ràng tập trung vào quá trình suy nghĩ của học sinh, không phải là sản
phẩm của giả tưởng hay bằng chứng. Tư duy máy tính là sự phát triển của các kĩ năng
suy nghĩ, nó hỗ trợ cho việc học tập và hiểu biết.
Các khái niệm của tư duy máy tính
Tư duy máy tính là một quá trình nhận thức hay tư tưởng liên quan đến suy luận logic
để giải bài toán và các vật phẩm (artefacts), các thủ tục, hệ thống được hiểu rõ hơn.
Nó bao gồm:
 Khả năng suy nghĩ thuật toán;
 Khả năng suy nghĩ về các điều kiện phân chia;
 Khả năng suy nghĩ về sự khái quát, xác định và cách sử dụng các dạng mẫu
 Khả năng suy nghĩ trừu tượng, lựa chọn các trình bày tốt
 Khả năng suy nghĩ về các điều kiện đánh giá, ước lượng.
CS4S. Computer Science for Schools
5 | P a g e
Các kĩ năng tư duy máy tính cho phép học sinh tiếp cận các phần của nội dung trong
chủ đề Tính toán. Quan trọng hơn, chúng liên quan tới kĩ năng tư duy và giải quyết
vấn đề trong toàn bộ chương trình đào tạo và cuộc sống nói chung.
Tư duy máy tính có thể được áp dụng cho hàng loạt các vật phẩm bao gồm: hệ thống,
quy trình, đối tượng, các thuật toán, các vấn đề, giải pháp, trừu tượng, và tập dữ liệu
hoặc thông tin. Trong các khái niệm nhắc tới sau đây, vật phẩm dùng để chỉ một đối
tượng bất kì trong số này.
Suy luận logic
Suy luận logic cho phép học sinh nhận thức về sự vật bằng cách phân tích và kiểm tra
thực tế thông qua suy nghĩ rõ ràng, chính xác. Nó cho phép học sinh tiếp cận tri thức
và các mô hình để thực hiện và xác minh các dự đoán, rút ra kết luận. Nó thường được
sử dụng rộng rãi bởi các học sinh khi các em kiểm tra, gỡ lỗi và chính xác hóa các
thuật toán. Suy luận logic là ứng dụng mới lạ của các khái niệm tư duy thuật toán khác
để giải quyết bài toán.
Các học sinh thiết kế và công nghệ thực hiện thiết kế mô hình một chiếc xe tải, lựa
chọn vật liệu cho các yếu tố khác nhau của dự án. Vật liệu được sử dụng tổng quát cho
tới khi họ nhận ra rằng tính chất của một loại vật liệu được sử dụng trong một tình
huống làm cho nó phù hợp để sử dụng trong một bối cảnh hoàn toàn khác. Có thể
phân chia các dự án mới vào các bộ phận khác nhau, đòi hỏi vật liệu khác nhau, là một
ví dụ về phân chia. Như vậy, học sinh đang sử dụng suy luận logic để thiết kế một
chiếc xe tải.
Học sinh sử dụng suy luận logic khi học tập về lực hấp dẫn bằng một chuỗi quả lắc
được treo từ nắp một bình thủy tinh. Trước khi nghiêng bình, học sinh có thể đưa ra
dự đoán về các trạng thái của chuỗi quả lắc. Sau đó, các em có thể đánh giá các kết
quả thử nghiệm của mình. Các em có thể khái quát hóa các trạng thái với các tình
huống khác, chẳng hạn như một cần cẩu. Việc sử dụng mới trong tìm hiểu tính chất
của lực hấp dẫn là các suy luận logic.
Suy luận logic là chìa khóa cho phép học sinh gỡ lỗi mã nguồn chương trình của các
em. Các em có thể làm việc cùng với các bạn để đánh giá mã nguồn lẫn nhau, tránh lỗi
và gợi ý sửa lỗi. Trong quá trình này, các em có thể có cơ hội để sử dụng sự trừu
tượng, đánh giá thiết kế thuật toán. Việc sử dụng mới trong điều chỉnh sai sót mã
nguồn đòi hỏi phải suy luận logic.
Trừu tượng
Trừu tượng làm cho ta dễ suy nghĩ hơn về các vấn đề hoặc hệ thống. Trừu tượng là
quá trình làm cho một vật phẩm dễ hiểu hơn thông qua việc bỏ bớt các chi tiết không
cần thiết. Một ví dụ điển hình là bản đồ tàu điện ngầm London. London là một hệ
thống rất phức tạp. Các mô tả về London trong những cách riêng (thường là các bản
đồ hoặc hình ảnh) phục vụ những người dùng khác nhau. Các bản đồ tàu điện ngầm
London là một trừu tượng vô cùng tinh tế chỉ với đầy đủ thông tin cho các du khách
để định hướng mạng lưới tàu điện ngầm mà không có gánh nặng không cần thiết của
thông tin như khoảng cách và vị trí địa lý chính xác. Nó là một đại diện có chứa chính
xác các thông tin cần thiết để lập kế hoạch một tuyến đường từ một trạm đến một trạm
khác, ngoài ra không còn thông tin gì khác.
CS4S. Computer Science for Schools
6 | P a g e
Các kỹ năng trong trừu tượng là việc lựa chọn làm ẩn đi các chi tiết hợp lí, làm cho
các vấn đề trở nên dễ dàng hơn, mà không bị mất bất cứ thông tin quan trọng nào. Một
phần quan trọng của nó là trong việc lựa chọn một mô tả tốt cho một hệ thống.
Ví dụ, một chương trình máy tính chơi cờ là một khái niệm trừu tượng. Nó là một tập
hợp hữu hạn và chính xác các quy tắc thực hiện mỗi khi đến lượt của máy tính. Nó
khác xa với tương tự, quá trình thần kinh cảm xúc, thành kiến và phân tâm thực hiện
bằng một người chơi cờ. Nó là một sự trừu tượng bởi vì các chi tiết không cần thiết
của những quy trình được gỡ bỏ.
Đánh giá
Đánh giá là quá trình đảm bảo rằng một giải pháp, dù một thuật toán, hệ thống hay
quá trình phù hợp với mục đích. Rất nhiều tính chất khác nhau của các giải pháp cần
phải được đánh giá. Chúng có đúng không? Có đủ nhanh không? Chúng có sử dụng
các nguồn lực kinh tế không? Có dễ dàng cho người sử dụng không? Có thúc đẩy một
kinh nghiệm thích đáng không? Sự đánh đổi cần phải được thực hiện, nhưng rất hiếm
khi có một giải pháp lý tưởng cho tất cả các tình huống. Có một trọng tâm cụ thể và
cực kì thường xuyên dựa trên sự chú ý đến chi tiết trong đánh giá dựa trên tư duy máy
tính.
Các giao diện máy tính đang được tiếp tục phát triển để đáp ứng nhu cầu của những
người sử dụng khác nhau. Ví dụ, một thiết bị y tế cần thiết để cung cấp thuốc tự động
cho bệnh nhân, nó cần phải được lập trình một cách đơn giản, an toàn, nhanh chóng,
không sai sót. Các giải pháp phải đảm bảo rằng các y tá sẽ có thể thiết lập các liều
thuốc một cách dễ dàng mà không có các sai lầm và nó cũng sẽ không gây bực bội
cho bệnh nhân và y tá khi sử dụng. Trong thiết kế đề xuất sẽ có một sự đánh đổi phải
được thực hiện giữa tốc độ của các dữ liệu vào (hiệu quả) và tránh lỗi (hiệu quả và khả
năng sử dụng). Các thiết kế sẽ được đánh giá dựa trên đề xuất chỉ định điều trị của các
bác sĩ, nhà quản lý và các chuyên gia thiết kế thiết bị y tế (tiêu chuẩn - criteria) và các
quy tắc chung liên quan đến thiết kế tốt (heuristics). Criteria, heuristics và nhu cầu của
người sử dụng cho phép sản phẩm phải được thực hiện một cách hệ thống và chặt chẽ.
Tư duy thuật toán
Tư duy thuật toán tư duy thuật toán là một cách để nhận một lời giải thông qua một
định nghĩa rõ ràng các bước. Một số bài toán chỉ có một bước giải. Các bài toán được
giải bằng cách áp dụng lời giải lần lượt từng bước. Tư duy thuật toán góp phần khi các
bài toán tương tự có thể được giải quyết lặp đi lặp lại. Mỗi lần giải chúng, ta không
cần phải suy nghĩ lại lần nữa. Học thuật toán để thực hiện phép nhân, chia ở trường là
một ví dụ. Nếu quy tắc đơn giản được tuân thủ một cách chính xác, bởi một máy tính
hoặc một người, là lời giải cho bất kỳ phép nhân nào tìm thấy. Một khi các thuật toán
được hiểu, nó không cần phải làm từ đầu cho mọi bài toán mới.
Tư duy thuật toán là khả năng để suy nghĩ về trình tự và quy tắc như một cách để giải
quyết vấn đề hoặc hiểu tình huống. Đó là một kỹ năng cốt lõi mà học sinh phát triển
khi các em học để viết các chương trình máy tính của mình.
Sự phân chia
Sự phân chia là một cách suy nghĩ về các vật phẩm trong các bộ phận cấu thành của
nó. Các bộ phận có thể được hiểu, giải quyết, phát triển và đánh giá riêng rẽ. Điều này
CS4S. Computer Science for Schools
7 | P a g e
làm cho các bài toán phức tạp dễ giải hơn, các tình huống mới được hiểu tốt hơn và
các hệ thống lớn dễ thiết kế hơn.
Ví dụ, nấu bữa sáng có thể chia nhỏ hay phân ra thành các việc riêng rẽ như: nướng
bánh mì, pha trà, rán trứng,... Mỗi việc này, đến lượt nó, lại có thể được chia nhỏ ra
thành một tập các bước. Thông qua phân chia các nhiệm vụ ban đầu, mỗi phần có thể
được phát triển và tích hợp sau trong tiến trình. Hãy xem xét việc phát triển một trò
chơi: những người khác nhau có thể thiết kế và tạo ra các mức độ khác nhau một cách
độc lập, miễn là khía cạnh quan trọng được thoả thuận trước. Một mức độ chơi đơn
giản cũng có thể được phân tách thành nhiều phần, chẳng hạn như chuyển động giống
như cuộc sống của một nhân vật, di chuyển nền và thiết lập các quy tắc về cách nhân
vật tương tác.
Sự khái quát (Các dạng mẫu)
Sự khái quát gắn liền với việc xác định các dạng mẫu, tương đồng và kết nối, khai
thác những tính năng này. Đó là một cách nhanh chóng giải quyết những vấn đề mới
dựa trên những lời giải trước cho bài toán và xây dựng trên kinh nghiệm trước đó. Đặt
câu hỏi như "Bài toán này tương tự bài toán nào đã giải được?" Và "Chúng khác nhau
như thế nào?" là rất quan trọng. Đó như là quá trình nhận ra các dạng mẫu trong các
dữ liệu được sử dụng và các quy trình/ chiến lược đang được sử dụng. Các thuật toán
giải quyết một số bài toán cụ thể có thể được điều chỉnh để giải quyết một lớp các bài
toán tương tự. Sau đó, có thể áp dụng lời giải chung bất cứ khi nào gặp phải một bài
toán của lớp đó.
Ví dụ, một học sinh sử dụng một con rùa vẽ (floor-turtle) để vẽ một loạt các hình, như
hình vuông, hình tam giác. Học sinh viết một chương trình máy tính để vẽ hai hình
này. Sau đó, nếu muốn vẽ một hình bát giác và một hình có 10 mặt từ hình vuông và
hình tam giác, các em nhận ra có một mối quan hệ giữa số mặt của hình với số đo góc
của nó. Từ đó, các em có thể viết một thuật toán diễn tả mối quan hệ này và sử dụng
nó để vẽ bất cứ đa giác đều nào.
CS4S. Computer Science for Schools
8 | P a g e
Chương trình khung và chi tiết cho môn
Khoa học máy tính trong nhà trường
Bản gốc: Computer Science: A Curriculum for Schools. Đây là tài liệu mô
tả phần kiến thức CS (Computer Science) Khoa học máy tính trong chương
trình tổng thể môn Tin học của Bộ GD Anh quốc. Môn "tin học" của nước Anh
có tên gọi "Computing" và do đó nhiều dịch giả đã dịch thành "tính toán" hoặc
"máy tính".
Bản dịch này của bạn Trần Thị Hiên, giáo viên Tin học tại THPT Nam Cao, Lý
Nhân, Hà Nam, thực hiện.
Sẽ còn nhiều phần tiếp theo.
1. Tầm quan trọng
Khoa học máy tính là ngành khoa học nghiên cứu các nguyên lý và hoạt động, nền
tảng cho sự hiểu biết về mô hình tính toán và các ứng dụng của chúng trong sự phát
triển của các hệ thống máy tính. Tại trung tâm khái niệm về tư duy tính toán: một hình
thức suy nghĩ đã vượt xa cả phần cứng lẫn phần mềm, và nó tạo thành một khuôn khổ
trong đó các vấn đề và hệ thống xảy ra trong khuôn khổ đó. Hình thức suy nghĩ này
được hỗ trợ và bổ sung bởi một khối lượng lớn kiến thức lý thuyết lẫn thực hành, và
bởi một tập các kỹ thuật mạnh mẽ để phân tích, mô hình hóa và giải quyết vấn đề.
Khoa học máy tính liên quan sâu sắc đến cách máy tính và hệ thống máy tính làm
việc, cách chúng được thiết kế và được lập trình. Học sinh học tính toán sẽ (hiểu)có
cái nhìn sâu sắc về tất cả các loại hệ thống tính toán dù nó có gồm máy tính hay
không. Các lĩnh vực ảnh hưởng đến suy nghĩ tính toán như là: sinh học, hóa học, ngôn
ngữ học, tâm lý học, kinh tế và thống kê. Nó cho phép chúng ta giải quyết vấn đề,
thiết kế hệ thống và hiểu vể năng lực và giới hạn của con người và sự thông minh của
máy tính. Nó là một kỹ năng cái mà làm tăng khả năng và cái mà tất cả học sinh nên
nhận thức được và có khả năng ở kỹ năng đó. Ngoài ra, những học sinh có khả năng
suy nghĩ về tính toán thì có thể giỏi hơn trong khả năng khái quát và hiểu hơn các
công nghệ dựa trên máy tính, vì vậy cũng được trang bị tốt hơn để sống trong xã hội
hiện đại.
Khoa học máy tính là một môn thực hành, nơi sự phát minh và khả năng xoay sở (sự
tháo vát) được khuyến khích. Học sinh được mong là có thể áp dụng các nguyên tắc
học thuật mà chúng học vào việc hiểu các hệ thống thực tế và vào việc tạo ra các giả
tưởng có mục đích. Sự kết hợp các quy tắc, thực hành và sáng tạo làm nó trở thành
một cực hữu ích và một chủ đề sáng tạo mạnh mẽ, tràn ngập hứng thú.
1.1. Khoa học máy tính là một môn học
Giáo dục làm tăng chất lượng sống cũng như kỹ năng sống của học sinh. Nó chuẩn bị
cho những người trẻ một thế giới, cái chưa từng tồn tại, các công nghệ hấp dẫn mà
chưa được phát minh, các công nghệ hiện tại và những thách thức mà chúng ta chưa
nhận thức được.
CS4S. Computer Science for Schools
9 | P a g e
Để làm điều này, giáo dục mong muốn trước tiên là dạy các môn học có giá trị dài hạn
hơn là những kỹ năng có tính hữu dụng ngắn hạn, mặc dù sau này chắc chắn là hữu
ích. Một môn học đặc trung bởi:
 Một kiến thức chính (xuyên suốt) bao gồm các ý tưởng có khả năng ứng dụng
rộng và các khái niệm, và một khung lý thuyết trong đó những ý tưởng và khái
niệm phù hợp.
 Một tập các kỹ thuật và phương pháp mà có thể được ứng dụng trong giải
quyết các vấn đề và gia tăng kiến thức.
 Một cách nghĩ và làm việc mà cung cấp cách nhìn về thế giới khác biệt so với
các môn học khác.
 Tuổi thọ: một môn học không thể thay đổi một cách nhanh chóng mặc dù chủ
đề có thể cải tiến tiến bộ hơn.
 Độc lập với công nghệ cụ thể, đặc biệt là những công nghệ có tuổi thọ ngắn.
Khoa học máy tính là một môn học với tất cả các đặc điểm trên. Nó bao gồm các
nguyên tắc cơ bản (như lý thuyết tính toán) và các khái niệm và ý tưởng có khả ngăng
ứng dụng rộng (như sử dụng mô hình quan hệ để nắm bắt cấu trúc trong dữ liệu). Nó
kết hợp các kỹ thuật và phương pháp để giải quyết vấn đề và năng cao tri thức (như
trừu tượng và lý luận logic), và một cách khác biệt về cách làm việc và suy nghĩ đặt
nó ngoài các môn học khác (như tư duy tính toán). Nó có tuổi thọ (hầu hết các ý tưởng
và khái niệm đều tồn tại 20 hoặc trên 20 năm cách đây và vẫn tồn tại đến ngày nay),
và mỗi nguyên tắc cốt lõi có thể được dạy hoặc minh họa mà không cần sử dụng một
công nghệ cụ thể nào.
1.2. Khoa học máy tính là một môn học STEM
Khoa học máy tính là một môn học STEM (viết tắt của các từ Science -Technology-
Engineering – Math) tinh túy, nó có các thuộc tính của các môn kỹ thuật, toán học,
khoa học và công nghệ như:
 Nó có cơ sở lý luận và nền tảng toán học của riêng mình, và liên quan đến ứng
dụng của lý luận và logic.
 Nó bao gồm một phương pháp tiếp cận để đo lường và thử nghiệm.
 Nó liên quan đến thiết kế, xây dựng và kiểm thử các chế phẩm có mục đích.
 Nó yêu cầu sự hiểu biết, sự đánh giá cao và áp dụng một loạt các công nghệ.
Hơn nữa, khoa học máy tính cung cấp cho học sinh cái nhìn sâu sắc vào các môn học
STEM khác, và với những kỹ năng và tri thức đó có thể được áp dụng để giải quyết
các vấn đề trong các môn học đó.
Mặc dù chúng là vô hình, nhưng các hệ thống phần mềm là một trong những chế
phẩm lớn và phức tạp nhất mà con người đã tạo ra. Sự kết hợp giữa phần mềm và
phần cứng là cần thiết để tạo nên các hệ thống dựa trên tính toán, gia tăng mức độ
phức tạp. Hiểu sự phức tạp này và đưa nó dưới sự kiểm soát là thách thức trọng tâm
của môn học. Trong một thế giới nơi mà các hệ thống dựa trên máy tính trở nên phổ
biến, những cá nhân và tổ chức xã hội mà được trang bị tốt nhất để đáp ứng những
thách thức này sẽ có một lợi thế cạnh tranh.
CS4S. Computer Science for Schools
10 | P a g e
Sự kết hợp của tư duy tính toán, một tập hợp các nguyên tắc tính toán và phương pháp
tính toán để giải quyết vấn đề là sức mạnh duy nhất. Khả năng mang lại sự kết hợp
này đẻ mang về những vấn đề thực tế là trung tâm của sự thành công của khoa học, kỹ
thuật, kinh tế và thương mại trong thế kỷ hai mốt.
1.3. Khoa học máy tính và công nghệ thông tin là bổ sung không phải là
đồng nhất
Khoa học máy tính và công nghệ thông tin là hai đối tượng bổ sung cho nhau. Khoa
học máy tính dạy cho học sinh làm thế nào để trở thành một tác giả hiệu quả của các
công cụ tính toán. Trong khi đó, công nghệ thông tin dạy làm thế nào để người dùng
thi hành các công cụ đó (ví dụ như phần mềm). Sự gần kề nhau này chỉ là một phần
của sự thật, bởi vì nó tập trung quá hẹp vào máy tính như một công nghệ, còn tính
toán thì rộng hơn điều đó. Như nhận xét nổi tiếng của Dijkstra , “khoa học máy tính
không nói nhiều hơn về máy tính hơn thiên văn học nói về kính thiên văn”. Cụ thể
hơn:
 Khoa học máy tính là môn học tìm để hiểu và khám phá về thế giới quanh
chúng ta, cả về tự nhiên lẫn nhân tạo, trong sự tính toán. Khoa học máy tính là
đặc biệt, nhưng không có nghĩa là độc quyền, liên quan đến nghiên cứu, thiết
kế và triển khai các hệ thống máy tính, và hiểu các nguyên tắc cơ bản những
thiết kế này.
 Công nghệ thông tin đề cập đến ứng dụng có mục đích của các hệ thống máy
tính để giải quyết các vấn đề thế giới thực, bao gồm các vấn đề như nhu cầu
kinh doanh, đặc điểm kỹ thuật và lắp đặt phần cứng lẫn phần mềm, và đánh giá
khả năng sử dụng. Đó là khả năng sử dụng hiệu quả, sáng tạo và khám phá của
công nghệ.
Chúng ta muốn các bạn trẻ hiểu và đóng vai trò tích cực trong thế giới kỹ thuật số bao
quanh chúng, chứ không phải là những khách hàng thụ động của một công nghệ đục
hay bí ẩn. Hiểu đúng khái niệm tính toán sẽ giúp chúng thấy làm thế nào để tận dụng
tốt nhất hệ thống họ sử dụng, và làm thế nào để giải quyết vấn đề khi gặp sự cố. Hơn
nữa người dân có thể nghĩ về thuật ngữ “computational” (tính toán) sẽ có thể hiểu và
lý luận về các vấn đề liên quan đến sự tính toán như các sáng chế phần mềm, đánh cắp
định danh, kỹ thuật di truyền, hệ thống bỏ phiếu điện tử cho các cuộc bầu cử, và như
vậy. Trong một thế giới tràn ngập về tính toán, mỗi người rời khỏi ghế nhà trường nên
có một sự hiểu biết về khoa học tính toán (computing).
(Còn tiếp ….)
CS4S. Computer Science for Schools
11 | P a g e
Thuật toán mã hóa Học sinh & Giáo viên
trong các phần mềm quản lý nhà trường
phổ thông
Bùi Việt Hà
Việc mã hóa Học sinh và Giáo viên trong các phần mềm quản lý nhà
trường phổ thông đóng một vai trò hết sức quan trọng. Bài báo này mô
tả thuật toán chủ yếu dùng để mã hóa Học sinh và Giáo viên của phần
mềm. Thuật toán này đã được áp dụng trong phần mềm School
Viewer của công ty School@net.
Mục đích
Việc mã hóa Học sinh và Giáo viên trong nhà trường Việt Nam phải thỏa mãn được
các mục đích sau đây:
M1. Tối ưu hóa việc sử dụng chữ và số đề mã hóa
M2. Không quá phức tạp để có thể nhanh chóng mã hóa và giải mã
M3. Tính duy nhất: mỗi học sinh và giáo viên phải có một mã (khóa) duy nhất không
phụ thuộc vào trường và địa phương mà mình đang học tập, làm việc. Hay nói cách
khác mã phải có tác dụng trên qui mô toàn quốc.
M4. Mỗi mã học sinh và giáo viên không dài quá 12 ký tự (chữ+số).
Yêu cầu thuật toán
Y1. Thuật toán đảm bảo việc sinh mã (cho học sinh và giáo viên) phải nhanh tức thời
và chính xác.
Y2. Thuật toán có thể được giải mã.
Y3. Tính duy nhất của mã sinh phải đảm bảo tối thiểu 100 năm (tính từ năm 2000).
Tức là trong suốt thời gian 100 năm, mã được sinh ra sẽ là duy nhất và không bị lặp
lại.
Cơ sở bài toán mã hóa học sinh / giáo viên
Mã hóa với cơ sở 64
CS4S. Computer Science for Schools
12 | P a g e
Để mô tả và lưu trữ dễ dàng các mã hóa của học sinh và giáo viên, bắt buộc phải sử
dụng các chữ cái latinh và chữ số. Như vậy phải sử dụng 10 chữ số + 52 chữ cái latinh
+ 2 ký tự thông dụng (dấu _ và dấu #) = 64 ký tự để mô phỏng mã hóa.
Như vậy bảng mã hóa của phần mềm (tạm ký hiệu là SVC - School Viewer Coding)
được mô tả trong bảng sau:
SVC Decimal SVC Decimal SVC Decimal SVC Decimal
0 0 G 16 W 32 m 48
1 1 H 17 X 33 n 49
2 2 I 18 Y 34 o 50
3 3 J 19 Z 35 p 51
4 4 K 20 a 36 q 52
5 5 L 21 b 37 r 53
6 6 M 22 c 38 s 54
7 7 N 23 d 39 t 55
8 8 O 24 e 40 u 56
9 9 P 25 f 41 v 57
A 10 Q 26 g 42 w 58
B 11 R 27 h 43 x 59
C 12 S 28 i 44 y 60
D 13 T 29 j 45 z 61
E 14 U 30 k 46 _ 62
F 15 V 31 l 47 # 63
Như vậy với bảng mã 64 ký tự của SVC, mỗi 6-bit sẽ được mô tả thành 1 "ký tự"
trong phần mềm, hay mỗi 3 byte sẽ được mô tả thành 4 ký tự trong SVC.
Thông tin mã hóa
Các thông số cần thiết để mã hóa bao gồm:
1. Ngày sinh
CS4S. Computer Science for Schools
13 | P a g e
Ngày sinh của học sinh/giáo viên được tính như một số nguyên là số ngày tính từ năm
1900.
Số lượng ngày cho phép tính là 200 năm (1900-2099) là 200 x 365 =73000  2 bytes
(16 bits). Chương trình sẽ sử dụng 17 bits = 131,072 để lưu mã hóa thông số này.
Chú ý: trường hợp học sinh không nhớ chính xác ngày sinh thì chương trình sẽ tự
động gán giá trị ngày ngẫu nhiên để làm thông tin mã hóa.
2. Nam/Nữ
Sử dụng 1 bit cho thông số này.
3. Quê quán
Hiện tại sử dụng dữ liệu bao gồm 61 tỉnh thành  7 bits
Như vậy cho phép mở rộng trong tương lai lên 128 tỉnh/thành phố.
4. Mã hóa họ cha
Phần họ của học sinh được tách ra và mã hóa theo một CSDL lưu các Họ chuẩn của
Việt Nam. Số lượng các họ của người Việt là hữu hạn và được lưu trong một bảng có
tên là rFamilyNamesVN. Tổng số lượng các họ của người Việt sẽ không quá 12 bits
(4096).
Chú ý: trường hợp khi nhập dữ liệu họ không có trong bảng CSDL thì chương trình sẽ
tự động nạp họ này vào bảng tương ứng tại vị trí cuối cùng. Giá trị Checksum-4 sẽ đặt
là 1.
5. Mã hóa theo tên học sinh
Phần tên học sinh (sau khi đã loại đi Họ + đệm) sẽ được mã hóa theo một CSDL lưu
các tên chuẩn của người Việt Nam. Số lượng tên của người Việt là hữu hạn và lưu
trong bảng rNamesVN. Tổng số lượng tên người Việt dự đoán không quá 8,192  13
bits.
Chú ý: trường hợp khi nhập dữ liệu tên không có trong bảng CSDL thì chương trình
sẽ tự động nạp tên này vào bảng tương ứng tại vị trí cuối cùng. Giá trị Checksum-5 sẽ
đặt là 1.
6. Tham số thời gian
Tham số thời gian được đưa vào để giảm thiểu tối đa khả năng tạo ra các mã trùng
nhau. Ta sử dụng tham số thời gian là thời gian chính xác đến giây thời điểm nhập dữ
liệu vào máy tính. Được phép dùng 17-bits để mô tả cho tham số ngẫu nhiên này.
- bit 1: 0-nếu thời gian là từ 0 giờ đến 12 giờ trưa
CS4S. Computer Science for Schools
14 | P a g e
1-nếu thời gian là từ 12 giờ trưa đến 24 giờ đêm.
- bit 2-17: mô tả thời gian tính bằng giây tính từ thời điểm 0 giờ hoặc 12 giờ trưa cho
đến thời điểm hiện thời.
7. Tham số Checksum: 5 bits
- Có 8 giá trị (3 bits đầu tiên) để tạo tham số phòng hờ sự cố khi sử dụng 6 tham số
trên tạo ra các mã trùng nhau trong một trường (tại thời điểm sinh mã học sinh/giáo
viên). Khi đó Checksum sẽ tự động tăng lên 1 giá trị.
- 2 bit sau cùng có ý nghĩa như sau:
Bit-4 chỉ ra giá trị Họ của học sinh có tìm thấy trong bảng dữ liệu chuẩn hay
không.
Bit-5 chỉ ra giá Tên của học sinh có tìm thấy trong bảng dữ liệu chuẩn hay
không.
Tổng kết lại chúng ta cần:
(1) = 17 bits
(2) = 1 bit
(3) = 7 bits
(4) = 12 bits
(5) = 13 bits
(6) = 17 bits
(7) = 5 bits
= 72 bits = 12 ký tự
Cấu trúc và thủ tục mã hóa
Theo sơ đồ đã mô tả ở trên, chúng ta có 72-bit đã được mã hóa từ các thông số của
một học sinh hoặc giáo viên. Các bit được sắp xếp theo thứ tự và sau đó ghép lại theo
bảng ký tự SVC. Để thể hiện (thông báo mã cho học sinh) chúng ta dùng khuôn dạng:
XXXX-XXXX-XXXX
Phương án mã hóa 32 bit
Phương án mã hóa Học sinh, Giáo viên với cơ sở 64 bit như đã trình bày ở trên không
thích hợp với mô hình CSDL không phân biệt các chữ cái in hoa và in thường. Trong
mục này ta sẽ mô tả một phương án mã hóa khác chỉ sử dụng 32 bit Cơ sở.
CS4S. Computer Science for Schools
15 | P a g e
Bộ ký tự dùng cho kiểu mã hóa này chỉ là các chữ số và bộ chữ cái in hoa rút gọn, phù
hợp với bảng chữ cái tiếng Việt (Tiếng Anh bỏ đi F, J, W, Z).
SVC Decimal SVC Decimal SVC Decimal SVC Decimal
0 0 8 8 H 16 Q 24
1 1 9 9 I 17 R 25
2 2 A 10 K 18 S 26
3 3 B 11 L 19 T 27
4 4 C 12 M 20 U 28
5 5 D 13 N 21 V 29
6 6 E 14 O 22 X 30
7 7 G 15 P 23 Y 31
Với bảng chữ cái mới này, 5 bits = 1 chữ cái. Như vậy để mã hóa bởi 12 ký tự, chúng
ta cần lượng thông tin là 5 x 12 = 60 bits.
Thủ tục mã hoá học sinh/giáo viên theo cơ sở 32 bits vẫn hoàn toàn thỏa mãn các mục
đích M1, M2, M3 đã nêu ra ở trên.
Thông tin mã hóa cụ thể như sau:
1. Ngày sinh - 16 bits
Ngày sinh của học sinh/giáo viên được tính như một số nguyên là số ngày tính từ năm
1925.
Số lượng ngày cho phép tính là 175 năm (1925-2099) là 175 x 365 =63875  2 bytes
(16 bits). Chương trình sẽ sử dụng 16 bits = 65,536 để mã hóa thông số này.
Chú ý: trường hợp học sinh không nhớ chính xác ngày sinh thì chương trình sẽ tự
động gán giá trị ngày ngẫu nhiên để làm thông tin mã hóa.
2. Nam/Nữ - 1 bit
Sử dụng 1 bit cho thông số này.
3. Mã hóa theo Họ cha của Học sinh - 9 bits
CS4S. Computer Science for Schools
16 | P a g e
Phần họ của học sinh được tách ra và mã hóa theo một CSDL lưu các Họ thường gặp
của người Việt Nam. Dữ liệu này được lưu trong bảng rFamilyNamesVN của hệ
thống. Dự kiến toàn bộ các họ Việt Nam sẽ không quá 512. Chúng ta sẽ dùng 9 bits để
mã hoá giá trị này của Học sinh. Trường hợp khi nhập họ học sinh không có trong
bảng này, chương trình sẽ tự động nạp tên này vào bảng tại vị trí cuối cùng. Trường
hợp bảng đã đủ 512 bản ghi mà họ học sinh không tìm thấy trong bảng thì máy sẽ gán
một giá trị ngẫu nhiên 9 bits cho giá trị này.
4. Mã hóa theo tên học sinh - 13 bits
Phần tên học sinh (sau khi đã loại đi Họ + đệm) sẽ được mã hóa theo một CSDL lưu
các tên chuẩn của người Việt Nam. Số lượng tên của người Việt là hữu hạn và lưu
trong tệp rNamesVN. Tổng số lượng tên người Việt dự đoán không quá 8,192 = 13
bits.
Chú ý: trường hợp khi nhập dữ liệu tên không có trong bảng CSDL thì chương trình
sẽ tự động nạp tên này vào bảng tương ứng tại vị trí cuối cùng.
5. Mã Quận/Huyện của nhà trường hiện thời - 10 bits
Hiện tại số Quận/Huyện trên cả nước là 616, chúng ta sẽ sử dụng 10 bits = 1024 để
mã hóa thông tin này.
6. Chỉ số địa phương của Nhà trường (SchoolLocalID) - 6 bits
Chỉ số địa phương của Nhà trường được gán và khởi tạo từ lệnh Khởi tạo CSDL nhà
trường. Chỉ số này dùng để phân biệt giữa các nhà trường trong phạm vi một
Quận/Huyện. Hệ thống chỉ số được gán thống nhất và được kiểm soát bởi Sở GD &
ĐT hoặc Phòng GD & ĐT quận/huyện. Trong phạm vi một quận/huyện, các trường
cùng cấp (Tiểu học, THCS, THPT) phải có Chỉ số địa phương khác nhau. Chỉ số địa
phương được phép gán từ giá trị 1 đến 64, như vậy cần 6 bits để mã hoá thông số này.
Chú ý: Lần đầu tiên khi khởi tạo CSDL năm học, chương trình sẽ khởi tạo một giá trị
ngẫu nhiên cho SchoolLocalID, tuy nhiên Hiệu trưởng có thể thay đổi lại giá trị này
bất cứ lúc nào.
7. Tham số Checksum: 5 bit
- Có 32 giá trị (5 bits) để tạo tham số phòng hờ sự cố khi sử dụng 6 tham số trên tạo ra
các mã trùng nhau trong một trường (tại thời điểm sinh mã học sinh/giáo viên). Khi đó
Checksum sẽ tự động tăng lên 1 giá trị.
Tổng kết lại chúng ta cần:
(1) = 16 bits
(2) = 1 bit
CS4S. Computer Science for Schools
17 | P a g e
(3) = 9 bits
(4) = 13 bits
(5) = 10 bits
(6) = 6 bits
(7) = 5 bit
Tổng cộng = 60 bits = 12 ký tự
Qui định ghi Mã Học sinh - Giáo viên (thể hiện và thông báo cho học sinh).
XXXX-XXXX-XXXX
Chú ý:
Toàn bộ các thông tin cần thiết để mã hoá một Học sinh / Giáo viên đều là những
thông số bắt buộc cần phải biết của một nhà trường. Các thông tin của Nhà trường như
SchoolLocalID, Mã Quận/Huyện, Mã Tỉnh đều được cấp chính xác ngay khi cài đặt
phần mềm.
Trường hợp sau khi thực hiện các bước mã hóa từ (1) đến (7), vẫn bi trùng lặp mã thì
chương trình sẽ lấy năm sinh của học sinh thay thế bằng năm 2100, như vậy chúng ta
có thêm 32 checksum bổ sung. Giả sử lại vẫn trùng chúng ta lại sử dụng thêm các năm
2101 và 2102 với tổng cộng 96 checksum bổ sung. Việc sử dụng năm 2100, 2101 và
2102 không phá vỡ tính duy nhất của thuật toán bởi vì với năm 2102, chúng ta đã
dùng đến 178 năm x 365 = 64970 vẫn nằm trong phạm vi kiểm soát của 16-bits.
CS4S. Computer Science for Schools
18 | P a g e
CS Unplugged hay Computer Science without a computer là cuốn sách
chính nằm trong 1 dự án nhằm xây dựng các bài giảng về khoa học
máy tính nhưng không cần máy tính dành cho GV và HS trong các nhà
trường phổ thông (http://csunplugged.org/). Đây là 1 dự án có ý nghĩa
đặc biệt cho đội ngũ giáo viên tin học của Việt Nam. Chúng tôi sẽ trích
giới thiệu 1 số bài giảng tiêu biểu của cuốn sách này. Chủ đề đầu tiên
này do bạn Đào Giang Lâm, chuyên viên Phòng CNTT, Sở GD&ĐT
Nghệ An biên dịch. Chúng tôi sẽ còn đưa các bài học tiếp theo của
cuốn sách này đến tay các GV Việt Nam. CS4S cũng kêu gọi các cộng
tác viên và tất cả mọi người hãy dành thời gian để dịch cuốn sách vô
cùng bổ ích này.
CHỦ ĐỀ 1: HỆ NHỊ PHÂN
Tóm lược:
Dữ liệu trong máy tính được lưu trữ và truyền đi như một loạt các số 0 và 1. Làm thế
nào để hai đối tượng này có thể thay thế được chữ và số?
Kĩ năng:
- Đếm
- Tính toán
- Sắp xếp
Đối tượng: Học sinh từ 6 tuổi trở lên
Chuẩn bị:
- 10 tấm bìa kích thước 10x20 cm
- 01 Bút dạ
--------------------------------------------------------
Hoạt động 1: Học cách đếm
Bước 1:
CS4S. Computer Science for Schools
19 | P a g e
Giáo viên (học sinh) chuẩn bị 5 tấm bìa.
Trường hợp 1 (tổ chức tại lớp): Các tấm bìa được đánh dấu chấm lần lượt như hình
dưới (H1). Giáo viên cho 5 học sinh cầm các tấm bìa theo thứ tự như hình vẽ.
Trường hợp 2 (học sinh tự học): Học sinh đánh dấu chấm và đặt 5 tấm bìa trên bàn
theo thứ tự như hình vẽ (H1).
(Hình 1)
Bước 2:
Tính từ phải sang trái, yêu cầu học sinh thứ 2, 3, 5 cầm và đưa lên cho cả lớp xem mặt
sau của các tấm bìa; học sinh thứ 1, 4 cầm và đưa lên cho cả lớp xem mặt trước thể
hiện rõ các dấu chấm. Các tấm bìa được xếp thành một hàng thẳng. Kết quả thực hiện
như hình 2.
(Hình 2)
Kết quả cho thấy có 9 dấu chấm được thể hiện trên cả 5 tấm bìa.
Bước 3: Thảo luận
Nếu cần tính 5, 12, 19 dấu chấm thì phải thực hiện như thế nào?
(Gợi ý kết quả tham khảo GY1)
(Hình 3)
Có nhiều nhất bao nhiêu dấu chấm mà bạn có thể thực hiện được? Có ít nhất bao
nhiêu dấu chấm mà bạn có thể thực hiện được? (Gợi ý kết quả tham khảo GY2)
Bước 4:
Nếu quy ước, tấm bìa không có dấu chấm là 0, tấm bìa có dấu chấm là 1 thì với trường
hợp ban đầu sẽ có kết quả mã hóa như sau:
CS4S. Computer Science for Schools
20 | P a g e
(Hình 4)
01001 = 9
Bước 5: Thảo luận
Hãy thử tính kết quả của các số: 10101 và 11111.
(Gợi ý kết quả tham khảo GY3)
Hoạt động 2: Mã hóa
Bước 1:
Khi một tấm bìa không có dấu chấm, nó được hiểu là số 0; khi một tấm bìa có các dấu
chấm, nó được hiểu là số 1. Hệ thống như thế được hiểu là hệ số nhị phân.
Trong cuộc sống, rất nhiều trường hợp có thể biểu diễn thành 0, 1 như :
(hình 5)
Bước 2: Thảo luận
Lấy ví dụ về những ngày tháng bạn được sinh ra? Viết ngày, tháng trong hệ nhị phân.
Viết lại biểu diễn nhị phân tương ứng với các giá trị 5, 12, 19 chấm.
Ghi nhớ: Sử dụng một tập hợp 5 thanh có độ dài 1, 2, 4, 8, 16 ta có thể tính được bất
cứ số nào với giá trị nhỏ hơn hoặc bằng 31.
Hoạt động 3:
Bài toán 1: Thông điệp bí mật.
Tom đang bị mắc kẹt trên tầng cao nhất của một cửa hàng bách hóa. Lúc đó là thời
điểm trước Giáng sinh và anh muốn được về nhà với những món quà của mình. Anh
ấy có thể làm gì? Anh đã cố gắng gọi điện thoại, thậm chí la hét, nhưng không có ai
CS4S. Computer Science for Schools
21 | P a g e
xung quanh. Bên kia đường, anh có thể nhìn thấy một cô gái vẫn làm việc muộn cùng
với máy tính vào ban đêm. Làm thế nào anh có thể thu hút sự chú ý của cô ấy? Tom
nhìn xung quanh để xem những gì anh có thể sử dụng. Sau đó, anh đã có một ý tưởng,
anh có thể sử dụng đèn cây Giáng sinh rực rỡ để gửi cho cô một tin nhắn! Anh ta tìm
thấy tất cả các đèn và cắm chúng trong đêm nên anh có thể bật và tắt. Anh sử dụng
một mã nhị phân đơn giản, mà anh biết người phụ nữ bên đường phố là chắc chắn để
hiểu. Bạn có thể làm được việc đó không? Hãy cho biết thông điệp được thể hiện trên
Hình 6?
(Hình 6)
Quy ước mã hóa
1 2 3 4 5 6 7 8 9 10 11 12 13
a b c d e f g h i j k l m
14 15 16 17 18 19 20 21 22 23 24 25 26
n o p q r s t u v w x y z
(Xem gợi ý kết quả tham khảo GY4)
CS4S. Computer Science for Schools
22 | P a g e
Thảo luận: Hãy sử dụng 0,1 để quy ước cho đèn cây giáng sinh là tắt, bật để mã hóa
một vài thông điệp mà Tom muốn gửi cho cô gái bên kia đường?
Bài toán 2: E-mail và Modems
Máy vi tính kết nối với Internet thông qua một modem cũng sử dụng hệ thống nhị
phân để gửi tin nhắn. Sự khác biệt duy nhất là chúng sử dụng tiếng bíp. Một tiếng bíp
the thé có thể được sử dụng cho một bit 1 và một tiếng bíp không cao cho một bit 0.
Những âm thanh đi rất nhanh rất nhanh, trên thực tế, tất cả chúng ta có thể nghe thấy
một âm thanh kêu liên tục. Nếu bạn chưa bao giờ nghe nó, lắng nghe với một modem
kết nối với Internet, hay thử gọi một máy fax, máy fax cũng sử dụng modem để gửi
thông tin.
Hoạt động 4: Đếm những giá trị lớn hơn 31
Hãy thử phép tính: 1 + 2 + 4 = ?
Bây giờ hãy thử 1 + 2 + 4 + 8 16 =?
Kết quả thế nào nếu cộng tất cả các số từ 1?
Nếu sử dụng ngón tay của mình để đếm, theo cách thông thường, bạn sẽ không thể
đếm được cao hơn 10. Nếu bạn sử dụng hệ nhị phân và để cho mỗi ngón tay trên một
bàn tay thay thế cho một trong những tấm bìa với các dấu chấm, bạn có thể đếm được
các giá trị từ 0 đến 31. Đó là 32 con số. (Đừng quên 0 cũng là một số)
Hãy thử sử dụng ngón tay của bạn để đếm. Nếu một ngón đưa lên được hiểu là 1, và
đưa xuống được hiểu là 0.
CS4S. Computer Science for Schools
23 | P a g e
Bạn sẽ nhận được các số từ 0-1.023 nếu bạn sử dụng cả hai tay! Có 1024 con số!
Nếu bạn tính thêm cả các ngón chân (bây giờ bạn có thể trở thành một người ngoài
hành tinh), bạn có thể nhận được kết quả thậm chí cao hơn. Nếu một mặt bàn tay có
thể được sử dụng để đếm 32 con số, và hai bàn tay có thể đếm đến 32 × 32 = 1024 con
số, số lượng con số lớn nhất Hoa hậu Flexi-Toes có thể đạt được là bao nhiêu? (Gợi ý
kết quả tham khảo GY5)
Hoạt động 5: Các thông tin cần biết về Hệ nhị phân
- Điều gì sẽ xảy ra khi một số 0 được đặt ở phía bên tay phải của số đó:
Nếu chúng ta đang làm việc tại hệ cơ sở 10 (hệ thập phân), khi đặt một số 0 ở phía bên
phải của con số, nó được nhân với 10. Ví dụ, 9 sẽ trở thành 90, 30 thành 300.
Nhưng điều gì sẽ xảy ra khi bạn đặt một số 0 bên phải của một số nhị phân? Ví dụ:
1001 10010
(9) (?)
Cùng thực hiện tính kết quả với một số người khác để kiểm tra giả thuyết của bạn. Các
quy tắc là gì? Tại sao bạn nghĩ rằng điều này sẽ xảy ra?
(Gợi ý kết quả tham khảo GY6)
- Bảng mã ASCII:
Mỗi tấm bìa chúng ta đã sử dụng thể hiện cho một 'bit' trên máy tính ('bit' là viết tắt
của ‘binary digit’). Vì vậy, bảng mã chữ cái của chúng ta đã sử dụng cho đến nay có
thể được biểu diễn bởi năm thẻ, hoặc 'bit'. Tuy nhiên một máy tính có thể hiểu cho dù
chữ cái đó viết hoa hay không, và cũng nhận ra chữ số, dấu chấm câu và các ký hiệu
đặc biệt như $ hoặc ~.
Hãy nhìn vào một bàn phím và đếm xem có bao nhiêu kí tự có thể sử dụng trên máy
tính. Vì vậy, một máy tính cần có bao nhiêu bit để lưu trữ tất cả các ký tự?
Hầu hết các máy tính hiện nay sử dụng một bảng mã gọi là ASCII (Bảng mã trao đổi
thông tin tiêu chuẩn Mỹ), để biến đổi thành các bit cho mỗi ký tự, nhưng một số quốc
gia không nói tiếng Anh có sử dụng bảng mã dài hơn.
- Tại sao máy tính sử dụng hệ nhị phân để biểu diễn thông tin:
CS4S. Computer Science for Schools
24 | P a g e
Nó được gọi là nhị phân bởi vì chỉ có hai số khác nhau được sử dụng. Nó còn được
gọi là hệ cơ số 2 (con người thường sử dụng cơ số 10). Mỗi số 0 hay 1 được gọi là
một bit (số nhị phân). Một bit thường được biểu diễn trong bộ nhớ chính của máy tính
bằng một bóng bán dẫn được bật hoặc tắt, hoặc một tụ điện.
Khi dữ liệu phải được truyền qua một đường dây điện thoại hoặc đài phát thanh, âm
cao và thấp được sử dụng để thể hiện giá trị 0 và 1. Trên các ổ đĩa từ (đĩa cứng, đĩa
mềm) và băng, bit được biểu diễn bởi hướng của từ trường trên bề mặt lớp phủ, hoặc
là Bắc-Nam và Nam-Bắc.
Đĩa CD-ROM và DVD lưu trữ bit quang học – mỗi phần của bề mặt phản chiếu tương
ứng với một bit được thể hiện là phản chiếu hoặc không phản chiếu ánh sáng.
- Lý do mà các máy tính chỉ sử dụng hai giá trị khác nhau là nó dễ dàng hơn nhiều để
xây dựng các thiết bị thể hiện điều đó. Đĩa CD có thể biểu diễn được 10 phần tương
ứng các chữ số 0-9, nhưng phải xây dựng các thiết bị rất đắt tiền và chính xác để làm
cho nó làm việc. Mặc dù chúng ta nói rằng máy tính chỉ lưu trữ 0 và 1, nhưng thực sự
không có 0 và 1 bên trong chúng mà chỉ có điện áp cao hay thấp, từ tính bắc / nam và
.v.v. Tất cả mọi thứ trên máy tính được trình bày dưới dạng bit - Các tài liệu, hình
ảnh, bài hát, video, số, và thậm chí cả các chương trình và các ứng dụng mà chúng ta
sử dụng chỉ bằng một hoặc rất nhiều chữ số nhị phân.
- Tốc độ xử lý thông tin:
Một bit không thể đại diện nhiều, vì vậy chúng thường được nhóm lại với nhau trong
nhóm tám, mà có thể đại diện cho các số từ 0 đến 255. Một nhóm tám bit được gọi là
một byte.
Tốc độ của máy tính phụ thuộc vào số lượng các bit nó có thể xử lý cùng một lúc. Ví
dụ, một máy tính 32-bit có thể xử lý các số 32-bit trong một hoạt động, trong khi một
máy tính 16-bit phải chia số 32-bit thành các phần nhỏ hơn, làm cho nó chậm hơn
(nhưng rẻ hơn!)
II. Giải pháp và gợi ý
- Gợi ý 1 (GY1):
CS4S. Computer Science for Schools
25 | P a g e
5 = tấm bìa 4 chấm và tấm bìa 1 chấm.
12 = tấm bìa 8 chấm và tấm bìa 4 chấm.
19 = tấm bìa 16 chấm, tấm bìa 2 chấm và tấm bìa 1 chấm.
- Gợi ý 2 (GY2): Số lớn nhất mà bạn có thể làm là 31. nhỏ nhất là 0
- Gợi ý 3 (GY3): 10101 = 21, 11111 = 31
- Gợi ý 4 (GY4): HELP IM TRAPPED
- Gợi ý 5 (GY5): Hoa hậu Flexi-toes có thể đếm 1024 × 1024 = 1,048,576 số từ 0 đến
1,048,575!
- Gợi ý 6 (GY6):
Khi đặt một số 0 bên phải 1 số nhị phân thì số nhị phân đó sẽ tăng gấp đôi.
Vì tất cả giá trị của các số 1 trong số đó sẽ tăng lên gấp đôi, do vậy bản thân số đó sẽ
tăng gấp đôi.
CS4S. Computer Science for Schools
26 | P a g e
Tổng quan Scratch
Bùi Việt Hà
MỤC ĐÍCH - MISSION của nhóm thiết kế
Scratch:
Chúng tôi hỗ trợ một công cụ lập trình mới
giúp trẻ suy nghĩ hợp lý hơn, hệ thống hơn,
sáng tạo hơn, làm việc nhóm và rèn luyện
các kỹ năng cần thiết trong xã hội hôm nay.
CS4S sẽ giới thiệu lần lượt các bài học về môi
trường và ngôn ngữ lập trình mới này, đối
tượng là tất cả giáo viên và học sinh. Có thể
coi đây là chương trình cơ bản về Scratch.
1. Scratch là gì ?
Scratch là một môi trường, ngôn ngữ lập trình "kéo thả" mới xuất hiện trên thế giới và
cũng rất mới đối với Việt Nam. Môi trường lập trình này rất đặc biệt vì nó thích hợp
cho mọi lứa tuổi, mọi ngành nghề và trình độ. Vì sao mọi người cần học môi trường
lập trình này? Vì sao Scratch lại thích hợp cho lứa tuổi thiếu nhi, thiếu niên và phù
hợp cho việc đưa các kiến thức lập trình cho các bậc học này?
Môi trường và ngôn ngữ lập trình Scratch do nhóm nghiên cứu Lifelong Kindegarden
Group thuộc đại học MIT (Massachusetts Institute of Technology) thiết lập đầu năm
2008. Ý tưởng ban đầu của nhóm chỉ là thiết lập một ngôn ngữ lập trình mới, đơn
giản, chỉ dùng kéo thả, dành cho trẻ con để thiết lập trò chơi, phim hoạt hình, ứng
dụng đơn giản, kích thích sự sáng tạo trong môi trường làm việc nhóm của trẻ.
Tuy nhiên Scratch chỉ thực sự bùng nổ từ năm 2014 khi một số quốc gia như Anh, Mỹ
đã đổi mới đột phá chương trình giảng dạy môn Tin học trong nhà trường, đưa nội
dung kiến thức Khoa học máy tính vào nhà trường ngay từ cấp Tiểu học. Một trong
những đề nghị quan trọng nhất của các chương trình này là cần đưa các ngôn ngữ lập
trình đơn giản, dạng kéo thả như Scratch vào giảng dạy trong nhà trường ngay từ Tiểu
học. Việc điều chỉnh chương trình môn Tin học này đã kéo theo sự gia tăng bùng nổ
của Scratch trên phạm vi toàn thế giới. Số lượng học sinh đăng ký tham gia trang
Scratch tăng đột biến cả về số lượng và chất lượng. Thực tế đã chứng minh tính hấp
dẫn của các môi trường lập trình kéo thả như Scratch, sự đam mê lập trình của trẻ nhỏ.
Scratch vô cùng thích hợp cho trẻ lứa tuổi từ 6 đến 14, tức là các cấp Tiểu học, THCS
của Việt Nam. Chính vì vậy trong Chương trình đổi mới giáo dục của Việt Nam sau
2018, Bộ Giáo dục & Đào tạo cũng đã quyết định đưa nội dung kiến thức Khoa học
CS4S. Computer Science for Schools
27 | P a g e
máy tính trong môn Tin học vào ngay từ cấp Tiểu học, và những ngôn ngữ lập trình
kéo thả như Scratch sẽ là một lựa chọn tốt cho các nhà trường và học sinh.
2. Vài thông tin về môi trường và dự án Scratch
- Scratch là 1 môi trường lập trình ứng dụng đặc biệt, trong đó việc “viết” lệnh sẽ
được thực hiện bằng thao tác “kéo thả”.
- Đầu ra của Scratch hỗ trợ các công nghệ và ứng dụng mới nhất của CNTT-ICT, do
vậy các ứng dụng của Scratch rất phong phú, hấp dẫn, nhất là trẻ nhỏ.
- Scratch có sự phát triển bùng nổ 2 năm trở lại đây. Đặc biệt là sau khi một số quốc
gia có tiềm lực khoa học kỹ thuật mạnh trên thế giới đã quyết đinh đưa Scratch vào
giảng dạy trong nhà trường cho học sinh từ cấp Tiểu học.
- Scratch hoàn toàn miễn phí và có thể chia sẻ rộng rãi trong cộng đồng. Hiện nay trên
Website chính của Scratch (https://scratch.mit.edu/) đã có hơn 15 triệu sản phẩm của
Scratch được chia sẻ bới hơn 12 triệu người sử dụng trên khắp thế giới.
- Scratch rất thích hợp để tạo ra các ứng dụng đồ họa, animation, bài học, bài giảng,
mô phỏng kiến thức, trình diễn, sách điện tử, trò chơi, … rất phù hợp với nhà trường,
giáo viên, học sinh.
- Scratch là môi trường tốt nhất để dạy học sinh làm quen với tư duy máy tính, khoa
học máy tính ngay từ lứa tuổi tiểu học.
3. Hãy bắt đầu lập trình với Scratch
Chúng ta hãy quan sát giao diện của Scratch và nhận diện các vùng trên màn hình.
Thực đơn
Thanh
công cụ
nhanh
Nút trợ
giúp nhanh
Nút trợ
giúp
Sân khấu
Cửa sổ lệnh
Nhân vật
Khu vực tạo
nhân vật
Nút Tab chuyển đổi các
cửa sổ lệnh, trang
phục, âm thanh
Nhóm lệnh
chính
Khu vực tạo
nền sân khấu
Khung điều
khiển lệnh
CS4S. Computer Science for Schools
28 | P a g e
Bây giờ các bạn hãy cùng tôi, chúng ta cùng khám phá thế giới diệu kỳ của Scratch
nhé.
B1. Chuyển động với nhân vật
Chúng ta bắt đầu quan sát nhân vật chính (con Mèo) trên nền sân khấu.
Bên phải là cửa sổ lệnh, hay chính là nơi ta cần "lập trình" để điều khiển hoạt động
của nhân vật.
Chúng ta bắt đầu bằng lệnh chuyển động nhân vật.
- Nháy chuột chọn nhóm lệnh Motion.
- Kéo thả lệnh MOVE từ khung điều khiển lệnh (giữa) sang cửa sổ lệnh (bên phải).
Để quan sát và thực hiện lệnh hãy nháy chuột lên lệnh này (lệnh MOVE) trên cửa sổ
lệnh). Quan sát nhân vật chuyển động trên màn hình: dịch chuyển sang phải 10 bước.
Nháy lên dòng lệnh
này để thực hiện
lệnh. Như vậy trên
Scratch việc "lập
trình" thực chất chỉ
là việc kéo thả các
lệnh đã có sẵn vào
khung cửa sổ lệnh
của nhân vật.
CS4S. Computer Science for Schools
29 | P a g e
B2. Bổ sung thêm âm thanh
Chúng ta sẽ làm quen và bổ sung thêm âm thanh nhé.
- Nháy chọn nhóm lệnh Sound.
- Kéo thả lệnh PLAY DRUM sang cửa sổ lệnh, nhớ đưa sát và dính vào lệnh MOVE
đã có trong cửa sổ lệnh. Bạn sẽ thấy 2 lệnh này sẽ hút nhau khi được kéo sát vào nhau.
Bây giờ bạn nháy chuột lên một trong 2 lệnh trên thì cả nhóm 2 lệnh sẽ thực hiện, lần
lượt theo thứ tự từ trêb xuống dưới.
Nháy chuột tại ô này bên
trong lệnh PLAY DRUM
để chọn kiểu trống.
Trên các lệnh có các vị
trí màu trắng dùng để
nhập tham số, dữ liệu
đầu vào cho lệnh
Scratch.
Môi trường lập trình Scratch:
- Mỗi nhân vật có 1 cửa sổ lệnh riêng, chứa các lệnh cần lập trình để điều khiển
nhân vật này.
- Các lệnh được đưa vào bằng cách kéo thả từ khung điều khiển lệnh.
- Các lệnh có thể dính với nhau thành nhóm. Chỉ cần nháy lên 1 lệnh sẽ thực
hiện tất cả các lệnh trong nhóm theo thứ tự từ trên xuống dưới.
CS4S. Computer Science for Schools
30 | P a g e
B3. Bắt đầu cho nhân vật nhảy múa
Chúng ta sẽ bổ sung các lệnh cho nhân vật nhảy múa thực sự nhé.
- Nháy chọn nhóm lệnh Motion.
- Kéo thả lệnh MOVE, sửa tham số của lệnh thành -10.
Tiếp tục:
- Chọn nhóm lệnh Sound và kéo thả lại lệnh PLAY DRUM vào cửa sổ lệnh.
- Thay đổi tham số trống thành 5 (Open Hi-Hat) và kéo dính vào nhóm lệnh gốc.
Bây giờ nếu chạy chúng ta sẽ thấy chú Mèo vừa chạy, nhảy múa trong tiếng trống.
CS4S. Computer Science for Schools
31 | P a g e
B4. Lặp lại liên tục nhảy múa
Muốn cho chú Mèo nhảy múa liên tục trong tiếng trống chúng ta cần cho các lệnh trên
thực hiện lặp lại nhiều lần.
- Nháy chọn nhóm lệnh Control.
- Kéo thả lệnh REPEAT (lặp) sang cửa sổ lệnh, dịch chuyển sau cho lệnh này sẽ ôm
gọn tất cả nhóm lệnh ban đầu vào bên trong 2 thanh ngang của mình. Tham số mặc
định là 10.
Có thể thay thế lệnh REPEAT bằng lệnh FOREVER.
Nhóm các lệnh này sẽ
được thực hiện lặp lại 10
lần (bên trong lệnh
Repeat.
Lệnh Reapeat có tham số
điều khiển số lần lặp.
Nhóm các lệnh này sẽ
được thực hiện lặp lại vô
hạn lần (bên trong lệnh
Forever).
Lệnh FOREVER thực hiện lặp
vô hạn lần.
CS4S. Computer Science for Schools
32 | P a g e
B5. Nhân vật nói và hội thoại
- Chọn nhóm lệnh Looks và kéo thả lệnh SAY ra cửa sổ lệnh.
Sau đó hay nhập trực tiếp "Chào các bạn !" vào vị trí sau chữ SAY và chạy thử để
thấy nhân vật của chúng ta sẽ "nói" như thế nào.
Cuối cùng đưa lệnh này lên trên cùng của nhóm
lệnh như hình bên.
Bạn sẽ thấy nhân vật Mèo của chúng ta sẽ nói
"Chào các bạn !" trong 2 giây.
CS4S. Computer Science for Schools
33 | P a g e
B6. Tác dụng của lá cờ xanh
Bạn có nhìn thấy nhóm phía trên cửa sổ chính của sân khấu? Chúng ta sẽ
tìm hiểu ý nghĩa và tác dụng của lá cờ xanh.
- Chọn nhóm lệnh Event và kéo thả lệnh sang cửa sổ chính, đưa lên vị
trí đầu tiên của nhóm lệnh đã có.
Bây giờ muốn chạy toàn bộ chương trình chỉ cần nháy lên nút hình lá cờ xanh phía
trên màn hình.
Lệnh này có gì đặc biệt không? Bạn có nhìn thấy 1 đường
cong ở phía trên không? Lệnh này luôn đứng vị trí số 1 trong
dãy lệnh. Ý nghĩa của lệnh: khi nào người dùng nháy lên lá
cờ xanh thì sẽ khởi động thực hiện nhóm các lệnh phía dưới.
CS4S. Computer Science for Schools
34 | P a g e
B7. Thay đổi màu sắc nhân vật
Chúng ta sẽ thêm lệnh làm thay đổi màu sắc của nhân vật, nhưng lần này sẽ thực hiện
theo một cách hoàn toàn khác.
- Chọn nhóm lệnh Looks, sau đó kéo thả lênh CHANGE <Color> EFFECT BY ra cửa
sổ lệnh.
Nháy trực tiếp lên lệnh để quan sát sự thay đổi màu sắc của nhân vật.
Dãy hình dưới đây là kết quả của việc thực hiện liên tiếp lệnh này.
Bạn đã biết gì về môi trường lập trình Scratch:
- Cửa sổ lệnh chứa các lệnh Scratch do người dùng taoh ra bằng cách kéo thả
lệnh từ khung điều khiển lệnh.
- Các lệnh có khả năng kết dính lại với nhau thành 1 nhóm. Khi chạy các lệnh
trong nhóm sẽ thực hiện lần lượt từ trên xuống.
- Các lệnh có hình cong phía trên (ví dụ các lệnh WHEN CLICKED) sẽ
luôn ở vị trên cùng của nhóm lệnh.
- Nháy lên nút hình lá cờ màu xanh để bắt đầu chạy chương trình.
CS4S. Computer Science for Schools
35 | P a g e
B8. Thử bấm một phím
Chúng ta sẽ thực hiện trong bước này một lệnh mới, cho phép dùng phím để điều
khiển hoạt động nhân vật, cụ thể là điều khiển nhân vật thay đổi màu sắc.
- Chọn nhóm lệnh Events, kéo thả lệnh when <space> key pressed vào cửa sổ lệnh,
đặt ngay cạnh và phía trên của lệnh thay đổi màu sắc đã có.
Phím điều khiển mặc định là Space, có thể lựa chọn phím bất kỳ khác nếu muốn.
Bây giờ chúng ta có thể chạy chương trình (bằng cách nháy nút hình lá cờ xanh), quan
sát nhân vật nhảy múa, đồng thời dùng phím space để điều khiển Mèo thay đổi màu
sắc.
Có thể chọn phím khác
tại đây.
CS4S. Computer Science for Schools
36 | P a g e
B9. Bổ sung nền sân khấu
Thực hiện theo các bước sau để bổ sung thêm nền sân khấu.
2. Chọn
hình nền
này và
bấm nút
OK.
1. Nháy vào nút
này
3. Kết quả
hiện như
hình bên.
CS4S. Computer Science for Schools
37 | P a g e
B10. Bổ sung thêm nhân vật
Thực hiện theo các bước sau để bổ sung thêm nhân vật trên sân khấu.
2.
Chọn
nhân
vật này
và bấm
nút OK
1. Nháy nút này
3. Nhân vật hiện ra trên sân khấu. Bên
phải là cửa sổ lệnh của nhân vật này.
CS4S. Computer Science for Schools
38 | P a g e
B11. Hãy cùng khám phá Scratch
Chúng ta hãy cùng khám phá Scratch bằng nhiều cách khác nữa và trong các bài học
tiếp theo.
Ví dụ có thể thiết lập các lệnh mới trong cửa sổ lệnh của nhân vật mới được đưa vào.
Bây giờ khi nháy nút hình lá cờ chúng ta sẽ thấy cả 2 nhân vật cùng chuyển động theo
các lệnh đã được lập trình trước.
CS4S. Computer Science for Schools
39 | P a g e
Góc thuật toán - Algorithm
Xếp số thứ tự trong ma trận vuông
Bùi Việt Hà
Góc thuật toán bao gồm những bài viết, bản dịch mô tả
thuật toán, các bài toán, bài tập cần tư duy thuật toán để
giải. Trong chuyên mục này chúng tôi cũng sẽ giới thiệu
các cuốn sách, biên dịch các bài viết hay về thuật toán và
cấu trúc dữ liệu của các tác giả nổi tiếng. Rất mong nhận
được nhiều bài viết trong chuyên mục nhỏ nhưng rất hấp
dẫn này của CS4S.
Đề bài:
Điền các số thứ tự 1, 2, ...., NxN vào 1 lưới ô vuông N x N theo hướng sau:
a) Từ ngoài vào, theo chiều kim đồng hồ.
b) Từ trong ra, theo chiều kim đồng hồ.
Lời giải
Lời giải đơn giản nhất của bài toán này là làm sao chỉ cần 1 bước duyệt, đi tới đâu,
gán giá trị vào lưới tới đó. Do vậy phương án giải hợp lý nhất phải là:
for i : = 1 to N*N do ........< gán giá trị tương ứng (giá trị là số i) cho ô lưới> .......
Chúng ta cùng phân tích và tìm lời giải theo hướng này.
Ma trận được thể hiện bằng 1 mảng 2 chiều a[i,j] và thể hiện như sau:
a11 a12 .... a1N
a21 a22 ... a2N
........
aN1 aN2 ... aNN
Có 2 nhận xét quan trọng sau:
a) b)
CS4S. Computer Science for Schools
40 | P a g e
1. Mỗi lần tiến 1 bước, giá trị được gán vào ô lưới tương ứng sẽ được tăng lên 1 đơn
vị. Khi đi đến bước cuối cùng, số N2
được gán thì vừa lúc kết thúc.
2. Quan trọng là bước đi trên lưới theo hướng nào để gán các giá trị vào ô lưới. Có 4
hướng:
0: đi sang phải (right-dir). Bước đi như sau: (i,j) ---> (i,j+1)
1: đi xuống dưới (down-dir). Bước đi như sau: (i,j) ---> (i+1,j)
2: đi sang trái (left-dir). Bước đi như sau: (i,j) ---> (i,j-1)
3: đi lên trên (up-dir). Bước đi như sau: (i,j) ---> (i-1,j)
Ý tưởng thuật toán như sau:
Mỗi bước đi, sau khi gán số hiện thời cần bước thêm 1 bước theo 1 trong các hướng
trên. Căn cứ vào vị trí và hướng hiện thời để xác định hướng tiếp theo.
Hàm (hay thủ tục) Next_Direction() sẽ xác định hướng chuyển động tiếp theo tính từ
vị trí hiện thời. Hàm này có dạng sau:
function GetNextDir(x, y: integer, CurrDir: Byte): Byte;
Trong đó (x, y) là vị trí ô lưới hiện thời, CurrDir là hướng đi hiện thời.
Hàm số này sẽ trả lại giá trị là hướng đi tiếp theo
Hàm này có thể viết đơn giản như sau:
function GetNextDir(x, y: integer, CurrDir: Byte): Byte;
var
k, NewDir : integer;
begin
NewDir : = CurrDir;
If CurrDir = 0 then
begin
y : = y+1;
if (y > N) or ((y <=N) and (a[x,y]>0))
then NewDir : =1;
end;
If CurrDir = 1 then
begin
x := x+1;
If (x > N) or ((x <= N) and (a[x,y] > 0))
then NewDir : = 2;
end;
If CurrDir = 2 then
begin
y:= y-1;
If (y = 0) or ((y > 0) and (a[x,y] > 0))
then NewDir : = 3;
end;
If CurrDir = 3 then
CS4S. Computer Science for Schools
41 | P a g e
begin
x:=x-1;
If (x = 0) or ((x > 0) and (a[x,y] > 0))
then NewDir : = 0;
end;
GetNextDir : = NewDir;
end;
Phần thiết lập ban đầu của chương trình như sau:
for i:=1 to N do
for j:=1 to N do a[i,j]:=0;
i:=1; j:= 1; Currdir := 0;
Bây giờ có thể viết đoạn chương trình mô tả phần chính của chương trình.
for k : = 1 to N*N do
begin
a[i,j]:= k;
if k = N*N then Exit;
CurrDir:= GetNextDir(i,j,CurrDir);
Case CurrDir of
0: j : = j+1;
1: i : = i+1;
2: j : = j-1;
3: i : = i-1;
end;
Với bài câu b) thì cách giải tương tự bài trên, điểm khác biệt chỉ là gán dãy số theo thứ
tự ngược từ N*N ---> 1.
Do vậy điểm khác chỉ là 1 dòng lệnh trong lệnh for như sau:
for k : = N*N downto 1 do
begin
a[i,j] : = k;
CurrDir : = GetNextDir(i,j,CurrDir);
Case CurrDir of
0: j : = j+1;
1: i : = i+1;
2: j : = j-1;
3: i : = i-1;
end;
Nếu không sử dụng hàm hoặc thủ tục thì chương trình có thể viết như sau.
Chương trình viết trên Pascal:
Var
CS4S. Computer Science for Schools
42 | P a g e
i,j,i1,j1,k,N : integer;
CurrDir, NewDir : byte;
a: array[1..100,1..100] of integer;
Begin
write("Nhap kich thươc Ma tran:");
Readln(N);
for i:=1 to N do
for j:=1 to N do a[i,j] : =0;
i :=1; j := 1; Currdir : = 0;
for k : = 1 to N*N do
begin
a[i,j] : = k;
NewDir : = CurrDir;
If CurrDir = 0 then //right-dir
begin
j1 : = j+1;
if (j1 > N) or ((j1 <=N) and (a[i,j1]>0))
then NewDir : =1;
end;
If CurrDir = 1 then //down-dir
begin
i1:=i+1;
If (i1 > N) or ((i1 <= N) and (a[i1,j] > 0))
then NewDir : = 2;
end;
If CurrDir = 2 then //left-dir
begin
j1:=j-1;
If (j1 = 0) or ((j1 > 0) and (a[i,j1] > 0))
then NewDir : = 3;
end;
If CurrDir = 3 then //up-dir
begin
i1:=i-1;
If (i1 = 0) or ((i1 > 0) and (a[i1,j] > 0))
then NewDir : = 0;
end;
CurrDir : = NewDir;
Case CurrDir of
0: j : = j+1;
1: i : = i+1;
2: j : = j-1;
3: i : = i-1;
end;
end;
for i : = 1 to N do
begin
CS4S. Computer Science for Schools
43 | P a g e
for j:=1 to N do write(a[i,j]:4);
writeln;
end;
end.
Chương trình viết trên C++:
#include <iostream>
using namespace std;
int main( )
{
int i,j,N;
short CurrDir, NewDir;
int a[100][100];
cout << "Nhap kich thuoc Ma tran: ";
cin >> N;
for(i=0;i<=N;i++)
for(j=0;j<=N;j++) a[i][j]=0;
i=1;j=1;CurrDir=0;
for(int k=1;k<=N*N;k++)
{
a[i][j]=k;
NewDir = CurrDir;
if(CurrDir==0)// right-dir
{
int j1=j+1;
if((j1 > N)||((j1 <=N)&&(a[i][j1]>0)))
NewDir=1;
}
if(CurrDir==1)//down-dir
{
int i1=i+1;
if((i1 > N)||((i1 <= N)&&(a[i1][j]>0)))
NewDir=2;
}
if(CurrDir==2) //left-dir
{
int j1=j-1;
if((j1 == 0)||((j1 > 0)&&(a[i][j1] > 0)))
NewDir=3;
}
if(CurrDir==3) //up-dir
{
int i1=i-1;
if((i1 == 0)||((i1 > 0)&&(a[i1][j] > 0)))
NewDir =0;
}
CS4S. Computer Science for Schools
44 | P a g e
CurrDir = NewDir;
switch(CurrDir)
{
case 0: j++; break;
case 1: i++; break;
case 2: j--; break;
case 3: i--; break;
}
}
for(i=1;i<=N;i++)
{
for(j=1;j<=N;j++)
{
cout.width(4);
cout << a[i][j];
}
cout << "n";
}
return 0;
}
Hình ảnh chương trình chạy trên Pascal và C++:
Chú ý:
Các chương trình trên được viết trên Lazarus và CodeBlocks.
CS4S. Computer Science for Schools
45 | P a g e
Danh sách cộng tác viên CS4S
Danh sách các bạn cộng tác viên trực tiếp tham gia vào ấn phẩm CS4S số 1:
Phạm Thị Nga, giáo viên tin trường chuyên Lam Sơn, Thanh Hoá.
Trần Thị Hiên, giáo viên Tin học tại THPT Nam Cao, Lý Nhân, Hà Nam.
Đào Giang Lâm, chuyên viên Phòng CNTT, Sở GD&ĐT Nghệ An.
Danh sách các bạn cộng tác viên khác:
Nguyễn Tấn Phong. Giáo viên Toán - Tin, trường THCS Đồng Nai, Cát Tiên, Lâm
Đồng.
Phạm Phương Lê. Sư phạm vật lý, thạc sỹ giáo dục.
Lê Thanh Hoài, giáo viên tin học trường THCS Lê Minh Xuân, Long An.
Chúng tôi mong muốn nhận được nhiều hơn nữa danh sách các bạn cộng tác
viên cùng tham gia, đóng góp cho ấn phẩm này.
Danh sách nhóm sáng lập:
Bùi Việt Hà
Bùi Văn Thanh
Ngô Ánh Tuyết
Phạm Thế Long
Hồ Cẩm Hà
Nguyễn Thanh Xuân
2016

Contenu connexe

Tendances

Luận văn: Hàm số và đồ thị trong dạy học toán ở phổ thông, HAY
Luận văn: Hàm số và đồ thị trong dạy học toán ở phổ thông, HAYLuận văn: Hàm số và đồ thị trong dạy học toán ở phổ thông, HAY
Luận văn: Hàm số và đồ thị trong dạy học toán ở phổ thông, HAYViết thuê trọn gói ZALO 0934573149
 
ỨNG DỤNG DEEP LEARNING ĐỂ ĐẾM SỐ LƯỢNG XE ÔTÔ TRONG NỘI THÀNH ĐÀ NẴNG 51920ed2
ỨNG DỤNG DEEP LEARNING ĐỂ ĐẾM SỐ LƯỢNG XE ÔTÔ TRONG NỘI THÀNH ĐÀ NẴNG 51920ed2ỨNG DỤNG DEEP LEARNING ĐỂ ĐẾM SỐ LƯỢNG XE ÔTÔ TRONG NỘI THÀNH ĐÀ NẴNG 51920ed2
ỨNG DỤNG DEEP LEARNING ĐỂ ĐẾM SỐ LƯỢNG XE ÔTÔ TRONG NỘI THÀNH ĐÀ NẴNG 51920ed2nataliej4
 
Tong quan ve phan cum data mining
Tong quan ve phan cum   data miningTong quan ve phan cum   data mining
Tong quan ve phan cum data miningHoa Chu
 

Tendances (6)

Luận văn: Nghiên cứu didactic việc dạy học hàm số, HAY, 9đ
Luận văn: Nghiên cứu didactic việc dạy học hàm số, HAY, 9đLuận văn: Nghiên cứu didactic việc dạy học hàm số, HAY, 9đ
Luận văn: Nghiên cứu didactic việc dạy học hàm số, HAY, 9đ
 
Nguyen dinhnghi do-an
Nguyen dinhnghi do-anNguyen dinhnghi do-an
Nguyen dinhnghi do-an
 
Luận văn: Hàm số và đồ thị trong dạy học toán ở phổ thông, HAY
Luận văn: Hàm số và đồ thị trong dạy học toán ở phổ thông, HAYLuận văn: Hàm số và đồ thị trong dạy học toán ở phổ thông, HAY
Luận văn: Hàm số và đồ thị trong dạy học toán ở phổ thông, HAY
 
ỨNG DỤNG DEEP LEARNING ĐỂ ĐẾM SỐ LƯỢNG XE ÔTÔ TRONG NỘI THÀNH ĐÀ NẴNG 51920ed2
ỨNG DỤNG DEEP LEARNING ĐỂ ĐẾM SỐ LƯỢNG XE ÔTÔ TRONG NỘI THÀNH ĐÀ NẴNG 51920ed2ỨNG DỤNG DEEP LEARNING ĐỂ ĐẾM SỐ LƯỢNG XE ÔTÔ TRONG NỘI THÀNH ĐÀ NẴNG 51920ed2
ỨNG DỤNG DEEP LEARNING ĐỂ ĐẾM SỐ LƯỢNG XE ÔTÔ TRONG NỘI THÀNH ĐÀ NẴNG 51920ed2
 
Tong quan ve phan cum data mining
Tong quan ve phan cum   data miningTong quan ve phan cum   data mining
Tong quan ve phan cum data mining
 
Luận văn: Nghiên cứu didactic về khái niệm tích vô hướng, HOT
Luận văn: Nghiên cứu didactic về khái niệm tích vô hướng, HOTLuận văn: Nghiên cứu didactic về khái niệm tích vô hướng, HOT
Luận văn: Nghiên cứu didactic về khái niệm tích vô hướng, HOT
 

En vedette

Sự thật về quan hệ Việt Nam - Trung Quốc trong 30 năm qua
Sự thật về quan hệ Việt Nam - Trung Quốc trong 30 năm quaSự thật về quan hệ Việt Nam - Trung Quốc trong 30 năm qua
Sự thật về quan hệ Việt Nam - Trung Quốc trong 30 năm quaBùi Việt Hà
 
Google android 1 20110604
Google android 1   20110604Google android 1   20110604
Google android 1 20110604AiTi Education
 
Limits in the sea - Phân tích đường lưỡi bò của BNG Hoa kỳ
Limits in the sea - Phân tích đường lưỡi bò của BNG Hoa kỳLimits in the sea - Phân tích đường lưỡi bò của BNG Hoa kỳ
Limits in the sea - Phân tích đường lưỡi bò của BNG Hoa kỳBùi Việt Hà
 
Bill Hayton. The South China Sea
Bill Hayton. The South China SeaBill Hayton. The South China Sea
Bill Hayton. The South China SeaBùi Việt Hà
 
Unit 7 nâng cao. Bài 7. Biến nhớ List.
Unit 7 nâng cao. Bài 7. Biến nhớ List.Unit 7 nâng cao. Bài 7. Biến nhớ List.
Unit 7 nâng cao. Bài 7. Biến nhớ List.Bùi Việt Hà
 
Chương trình đào tạo CNTTdành cho GV các cấp Mầm non, Tiểu học và THCS
Chương trình đào tạo CNTTdành cho GV các cấp Mầm non, Tiểu học và THCSChương trình đào tạo CNTTdành cho GV các cấp Mầm non, Tiểu học và THCS
Chương trình đào tạo CNTTdành cho GV các cấp Mầm non, Tiểu học và THCSBùi Việt Hà
 
Danh sách mới nhất các phần mềm và dịch vụ iQB 8.0
Danh sách mới nhất các phần mềm và dịch vụ iQB 8.0Danh sách mới nhất các phần mềm và dịch vụ iQB 8.0
Danh sách mới nhất các phần mềm và dịch vụ iQB 8.0Bùi Việt Hà
 
Thiết kế bài giảng elearning. Phần Cơ bản.
Thiết kế bài giảng elearning. Phần Cơ bản. Thiết kế bài giảng elearning. Phần Cơ bản.
Thiết kế bài giảng elearning. Phần Cơ bản. Bùi Việt Hà
 
7 bước xếp thời khóa biểu
7 bước xếp thời khóa biểu7 bước xếp thời khóa biểu
7 bước xếp thời khóa biểuBùi Việt Hà
 
Unit 2. Làm quen với môi trường Scratch.
Unit 2. Làm quen với môi trường Scratch.Unit 2. Làm quen với môi trường Scratch.
Unit 2. Làm quen với môi trường Scratch.Bùi Việt Hà
 
Scratch cơ bản. Bài 0. Tổng quan Scratch
Scratch cơ bản. Bài 0. Tổng quan ScratchScratch cơ bản. Bài 0. Tổng quan Scratch
Scratch cơ bản. Bài 0. Tổng quan ScratchBùi Việt Hà
 
Tìm đường trên di động (PhoneGap)
Tìm đường trên di động (PhoneGap)Tìm đường trên di động (PhoneGap)
Tìm đường trên di động (PhoneGap)Lương Bá Hợp
 
Giới thiệu nhanh giải pháp phần mềm Ngân hàng câu hỏi và đề kiểm tra iQB 8.0
Giới thiệu nhanh giải pháp phần mềm Ngân hàng câu hỏi và đề kiểm tra iQB 8.0Giới thiệu nhanh giải pháp phần mềm Ngân hàng câu hỏi và đề kiểm tra iQB 8.0
Giới thiệu nhanh giải pháp phần mềm Ngân hàng câu hỏi và đề kiểm tra iQB 8.0Bùi Việt Hà
 
XÂY DỰNG HỆ THỐNG HƯỚNG DẪN GIAO THÔNG TRÊN THIẾT BỊ ANDROID
XÂY DỰNG HỆ THỐNG  HƯỚNG DẪN GIAO THÔNG  TRÊN THIẾT BỊ ANDROIDXÂY DỰNG HỆ THỐNG  HƯỚNG DẪN GIAO THÔNG  TRÊN THIẾT BỊ ANDROID
XÂY DỰNG HỆ THỐNG HƯỚNG DẪN GIAO THÔNG TRÊN THIẾT BỊ ANDROIDAnh Kunz
 
Giới thiệu - Tập huấn iQB 8.0
Giới thiệu - Tập huấn iQB 8.0Giới thiệu - Tập huấn iQB 8.0
Giới thiệu - Tập huấn iQB 8.0Bùi Việt Hà
 
Unit 8 nâng cao. Bài 8. Clone.
Unit 8 nâng cao. Bài 8. Clone.Unit 8 nâng cao. Bài 8. Clone.
Unit 8 nâng cao. Bài 8. Clone.Bùi Việt Hà
 
Unit 3 nâng cao. Bài 3. Nhân vật, sân khấu, âm thanh.
Unit 3 nâng cao. Bài 3. Nhân vật, sân khấu, âm thanh.Unit 3 nâng cao. Bài 3. Nhân vật, sân khấu, âm thanh.
Unit 3 nâng cao. Bài 3. Nhân vật, sân khấu, âm thanh.Bùi Việt Hà
 
Unit 6 nâng cao. Bài 6. Xử lý số và xâu ký tự.
Unit 6 nâng cao. Bài 6. Xử lý số và xâu ký tự.Unit 6 nâng cao. Bài 6. Xử lý số và xâu ký tự.
Unit 6 nâng cao. Bài 6. Xử lý số và xâu ký tự.Bùi Việt Hà
 
Unit 5 nâng cao. Bài 5. Thủ tục
Unit 5 nâng cao. Bài 5. Thủ tụcUnit 5 nâng cao. Bài 5. Thủ tục
Unit 5 nâng cao. Bài 5. Thủ tụcBùi Việt Hà
 

En vedette (20)

Sự thật về quan hệ Việt Nam - Trung Quốc trong 30 năm qua
Sự thật về quan hệ Việt Nam - Trung Quốc trong 30 năm quaSự thật về quan hệ Việt Nam - Trung Quốc trong 30 năm qua
Sự thật về quan hệ Việt Nam - Trung Quốc trong 30 năm qua
 
Google android 1 20110604
Google android 1   20110604Google android 1   20110604
Google android 1 20110604
 
Limits in the sea - Phân tích đường lưỡi bò của BNG Hoa kỳ
Limits in the sea - Phân tích đường lưỡi bò của BNG Hoa kỳLimits in the sea - Phân tích đường lưỡi bò của BNG Hoa kỳ
Limits in the sea - Phân tích đường lưỡi bò của BNG Hoa kỳ
 
Bill Hayton. The South China Sea
Bill Hayton. The South China SeaBill Hayton. The South China Sea
Bill Hayton. The South China Sea
 
Unit 7 nâng cao. Bài 7. Biến nhớ List.
Unit 7 nâng cao. Bài 7. Biến nhớ List.Unit 7 nâng cao. Bài 7. Biến nhớ List.
Unit 7 nâng cao. Bài 7. Biến nhớ List.
 
Chương trình đào tạo CNTTdành cho GV các cấp Mầm non, Tiểu học và THCS
Chương trình đào tạo CNTTdành cho GV các cấp Mầm non, Tiểu học và THCSChương trình đào tạo CNTTdành cho GV các cấp Mầm non, Tiểu học và THCS
Chương trình đào tạo CNTTdành cho GV các cấp Mầm non, Tiểu học và THCS
 
Danh sách mới nhất các phần mềm và dịch vụ iQB 8.0
Danh sách mới nhất các phần mềm và dịch vụ iQB 8.0Danh sách mới nhất các phần mềm và dịch vụ iQB 8.0
Danh sách mới nhất các phần mềm và dịch vụ iQB 8.0
 
Thiết kế bài giảng elearning. Phần Cơ bản.
Thiết kế bài giảng elearning. Phần Cơ bản. Thiết kế bài giảng elearning. Phần Cơ bản.
Thiết kế bài giảng elearning. Phần Cơ bản.
 
7 bước xếp thời khóa biểu
7 bước xếp thời khóa biểu7 bước xếp thời khóa biểu
7 bước xếp thời khóa biểu
 
Unit 2. Làm quen với môi trường Scratch.
Unit 2. Làm quen với môi trường Scratch.Unit 2. Làm quen với môi trường Scratch.
Unit 2. Làm quen với môi trường Scratch.
 
Scratch cơ bản. Bài 0. Tổng quan Scratch
Scratch cơ bản. Bài 0. Tổng quan ScratchScratch cơ bản. Bài 0. Tổng quan Scratch
Scratch cơ bản. Bài 0. Tổng quan Scratch
 
Tìm đường trên di động (PhoneGap)
Tìm đường trên di động (PhoneGap)Tìm đường trên di động (PhoneGap)
Tìm đường trên di động (PhoneGap)
 
Giới thiệu nhanh giải pháp phần mềm Ngân hàng câu hỏi và đề kiểm tra iQB 8.0
Giới thiệu nhanh giải pháp phần mềm Ngân hàng câu hỏi và đề kiểm tra iQB 8.0Giới thiệu nhanh giải pháp phần mềm Ngân hàng câu hỏi và đề kiểm tra iQB 8.0
Giới thiệu nhanh giải pháp phần mềm Ngân hàng câu hỏi và đề kiểm tra iQB 8.0
 
XÂY DỰNG HỆ THỐNG HƯỚNG DẪN GIAO THÔNG TRÊN THIẾT BỊ ANDROID
XÂY DỰNG HỆ THỐNG  HƯỚNG DẪN GIAO THÔNG  TRÊN THIẾT BỊ ANDROIDXÂY DỰNG HỆ THỐNG  HƯỚNG DẪN GIAO THÔNG  TRÊN THIẾT BỊ ANDROID
XÂY DỰNG HỆ THỐNG HƯỚNG DẪN GIAO THÔNG TRÊN THIẾT BỊ ANDROID
 
Android
AndroidAndroid
Android
 
Giới thiệu - Tập huấn iQB 8.0
Giới thiệu - Tập huấn iQB 8.0Giới thiệu - Tập huấn iQB 8.0
Giới thiệu - Tập huấn iQB 8.0
 
Unit 8 nâng cao. Bài 8. Clone.
Unit 8 nâng cao. Bài 8. Clone.Unit 8 nâng cao. Bài 8. Clone.
Unit 8 nâng cao. Bài 8. Clone.
 
Unit 3 nâng cao. Bài 3. Nhân vật, sân khấu, âm thanh.
Unit 3 nâng cao. Bài 3. Nhân vật, sân khấu, âm thanh.Unit 3 nâng cao. Bài 3. Nhân vật, sân khấu, âm thanh.
Unit 3 nâng cao. Bài 3. Nhân vật, sân khấu, âm thanh.
 
Unit 6 nâng cao. Bài 6. Xử lý số và xâu ký tự.
Unit 6 nâng cao. Bài 6. Xử lý số và xâu ký tự.Unit 6 nâng cao. Bài 6. Xử lý số và xâu ký tự.
Unit 6 nâng cao. Bài 6. Xử lý số và xâu ký tự.
 
Unit 5 nâng cao. Bài 5. Thủ tục
Unit 5 nâng cao. Bài 5. Thủ tụcUnit 5 nâng cao. Bài 5. Thủ tục
Unit 5 nâng cao. Bài 5. Thủ tục
 

Similaire à CS4S Số 1(8) 2016

dạy học hệ thức lượng trong tam giác theo các bước khảo sát toán học.pdf
dạy học hệ thức lượng trong tam giác theo các bước khảo sát toán học.pdfdạy học hệ thức lượng trong tam giác theo các bước khảo sát toán học.pdf
dạy học hệ thức lượng trong tam giác theo các bước khảo sát toán học.pdfSngNguyn718617
 
GIÁO ÁN TIN HỌC 6 KẾT NỐI TRI THỨC.docx
GIÁO ÁN TIN HỌC 6 KẾT NỐI TRI THỨC.docxGIÁO ÁN TIN HỌC 6 KẾT NỐI TRI THỨC.docx
GIÁO ÁN TIN HỌC 6 KẾT NỐI TRI THỨC.docxTopSKKN
 
Baocaonhom14_ noidungtunghiencuu
Baocaonhom14_ noidungtunghiencuuBaocaonhom14_ noidungtunghiencuu
Baocaonhom14_ noidungtunghiencuutranninh210
 
ĐỀ TÀI : ĐIỂM DANH BẰNG NHẬN DIỆN KHUÔN MẶT. Giảng viên : PGS.TS. HUỲNH CÔNG ...
ĐỀ TÀI : ĐIỂM DANH BẰNG NHẬN DIỆN KHUÔN MẶT. Giảng viên : PGS.TS. HUỲNH CÔNG ...ĐỀ TÀI : ĐIỂM DANH BẰNG NHẬN DIỆN KHUÔN MẶT. Giảng viên : PGS.TS. HUỲNH CÔNG ...
ĐỀ TÀI : ĐIỂM DANH BẰNG NHẬN DIỆN KHUÔN MẶT. Giảng viên : PGS.TS. HUỲNH CÔNG ...nataliej4
 
Udcnttk2 nhóm 2 đồ án lý thuyết
Udcnttk2 nhóm 2 đồ án lý thuyếtUdcnttk2 nhóm 2 đồ án lý thuyết
Udcnttk2 nhóm 2 đồ án lý thuyếtmrnxthanh
 
SÁNG KIẾN MỘT SỐ HOẠT ĐỘNG TRẢI NGHIỆM HƯỚNG NGHIỆP QUA CHỦ ĐỀ 6 - THAM GIA X...
SÁNG KIẾN MỘT SỐ HOẠT ĐỘNG TRẢI NGHIỆM HƯỚNG NGHIỆP QUA CHỦ ĐỀ 6 - THAM GIA X...SÁNG KIẾN MỘT SỐ HOẠT ĐỘNG TRẢI NGHIỆM HƯỚNG NGHIỆP QUA CHỦ ĐỀ 6 - THAM GIA X...
SÁNG KIẾN MỘT SỐ HOẠT ĐỘNG TRẢI NGHIỆM HƯỚNG NGHIỆP QUA CHỦ ĐỀ 6 - THAM GIA X...Nguyen Thanh Tu Collection
 
Udcnttk2 nhom05 doanlythuyet
Udcnttk2 nhom05 doanlythuyetUdcnttk2 nhom05 doanlythuyet
Udcnttk2 nhom05 doanlythuyetPhan_Oanh
 
Do an lythuyet
Do an lythuyetDo an lythuyet
Do an lythuyetPhan_Oanh
 
Chương trình GDPTtin_hoc_2018 file Word .
Chương trình GDPTtin_hoc_2018 file Word .Chương trình GDPTtin_hoc_2018 file Word .
Chương trình GDPTtin_hoc_2018 file Word .CngHongB
 
Do an ly thuyet nhóm 06
Do an ly thuyet nhóm 06Do an ly thuyet nhóm 06
Do an ly thuyet nhóm 06an902000
 
đạI học đà nẵngkhoa công nghệ thông tin và truyền thông báo cáo đồ án cơ sở 5...
đạI học đà nẵngkhoa công nghệ thông tin và truyền thông báo cáo đồ án cơ sở 5...đạI học đà nẵngkhoa công nghệ thông tin và truyền thông báo cáo đồ án cơ sở 5...
đạI học đà nẵngkhoa công nghệ thông tin và truyền thông báo cáo đồ án cơ sở 5...jackjohn45
 

Similaire à CS4S Số 1(8) 2016 (20)

Stem va tin hoc
Stem va tin hocStem va tin hoc
Stem va tin hoc
 
Đề tài: Nghiên cứu thuật toán K-nearest neighbor, HAY, 9đ
Đề tài: Nghiên cứu thuật toán K-nearest neighbor, HAY, 9đĐề tài: Nghiên cứu thuật toán K-nearest neighbor, HAY, 9đ
Đề tài: Nghiên cứu thuật toán K-nearest neighbor, HAY, 9đ
 
dạy học hệ thức lượng trong tam giác theo các bước khảo sát toán học.pdf
dạy học hệ thức lượng trong tam giác theo các bước khảo sát toán học.pdfdạy học hệ thức lượng trong tam giác theo các bước khảo sát toán học.pdf
dạy học hệ thức lượng trong tam giác theo các bước khảo sát toán học.pdf
 
Tin
TinTin
Tin
 
GIÁO ÁN TIN HỌC 6 KẾT NỐI TRI THỨC.docx
GIÁO ÁN TIN HỌC 6 KẾT NỐI TRI THỨC.docxGIÁO ÁN TIN HỌC 6 KẾT NỐI TRI THỨC.docx
GIÁO ÁN TIN HỌC 6 KẾT NỐI TRI THỨC.docx
 
Baocaonhom14_ noidungtunghiencuu
Baocaonhom14_ noidungtunghiencuuBaocaonhom14_ noidungtunghiencuu
Baocaonhom14_ noidungtunghiencuu
 
Luận văn: Theo dõi đối tượng dựa trên giải thuật di truyền, HAY
Luận văn: Theo dõi đối tượng dựa trên giải thuật di truyền, HAYLuận văn: Theo dõi đối tượng dựa trên giải thuật di truyền, HAY
Luận văn: Theo dõi đối tượng dựa trên giải thuật di truyền, HAY
 
ĐỀ TÀI : ĐIỂM DANH BẰNG NHẬN DIỆN KHUÔN MẶT. Giảng viên : PGS.TS. HUỲNH CÔNG ...
ĐỀ TÀI : ĐIỂM DANH BẰNG NHẬN DIỆN KHUÔN MẶT. Giảng viên : PGS.TS. HUỲNH CÔNG ...ĐỀ TÀI : ĐIỂM DANH BẰNG NHẬN DIỆN KHUÔN MẶT. Giảng viên : PGS.TS. HUỲNH CÔNG ...
ĐỀ TÀI : ĐIỂM DANH BẰNG NHẬN DIỆN KHUÔN MẶT. Giảng viên : PGS.TS. HUỲNH CÔNG ...
 
Udcnttk2 nhóm 2 đồ án lý thuyết
Udcnttk2 nhóm 2 đồ án lý thuyếtUdcnttk2 nhóm 2 đồ án lý thuyết
Udcnttk2 nhóm 2 đồ án lý thuyết
 
SÁNG KIẾN MỘT SỐ HOẠT ĐỘNG TRẢI NGHIỆM HƯỚNG NGHIỆP QUA CHỦ ĐỀ 6 - THAM GIA X...
SÁNG KIẾN MỘT SỐ HOẠT ĐỘNG TRẢI NGHIỆM HƯỚNG NGHIỆP QUA CHỦ ĐỀ 6 - THAM GIA X...SÁNG KIẾN MỘT SỐ HOẠT ĐỘNG TRẢI NGHIỆM HƯỚNG NGHIỆP QUA CHỦ ĐỀ 6 - THAM GIA X...
SÁNG KIẾN MỘT SỐ HOẠT ĐỘNG TRẢI NGHIỆM HƯỚNG NGHIỆP QUA CHỦ ĐỀ 6 - THAM GIA X...
 
Udcnttk2 nhom05 doanlythuyet
Udcnttk2 nhom05 doanlythuyetUdcnttk2 nhom05 doanlythuyet
Udcnttk2 nhom05 doanlythuyet
 
Do an lythuyet
Do an lythuyetDo an lythuyet
Do an lythuyet
 
Chương trình GDPTtin_hoc_2018 file Word .
Chương trình GDPTtin_hoc_2018 file Word .Chương trình GDPTtin_hoc_2018 file Word .
Chương trình GDPTtin_hoc_2018 file Word .
 
Luận văn: Thiết kế và sử dụng e-book hỗ trợ quá trình dạy học, 9đ
Luận văn: Thiết kế và sử dụng e-book hỗ trợ quá trình dạy học, 9đLuận văn: Thiết kế và sử dụng e-book hỗ trợ quá trình dạy học, 9đ
Luận văn: Thiết kế và sử dụng e-book hỗ trợ quá trình dạy học, 9đ
 
Do an ly thuyet nhóm 06
Do an ly thuyet nhóm 06Do an ly thuyet nhóm 06
Do an ly thuyet nhóm 06
 
Ly thuyết
Ly thuyếtLy thuyết
Ly thuyết
 
Đề tài: Xây dựng hệ thống tổng hợp thông tin kinh tế xã hội
Đề tài: Xây dựng hệ thống tổng hợp thông tin kinh tế xã hộiĐề tài: Xây dựng hệ thống tổng hợp thông tin kinh tế xã hội
Đề tài: Xây dựng hệ thống tổng hợp thông tin kinh tế xã hội
 
đạI học đà nẵngkhoa công nghệ thông tin và truyền thông báo cáo đồ án cơ sở 5...
đạI học đà nẵngkhoa công nghệ thông tin và truyền thông báo cáo đồ án cơ sở 5...đạI học đà nẵngkhoa công nghệ thông tin và truyền thông báo cáo đồ án cơ sở 5...
đạI học đà nẵngkhoa công nghệ thông tin và truyền thông báo cáo đồ án cơ sở 5...
 
Phương pháp trừu tượng hóa mô hình quy trình kinh doanh, HAY
Phương pháp trừu tượng hóa mô hình quy trình kinh doanh, HAYPhương pháp trừu tượng hóa mô hình quy trình kinh doanh, HAY
Phương pháp trừu tượng hóa mô hình quy trình kinh doanh, HAY
 
Luận văn: Tìm hiểu giải thuật tìm kiếm cộng đồng trong mạng xã hội
Luận văn: Tìm hiểu giải thuật tìm kiếm cộng đồng trong mạng xã hộiLuận văn: Tìm hiểu giải thuật tìm kiếm cộng đồng trong mạng xã hội
Luận văn: Tìm hiểu giải thuật tìm kiếm cộng đồng trong mạng xã hội
 

Plus de Bùi Việt Hà

Tập huấn, giới thiệu TKB 10.0 bản đầy đủ.
Tập huấn, giới thiệu TKB 10.0 bản đầy đủ.Tập huấn, giới thiệu TKB 10.0 bản đầy đủ.
Tập huấn, giới thiệu TKB 10.0 bản đầy đủ.Bùi Việt Hà
 
Giới thiệu - Tập huấn iQB 8.0
Giới thiệu - Tập huấn iQB 8.0Giới thiệu - Tập huấn iQB 8.0
Giới thiệu - Tập huấn iQB 8.0Bùi Việt Hà
 
Tập huấn giới thiệu iQB Cat 8.0
Tập huấn giới thiệu iQB Cat 8.0Tập huấn giới thiệu iQB Cat 8.0
Tập huấn giới thiệu iQB Cat 8.0Bùi Việt Hà
 
Giới thiệu phần mềm iQB Cat 8.0
Giới thiệu phần mềm iQB Cat 8.0Giới thiệu phần mềm iQB Cat 8.0
Giới thiệu phần mềm iQB Cat 8.0Bùi Việt Hà
 
Lệnh tạo đa đề kiểm tra trong iQB 8.0
Lệnh tạo đa đề kiểm tra trong iQB 8.0Lệnh tạo đa đề kiểm tra trong iQB 8.0
Lệnh tạo đa đề kiểm tra trong iQB 8.0Bùi Việt Hà
 
Giới thiệu phần mềm Geogebra 5.0
Giới thiệu phần mềm Geogebra 5.0Giới thiệu phần mềm Geogebra 5.0
Giới thiệu phần mềm Geogebra 5.0Bùi Việt Hà
 
Thiết kế bài giảng bằng video
Thiết kế bài giảng bằng videoThiết kế bài giảng bằng video
Thiết kế bài giảng bằng videoBùi Việt Hà
 
Thiết kế bài giảng điện tử, elearning. Cơ bản.
Thiết kế bài giảng điện tử, elearning. Cơ bản.Thiết kế bài giảng điện tử, elearning. Cơ bản.
Thiết kế bài giảng điện tử, elearning. Cơ bản.Bùi Việt Hà
 
Giới thiệu nhanh phần mềm bảng tương tác ActivInspire
Giới thiệu nhanh phần mềm bảng tương tác ActivInspireGiới thiệu nhanh phần mềm bảng tương tác ActivInspire
Giới thiệu nhanh phần mềm bảng tương tác ActivInspireBùi Việt Hà
 
Thiết kế bài giảng elearning. Phần Cơ bản
Thiết kế bài giảng elearning. Phần Cơ bảnThiết kế bài giảng elearning. Phần Cơ bản
Thiết kế bài giảng elearning. Phần Cơ bảnBùi Việt Hà
 
Tập huấn giới thiệu phần mềm và dịch vụ hỗ trợ giáo viên Tiếng Việt Tiểu học
Tập huấn giới thiệu phần mềm và dịch vụ hỗ trợ giáo viên Tiếng Việt Tiểu họcTập huấn giới thiệu phần mềm và dịch vụ hỗ trợ giáo viên Tiếng Việt Tiểu học
Tập huấn giới thiệu phần mềm và dịch vụ hỗ trợ giáo viên Tiếng Việt Tiểu họcBùi Việt Hà
 
Tập huấn giới thiệu phần mềm và dịch vụ hỗ trợ giáo viên Toán Tiểu học
Tập huấn giới thiệu phần mềm và dịch vụ hỗ trợ giáo viên Toán Tiểu họcTập huấn giới thiệu phần mềm và dịch vụ hỗ trợ giáo viên Toán Tiểu học
Tập huấn giới thiệu phần mềm và dịch vụ hỗ trợ giáo viên Toán Tiểu họcBùi Việt Hà
 
Unit 4 nâng cao. Bài 4. Truyền thông.
Unit 4 nâng cao. Bài 4. Truyền thông.Unit 4 nâng cao. Bài 4. Truyền thông.
Unit 4 nâng cao. Bài 4. Truyền thông.Bùi Việt Hà
 
Unit 2 nâng cao. Biến nhớ và dữ liệu.
Unit 2 nâng cao. Biến nhớ và dữ liệu.Unit 2 nâng cao. Biến nhớ và dữ liệu.
Unit 2 nâng cao. Biến nhớ và dữ liệu.Bùi Việt Hà
 
Unit 1 nâng cao. Các cấu trúc điều khiển
Unit 1 nâng cao. Các cấu trúc điều khiểnUnit 1 nâng cao. Các cấu trúc điều khiển
Unit 1 nâng cao. Các cấu trúc điều khiểnBùi Việt Hà
 
Giới thiệu tổng quan giải pháp Ngân hàng câu hỏi thông minh iQB 8.0
Giới thiệu tổng quan giải pháp Ngân hàng câu hỏi thông minh iQB 8.0Giới thiệu tổng quan giải pháp Ngân hàng câu hỏi thông minh iQB 8.0
Giới thiệu tổng quan giải pháp Ngân hàng câu hỏi thông minh iQB 8.0Bùi Việt Hà
 
Tập huấn chi tiết phần mềm TKB 10.0
Tập huấn chi tiết phần mềm TKB 10.0Tập huấn chi tiết phần mềm TKB 10.0
Tập huấn chi tiết phần mềm TKB 10.0Bùi Việt Hà
 
Unit 1. Tổng quan Scratch
Unit 1. Tổng quan ScratchUnit 1. Tổng quan Scratch
Unit 1. Tổng quan ScratchBùi Việt Hà
 

Plus de Bùi Việt Hà (19)

Tập huấn, giới thiệu TKB 10.0 bản đầy đủ.
Tập huấn, giới thiệu TKB 10.0 bản đầy đủ.Tập huấn, giới thiệu TKB 10.0 bản đầy đủ.
Tập huấn, giới thiệu TKB 10.0 bản đầy đủ.
 
Giới thiệu - Tập huấn iQB 8.0
Giới thiệu - Tập huấn iQB 8.0Giới thiệu - Tập huấn iQB 8.0
Giới thiệu - Tập huấn iQB 8.0
 
Tập huấn giới thiệu iQB Cat 8.0
Tập huấn giới thiệu iQB Cat 8.0Tập huấn giới thiệu iQB Cat 8.0
Tập huấn giới thiệu iQB Cat 8.0
 
Giới thiệu phần mềm iQB Cat 8.0
Giới thiệu phần mềm iQB Cat 8.0Giới thiệu phần mềm iQB Cat 8.0
Giới thiệu phần mềm iQB Cat 8.0
 
Lệnh tạo đa đề kiểm tra trong iQB 8.0
Lệnh tạo đa đề kiểm tra trong iQB 8.0Lệnh tạo đa đề kiểm tra trong iQB 8.0
Lệnh tạo đa đề kiểm tra trong iQB 8.0
 
Giới thiệu phần mềm Geogebra 5.0
Giới thiệu phần mềm Geogebra 5.0Giới thiệu phần mềm Geogebra 5.0
Giới thiệu phần mềm Geogebra 5.0
 
Thiết kế bài giảng bằng video
Thiết kế bài giảng bằng videoThiết kế bài giảng bằng video
Thiết kế bài giảng bằng video
 
Thiết kế bài giảng điện tử, elearning. Cơ bản.
Thiết kế bài giảng điện tử, elearning. Cơ bản.Thiết kế bài giảng điện tử, elearning. Cơ bản.
Thiết kế bài giảng điện tử, elearning. Cơ bản.
 
Giới thiệu nhanh phần mềm bảng tương tác ActivInspire
Giới thiệu nhanh phần mềm bảng tương tác ActivInspireGiới thiệu nhanh phần mềm bảng tương tác ActivInspire
Giới thiệu nhanh phần mềm bảng tương tác ActivInspire
 
Thiết kế bài giảng elearning. Phần Cơ bản
Thiết kế bài giảng elearning. Phần Cơ bảnThiết kế bài giảng elearning. Phần Cơ bản
Thiết kế bài giảng elearning. Phần Cơ bản
 
Làm quen với Scratch
Làm quen với ScratchLàm quen với Scratch
Làm quen với Scratch
 
Tập huấn giới thiệu phần mềm và dịch vụ hỗ trợ giáo viên Tiếng Việt Tiểu học
Tập huấn giới thiệu phần mềm và dịch vụ hỗ trợ giáo viên Tiếng Việt Tiểu họcTập huấn giới thiệu phần mềm và dịch vụ hỗ trợ giáo viên Tiếng Việt Tiểu học
Tập huấn giới thiệu phần mềm và dịch vụ hỗ trợ giáo viên Tiếng Việt Tiểu học
 
Tập huấn giới thiệu phần mềm và dịch vụ hỗ trợ giáo viên Toán Tiểu học
Tập huấn giới thiệu phần mềm và dịch vụ hỗ trợ giáo viên Toán Tiểu họcTập huấn giới thiệu phần mềm và dịch vụ hỗ trợ giáo viên Toán Tiểu học
Tập huấn giới thiệu phần mềm và dịch vụ hỗ trợ giáo viên Toán Tiểu học
 
Unit 4 nâng cao. Bài 4. Truyền thông.
Unit 4 nâng cao. Bài 4. Truyền thông.Unit 4 nâng cao. Bài 4. Truyền thông.
Unit 4 nâng cao. Bài 4. Truyền thông.
 
Unit 2 nâng cao. Biến nhớ và dữ liệu.
Unit 2 nâng cao. Biến nhớ và dữ liệu.Unit 2 nâng cao. Biến nhớ và dữ liệu.
Unit 2 nâng cao. Biến nhớ và dữ liệu.
 
Unit 1 nâng cao. Các cấu trúc điều khiển
Unit 1 nâng cao. Các cấu trúc điều khiểnUnit 1 nâng cao. Các cấu trúc điều khiển
Unit 1 nâng cao. Các cấu trúc điều khiển
 
Giới thiệu tổng quan giải pháp Ngân hàng câu hỏi thông minh iQB 8.0
Giới thiệu tổng quan giải pháp Ngân hàng câu hỏi thông minh iQB 8.0Giới thiệu tổng quan giải pháp Ngân hàng câu hỏi thông minh iQB 8.0
Giới thiệu tổng quan giải pháp Ngân hàng câu hỏi thông minh iQB 8.0
 
Tập huấn chi tiết phần mềm TKB 10.0
Tập huấn chi tiết phần mềm TKB 10.0Tập huấn chi tiết phần mềm TKB 10.0
Tập huấn chi tiết phần mềm TKB 10.0
 
Unit 1. Tổng quan Scratch
Unit 1. Tổng quan ScratchUnit 1. Tổng quan Scratch
Unit 1. Tổng quan Scratch
 

Dernier

các nội dung phòng chống xâm hại tình dục ở trẻ em
các nội dung phòng chống xâm hại tình dục ở trẻ emcác nội dung phòng chống xâm hại tình dục ở trẻ em
các nội dung phòng chống xâm hại tình dục ở trẻ emTrangNhung96
 
Bài giảng môn Truyền thông đa phương tiện
Bài giảng môn Truyền thông đa phương tiệnBài giảng môn Truyền thông đa phương tiện
Bài giảng môn Truyền thông đa phương tiệnpmtiendhti14a5hn
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
xemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdf
xemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdfxemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdf
xemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdfXem Số Mệnh
 
xemsomenh.com-Vòng Lộc Tồn - Vòng Bác Sĩ và Cách An Trong Vòng Lộc Tồn.pdf
xemsomenh.com-Vòng Lộc Tồn - Vòng Bác Sĩ và Cách An Trong Vòng Lộc Tồn.pdfxemsomenh.com-Vòng Lộc Tồn - Vòng Bác Sĩ và Cách An Trong Vòng Lộc Tồn.pdf
xemsomenh.com-Vòng Lộc Tồn - Vòng Bác Sĩ và Cách An Trong Vòng Lộc Tồn.pdfXem Số Mệnh
 
22 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÁI BÌNH NĂM HỌC 2023-2...
22 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÁI BÌNH NĂM HỌC 2023-2...22 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÁI BÌNH NĂM HỌC 2023-2...
22 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÁI BÌNH NĂM HỌC 2023-2...Nguyen Thanh Tu Collection
 
TUYỂN TẬP ĐỀ THI GIỮA KÌ, CUỐI KÌ 2 MÔN VẬT LÍ LỚP 11 THEO HÌNH THỨC THI MỚI ...
TUYỂN TẬP ĐỀ THI GIỮA KÌ, CUỐI KÌ 2 MÔN VẬT LÍ LỚP 11 THEO HÌNH THỨC THI MỚI ...TUYỂN TẬP ĐỀ THI GIỮA KÌ, CUỐI KÌ 2 MÔN VẬT LÍ LỚP 11 THEO HÌNH THỨC THI MỚI ...
TUYỂN TẬP ĐỀ THI GIỮA KÌ, CUỐI KÌ 2 MÔN VẬT LÍ LỚP 11 THEO HÌNH THỨC THI MỚI ...Nguyen Thanh Tu Collection
 
Tử Vi Là Gì Học Luận Giải Tử Vi Và Luận Đoán Vận Hạn
Tử Vi Là Gì Học Luận Giải Tử Vi Và Luận Đoán Vận HạnTử Vi Là Gì Học Luận Giải Tử Vi Và Luận Đoán Vận Hạn
Tử Vi Là Gì Học Luận Giải Tử Vi Và Luận Đoán Vận HạnKabala
 
TUYỂN TẬP 50 ĐỀ LUYỆN THI TUYỂN SINH LỚP 10 THPT MÔN TOÁN NĂM 2024 CÓ LỜI GIẢ...
TUYỂN TẬP 50 ĐỀ LUYỆN THI TUYỂN SINH LỚP 10 THPT MÔN TOÁN NĂM 2024 CÓ LỜI GIẢ...TUYỂN TẬP 50 ĐỀ LUYỆN THI TUYỂN SINH LỚP 10 THPT MÔN TOÁN NĂM 2024 CÓ LỜI GIẢ...
TUYỂN TẬP 50 ĐỀ LUYỆN THI TUYỂN SINH LỚP 10 THPT MÔN TOÁN NĂM 2024 CÓ LỜI GIẢ...Nguyen Thanh Tu Collection
 
Hướng dẫn viết tiểu luận cuối khóa lớp bồi dưỡng chức danh biên tập viên hạng 3
Hướng dẫn viết tiểu luận cuối khóa lớp bồi dưỡng chức danh biên tập viên hạng 3Hướng dẫn viết tiểu luận cuối khóa lớp bồi dưỡng chức danh biên tập viên hạng 3
Hướng dẫn viết tiểu luận cuối khóa lớp bồi dưỡng chức danh biên tập viên hạng 3lamluanvan.net Viết thuê luận văn
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
Giới Thiệu Về Kabala | Hành Trình Thấu Hiểu Bản Thân | Kabala.vn
Giới Thiệu Về Kabala | Hành Trình Thấu Hiểu Bản Thân | Kabala.vnGiới Thiệu Về Kabala | Hành Trình Thấu Hiểu Bản Thân | Kabala.vn
Giới Thiệu Về Kabala | Hành Trình Thấu Hiểu Bản Thân | Kabala.vnKabala
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...Nguyen Thanh Tu Collection
 
[123doc] - ao-dai-truyen-thong-viet-nam-va-xuong-xam-trung-quoc-trong-nen-van...
[123doc] - ao-dai-truyen-thong-viet-nam-va-xuong-xam-trung-quoc-trong-nen-van...[123doc] - ao-dai-truyen-thong-viet-nam-va-xuong-xam-trung-quoc-trong-nen-van...
[123doc] - ao-dai-truyen-thong-viet-nam-va-xuong-xam-trung-quoc-trong-nen-van...VnTh47
 
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...Nguyen Thanh Tu Collection
 
Logistics ngược trong thương mại doa.pdf
Logistics ngược trong thương mại doa.pdfLogistics ngược trong thương mại doa.pdf
Logistics ngược trong thương mại doa.pdfAnPhngVng
 
Giáo trình nhập môn lập trình - Đặng Bình Phương
Giáo trình nhập môn lập trình - Đặng Bình PhươngGiáo trình nhập môn lập trình - Đặng Bình Phương
Giáo trình nhập môn lập trình - Đặng Bình Phươnghazzthuan
 
60 CÂU HỎI ÔN TẬP LÝ LUẬN CHÍNH TRỊ NĂM 2024.docx
60 CÂU HỎI ÔN TẬP LÝ LUẬN CHÍNH TRỊ NĂM 2024.docx60 CÂU HỎI ÔN TẬP LÝ LUẬN CHÍNH TRỊ NĂM 2024.docx
60 CÂU HỎI ÔN TẬP LÝ LUẬN CHÍNH TRỊ NĂM 2024.docxasdnguyendinhdang
 
C6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoi
C6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoiC6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoi
C6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoidnghia2002
 
Xem sim phong thủy luận Hung - Cát số điện thoại chính xác nhất.pdf
Xem sim phong thủy luận Hung - Cát số điện thoại chính xác nhất.pdfXem sim phong thủy luận Hung - Cát số điện thoại chính xác nhất.pdf
Xem sim phong thủy luận Hung - Cát số điện thoại chính xác nhất.pdfXem Số Mệnh
 

Dernier (20)

các nội dung phòng chống xâm hại tình dục ở trẻ em
các nội dung phòng chống xâm hại tình dục ở trẻ emcác nội dung phòng chống xâm hại tình dục ở trẻ em
các nội dung phòng chống xâm hại tình dục ở trẻ em
 
Bài giảng môn Truyền thông đa phương tiện
Bài giảng môn Truyền thông đa phương tiệnBài giảng môn Truyền thông đa phương tiện
Bài giảng môn Truyền thông đa phương tiện
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
xemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdf
xemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdfxemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdf
xemsomenh.com-Vòng Tràng Sinh - Cách An 12 Sao Và Ý Nghĩa Từng Sao.pdf
 
xemsomenh.com-Vòng Lộc Tồn - Vòng Bác Sĩ và Cách An Trong Vòng Lộc Tồn.pdf
xemsomenh.com-Vòng Lộc Tồn - Vòng Bác Sĩ và Cách An Trong Vòng Lộc Tồn.pdfxemsomenh.com-Vòng Lộc Tồn - Vòng Bác Sĩ và Cách An Trong Vòng Lộc Tồn.pdf
xemsomenh.com-Vòng Lộc Tồn - Vòng Bác Sĩ và Cách An Trong Vòng Lộc Tồn.pdf
 
22 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÁI BÌNH NĂM HỌC 2023-2...
22 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÁI BÌNH NĂM HỌC 2023-2...22 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÁI BÌNH NĂM HỌC 2023-2...
22 ĐỀ THI THỬ TUYỂN SINH TIẾNG ANH VÀO 10 SỞ GD – ĐT THÁI BÌNH NĂM HỌC 2023-2...
 
TUYỂN TẬP ĐỀ THI GIỮA KÌ, CUỐI KÌ 2 MÔN VẬT LÍ LỚP 11 THEO HÌNH THỨC THI MỚI ...
TUYỂN TẬP ĐỀ THI GIỮA KÌ, CUỐI KÌ 2 MÔN VẬT LÍ LỚP 11 THEO HÌNH THỨC THI MỚI ...TUYỂN TẬP ĐỀ THI GIỮA KÌ, CUỐI KÌ 2 MÔN VẬT LÍ LỚP 11 THEO HÌNH THỨC THI MỚI ...
TUYỂN TẬP ĐỀ THI GIỮA KÌ, CUỐI KÌ 2 MÔN VẬT LÍ LỚP 11 THEO HÌNH THỨC THI MỚI ...
 
Tử Vi Là Gì Học Luận Giải Tử Vi Và Luận Đoán Vận Hạn
Tử Vi Là Gì Học Luận Giải Tử Vi Và Luận Đoán Vận HạnTử Vi Là Gì Học Luận Giải Tử Vi Và Luận Đoán Vận Hạn
Tử Vi Là Gì Học Luận Giải Tử Vi Và Luận Đoán Vận Hạn
 
TUYỂN TẬP 50 ĐỀ LUYỆN THI TUYỂN SINH LỚP 10 THPT MÔN TOÁN NĂM 2024 CÓ LỜI GIẢ...
TUYỂN TẬP 50 ĐỀ LUYỆN THI TUYỂN SINH LỚP 10 THPT MÔN TOÁN NĂM 2024 CÓ LỜI GIẢ...TUYỂN TẬP 50 ĐỀ LUYỆN THI TUYỂN SINH LỚP 10 THPT MÔN TOÁN NĂM 2024 CÓ LỜI GIẢ...
TUYỂN TẬP 50 ĐỀ LUYỆN THI TUYỂN SINH LỚP 10 THPT MÔN TOÁN NĂM 2024 CÓ LỜI GIẢ...
 
Hướng dẫn viết tiểu luận cuối khóa lớp bồi dưỡng chức danh biên tập viên hạng 3
Hướng dẫn viết tiểu luận cuối khóa lớp bồi dưỡng chức danh biên tập viên hạng 3Hướng dẫn viết tiểu luận cuối khóa lớp bồi dưỡng chức danh biên tập viên hạng 3
Hướng dẫn viết tiểu luận cuối khóa lớp bồi dưỡng chức danh biên tập viên hạng 3
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
Giới Thiệu Về Kabala | Hành Trình Thấu Hiểu Bản Thân | Kabala.vn
Giới Thiệu Về Kabala | Hành Trình Thấu Hiểu Bản Thân | Kabala.vnGiới Thiệu Về Kabala | Hành Trình Thấu Hiểu Bản Thân | Kabala.vn
Giới Thiệu Về Kabala | Hành Trình Thấu Hiểu Bản Thân | Kabala.vn
 
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
30 ĐỀ PHÁT TRIỂN THEO CẤU TRÚC ĐỀ MINH HỌA BGD NGÀY 22-3-2024 KỲ THI TỐT NGHI...
 
[123doc] - ao-dai-truyen-thong-viet-nam-va-xuong-xam-trung-quoc-trong-nen-van...
[123doc] - ao-dai-truyen-thong-viet-nam-va-xuong-xam-trung-quoc-trong-nen-van...[123doc] - ao-dai-truyen-thong-viet-nam-va-xuong-xam-trung-quoc-trong-nen-van...
[123doc] - ao-dai-truyen-thong-viet-nam-va-xuong-xam-trung-quoc-trong-nen-van...
 
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...
ĐỀ KIỂM TRA CUỐI KÌ 2 BIÊN SOẠN THEO ĐỊNH HƯỚNG ĐỀ BGD 2025 MÔN TOÁN 10 - CÁN...
 
Logistics ngược trong thương mại doa.pdf
Logistics ngược trong thương mại doa.pdfLogistics ngược trong thương mại doa.pdf
Logistics ngược trong thương mại doa.pdf
 
Giáo trình nhập môn lập trình - Đặng Bình Phương
Giáo trình nhập môn lập trình - Đặng Bình PhươngGiáo trình nhập môn lập trình - Đặng Bình Phương
Giáo trình nhập môn lập trình - Đặng Bình Phương
 
60 CÂU HỎI ÔN TẬP LÝ LUẬN CHÍNH TRỊ NĂM 2024.docx
60 CÂU HỎI ÔN TẬP LÝ LUẬN CHÍNH TRỊ NĂM 2024.docx60 CÂU HỎI ÔN TẬP LÝ LUẬN CHÍNH TRỊ NĂM 2024.docx
60 CÂU HỎI ÔN TẬP LÝ LUẬN CHÍNH TRỊ NĂM 2024.docx
 
C6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoi
C6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoiC6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoi
C6. Van de dan toc va ton giao ....pdf . Chu nghia xa hoi
 
Xem sim phong thủy luận Hung - Cát số điện thoại chính xác nhất.pdf
Xem sim phong thủy luận Hung - Cát số điện thoại chính xác nhất.pdfXem sim phong thủy luận Hung - Cát số điện thoại chính xác nhất.pdf
Xem sim phong thủy luận Hung - Cát số điện thoại chính xác nhất.pdf
 

CS4S Số 1(8) 2016

  • 1. 2016 Dạy số nhị phân không cần máy tính? Tổng quan môi trường lập trình Scratch Bản chất của tư duy máy tính
  • 2. CS4S. Computer Science for Schools 2 | P a g e Mục lục Vì sao CS4S?..................................................................................................................3 Bản chất của tư duy máy tính .........................................................................................4 The nature of computational thinking ............................................................................4 Chương trình khung và chi tiết cho môn Khoa học máy tính trong nhà trường ............8 Thuật toán mã hóa Học sinh & Giáo viên trong các phần mềm quản lý nhà trường phổ thông .............................................................................................................................11 CHỦ ĐỀ 1: HỆ NHỊ PHÂN.........................................................................................18 Tổng quan Scratch........................................................................................................26 Xếp số thứ tự trong ma trận vuông...............................................................................39 Danh sách cộng tác viên CS4S.....................................................................................45
  • 3. CS4S. Computer Science for Schools 3 | P a g e Vì sao CS4S? Trên tay các bạn là số đầu tiên của ấn phẩm điện tử CS4S: Computer Science for Schools có thể dịch là "Khoa học máy tính trong nhà trường". Vậy CS4S ra đời nhằm mục đích gì và vì sao nó lại ra đời tại điểm này? Đối tượng của CS4S Đối tượng của CS4S trước tiên dành cho các giáo viên bộ môn Tin học đang giảng dạy môn học này trong các nhà trường phổ thông và đại học, cao đẳng. Tuy nhiên ấn phẩm không chỉ hướng đến đội ngũ giáo viên tin học mà tất cả giáo viên có quan tâm đến lĩnh vực này, đến việc ứng dụng CNTT trong giảng dạy. Đối tượng chính, đông đảo của CS4S chắc chắn phải là các em học sinh, sinh viên say mê CNTT, say mê lập trình, say mê với các ứng dụng đa dạng của CNTT trong cuộc sống. Mục đích của CS4S Mục đích chính của ấn phẩm CS4S là tuyên truyền, hỗ trợ, quảng bá cho các chương trình, định hướng giảng dạy, nghiên cứu môn Tin học trong nhà trường, nhằm giúp thêm cho giáo viên và học sinh có thêm thông tin, kiến thức và định hướng cho môn học này. Hiện trạng của môn Tin học trong nhà trường Việt Nam hiện nay: - Là môn học có chương trình không đồng bộ, chắp vá và lạc hậu với thực tế. - Đội ngũ giáo viên Tin học không được coi trọng, ít có điều kiện đào tạo và cập nhật kiến thức mặc dù bản thân ngành CNTT, ICT là ngành có sự phát triển nhanh nhất trên thế giới. - Môn Tin học luôn là môn học phụ, do đó việc học tập, giảng dạy môn học này có rất nhiều bất cập trên thực tế. Yêu cầu thiết lập lại chương trình môn Tin học, nâng cao trình độ giáo viên Tin học, nâng cao vai trò của môn học này trong nhà trường là yêu cầu cấp bách. CS4S ra đời với mục đích cùng tham gia vào quá trình thay đổi này. Vì sao lại là Computer Science mà không là IT hay ICT Đây là câu hỏi rất thú vị, chúng tôi sẽ lần lượt trả lời trong các bài viết của CS4S. CS4S phát hành như thế nào? Dự kiến CS4S sẽ được phát hành 1 tháng 1 số, ấn phẩm sẽ là điện tử và hoàn toàn miễn phí cho cộng đồng. Tuy nhiên việc phát hành các số cụ thể còn phụ thuộc Liên hệ với CS4S Hòm thư chính thức của CS4S sẽ là cs4s.vn@gmail.com.
  • 4. CS4S. Computer Science for Schools 4 | P a g e Bản chất của tư duy máy tính The nature of computational thinking Bài viết này là bản dịch nhanh từ 1 tài liệu có tên Computational Thinking. A Guide for Teacher, nhóm tác giả là các chuyên gia về chương trình môn Tin học trong nhà trường của Anh quốc do Simon Humphreys thực hiện. Bản dịch này là chương đầu tiên của bài báo trên. Bản dịch của bạn Phạm Thị Nga, giáo viên tin trường chuyên Lam Sơn, Thanh Hoá. Bản chất của tư duy máy tính Tư duy máy tính cung cấp nền tảng mạnh mẽ để nghiên cứu tính toán, có ứng dụng rộng rãi không chỉ ở lĩnh vực tính toán. Đó là quá trình nhận biết các khía cạnh của tính toán trong thế giới xung quanh chúng ta, các công cụ ứng dụng và kỹ thuật từ máy tính để hiểu và giải thích lý do về hệ thống và các quá trình tự nhiên, xã hội, nhân tạo. Nó cho phép học sinh giải quyết bài toán, chia chúng thành những phần có thể giải quyết và đưa ra các thuật toán để giải quyết chúng. Thuật ngữ tư duy máy tính lần đầu tiên được sử dụng bởi Seymour Papert, mặc dù Giáo sư Jeannette Wing phổ biến rộng rãi các ý tưởng trong việc ủng hộ tư duy máy tính cho tất cả các tân sinh viên đại học (Wing, 2006). Bà định nghĩa tư duy máy tính là "... các quá trình suy nghĩ tham gia xây dựng nên các bài toán và lời giải của nó mà các lời giải được mô tả trong một dạng có thể được thực hiện bởi một trung gian xử lý thông tin một cách hiệu quả" (Cuny, Snyder, Wing, 2010, cited in Wing, 2011, p.20) và “lời giải có thể được mô tả bởi người hoặc máy, hoặc phổ biến hơn là bởi sự kết hợp của người và máy.” (Wing, 2011, p. 20). Trọng tâm rõ ràng tập trung vào quá trình suy nghĩ của học sinh, không phải là sản phẩm của giả tưởng hay bằng chứng. Tư duy máy tính là sự phát triển của các kĩ năng suy nghĩ, nó hỗ trợ cho việc học tập và hiểu biết. Các khái niệm của tư duy máy tính Tư duy máy tính là một quá trình nhận thức hay tư tưởng liên quan đến suy luận logic để giải bài toán và các vật phẩm (artefacts), các thủ tục, hệ thống được hiểu rõ hơn. Nó bao gồm:  Khả năng suy nghĩ thuật toán;  Khả năng suy nghĩ về các điều kiện phân chia;  Khả năng suy nghĩ về sự khái quát, xác định và cách sử dụng các dạng mẫu  Khả năng suy nghĩ trừu tượng, lựa chọn các trình bày tốt  Khả năng suy nghĩ về các điều kiện đánh giá, ước lượng.
  • 5. CS4S. Computer Science for Schools 5 | P a g e Các kĩ năng tư duy máy tính cho phép học sinh tiếp cận các phần của nội dung trong chủ đề Tính toán. Quan trọng hơn, chúng liên quan tới kĩ năng tư duy và giải quyết vấn đề trong toàn bộ chương trình đào tạo và cuộc sống nói chung. Tư duy máy tính có thể được áp dụng cho hàng loạt các vật phẩm bao gồm: hệ thống, quy trình, đối tượng, các thuật toán, các vấn đề, giải pháp, trừu tượng, và tập dữ liệu hoặc thông tin. Trong các khái niệm nhắc tới sau đây, vật phẩm dùng để chỉ một đối tượng bất kì trong số này. Suy luận logic Suy luận logic cho phép học sinh nhận thức về sự vật bằng cách phân tích và kiểm tra thực tế thông qua suy nghĩ rõ ràng, chính xác. Nó cho phép học sinh tiếp cận tri thức và các mô hình để thực hiện và xác minh các dự đoán, rút ra kết luận. Nó thường được sử dụng rộng rãi bởi các học sinh khi các em kiểm tra, gỡ lỗi và chính xác hóa các thuật toán. Suy luận logic là ứng dụng mới lạ của các khái niệm tư duy thuật toán khác để giải quyết bài toán. Các học sinh thiết kế và công nghệ thực hiện thiết kế mô hình một chiếc xe tải, lựa chọn vật liệu cho các yếu tố khác nhau của dự án. Vật liệu được sử dụng tổng quát cho tới khi họ nhận ra rằng tính chất của một loại vật liệu được sử dụng trong một tình huống làm cho nó phù hợp để sử dụng trong một bối cảnh hoàn toàn khác. Có thể phân chia các dự án mới vào các bộ phận khác nhau, đòi hỏi vật liệu khác nhau, là một ví dụ về phân chia. Như vậy, học sinh đang sử dụng suy luận logic để thiết kế một chiếc xe tải. Học sinh sử dụng suy luận logic khi học tập về lực hấp dẫn bằng một chuỗi quả lắc được treo từ nắp một bình thủy tinh. Trước khi nghiêng bình, học sinh có thể đưa ra dự đoán về các trạng thái của chuỗi quả lắc. Sau đó, các em có thể đánh giá các kết quả thử nghiệm của mình. Các em có thể khái quát hóa các trạng thái với các tình huống khác, chẳng hạn như một cần cẩu. Việc sử dụng mới trong tìm hiểu tính chất của lực hấp dẫn là các suy luận logic. Suy luận logic là chìa khóa cho phép học sinh gỡ lỗi mã nguồn chương trình của các em. Các em có thể làm việc cùng với các bạn để đánh giá mã nguồn lẫn nhau, tránh lỗi và gợi ý sửa lỗi. Trong quá trình này, các em có thể có cơ hội để sử dụng sự trừu tượng, đánh giá thiết kế thuật toán. Việc sử dụng mới trong điều chỉnh sai sót mã nguồn đòi hỏi phải suy luận logic. Trừu tượng Trừu tượng làm cho ta dễ suy nghĩ hơn về các vấn đề hoặc hệ thống. Trừu tượng là quá trình làm cho một vật phẩm dễ hiểu hơn thông qua việc bỏ bớt các chi tiết không cần thiết. Một ví dụ điển hình là bản đồ tàu điện ngầm London. London là một hệ thống rất phức tạp. Các mô tả về London trong những cách riêng (thường là các bản đồ hoặc hình ảnh) phục vụ những người dùng khác nhau. Các bản đồ tàu điện ngầm London là một trừu tượng vô cùng tinh tế chỉ với đầy đủ thông tin cho các du khách để định hướng mạng lưới tàu điện ngầm mà không có gánh nặng không cần thiết của thông tin như khoảng cách và vị trí địa lý chính xác. Nó là một đại diện có chứa chính xác các thông tin cần thiết để lập kế hoạch một tuyến đường từ một trạm đến một trạm khác, ngoài ra không còn thông tin gì khác.
  • 6. CS4S. Computer Science for Schools 6 | P a g e Các kỹ năng trong trừu tượng là việc lựa chọn làm ẩn đi các chi tiết hợp lí, làm cho các vấn đề trở nên dễ dàng hơn, mà không bị mất bất cứ thông tin quan trọng nào. Một phần quan trọng của nó là trong việc lựa chọn một mô tả tốt cho một hệ thống. Ví dụ, một chương trình máy tính chơi cờ là một khái niệm trừu tượng. Nó là một tập hợp hữu hạn và chính xác các quy tắc thực hiện mỗi khi đến lượt của máy tính. Nó khác xa với tương tự, quá trình thần kinh cảm xúc, thành kiến và phân tâm thực hiện bằng một người chơi cờ. Nó là một sự trừu tượng bởi vì các chi tiết không cần thiết của những quy trình được gỡ bỏ. Đánh giá Đánh giá là quá trình đảm bảo rằng một giải pháp, dù một thuật toán, hệ thống hay quá trình phù hợp với mục đích. Rất nhiều tính chất khác nhau của các giải pháp cần phải được đánh giá. Chúng có đúng không? Có đủ nhanh không? Chúng có sử dụng các nguồn lực kinh tế không? Có dễ dàng cho người sử dụng không? Có thúc đẩy một kinh nghiệm thích đáng không? Sự đánh đổi cần phải được thực hiện, nhưng rất hiếm khi có một giải pháp lý tưởng cho tất cả các tình huống. Có một trọng tâm cụ thể và cực kì thường xuyên dựa trên sự chú ý đến chi tiết trong đánh giá dựa trên tư duy máy tính. Các giao diện máy tính đang được tiếp tục phát triển để đáp ứng nhu cầu của những người sử dụng khác nhau. Ví dụ, một thiết bị y tế cần thiết để cung cấp thuốc tự động cho bệnh nhân, nó cần phải được lập trình một cách đơn giản, an toàn, nhanh chóng, không sai sót. Các giải pháp phải đảm bảo rằng các y tá sẽ có thể thiết lập các liều thuốc một cách dễ dàng mà không có các sai lầm và nó cũng sẽ không gây bực bội cho bệnh nhân và y tá khi sử dụng. Trong thiết kế đề xuất sẽ có một sự đánh đổi phải được thực hiện giữa tốc độ của các dữ liệu vào (hiệu quả) và tránh lỗi (hiệu quả và khả năng sử dụng). Các thiết kế sẽ được đánh giá dựa trên đề xuất chỉ định điều trị của các bác sĩ, nhà quản lý và các chuyên gia thiết kế thiết bị y tế (tiêu chuẩn - criteria) và các quy tắc chung liên quan đến thiết kế tốt (heuristics). Criteria, heuristics và nhu cầu của người sử dụng cho phép sản phẩm phải được thực hiện một cách hệ thống và chặt chẽ. Tư duy thuật toán Tư duy thuật toán tư duy thuật toán là một cách để nhận một lời giải thông qua một định nghĩa rõ ràng các bước. Một số bài toán chỉ có một bước giải. Các bài toán được giải bằng cách áp dụng lời giải lần lượt từng bước. Tư duy thuật toán góp phần khi các bài toán tương tự có thể được giải quyết lặp đi lặp lại. Mỗi lần giải chúng, ta không cần phải suy nghĩ lại lần nữa. Học thuật toán để thực hiện phép nhân, chia ở trường là một ví dụ. Nếu quy tắc đơn giản được tuân thủ một cách chính xác, bởi một máy tính hoặc một người, là lời giải cho bất kỳ phép nhân nào tìm thấy. Một khi các thuật toán được hiểu, nó không cần phải làm từ đầu cho mọi bài toán mới. Tư duy thuật toán là khả năng để suy nghĩ về trình tự và quy tắc như một cách để giải quyết vấn đề hoặc hiểu tình huống. Đó là một kỹ năng cốt lõi mà học sinh phát triển khi các em học để viết các chương trình máy tính của mình. Sự phân chia Sự phân chia là một cách suy nghĩ về các vật phẩm trong các bộ phận cấu thành của nó. Các bộ phận có thể được hiểu, giải quyết, phát triển và đánh giá riêng rẽ. Điều này
  • 7. CS4S. Computer Science for Schools 7 | P a g e làm cho các bài toán phức tạp dễ giải hơn, các tình huống mới được hiểu tốt hơn và các hệ thống lớn dễ thiết kế hơn. Ví dụ, nấu bữa sáng có thể chia nhỏ hay phân ra thành các việc riêng rẽ như: nướng bánh mì, pha trà, rán trứng,... Mỗi việc này, đến lượt nó, lại có thể được chia nhỏ ra thành một tập các bước. Thông qua phân chia các nhiệm vụ ban đầu, mỗi phần có thể được phát triển và tích hợp sau trong tiến trình. Hãy xem xét việc phát triển một trò chơi: những người khác nhau có thể thiết kế và tạo ra các mức độ khác nhau một cách độc lập, miễn là khía cạnh quan trọng được thoả thuận trước. Một mức độ chơi đơn giản cũng có thể được phân tách thành nhiều phần, chẳng hạn như chuyển động giống như cuộc sống của một nhân vật, di chuyển nền và thiết lập các quy tắc về cách nhân vật tương tác. Sự khái quát (Các dạng mẫu) Sự khái quát gắn liền với việc xác định các dạng mẫu, tương đồng và kết nối, khai thác những tính năng này. Đó là một cách nhanh chóng giải quyết những vấn đề mới dựa trên những lời giải trước cho bài toán và xây dựng trên kinh nghiệm trước đó. Đặt câu hỏi như "Bài toán này tương tự bài toán nào đã giải được?" Và "Chúng khác nhau như thế nào?" là rất quan trọng. Đó như là quá trình nhận ra các dạng mẫu trong các dữ liệu được sử dụng và các quy trình/ chiến lược đang được sử dụng. Các thuật toán giải quyết một số bài toán cụ thể có thể được điều chỉnh để giải quyết một lớp các bài toán tương tự. Sau đó, có thể áp dụng lời giải chung bất cứ khi nào gặp phải một bài toán của lớp đó. Ví dụ, một học sinh sử dụng một con rùa vẽ (floor-turtle) để vẽ một loạt các hình, như hình vuông, hình tam giác. Học sinh viết một chương trình máy tính để vẽ hai hình này. Sau đó, nếu muốn vẽ một hình bát giác và một hình có 10 mặt từ hình vuông và hình tam giác, các em nhận ra có một mối quan hệ giữa số mặt của hình với số đo góc của nó. Từ đó, các em có thể viết một thuật toán diễn tả mối quan hệ này và sử dụng nó để vẽ bất cứ đa giác đều nào.
  • 8. CS4S. Computer Science for Schools 8 | P a g e Chương trình khung và chi tiết cho môn Khoa học máy tính trong nhà trường Bản gốc: Computer Science: A Curriculum for Schools. Đây là tài liệu mô tả phần kiến thức CS (Computer Science) Khoa học máy tính trong chương trình tổng thể môn Tin học của Bộ GD Anh quốc. Môn "tin học" của nước Anh có tên gọi "Computing" và do đó nhiều dịch giả đã dịch thành "tính toán" hoặc "máy tính". Bản dịch này của bạn Trần Thị Hiên, giáo viên Tin học tại THPT Nam Cao, Lý Nhân, Hà Nam, thực hiện. Sẽ còn nhiều phần tiếp theo. 1. Tầm quan trọng Khoa học máy tính là ngành khoa học nghiên cứu các nguyên lý và hoạt động, nền tảng cho sự hiểu biết về mô hình tính toán và các ứng dụng của chúng trong sự phát triển của các hệ thống máy tính. Tại trung tâm khái niệm về tư duy tính toán: một hình thức suy nghĩ đã vượt xa cả phần cứng lẫn phần mềm, và nó tạo thành một khuôn khổ trong đó các vấn đề và hệ thống xảy ra trong khuôn khổ đó. Hình thức suy nghĩ này được hỗ trợ và bổ sung bởi một khối lượng lớn kiến thức lý thuyết lẫn thực hành, và bởi một tập các kỹ thuật mạnh mẽ để phân tích, mô hình hóa và giải quyết vấn đề. Khoa học máy tính liên quan sâu sắc đến cách máy tính và hệ thống máy tính làm việc, cách chúng được thiết kế và được lập trình. Học sinh học tính toán sẽ (hiểu)có cái nhìn sâu sắc về tất cả các loại hệ thống tính toán dù nó có gồm máy tính hay không. Các lĩnh vực ảnh hưởng đến suy nghĩ tính toán như là: sinh học, hóa học, ngôn ngữ học, tâm lý học, kinh tế và thống kê. Nó cho phép chúng ta giải quyết vấn đề, thiết kế hệ thống và hiểu vể năng lực và giới hạn của con người và sự thông minh của máy tính. Nó là một kỹ năng cái mà làm tăng khả năng và cái mà tất cả học sinh nên nhận thức được và có khả năng ở kỹ năng đó. Ngoài ra, những học sinh có khả năng suy nghĩ về tính toán thì có thể giỏi hơn trong khả năng khái quát và hiểu hơn các công nghệ dựa trên máy tính, vì vậy cũng được trang bị tốt hơn để sống trong xã hội hiện đại. Khoa học máy tính là một môn thực hành, nơi sự phát minh và khả năng xoay sở (sự tháo vát) được khuyến khích. Học sinh được mong là có thể áp dụng các nguyên tắc học thuật mà chúng học vào việc hiểu các hệ thống thực tế và vào việc tạo ra các giả tưởng có mục đích. Sự kết hợp các quy tắc, thực hành và sáng tạo làm nó trở thành một cực hữu ích và một chủ đề sáng tạo mạnh mẽ, tràn ngập hứng thú. 1.1. Khoa học máy tính là một môn học Giáo dục làm tăng chất lượng sống cũng như kỹ năng sống của học sinh. Nó chuẩn bị cho những người trẻ một thế giới, cái chưa từng tồn tại, các công nghệ hấp dẫn mà chưa được phát minh, các công nghệ hiện tại và những thách thức mà chúng ta chưa nhận thức được.
  • 9. CS4S. Computer Science for Schools 9 | P a g e Để làm điều này, giáo dục mong muốn trước tiên là dạy các môn học có giá trị dài hạn hơn là những kỹ năng có tính hữu dụng ngắn hạn, mặc dù sau này chắc chắn là hữu ích. Một môn học đặc trung bởi:  Một kiến thức chính (xuyên suốt) bao gồm các ý tưởng có khả năng ứng dụng rộng và các khái niệm, và một khung lý thuyết trong đó những ý tưởng và khái niệm phù hợp.  Một tập các kỹ thuật và phương pháp mà có thể được ứng dụng trong giải quyết các vấn đề và gia tăng kiến thức.  Một cách nghĩ và làm việc mà cung cấp cách nhìn về thế giới khác biệt so với các môn học khác.  Tuổi thọ: một môn học không thể thay đổi một cách nhanh chóng mặc dù chủ đề có thể cải tiến tiến bộ hơn.  Độc lập với công nghệ cụ thể, đặc biệt là những công nghệ có tuổi thọ ngắn. Khoa học máy tính là một môn học với tất cả các đặc điểm trên. Nó bao gồm các nguyên tắc cơ bản (như lý thuyết tính toán) và các khái niệm và ý tưởng có khả ngăng ứng dụng rộng (như sử dụng mô hình quan hệ để nắm bắt cấu trúc trong dữ liệu). Nó kết hợp các kỹ thuật và phương pháp để giải quyết vấn đề và năng cao tri thức (như trừu tượng và lý luận logic), và một cách khác biệt về cách làm việc và suy nghĩ đặt nó ngoài các môn học khác (như tư duy tính toán). Nó có tuổi thọ (hầu hết các ý tưởng và khái niệm đều tồn tại 20 hoặc trên 20 năm cách đây và vẫn tồn tại đến ngày nay), và mỗi nguyên tắc cốt lõi có thể được dạy hoặc minh họa mà không cần sử dụng một công nghệ cụ thể nào. 1.2. Khoa học máy tính là một môn học STEM Khoa học máy tính là một môn học STEM (viết tắt của các từ Science -Technology- Engineering – Math) tinh túy, nó có các thuộc tính của các môn kỹ thuật, toán học, khoa học và công nghệ như:  Nó có cơ sở lý luận và nền tảng toán học của riêng mình, và liên quan đến ứng dụng của lý luận và logic.  Nó bao gồm một phương pháp tiếp cận để đo lường và thử nghiệm.  Nó liên quan đến thiết kế, xây dựng và kiểm thử các chế phẩm có mục đích.  Nó yêu cầu sự hiểu biết, sự đánh giá cao và áp dụng một loạt các công nghệ. Hơn nữa, khoa học máy tính cung cấp cho học sinh cái nhìn sâu sắc vào các môn học STEM khác, và với những kỹ năng và tri thức đó có thể được áp dụng để giải quyết các vấn đề trong các môn học đó. Mặc dù chúng là vô hình, nhưng các hệ thống phần mềm là một trong những chế phẩm lớn và phức tạp nhất mà con người đã tạo ra. Sự kết hợp giữa phần mềm và phần cứng là cần thiết để tạo nên các hệ thống dựa trên tính toán, gia tăng mức độ phức tạp. Hiểu sự phức tạp này và đưa nó dưới sự kiểm soát là thách thức trọng tâm của môn học. Trong một thế giới nơi mà các hệ thống dựa trên máy tính trở nên phổ biến, những cá nhân và tổ chức xã hội mà được trang bị tốt nhất để đáp ứng những thách thức này sẽ có một lợi thế cạnh tranh.
  • 10. CS4S. Computer Science for Schools 10 | P a g e Sự kết hợp của tư duy tính toán, một tập hợp các nguyên tắc tính toán và phương pháp tính toán để giải quyết vấn đề là sức mạnh duy nhất. Khả năng mang lại sự kết hợp này đẻ mang về những vấn đề thực tế là trung tâm của sự thành công của khoa học, kỹ thuật, kinh tế và thương mại trong thế kỷ hai mốt. 1.3. Khoa học máy tính và công nghệ thông tin là bổ sung không phải là đồng nhất Khoa học máy tính và công nghệ thông tin là hai đối tượng bổ sung cho nhau. Khoa học máy tính dạy cho học sinh làm thế nào để trở thành một tác giả hiệu quả của các công cụ tính toán. Trong khi đó, công nghệ thông tin dạy làm thế nào để người dùng thi hành các công cụ đó (ví dụ như phần mềm). Sự gần kề nhau này chỉ là một phần của sự thật, bởi vì nó tập trung quá hẹp vào máy tính như một công nghệ, còn tính toán thì rộng hơn điều đó. Như nhận xét nổi tiếng của Dijkstra , “khoa học máy tính không nói nhiều hơn về máy tính hơn thiên văn học nói về kính thiên văn”. Cụ thể hơn:  Khoa học máy tính là môn học tìm để hiểu và khám phá về thế giới quanh chúng ta, cả về tự nhiên lẫn nhân tạo, trong sự tính toán. Khoa học máy tính là đặc biệt, nhưng không có nghĩa là độc quyền, liên quan đến nghiên cứu, thiết kế và triển khai các hệ thống máy tính, và hiểu các nguyên tắc cơ bản những thiết kế này.  Công nghệ thông tin đề cập đến ứng dụng có mục đích của các hệ thống máy tính để giải quyết các vấn đề thế giới thực, bao gồm các vấn đề như nhu cầu kinh doanh, đặc điểm kỹ thuật và lắp đặt phần cứng lẫn phần mềm, và đánh giá khả năng sử dụng. Đó là khả năng sử dụng hiệu quả, sáng tạo và khám phá của công nghệ. Chúng ta muốn các bạn trẻ hiểu và đóng vai trò tích cực trong thế giới kỹ thuật số bao quanh chúng, chứ không phải là những khách hàng thụ động của một công nghệ đục hay bí ẩn. Hiểu đúng khái niệm tính toán sẽ giúp chúng thấy làm thế nào để tận dụng tốt nhất hệ thống họ sử dụng, và làm thế nào để giải quyết vấn đề khi gặp sự cố. Hơn nữa người dân có thể nghĩ về thuật ngữ “computational” (tính toán) sẽ có thể hiểu và lý luận về các vấn đề liên quan đến sự tính toán như các sáng chế phần mềm, đánh cắp định danh, kỹ thuật di truyền, hệ thống bỏ phiếu điện tử cho các cuộc bầu cử, và như vậy. Trong một thế giới tràn ngập về tính toán, mỗi người rời khỏi ghế nhà trường nên có một sự hiểu biết về khoa học tính toán (computing). (Còn tiếp ….)
  • 11. CS4S. Computer Science for Schools 11 | P a g e Thuật toán mã hóa Học sinh & Giáo viên trong các phần mềm quản lý nhà trường phổ thông Bùi Việt Hà Việc mã hóa Học sinh và Giáo viên trong các phần mềm quản lý nhà trường phổ thông đóng một vai trò hết sức quan trọng. Bài báo này mô tả thuật toán chủ yếu dùng để mã hóa Học sinh và Giáo viên của phần mềm. Thuật toán này đã được áp dụng trong phần mềm School Viewer của công ty School@net. Mục đích Việc mã hóa Học sinh và Giáo viên trong nhà trường Việt Nam phải thỏa mãn được các mục đích sau đây: M1. Tối ưu hóa việc sử dụng chữ và số đề mã hóa M2. Không quá phức tạp để có thể nhanh chóng mã hóa và giải mã M3. Tính duy nhất: mỗi học sinh và giáo viên phải có một mã (khóa) duy nhất không phụ thuộc vào trường và địa phương mà mình đang học tập, làm việc. Hay nói cách khác mã phải có tác dụng trên qui mô toàn quốc. M4. Mỗi mã học sinh và giáo viên không dài quá 12 ký tự (chữ+số). Yêu cầu thuật toán Y1. Thuật toán đảm bảo việc sinh mã (cho học sinh và giáo viên) phải nhanh tức thời và chính xác. Y2. Thuật toán có thể được giải mã. Y3. Tính duy nhất của mã sinh phải đảm bảo tối thiểu 100 năm (tính từ năm 2000). Tức là trong suốt thời gian 100 năm, mã được sinh ra sẽ là duy nhất và không bị lặp lại. Cơ sở bài toán mã hóa học sinh / giáo viên Mã hóa với cơ sở 64
  • 12. CS4S. Computer Science for Schools 12 | P a g e Để mô tả và lưu trữ dễ dàng các mã hóa của học sinh và giáo viên, bắt buộc phải sử dụng các chữ cái latinh và chữ số. Như vậy phải sử dụng 10 chữ số + 52 chữ cái latinh + 2 ký tự thông dụng (dấu _ và dấu #) = 64 ký tự để mô phỏng mã hóa. Như vậy bảng mã hóa của phần mềm (tạm ký hiệu là SVC - School Viewer Coding) được mô tả trong bảng sau: SVC Decimal SVC Decimal SVC Decimal SVC Decimal 0 0 G 16 W 32 m 48 1 1 H 17 X 33 n 49 2 2 I 18 Y 34 o 50 3 3 J 19 Z 35 p 51 4 4 K 20 a 36 q 52 5 5 L 21 b 37 r 53 6 6 M 22 c 38 s 54 7 7 N 23 d 39 t 55 8 8 O 24 e 40 u 56 9 9 P 25 f 41 v 57 A 10 Q 26 g 42 w 58 B 11 R 27 h 43 x 59 C 12 S 28 i 44 y 60 D 13 T 29 j 45 z 61 E 14 U 30 k 46 _ 62 F 15 V 31 l 47 # 63 Như vậy với bảng mã 64 ký tự của SVC, mỗi 6-bit sẽ được mô tả thành 1 "ký tự" trong phần mềm, hay mỗi 3 byte sẽ được mô tả thành 4 ký tự trong SVC. Thông tin mã hóa Các thông số cần thiết để mã hóa bao gồm: 1. Ngày sinh
  • 13. CS4S. Computer Science for Schools 13 | P a g e Ngày sinh của học sinh/giáo viên được tính như một số nguyên là số ngày tính từ năm 1900. Số lượng ngày cho phép tính là 200 năm (1900-2099) là 200 x 365 =73000  2 bytes (16 bits). Chương trình sẽ sử dụng 17 bits = 131,072 để lưu mã hóa thông số này. Chú ý: trường hợp học sinh không nhớ chính xác ngày sinh thì chương trình sẽ tự động gán giá trị ngày ngẫu nhiên để làm thông tin mã hóa. 2. Nam/Nữ Sử dụng 1 bit cho thông số này. 3. Quê quán Hiện tại sử dụng dữ liệu bao gồm 61 tỉnh thành  7 bits Như vậy cho phép mở rộng trong tương lai lên 128 tỉnh/thành phố. 4. Mã hóa họ cha Phần họ của học sinh được tách ra và mã hóa theo một CSDL lưu các Họ chuẩn của Việt Nam. Số lượng các họ của người Việt là hữu hạn và được lưu trong một bảng có tên là rFamilyNamesVN. Tổng số lượng các họ của người Việt sẽ không quá 12 bits (4096). Chú ý: trường hợp khi nhập dữ liệu họ không có trong bảng CSDL thì chương trình sẽ tự động nạp họ này vào bảng tương ứng tại vị trí cuối cùng. Giá trị Checksum-4 sẽ đặt là 1. 5. Mã hóa theo tên học sinh Phần tên học sinh (sau khi đã loại đi Họ + đệm) sẽ được mã hóa theo một CSDL lưu các tên chuẩn của người Việt Nam. Số lượng tên của người Việt là hữu hạn và lưu trong bảng rNamesVN. Tổng số lượng tên người Việt dự đoán không quá 8,192  13 bits. Chú ý: trường hợp khi nhập dữ liệu tên không có trong bảng CSDL thì chương trình sẽ tự động nạp tên này vào bảng tương ứng tại vị trí cuối cùng. Giá trị Checksum-5 sẽ đặt là 1. 6. Tham số thời gian Tham số thời gian được đưa vào để giảm thiểu tối đa khả năng tạo ra các mã trùng nhau. Ta sử dụng tham số thời gian là thời gian chính xác đến giây thời điểm nhập dữ liệu vào máy tính. Được phép dùng 17-bits để mô tả cho tham số ngẫu nhiên này. - bit 1: 0-nếu thời gian là từ 0 giờ đến 12 giờ trưa
  • 14. CS4S. Computer Science for Schools 14 | P a g e 1-nếu thời gian là từ 12 giờ trưa đến 24 giờ đêm. - bit 2-17: mô tả thời gian tính bằng giây tính từ thời điểm 0 giờ hoặc 12 giờ trưa cho đến thời điểm hiện thời. 7. Tham số Checksum: 5 bits - Có 8 giá trị (3 bits đầu tiên) để tạo tham số phòng hờ sự cố khi sử dụng 6 tham số trên tạo ra các mã trùng nhau trong một trường (tại thời điểm sinh mã học sinh/giáo viên). Khi đó Checksum sẽ tự động tăng lên 1 giá trị. - 2 bit sau cùng có ý nghĩa như sau: Bit-4 chỉ ra giá trị Họ của học sinh có tìm thấy trong bảng dữ liệu chuẩn hay không. Bit-5 chỉ ra giá Tên của học sinh có tìm thấy trong bảng dữ liệu chuẩn hay không. Tổng kết lại chúng ta cần: (1) = 17 bits (2) = 1 bit (3) = 7 bits (4) = 12 bits (5) = 13 bits (6) = 17 bits (7) = 5 bits = 72 bits = 12 ký tự Cấu trúc và thủ tục mã hóa Theo sơ đồ đã mô tả ở trên, chúng ta có 72-bit đã được mã hóa từ các thông số của một học sinh hoặc giáo viên. Các bit được sắp xếp theo thứ tự và sau đó ghép lại theo bảng ký tự SVC. Để thể hiện (thông báo mã cho học sinh) chúng ta dùng khuôn dạng: XXXX-XXXX-XXXX Phương án mã hóa 32 bit Phương án mã hóa Học sinh, Giáo viên với cơ sở 64 bit như đã trình bày ở trên không thích hợp với mô hình CSDL không phân biệt các chữ cái in hoa và in thường. Trong mục này ta sẽ mô tả một phương án mã hóa khác chỉ sử dụng 32 bit Cơ sở.
  • 15. CS4S. Computer Science for Schools 15 | P a g e Bộ ký tự dùng cho kiểu mã hóa này chỉ là các chữ số và bộ chữ cái in hoa rút gọn, phù hợp với bảng chữ cái tiếng Việt (Tiếng Anh bỏ đi F, J, W, Z). SVC Decimal SVC Decimal SVC Decimal SVC Decimal 0 0 8 8 H 16 Q 24 1 1 9 9 I 17 R 25 2 2 A 10 K 18 S 26 3 3 B 11 L 19 T 27 4 4 C 12 M 20 U 28 5 5 D 13 N 21 V 29 6 6 E 14 O 22 X 30 7 7 G 15 P 23 Y 31 Với bảng chữ cái mới này, 5 bits = 1 chữ cái. Như vậy để mã hóa bởi 12 ký tự, chúng ta cần lượng thông tin là 5 x 12 = 60 bits. Thủ tục mã hoá học sinh/giáo viên theo cơ sở 32 bits vẫn hoàn toàn thỏa mãn các mục đích M1, M2, M3 đã nêu ra ở trên. Thông tin mã hóa cụ thể như sau: 1. Ngày sinh - 16 bits Ngày sinh của học sinh/giáo viên được tính như một số nguyên là số ngày tính từ năm 1925. Số lượng ngày cho phép tính là 175 năm (1925-2099) là 175 x 365 =63875  2 bytes (16 bits). Chương trình sẽ sử dụng 16 bits = 65,536 để mã hóa thông số này. Chú ý: trường hợp học sinh không nhớ chính xác ngày sinh thì chương trình sẽ tự động gán giá trị ngày ngẫu nhiên để làm thông tin mã hóa. 2. Nam/Nữ - 1 bit Sử dụng 1 bit cho thông số này. 3. Mã hóa theo Họ cha của Học sinh - 9 bits
  • 16. CS4S. Computer Science for Schools 16 | P a g e Phần họ của học sinh được tách ra và mã hóa theo một CSDL lưu các Họ thường gặp của người Việt Nam. Dữ liệu này được lưu trong bảng rFamilyNamesVN của hệ thống. Dự kiến toàn bộ các họ Việt Nam sẽ không quá 512. Chúng ta sẽ dùng 9 bits để mã hoá giá trị này của Học sinh. Trường hợp khi nhập họ học sinh không có trong bảng này, chương trình sẽ tự động nạp tên này vào bảng tại vị trí cuối cùng. Trường hợp bảng đã đủ 512 bản ghi mà họ học sinh không tìm thấy trong bảng thì máy sẽ gán một giá trị ngẫu nhiên 9 bits cho giá trị này. 4. Mã hóa theo tên học sinh - 13 bits Phần tên học sinh (sau khi đã loại đi Họ + đệm) sẽ được mã hóa theo một CSDL lưu các tên chuẩn của người Việt Nam. Số lượng tên của người Việt là hữu hạn và lưu trong tệp rNamesVN. Tổng số lượng tên người Việt dự đoán không quá 8,192 = 13 bits. Chú ý: trường hợp khi nhập dữ liệu tên không có trong bảng CSDL thì chương trình sẽ tự động nạp tên này vào bảng tương ứng tại vị trí cuối cùng. 5. Mã Quận/Huyện của nhà trường hiện thời - 10 bits Hiện tại số Quận/Huyện trên cả nước là 616, chúng ta sẽ sử dụng 10 bits = 1024 để mã hóa thông tin này. 6. Chỉ số địa phương của Nhà trường (SchoolLocalID) - 6 bits Chỉ số địa phương của Nhà trường được gán và khởi tạo từ lệnh Khởi tạo CSDL nhà trường. Chỉ số này dùng để phân biệt giữa các nhà trường trong phạm vi một Quận/Huyện. Hệ thống chỉ số được gán thống nhất và được kiểm soát bởi Sở GD & ĐT hoặc Phòng GD & ĐT quận/huyện. Trong phạm vi một quận/huyện, các trường cùng cấp (Tiểu học, THCS, THPT) phải có Chỉ số địa phương khác nhau. Chỉ số địa phương được phép gán từ giá trị 1 đến 64, như vậy cần 6 bits để mã hoá thông số này. Chú ý: Lần đầu tiên khi khởi tạo CSDL năm học, chương trình sẽ khởi tạo một giá trị ngẫu nhiên cho SchoolLocalID, tuy nhiên Hiệu trưởng có thể thay đổi lại giá trị này bất cứ lúc nào. 7. Tham số Checksum: 5 bit - Có 32 giá trị (5 bits) để tạo tham số phòng hờ sự cố khi sử dụng 6 tham số trên tạo ra các mã trùng nhau trong một trường (tại thời điểm sinh mã học sinh/giáo viên). Khi đó Checksum sẽ tự động tăng lên 1 giá trị. Tổng kết lại chúng ta cần: (1) = 16 bits (2) = 1 bit
  • 17. CS4S. Computer Science for Schools 17 | P a g e (3) = 9 bits (4) = 13 bits (5) = 10 bits (6) = 6 bits (7) = 5 bit Tổng cộng = 60 bits = 12 ký tự Qui định ghi Mã Học sinh - Giáo viên (thể hiện và thông báo cho học sinh). XXXX-XXXX-XXXX Chú ý: Toàn bộ các thông tin cần thiết để mã hoá một Học sinh / Giáo viên đều là những thông số bắt buộc cần phải biết của một nhà trường. Các thông tin của Nhà trường như SchoolLocalID, Mã Quận/Huyện, Mã Tỉnh đều được cấp chính xác ngay khi cài đặt phần mềm. Trường hợp sau khi thực hiện các bước mã hóa từ (1) đến (7), vẫn bi trùng lặp mã thì chương trình sẽ lấy năm sinh của học sinh thay thế bằng năm 2100, như vậy chúng ta có thêm 32 checksum bổ sung. Giả sử lại vẫn trùng chúng ta lại sử dụng thêm các năm 2101 và 2102 với tổng cộng 96 checksum bổ sung. Việc sử dụng năm 2100, 2101 và 2102 không phá vỡ tính duy nhất của thuật toán bởi vì với năm 2102, chúng ta đã dùng đến 178 năm x 365 = 64970 vẫn nằm trong phạm vi kiểm soát của 16-bits.
  • 18. CS4S. Computer Science for Schools 18 | P a g e CS Unplugged hay Computer Science without a computer là cuốn sách chính nằm trong 1 dự án nhằm xây dựng các bài giảng về khoa học máy tính nhưng không cần máy tính dành cho GV và HS trong các nhà trường phổ thông (http://csunplugged.org/). Đây là 1 dự án có ý nghĩa đặc biệt cho đội ngũ giáo viên tin học của Việt Nam. Chúng tôi sẽ trích giới thiệu 1 số bài giảng tiêu biểu của cuốn sách này. Chủ đề đầu tiên này do bạn Đào Giang Lâm, chuyên viên Phòng CNTT, Sở GD&ĐT Nghệ An biên dịch. Chúng tôi sẽ còn đưa các bài học tiếp theo của cuốn sách này đến tay các GV Việt Nam. CS4S cũng kêu gọi các cộng tác viên và tất cả mọi người hãy dành thời gian để dịch cuốn sách vô cùng bổ ích này. CHỦ ĐỀ 1: HỆ NHỊ PHÂN Tóm lược: Dữ liệu trong máy tính được lưu trữ và truyền đi như một loạt các số 0 và 1. Làm thế nào để hai đối tượng này có thể thay thế được chữ và số? Kĩ năng: - Đếm - Tính toán - Sắp xếp Đối tượng: Học sinh từ 6 tuổi trở lên Chuẩn bị: - 10 tấm bìa kích thước 10x20 cm - 01 Bút dạ -------------------------------------------------------- Hoạt động 1: Học cách đếm Bước 1:
  • 19. CS4S. Computer Science for Schools 19 | P a g e Giáo viên (học sinh) chuẩn bị 5 tấm bìa. Trường hợp 1 (tổ chức tại lớp): Các tấm bìa được đánh dấu chấm lần lượt như hình dưới (H1). Giáo viên cho 5 học sinh cầm các tấm bìa theo thứ tự như hình vẽ. Trường hợp 2 (học sinh tự học): Học sinh đánh dấu chấm và đặt 5 tấm bìa trên bàn theo thứ tự như hình vẽ (H1). (Hình 1) Bước 2: Tính từ phải sang trái, yêu cầu học sinh thứ 2, 3, 5 cầm và đưa lên cho cả lớp xem mặt sau của các tấm bìa; học sinh thứ 1, 4 cầm và đưa lên cho cả lớp xem mặt trước thể hiện rõ các dấu chấm. Các tấm bìa được xếp thành một hàng thẳng. Kết quả thực hiện như hình 2. (Hình 2) Kết quả cho thấy có 9 dấu chấm được thể hiện trên cả 5 tấm bìa. Bước 3: Thảo luận Nếu cần tính 5, 12, 19 dấu chấm thì phải thực hiện như thế nào? (Gợi ý kết quả tham khảo GY1) (Hình 3) Có nhiều nhất bao nhiêu dấu chấm mà bạn có thể thực hiện được? Có ít nhất bao nhiêu dấu chấm mà bạn có thể thực hiện được? (Gợi ý kết quả tham khảo GY2) Bước 4: Nếu quy ước, tấm bìa không có dấu chấm là 0, tấm bìa có dấu chấm là 1 thì với trường hợp ban đầu sẽ có kết quả mã hóa như sau:
  • 20. CS4S. Computer Science for Schools 20 | P a g e (Hình 4) 01001 = 9 Bước 5: Thảo luận Hãy thử tính kết quả của các số: 10101 và 11111. (Gợi ý kết quả tham khảo GY3) Hoạt động 2: Mã hóa Bước 1: Khi một tấm bìa không có dấu chấm, nó được hiểu là số 0; khi một tấm bìa có các dấu chấm, nó được hiểu là số 1. Hệ thống như thế được hiểu là hệ số nhị phân. Trong cuộc sống, rất nhiều trường hợp có thể biểu diễn thành 0, 1 như : (hình 5) Bước 2: Thảo luận Lấy ví dụ về những ngày tháng bạn được sinh ra? Viết ngày, tháng trong hệ nhị phân. Viết lại biểu diễn nhị phân tương ứng với các giá trị 5, 12, 19 chấm. Ghi nhớ: Sử dụng một tập hợp 5 thanh có độ dài 1, 2, 4, 8, 16 ta có thể tính được bất cứ số nào với giá trị nhỏ hơn hoặc bằng 31. Hoạt động 3: Bài toán 1: Thông điệp bí mật. Tom đang bị mắc kẹt trên tầng cao nhất của một cửa hàng bách hóa. Lúc đó là thời điểm trước Giáng sinh và anh muốn được về nhà với những món quà của mình. Anh ấy có thể làm gì? Anh đã cố gắng gọi điện thoại, thậm chí la hét, nhưng không có ai
  • 21. CS4S. Computer Science for Schools 21 | P a g e xung quanh. Bên kia đường, anh có thể nhìn thấy một cô gái vẫn làm việc muộn cùng với máy tính vào ban đêm. Làm thế nào anh có thể thu hút sự chú ý của cô ấy? Tom nhìn xung quanh để xem những gì anh có thể sử dụng. Sau đó, anh đã có một ý tưởng, anh có thể sử dụng đèn cây Giáng sinh rực rỡ để gửi cho cô một tin nhắn! Anh ta tìm thấy tất cả các đèn và cắm chúng trong đêm nên anh có thể bật và tắt. Anh sử dụng một mã nhị phân đơn giản, mà anh biết người phụ nữ bên đường phố là chắc chắn để hiểu. Bạn có thể làm được việc đó không? Hãy cho biết thông điệp được thể hiện trên Hình 6? (Hình 6) Quy ước mã hóa 1 2 3 4 5 6 7 8 9 10 11 12 13 a b c d e f g h i j k l m 14 15 16 17 18 19 20 21 22 23 24 25 26 n o p q r s t u v w x y z (Xem gợi ý kết quả tham khảo GY4)
  • 22. CS4S. Computer Science for Schools 22 | P a g e Thảo luận: Hãy sử dụng 0,1 để quy ước cho đèn cây giáng sinh là tắt, bật để mã hóa một vài thông điệp mà Tom muốn gửi cho cô gái bên kia đường? Bài toán 2: E-mail và Modems Máy vi tính kết nối với Internet thông qua một modem cũng sử dụng hệ thống nhị phân để gửi tin nhắn. Sự khác biệt duy nhất là chúng sử dụng tiếng bíp. Một tiếng bíp the thé có thể được sử dụng cho một bit 1 và một tiếng bíp không cao cho một bit 0. Những âm thanh đi rất nhanh rất nhanh, trên thực tế, tất cả chúng ta có thể nghe thấy một âm thanh kêu liên tục. Nếu bạn chưa bao giờ nghe nó, lắng nghe với một modem kết nối với Internet, hay thử gọi một máy fax, máy fax cũng sử dụng modem để gửi thông tin. Hoạt động 4: Đếm những giá trị lớn hơn 31 Hãy thử phép tính: 1 + 2 + 4 = ? Bây giờ hãy thử 1 + 2 + 4 + 8 16 =? Kết quả thế nào nếu cộng tất cả các số từ 1? Nếu sử dụng ngón tay của mình để đếm, theo cách thông thường, bạn sẽ không thể đếm được cao hơn 10. Nếu bạn sử dụng hệ nhị phân và để cho mỗi ngón tay trên một bàn tay thay thế cho một trong những tấm bìa với các dấu chấm, bạn có thể đếm được các giá trị từ 0 đến 31. Đó là 32 con số. (Đừng quên 0 cũng là một số) Hãy thử sử dụng ngón tay của bạn để đếm. Nếu một ngón đưa lên được hiểu là 1, và đưa xuống được hiểu là 0.
  • 23. CS4S. Computer Science for Schools 23 | P a g e Bạn sẽ nhận được các số từ 0-1.023 nếu bạn sử dụng cả hai tay! Có 1024 con số! Nếu bạn tính thêm cả các ngón chân (bây giờ bạn có thể trở thành một người ngoài hành tinh), bạn có thể nhận được kết quả thậm chí cao hơn. Nếu một mặt bàn tay có thể được sử dụng để đếm 32 con số, và hai bàn tay có thể đếm đến 32 × 32 = 1024 con số, số lượng con số lớn nhất Hoa hậu Flexi-Toes có thể đạt được là bao nhiêu? (Gợi ý kết quả tham khảo GY5) Hoạt động 5: Các thông tin cần biết về Hệ nhị phân - Điều gì sẽ xảy ra khi một số 0 được đặt ở phía bên tay phải của số đó: Nếu chúng ta đang làm việc tại hệ cơ sở 10 (hệ thập phân), khi đặt một số 0 ở phía bên phải của con số, nó được nhân với 10. Ví dụ, 9 sẽ trở thành 90, 30 thành 300. Nhưng điều gì sẽ xảy ra khi bạn đặt một số 0 bên phải của một số nhị phân? Ví dụ: 1001 10010 (9) (?) Cùng thực hiện tính kết quả với một số người khác để kiểm tra giả thuyết của bạn. Các quy tắc là gì? Tại sao bạn nghĩ rằng điều này sẽ xảy ra? (Gợi ý kết quả tham khảo GY6) - Bảng mã ASCII: Mỗi tấm bìa chúng ta đã sử dụng thể hiện cho một 'bit' trên máy tính ('bit' là viết tắt của ‘binary digit’). Vì vậy, bảng mã chữ cái của chúng ta đã sử dụng cho đến nay có thể được biểu diễn bởi năm thẻ, hoặc 'bit'. Tuy nhiên một máy tính có thể hiểu cho dù chữ cái đó viết hoa hay không, và cũng nhận ra chữ số, dấu chấm câu và các ký hiệu đặc biệt như $ hoặc ~. Hãy nhìn vào một bàn phím và đếm xem có bao nhiêu kí tự có thể sử dụng trên máy tính. Vì vậy, một máy tính cần có bao nhiêu bit để lưu trữ tất cả các ký tự? Hầu hết các máy tính hiện nay sử dụng một bảng mã gọi là ASCII (Bảng mã trao đổi thông tin tiêu chuẩn Mỹ), để biến đổi thành các bit cho mỗi ký tự, nhưng một số quốc gia không nói tiếng Anh có sử dụng bảng mã dài hơn. - Tại sao máy tính sử dụng hệ nhị phân để biểu diễn thông tin:
  • 24. CS4S. Computer Science for Schools 24 | P a g e Nó được gọi là nhị phân bởi vì chỉ có hai số khác nhau được sử dụng. Nó còn được gọi là hệ cơ số 2 (con người thường sử dụng cơ số 10). Mỗi số 0 hay 1 được gọi là một bit (số nhị phân). Một bit thường được biểu diễn trong bộ nhớ chính của máy tính bằng một bóng bán dẫn được bật hoặc tắt, hoặc một tụ điện. Khi dữ liệu phải được truyền qua một đường dây điện thoại hoặc đài phát thanh, âm cao và thấp được sử dụng để thể hiện giá trị 0 và 1. Trên các ổ đĩa từ (đĩa cứng, đĩa mềm) và băng, bit được biểu diễn bởi hướng của từ trường trên bề mặt lớp phủ, hoặc là Bắc-Nam và Nam-Bắc. Đĩa CD-ROM và DVD lưu trữ bit quang học – mỗi phần của bề mặt phản chiếu tương ứng với một bit được thể hiện là phản chiếu hoặc không phản chiếu ánh sáng. - Lý do mà các máy tính chỉ sử dụng hai giá trị khác nhau là nó dễ dàng hơn nhiều để xây dựng các thiết bị thể hiện điều đó. Đĩa CD có thể biểu diễn được 10 phần tương ứng các chữ số 0-9, nhưng phải xây dựng các thiết bị rất đắt tiền và chính xác để làm cho nó làm việc. Mặc dù chúng ta nói rằng máy tính chỉ lưu trữ 0 và 1, nhưng thực sự không có 0 và 1 bên trong chúng mà chỉ có điện áp cao hay thấp, từ tính bắc / nam và .v.v. Tất cả mọi thứ trên máy tính được trình bày dưới dạng bit - Các tài liệu, hình ảnh, bài hát, video, số, và thậm chí cả các chương trình và các ứng dụng mà chúng ta sử dụng chỉ bằng một hoặc rất nhiều chữ số nhị phân. - Tốc độ xử lý thông tin: Một bit không thể đại diện nhiều, vì vậy chúng thường được nhóm lại với nhau trong nhóm tám, mà có thể đại diện cho các số từ 0 đến 255. Một nhóm tám bit được gọi là một byte. Tốc độ của máy tính phụ thuộc vào số lượng các bit nó có thể xử lý cùng một lúc. Ví dụ, một máy tính 32-bit có thể xử lý các số 32-bit trong một hoạt động, trong khi một máy tính 16-bit phải chia số 32-bit thành các phần nhỏ hơn, làm cho nó chậm hơn (nhưng rẻ hơn!) II. Giải pháp và gợi ý - Gợi ý 1 (GY1):
  • 25. CS4S. Computer Science for Schools 25 | P a g e 5 = tấm bìa 4 chấm và tấm bìa 1 chấm. 12 = tấm bìa 8 chấm và tấm bìa 4 chấm. 19 = tấm bìa 16 chấm, tấm bìa 2 chấm và tấm bìa 1 chấm. - Gợi ý 2 (GY2): Số lớn nhất mà bạn có thể làm là 31. nhỏ nhất là 0 - Gợi ý 3 (GY3): 10101 = 21, 11111 = 31 - Gợi ý 4 (GY4): HELP IM TRAPPED - Gợi ý 5 (GY5): Hoa hậu Flexi-toes có thể đếm 1024 × 1024 = 1,048,576 số từ 0 đến 1,048,575! - Gợi ý 6 (GY6): Khi đặt một số 0 bên phải 1 số nhị phân thì số nhị phân đó sẽ tăng gấp đôi. Vì tất cả giá trị của các số 1 trong số đó sẽ tăng lên gấp đôi, do vậy bản thân số đó sẽ tăng gấp đôi.
  • 26. CS4S. Computer Science for Schools 26 | P a g e Tổng quan Scratch Bùi Việt Hà MỤC ĐÍCH - MISSION của nhóm thiết kế Scratch: Chúng tôi hỗ trợ một công cụ lập trình mới giúp trẻ suy nghĩ hợp lý hơn, hệ thống hơn, sáng tạo hơn, làm việc nhóm và rèn luyện các kỹ năng cần thiết trong xã hội hôm nay. CS4S sẽ giới thiệu lần lượt các bài học về môi trường và ngôn ngữ lập trình mới này, đối tượng là tất cả giáo viên và học sinh. Có thể coi đây là chương trình cơ bản về Scratch. 1. Scratch là gì ? Scratch là một môi trường, ngôn ngữ lập trình "kéo thả" mới xuất hiện trên thế giới và cũng rất mới đối với Việt Nam. Môi trường lập trình này rất đặc biệt vì nó thích hợp cho mọi lứa tuổi, mọi ngành nghề và trình độ. Vì sao mọi người cần học môi trường lập trình này? Vì sao Scratch lại thích hợp cho lứa tuổi thiếu nhi, thiếu niên và phù hợp cho việc đưa các kiến thức lập trình cho các bậc học này? Môi trường và ngôn ngữ lập trình Scratch do nhóm nghiên cứu Lifelong Kindegarden Group thuộc đại học MIT (Massachusetts Institute of Technology) thiết lập đầu năm 2008. Ý tưởng ban đầu của nhóm chỉ là thiết lập một ngôn ngữ lập trình mới, đơn giản, chỉ dùng kéo thả, dành cho trẻ con để thiết lập trò chơi, phim hoạt hình, ứng dụng đơn giản, kích thích sự sáng tạo trong môi trường làm việc nhóm của trẻ. Tuy nhiên Scratch chỉ thực sự bùng nổ từ năm 2014 khi một số quốc gia như Anh, Mỹ đã đổi mới đột phá chương trình giảng dạy môn Tin học trong nhà trường, đưa nội dung kiến thức Khoa học máy tính vào nhà trường ngay từ cấp Tiểu học. Một trong những đề nghị quan trọng nhất của các chương trình này là cần đưa các ngôn ngữ lập trình đơn giản, dạng kéo thả như Scratch vào giảng dạy trong nhà trường ngay từ Tiểu học. Việc điều chỉnh chương trình môn Tin học này đã kéo theo sự gia tăng bùng nổ của Scratch trên phạm vi toàn thế giới. Số lượng học sinh đăng ký tham gia trang Scratch tăng đột biến cả về số lượng và chất lượng. Thực tế đã chứng minh tính hấp dẫn của các môi trường lập trình kéo thả như Scratch, sự đam mê lập trình của trẻ nhỏ. Scratch vô cùng thích hợp cho trẻ lứa tuổi từ 6 đến 14, tức là các cấp Tiểu học, THCS của Việt Nam. Chính vì vậy trong Chương trình đổi mới giáo dục của Việt Nam sau 2018, Bộ Giáo dục & Đào tạo cũng đã quyết định đưa nội dung kiến thức Khoa học
  • 27. CS4S. Computer Science for Schools 27 | P a g e máy tính trong môn Tin học vào ngay từ cấp Tiểu học, và những ngôn ngữ lập trình kéo thả như Scratch sẽ là một lựa chọn tốt cho các nhà trường và học sinh. 2. Vài thông tin về môi trường và dự án Scratch - Scratch là 1 môi trường lập trình ứng dụng đặc biệt, trong đó việc “viết” lệnh sẽ được thực hiện bằng thao tác “kéo thả”. - Đầu ra của Scratch hỗ trợ các công nghệ và ứng dụng mới nhất của CNTT-ICT, do vậy các ứng dụng của Scratch rất phong phú, hấp dẫn, nhất là trẻ nhỏ. - Scratch có sự phát triển bùng nổ 2 năm trở lại đây. Đặc biệt là sau khi một số quốc gia có tiềm lực khoa học kỹ thuật mạnh trên thế giới đã quyết đinh đưa Scratch vào giảng dạy trong nhà trường cho học sinh từ cấp Tiểu học. - Scratch hoàn toàn miễn phí và có thể chia sẻ rộng rãi trong cộng đồng. Hiện nay trên Website chính của Scratch (https://scratch.mit.edu/) đã có hơn 15 triệu sản phẩm của Scratch được chia sẻ bới hơn 12 triệu người sử dụng trên khắp thế giới. - Scratch rất thích hợp để tạo ra các ứng dụng đồ họa, animation, bài học, bài giảng, mô phỏng kiến thức, trình diễn, sách điện tử, trò chơi, … rất phù hợp với nhà trường, giáo viên, học sinh. - Scratch là môi trường tốt nhất để dạy học sinh làm quen với tư duy máy tính, khoa học máy tính ngay từ lứa tuổi tiểu học. 3. Hãy bắt đầu lập trình với Scratch Chúng ta hãy quan sát giao diện của Scratch và nhận diện các vùng trên màn hình. Thực đơn Thanh công cụ nhanh Nút trợ giúp nhanh Nút trợ giúp Sân khấu Cửa sổ lệnh Nhân vật Khu vực tạo nhân vật Nút Tab chuyển đổi các cửa sổ lệnh, trang phục, âm thanh Nhóm lệnh chính Khu vực tạo nền sân khấu Khung điều khiển lệnh
  • 28. CS4S. Computer Science for Schools 28 | P a g e Bây giờ các bạn hãy cùng tôi, chúng ta cùng khám phá thế giới diệu kỳ của Scratch nhé. B1. Chuyển động với nhân vật Chúng ta bắt đầu quan sát nhân vật chính (con Mèo) trên nền sân khấu. Bên phải là cửa sổ lệnh, hay chính là nơi ta cần "lập trình" để điều khiển hoạt động của nhân vật. Chúng ta bắt đầu bằng lệnh chuyển động nhân vật. - Nháy chuột chọn nhóm lệnh Motion. - Kéo thả lệnh MOVE từ khung điều khiển lệnh (giữa) sang cửa sổ lệnh (bên phải). Để quan sát và thực hiện lệnh hãy nháy chuột lên lệnh này (lệnh MOVE) trên cửa sổ lệnh). Quan sát nhân vật chuyển động trên màn hình: dịch chuyển sang phải 10 bước. Nháy lên dòng lệnh này để thực hiện lệnh. Như vậy trên Scratch việc "lập trình" thực chất chỉ là việc kéo thả các lệnh đã có sẵn vào khung cửa sổ lệnh của nhân vật.
  • 29. CS4S. Computer Science for Schools 29 | P a g e B2. Bổ sung thêm âm thanh Chúng ta sẽ làm quen và bổ sung thêm âm thanh nhé. - Nháy chọn nhóm lệnh Sound. - Kéo thả lệnh PLAY DRUM sang cửa sổ lệnh, nhớ đưa sát và dính vào lệnh MOVE đã có trong cửa sổ lệnh. Bạn sẽ thấy 2 lệnh này sẽ hút nhau khi được kéo sát vào nhau. Bây giờ bạn nháy chuột lên một trong 2 lệnh trên thì cả nhóm 2 lệnh sẽ thực hiện, lần lượt theo thứ tự từ trêb xuống dưới. Nháy chuột tại ô này bên trong lệnh PLAY DRUM để chọn kiểu trống. Trên các lệnh có các vị trí màu trắng dùng để nhập tham số, dữ liệu đầu vào cho lệnh Scratch. Môi trường lập trình Scratch: - Mỗi nhân vật có 1 cửa sổ lệnh riêng, chứa các lệnh cần lập trình để điều khiển nhân vật này. - Các lệnh được đưa vào bằng cách kéo thả từ khung điều khiển lệnh. - Các lệnh có thể dính với nhau thành nhóm. Chỉ cần nháy lên 1 lệnh sẽ thực hiện tất cả các lệnh trong nhóm theo thứ tự từ trên xuống dưới.
  • 30. CS4S. Computer Science for Schools 30 | P a g e B3. Bắt đầu cho nhân vật nhảy múa Chúng ta sẽ bổ sung các lệnh cho nhân vật nhảy múa thực sự nhé. - Nháy chọn nhóm lệnh Motion. - Kéo thả lệnh MOVE, sửa tham số của lệnh thành -10. Tiếp tục: - Chọn nhóm lệnh Sound và kéo thả lại lệnh PLAY DRUM vào cửa sổ lệnh. - Thay đổi tham số trống thành 5 (Open Hi-Hat) và kéo dính vào nhóm lệnh gốc. Bây giờ nếu chạy chúng ta sẽ thấy chú Mèo vừa chạy, nhảy múa trong tiếng trống.
  • 31. CS4S. Computer Science for Schools 31 | P a g e B4. Lặp lại liên tục nhảy múa Muốn cho chú Mèo nhảy múa liên tục trong tiếng trống chúng ta cần cho các lệnh trên thực hiện lặp lại nhiều lần. - Nháy chọn nhóm lệnh Control. - Kéo thả lệnh REPEAT (lặp) sang cửa sổ lệnh, dịch chuyển sau cho lệnh này sẽ ôm gọn tất cả nhóm lệnh ban đầu vào bên trong 2 thanh ngang của mình. Tham số mặc định là 10. Có thể thay thế lệnh REPEAT bằng lệnh FOREVER. Nhóm các lệnh này sẽ được thực hiện lặp lại 10 lần (bên trong lệnh Repeat. Lệnh Reapeat có tham số điều khiển số lần lặp. Nhóm các lệnh này sẽ được thực hiện lặp lại vô hạn lần (bên trong lệnh Forever). Lệnh FOREVER thực hiện lặp vô hạn lần.
  • 32. CS4S. Computer Science for Schools 32 | P a g e B5. Nhân vật nói và hội thoại - Chọn nhóm lệnh Looks và kéo thả lệnh SAY ra cửa sổ lệnh. Sau đó hay nhập trực tiếp "Chào các bạn !" vào vị trí sau chữ SAY và chạy thử để thấy nhân vật của chúng ta sẽ "nói" như thế nào. Cuối cùng đưa lệnh này lên trên cùng của nhóm lệnh như hình bên. Bạn sẽ thấy nhân vật Mèo của chúng ta sẽ nói "Chào các bạn !" trong 2 giây.
  • 33. CS4S. Computer Science for Schools 33 | P a g e B6. Tác dụng của lá cờ xanh Bạn có nhìn thấy nhóm phía trên cửa sổ chính của sân khấu? Chúng ta sẽ tìm hiểu ý nghĩa và tác dụng của lá cờ xanh. - Chọn nhóm lệnh Event và kéo thả lệnh sang cửa sổ chính, đưa lên vị trí đầu tiên của nhóm lệnh đã có. Bây giờ muốn chạy toàn bộ chương trình chỉ cần nháy lên nút hình lá cờ xanh phía trên màn hình. Lệnh này có gì đặc biệt không? Bạn có nhìn thấy 1 đường cong ở phía trên không? Lệnh này luôn đứng vị trí số 1 trong dãy lệnh. Ý nghĩa của lệnh: khi nào người dùng nháy lên lá cờ xanh thì sẽ khởi động thực hiện nhóm các lệnh phía dưới.
  • 34. CS4S. Computer Science for Schools 34 | P a g e B7. Thay đổi màu sắc nhân vật Chúng ta sẽ thêm lệnh làm thay đổi màu sắc của nhân vật, nhưng lần này sẽ thực hiện theo một cách hoàn toàn khác. - Chọn nhóm lệnh Looks, sau đó kéo thả lênh CHANGE <Color> EFFECT BY ra cửa sổ lệnh. Nháy trực tiếp lên lệnh để quan sát sự thay đổi màu sắc của nhân vật. Dãy hình dưới đây là kết quả của việc thực hiện liên tiếp lệnh này. Bạn đã biết gì về môi trường lập trình Scratch: - Cửa sổ lệnh chứa các lệnh Scratch do người dùng taoh ra bằng cách kéo thả lệnh từ khung điều khiển lệnh. - Các lệnh có khả năng kết dính lại với nhau thành 1 nhóm. Khi chạy các lệnh trong nhóm sẽ thực hiện lần lượt từ trên xuống. - Các lệnh có hình cong phía trên (ví dụ các lệnh WHEN CLICKED) sẽ luôn ở vị trên cùng của nhóm lệnh. - Nháy lên nút hình lá cờ màu xanh để bắt đầu chạy chương trình.
  • 35. CS4S. Computer Science for Schools 35 | P a g e B8. Thử bấm một phím Chúng ta sẽ thực hiện trong bước này một lệnh mới, cho phép dùng phím để điều khiển hoạt động nhân vật, cụ thể là điều khiển nhân vật thay đổi màu sắc. - Chọn nhóm lệnh Events, kéo thả lệnh when <space> key pressed vào cửa sổ lệnh, đặt ngay cạnh và phía trên của lệnh thay đổi màu sắc đã có. Phím điều khiển mặc định là Space, có thể lựa chọn phím bất kỳ khác nếu muốn. Bây giờ chúng ta có thể chạy chương trình (bằng cách nháy nút hình lá cờ xanh), quan sát nhân vật nhảy múa, đồng thời dùng phím space để điều khiển Mèo thay đổi màu sắc. Có thể chọn phím khác tại đây.
  • 36. CS4S. Computer Science for Schools 36 | P a g e B9. Bổ sung nền sân khấu Thực hiện theo các bước sau để bổ sung thêm nền sân khấu. 2. Chọn hình nền này và bấm nút OK. 1. Nháy vào nút này 3. Kết quả hiện như hình bên.
  • 37. CS4S. Computer Science for Schools 37 | P a g e B10. Bổ sung thêm nhân vật Thực hiện theo các bước sau để bổ sung thêm nhân vật trên sân khấu. 2. Chọn nhân vật này và bấm nút OK 1. Nháy nút này 3. Nhân vật hiện ra trên sân khấu. Bên phải là cửa sổ lệnh của nhân vật này.
  • 38. CS4S. Computer Science for Schools 38 | P a g e B11. Hãy cùng khám phá Scratch Chúng ta hãy cùng khám phá Scratch bằng nhiều cách khác nữa và trong các bài học tiếp theo. Ví dụ có thể thiết lập các lệnh mới trong cửa sổ lệnh của nhân vật mới được đưa vào. Bây giờ khi nháy nút hình lá cờ chúng ta sẽ thấy cả 2 nhân vật cùng chuyển động theo các lệnh đã được lập trình trước.
  • 39. CS4S. Computer Science for Schools 39 | P a g e Góc thuật toán - Algorithm Xếp số thứ tự trong ma trận vuông Bùi Việt Hà Góc thuật toán bao gồm những bài viết, bản dịch mô tả thuật toán, các bài toán, bài tập cần tư duy thuật toán để giải. Trong chuyên mục này chúng tôi cũng sẽ giới thiệu các cuốn sách, biên dịch các bài viết hay về thuật toán và cấu trúc dữ liệu của các tác giả nổi tiếng. Rất mong nhận được nhiều bài viết trong chuyên mục nhỏ nhưng rất hấp dẫn này của CS4S. Đề bài: Điền các số thứ tự 1, 2, ...., NxN vào 1 lưới ô vuông N x N theo hướng sau: a) Từ ngoài vào, theo chiều kim đồng hồ. b) Từ trong ra, theo chiều kim đồng hồ. Lời giải Lời giải đơn giản nhất của bài toán này là làm sao chỉ cần 1 bước duyệt, đi tới đâu, gán giá trị vào lưới tới đó. Do vậy phương án giải hợp lý nhất phải là: for i : = 1 to N*N do ........< gán giá trị tương ứng (giá trị là số i) cho ô lưới> ....... Chúng ta cùng phân tích và tìm lời giải theo hướng này. Ma trận được thể hiện bằng 1 mảng 2 chiều a[i,j] và thể hiện như sau: a11 a12 .... a1N a21 a22 ... a2N ........ aN1 aN2 ... aNN Có 2 nhận xét quan trọng sau: a) b)
  • 40. CS4S. Computer Science for Schools 40 | P a g e 1. Mỗi lần tiến 1 bước, giá trị được gán vào ô lưới tương ứng sẽ được tăng lên 1 đơn vị. Khi đi đến bước cuối cùng, số N2 được gán thì vừa lúc kết thúc. 2. Quan trọng là bước đi trên lưới theo hướng nào để gán các giá trị vào ô lưới. Có 4 hướng: 0: đi sang phải (right-dir). Bước đi như sau: (i,j) ---> (i,j+1) 1: đi xuống dưới (down-dir). Bước đi như sau: (i,j) ---> (i+1,j) 2: đi sang trái (left-dir). Bước đi như sau: (i,j) ---> (i,j-1) 3: đi lên trên (up-dir). Bước đi như sau: (i,j) ---> (i-1,j) Ý tưởng thuật toán như sau: Mỗi bước đi, sau khi gán số hiện thời cần bước thêm 1 bước theo 1 trong các hướng trên. Căn cứ vào vị trí và hướng hiện thời để xác định hướng tiếp theo. Hàm (hay thủ tục) Next_Direction() sẽ xác định hướng chuyển động tiếp theo tính từ vị trí hiện thời. Hàm này có dạng sau: function GetNextDir(x, y: integer, CurrDir: Byte): Byte; Trong đó (x, y) là vị trí ô lưới hiện thời, CurrDir là hướng đi hiện thời. Hàm số này sẽ trả lại giá trị là hướng đi tiếp theo Hàm này có thể viết đơn giản như sau: function GetNextDir(x, y: integer, CurrDir: Byte): Byte; var k, NewDir : integer; begin NewDir : = CurrDir; If CurrDir = 0 then begin y : = y+1; if (y > N) or ((y <=N) and (a[x,y]>0)) then NewDir : =1; end; If CurrDir = 1 then begin x := x+1; If (x > N) or ((x <= N) and (a[x,y] > 0)) then NewDir : = 2; end; If CurrDir = 2 then begin y:= y-1; If (y = 0) or ((y > 0) and (a[x,y] > 0)) then NewDir : = 3; end; If CurrDir = 3 then
  • 41. CS4S. Computer Science for Schools 41 | P a g e begin x:=x-1; If (x = 0) or ((x > 0) and (a[x,y] > 0)) then NewDir : = 0; end; GetNextDir : = NewDir; end; Phần thiết lập ban đầu của chương trình như sau: for i:=1 to N do for j:=1 to N do a[i,j]:=0; i:=1; j:= 1; Currdir := 0; Bây giờ có thể viết đoạn chương trình mô tả phần chính của chương trình. for k : = 1 to N*N do begin a[i,j]:= k; if k = N*N then Exit; CurrDir:= GetNextDir(i,j,CurrDir); Case CurrDir of 0: j : = j+1; 1: i : = i+1; 2: j : = j-1; 3: i : = i-1; end; Với bài câu b) thì cách giải tương tự bài trên, điểm khác biệt chỉ là gán dãy số theo thứ tự ngược từ N*N ---> 1. Do vậy điểm khác chỉ là 1 dòng lệnh trong lệnh for như sau: for k : = N*N downto 1 do begin a[i,j] : = k; CurrDir : = GetNextDir(i,j,CurrDir); Case CurrDir of 0: j : = j+1; 1: i : = i+1; 2: j : = j-1; 3: i : = i-1; end; Nếu không sử dụng hàm hoặc thủ tục thì chương trình có thể viết như sau. Chương trình viết trên Pascal: Var
  • 42. CS4S. Computer Science for Schools 42 | P a g e i,j,i1,j1,k,N : integer; CurrDir, NewDir : byte; a: array[1..100,1..100] of integer; Begin write("Nhap kich thươc Ma tran:"); Readln(N); for i:=1 to N do for j:=1 to N do a[i,j] : =0; i :=1; j := 1; Currdir : = 0; for k : = 1 to N*N do begin a[i,j] : = k; NewDir : = CurrDir; If CurrDir = 0 then //right-dir begin j1 : = j+1; if (j1 > N) or ((j1 <=N) and (a[i,j1]>0)) then NewDir : =1; end; If CurrDir = 1 then //down-dir begin i1:=i+1; If (i1 > N) or ((i1 <= N) and (a[i1,j] > 0)) then NewDir : = 2; end; If CurrDir = 2 then //left-dir begin j1:=j-1; If (j1 = 0) or ((j1 > 0) and (a[i,j1] > 0)) then NewDir : = 3; end; If CurrDir = 3 then //up-dir begin i1:=i-1; If (i1 = 0) or ((i1 > 0) and (a[i1,j] > 0)) then NewDir : = 0; end; CurrDir : = NewDir; Case CurrDir of 0: j : = j+1; 1: i : = i+1; 2: j : = j-1; 3: i : = i-1; end; end; for i : = 1 to N do begin
  • 43. CS4S. Computer Science for Schools 43 | P a g e for j:=1 to N do write(a[i,j]:4); writeln; end; end. Chương trình viết trên C++: #include <iostream> using namespace std; int main( ) { int i,j,N; short CurrDir, NewDir; int a[100][100]; cout << "Nhap kich thuoc Ma tran: "; cin >> N; for(i=0;i<=N;i++) for(j=0;j<=N;j++) a[i][j]=0; i=1;j=1;CurrDir=0; for(int k=1;k<=N*N;k++) { a[i][j]=k; NewDir = CurrDir; if(CurrDir==0)// right-dir { int j1=j+1; if((j1 > N)||((j1 <=N)&&(a[i][j1]>0))) NewDir=1; } if(CurrDir==1)//down-dir { int i1=i+1; if((i1 > N)||((i1 <= N)&&(a[i1][j]>0))) NewDir=2; } if(CurrDir==2) //left-dir { int j1=j-1; if((j1 == 0)||((j1 > 0)&&(a[i][j1] > 0))) NewDir=3; } if(CurrDir==3) //up-dir { int i1=i-1; if((i1 == 0)||((i1 > 0)&&(a[i1][j] > 0))) NewDir =0; }
  • 44. CS4S. Computer Science for Schools 44 | P a g e CurrDir = NewDir; switch(CurrDir) { case 0: j++; break; case 1: i++; break; case 2: j--; break; case 3: i--; break; } } for(i=1;i<=N;i++) { for(j=1;j<=N;j++) { cout.width(4); cout << a[i][j]; } cout << "n"; } return 0; } Hình ảnh chương trình chạy trên Pascal và C++: Chú ý: Các chương trình trên được viết trên Lazarus và CodeBlocks.
  • 45. CS4S. Computer Science for Schools 45 | P a g e Danh sách cộng tác viên CS4S Danh sách các bạn cộng tác viên trực tiếp tham gia vào ấn phẩm CS4S số 1: Phạm Thị Nga, giáo viên tin trường chuyên Lam Sơn, Thanh Hoá. Trần Thị Hiên, giáo viên Tin học tại THPT Nam Cao, Lý Nhân, Hà Nam. Đào Giang Lâm, chuyên viên Phòng CNTT, Sở GD&ĐT Nghệ An. Danh sách các bạn cộng tác viên khác: Nguyễn Tấn Phong. Giáo viên Toán - Tin, trường THCS Đồng Nai, Cát Tiên, Lâm Đồng. Phạm Phương Lê. Sư phạm vật lý, thạc sỹ giáo dục. Lê Thanh Hoài, giáo viên tin học trường THCS Lê Minh Xuân, Long An. Chúng tôi mong muốn nhận được nhiều hơn nữa danh sách các bạn cộng tác viên cùng tham gia, đóng góp cho ấn phẩm này. Danh sách nhóm sáng lập: Bùi Việt Hà Bùi Văn Thanh Ngô Ánh Tuyết Phạm Thế Long Hồ Cẩm Hà Nguyễn Thanh Xuân 2016