Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Текст лекций.doc
Скачиваний:
3
Добавлен:
01.04.2025
Размер:
1.59 Mб
Скачать

Вопросы для самоконтроля

  1. Что такое файл?

  2. В чем различие между структурой физического и структурой логического файлов?

  3. Какие виды файлов вы знаете?

  4. Что понимается под термином «способ доступа»?

  5. Что следует из того, что некоторый файл является файлом последовательного доступа?

  6. В чем состоит сходство и различие массива и файла?

  7. Что необходимо сделать для того, чтобы получить возможность записи или чтения из файла?

  8. Какой формат имеет процедура write для типизированного файла?

  9. В чем особенности текстовых файлов?

  10. Когда возникает ситуация EOF?

  11. Как обеспечить возможность обработки ошибки при работе с файлом в программе?

11. Подпрограммы

Подпрограмма – средство представления вспомогательного алгоритма на языке программирования.

В Паскале подпрограммы могут быть оформлены либо как процедуры (procedure), либо как функции (function). Подпрограмма оформляется как функция чаще всего в том случае, когда она возвращает в качестве результата одно единственное скалярное значение. В остальных случаях более предпочтительно оформлять ее как процедуру. И те, и другие имеют одинаковую структуру, т.е. состоят, как и программа, из секций объявлений и исполнимой части, содержащей операторы.

Структура подпрограммы имеет следующий вид

Frame172

Отличия в описании функции и процедуры касаются только заголовка и наличия в функции, среди прочих операторов, по крайней мере одного оператора присваивания, в котором имени функции присваивается значение возвращаемого результата. Отметим также, что текст подпрограммы заканчивается ключевым словом end и символом ”;” (точка с запятой), а не точкой, как в случае программы.

Структура заголовка программы приведена ниже

Frame173

Примечание. Число параметров подпрограммы может быть как большим, так и малым. В принципе, возможны ситуации, когда параметры отсутствуют совсем. В этом случае заголовок подпрограммы может иметь вид, приведенный ниже.

Frame174

11.1. Область действия идентификаторов

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

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

Отметим, что понятия «глобальные» и «локальные» следует понимать относительно – по отношению к конкретной подпрограмме.

Продемонстрируем сказанное на примере. Пусть программа имеет следующую структуру:

Frame175

В данном примере:

  • A0, B0, C0 будут глобальными для всех подпрограмм, используемых в программе;

  • A1, B1, C1 будут глобальными для всех подпрограмм, описанных внутри процедуры P1 (в данном примере для процедуры P2), и одновременно локальными для самой процедуры P1;

  • A2, B2, C2 – видимы (локальны) только в процедуре P2.

Сформулируем правила определения области действия для идентификаторов подпрограмм (процедур и функций):

  • действуют все идентификаторы, определенные внутри подпрограммы;

  • действуют все идентификаторы окружающего контекста, если имена отличаются от имен, объявленных внутри подпрограммы;

  • локальные идентификаторы подпрограммы во внешнем окружении действовать не будут никогда;

  • в случае совпадения имен глобального и локального идентификаторов действовать будет только внутренний локальный идентификатор. Это означает следующее: объявление во внутренней подпрограмме данных с идентификаторами, совпадающими по имени с данными внешних программы или подпрограмм, отменяет действие внешних идентификаторов и вводит свои локальные описания, независимо от того, совпадают они по типу, или нет.

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