Pascal: Занятие №2. Часть 3: Оператор перехода goto в Pascal

На занятии Вы познакомитесь с оператором перехода с меткой (цикл Goto в Pascal). А также узнаете, как используется счетчик и Сумматор

Оператор перехода GOTO в Pascal. Циклы и метки в Паскале

Оператор перехода или оператор Goto в Pascal (он также называется меткой) — это цикл, т.е. цикличное повторение одного или нескольких операторов. Блок-схема данной структуры:
блок-схема, повторение или цикл.
Каждый проход цикла называется итерацией. Особенностью цикла является то, что для выхода из цикла необходимо использовать условный оператор if или другие, предусмотренные для выхода из цикла операторы. Если этого не сделать, то будет организован бесконечный цикл.

Рассмотрим использование оператора перехода goto в Pascal:

Пример: Выводить бесконечно на экран три подряд буквы «abc»
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 позволяет прервать выполнение цикла и выйти из программы. Однако в этом случае уже необходимы две метки в программе: одна — для циклических возвратов, другая — для выхода из цикла.

Пример: Вывести 10 раз три подряд буквы «abc»
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 – шаг увеличения

Задача 9. Необходимо составить блок-схему изложенного выше примера задачи
Задача 10. Вывести последовательность: 1 2 3 4 . . . 99 100 99 . . . 3 2 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

Задача 11. Подсчитать сумму 10 чисел: 1 + 2 + 3 + … + 10. В качестве 10 использовать константу

Потренируйтесь в решении задач по теме, щелкнув по пиктограмме:

проверь себя