06/04/2021, 14:47

Vòng lặp while trong Pascal - Pascal căn bản

Trong bài này chúng ta sẽ tìm hiểu vòng lặp while trong Pascal, đây là vòng lặp có công dụng giống như vòng lặp for, chỉ khác một điều là ta không cần biết trước tổng số lần lặp. Vòng lặp while cũng đóng vai trò rất quan trọng, được sử dụng rất nhiều trong lập trình thực tế. Không chỉ ở Pascal mà ...

Trong bài này chúng ta sẽ tìm hiểu vòng lặp while trong Pascal, đây là vòng lặp có công dụng giống như vòng lặp for, chỉ khác một điều là ta không cần biết trước tổng số lần lặp.

Vòng lặp while cũng đóng vai trò rất quan trọng, được sử dụng rất nhiều trong lập trình thực tế. Không chỉ ở Pascal mà các ngôn ngữ như C, C++, PHP đều xem trong while.

1. Vòng lặp while trong Pascal

Lệnh lặp while-do trong Pascal cho phép tính toán lặp đi lặp lại cho đến khi một số điều kiện kiểm tra được thỏa mãn. Nói cách khác, nó liên tục thực thi một câu lệnh đích, miễn điều kiện lặp đã cho là đúng.

Cú pháp như sau:

while (condition) do S;

Trong đó:

  • condition là điều kiện lặp. Nếu condition true thì vòng lặp thực hiện, false thì dừng vòng lặp.
  • S là những lệnh sẽ thực hiện nếu condition true. Nếu nhiều lệnh thì phải đặt trong khối BEGIN .. END

Ví dụ: In ra các số từ 1 đến 5. Bài toán này đã được giải ở vòng lặp for, bây giờ mình sử dụng vòng lặp while để xử lý như sau.

program WhileLoopZaidap.com;
var
    number: integer;
begin
    number : = 1;
    while number <= 5 do
    begin
        writeln(number);
        number : = number + 1;
    end;
    readln;
end.

Như bạn thấy, trong thân vòng lặp mình đã có một đoạn code như sau:

number : = number + 1;

Dòng này có công dụng là tăng giá trị của number lên 1 sau mỗi lần lặp, điều này sẽ giúp chương trình tránh bị lặp vô hạn bởi điều kiện dừng là number > 5.

2. Vòng lặp for lồng nhau trong Pascal

Tương tự như vòng lặp for, vòng lặp while trong Pascal cũng cho phép bạn đặt lồng nhau. Thực tế điều này được sử dụng rất thường xuyên khi xây dựng những ứng dụng thực tiễn.

Vòng lặp for lồng nhau tức là đặt vòng while A nằm trong B, cấu trúc như sau:

while (condition_A)
begin
    while (condition_B)
    begin
        // S
    end;
end;

Quay lại giải bài toán in ra bảng cửu chương, ta sẽ sử dụng vòng lặp while để thực hiện như sau:

program WhileLoopZaidap.com;
var 
    a: integer;
    b: integer;
begin
    a := 2;

    while (a <= 9) do
    begin
        // phai gan lai b = 1 tai vi phan tu dau tien la 1
        // neu ban khong gan lai thi sai thuat toan
        b := 1;

        while (b <= 9) do
        begin
            writeln(a, ' x ', b, ' = ', (a * b));

            // cong them 1 cho b
            b := b + 1;
        end;

        // cong them 1 cho a
        a := a + 1;
    end;
    readln;
end.

Nếu bạn là người mới bắt đầu học lập trình thì khi giải bài toán này có vẻ rất khó hiểu phải không? Điểm khó nhất là dòng gán lại b = 1, đây là dòng quan trọng vì nó quyết định đến kết quả in ra của bảng cửu chương.

Không tin bạn hãy thử bỏ dòng này, sau đó chạy lên thì kết quả chỉ in ra bảng cửu chương 2. Lý do là sau lần lặp này thì b đã có giá trị là 10, nên các lần lặp sau vòng lặp con sẽ không được thực hiện.

Như vậy là mình đã giới thiệu xong vòng lặp whiel trong Pascal. Nhìn chúng nó cũng không khó, miễn là bạn chịu khó thực hiện theo hai ví dụ mà minh đã đưa ra, sau đó thay đổi giá trị và suy nghĩ xem tại sao lại có được kết quả như vậy. Chúc bạn thành công nhé.

Bùi Văn Nam

27 chủ đề

7090 bài viết

0