Bỏ qua để đến nội dung

Giải toán với Scratch

Chuyên đề này gồm 2 phần: ôn lại cách nhập dữ liệu (hỏi & đợi), các phép toán, dùng biến, điều kiện và vòng lặp; sau đó thực hành 30 bài toán cơ bản thường gặp - tính tổng/hiệu/tích/thương, kiểm tra chẵn lẻ, đếm, tìm số lớn nhất, tính chu vi/diện tích… Bộ bài giải và code của các bài tập được bán riêng (liên hệ tác giả).

Phần 1 - Lý thuyết: Nhập dữ liệu, biến, điều kiện, vòng lặp

Phần tiêu đề “Phần 1 - Lý thuyết: Nhập dữ liệu, biến, điều kiện, vòng lặp”

Khối hỏi [] và đợi (nhóm Cảm biến) hiển thị ô nhập liệu ở dưới sân khấu, tạm dừng chương trình cho tới khi người dùng gõ và bấm Enter. Giá trị vừa nhập được lưu vào khối (trả lời) - thường gán ngay vào một biến để dùng lại nhiều lần.

hỏi [Nhập một số:] và đợi
đặt [n v] thành (trả lời)
đặt [tổng v] thành (0)
thay đổi [tổng v] một lượng (1)

đặt [điểm v] thành (0) gán giá trị tuyệt đối (ghi đè giá trị cũ), còn thay đổi [điểm v] một lượng (1) cộng thêm một lượng vào giá trị hiện tại (dùng số âm để trừ). Xem thêm ở bài Biến số.

((5) + (3))
((5) - (3))
((5) * (3))
((5) / (3))
((5) chia lấy dư (3))

Đây là 5 khối phép toán số học dùng nhiều nhất trong các bài dưới đây - (() chia lấy dư ()) (modulo) đặc biệt hữu ích để kiểm tra chẵn/lẻ hoặc tách phần dư khi đổi đơn vị.

<(5) > (3)>
<(5) < (3)>
<(5) = (5)>

Ba khối so sánh này trả về đúng/sai (boolean) - luôn đặt vào chỗ trống hình lục giác của khối nếu <> thì hoặc lặp lại cho đến khi <>.

<<(5) > (3)> và <(5) < (10)>>
<<(5) > (10)> hoặc <(5) < (3)>>
<không phải <(5) > (10)>>

Ba khối logic này ghép nhiều điều kiện lại với nhau: <<> và <>> đúng khi cả hai vế đều đúng, <<> hoặc <>> đúng khi ít nhất một vế đúng, <không phải <>> đảo ngược đúng/sai của một điều kiện. Rất hữu ích khi một bài toán cần kiểm tra nhiều điều kiện cùng lúc (ví dụ Bài 13 - kiểm tra năm nhuận). Xem đầy đủ các phép toán khác (chuỗi ký tự, số ngẫu nhiên…) ở bài Toán tử.

nếu <(n) > (0)> thì
nói [Số dương]
nếu không thì
nói [Số không dương]

Có thể lồng nhiều tầng nếu <> thì ... nếu không thì :: control để kiểm tra nhiều trường hợp liên tiếp, tương tự if/elif/else. Xem thêm ở bài Cấu trúc rẽ nhánh.

Vòng lặp: lặp lại (N) lần / lặp lại cho đến khi

Phần tiêu đề “Vòng lặp: lặp lại (N) lần / lặp lại cho đến khi”
lặp lại (5)
nói [Xin chào]
end
đặt [i v] thành (1)
lặp lại cho đến khi <(i) > (10)>
thay đổi [i v] một lượng (1)

lặp lại (N) chạy đúng N lần rồi dừng. lặp lại cho đến khi <> chạy tới khi điều kiện đúng - số lần lặp không cố định trước, hay dùng khi cần đếm/duyệt tới một giá trị nhập từ bàn phím. Xem thêm ở bài Vòng lặp.

Lưu ý: trả lời luôn là kiểu chữ, nhưng dùng được trong phép toán

