Cách viết chương trình pascal với lệnh while do

    • Bài 3: Lệnh lặp While…do

Bài 3: Lệnh lặp While…do

Lệnh này sử dụng khi ta biết trước điều kiện để dừng vòng lặp và có thể chưa biết rõ số lượng phần tử lặpCông thức 

Code:

while (dieu_kien) do

begin;

lenh;

lenh;

……………

end;

Khi dieu_kien là đúng thì vòng lặp thực hiện tiếp
Nếu dieu_kien sai thì vòng lặp dừng lại
Ví dụ 1:
Tính S=1+1/2=1/3+1/4+…
Dừng khi 2-S<0.01
Từ bài này sẽ không đưa code đầy đủ mà chỉ viết code cho phần chính chương trình, các bạn tự thêm các phần như mở đầu Program… , khai báo var và phần kết thúc readln;end. vào nhé

Code:

s=0;

i=1;

while 2-s<0.01 do

begin

s:=s+1/i;

i:=i+1;

end;

Ví dụ 2:
Tìm ước chung lớn nhất của (a,b)
Nhập m,n (tự viết)

Code:

while m<>n do

if m>n them m:=m-n

else m

write(‘UCLN cua 2 so la ‘,m);

Ví dụ 3:
Kiểm tra số n là số nguyên tố

Code:

Program So_nguyen_to;

var integer:n,i;

begin;

write(‘Nhap vao 1 so’);

readln(n);

i=2;

while (n mod i <>0)

i++;

if i>sqrt(n) then write(‘So nguyen to’)

else write(‘Khong la so nguyen to’);

readln;

end.

Repeat…until
Công thức:

Code:

Repeat

lệnh_1;

lệnh_2;

…………….

until (dk_thoat)


- Nếu dk_thoat là sai thì lặp, sai thì thoát khỏi vòng lặp: thực hiện lệnh rồi mới kiểm tra điều kiện
 Ví dụ 1:
Nhập 1 số bất kỳ, nếu là số âm thì nhập tiếp cho tới khi số nhập vào là số dương

Code:

Repeat

write(‘Vao 1 so bat ky’,n);

readln(n);

if (n<0) then write(‘Yeu cau ban nhap lai’);

until n>0;

Ví dụ 2:
Tính 1 + 1/2 + 1/3 + … + 1/n

Code:

write(‘Nhap n=’,n);

readln(n);

s:=0;

i:=1;

repeat

s:=s+1/i;

i:=i+1;

until i>n;

Để kết thúc cho các bài viết về vòng lặp xin có mấy lời gọi là phụ họa thêm để mọi người dễ nhớ về 3 vòng lặp này.

Nếu như coi 1 chương trình máy tính là cuộc đời thì với vòng for mọi người sẽ xuất phát đồng hàng, ai cũng như ai và người ta không thể biết được phía trước mình có những gì, cứ vào vòng for là tiến, những ai không đạt đủ các điều kiện – các lệnh if (nếu có) thì sẽ bị loại dần và rất có thể những con người qua được vòng for này sẽ được tôi luyện rất nhiều và trở nên đứng đắn hơn. Với for bạn có thể biết được chắc chắn có bao nhiêu người cùng đua tranh với mình nhưng lại không rõ đối thủ mạnh yếu ra sao chỉ khi cuộc đua tranh bắt đầu thì mọi việc mới dần ngã ngũ.
Còn với while thì sao, có ít nhất là 1 tiêu chí đặt ra để bạn có thể vào vòng lặp này, nó có thể coi như là mức sàn, mức tối thiểu để bạn đi tiếp trên con đường của mình. Cũng nhờ đó mà bạn thấy được chút ít về các người bạn đồng hành của mình, ít ra thì họ cũng đạt được cái điều kiện tối thiểu nào đó. Với while có thể số lượng là không định trước được, người ta cứ lần lượt xếp hàng để được kiểm tra xem có đạt cái điều kiện tối thiểu không và ai đạt tức thì họ được đi tiếp và những người sau họ cũng phải dừng lại theo họ.
Repeat..until thì sao, tương tự như for bạn sẽ xuất phát mà không có 1 tiêu chí gì ngăn cản cả, cứ đi đi mãi, và số lượng bạn đồng hành cũng có thể là khó đoán trước được. Nhưng cái hàng dài có thể là vô tận này có thể bị chặn đứng ngay lập tức nếu nó gặp điều kiện trong until cũng vì thế mà người ta không rõ khi nào thì ta bị loại và có khi là đi hết tới cuối con đường mới biết được thì ra mình vẫn thiếu 1 cái gì đó để có thể đi tiếp.
Máy tính có thể khô khan nhưng khi lồng các hoạt động của máy tính vào cuộc đời thì nó cũng mang nhiều ý nghĩa…..