Lời giải Đề bài lập trình Scratch trong cuộc thi Tin học trẻ toàn quốc - Năm 2018

pdf 27 trang Minh Nam 28/10/2024 550
Bạn đang xem tài liệu "Lời giải Đề bài lập trình Scratch trong cuộc thi Tin học trẻ toàn quốc - Năm 2018", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.

Tóm tắt nội dung tài liệu: Lời giải Đề bài lập trình Scratch trong cuộc thi Tin học trẻ toàn quốc - Năm 2018

Lời giải Đề bài lập trình Scratch trong cuộc thi Tin học trẻ toàn quốc - Năm 2018
 2018
 Các đề bài lập trình Scratch trong 
cu ộc thi Tin học trẻ toàn quốc lần thứ 
 24, năm 2018 
 Lời giải các bài toán lập trình Scratch trong 
 cuộc thi trên. 
 Ứng dụng (1): Mô phỏng sắp xếp danh sách lớp học theo thứ tự từ thấp đến cao. 
Giả sử lớp có 4 bạn học sinh có chiều cao lần lượt như sau: 
1. Bình: 172 cm. 
2. Hoa: 141 cm. 
3. Thành: 178 cm. 
4. Thắng: 154 cm. 
Ban đầu các bạn đứng xếp hàng như hình 1. 
 Hình 1. Trạng thái ban đầu của các bạn Hình 2. Các bạn đã sắp xếp theo thứ tự 
 trong lớp. tăng dần theo chiều cao. 
Viết chương trình cho phép người dùng đổi chỗ 2 bạn bất kỳ trong hàng như sau: 
Nháy chuột lên một bạn, sau đó nháy lên bạn thứ hai thì 2 bạn này sẽ từ từ di chuyển 
và đổi chỗ cho nhau. Cần thực hiện liên tục việc đổi chỗ sao cho sắp xếp đúng theo 
thứ tự chiều cao tăng dần như hình 2. Ngay sau khi sắp xếp đúng, giáo viên xuất hiện 
và thông báo "Đã sắp xếp lớp xong rồi". Chương trình ứng dụng đặt tên A2-2.sb2. 
Bài 3. Trò chơi: Chạy đua học toán. 
Nhân vật chính của chương trình (HS) cần chạy qua sân khấu 10 vòng, mỗi lần chạy 
từ trái sang phải màn hình, để lấy được phần quà sinh nhật của mình. Nhiệm vụ của 
người chơi là giúp nhân vật chính lấy được món quà sinh nhật với thời gian ngắn nhất. 
Hình 1 mô tả trạng thái ban đầu của chương trình. Nhấn phím Space để bắt đầu trò 
chơi. 
Khi chạy đến vòng cuối cùng, vòng 10, thì phần quà xuất hiện ở cuối đường chạy 
(Hình 2). 
Người chơi khi đó chỉ việc chạy đến và lấy được phần quà (Hình 3). Chương trình kết 
thúc, đồng hồ thời gian sẽ dừng chạy để chúng ta biết được chính xác thời gian chơi. 
1 Bộ hình ảnh các bạn học sinh và giáo viên có trong kho hình ảnh đã cung cấp cho từng thí sinh. 
3 | C S 4 S 1 0 - 2 0 1 8 - Nhân vật chính luôn chạy với vận tốc cố định. Có thể mở rộng cho phép tác động từ 
bên ngoài để làm tăng vận tốc của nhân vật chính, ví dụ sử dụng âm thanh cổ vũ để 
làm tăng tốc độ chạy của nhân vật chính. 
- Các bài toán sau mỗi vòng chạy sẽ khó hơn một mức, ví dụ sẽ tăng dần phạm vi số 
của phép toán từ 20 tăng dần lên 50, 100, 500, 1000, 5000, 10000. 
- Bổ sung thêm các dạng toán khác cho đa dạng và khó hơn, ví dụ: 
m x n + d, m x n - d. 
- Trong khi chạy trên đường sẽ xuất hiện các hòn đá, muốn chạy qua thì nhân vật 
chính phải nhảy lên kịp thời. Dùng phím lên để điều khiển nhân vật nhảy qua các hòn 
đá này. 
Phần mở rộng, sáng tạo sẽ đặt tên A3m.sb2. 
ĐỀ THI KHỐI B 
Bài 3. Trò chơi: Giải toán lấy quà. 
Chính giữa màn hình là một cây thông nô en lớn. Trên cây thông có rất nhiều loại quà 
khác nhau được gắn ngẫu nhiên trên các vị trí dọc theo cây. Nhiệm vụ của em là, 
trong thời gian 1 phút, điều khiển nhân vật chính (HS) lấy được nhiều phần quà nhất 
có thể từ cây thông này. Nhấn phím Space để bắt đầu trò chơi. 
Khi bắt đầu chơi, em sẽ điều khiển nhân vật chính bằng các phím lên, xuống, phải, 
trái, nhân vật chính sẽ di chuyển lên, xuống, phải, trái 5 bước tương ứng (Hình 1). 
Khi va chạm vào một món quà đầu tiên, người chơi sẽ ôm quà này và phải đi đến vị trí 
có vòng tròn bên phải để bỏ đồ chơi vào bên trong vòng tròn mới được tính là nhận 
được món quà đó (Hình 2). 
Nhưng mỗi khi đến vị trí vòng tròn, trước khi đưa được món quà này vào bên trong 
vòng tròn, Giáo viên và Bảng sẽ xuất hiện yêu cầu em làm một bài toán (Hình 3). Làm 
xong bài toán này thì món quà đó mới vào được bên trong vòng tròn và em được 
quyền đi lấy tiếp món quà khác. 
Câu hỏi toán có thể là một trong 2 loại sau: 
- Tính số các ước số thực sự của một số tự nhiên cho trước (tính cả 1). 
- Trả lời yes/no cho câu hỏi: số tự nhiên sau có phải là nguyên tố hay không. 
Với mỗi câu hỏi em cần trả lời liên tục cho đến khi đúng. Nếu làm đúng, giáo viên nói 
"đúng rồi" và sau 1 giây giáo viên, bảng biến mất, quà được đưa vào vòng tròn và em 
sẽ tiếp tục công việc tìm quà của mình. 
Sau đúng 60 giây, chương trình dừng lại, giáo viên xuất hiện và thông báo em đã nhận 
được bao nhiêu phần quà (Hình 4). 
5 | C S 4 S 1 0 - 2 0 1 8 + Tìm phần tử tiếp theo của một dãy số có qui luật cho trước, ví dụ dãy các số chẵn 
liên tiếp. 
- Bổ sung thêm chức năng: nhân vật chính có thể thay thế quà. Khi đã nhận một món 
quà trên cây, có thể bỏ lại quà đó và chọn quà khác. 
- Mỗi món quà có một âm thanh tương ứng. Khi nhận một món quà thì âm thanh 
tương ứng sẽ vang lên. 
Phần mở rộng, sáng tạo sẽ đặt tên B3m.sb2. 
7 | C S 4 S 1 0 - 2 0 1 8 Quan sát các số đo góc của hình ngôi sao 5 cánh sau chúng ta sẽ tìm ra được ý tưởng 
của việc vẽ ngôi sao 5 cánh đặc như sau. 
Ý tưởng của cách vẽ sao vàng như sau: 
 - Xuất phát từ tâm O có tọa độ (X, Y). 
 - Đi lên điểm A (bước R bước). 
 - Thực hiện việc vẽ liên tục các đoạn thẳng từ A 
 lùi về phía sau 1 đoạn 60, với góc quay từ +18 độ 
 → - 18 độ. Sau bước này sẽ vẽ được 1/5 ngôi sao 
 vàng. 
 - Lùi R bước về điểm (X, Y). 
 - Xoay trái 72 độ 
 - Lặp lại các bước trên 5 lần. 
