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… Mỗi bài đều có đề bài và lời giải chi tiết.

Bạn có thể tải file .pdf ở đây: Giải toán với Scratch

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 gán giá trị tuyệt đối (ghi đè giá trị cũ), còn thay đổi 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 để 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 <điều kiện> 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
khi bấm vào @greenFlag
hỏi [Bạn tên là gì?] và đợi
đặt [tên v] thành (trả lời)
nói (kết hợp [Xin chào, ] (tên))

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

Xem lời giải
khi bấm vào @greenFlag
hỏi [Nhập số thứ nhất:] và đợi
đặt [số 1 v] thành (trả lời)
hỏi [Nhập số thứ hai:] và đợi
đặt [số 2 v] thành (trả lời)
đặt [tổng v] thành ((số 1) + (số 2))
nói (kết hợp [Tổng là: ] (tổng))

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

Xem lời giải
khi bấm vào @greenFlag
hỏi [Nhập số thứ nhất:] và đợi
đặt [số 1 v] thành (trả lời)
hỏi [Nhập số thứ hai:] và đợi
đặt [số 2 v] thành (trả lời)
đặt [hiệu v] thành ((số 1) - (số 2))
nói (kết hợp [Hiệu là: ] (hiệu))

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

Xem lời giải
khi bấm vào @greenFlag
hỏi [Nhập số thứ nhất:] và đợi
đặt [số 1 v] thành (trả lời)
hỏi [Nhập số thứ hai:] và đợi
đặt [số 2 v] thành (trả lời)
đặt [tích v] thành ((số 1) * (số 2))
nói (kết hợp [Tích là: ] (tích))

Nhập 2 số nguyên, tính và in 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
khi bấm vào @greenFlag
hỏi [Nhập số bị chia:] và đợi
đặt [số 1 v] thành (trả lời)
hỏi [Nhập số chia:] và đợi
đặt [số 2 v] thành (trả lời)
đặt [thương v] thành ((số 1) / (số 2))
đặt [số dư v] thành ((số 1) chia lấy dư (số 2))
nói (kết hợp [Thương: ] (thương)) trong (1.5) giây
nói (kết hợp [Số dư: ] (số dư)) trong (1.5) giây

/ cho phép chia có phần thập phân, còn chia lấy dư chỉ lấy phần dư nguyên - hai khối này bổ sung cho nhau khi cần cả thương lẫn số dư.

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

Xem lời giải
khi bấm vào @greenFlag
hỏi [Nhập số thứ nhất:] và đợi
đặt [số 1 v] thành (trả lời)
hỏi [Nhập số thứ hai:] và đợi
đặt [số 2 v] thành (trả lời)
hỏi [Nhập số thứ ba:] và đợi
đặt [số 3 v] thành (trả lời)
đặt [trung bình v] thành ((((số 1) + (số 2)) + (số 3)) / (3))
nói (kết hợp [Trung bình cộng: ] (trung bình))

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
khi bấm vào @greenFlag
hỏi [Nhập tổng số phút:] và đợi
đặt [tổng phút v] thành (trả lời)
đặt [phút dư v] thành ((tổng phút) chia lấy dư (60))
đặt [giờ v] thành (((tổng phút) - (phút dư)) / (60))
nói (kết hợp [Số giờ: ] (giờ)) trong (1.5) giây
nói (kết hợp [Số phút dư: ] (phút dư)) trong (1.5) giây

Tính phút dư trước rồi lấy tổng phút trừ đi phần dư đó mới chia cho 60 - đảm bảo phép chia luôn ra đúng số nguyên (không bị lẻ thập phân) mà không cần khối làm tròn.

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

Xem lời giải
khi bấm vào @greenFlag
hỏi [Nhập năm hiện tại:] và đợi
đặt [năm hiện tại v] thành (trả lời)
hỏi [Nhập năm sinh:] và đợi
đặt [năm sinh v] thành (trả lời)
đặt [tuổi v] thành ((năm hiện tại) - (năm sinh))
nói (kết hợp [Tuổi của bạn là: ] (tuổi))

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
khi bấm vào @greenFlag
hỏi [Nhập một số nguyên:] và đợi
đặt [n v] thành (trả lời)
nếu <((n) chia lấy dư (2)) = (0)> thì
nói [Đây là số chẵn]
nếu không thì
nói [Đây là số lẻ]

