VinaOnline.net

Cấu trúc lặp với số lần chưa biết trước : Chi tiết vòng lặp While … do

Cấu trúc lặp với số lần chưa biết trước là thực hiện vòng lặp While … do trong ngôn ngữ lập trình Pascal. Cấu trúc lặp với số lần chưa biết trước thực hiện khá giống vòng lặp For nhưng khác biệt lớn nhất là xét điều kiện trước khi thực hiện câu lệnh (nhiều câu lệnh).

I. Cấu trúc lặp với số lần chưa biết trước : Công dụng

Thực hiện lặp với số lần chưa xác định. Số lần này được thực hiện trong chương trình đến khi nó thỏa điều kiện (do bạn đặt ra).

II. Cấu trúc lặp với số lần chưa biết trước : Cú pháp

 Cấu trúc lặp với số lần chưa biết trước : Mẫu vòng lặp While ... do

Cấu trúc lặp với số lần chưa biết trước : Mẫu vòng lặp While … do

While <Điều kiện> do

<Câu lệnh>

Điều kiệnmột biểu thức so sánh. Có thể sử dụng điều kiện ghép (kết hợp AND hoặc OR).

Câu lệnh là thực hiện một công việc nào đó. Nếu thực hiện nhiều câu lệnh sau While … do thì phải bao bởi cặp Begin … End. Thông thường, sau While … do thực hiện ít nhất 2 câu lệnh:

+ Một hoặc nhiều câu lệnh thực hiện theo yêu cầu người lập trình.

+ Một câu lệnh tác động đến vòng lặp (dùng để dừng (thoát) vòng lặp While … do).

III. Cấu trúc lặp với số lần chưa biết trước : Ví dụ

1. Ví dụ 1

Tính tổng S=1+2+3+4+5

– Thực hiện bởi vòng For

For i:=1 to 5 do

s:=s+i;

– Thực hiện bởi vòng While … do

Program tong_vd1;

Uses Crt;

Var i, n: Integer;

s: Integer;

Begin

s:=0;

i:=1;

While i<=5 do

Begin

       s:=s+i;

i:=i+1;

End;

Writeln(‘Tong cua day’, s);

Readln;

End.

– Phân tích:

+ Xét về mặt hình thức, chương trình viết bằng While … do dài hơn viết bằn For (tham khảo phần in đậm).

+ Phải khởi tạo giá trị tham gia điều kiện (i:=1).

+ Tăng giá trị để thoát vòng lặp (i:=i+1), biến i không tự động tăng như For.

2. Ví dụ 2

Tính tổng S=1+1/2+1/3+…+1/n khi 1/n<=0.1

Phân tích:

– n bằng bao nhiêu khi thực hiện chương trình này?

– Trong vòng lặp For, bạn biết n (đặt trong For hoặc nhập từ bàn phím). Tuy nhiên trong trường hợp này, bạn không xác định được. Vì vậy, phải thực hiện While … do.

Program tong_vd2;

Uses Crt;

Var i, n: Integer;

s: Real;

Begin

s:=0;

i:=1;

While 1/i<=0.1 do

Begin

       s:=s+1/i;

i:=i+1;

End;

Writeln(‘Tong cua day’, s:2:1);

Readln;

End.

3. Ví dụ 3

Tính giai thừa của một số lớn nhất, với kết quả S<=1000

Phân tích:

– n bằng bao nhiêu khi thực hiện chương trình này?

– Điều kiện trong chương trình này không phải là n mà là S. Nhưng n vẫn được sử dụng (biến i đại diện cho n).

Program tong_vd3;

Uses Crt;

Var i, n: Integer;

s: Integer;

Begin

s:=1;

i:=1;

While s<=1000 do

Begin

       s:=s*i;

i:=i+1;

End;

Writeln(‘Tong cua day’, s);

Readln;

End.

– Chương trình này vẫn có giá trị khởi tạo (s:=1) và giá trị để thoát vòng lặp (s:=s*i).

IV. Cấu trúc lặp với số lần chưa biết trước : Một số lưu ý

– Những chương trình viết được bằng For thì viết được bằng While … do.

– Giá trị để thoát vòng lặp While .. do không nhất thiết phải tăng. Giảm vẫn được tùy theo điều kiện.

– Biến i trong vòng lặp While … do không nhất thiết tăng / giảm 1 đơn vị mà có thể tăng / giảm nhiều đơn vị. Ví dụ: i:=i+2 hoặc i:=i+5,…

– Sử dụng vòng lặp While … do phải luôn luôn ghi nhớ: Giá trị khởi tạo và Tăng / Giảm giá trị tham gia điều kiện để thoát vòng lặp.

Lời kết

Cấu trúc lặp với số lần chưa biết trước là dạng cấu trúc thứ hai so với Cấu trúc lặp với số lần biết trước. Nếu bạn sử dụng tốt vòng lặp For thì cấu trúc lặp với số lần chưa biết trước hay còn gọi vòng lặp While … do sẽ thực hiện tương tự. Vinaonline.net chúc bạn lập trình tốt với cấu trúc này.

Leave a Comment