- •1. Понятие алгоритма и его свойства
- •2.Способы представления алгоритма
- •3. Средства описания языков программирования
- •4. Классификация языков программирования
- •5. Базовые элементы языка Паскаль
- •6.Структура программы
- •7.Стандартные типы данных.Числовые типы.
- •8. Стандартные не числовые типы данных
- •9. Выражения и виды операций
- •10. Стандартные функции
- •10.2 Стандартные функции
- •11. Операторы действия
- •12. Процедуры ввода
- •13. Процедуры вывода
- •14. Структурные операторы. Составной оператор. Условные операторы.
- •15. Операторы цикла.
- •17. Структурированные типы данных. Массивы.
- •18. Строки
- •19. Записи
- •20. Процедуры. Процедуры без параметров. Параметры- значения.
- •21. Процедуры. Параметры-переменные.
- •22. Пользовательские функции
- •23. Рекурсия
- •24. Понятие файла
- •25. Процедуры и функции для работы с файлами
- •26.Текстовые файлы
- •27. Модули
- •28. Распределение памяти при выполнении программ
- •29.Указатели. Ссылочные переменные
- •30. Процедуры для работы со ссылками
- •33. Структурное программирование.
- •34. Нисходящее проектирование программ
27. Модули
Для размещения в памяти большой программы может не хватить одного сегмента памяти (его размер - до 64 кбайт). включили в язык механизм так наз модулей, котор размещ в разных сегментах. Модули позволяют созд библиотеки проц и функц, кот можн подкл к разн прог.Модуль - это автономно компилир прог единица, включ в себя спец образом оформлен библиотеку описаний (типы, конст, перемен, проц и фун).Модуль мож быть запущен только из прог или из другого модуля. Он компилир независимо от использ их прог. Результ компиляц явл файл с тем же именем и расширением .TPU, кот заносится на диск.Общий объем модульн прог может быть много более 64 кбайта, но каждый .TPU-файл не может превышать этот предел.Структура модуля.Модуль можно разделить на несколько разделов: заголовок; интерфейсная часть; исполняемая часть; инициализационная часть.UNIT <имя> {заголовок модуля} interface {интерфейсная часть} uses <список> {используемые при объявлении модули} label {блок объявлений библиотечных меток} const {блок объявлений библиотечных констант}type {блок объявлений библиотечных типов} var {блок объявлений библиотечных переменных}заголовки доступных процедур и функций с указанием парамет-ров> implementation {секция реализации} uses {используемые при реализации модули} label {блок объявлений внутренних меток} const {блок объявлений внутренних констант}type {блок объявлений внутренних типов} var {блок объявлений внутренних переменных}заголовки без параметров и тела процедур и функции>Begin {секция инициализации} <операторы>EndВсе блоки, составляющие разделы интерфейса, реализации и инициализации необязательны и могут отсутствовать.Заголовок модуля состоит из зарезерв слова unit и имени модуля. Это имя должно совпад с именем дискового файла, в кот помещается исх текст модуля. В интерфейсной части содержатся объявления всех глобальных объектов модуля (типов, констант, переменных и подпрограмм), кот должны стать доступн любой прог. При объявлен библиотеч подпрог в интерфейс части указ только их заголовок.В разделе реализац можно исп все объекты, описан в разделе interface. Он, содерж описан подпрог, объявлен в интерфейсн части. Описанию подпрогр, объявлен в интерфейсной части модуля, в исполняем части должен предшествовать заголовок, в кот можно опускать список формальных перемен. В разделе реализации могут объявл локальн для модуля объекты - типы, конст, перемен. Они будут глобальн по отношению к подпрогр этого раздела и инициирующей части. В проге, подкл модуль, объявленные при реал данн и типы недоступны. Завершает модуль инициирующая часть. Она может отсутств вместе с начинающим ее словом Begin. Тогда сразу после раздела реализац следует признак конца модуля End. В инициир часта размешают исполняем операт, котор вып до передачи управлен основн проге и обычно исп для подготовки ее работы. Обычно в ней вып присваивание нач значен библиотечн переменным, открытие файлов и т.п
28. Распределение памяти при выполнении программ
Адресное пространство компьютера при запуске программы (ЕХЕ-файла) Турбо Паскаля составляет 1 Мбайт и состоит из сегментов по 64 Кбайт. Первые 256 байт памяти отводятся под префикс структуры программы, который содержит служебную информацию о программе. После префикса начинаются сегменты кода и модулей, которые содержат рабочий код основного блока программы, рабочий код системного модуля, рабочие коды подключаемых модулей. После них располагается сегмент данных, где хранятся статические глобальные переменные основного блока и все типизированные константы, включая локальные. За сегментом данных следует область стека. В ней располагаются локальные переменные и параметры-значения процедур и функций во время их работы по вызову. Выше стека отводится память под буфер для работы оверлеев - перекрывающихся частей программ. Еще выше располагается динамически распределяемая область памяти, называемая областью кучи или просто кучей (Heap-областью). Объемом распределяемой динамической памяти можно управлять с помощью директивы компилятора $М. В динамической области размещаются объекты, память для которых отводится и освобождается непосредственно по ходу выполнения программы. Такие данные, размер которых задается во время выполнения программы, называются динамическими. Для объявления динамических данных в Паскале используется ссылочный тип, называемый еще типом-указателем. Значением переменных ссылочного типа является адрес ячейки памяти. Адрес занимает четыре байта и хранится в виде двух слов, одно из которых определяет сегмент, второе - смещение. В Паскале имеется стандартный тип — указатель и ссылочные типы, определяемые программистом.