Làm quen với Pascal và scratch qua thuật toán cộng dồn, nhân dồn
Cộng dồn, nhân dồn là kĩ thuật đầu tiên các bạn cần phải học trong pascal, C, Scratch hay bất kì một ngôn ngữ lập trình nào khác, đây là thuật toán rất cơ bản và nó được dùng hết sức phổ biến trong suốt chặng đường học lập trình, hãy cùng học tập chia sẻ tìm hiểu về thuật toán cộng dồn, nhân dồn trong pascal và scarch nhé.
Nhắc lại về thuật toán cộng dồn, nhân dồn
Thuật toán cộng dồn:
Khởi động biến lưu "Tổng" = 0; Lặp lại (có điều kiện để thoát vòng lặp) "Tổng" = "Tổng" + "Số hạng"; Tới "Số hạng" tiếp theo; Kết thúc vòng lặp.
Tương tự ta có thuật toán nhân dồn;
Khởi động biến lưu "Tích" = 1; Lặp lại (có điều kiện để thoát vòng lặp) "Tích" = "Tích" * "Thừa số"; Tới "Thừa số" tiếp theo; Kết thúc vòng lặp.
Một điều hết sức khác biệt giữa hai thuật toán này đó là khởi động biến lưu, trong khi cộng dồn khởi động “Tổng” = 0 thì nhân dồn lại khởi động “Tích” = 1. Các bạn thử nghĩ xem tại sao lại thế?
Sau đây mình sẽ minh họa thuật toán cộng dồn để tính tổng các số tự nhiên từ 1 đến n trong pascal và scratch, với n được người dùng nhập vào.
Thuật toán cộng dồn trong pascal để tính tổng các số từ 1 đến n
Dữ liệu vào file: Sum.inp | Dữ liệu ra file: Sum.out |
Chứa số n | Chứa tổng S |
var n,i:word; S:longint;f:text; begin {----Doc file ----} assign(f,'sum.inp'); reset(f); readln(f,n);close(f); {----Tinh S = 1+ 2 +...+n-----} S:=0; for i:=1 to n do S:=S+i; {----Ghi file ----} assign(f,'sum.out'); rewrite(f); write(f,S); close(f); end.
Do mình muốn rèn luyện cho học sinh ngay từ đầu cách nhập xuất từ file vì vậy hầu hết các code mẫu trong Pascal đều như trên hết các bạn nhé.
Thuật toán cộng dồn trong Scratch cho bài toán trên
Ở đây dòng lệnh “lặp lại trả lời lần” tương tự như dòng lệnh “for i:=1 to n do …” trong Pascal, và có một điều khác nữa là trong Pascal biến i đã tự động tăng dần trong vòng lặp, còn ở đây biến i các bạn phải lập trình cho nó tăng thêm 1 qua mỗi vòng lặp qua dòng lệnh ” Thay đổi i một giá trị là 1″.
Dòng lệnh ” Thay đổi S một giá trị là i” tương ứng với lệnh “S:=S+i” trong Pascal.
Các bạn hãy xem chương trình tính tổng từ 1 đến n bằng phương pháp cộng dồn trong scratch thực hiện như thế nào:
Các bạn thấy chương trình trong Scratch hấp dẫn hơn trong Pascal phải không nào, vì vậy mà theo mình các bạn nên học song song giữa Pascal và Scratch để bổ trợ cho nhau, các bạn sẽ thấy thú vị hơn nhiều
Thuật toán nhân dồn thì hoàn toàn tương tự nên mình không viết lại nữa. Các bạn có thể tìm thấy việc áp dụng thuật toán cộng dồn nhân dồn trong rất nhiều các bài toán khác chẳng hạn:
Xin chào và hẹn gặp lại các bạn trong các bài viết sau: Thuật toán kiểm tra số chính phương