//
you're reading...
00 - Chủ đề chung

Câu lệnh lặp WHILE … DO

  1. Cú pháp
WHILE <điều kiện> DO <Lệnh> ;

2. Lưu đồ

while-do loop in Pascal

3. Ghi chú

(1) Câu lệnh WHILE kiểm tra điều kiện trước khi thực hiện, do đó có khi không thực hiện khối lệnh một lần nào nếu điều kiện không thỏa mãn.

(2) Nếu điều kiện là true, quyền kiểm soát của khối trở về đầu vòng lặp, khối lệnh được thực hiện một lần nữa. Nếu điều kiện là false thì thoát khỏi vòng lặp WHILE … DO. Điều này ngược với câu lệnh REPEAT … UNTIL, nếu điều kiện là false thì lệnh được thực hiện và điều kiện là true thì thoát.

(3) Giống như câu lệnh REPEAT … UNTIL, trong thân vòng lặp bạn phải thiết kế lệnh điều khiển để thoát (làm cho điều kiện trở thành false), thông thường là tăng giảm biến đếm, hỏi và trả lời hoặc sử dụng phím đặc biệt.

4. Ví dụ 01:

Viết chương trình tính trung bình cộng N số tự nhiên đầu tiên, với số N nhập từ bàn phím.

program Trung_binh_cong_version_1;
var
   Tong, TrungBinh, Sonhap: real;
    N, Dem: integer;

begin
    Tong := 0;
    Dem:= 1;
    write('So phan tu can nhap vao N= ');
    readln(N);

     while  Dem <=N  do
             begin
                  write('Nhap phan tu thu ', Dem, '  la: ');
                  readln(sonhap);
                  Tong := Tong + sonhap;
                  dem:= dem+1; {câu lệnh thiết kế điều kiện thoát bằng cách tăng biến đếm}
             end;

     trungbinh:= Tong / N;
     writeln('Tong cac so da nhap la: ', Tong:0:2);
     writeln('Trung binh cong cac so da nhap la: ', trungbinh:0:2);
     write('Go mot phi de tiep tuc ...' );
     readln;
end.

5. Nhận xét:

(1) Trong bài này số lần lặp N là biết trước khi vào vòng lặp WHILE, do đó có thể dùng câu lệnh FOR thay thế.

program Trung_binh_cong_version_2;
var
   Tong, TrungBinh, Sonhap: real;
    N, Dem: integer;

begin
    Tong := 0;
    Dem:= 1;
    write('So phan tu can nhap vao N= ');
    readln(N);

     for i:= 1 to N  do
             begin
                  write('Nhap phan tu thu ', Dem, '  la: ');
                  readln(sonhap);
                  Tong := Tong + sonhap;
             end;

     trungbinh:= Tong / N;
     writeln('Tong cac so da nhap la: ', Tong:0:2);
     writeln('Trung binh cong cac so da nhap la: ', trungbinh:0:2);
     write('Go mot phi de tiep tuc ...' );
     readln;
end.

(2) Cải tiến chương trình với số lần lặp không biết trước như sau:

program Trung_binh_cong_version_3;
var
   Tong, TrungBinh, Sonhap: real;
    N, Dem: integer;

begin
    Tong := 0;
     trungbinh:= 0;
     sonhap:= 0;
    dem:= 0;

     while sonhap <> -1  do
             begin
                  dem:= dem +1;
                  Tong := Tong + sonhap;
                  write('Nhap phan tu thu ',dem, ' la: (nhap -1 de ket thuc) '); {điều kiện thoát bằng cách nhập giá trị -1} 
                  readln(sonhap);  
             end; 
if (dem > 1) then trungbinh:= Tong / (dem - 1);
 writeln('Tong cac so da nhap la: ', Tong:0:2);
 writeln('Trung binh cong cac so da nhap la: ', trungbinh:0:2); 
write('Go mot phi de tiep tuc ...' ); 
readln; 
end.

5. Ví dụ 02:



Advertisements

About pascalteacher

Trang thông tin Toán học và Tin học

Thảo luận

Không có bình luận

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

Các tác giả

Chuyên mục

Tháng Tám 2015
H B T N S B C
« Th1   Th9 »
 12
3456789
10111213141516
17181920212223
24252627282930
31  

NCT Computer

Flickr Photos

lost

Lookkk deeeply into my eyes....

Cimitero San Michele

More Photos

Thống kê

  • 115,518 lượt xem

pascalteacher.nct@gmail.com


Trang huấn luyện học sinh giỏi Tin học

%d bloggers like this: