Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл: Источник:
Скачиваний:
323
Добавлен:
04.03.2014
Размер:
564 Кб
Скачать

Язык Object Pascal. Механизм передачи параметров в подпрограммах. Пример задачи.

Передача параметра значения. От программы Q к программе A.

  1. Вычисляется значение выражения в основной программе.

  2. Сохраняется в памяти.

  3. Выделяется область памяти, доступная подпрограмме.

  4. В выделенную область памяти копируется значение параметра.

  5. После вычисления подпрограммы область памяти освобождается и становится недоступной для основной программы.

Передача параметров переменных.

  1. Выделяется область памяти для переменной.

  2. В выделенную область памяти заносится адрес переменной, а не самого значения.

  3. При обращении к подпрограмме передаётся адрес памяти, где хранится параметр.

Особенности передачи параметров значений:

Достоинства: изменение значений в подпрограмме не отражается на фактических параметрах программы.

Недостатки:

  • Занимаем лишнюю память.

  • Теряем время, если копируем большие массивы.

Особенности передачи параметров переменных:

Достоинства:

  • Не расходуется память.

  • Не теряем время.

Недостаток: Все изменения параметров переменных отображаются в главной программе.

Параметры массивы и параметры строки.

В списках формальных параметров процедуры может быть только стандартный тип или ранее объявленный тип.

Type mas=array [1..100] of real;

Procedure p(var a:mas);

Т.к короткая строка фактически является массивом, нужно делать то же самое:

Type str=string[20];

Procedure p1(st:str);

Язык Object Pascal. Параметры процедурного типа. Пример задачи.

Процедурные типы дают гибкие средства передачи функций и процедур в качестве фактических параметров обращения к другим процедурам и функциям.

Type <имя>=procedure(<список формальных параметров>);

<имя>=function(<список формальных параметров>):<тип>;

<Имя> - процедурного типа.

Описателем процедурного типа подобны заголовкам подпрограммы, но с разностью, что у них нет имён после ключевых слов функция и процедура.

Type proc1=procedure(a,b,c:real);

Proc2=procedure(var a,b:integer);

Proc3=procedure;

Func1=function(var s:string):real;

Func2=function:string;

Язык Object Pascal. Структура модуля пользователя. Пример задачи.

Модуль – это специально образованная оформленная библиотека определений типов, констант, процедур и функций. Автономно компилируется независимо от использующей его программы. Модуль имеет расширение .pas. Для подключения модуля к программе или к другому модуль используют директиву Uses.

Структура модуля.

{I заголовок модуля}

Unit <имя модуля>;

{II интерфейсный раздел}

interface

Uses

Const

Type Объекты видимые пользовательской

Var

заголовок с перечислением параметров

{III раздел реализации}

implementation

Uses

Const

Type

Var

реализация процедур и функций.

{IV инициирующая часть}

Initialization

{V завершающая часть}

Finalization

End.

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

В V части указываются операторы, выполняющиеся после завершения основной программы. Пример: закрывающийся файл.

Если несколько модулей содержат IV части то эти части выполняются последовательно друг за другом в порядке перечисления модулей. В предложении Uses завершающей части вычисляется в обратном порядке, предложении Uses в вызов программы.

Соседние файлы в папке шпора