Vòng lặp FOR
Vòng FORNguyễn Hiếu CườngVề sự hoạt động của cấu trúc lặp for Pascal là ngôn ngữ lập trình được dạy và sử dụng rộng rãi trong các trường học hiện nay. For là một trong ba cấu trúc lặp của ngôn ngữ Pascal , rất quen thuộc đối với những ai đã và đang lập trình bằng ngôn ngữ này. Tuy nó thật đơn giản nhưng qua kinh nghiệm giảng dạy tôi thấy không phải bạn học sinh nào cũng hiểu được rõ ràng cách thực hiện của cấu trúc đó. Ta hãy xem một số ví dụ: Ví dụ 1: n:=10; for i:= 1 to n do begin n:= 5; write (i:4); end; Đoạn chương trình này sẽ in ra màn hình kết quả là:1 2 3 4 5 6 7 8 9 10 Lý do là: Trình biên dịch chỉ xác định giá trị cuối (n) đúng một lần khi bắt đầu vào vòng lặp, vì thế trong quá trình lặp, việc thay đổi giá trị cuối không có ý nghĩa gì. Ví dụ 2a: n:=10; For i:=1 to 10 do begin write (i:4); i:=i+1; end; Đoạn chương trình này sẽ in ra màn hình kết quả là: 1 3 5 7 9 Ví dụ 2b: n:=10; for i:=1 to 10 do begin write(i:4); i:=i+2; end; Đoạn chương trình này sẽ lặp vô hạn.Hai đoạn chương trình 2a và 2b gần như giống nhau hoàn toàn, tại sao kết quả lại khác nhau nhiều như vậy?Rất nhiều bạn học sinh lý giải sự hoạt động của cấu trúc for thường cho rằng: for sẽ thực hiện chừng nào biến điều khiển (i) ≤ giá trị cuối (n). Nhưng thực chất lại là: for sẽ hoạt động đến khi biến điều khiển = giá trị cuối + 1 (trong trường hợp kiểu của biến điều khiển là nguyên, các kiểu logic hay ký tự cũng lý luận tương tự). Sự khác nhau này xem ra không có gì là lớn, nhưng trong nhiều trường hợp lại làm chúng ta không thể lý giải được tai sao chương trình cho kết quả như vậy. Trong hai ví dụ trên, chúng ta có thể dễ dàng thấy được kết quả của đoạn chương trình 2a nhưng còn đoạn 2b thì sao lại lặp vô hạn? Lý do chính là giá trị của i không bao giờ bằng 11 được.Bạn hãy thử làm và tìm hiểu thêm nhiều điều "kỳ quái" khác nữa. Và có lẽ những điều đó cũng làm cho việc học lập trình của chúng ta trở nên thú vị hơn. Chúc các bạn thành công và mong nhận được các ý kiến trao đổi. . Vòng FORNguyễn Hiếu CườngVề sự hoạt động của cấu trúc lặp for Pascal là ngôn ngữ lập trình được dạy và sử. một lần khi bắt đầu vào vòng lặp, vì thế trong quá trình lặp, việc thay đổi giá trị cuối không có ý nghĩa gì. Ví dụ 2a: n:=10; For i:=1 to 10 do begin