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”Nhập dữ liệu: hỏi và đợi
Phần tiêu đề “Nhập dữ liệu: hỏi và đợi”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)
Biến: lưu và cập nhật giá trị
Phần tiêu đề “Biến: lưu và cập nhật giá trị”đặ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ố.
Phép toán: số học và so sánh
Phần tiêu đề “Phép toán: số học và so sánh”((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ử.
Điều kiện: nếu … thì (… nếu không)
Phần tiêu đề “Điều kiện: nếu … thì (… nếu không)”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.
Phần 2 - Thực hành: 30 bài toán cơ bản
Phần tiêu đề “Phần 2 - Thực hành: 30 bài toán cơ bản”Nhóm 1: Tính toán số học cơ bản
Phần tiêu đề “Nhóm 1: Tính toán số học cơ bản”Bài 1: Chào hỏi theo tên
Phần tiêu đề “Bài 1: Chào hỏi theo tên”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.
Bài 2: Tính tổng hai số
Phần tiêu đề “Bài 2: Tính tổng hai số”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.
Bài 3: Tính hiệu hai số
Phần tiêu đề “Bài 3: Tính hiệu hai số”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.
Bài 4: Tính tích hai số
Phần tiêu đề “Bài 4: Tính tích hai số”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.
Bài 5: Tính thương và số dư
Phần tiêu đề “Bài 5: Tính thương và số dư”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.
Bài 6: Tính trung bình cộng của ba số
Phần tiêu đề “Bài 6: Tính trung bình cộng của ba số”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.
Bài 8: Tính tuổi
Phần tiêu đề “Bài 8: Tính tuổi”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”Bài 9: Kiểm tra số chẵn/lẻ
Phần tiêu đề “Bài 9: Kiểm tra số chẵn/lẻ”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.
Bài 10: Kiểm tra số dương/âm/bằng 0
Phần tiêu đề “Bài 10: Kiểm tra số dương/âm/bằng 0”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.
Bài 11: Số lớn nhất trong hai số
Phần tiêu đề “Bài 11: Số lớn nhất trong hai số”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.
Bài 12: Số lớn nhất trong ba số
Phần tiêu đề “Bài 12: Số lớn nhất trong ba số”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.
Bài 13: Kiểm tra năm nhuận
Phần tiêu đề “Bài 13: Kiểm tra năm nhuậ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.
Bài 15: Tính tiền mua hàng
Phần tiêu đề “Bài 15: Tính tiền mua hàng”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óm 3: Vòng lặp - đếm và tính tổng
Phần tiêu đề “Nhóm 3: Vòng lặp - đếm và tính tổng”Bài 16: Đếm từ 1 đến N
Phần tiêu đề “Bài 16: Đếm từ 1 đến 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.
Bài 17: Đếm ngược từ N về 1
Phần tiêu đề “Bài 17: Đếm ngược từ N về 1”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.
Bài 18: Tính tổng các số từ 1 đến N
Phần tiêu đề “Bài 18: Tính tổng các số từ 1 đến 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.
Bài 21: Tính giai thừa N!
Phần tiêu đề “Bài 21: Tính giai thừa 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.
Bài 22: Kiểm tra số nguyên tố
Phần tiêu đề “Bài 22: Kiểm tra số nguyên tố”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.
Bài 24: In bảng cửu chương
Phần tiêu đề “Bài 24: In bảng cửu chương”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.
Bài 25: Đoán số bí mật
Phần tiêu đề “Bài 25: Đoán số bí mật”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”Bài 26: Chu vi và diện tích hình vuông
Phần tiêu đề “Bài 26: Chu vi và diện tích hình vuông”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.
Bài 28: Chu vi và diện tích hình tròn
Phần tiêu đề “Bài 28: Chu vi và diện tích hình trò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.
Bài 29: Diện tích tam giác
Phần tiêu đề “Bài 29: Diện tích tam giác”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.
Bài 30: Diện tích hình thang
Phần tiêu đề “Bài 30: Diện tích hình thang”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.
Mở rộng thêm
Phần tiêu đề “Mở rộng thêm”- 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ì :: controlbọ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).
Liên hệ tác giả
Phần tiêu đề “Liên hệ tác giả”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.