- •1. Структура (состав) языка
- •2. Алфавит
- •3. Лексическая структура языка
- •4. Структура программной единицы
- •5. Стиль записи программ на языке Паскаль
- •6. Типы данных в Паскале
- •6.3 Классификация типов данных в Турбо Паскале
- •6.4 Порядковые типы
- •6.4.2 Булевский (логический) тип
- •Repeat тело_цикла until (логическое_выражение);
- •6.4.3 Целые типы Выделяют целые типы ------------- со знаком – shortint, integer, longint)
- •1 Группа функций:
- •2 Группа функций:
- •3 Группа функций:
- •6.4.4 Перечисляемый тип.
- •6.4.6 Символьный тип
- •6.5 Вещественные типы.
- •7. Выражения в языке Паскаль.
- •10. Вычисление по формулам.
- •10.1 Оператор присваивания .
- •10.2 Характер использования переменных в математике и в программах.
- •10.3 Бесконечности
- •10.4 Нестандартные операции
- •6.6 Строки
- •1) Операции присваивания и сравнения.
- •3) Заполнение строки одним символом
- •4) Стандартные функции и процедуры для работы со строками:
- •5) Подпрограммы преобразования из строкового представления в числовое и наоборот:
- •8. Совместимость и преобразование типов.
- •Совместимость типов
- •8.2 Тип результата арифметических выражений.
- •8.3 Преобразование (приведение) типов и значений.
- •8.3.1 Явное преобразование (приведение) типов.
- •8.3.2 Неявное преобразование или приведение типов.
- •9. Простейший ввод-вывод на Паскале
- •Стандартные файлы Input и Output
- •9.2 Процедуры ввода информации (с клавиатуры.
- •9.3 Процедуры вывода в тр.
- •10. Вычисление по формулам (продолжение)
- •10.6. Уточнение многоместных (n - арных) операций
- •11. Средства языка Паскаль для циклов с известным числом повторений.
- •12. Табулирование функций
- •13. Разветвляющиеся алгоритмы
- •13.1 Таблица ситуаций и команда выбора.
- •13.2 Средства языка Паскаль для программирования разветствляющихся алгоритмов
- •13.4 Описание ситуаций
- •13.5 Запись команды выбора (case) (уточнение таблицы ситуаций) с помощью набора команд ветвления
- •13.6 Запись последовательных команд ветвления в случае, когда соседние зависимые ситуации имеют общие признаки.
- •13.6.1 Восходящий подход
- •13.6.2 Нисходящий подход
- •14. Циклы с неизвестным числом повторений
- •15. Структурированные типы данных. Массивы
- •15.1 Классификация (особенности) структурированных типов данных
- •15. 2. Определение массива
- •15.3 Объявление массива на Турбо Паскале
- •15.4 Хранение элементов массива. Доступ к элементам и частям массива
- •15.5 Уточнение команд обработки массива
- •16. Правила разработки цикла
- •15. 6 Действия над массивами
- •17. Множества.
- •17.1 Множества в Паскале и в математике. Сходства и различия между ними.
- •17.2 Объявление множества на Паскале
- •17.3 Присваивание значений множествам. Конструктор множества
- •17.4 Операции над множествами.
- •17.5 Сравнение множеств.
- •17.6 Применение множеств.
- •18. Вспомогательные алгоритмы (подпрограммы).
- •18.1 Три способа записи повторяющихся команд
- •18.2 Понятие блока
- •18.3 Объекты подпрограммы (то, над чем выполняются действия).
- •18.4 Свойства локальных и глобальных объектов
- •Свойства глобальных объектов:
- •18.5 Выделение памяти под локальные и глобальные переменные
- •18.6 Передача параметров в подпрограммы.
- •Фактические параметры
- •18.7 Подпрограммы, возвращающие значение (функции)
- •18.8 Особенности использования процедур и функций в Турбо Паскале
- •18.9. Побочный эффект (side effect)
- •18.10 Опережающее определение процедур и функций.
- •18.11 Рекурсия и итерация.
- •18.12 Процедуры и функции как параметры.
- •18.13 Директивы подпрограмм
- •Директива forward
- •Директивы far и near
- •Директива external
- •Директива assembler
- •Директива inline
- •Директива interrupt
- •Отладка и тестирование программ, содержащих подпрограммы
- •18.14.1 Нисходящее тестирование и подпрограммы-заглушки
- •18.14.2 Восходящее тестирование и программы-тестеры
- •18.14.3 Рекомендации по отладке программ, содержащих подпрограммы
- •18.14.4 Использование отладчика для трассировки процедур
- •18.14.5 Область действия идентификаторов и переменные в окне Watch
- •18.15. Получение доступа а параметрам командной строки, запуск внешних программ.
- •19. Записи.
- •19.1 Понятие записи. Объявление записи в программе.
- •19.2 Доступ к полям записи.
- •19.3 Оператор with
- •19.4 Действия над записями
- •19.5 Записи с вариантами
- •Замечание1:Порядок частей – именно такой, как показано: фиксированная часть всегда первая (или единственная)
- •19.6 Типизированные константы - записи
- •20. Модули (Unit)
- •20.1 Что такое модуль?
- •20.2 Зачем нужны модули и какие есть средства, аналогтчные (в какой-то мере) модулям
- •Интерфейсная секция
- •Секция реализации
- •Секция инициализации
- •Подключение других модулей к данному (модулю)
- •20.4 Ссылки на описания модуля
- •Пример создания модуля
- •Использование модулей. Режимы Compile, Build и Make при компиляции модулей
- •Косвенные и перекрестные ссылки на модули
- •Пример модуля (стек)
- •Модули и большие программы
18.4 Свойства локальных и глобальных объектов
Свойства локальных объектов:
1. При входе в соответствующий блок локальные объекты принимают следующие значения:
формальные параметры: принимают значения соответствующих фактических параметров.
локальные переменные принимают неопределенные значения.
2. При выходе из блока локальные объекты теряют свое значение и становятся неопределенными.
Их "время жизни" и область видимости ограничивается пределами блока, где они объявлены.
Выводы:
1). Локальным переменным в начале выполнения алгоритма надо присваивать начальные значения.
2). Локальным переменным в разных блоках можно присваивать одинаковые имена. При этом никакого влияния друг на друга не возникнет, поскольку "время жизни" таких перемененных ограничено пределами одного алгоритма.
Свойства глобальных объектов:
1). Глобальные объекты живут и могут быть видны во всех блоках, для которых они являются глобальными, время их жизни – все время выполнение программы.
2). Значения глобальных объектов непредсказуемы до момента присваивания им определенных значений (сами автоматически, как в языке Си, не инициализируются).
3). Область видимости глобальной переменной перекрывается (закрывается) областью видимости одноименной локальной переменной. То есть, область видимости глобальной переменной уменьшается на величину области видимости одноименной локальной переменной. Время жизни глобальной переменной равно времени выполнение всей программы в целом.
Примечание (к рисунку).
Из рисунка видно, что переменная L существует в программе в двух вариантах: как вещественная глобальная и как целая локальная в блоке 3, где она описана как локальная переменная. В соответствии с правилом в блоке 3 локальная переменная перекрывает объявление ее как глобальной переменной. Поэтому в блоке 3 переменная L будет видна как integer, а за пределами блока 3 как real.
18.5 Выделение памяти под локальные и глобальные переменные
При выделении памяти под объекты программы следует различать три момента:
1). Когда выделяется память?
2). На какое время (когда освободиться)?
3). Где она выделяется?
Под глобальные переменные память выделяется в начале выполнения программы. Выделение происходит в сегменте данных (эта область резервируется за глобальными переменными до конца выполнения программы). Время жизни глобальных переменных - в течение выполнения того охватывающего блока, где они описаны. Освобождение памяти, занятой глобальными переменными, происходит после завершения выполнения программы. Область видимости глобальных переменных может перекрываться областью видимости одноименной локальной переменной.
Под локальные объекты (формальные параметры и локальные переменные) память выделяется в начале выполнения текущей (очередной) процедуры или функции в т.н. стеке – структура данных, в которой доступ возможен лишь к тем данным, которые находятся в вершине стека (процедура работы со стеком - LIFO) (простейший пример – детская пирамидка). В отличие от выделения памяти в сегменте данных место расположения переменных в стеке резервируется только на время выполнения процедуры или функции. Это место в стеке подлежит освобождению по завершении процедуры или функции. Поэтому время жизни локального объекта - одна подпрограмма (где он описан, как локальный). Область видимости – данная подпрограмма плюс все вложенные в нее подпрограммы.
