
598 Глава 20. Основы программирования
внешние сообщения (события). Тогда использование условного оператора цикла
может выглядеть так:
while true do
begin
// тело цикла
end;
Контроль
над
выходом из цикла
при
наступлении определенного события при этом
полностью возлагается на программиста.
В Бейсике есть специальная форма оператора цикла, позволяющая явно описы-
вать такие бесконечные циклы:
DO
' тело цикла
LOOP
Исключения
Управление порядком выполнения программы может происходить не только с
помощью
условных операторов
и
операторов цикла,
но и
при возникновении
исклю-
чений
—
ситуаций в программе или операционной системе, требующих немедлен-
ного реагирования. Например, при выполнении оператора присваивания и вычис-
лении выражения произошло деление на ноль. Программа остановилась, так как
не знает, что ей делать дальше,
—
ведь получено ошибочное значение. Чаще всего
выполнение программы просто прекращается
по
ошибке,
но
современные системы
разработки позволяют программисту явно контролировать возникновение самых
разных исключений (они еще называются
исключительными
ситуациями,
требу-
ющими немедленного вмешательства)
и
указывать,
какие
операторы следует выпол-
нять при их возникновении.
Параллельные вычисления
Еще
одна область программирования,
в
которой возможно изменение явно указан-
ного порядка выполнения операторов,
—
это область параллельных вычислений.
С появлением недорогих ПК
с
несколькими процессорами возникла возможность
распараллеливания программы
—
одновременного выполнения ее независимых
частей на разных процессорах, что теоретически позволяет получить выигрыш в
быстродействии, линейно зависящий от числа процессоров. Однако на практике
это очень сложная задача, которая требует правильного выделения независимых
модулей кода (так называемых
процессов),
выполнение которых не скажется на
результатах работы других
процессов.
Так как момент окончания работы того или
иного процесса заранее неизвестен, то в программе надо предусмотреть действия,
связанные с синхронизацией обработки получаемых результатов. Их выполнение
может потребоваться в самые неожиданные моменты, поэтому изменение линей-
ной последовательности работы операторов неизбежно.