Nếu viết dưới dạng thuật toán thì tổng thể có thể viết như sau: 
 Đi đến điểm (X,Y), hướng lên phía trên. 
 Lặp 5 lần 
 Đi lên phía trước R bước. 
 <Thực hiện việc vẽ 1 cánh ngôi sao từ vị trí 
 này>. 
 Lùi R bước. 
 Xoay trái 72 độ. 
Bây giờ chúng ta sẽ làm rõ phần được viết đậm trong thuật toán trên. Cụ thể là từ 
điểm A, sẽ xoay bút sang trái 18 độ. Sau đó sẽ lặp 72 lần, mỗi lần xoay phải 0.5 độ và 
thực hiện việc vẽ lùi lại R bước, sau đó tiến R để trả lại vị trí cũ, cuối cùng là xoay trái 
18 độ. 
Thủ tục tổng quát vẽ ngôi sao 5 cánh như sau: 
9 | C S 4 S 1 0 - 2 0 1 8 Bài 2. Sắp xếp 4 số tự nhiên. 
Bài toán này dành cho học sinh tiểu học, do đó yêu cầu không được (nên) dùng mảng 
số (list) để lưu và xử lý dữ liệu. Tất nhiên nếu dùng mảng số thì vẫn được. Chúng ta sẽ 
thiết kế lời giải không sử dụng mảng số. 
Dữ liệu vào: 4 số a1, a2, a3, a4. 
Đầu ra: 4 số này nhưng đã sắp xếp theo thứ tự tăng dần. 
Yêu cầu chỉ được thực hiện phép so sánh và đổi vị trí 2 số bất kỳ trong dãy trên. 
Muốn đổi vị trí 2 số, ví dụ, ai và aj, chúng ta dùng một biến nhớ trung gian temp. 
Thuật toán đổi chỗ 2 số này như sau: 
 temp = ai 
 ai = aj 
 aj = temp 
