Bài viết này sẽ tổng hợp và hướng dẫn giải dạng bài danh sách (chuỗi) trong kỳ thi tin học trẻ bằng Scratch 3.0 ví dụ như tính tổng, đếm số phần tử, tìm số lớn nhất, sắp xếp...
Trước khi bắt tay làm các dạng bài liên quan đến danh sách, bạn cần nắm được các kiến thức cơ bản về danh sách. Bạn có thể xem lại bài viết tại sao phải dùng danh sách, cách tạo và giải thích các câu lệnh ở các bài viết trước.
Dạng 1: Cho dãy số đơn giản (liên tiếp dạng 1, 2, 3, 4, 5… ). Thực hiện các thao tác cơ bản trong dãy số.
Bài 1: Duyệt từng phần tử trong dãy
Duyệt từng phần tử trong dãy là một kỹ thuật vô cùng quan trọng, hầu hết được sử dụng trong tất cả các bài. Kỹ thuật này cho phép chúng ta xem xét giá trị của từng phần tử trong dãy, lần lượt từ phần tử đầu tiên cho đến hết.
Để duyệt từng phần tử, chúng ta cần một biến để đại diện cho số thứ tự của từng phần tử. Ban đầu, biến sẽ được đặt bằng 1 để chúng ta bắt đầu duyệt từ phần tử đầu tiên trong dãy. Sau khi duyệt xong phần tử đó, chúng ta tăng biến lên 1 để duyệt sang phần tử tiếp theo. Khi biến lớn hơn độ dài của dãy, tức là chúng ta đã duyệt hết toàn bộ dãy.
Ví dụ: Cho chú mèo nói ra từng phần tử có trong dãy số
Link project mẫu: https://scratch.mit.edu/projects/405388359/
Bài 2: Đếm số phần tử có trong dãy.
Câu lệnh/biến "kích thước của …" giúp trả về số lượng phần tử có trong dãy.
Gọi "kích thước của …." (length of …) là câu lệnh/biến vì câu lệnh này không giúp nhân vật thực hiện gì cả. Nó chỉ trả về kết quả là một số và số này cần được nối vào câu lệnh khác để tạo thành một hành động hoàn thiện cho nhân vật. Đọc thêm về phân loại các dạng câu lệnh tại đây.
Link project mẫu: https://scratch.mit.edu/projects/405388359/
Bài 3: Đếm số phần tử là số chẵn, số lẻ hoặc chia hết cho một số nào đó trong dãy
Để kiểm tra xem một số (một phần tử) là số chẵn (chia hết cho 2) hoặc số lẻ (số chia 2 dư 1) hoặc chia hết cho một số nào đó, ta cần sử dụng phép toán mod.
Phép mod có thể hiểu đơn giản là phép chia lấy dư. Ví dụ, 5 chia 2 bằng 2 dư 1. Khi đó ta sẽ viết là 5 mod 2 = 1. Phép toán này có nghĩa là 5 chia 2 dư 1. Trong phép toán mod, ta chỉ quan tâm đến phần dư.
Như vậy:
- Nếu số a chia hết cho 2 (số chẵn), thì a mod 2 = 0.
- Nếu a là số lẻ, thì a mod 2 = 1.
- Nếu a là một số chia hết cho 3, thì a mod 3 = 0.
Dựa vào phép mod, ta có thể tìm được các số chẵn, số lẻ hoặc số chia hết cho một số nào đó trong dãy. Khi đó, ta có thể đếm trực tiếp các số thỏa mãn yêu cầu hoặc thêm các số thỏa mãn yêu cầu sang một dãy khác và đếm số phần tử của dãy mới.
Link project mẫu: https://scratch.mit.edu/projects/405388359/
Bài 4: Tính tổng các số trong dãy
Chúng ta cần tạo một biến để lưu giá trị tổng của các số trong dãy. Ban đầu, đặt tổng = 0. Sau đó tạo vòng lặp duyệt từng phần tử trong dãy. Khi duyệt đến phần tử nào, cộng giá trị của phần tử đó vào biến tổng. Khi duyệt xong toàn bộ dãy, giá trị của biến tổng chính là tổng của các số trong dãy.
Bài 5: Tính tổng các số chẵn trong dãy
Bài tập này là sự kết hợp giữa bài 3 và bài 4 đã trình bày ở trên. Thay vì cộng giá trị của phần tử đó vào biến tổng, ta cần thêm một câu lệnh điều kiện để chỉ cộng những phần tử hợp lệ.
Ngoài ra, chúng ta có thể tạo một danh sách mới, chỉ gồm các số hợp lệ rồi tính tổng của tất cả các phần tử có trong danh sách mới.
Link project mẫu: https://scratch.mit.edu/projects/405388359/
Xem thêm các dạng bài về danh sách (phần 2) tại đây.