حلقه repeat...until
حلقه do...while پاسکال: repeat...until با تفاوتهای کلیدی نسبت به while.
حلقهای که حداقل یک بار اجرا میشود
گاهی میخواهید کار حداقل یک بار انجام شود و بعد شرط بررسی گردد — مثل منویی که حداقل یک بار نمایش داده میشود. این دقیقاً کار repeat...until است.
ساختار
repeat
دستور۱;
دستور۲;
until شرط;
سه تفاوت کلیدی با while
| ویژگی | while | repeat...until |
|---|---|---|
| بررسی شرط | قبل از بدنه | بعد از بدنه |
| حداقل اجرا | ممکن است صفر بار | همیشه حداقل ۱ بار |
| شرط ادامه | تا وقتی شرط درست است | تا وقتی شرط غلط است (تا درست شود) |
| begin/end | برای چند دستور لازم است | لازم نیست! repeat...until خودش بلوک است |
دقت کنید: در repeat شرط خروج است!
until n = 10 یعنی «تا وقتی که n برابر ۱۰ نشده ادامه بده» — برعکس while که while n <> 10 مینوشتیم.مثال: شمارش
var i: integer;
begin
i := 1;
repeat
write(i, ' ');
i := i + 1;
until i > 5;
writeln;
end.
خروجی: 1 2 3 4 5
مثال: حداقل یک بار اجرا
var x: integer;
begin
x := 100; { حتی اگر شرط از اول غلط باشد }
repeat
writeln('این حداقل یک بار اجرا میشود! x=', x);
x := x + 1;
until x > 100;
end.
مثال: بازی حدس عدد (منطق)
var
secret, guess, tries: integer;
begin
secret := 42;
guess := 0;
tries := 0;
repeat
{ در برنامه واقعی: readln(guess) }
tries := tries + 1;
guess := guess + 20; { شبیهسازی حدس کاربر }
if guess > secret then
writeln(guess, ' — بزرگتر است!')
else if guess < secret then
writeln(guess, ' — کوچکتر است!');
until guess = secret;
writeln('درست! با ', tries, ' تلاش');
end.
کدام را کِی استفاده کنیم؟
- for: تعداد مشخص → شمارش
- while: شرط اول بررسی شود، شاید هیچبار اجرا نشود → اکثر موارد
- repeat: حتماً حداقل یک بار اجرا شود → منو، ورودی اعتبارسنجی، بازیها
خلاصه
repeat...until= اجرا اول، بررسی آخر- شرط until شرط پایان است (برعکس while)
- بدنه همیشه حداقل یک بار اجرا میشود
- بدون نیاز به begin/end برای چند دستور
این مبحث بخشی از دوره آموزش کامل پاسکال است.