Как начать программу заново в паскале

Нужно чтобы в случае какого-то события, типа там a=2 цикл начинался заново, т.е идет цикл, наткнулся на условие, вернулся в начало, пропустив все команды идущие после этого условия, потом цикл заново. Т.е. нужен типа оператор который перезапускает цикл при условии, например brake его останавливает, а мне нужно чтобы происходил рестарт.
Надеюсь на вашу помощь, заранее спасибо.

hosm

Ссылка скрыта от гостей

denis79513

Я имею в виду язык Pascal
И тот пример что вы дали:

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 цикл просто пропускает эти цыфры, а мне нада чтобы возвращалось к началу цикла. не продолжая идти дальше, увидел условие, сразу к началу.

hosm

вернулся в начало
чего?

Паскаль с нуля [ч1]. Первая программа.


либо я вас не понимаю, либо так по-хорошему

repeat if a <> 2 then begin . end until a=1;

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

denis79513

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

hosm

Описание
Процедура Continue осуществляет переход на следующую итерацию цикла (выходит из текущего витка цикла). Используйте её с осторожностью, так же как и Goto инструкцию.

Читайте также:
Как установить программу с расширением run

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

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

Источник: codeby.net

Процедура Continue

Основы программирования 2.0

Процедура Continue в Паскале выполняет переход к следующему циклу (точнее, переход к следующей итерации цикла, в котором эта процедура вызывается). Синтаксис:

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

Процедура Continue может использоваться с циклами FOR, REPEAT и WHILE.

Учтите, что Continue — это зарезервированное слово и оно не может быть переопределено.

Переход к следующей итерации цикла

Пример программы, которая использует процедуру Continue для прерывания текущей итерации цикла и перехода к следующей, приведён ниже:

program continueproc; var i, j : byte; //**************************************************************** // Так делать нельзя, потому что тогда выход из итерации цикла // с помощью Continue не будет работать //**************************************************************** begin //Будут выведены 9 чисел: 1..3, 5..10. Число 4 НЕ будет выведено for i := 1 to 10 do begin if i = 4 then Continue; Write(i:3); end; WriteLn; //Выход из итерации вложенного цикла for j := 11 to 15 do //Цикл 1 begin for i := 1 to 4 do //Вложенный цикл 2 begin //Число 2 никогда не будет выведено if i = 2 then Continue; //Выход из вложенного цикла 2 Write(i:3); //но цикл 1 будет выполнен полностью . end; Write(j:3); end; WriteLn; //Выход из итерации основного цикла for j := 11 to 15 do //Цикл 1 begin if j = 13 then //Число 13 не будет выведено Continue; //Выход из итерации цикла 1 //Следующий код будет выполнен 4 раза, а не 5 //при j = 11, 12, 14, 15 Write(j:3); for i := 1 to 4 do //Вложенный цикл 2 begin //Число 2 никогда не будет выведено if i = 2 then Continue; //Выход из вложенного цикла 2 Write(i:3); end; end; WriteLn; i := 0; //С циклом repeat это тоже работает repeat Inc(i); if i = 4 then Continue; Write(i:3); until i > 4; ReadLn; end.

Читайте также:
Как установить программу циско

Обратите внимание на то, что код в теле цикла, расположенный после вызова Continue, уже не будет выполняться (так как текущая итерация цикла прерывается в том месте, где вызывается процедура Continue, и выполняется проверка условия выполнения цикла).

Также обратите внимание на то, как работает процедура Continue во вложенном цикле: прерывается только итерация вложенного цикла, а основной цикл продолжает работать в обычном режиме.

Также обратите внимание на нашу собственную процедуру Continue в начале программы. Она закомментирована и не компилируется.

Однако, если вы её раскомментируете, то процедура Continue будет переопределена. Ошибки компиляции это не вызовет — программа будет создана.

Но стандартная процедура Continue не будет работать. То есть прервать текущую итерацию цикла с помощью процедуры Continue вы не сможете, потому что вызываться будет уже не стандартная процедура из модуля SYSTEM, а ваша собственная процедура, объявленная в начале программы, которая не выполняет никаких действий.

Источник: info-master.su

7.4. Принудительное завершение цикла

В Паскале возможно принудительное завершение как текущей итерации, так и цикла в целом. Для этого служат операторы break, continue, exit, halt.

Оператор break осуществляет немедленный выход из циклов repeat, while, for. Его можно использовать только внутри циклов. Например: Вычислить значение y, соответствующее каждому значению x (xn≤x≤xk, dx) по формуле y=lnx.

X, xn, xk, dx: real;

N,i: integer;

Begin

Write(‘xk=’); readln(xk);

Writeln (‘dx=’); readln (dx);

X:=xn;

While true do

Begin

Writeln(‘x=’,x:6:3,’ y=’, y:6:3);

If x>xk then break;

End;

End.

Оператор continue начинает новую итерацию цикла, даже если предыдущая не была завершена. Например:

For i:=1 to n do

Begin

Write (‘c=’); readln(c);

B:=sqrt(c);

Оператор exit осуществляет выход из подпрограммы. Оператор halt прекращает выполнение программы и возвращает код завершения в операционную систему. Формат оператора:

Читайте также:
4 с помощью какой программы строятся диаграммы

Halt[(e)]; e- переменная типа word (код завершения)

Если e отсутствует, то код завершения 0.

F, I, n: integer;

Begin

Begin

Begin

For i:=2 to n do f:=f*i

Writeln (‘n!= ‘,f);

Readln

8. Символьный тип

8.1. Особенности символьного типа

Символьный тип (символы) обозначается идентификатором CHAR (Character — буква, литера). Данные символьного типа состоят из одного байта, который содержит код одного символа (знака, буквы).

Значениями этого типа являются графические изображения символов из множества ASCII (American Standard Code For Information Interchange – американский стандартный код обмена информацией). Уместно подчеркнуть, что слово «значение» здесь предполагает особый порядок работы с этими двоичными кодами (для которых определен тип CHAR). Во-первых, это особая совокупность операций, характерная только для символов, а во-вторых это отображение кодов в виде соответствующих им литер при выводе на монитор (при выполнении оператора WRITELN).

Множество ASCII состоит из 256 различных символов. Символы упорядочены: каждому символу присвоен номер (код) – целое число в диапазоне 0 .. 255, являющееся кодом внутреннего представления литеры (двоичный 8-разрядный код соответствующего десятичного числа литеры является формой представления литеры в памяти машины).

Источник: studfile.net

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru