Bài 8 - Lặp với số lần chưa biết trước

A. Lý thuyết

✌ Nội dung chính

- Cấu trúc lặp với số lần lặp không xác định trước

- Câu lệnh lặp với số lần chưa biết trước while...do

1. Lệnh lặp với số lần chưa biết trước

Ví dụ 1 : Nếu cộng lần lượt n số tự nhiên đầu tiên (n = 1, 2, 3,...), cần cộng bao nhiêu số tự nhiên đầu tiên để ta nhận được tổng Tn nhỏ nhất lớn hơn 1000?

Kí hiệu S là tổng cần tìm, ta có thuật toán:

   - B1: S ← 0, n ← 0

   - B2: Nếu S ≤ 1000, thì chuyển tới bước 3; ngược lại (S>1000) chuyển tới Bước 4

   - B3: n ← n+1; S ← S + n; và quay lại Bước 2

   - B4: In kết quả: S và n là số tự nhiên nhỏ nhất sao cho S > 1000. Kết thúc thuật toán.

Để viết chương trình chỉ dẫn máy tính thực hiện các hoạt động lặp mà chưa xác định trước được số lần lặp, ta có thể sử dụng câu lệnh có dạng lặp với số lần chưa xác định.

❣ Cú pháp:

while <điều kiện> do <câu lệnh>;

   trong đó:

   + <điều kiện> : thường là 1 phép so sánh

   + <câu lệnh>: có thể là câu lệnh đơn giản hay câu lệnh ghép.

❥Hoạt động. Câu lệnh được thực hiện như sau:

- B1: kiểm tra <điều kiện>

- B2: nếu <điều kiện> SAI, câu lệnh sẽ bị bỏ qua và việc thực hiện lệnh lặp kết thúc. Nếu <điều kiện> ĐÚNG, thực hiện <câu lệnh> và quay lại bước 1.

Kết luận: việc lặp lại một nhóm hoạt động với số lần chưa xác định trước phụ thuộc vào 1 điều kiện cụ thể và chỉ dừng lại khi điều kiện không thỏa mãn.

2. Ví dụ về số lần lặp không biết trước

Ví dụ 3 (SGK): Tính số n và tổng S trong ví dụ 1

Ví dụ 4 (SGK):Để viết chương trình tính tổng T=1+1/2+1/3+...+1/100 ta có thể sử dụng lệnh lặp với số lần lặp cho trước for...do như sau:

Hoặc sử dụng lệnh lặp while...do

    T:=0; i:=1;
   while i <= 100 do begin T:=T+1/i; i:=i+1 end;
   writeln(T);

Qua ví dụ trên, em rút ra nhận xét gì?

3. Lặp vô hạn lần – lỗi lập trình cần tránh (Đọc thêm SGK - Không học)

B. Sản phẩm

✍Các em nộp các file chương trình hoàn chỉnh trong thẻ "Nộp bài" trong website này.

   ➊file chương trình ví dụ 3 (vd3b8.pas) nộp ngay sau kết thúc tiết học này.

   ➋file chương trình ví dụ 4 (vd4b8.pas) sử dụng "while...do" đến hết ngày 30/4/2020.

*Qui ước tên file là vd3b8.pas và vd4b8.pas, hệ thống sẽ tự ghi tên và lớp của em.