حلقه repeat...until

حلقه do...while پاسکال: repeat...until با تفاوت‌های کلیدی نسبت به while.

حلقه‌ای که حداقل یک بار اجرا می‌شود

گاهی می‌خواهید کار حداقل یک بار انجام شود و بعد شرط بررسی گردد — مثل منویی که حداقل یک بار نمایش داده می‌شود. این دقیقاً کار repeat...until است.

ساختار

repeat
  دستور۱;
  دستور۲;
until شرط;

سه تفاوت کلیدی با while

ویژگیwhilerepeat...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.

کدام را کِی استفاده کنیم؟

خلاصه

این مبحث بخشی از دوره آموزش کامل پاسکال است.

ابزارهای مرتبط