Pascaler
О проекте Теоретический материал Тестирование Архив задач
Войти в личный кабинет



О проекте


Преподавателям


Тема: Оператор безусловного перехода GOTO. Решение задач.

В языке принят естественный порядок выполнения программы: последовательный. Рассмотренные выше операторы if и case осуществляют переход к выполнению соответствующего оператора в зависимости от выполнения условия или предложенного выбора. Однако в практике программирования задач возникает необходимость безусловного перехода для выполнения нужной последовательности операторов. Например, необходимо обойти участок программы, а вернуться к нему позже. Для этого предназначен оператор безусловного перехода, который имеет следующую форму записи:

  goto метка;

Метка представляет собою число без знака в диапазоне 1-9999 либо последовательность латинских букв и цифр.

Перед использованием метка должна быть объявлена в разделе описания меток, который срузу следует за разделом описания используемых модулей:

Uses
  Crt, Graph;
Label
  Metka1,
  Metka2;
Const
  P=3.14;
Var
  x : integer;

После описания метки ее можно использовать в программе. Метка записывается перед помечаемым оператором и отделяется от него двоеточием. А оператор goto должен помещен в то место программы, откуда выполняется переход. Оператор goto передает управление на оператор с заданной меткой. Оператор goto можно вставлять в любое место программы, где могут располагаться операторы языка. Например,

Begin
. . .
if Alpha = 360
  then
    goto Metka1
  else
    writeln (‘Эта фигура - не окружность‘);
. . .
  Metka1 : Arc(X,Y,0,Alpha,R);
. . .
End.

Приведём пример уже знакомой Вам программы, применив в ней оператор безусловного перехода.

Program Number2;
Label
  Metka;
Var
  a, b, c : integer;
Begin
  Metka : writeln(‘Введите цифру ‘);
  readln(a);
  case a of
    0 : writeln (‘ноль‘);
    1 : writeln (‘один‘);
    2 : writeln (‘два‘);
    3 : writeln (‘три‘);
    4 : writeln (‘четыре‘);
    5 : writeln (‘пять‘);
    6 : writeln (‘шесть‘);
    7 : writeln (‘семь‘);
    8 : writeln (‘восемь‘);
    9 : writeln (‘девять‘)
  else
    begin
      writeln (‘Это число не является цифрой‘);
      goto Metka;
    end;
  end;
  readln;
End.

Теперь в этой программе мы заставляем пользователя правильно ввести цифру. Сколько бы раз пользователь ни вводил числа не из промежутка 0..9, программа будет выдавать сообщение об ошибочном вводе и снова просить ввести цифру.

Задание. Наберите программу и протестируйте ее.

В простых программах этот оператор не вызывает затруднений. При написании сложных и объёмных программ могут быть затруднения, поэтому программисты стараются не использовать этот оператор. Возникает вопрос: где должен использоваться безусловный переход? На этот вопрос следует ответить - “нигде”. Любая программа, написанная с goto, может быть запрограммирована без этого оператора.

Следует ли вообще использовать оператор перехода? Ответить трудно. В основном применение оператора безусловного перехода оправдано в двух случаях: при преждевременном завершении цикла или программы. Но даже в этих случаях можно обойтись некоторой стандартной управляющей структурой.

Не будет ничего удивительного в том, что в Ваших программах не будет применяться безусловный переход. В общем случае рекомендуется избегать использования этого оператора для обеспечения лучшего понимания работы программы. Бесконтрольное применение оператора goto может усложнить программу настолько, что разобраться в ней будет невозможно. Поэтому программисты считают применение оператора безусловного перехода плохим стилем программирования.

Задание. Выберите произвольно из решенных Вами задач две и дополните их решение использованием оператора безусловного перехода goto.

Вернуться назад
2003—2012 © Группа «Vimedia»
Проект «Pascaler» — лучший на ХI Всероссийской конференции молодых исследователей с международным участием «Шаг в будущее», Россия, Москва, 12 – 16 апреля 2004г.