(n) chia lấy dư (2) = 0 đúng khi và chỉ khi n chia hết cho 2 - đây là cách kiểm tra chẵn/lẻ dùng được cho mọi số nguyê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
khi bấm vào @greenFlag
hỏi [Nhập một số:] và đợi
đặt [n v] thành (trả lời)
nếu <(n) > (0)> thì
nói [Số dương]
nếu không thì
nếu <(n) < (0)> thì
nói [Số âm]
nếu không thì
nói [Số 0]

Nhập 2 số, tìm và in ra số lớn hơn.

Xem lời giải
khi bấm vào @greenFlag
hỏi [Nhập số thứ nhất:] và đợi
đặt [số 1 v] thành (trả lời)
hỏi [Nhập số thứ hai:] và đợi
đặt [số 2 v] thành (trả lời)
nếu <(số 1) > (số 2)> thì
nói (kết hợp [Số lớn nhất là: ] (số 1))
nếu không thì
nói (kết hợp [Số lớn nhất là: ] (số 2))

Nhập 3 số, tìm và in ra số lớn nhất.

Xem lời giải

Dùng một biến max lưu tạm số lớn nhất đã thấy: khởi tạo bằng số đầu tiên, rồi lần lượt so sánh với từng số còn lại, thấy số nào lớn hơn thì cập nhật lại max.

khi bấm vào @greenFlag
hỏi [Nhập số thứ nhất:] và đợi
đặt [số 1 v] thành (trả lời)
hỏi [Nhập số thứ hai:] và đợi
đặt [số 2 v] thành (trả lời)
hỏi [Nhập số thứ ba:] và đợi
đặt [số 3 v] thành (trả lời)
đặt [max v] thành (số 1)
nếu <(số 2) > (max)> thì
đặt [max v] thành (số 2)
end
nếu <(số 3) > (max)> thì
đặt [max v] thành (số 3)
end
nói (kết hợp [Số lớn nhất là: ] (max))

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
khi bấm vào @greenFlag
hỏi [Nhập năm:] và đợi
đặt [năm v] thành (trả lời)
nếu <<<((năm) chia lấy dư (4)) = (0)> và <không phải <((năm) chia lấy dư (100)) = (0)>>> hoặc <((năm) chia lấy dư (400)) = (0)>> thì
nói [Năm nhuận]
nếu không thì
nói [Năm không nhuậ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
khi bấm vào @greenFlag
hỏi [Nhập điểm trung bình:] và đợi
đặt [điểm v] thành (trả lời)
nếu <(điểm) > (8)> thì
nói [Xếp loại: Giỏi]
nếu không thì
nếu <(điểm) > (6.5)> thì
nói [Xếp loại: Khá]
nếu không thì
nếu <(điểm) > (5)> thì
nói [Xếp loại: Trung bình]
nếu không thì
nói [Xếp loại: Yếu]

Các mốc điểm ở đây lấy đơn giản là “lớn hơn” để dễ hình dung - đề thi thật có thể yêu cầu mốc chính xác hơn (ví dụ ≥ 8), khi đó đổi > thành không phải <... < (8)> hoặc dùng thêm khối so sánh phù hợp.

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
khi bấm vào @greenFlag
hỏi [Nhập đơn giá:] và đợi
đặt [đơn giá v] thành (trả lời)
hỏi [Nhập số lượng:] và đợi
đặt [số lượng v] thành (trả lời)
đặt [tổng tiền v] thành ((đơn giá) * (số lượng))
nếu <(số lượng) > (4)> thì
đặt [tổng tiền v] thành ((tổng tiền) - (((tổng tiền) * (10)) / (100)))
end
nói (kết hợp [Số tiền phải trả: ] (tổng tiền))

(số lượng) > (4) tức là “từ 5 trở lên” - giống cách viết mốc điểm ở Bài 14. Giảm giá được tính bằng 10% của tổng tiền ban đầu, rồi trừ ngược lại vào tổng tiền.

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

Xem lời giải
khi bấm vào @greenFlag
hỏi [Đếm đến số:] và đợi
đặt [n v] thành (trả lời)
đặt [i v] thành (1)
lặp lại cho đến khi <(i) > (n)>
nói (i) trong (0.3) giây
thay đổi [i v] một lượng (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
khi bấm vào @greenFlag
hỏi [Đếm ngược từ số:] và đợi
đặt [n v] thành (trả lời)
đặt [i v] thành (n)
lặp lại cho đến khi <(i) < (1)>
nói (i) trong (0.3) giây
thay đổi [i v] một lượng (-1)

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

Xem lời giải
khi bấm vào @greenFlag
hỏi [Nhập n:] và đợi
đặt [n v] thành (trả lời)
đặt [tổng v] thành (0)
đặt [i v] thành (1)
lặp lại cho đến khi <(i) > (n)>
thay đổi [tổng v] một lượng (i)
thay đổi [i v] một lượng (1)
end
nói (kết hợp [Tổng từ 1 đến n: ] (tổng))

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
khi bấm vào @greenFlag
hỏi [Nhập n:] và đợi
đặt [n v] thành (trả lời)
đặt [tổng v] thành (0)
đặt [i v] thành (1)
lặp lại cho đến khi <(i) > (n)>
nếu <((i) chia lấy dư (2)) = (0)> thì
thay đổi [tổng v] một lượng (i)
end
thay đổi [i v] một lượng (1)
end
nói (kết hợp [Tổng các số chẵn: ] (tổng))

Chỉ cộng i vào tổng khi i là số chẵn - tái sử dụng đúng cách kiểm tra chẵn/lẻ ở Bài 9, đặt vào bên trong vòng lặp.

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
khi bấm vào @greenFlag
hỏi [Nhập n:] và đợi
đặt [n v] thành (trả lời)
đặt [đếm v] thành (0)
đặt [i v] thành (1)
lặp lại cho đến khi <(i) > (n)>
nếu <((i) chia lấy dư (2)) = (0)> thì
thay đổi [đếm v] một lượng (1)
end
thay đổi [i v] một lượng (1)
end
nói (kết hợp [Số lượng số chẵn: ] (đếm))

Giống Bài 19 nhưng đếm số lần (thay đổi ... một lượng (1)) thay vì cộng dồn giá trị - hai biến thể này (đếm và tính tổng) sẽ gặp lại rất nhiều trong các bài duyệt danh sách sau này.

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

Xem lời giải
khi bấm vào @greenFlag
hỏi [Nhập n để tính n!:] và đợi
đặt [n v] thành (trả lời)
đặt [giai thừa v] thành (1)
đặt [i v] thành (1)
lặp lại cho đến khi <(i) > (n)>
đặt [giai thừa v] thành ((giai thừa) * (i))
thay đổi [i v] một lượng (1)
end
nói (kết hợp [n! = ] (giai thừa))

giai thừa khởi tạo bằng 1 (không phải 0, vì đây là tích dồn chứ không phải tổng dồn) rồi nhân dần với từng số từ 1 đến 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

Số nguyên tố là số chỉ chia hết cho 1 và chính nó - cách kiểm tra đơn giản nhất: thử chia N cho lần lượt từng số từ 2 đến N - 1, hễ có một số chia hết thì N không phải số nguyên tố.

khi bấm vào @greenFlag
hỏi [Nhập một số nguyên (lớn hơn 1):] và đợi
đặt [n v] thành (trả lời)
đặt [là số nguyên tố v] thành (1)
đặt [i v] thành (2)
lặp lại cho đến khi <(i) = (n)>
nếu <((n) chia lấy dư (i)) = (0)> thì
đặt [là số nguyên tố v] thành (0)
end
thay đổi [i v] một lượng (1)
end
nếu <(là số nguyên tố) = (1)> thì
nói [Đây là số nguyên tố]
nếu không thì
nói [Đây không phải số nguyên tố]

Biến là số nguyên tố đóng vai trò một cờ đánh dấu (flag): khởi tạo là 1 (coi như đúng), chỉ chuyển thành 0 khi tìm được một ước số - và sẽ giữ nguyên 0 dù các vòng lặp sau còn tìm thấy thêm ước khác.

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

Coi số vừa nhập như một chuỗi ký tự, duyệt qua từng ký tự bằng ký tự thứ (i) của chuỗi, rồi cộng dồn - Scratch tự hiểu mỗi ký tự số đó là một con số khi cộng vào biến.

khi bấm vào @greenFlag
hỏi [Nhập một số nguyên dương:] và đợi
đặt [số v] thành (trả lời)
đặt [tổng chữ số v] thành (0)
đặt [i v] thành (1)
lặp lại cho đến khi <(i) > (độ dài của (số))>
thay đổi [tổng chữ số v] một lượng (ký tự thứ (i) của chuỗi (số))
thay đổi [i v] một lượng (1)
end
nói (kết hợp [Tổng các chữ số: ] (tổng chữ số))

Nhập một số N, in ra bảng nhân của N từ 1 đến 10 (N × 1, N × 2, …, N × 10).

Xem lời giải
khi bấm vào @greenFlag
hỏi [Nhập một số để in bảng nhân:] và đợi
đặt [n v] thành (trả lời)
đặt [i v] thành (1)
lặp lại cho đến khi <(i) > (10)>
đặt [kết quả v] thành ((n) * (i))
nói (kết hợp (kết hợp (kết hợp (kết hợp (n) [ x ]) (i)) [ = ]) (kết quả)) trong (0.5) giây
thay đổi [i v] một lượng (1)

Ghép chuỗi “n x i = kết quả” cần 4 lần kết hợp lồng nhau vì mỗi khối kết hợp chỉ nối được 2 phần - nối dần từng mảnh nhỏ (n, ” x ”, i, ” = ”, kết quả) lại với nhau từ trái sang phải.

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
khi bấm vào @greenFlag
đặt [số bí mật v] thành (lấy ngẫu nhiên từ (1) đến (100))
đặt [đoán v] thành (0)
lặp lại cho đến khi <(đoán) = (số bí mật)>
hỏi [Đoán một số từ 1 đến 100:] và đợi
đặt [đoán v] thành (trả lời)
nếu <(đoán) < (số bí mật)> thì
nói [Số bí mật lớn hơn số bạn vừa đoán!]
nếu không thì
nếu <(đoán) > (số bí mật)> thì
nói [Số bí mật nhỏ hơn số bạn vừa đoán!]
end
end
end
nói [Chúc mừng, bạn đã đoán đúng!]

lặp lại cho đến khi <(đoán) = (số bí mật)> tự lặp lại việc hỏi cho tới khi trúng - kết hợp cả ngẫu nhiên, vòng lặp và điều kiện đã học ở Phần 1 vào một bài duy nhất.

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
khi bấm vào @greenFlag
hỏi [Nhập độ dài cạnh hình vuông:] và đợi
đặt [cạnh v] thành (trả lời)
đặt [chu vi v] thành ((cạnh) * (4))
đặt [diện tích v] thành ((cạnh) * (cạnh))
nói (kết hợp [Chu vi: ] (chu vi)) trong (1.5) giây
nói (kết hợp [Diện tích: ] (diện tích)) trong (1.5) giây

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
khi bấm vào @greenFlag
hỏi [Nhập chiều dài:] và đợi
đặt [dài v] thành (trả lời)
hỏi [Nhập chiều rộng:] và đợi
đặt [rộng v] thành (trả lời)
đặt [chu vi v] thành (((dài) + (rộng)) * (2))
đặt [diện tích v] thành ((dài) * (rộng))
nói (kết hợp [Chu vi: ] (chu vi)) trong (1.5) giây
nói (kết hợp [Diện tích: ] (diện tích)) trong (1.5) giây

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
khi bấm vào @greenFlag
hỏi [Nhập bán kính:] và đợi
đặt [bán kính v] thành (trả lời)
đặt [chu vi v] thành (((2) * (3.14)) * (bán kính))
đặt [diện tích v] thành (((3.14) * (bán kính)) * (bán kính))
nói (kết hợp [Chu vi: ] (chu vi)) trong (1.5) giây
nói (kết hợp [Diện tích: ] (diện tích)) trong (1.5) giây

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
khi bấm vào @greenFlag
hỏi [Nhập độ dài đáy:] và đợi
đặt [đáy v] thành (trả lời)
hỏi [Nhập chiều cao:] và đợi
đặt [chiều cao v] thành (trả lời)
đặt [diện tích v] thành (((đáy) * (chiều cao)) / (2))
nói (kết hợp [Diện tích tam giác: ] (diện tích))

Muốn tính chu vi tam giác cần biết đủ cả 3 cạnh (không chỉ đáy và chiều cao) - xem đây là một bài mở rộng thêm bên dưới.

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
khi bấm vào @greenFlag
hỏi [Nhập đáy lớn:] và đợi
đặt [đáy lớn v] thành (trả lời)
hỏi [Nhập đáy nhỏ:] và đợi
đặt [đáy nhỏ v] thành (trả lời)
hỏi [Nhập chiều cao:] và đợi
đặt [chiều cao v] thành (trả lời)
đặt [diện tích v] thành ((((đáy lớn) + (đáy nhỏ)) * (chiều cao)) / (2))
nói (kết hợp [Diện tích hình thang: ] (diện tích))

Công thức diện tích hình thang - (đáy lớn + đáy nhỏ) × chiều cao ÷ 2 - tổng quát hơn công thức hình chữ nhật ở Bài 27 (khi đáy lớn = đáy nhỏ, hình thang trở thành hình chữ nhật).

  • 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 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)) để 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).