a. Vòng lặp Repeat Cú pháp: Repeat <Lệnh 1>; <Lệnh 2>; ... <Lệnh n>;
Until <Biểu thức logic>;
Giải thích:
Đầu tiên, máy tính thực hiện lần lượt các lệnh: <Lệnh 1>, <Lệnh 2>...sau đó kiểm tra <Biểu thức logic>. Nếu <Biểu thức logic> nhận giá trị False thì lại quay lên đầu vòng lặp thực hiện tiếp <Lệnh 1>, <lệnh 2>... Nếu <Biểu thức logic> nhận giá trị True thì máy sẽ thoát khỏi vòng lặp. Như vậy, các lệnh nằm trong thân vòng lặp Repeat..Until sẽ được thực hiện ít nhất một lần.
Chú ý:
- Các lệnh nằm giữa lệnh lặp Repeat và Until không cần phải có từ khóa Begin và End;
- Trong vòng lặp phải có lệnh nào đó làm thay đổi giá trị một biến trong <Biểu thức logic> nhằm làm dừng vòng lặp để tránh trường hợp vòng lặp sẽ chạy mãi mãi, không ngừng dẫn đến treo máy.
- Ngay từ khi mới vào vòng lặp Repeat, lệnh đã được thực hiện ít nhất một lần rồi mới kiểm tra điều kiện, chỉ khi nào <biểu thức logic> trả về giá trị True mới thoát khỏi vòng lặp, chính vì vậy vòng lặp Repeat còn được gọi là vòng lặp kiểm tra điều kiện sau.
Ví dụ: Viết chương trình chỉ cho phép nhập vào một số trong khoảng từ 1 đến 12. Rồi in ra tháng đó có bao nhiêu ngày.
Program Kiem_tra_ngay_trong_thang; Var thang: byte;
100
Begin
Repeat
Write('Nhap vao so (tu 1..12): '); Readln(thang);
Until (thang>=1) and (thang<=12); Case Thang of
4, 6, 9, 11: Writeln('Thang nay co 30 ngay'); 2: Writeln('Thang nay co 28 hoac 29 ngay') Else
Writeln('Thang nay co 31 ngay');
End; Readln End.
b. Vòng lặp While Cú pháp:
While <Biểu thức Logic> do <Lệnh>;
Giải thích:
Gặp lệnh này trước tiên máy kiểm tra <Biểu thức logic>, nếu nó có giá trị True thì thực hiện <Lệnh> và sau đó quay lại kiểm tra <Biểu thức logic> và quá trình cứ tiếp tục như vậy. Nếu <biểu thức logic> nhận giá trị False thì máy thoát khỏi vòng lặp mà không thực hiện một lệnh nào trong thân vòng lặp. Như vậy, lệnh While dùng để lặp đi lặp lại một công việc trong khi điều kiện còn được thỏa mãn.
Nếu ngay từ khi mới vào vòng lặp mà thấy điều kiện không được thỏa mãn (Biểu thức logic trả về giá trị False), máy tự động thoát ngay mà không thực hiện lệnh bên trong vòng lặp, chính vì vậy vòng lặp While còn được gọi là vòng lặp kiểm tra điều kiện trước.
Ví dụ: Viết chương trình tìm ước số chung lớn nhất của hai số nguyên.
101
Var a, b, r : Integer; tl : Char; Begin
Repeat
Write( ‘ Nhap hai so a va b : ‘ ); Readln(a, b); While b <> 0 do Begin r := a mod b; a := b; b := r; End;
Writeln( ‘ Uoc so chung lon nhat la ‘, a ); Write( ‘ Ban tim USCLN nua khong (C/K) ? ); Readln(tl);
Until Upcase(tl) = ‘K’; End.