Сайт Льва Волкова
  
· Если наполнить чайную ложку веществом, из которого состоят нейтронные звезды, то ее вес будет = примерно 110 млн тн.
 
      На главную  
 Личное
  Статьи
  Задачи 
 Ссылки
 АТ-531
www.levvol.ru    
 

Организция ветвлений в программе.

В языке Паскаль используется два оператора для реализации условных переходов - IF и CASE, а также оператор безусловного перехода GOTO. Они позволяют нарушить последовательный порядок выполнения инструкций программы.

Оператор условного перехода

Оператор условного перехода в Турбо Паскаль имеет вид:

if условие then оператор 1 else оператор 2; 

условие - это логическое выражение, в зависимости от которого выбирается одна из двух альтернативных ветвей алгоритма. Если значение условия истинно (TRUE), то будет выполняться оператор 1, записанный после ключевого слова then. В противном случае будет выполнен оператор 2, следующий за словом else, при этом оператор 1 пропускается. После выполнения указанных операторов программа переходит к выполеннию команды, стоящей непосредственно после оператора if.

Блок - схема алгоритма выполнения команды if с двумя операторами
Блок - схема алгоритма выполнения команды if с двумя операторами

Необходимо помнить, что перед ключевым словом else точка с запятой никогда не ставится!

else - часть в операторе if может отсутствовать:

if условие then оператор 1; 

Тогда в случае невыполнения логического условия управление сразу передается оператору, стоящему в программе после конструкции if.

Блок - схема алгоритма выполнения команды if с одним оператором
Блок - схема алгоритма выполнения команды if с одним оператором

Следует помнить, что синтаксис языка допускает запись только одного оператора после ключевых слов then и else, поэтому группу инструкций обязательно надо объединять в составной оператор (окаймлять операторными скобками begin ... end). В противном случае возникает чаще всего логическая ошибка программы, когда компилятор языка ошибок не выдает, но программа тем не менее работает неправильно. Кстати, перед командой end точку с запятой можно не ставить.

Примеры.

if x > 0 then modul := x else modul := -x;

if k > 0 then WriteLn('k - число положительное');

if min > max then begin
     t := min;
     min := max;
     max := t;
  end;

 

вверх страницы
Оператор выбора

Часто возникают ситуации, когда приходится осуществлять выбор одного из нескольких альтернативных путей выполнения программы. Несмотря на то, что такой выбор можно организовать с помощью оператора if .. then, удобнее воспользоваться специальным оператором выбора. Его формат:

case выражение of
    вариант : оператор;
    ...
    вариант : оператор;
end;

или

case выражение of
    вариант : оператор;
    ...
    вариант : оператор;
    else оператор
end;

выражение, которое записывается после ключевого слова case, называется селектором, оно может быть любого перечисляемого типа. вариант состоит из одной или большего количества констант или диапазонов, разделенных запятыми. Они должны принадлежать к тому же типу, что и селектор, причем недопустимо более одного упоминания вариантав записи инструкции case. Из перечисленного множества операторов будет выбран только тот, перед которым записан вариант, совпадающий со значением селектора. Если такого варианта нет, выполняется оператор, следующий за словом else (если он есть).

Пример

case ch of
    'A'..'Z', 'a'..'z' : WriteLn('Буква');
    '0'..'9'           : WriteLn('Цифра');
    '+', '-', '*', '/' : WriteLn('Оператор');
    else WriteLn('Специальный символ')
end;

 

вверх страницы
Оператор безусловного перехода

Помимо операторов условного перехода существует также оператор безусловного перехода goto. Формат:

goto метка

Оператор goto переходит при выполнении программы к определенному оператору программы, перед которым находится метка. Метка должна быть описана в разделе описания меток той программы (процедуры или функции), в которой она используется. Нельзя перейти из одной процедуры или функции в другую.

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

Пример

label 1;
begin
  ...
  goto 1;
  ...
  1: WriteLn('Переход к метке 1');
end.

Учтите! Само понятие структурного программирования и общепринятый стиль программирования на структурных языках НЕ ПРИВЕТСТВУЕТ применение меток и операторов перехода в программах. Это затрудняет понимание программы как автором, так и потребителями, кроме того, применение меток отрицательно сказывается на эффективности генерируемого кода.

 

[назад] [содержание] [вперед]