Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Все вопросы..docx
Скачиваний:
11
Добавлен:
25.09.2019
Размер:
158.31 Кб
Скачать

6.Использование параметров-значений и параметров-переменных в качестве входных. Параметры константы.

Использование ПП в качестве входных

Преимущества и недостатки, которые имеют ПП как входные.

1. Экономия времени, при передачи параметра (+).

2. Экономия памяти, при передачи параметра (+).

3. Работа с косвенной адресацией внутри подпрограммы (-).

4. Влияние подпрограммы на входной параметр – побочные эффект (-).

ПЗ предается копированием

1) Защищен от воздействия программы (все изменения погибают после п/п)

2)Прямая адресация (экономия времени)

3)Затрата памяти на копирование (зависит от объема)

4)Затрата времени на копирование.

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

Параметры константы-это входные параметры сложных типов кроме строковых и ссылочных ,имеет перед собой слово const, не может быть изменен в ходе выполнения подпрограммы. .

Параметр-константа указывается в заголовке подпрограммы аналогично параметру-значению, но перед именем параметра записывается зарезервированное слово const. Действие слова const распространяется до ближайшей точки с запятой, т. е. в пределах одной группы.

Пример.

function NewString(const S: string): string;

Тип параметра-значения может быть любым за исключением файлового.

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

Параметр-константу нельзя передавать в другую подпрограмму в качестве фактического параметра.

Пример. Функция вычисления максимального элемента в массиве. В примере п. 10.3.1 используем в качестве первого параметра параметр-константу:

function Max(const Mas: tArr; N: Byte): Integer;  var Ma: Integer;     i: Byte;  begin   Ma := Mas[l];    for i := 2 to N do      if Ma < Mas[i] then        Ma := Mas [ i ] ;   Max := Ma  end;

7. Ограничения, наложенные на формальные и фактические параметры.

Ограничения наложенные на ПЗ и ПП формальные и фактические:

ПЗ: формальные: всегда переменная, любого типа кроме file.

фактические: переменная, константа, выражение.

ПП: формальные: переменная любого типа ( в том числе и file).

Фактические: переменная, совпадающая по типу.

Особенности:

ПЗ: фактические и формальные параметры должны совпадать по типу, но фактический параметр может быть целым при вещественном фактическом.

ПП: фактические и формальные параметры отождествлены – всегда совпадают по типу.

8.Аппарат функций.

Функция-такая п/п, кот. возвращает одно единственное значение, связанное с именем этой функции.

Имеет заголовок и тело.

н-function-имя-->список пар-ров-->-:-имя типа-к

В теле могут быть описание локальных переменных и декларация операторов (begin и end;)

Поскольку имя функции является выходным значением, то в теле должен присутствовать хотя бы один оператор присваивания, имеющий имя ф-ции в своей левой части. К функции обращаются по имени.

Пример:

Описание функции (tg):

program tangens;

var x:real;

function Tan(x:real):real;

begin

Tan:=sin(x)/cos(x);

end;

begin

readln(x);

writeln (Tan(x));

end.

Различия между процедурами и функциями

1.Функция всегда вычисляет только один результат простого, ссылочного или строкового типа. Процедура формирует любое количество результатов любых типов, в том числе, ни одного результата или один результат простого, ссылочного или строкового типа. Исходя из этого, и определяется вид подпрограммы. Необходимо помнить, что если входной и выходной параметры совпадают, то такую подпрограмму можно оформить только в виде процедуры;

2.Результат работы функции должен размещаться в автоматической переменной, совпадающей по имени с именем функции. Поэтому в разделе операторов функции обязательно должен присутствовать оператор присваивания этой переменной вычисленного значения. Тип результата функции указывается в заголовке функции. Результаты работы процедуры размещаются в параметрах-переменных, значения которых должны быть сформированы действиями процедуры;

3.Вызов процедуры – это отдельный оператор (оператор обращения к процедуре). Вызов функции – это часть выражения. Появление имени функции в любом выражении трактуется как ее вызов на выполнение;

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