Phần tiêu đề “Lưu ý: trả lời luôn là kiểu chữ, nhưng dùng được trong phép toán”

Khối (trả lời) lưu giá trị người dùng gõ dưới dạng chuỗi ký tự, nhưng Scratch tự động chuyển đổi sang số khi đặt vào các khối toán học hoặc so sánh - miễn người dùng gõ đúng số, không cần ép kiểu thủ công. Đây là lý do mọi bài dưới đây có thể gán thẳng (trả lời) vào biến rồi tính toán ngay.

Nếu người dùng gõ sai định dạng (bỏ trống, gõ chữ, gõ ký tự đặc biệt…) thì Scratch không báo lỗi như nhiều ngôn ngữ khác - thay vào đó:

  • Trong các khối số học ((() + ()), (() - ()), (() * ()), (() chia lấy dư ())), một chuỗi không phải số được hiểu ngầm là 0. Ví dụ ((trả lời) + (5)) khi người dùng gõ “mười” sẽ cho ra 5, không phải một cảnh báo lỗi - kết quả sai nhưng chương trình vẫn chạy bình thường.
  • Riêng khối chia ((() / ())): chia cho 0 (hoặc chia cho một chuỗi không phải số) không làm dừng chương trình mà trả về Infinity (vô cực).
  • Trong các khối so sánh (<() > ()>, <() < ()>, <() = ()>): nếu cả 2 vế đều đổi được sang số thì so sánh theo giá trị số như bình thường; nếu một vế không phải số, Scratch chuyển sang so sánh theo thứ tự chữ cái (như so sánh chuỗi), dễ cho ra kết quả không như mong đợi.

Vì vậy các bài dưới đây đều giả định người dùng nhập đúng định dạng số theo yêu cầu đề bài. Muốn chương trình chắc chắn hơn, có thể thêm bước kiểm tra dữ liệu nhập vào bằng khối nếu <> thì trước khi tính - xem gợi ý ở mục Mở rộng thêm cuối trang.

Hỏi tên người chơi, sau đó nói lời chào có kèm tên vừa nhập.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhập 2 số bất kỳ, tính và cho nhân vật nói ra tổng của chúng.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhập 2 số bất kỳ, tính và cho nhân vật nói ra hiệu (số thứ nhất trừ số thứ hai).

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhập 2 số bất kỳ, tính và cho nhân vật nói ra tích của chúng.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhập 2 số nguyên, tính và cho nhân vật nói ra thương (phép chia thực) và số dư (phép chia lấy dư) của chúng.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhập 3 số bất kỳ, tính trung bình cộng của chúng.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Bài 7: Đổi đơn vị đo (phút sang giờ và phút)

Phần tiêu đề “Bài 7: Đổi đơn vị đo (phút sang giờ và phút)”

Nhập tổng số phút, đổi ra bao nhiêu giờ và bao nhiêu phút dư (ví dụ 75 phút = 1 giờ 15 phút).

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhập năm hiện tại và năm sinh, tính tuổi.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhóm 2: Điều kiện - so sánh và rẽ nhánh

Phần tiêu đề “Nhóm 2: Điều kiện - so sánh và rẽ nhánh”

Nhập một số nguyên, kiểm tra và thông báo đó là số chẵn hay số lẻ.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhập một số bất kỳ, kiểm tra và thông báo đó là số dương, số âm hay bằng 0.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhập 2 số, tìm và cho nhân vật nói ra số lớn hơn.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhập 3 số, tìm và cho nhân vật nói ra số lớn nhất.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhập một năm, kiểm tra đó có phải năm nhuận không. Quy tắc: năm chia hết cho 4 và không chia hết cho 100 là năm nhuận, trừ khi năm đó cũng chia hết cho 400 (khi đó vẫn là năm nhuận).

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Bài 14: Xếp loại học lực theo điểm trung bình

Phần tiêu đề “Bài 14: Xếp loại học lực theo điểm trung bình”

