Содержание:
Оператор перехода GOTO в Pascal. Циклы и метки в Паскале
Оператор перехода или оператор Goto
в Pascal (он также называется меткой) — это цикл, т.е. цикличное повторение одного или нескольких операторов. Блок-схема данной структуры:
.
Каждый проход цикла называется итерацией. Особенностью цикла является то, что для выхода из цикла необходимо использовать условный оператор if
или другие, предусмотренные для выхода из цикла операторы. Если этого не сделать, то будет организован бесконечный цикл.
Рассмотрим использование оператора перехода goto в Pascal:
1 2 3 4 5 6 7 8 | LABEL m; begin m: write ('a'); write ('b'); write ('c'); GOTO m; end. |
В программе в 4-й строке поставлена метка m:
, т.е. как бы закладка, на которую нужно вернуться. Возврат осуществляется оператором goto m
(дословно с англ. go to «идти к m»).
Стоит обратить внимание на то, что объявление метки происходит до объявления переменных (до служебного слова var
) и начинается со служебного слова label
.
Выход из цикла метки в Паскале
Оператор goto
сам по себе организует в pascal бесконечный цикл. Для выхода из цикла необходимо использовать условие.
Условный оператор if
в рассмотренном ниже примере использования оператора goto
позволяет прервать выполнение цикла и выйти из программы. Однако в этом случае уже необходимы две метки в программе: одна — для циклических возвратов, другая — для выхода из цикла.
1 2 3 4 5 6 7 8 9 10 11 12 13 | LABEL m1,m2; var f: integer; begin f:=1; m1: if f=10 then goto m2; write ('a'); write ('b'); write ('c'); f:=f+1; GOTO m1; m2: end. |
Счетчик в Паскале
В вышеизложенном примере конструкция f:=f+1
является так называемым счетчиком. Счетчик, по сути дела, — это переменная, которая увеличивается с каждым шагом цикла (с каждой итерацией) на единицу.
Счетчик в Паскале вычисляется по рекуррентному выражению:
c=c+1;или
inc(c);где c – накапливаемое количество
1 – шаг увеличения
Сумма в паскале или сумматор
Сумма в Паскале вычисляется по рекуррентному выражению:
S=S+Y
где S – накапливаемая сумма
Y – слагаемое
1 2 3 4 5 6 7 8 9 10 | LABEL m; var s,a: integer; begin s:=0; {обнуляем сумматор} m: readln(a); s:=s+a; {увеличиваем сумматор} writeln('sum=',s); goto m; end. |
Если что-то осталось непонятным в работе с оператором GOTO предлагаем посмотреть видео урок:
youTube
Потренируйтесь в решении задач по теме, щелкнув по пиктограмме: