
- •Эвм. Различные виды обеспечения эвм. Аппаратное обеспечение эвм.
- •10) Алфавит и лексемы языка Pascal. Идентификаторы. Нотации идентификаторов.
- •11) Понятие оператора. Операторы описания. Исполняемые операторы.
- •12) Структура программы. Правила оформления программы. Комментарии.
- •13) Константы.
- •14) Переменные. Понятие. Изменение значений. Описание.
- •15) Понятие типа данных. Классификация типов данных.
- •16) Логический, целые и вещественные типы. Понятие. Основные операции и функции.
- •17) Символьный и порядковые типы данных. Понятие. Основные операции и функции.
- •18. Выражения. Приоритеты операций.
- •19. Операторы ввода-вывода. Форматированный вывод.
- •20. Условный оператор. Оператор выбора.
- •21. Циклы. Цикл с параметром. Циклы с пост и предусловием. Операторы циклов
- •Инкрементный цикл с параметром
- •Декрементный цикл с параметром
- •Оператор безусловного перехода goto
- •22. Одномерные массивы. Понятие. Описание. Инициализация. Ввод-вывод. Понятие структуры
- •Массив – однородная совокупность элементов
- •Индекс массива
- •Вычисление индекса массива Паскаля
- •Основные действия с массивами Паскаля
- •Ввод массива Паскаля
- •Вывод массива Паскаля
- •22. Одномерные массивы. Понятие. Описание. Инициализация. Ввод-вывод. Массивы
- •Описание массива
- •Нумерация
- •Описание переменных размерностей
- •Обращение к компонентам массива
- •Задание массива константой
- •23. Сортировка массивов простым выбором и «пузырек».
- •24. Многомерные массивы. Понятие. Описание. Инициализация. Ввод-вывод. Двумерные массивы Паскаля – матрицы
- •Описание двумерного массива Паскаля.
- •Основные действия с двумерными массивами Паскаля
- •Ввод двумерного массива Паскаля.
- •Вывод двумерного массива Паскаля на экран.
- •Представление двумерного массива Паскаля в памяти
- •Сколько памяти выделяется для массива?
- •25. Строки. Типы строк. Описание. Операции, процедуры и функции обработки строк.
- •Описание строк
- •Стандартные функции и процедуры обработки строк
- •26. Записи. Описание. Обработка записей. Записи с вариативной частью. Записи
- •Описание записей
- •Задание записей константой
- •Доступ к полям
- •Оперирование несколькими полями
- •Вложенные операторы with
- •Запись с вариантной частью
- •Описание записи с вариантной частью
- •27. Множества. Описание. Операции, процедуры и функции обработки множеств. Множества
- •Описание множеств
- •Множество-константа Неименованная константа
- •Нетипизированная константа
- •Типизированная константа
- •Представление множеств массивами
- •Представление множеств линейными массивами
- •28. Текстовые файлы. Доступ к данным в текстовых файлах. Работа с текстовыми файлами. Описание файлов
- •Пробельные символы
- •Работа с текстовыми файлами
- •29. Бестиповые файлы. Доступ к данным в бестиповых файлах. Работа с бестиповыми файлами. Процедуры и функции обработки бестиповых файлов.
- •Поиск в нетипизированном файле
- •Запись и чтение
- •Подпрограммы обработки директорий
- •30. Компонентные файлы файлы. Доступ к данным в компонентных файлах. Работа с компонентными файлами. Процедуры и функции обработки компонентными файлов. Типизированные файлы
- •Описание типизированных файлов
- •Назначение типизированного файла
- •Открытие и закрытие типизированного файла
- •Считывание из типизированного файла
- •Поиск в типизированном файле
- •Запись в типизированный файл
- •31. Подпрограмма. Понятие. Виды. Синтаксис. Вызов подпрограмм. Локальные и глобальные переменные. Подпрограммы
- •Вызов подпрограмм
- •Побочный эффект
- •Совпадение имен
- •32. Подпрограммы. Виды параметров. Обмен данными между подпрограммами и основной программой. Список параметров
- •Возвращаемые значения
- •Способы подстановки аргументов
- •Параметр-значение Описание
- •Механизм передачи значения
- •Параметр-переменная Описание
- •Механизм передачи значения
- •Параметр-константа Описание
- •Механизм передачи значения
- •Нетипизированные параметры
- •Явное преобразование типа
- •Совмещение в памяти
- •Открытые массивы
- •33. Модули. Синтаксис. Создание и использование модуля.
- •Подключение модулей
- •Секция реализации
- •Секция инициализации
- •Взаимодействие модулей
- •Компиляция модулей
- •34. Стандартные модули языка Pascal. Стандартные модули языка Pascal
- •35. Указатели. Виды указателей. Операции и функции обработки указателей. Статически выделяемая память
- •Разыменование
- •Присваивания
- •Сравнения
- •36. Динамические переменные. Процедуры и функции работы с динамическими переменными. Работа с динамическими переменными. Динамическое выделение памяти Типизированные указатели
- •Нетипизированные указатели
- •Динамическое освобождение памяти Типизированные указатели
- •Нетипизированные указатели
- •Процедуры работы с динамической памятью
- •37. Стек. Добавление и выборка элемента из стека. Стеки Pascal-Паскаль
- •Занесение элемента в стек
- •Извлечение элемента из стека
Подключение модулей
Для того чтобы подключить к программе какой-либо модуль, необходимо сразу после заголовка программы поместить следующую строку:
uses <имя_модуля>;
Если подключаемых модулей несколько, эта строка примет вид:
uses <имя_модуля_1>,...,<имя_модуля_N>;
Впрочем, совершенно не обязательно указывать имена всех модулей, так или иначе фигурирующих в программе. Достаточно указать имена лишь тех, к которым она будет обращаться непосредственно. А к каждому модулю, подключенному к головной программе, в случае необходимости можно подключить другие модули - и т. д.
Все константы, типы данных, переменные, процедуры и функции, описанные в каком-либо модуле, после его подключения к основной программе (или к другому модулю ) становятся доступными этой программе (или модулю ) без дополнительных объявлений.
Например, вы можете пользоваться функцией abs(), не объявляя и не описывая ее, поскольку эта функция включена в составстандартного модуля System, автоматически подключаемого к любой программе на языке Pascal. Если же вы захотите очистить экран монитора перед выдачей результатов, вам придется подключить к вашей программе модуль crt и воспользоваться содержащейся в нем процедурой clrscr (см. лекцию 14).
Создание модульной программы
Перейдем теперь к детальному изучению структуры модулей и правил их создания и использования.
Структура модуля
В состав модуля входят четыре секции (любая из них может быть пустой, но ее заголовок все равно обязан присутствовать):
unit <имя_модуля>;
interface {секция внешних связей}
implementation {секция реализаций}
begin {секция инициализации}
end.
Разберем каждую из этих секций отдельно.
Название
В отличие от заголовка программы ( program <имя_программы>; ), который может и отсутствовать, заголовок модуля ( unit <имя_модуля>; ) обязан присутствовать всегда.
Кроме того, очень полезно давать модулям и содержащим их файлам одинаковые имена. Иначе говоря, модуль с именем modul_1 желательно разместить в файле с именемmodul_1.pas, и т.п.
Секция внешних связей
Эта секция содержит объявления тех типов данных, констант, переменных, подпрограмм и т.п., которые должны быть видны вне модуля.
Если для объявления какого-либо объекта нужны сведения об объекте, объявленном в другом модуле, то имя этого модуля необходимо указать в этой же секции:
interface
[uses <список_вспомогательных_модулей>;]
[const <список_внешних_констант>;]
[type <список_внешних_типов_данных>;]
[var <список_внешних_переменных>;]
[procedure <объявление_внешней_процедуры>;]
[function <объявление_внешней_функции>;]
Например, пусть у нас есть два модуля: mod_const, содержащий описания базовых констант и типов данных, и mod1, использующий эти описания (мы приводим толькосекции внешних связей ):
unit mod_const;
interface
const sto = 100;
type one_to_sto = 1..sto;
...
unit mod1;
interface
uses mod_const;
const dvesti = 2*sto;
type massiv = array[1..dvesti] of byte;
var a: massiv;
b: one_to_sto;
function min(x,y:one_to_sto):one_to_sto;
...
Рис. 13.1. Пример структуры модульной программы
Теперь, если в каком-либо третьем модуле встретится строка
uses mod1;
то внутри этого третьего модуля можно будет использовать (без дополнительных объявлений) тип massiv, переменные a и b, а также функцию min. Необходимо отметить, что использовать константу sto третий модуль не сможет, поскольку в нем не было указано
uses mod_const;
Если в секциях связей нескольких модулей были определены константы или переменные с одинаковыми именами, но с разными значениями, то путаницы позволит избежать уже знакомый нам прием: указание имени модуля перед идентификатором:
<имя_модуля>.<идентификатор>
Если имя модуля не указано, то идентификатор считается принадлежащим текущему модулю. И только если в текущем модуле этот идентификатор не был объявлен, то начинается поиск в подключенных модулях.
Например, если модульная программа имеет структуру, изображенную на рис. 13.1, то таблица доступности переменных будет выглядеть так:
|
Связи |
Способ обращения к одноименным переменным |
|
||||||
program prg; |
uses A,B,C; |
p |
a.p |
b.p |
c.p |
не видна |
не видна |
|
|
unit A; |
uses C,D,F; |
не видна |
p |
не видна |
c.p |
d.p |
f.p |
|
|
unit B; |
uses F; |
не видна |
не видна |
p |
не видна |
не видна |
f.p |
|
|
unit C; |
- |
не видна |
не видна |
не видна |
p |
не видна |
не видна |
|
|
unit D; |
- |
не видна |
не видна |
не видна |
не видна |
p |
не видна |
|
|
unit F; |
- |
не видна |
не видна |
не видна |
не видна |
не видна |
p |
|
Замечание: В секциях связей не допускается рекурсивное использование модулями друг друга. Иными словами, нельзя одновременно написать
unit mod_1;
interface
uses mod_2;
...
unit mod_2;
interface
uses mod_1;
...