Nhập điểm trung bình (0-10), xếp loại: trên 8 là Giỏi, trên 6.5 là Khá, trên 5 là Trung bình, còn lại là Yếu.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhập đơn giá và số lượng, tính tổng tiền phải trả - nếu mua từ 5 sản phẩm trở lên thì được giảm giá 10% trên tổng tiền.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhập một số N, đếm và in lần lượt từ 1 đến N.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhập một số N, đếm ngược và in lần lượt từ N về 1.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhập một số N, tính tổng 1 + 2 + 3 + … + N.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Bài 19: Tính tổng các số chẵn từ 1 đến N

Phần tiêu đề “Bài 19: Tính tổng các số chẵn từ 1 đến N”

Nhập một số N, tính tổng các số chẵn trong đoạn từ 1 đến N.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Bài 20: Đếm số lượng số chẵn trong đoạn 1..N

Phần tiêu đề “Bài 20: Đếm số lượng số chẵn trong đoạn 1..N”

Nhập một số N, đếm xem có bao nhiêu số chẵn trong đoạn từ 1 đến N.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhập một số N, tính N! = 1 × 2 × 3 × … × N.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhập một số nguyên N (lớn hơn 1), kiểm tra N có phải số nguyên tố không.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Bài 23: Tính tổng các chữ số của một số

Phần tiêu đề “Bài 23: Tính tổng các chữ số của một số”

Nhập một số nguyên dương, tính tổng các chữ số của nó (ví dụ 123 → 1 + 2

  • 3 = 6).
Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhập một số N, cho nhân vật lần lượt nói ra bảng nhân của N từ 1 đến 10 (N × 1, N × 2, …, N × 10).

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Máy tự chọn ngẫu nhiên một số bí mật từ 1 đến 100. Người chơi nhập số đoán liên tục cho tới khi đoán đúng - mỗi lần đoán sai, máy gợi ý số bí mật lớn hơn hay nhỏ hơn số vừa đoán.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhóm 4: Chu vi và diện tích hình học cơ bản

Phần tiêu đề “Nhóm 4: Chu vi và diện tích hình học cơ bản”

Nhập độ dài cạnh, tính chu vi và diện tích hình vuông.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Bài 27: Chu vi và diện tích hình chữ nhật

Phần tiêu đề “Bài 27: Chu vi và diện tích hình chữ nhật”

Nhập chiều dài và chiều rộng, tính chu vi và diện tích hình chữ nhật.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhập bán kính, tính chu vi và diện tích hình tròn (lấy π ≈ 3.14).

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhập độ dài đáy và chiều cao tương ứng, tính diện tích tam giác.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

Nhập đáy lớn, đáy nhỏ và chiều cao, tính diện tích hình thang.

Xem lời giải

Vui lòng liên hệ tác giả (thông tin ở cuối trang) để mua bộ bài giải và code. Xin cảm ơn.

  • Thêm bước kiểm tra dữ liệu nhập vào (ví dụ số nhập phải lớn hơn 0 mới tính chu vi/diện tích), dùng nếu <> thì ... nếu không thì :: control bọc quanh toàn bộ phần tính toán.
  • Gói mỗi bài toán thành một khối tự tạo nhận tham số (ví dụ tính diện tích hình tròn (bán kính) :: custom) để gọi lại nhiều lần không cần chép code.
  • Dùng danh sách để lưu nhiều kết quả liên tiếp (ví dụ tính tổng nhiều bộ số mà không cần chạy lại chương trình) - xem thêm ở bài Danh sách.
  • Viết thêm bài tính chu vi tam giác khi biết đủ 3 cạnh, hoặc tính diện tích tam giác theo công thức Heron (khi chỉ biết 3 cạnh, không biết chiều cao).

Thầy cô và các em muốn mua bộ bài giải và code của các bài tập trong chuyên đề này vui lòng liên hệ tác giả qua Zalo 0972465159 hoặc Facebook. Xin cảm ơn.