Chúng ta cùng phân tích 2 thuật toán sắp xếp 4 số và xem cách nào tối ưu hơn. 
Cách 1: 
- Lần lượt so sánh và đổi chỗ a1-a2, a2-a3, a3-a4. Sau bước này số a4 sẽ lớn nhất và nằm 
đúng vị trí. 
- Lần lượt so sánh và đổi chỗ a1-a2, a2-a3. Sau bước này số a3 sẽ lớn nhất và nằm 
đúng vị trí. 
- So sánh và đổi chỗ a1-a2. Sau bước này, số a2, và do đó a1 sẽ đúng vị trí, do vậy cả 4 
số đã được sắp xếp xong. 
Cách làm này cần tối đa 6 lần thay đổi vị trí các cặp số. 
Cách 2: 
- Lần lượt so sánh và đổi chỗ a1-a2, a3-a4. Sau bước này ta sẽ có a1 < a2; a3 < a4. 
- Tiếp theo so sánh 2 cặp số nhỏ và lớn của bước trên. So sánh và đổi chỗ a1-a3, a2-a4. 
Sau bước này a1 là nhỏ nhất và a4 lớn nhất, 2 số này đã đúng vị trí của mình. 
- So sánh và đổi chỗ a2-a3. Sau bước này, a2 < a3 và và do đó cả 4 số đã được sắp xếp 
xong. 
Cách làm này cần tối đa 5 lần thay đổi vị trí các cặp số. 
Ví dụ chương trình mô tả cách sắp xếp thứ 2 trên Scratch sẽ như sau: 
11 | C S 4 S 1 0 - 2 0 1 8 Chương trình cho Mèo. 
Ứng dụng: Sắp xếp đổi chỗ danh sách học sinh. 
Bài toán này có nhiều cách giải khác nhau, sử dụng các kỹ thuật lập trình khác nhau, 
ví dụ dùng mảng số, dùng kỹ thuật Clone,  Chúng ta sẽ thiết kế tại đây chương trình 
đơn giản không sử dụng mảng, không sử dụng Clone, phù hợp với chương trình Tiểu 
học. 
 Bình: 172 cm. 
 Hoa: 141 cm. 
 Thành: 178 cm. 
 Thắng: 154 cm. 
Chúng ta sẽ sử dụng 4 nhân vật độc lập tương ứng với 4 bạn học sinh tên Bình, Hoa, 
Thành, Thắng như đề bài với chiều cao của các bạn này lần lượt là: 172, 141, 178 và 
154. 
Chương trình mô phỏng của chúng ta cần thực hiện được các công việc sau: 
(a) Mỗi nhân vật học sinh trên đây sẽ tương ứng với một số ai trong dãy số a1, a2, a3, 
a4. 
(b) Thực hiện đổi chỗ 2 học sinh trên màn hình bằng cách nháy chuột lần lượt lên 2 
học sinh này. Ngay sau khi nháy lên học sinh thứ hai thì 2 học sinh sẽ di chuyển và 
đổi vị trí cho nhau. 
(c) Việc đổi chỗ 2 học sinh như trên sẽ đồng bộ với việc đổi chỗ 2 số tương ứng của 
dãy a1, a2, a3, a4. 
Chúng ta sẽ cùng phân tích và xây dựng chương trình thực hiện các công việc trên. Để 
thực hiện công việc (a), cần thiết lập hệ thống các biến nhớ riêng của mỗi học sinh và 
cập nhật các giá trị của dãy số a1, a2, a3, a4. 
13 | C S 4 S 1 0 - 2 0 1 8 Trạng thái ban đầu của 4 nhân vật học sinh như sau: 
 Bình Hoa Thành Thắng 
Thủ tục Update được thực hiện như nhau cho cả 4 nhân vật học sinh như sau. 
Bây giờ chúng ta sẽ thiết kế tiếp chương trình để thực hiện các công việc (b), (c), đổi 
chỗ 2 học sinh. 
Các biến nhớ hệ thống sử dụng cho công việc này bao gồm. 
 Stt Tên biến nhớ Mô tả ý nghĩa Ghi chú 
 1 FirstClick Biến nhớ mô tả trạng thái Click Biến nhớ rất quan 
 chuột của người dùng lên các trọng. 
 nhân vật. 
 = 0, chưa nháy chuột lần nào. 
 = 1, đã nháy chuột lần thứ nhất. 
 = 2, đã nháy chuột lần thứ 2. 
 Chuẩn bị đổi chỗ 2 học sinh. 
15 | C S 4 S 1 0 - 2 0 1 8 

File đính kèm:

  • pdfloi_giai_de_bai_lap_trinh_scratch_trong_cuoc_thi_tin_hoc_tre.pdf