Возврат в начало цикла при условии.

Тема в разделе "Delphi - FAQ", создана пользователем denis79513, 8 дек 2010.

Статус темы:
Закрыта.
  1. denis79513

    denis79513 Гость

    Есть цикл типа:
    Код (Delphi):
    repeat
    ....
    until a=1;
    Нужно чтобы в случае какого-то события, типа там a=2 цикл начинался заново, т.е идет цикл, наткнулся на условие, вернулся в начало, пропустив все команды идущие после этого условия, потом цикл заново. Т.е. нужен типа оператор который перезапускает цикл при условии, например brake его останавливает, а мне нужно чтобы происходил рестарт.
    Надеюсь на вашу помощь, заранее спасибо.
     
  2. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
  3. denis79513

    denis79513 Гость

    Я имею в виду язык Pascal
    И тот пример что вы дали:
    Код (Delphi):
    var
    i : Integer;
    s : string;

    begin
    s := '';

    // A big loop
    for i := 1 to 9 do
    begin
    // Skip loop processing for certain values of i
    if (i = 3) or (i = 7) then Continue;
    s := s + IntToStr(i);
    s := s + ' ';
    end;

    // Show the string created by the above loop
    ShowMessage('s = '+s);
    end;
    там в цикле при s=3 или 7 цикл просто пропускает эти цыфры, а мне нада чтобы возвращалось к началу цикла. не продолжая идти дальше, увидел условие, сразу к началу.
     
  4. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    чего?
    либо я вас не понимаю, либо так по-хорошему
    Код (Delphi):
    repeat
    if a <> 2 then begin

    ...
    end
    until a=1;
    или по-плохому =)
    Код (Delphi):
    label ret;
    ret: repeat
    if a = 2 then goto ret

    ...
    until a=1;
     
  5. denis79513

    denis79513 Гость

    Мне нужно чтобы когда цикл видит определенное условие, то пропускал все команды которые в нем есть, стоящие после этого условия и начинал сначала цикла.
     
  6. hosm

    hosm * so what *

    Регистрация:
    18 май 2009
    Сообщения:
    2.450
    Симпатии:
    7
    Описание
    Процедура Continue осуществляет переход на следующую итерацию цикла (выходит из текущего витка цикла). Используйте её с осторожностью, так же как и Goto инструкцию.

    Важно обратить внимание, что инструкция Continue переходит только к началу текущего цикла - не из любых вложенных циклов выше него. А инструкция Goto может перейти.
    Похожие команды
    Goto Вызывает скачок к метке, независимо от вложения
    Repeat Повторяет инструкции, пока не выполнится условие завершения

    Добавлено: Continue в паскале нет, появилось вроде только в Delphi.
    моделируется переходом по Goto или правильным построением условий внутри цикла, пример приводила выше.
     
Загрузка...
Статус темы:
Закрыта.

Поделиться этой страницей