1.1. Các hoạt động lặp với số lần chưa biết trước
Long liên lạc với Trang vào một ngày chủ nhật nhưng không thành công. Sau đó, Long quyết định thử liên lạc thêm một lần. Do đó, Long phải liên lạc hai lần. Trong một ngày khác, Long quyết định liên lạc với Trang liên tục sau mỗi 10 phút cho đến khi có ai đó trả lời.
Điều kiện: Nếu có ai đó nhấc điện thoại thì hoạt động lặp sẽ dừng lại.
Cần thêm bao nhiêu số tự nhiên đầu tiên để tổng Tn vượt qua mức 1000 nếu cộng lần lượt n số tự nhiên đầu tiên (n = 1, 2, 3,…) Và đạt giá trị nhỏ nhất?
Nếu tổng Tn vượt quá 1000, vòng lặp sẽ kết thúc.
Trình bày thuật toán bằng việc liệt kê các bước.
- Bước 1. S \(\leftarrow\) 0, n \(\leftarrow\) 0.
- Bước 2. Nếu S ≤ 1000, n \(\leftarrow\) n + 1; ngược lại chuyển tới Bước 4.
- Bước 3. S \(\leftarrow\) S + n và quay lại Bước 2.
- Kết thúc thuật giải. In ra kết quả: S và n là hai số nguyên nhỏ nhất mà S lớn hơn 1000. Thực hiện Bước 4.
Miêu tả thuật toán bằng biểu đồ khối.
Hình 1. Miêu tả phương pháp tính toán bằng biểu đồ khối.
- Tùy thuộc vào một điều kiện nhất định, việc tái lặp một tập hợp hoạt động sẽ được thực hiện với số lần chưa biết trước và chỉ dừng lại khi điều kiện không đáp ứng được nữa.
- Có thể dùng cấu trúc câu: Lặp với số lần không xác định trước, để hướng dẫn cho máy tính thực hiện các thao tác lặp lại.
1.2. Ví dụ về lệnh lặp với số lần chưa biết trước
Trong khi làm do;
Trong đó:.
- Trong khi đó, từ khóa do được sử dụng trong lập trình.
- Thông thường, điều kiện là một phép đối chiếu.
- Câu chỉ thị có thể là câu đơn giản hoặc câu ghép.
- Bước đầu tiên là kiểm tra các điều kiện.
- Nếu điều kiện không đúng, câu lệnh sẽ không được thực hiện và việc lặp lại câu lệnh sẽ kết thúc. Thực hiện câu lệnh và quay trở lại Bước 1 khi điều kiện đúng.
While a.
- Từ khóa while và do được sử dụng trong lập trình.
- Giới hạn là a không lớn hơn b (bao gồm cả a bằng b).
- Cú pháp a:=a+1 là một câu lệnh đơn.
Trong khi a>b thì làm.
Begin.
Write(‘a>b’);.
A:=a-1;.
End;.
- Từ khóa while và do được sử dụng trong lập trình.
- Điều kiện là a lớn hơn b (bao gồm phép so sánh).
- Lệnh được ghép bao gồm Write(‘a>b’) và a:=a-1.
Tạo lệnh để hiển thị 5 số nguyên liên tiếp, bắt đầu từ số 1.
Dùng vòng lặp while…Do để thực hiện lặp lại một hành động nhiều lần, số lần lặp không được xác định trước.
Ví dụ về đoạn chương trình:
N:=1.
While n.
Begin.
Writeln(n);.
N:=n+1;.
End;.
1.3. Lặp vô hạn – Lỗi lập trình cần tránh
Khi viết chương trình sử dụng cấu trúc lặp cần chú ý tránh tạo nên vòng lặp không bao giờ kết thúc.
Ví dụ, đoạn mã dưới đây sẽ tiếp tục chạy mãi mãi:
Var a:integer;.
Begin.
A:=5;.
While a.
Writeln(‘A’);.
End.
- Trong chương trình này, biến a luôn giữ nguyên giá trị 5 và điều kiện để hiển thị ‘A’ cũng luôn được thực hiện.
- Để tránh rơi vào vòng lặp vô tận, khi thực hiện vòng lặp, cần thay đổi điều kiện trong câu lệnh để chuyển giá trị của điều kiện từ đúng sang sai sớm hoặc muộn. Vì vậy, cần thay đổi điều kiện trong câu lệnh để chuyển giá trị của điều kiện từ đúng sang sai khi thực hiện vòng lặp.