Оператор безусловного перехода GoTo означает «перейти к» и применяется в случаях, когда после выполнения некоторого оператора надо выполнить не следующий по порядку, а какой-либо другой, отмеченный меткой оператор.
Формат:
GoTo <метка>;
Метка в Pascal – это произвольный идентификатор, позволяющий именовать некоторый оператор программы и таким образом ссылаться на него. В качестве метки можно использовать целое число без знака (исключение в правилах написания идентификаторов). Метка располагается непосредственно перед помечаемым оператором и отделяется от него двоеточием. Оператор можно помечать несколькими метками, которые в этом случае отделяются друг от друга двоеточием. Перед тем как появится в программе, метка должна быть описана (в разделе описания меток). За словом Label (метка) следуют имена меток, разделенные запятыми. За последним именем ставится точка с запятой. Максимальная длина метки ограничена 127 символами.
Формат: Label <имя1, имя2,... >;
Label lb1, lb2;
Begin
<операторы>
GoTo lb1;
lb2:<операторы>;
lb1: <операторы>;
<операторы>;
GoTo lb2;
<операторы>
End.
Действие оператора GoTo состоит в передаче управления соответствующему меченному оператору.
При использовании меток необходимо руководствоваться следующими правилами:
ü метка, на которую ссылается оператор GoTo, должна быть описана в разделе описаний и она обязательно должна встретиться где-нибудь в теле программы;
ü метки, описанные в процедуре (функции), локализуются в ней, поэтому передача управления извне процедуры (функции) на метку внутри нее невозможна.
Например, в результате выполнения программы:
label 1,2; //метки
var i:integer;
begin
i:=6;
2: if i<0 then goto 1; //условие перехода к метке 1
write(i); //выводим значение i
Dec(i); //увеличиваем i на 1
goto 2; //переходим к метке 2
1: //метка 1
end.
будет выведено 6543210.
ТЕМА 7. Оператор выбора Case
Цель лабораторной работы: изучить оператор выбора, применять его в программировании для организации алгоритмов с ветвлениями наряду с условным оператором.
Оператор выбора Case часто используют для замены конструкций из вложенных условных операторов. Управляющая конструкция «выбор» является идеальным средством для обработки ситуаций со многими (более чем двумя) исходами, т.е. в случае, когда условие может принимать более двух значений. Оператор «выбор» имеет следующую структуру:
Case <параметр: порядковая переменная> OF
<значение 1>: <оператор 1>;
<значение 2>: <оператор 2>;
…
<значение N>: <оператор N>;
[ELSE <оператор N+1>];
END; {для Case}
В этой структуре: < параметр: порядковая переменная> – порядковая переменная, значение которой проверяется; <значение *> – константы, с которыми сравнивается значение порядковой переменной; <оператор *> – операторы, из которых выполняется тот, с константой которого совпадает значение порядковой переменной.
Ветвь оператора else является необязательной. Если она отсутствует и значение порядковой переменной не совпадает ни с одной из перечисленных констант, весь оператор рассматривается как пустой. В отличие от оператора If перед словом else точку с запятой можно ставить.
Если для нескольких констант нужно выполнять один и тот же оператор, их можно перечислить через запятую, сопроводив их одним оператором. Существует возможность указать диапазон возможных значений. Например, диапазон от 1 до 100 включительно указывается так:
1.. 100.
Пример
CASE i of
0, 2, 4, 6, 8: Writeln('Чётная цифра');
1, 3, 5, 7, 9: Writeln('Нечётная цифра');
10.. 100: Writeln('Число от 10 до 100');
ELSE
Writeln('Отрицательное число или больше 100');
END;
В операторе выбор после двоеточия может указываться только один оператор. Для того, чтобы выполнить несколько операторов, так же как и в условном операторе, применяют составной оператор.
CASE <порядковая переменная> OF
<значение 1>:
begin
<оператор 1_1>;
<оператор 1_n>
end;
<значение 2>:
begin
<оператор 2 _1>;
<оператор 2_n>
end;
<значение N>:
begin
<оператор N_1>;
…
<оператор N_n>
end;
ELSE
begin
<оператор Е_1>;
…
<оператор Е_n>
end;
END;
Необходимо заметить, что из всех возможных ветвей операторов управляющей конструкции выбор, выполняется только одна ветвь, даже если значение порядковой переменной совпадает с несколькими возможными значениями, отвечающими за разные ветви операторов. Выполняется та ветвь, которая расположена раньше. Значение порядковой переменной сравнивается последовательно со всеми возможными значениями, и как только найдётся значение, которому равна порядковая переменная, выполняется ветвь операторов, сравнения прекращаются и управляющая конструкция прекращает свою работу. Поэтому при составлении программ с использованием управляющей конструкции выбор, раньше необходимо располагать более «строгие» последовательности операторов.
ТЕМА 8. Циклические программы
Цель лабораторной работы: закрепить практические навыки работы с системой PascaABC, научиться правильно использовать различные операторы циклов; научиться составлять программы решения задач с использование циклических структур.
Алгоритм называется циклическим, если он содержит многократное выполнение одних и тех же операторов. Число повторений этих операторов может быть задано в явной (цикл с известным числом повторений) или неявной (цикл с неизвестным заранее числом повторений) форме.
В практике программирования часто встречаются циклические программы. В циклических программах какой-либо алгоритм повторяется многократно, при этом один или несколько параметров изменяются. Операторов цикла (повтора) в Паскале три: for, repeat, while.