Tổng 1 đến n
Mục tiêu: Nhập n, mèo cộng dồn 1 + 2 + … + n bằng vòng lặp, rồi đối chiếu với công thức n × (n + 1) / 2.
Em sẽ học gì
- Nội dung trong bài: thuật toán cộng dồn bằng vòng lặp.
- Đối chiếu kết quả với công thức toán học.
- Và kiểm thử với nhiều giá trị của n.

Bài làm như sau. Chọn nhóm Biến số, bấm Tạo một biến, đặt tên là n: cộng tới số nào. Tạo biến i: số đang được cộng. Biến tong: tổng tính tới lúc này. Và biến ct: kết quả tính bằng công thức.

Thuật toán: 1. Nhập n. 2. tong = 0, i = 0. 3. Lặp n lần: i tăng 1, tong tăng thêm i. 4. Xuất tong.
Theo sơ đồ: nhập n, rồi khởi tạo tong và i bằng 0. Lặp n lần: i tăng 1, rồi tong tăng thêm i. Lặp xong thì tính ct theo công thức, nói tổng, và so sánh hai kết quả.

Các bước thực hiện, chọn nhóm Sự kiện, kéo khối: Khi bấm vào cờ xanh,

Bước một. Chọn nhóm Cảm biến, gắn khối hỏi và đợi, gõ: Nhập n,

rồi khối đặt biến thành, trong nhóm Biến số, chọn n,

thả khối câu trả lời, trong nhóm Cảm biến, vào ô giá trị.

Bước hai. Chọn nhóm Biến số, gắn khối đặt biến thành, chọn tong, giữ số 0,

thêm một khối đặt biến thành, chọn i, cũng giữ số 0.
Giải thích: Đây là bước khởi tạo. Nếu quên đặt lại tong và i về 0, lần chạy sau sẽ cộng tiếp vào kết quả cũ.

Bước ba. Chọn nhóm Điều khiển, gắn khối lặp lại,

số lần lặp không gõ số, mà thả biến n vào: người dùng nhập bao nhiêu thì lặp bấy nhiêu lần.

Bên trong, khối thay đổi biến một lượng, chọn i, giữ số 1: i tăng 1.

Thêm một khối thay đổi biến nữa, chọn tong,

ô lượng thả biến i: tong tăng thêm đúng bằng i.
Giải thích: Đây là phép cộng dồn: tong mới bằng tong cũ cộng i. Lần lặp thứ nhất cộng 1, lần thứ hai cộng 2, lần thứ ba cộng 3, cứ thế tới n.

Để nhìn rõ từng bước, tạm thêm khối đợi, trong nhóm Điều khiển, vào cuối vòng lặp, gõ 0 chấm 5 giây. Ta vừa làm vòng lặp cộng dồn: lặp n lần, mỗi lần i tăng 1, rồi tong tăng thêm i.

Chạy thử: bấm cờ xanh, nhập 5. Nhìn hai ô i và tong trên sân khấu: i lên 1, 2, 3, 4, 5, còn tong lần lượt là 1, 3, 6, 10, 15.

Đã hiểu cách chạy, ta bỏ khối đợi đi cho nhanh: bấm chuột phải vào khối đợi, chọn Xoá khối. Nhà toán học Gauss có một công thức tính tổng này: n nhân với n cộng 1, rồi chia 2. Ta tính thêm bằng công thức để đối chiếu.

Bên dưới vòng lặp, thêm khối đặt biến thành, chọn ct.

Dựng từ trong ra ngoài. Lấy khối phép cộng, trong nhóm Các phép toán, đặt ra chỗ trống, ô bên phải gõ 1,

ô bên trái thả biến n.

Lấy khối phép nhân, đặt bên dưới, kéo khối n cộng 1 vào ô bên phải,

ô bên trái thả biến n.

Lấy khối phép chia, ô bên phải gõ 2, kéo khối phép nhân vào ô bên trái, rồi kéo cả biểu thức vào khối đặt ct.

Bước bốn, xuất kết quả. Chọn nhóm Hiển thị, gắn khối nói trong 2 giây,

lấy khối kết hợp, trong nhóm Các phép toán, đặt ra chỗ trống, ô thứ nhất gõ: Tổng, hai chấm,

ô thứ hai thả biến tong, rồi kéo khối kết hợp vào ô lời nói.

Cuối cùng, so sánh hai cách tính. Chọn nhóm Điều khiển, gắn khối nếu thì, nếu không thì,

điều kiện là phép so sánh bằng, dựng ở chỗ trống,

bên phải thả biến ct,

bên trái thả biến tong, rồi kéo vào ô điều kiện.

Nhánh trên: khối nói, gõ: Công thức cũng cho kết quả đó.

Nhánh nếu không thì: khối nói, gõ: Hai cách cho kết quả khác nhau! Ta vừa làm: tính ct theo công thức, nói tổng, rồi so sánh tong với ct.

Kiểm thử: nhập 10. Tổng là 55, và công thức cũng cho 55. Nhập 100: tổng là 5050. Vòng lặp phải làm 100 phép cộng, còn công thức chỉ cần 3 phép tính, dù n lớn đến đâu. Nhập 1: vòng lặp chạy đúng một lần, tổng là 1. Nhập 0: vòng lặp không chạy lần nào, tổng là 0, công thức cũng ra 0. Chương trình không bị lỗi.

Các khối mới trong bài
- Khối lặp lại với số lần là biến: số lần lặp lấy từ giá trị của biến lúc vòng lặp bắt đầu.
Kỹ thuật lập trình đã học
- Về kỹ thuật lập trình, bài này ta học: thuật toán: viết ra từng bước trước khi kéo khối.
- Khởi tạo và cộng dồn: đặt tong bằng 0 trước vòng lặp, trong vòng lặp tong tăng thêm i.
- Một bài toán có thể có nhiều cách giải: vòng lặp cần n phép cộng, công thức chỉ cần 3 phép tính.
- Và kiểm thử: thử n nhỏ, n lớn, và n bằng 0.
Bài tập
Bài tập: sửa chương trình để tính tổng các số lẻ nhỏ hơn n. Rồi tính tổng bình phương: 1 nhân 1, cộng 2 nhân 2, cho tới n nhân n.