Информатика. Курс лекций. Громов Ю.Ю - 122 стр.

UptoLike

функции. Языки, поддерживающие объектно-ориентированную парадигму, позволяют создавать программные модули,
представляющие отдельные объекты.
В этом разделе мы сосредоточим внимание на методах модульного представления алгоритмов. Этот подход состоит в
объединении шагов алгоритма в короткие, простые фрагменты с последующим их применением в качестве абстрактных ин-
струментов для достижения желаемой цели. В результате образуется некоторая структура из подпрограмм, каждая из кото-
рых кодируется на нашем псевдокоде как отдельная процедура.
Процедуры. Процедура (procedure) – это модуль программы, написанный независимо от других модулей и связанный с ними
с помощью процедуры передачи и возврата управления (рис. 5.9). Управление передается процедуре (посредством команды
перехода машинного языка) в тот момент, когда возникает необходимость в получении предоставляемых ей услуг, и воз-
вращается в модуль вызывающей программы после завершения работы процедуры. Процесс передачи управления часто на-
зывают вызовом процедуры. Мы будем называть модуль программы, который обращается к процедуре, вызывающим моду-
лем (calling unit) или вызывающей программой.
Рис. 5.9. Передача управления после вызова процедуры
В рассматриваемых языках программирования процедуры определяются почти так же, как и в нашем псевдокоде, обсуждав-
шемся в главе 4. Определение процедуры начинается с оператора, называемого заголовком процедуры, который, помимо все-
го прочего, содержит ее имя. За заголовком следуют операторы, детально описывающие данную процедуру. Во многих от-
ношениях процедураэто миниатюрная программа. Она содержит как объявления используемых переменных и констант,
так и выполняемые операторы, описывающие шаги алгоритма, для реализации которого эта процедура предназначена.
Как правило, переменные, объявленные в процедуре, являются локальными (local variable). Это означает, что на них
можно ссылаться только внутри данной процедуры. Подобный подход исключает возможные недоразумения, которые могут
возникнуть, когда две процедуры, написанные независимо друг от друга, используют переменные с одинаковыми именами.
Однако иногда требуется, чтобы некоторые данные были доступны всем модулям внутри программы. Переменные, пред-
ставляющие собой такие данные, называются глобальными (global variable). Многие языки программирования имеют средст-
ва для описания как локальных, так и глобальных переменных.
Событийно-управляемое программное обеспечение. В этой главе рассматриваются случаи, когда процедуры явно
вызываются операторами, расположенными в различных местах программы. Однако иногда процедуры должны активи-
зироваться неявно, при наступлении какого-то события. Например, в графическом интерфейсе пользователя (GUI) про-
цедура, описывающая реакцию программы на щелчок на командной кнопке, вызывается не из другого программного
модуля, а активизируется непосредственно в ответ на щелчок мышью на данном элементе. Программное обеспечение,
содержащее подобные процедуры, называется событийно-управляемым. Короче говоря, такое программное обеспече-
ние состоит из процедур, описывающих реакцию системы на различные события. При функционировании системы эти
процедуры бездействуют, пока не наступит требуемое событие; после этого они активизируются, выполняют свою за-
дачу и вновь возвращаются в состояние покоя.
Синтаксические конструкции, используемые для вызова процедур из другой части программы, в разных языках не-
сколько отличаются. В языке FORTRAN используется оператор CALL. В языках Ada, С, C++, Java и Pascal просто указывает-
ся имя процедуры. Таким образом, если GetNames, SortNames и WriteNamesэто процедуры для получения, сортиров-
ки и печати списка имен (определенного как глобальная переменная), то мы могли бы использовать их при написании при-
веденной ниже программы на языке FORTRAN, предназначенной для получения, сортировки и печати списков.
CALL GetNames
CALL SortNames
CALL WriteNames
В языках Ada, С, C++, Java и Pascal эта же программа выглядит следующим образом:
GetNames;
SortNames;
WriteNames;
Обратите внимание, что в этом случае программа состоит из трех команд, каждая из которых обращается к абстрактной