Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Редьков Е.В_otv.doc
Скачиваний:
2
Добавлен:
01.04.2025
Размер:
834.05 Кб
Скачать

17.Формальные и фактические параметры. Назначение, варианты реализации.

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

Формальным параметром может быть ТОЛЬКО переменная, тип которой обязательно указывается в заголовке описания функции или процедуры.

Если формальных параметров несколько и они имеют один и тот же тип, то их удобно объединить в группу:

<имя> , <имя> ,┘, <имя> : <тип>;

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

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

Формальные и фактические параметры

Формальные параметры подпрограммы указывают, с какими параметрами следует обращаться к этой программе (количество примеров, их последовательность, типы). Они задаются в заголовке подпрограммы в виде списка формальных параметров, разбитого на группу формальных параметров включаются однотипные параметры одной категории.

Все формальные параметры можно разбить на четыре категории:

  • параметры значения (эти параметры в основной программе подпрограммой не меняются );

  • параметры - переменные ( эти параметры подпрограмма может изменить в основной программе );

  • параметры-константы ( используются только в версии 7.0);

  • параметры-процедуры и параметры-функции (т.е. процедурного типа).

Для каждого формального параметра следует указать имя и, как правило, тип, а в случае параметра-переменной или параметра-константы - его категорию. Имена параметров могут быть любыми, в том числе и совпадать с именами объектов программы. Необходимо лишь помнить, что в этом случае параметр основной программы с таким именем становится недостурным для непосредственного использования подпрограммой. Тип формального параметра может быть практически любым, однако в заголовке подпрограммы нельзя вводить новый тип. Например, нельзя писать

  function Max( A: array[ 1..100 ] of real ): real;

Чтобы правильно записать этот заголовок, следует в основной программе ввести тип-массив, а затем использовать его в заголовке:

  type tArr =array [ 1..100 ] of real;   function Max ( A: tArr ) : real;

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

18.Линейный список. Реализация с использованием массивов. Реализация многомерного массива.

Линейный список - это конечная последовательность однотипных элементов (узлов), возможно, с повторениями. Количество элементов в последовательности называется длиной списка, причем длина в процессе работы программы может изменяться.

Линейный список F, состоящий из элементов D1,D2,...,Dn, записывают в виде последовательности значений заключенной в угловые скобки F=, или представляют графически (см.рис.12).

D1

D2

D3

...

Dn

Рис.12. Изображение линейного списка.

Например, F1=< 2,3,1>,F2=< 7,7,7,2,1,12 >, F3=< >. Длина списков F1, F2, F3 равна соответственно 3,6,0.

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

- найти элемент с заданным свойством;

- определить первый элемент в линейном списке;

- вставить дополнительный элемент до или после указанного узла;

- исключить определенный элемент из списка;

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

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

Методы хранения линейных списков разделяются на методы последовательного и связанного хранения. Рассмотрим простейшие варианты этих методов для списка с целыми значениями F=<7,10>.

При последовательном хранении элементы линейного списка размещаются в массиве d фиксированных размеров, например, 100, и длина списка указывается в переменной l, т.е. в программе необходимо иметь объявления вида

float d[100]; int l;

Размер массива 100 ограничивает максимальные размеры линейного списка. Список F в массиве d формируется так:

d[0]=7; d[1]=10; l=2;

Полученный список хранится в памяти согласно схеме на рис.13.

l:

2

d:

7

10

...

[0]

[1]

[2]

[3]

[98]

[99]

Рис.13. Последовательное хранение линейного списка.