Этапы разработки программы. Разработка или выбор алгоритма решения поставленной задачи. Оформление документации на программу, страница 26

Рекомендации к применению способов передачи данных:

1.Первый способ весьма прост с технической (в смысле простоты оформления описания)точки зрения, но имеет один недостаток – скрытость от непосвященных процессов передачи данных во вспомогательный алгоритм.

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

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

20.1. Процедуры и функции яз.Pascal.

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

В яз.Pascal можно включать тексты п/п-м прямо в текст программы, либо вызывать его из библиотеки.

При включении текста п/п прямо в текст программы, его необходимо поместить в тексте  программы, т.е. после объявлений констант, типов и переменных.

Определение (структура) процедуры.

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

Синтаксис: Procedure<имя процедуры>[(<список формальных параметров>)];

область действия-   const{объявления констант}

тело процедуры       type{объявления типов}

var{объявления переменных}

begin <операторы>end;

Определение (структура функции)

Function <имя функции>(<список формальных параметров>):

<тип возвратного значения>;

const

type

var

begin<операторы>end;

Замечание: 1. В теле функции хотя бы раз имени функции должно быть присвоено значение;

2. Функция может возвращать в качестве результата значение только базового, строкового типов или типа указатель.

Формальные параметры.   

Синтаксис списка формальных параметров:

[var]<имя  параметра 1>:<тип>;…;<имя параметра n>:<тип>

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

Замечание: В списке формальных параметров нельзя объявлять новый тип, т.е. нельзя писать следующим образом:

Function max (M: array[1..100] of integer): integer;

Следующим в основной программе объявить массив в разделе объявления типов (type) и в списке формальных параметров использовать имя объявляющего типа.

type Mas = array[1..100] of integer;

function max(M: mas): integer;

Вызов процедур и функций 

Синтаксис: <имя процедуры>[(список фактических параметров)];

Список фактических параметров – это набор выражений, разделенных запятой.

Т.к. имя функции возвращает значение, то функция вызывается в выражениях;

Примеры Процедура: max (M); функция rez:=max (M);

При вызове п/п-мы управления передаются на первый ее оператор. Выполнение п/п завершается:

В функции – при присвоении имени функции возвращающего значения;

В процедуре – по достижению последнего end;

Способы передачи параметров в п/п-мы.

В яз.Pascal (как и в яз.С) используются два способа передачи параметров:                                                                                                         по значению и по ссылке. При передачи параметра по значению, значение передаваемого фактического параметра копируется в формальный параметр и п/п работает с этой копией, тем самым изменения параметра в вызванную программу не передается.  араметр передается по ссылке, если в списке формальных параметров, он описан как параметр – переменная, т.е. имеет описатель var. В п/п в формальный параметр передается адрес фактического параметра, поэтому п/п имеет доступ к значению фактического параметра и может его изменить (т.е. возвратить вызываемой программе изменившееся значение). Пример программы.