Vòng lặp Repeat .. Until trong Pascal
Trong bài này mình sẽ giới thiệu vòng lặp repeat .. until trong Pascal, đây là vòng lặp thứ ba và cũng là vòng lặp cuối cùng được học trong chuỗi series Pascal căn bản này.
Repeat Until được đề cập cuối cùng là do nó rất ít được sử dụng trong thực tiễn, bởi khi nhìn vào rất khó để hiểu và quản lý được toàn bộ chương trình. Thay vào đó người ta hay sử dụng vòng lặp while để thay thế.
1. Repeat Until trong Pascal
Nếu vòng lặp while phải kiểm tra điều kiện trước khi lặp thì vòng lặp repeat lại khác, nó sẽ lặp trước rồi mới kiểm tra điều kiện cho lần lặp tiếp theo.
Chính vì lý do này mà số lần lặp tối thiểu của repeat là 1 lần. Điều này có nghĩa nếu bạn toán của bạn cho phép lặp 1 lần thì có thể sử dụng nó, còn không thì phải sử dụng vòng lặp khác.
Bài viết này được đăng tại [free tuts .net]
Cú pháp của repeat until như sau:
repeat S1; S2; ... ... Sn; until condition;
Trong đó S1, S2, Sn là chương trình chính của vòng lặp, còn condition là điều kiện cho lần lặp tiếp theo.
Trình biên dịch sẽ đi từ trên xuống dưới, từ trái sang phải nên nó sẽ lặp tối thiểu 1 lần, sau kiểm tra nếu điều kiện không thỏa thì sẽ kết thúc vòng lặp.
Sơ đồ lệnh repeat until trong Pascal
Ví dụ: Hãy in ra các số từ 1 đến 10 bằng cách sử dụng repeat.
program RepeatLoopFreetuts; var a: integer; begin a := 1; repeat writeln(a); a := a + 1; until (a > 5); readln; end.
Chạy chương trình này thì sẽ thu được kết quả như sau:
1 2 3 4 5
Ở lệnh until thực ra bạn cũng có thể thay thế điều kiện lặp thành: until (a = 6)
, tức là khi a có giá trị là 6 thì lập tức dừng vòng lặp, lúc này thực tế thì chỉ mới lặp 5 lần mà thôi.
2. Repeat Until lồng nhau
Giống với những vòng lặp khác, repeat cho phép bạn lặp lồng nhau và điều này khiến cho chương trình trở nên khó bảo trì hơn mà thôi. Vì vậy lời khuyên là bạn không nên sử dụng lệnh này để tạo ra một chương trình với số lần lặp quá nhiều.
Cú pháp như sau:
repeat S1 repeat S2 until condition2; until condition1;
Ví dụ: Viết chương trình in ra ma trận 4 x 4 toàn bộ ngôi sao như sau.
**** **** **** ****
program RepeatMaTranFreetuts; var a : integer; b : integer; begin a := 1; b := 1; repeat b := 1; repeat write('*'); b := b + 1; until (b = 5); a := a + 1; writeln; // xuong hang until (a = 5); readln; end.
Chạy chương trình bạn sẽ có được giao diện như sau:
Trên là cách sử dụng vòng lặp repeat trong Pascal. Nếu xem cấu trúc của cả ba vòng lặp for, while và repeat thì rõ ràng for và while được sử dụng nhiều hơn, bởi cấu trúc của nó đơn giản, dễ sử dụng và bảo trì. Bạn cứ tưởng tượng nếu sử dụng repeat lồng nhau 3, 4 lần thì chương trình sẽ rất rối, rất khó làm việc với teamwork.