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

4. Процедуры и функции

4.1 Описание процедур

Процедура- это средство сокращение текста программы. Она является широко используемым средством абстрагирования. Ее можно рассматривать ,как “черный ящик”,обеспечивающий выполнение некоторой абстрактной функции. Процедуры могут иметь параметры, а могут и не иметь. Смысл процедуры легче понять, если в одном месте собранна информация обо все ее окружении. Нет необходимости просматривать текст всей программы, что бы определить типы переменных, с которыми работает процедура. Процедуру с параметрами легче тестировать и отлаживать, поскольку в ней нет связи с остальной программой через глобальные переменные. Связанные формальных и фактических параметров, а так же и само обращение к процедуре требуют дополнительных затрат времени и памяти. Описание процедур состоит из 2 частей: заголовка процедуры и тела процедуры. Телом процедуры является блок. Следовательно, тело процедуры имеет точно такую же структуру, как и программа: в нем могут присутствовать все разделы и на него распространяются общие правила локализации. В секции формальных параметров перечисляются индетификаторы формальных параметров, причем для каждого идентификатора определяется его тип. Фактические параметры отделяют друг от друга запятыми, а весь список заключается в круглые скобки. Между формальными и фактическими параметрами устанавливаются взаимно однозначное соответствие путем пересчета их с лева на право: первому с лево формальному параметру ставится в соответствие первый слева фактический параметр, второму слева формальному параметру-второй с лева фактический и т.д. Число формальных параметров должно в точности равняться числу фактических параметров. Следовательно, если в описании процедуры отсутствует список формальных параметров, то и в операторе процедуры должен отсутствовать список фактических параметров.

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

Если в секции формальных параметров предшествует слово var, то все параметры из этого списка являются параметрами- переменными.

4.2 Описание функций.

Функции вычисляют единственное значение простого типа или типа-указатель. Обращение к функции осуществляется с помощью указателя функций, состоящего из индетификатора вызываемой функции и списка фактических параметров, заключенного в круглые скобки. Заголовок функции начинается с зарезервированного слова FUNCTION.В заголовке функции явно указывается тип результата, вычисляемого с помощью этой функции. В теле функции обязательно должен присутствовать оператор присваивания, в левой части которого стоит идентификатор это функции. Именно этот оператор присваивания и определяет значение, вычисленное с помощью этой функции. Если такой оператор присваивания отсутствует, то значение, вычисленное с помощью функции, не определенно. Это приводит к аварийному завершению программы. Таких процедур присвоения в теле может быть несколько. Значение, которое вычисляется функцией, задается последним выполненным до завершения выполнении функции оператором.

(*Найти сумму элементов линейного массива*)

programzad;

const N=10 ;

type

massiv=array [1..N] of integer;

var

a:massiv;

sum,i:integer;

procedure input (var x:massiv);(* Вводэлентамассива*)

var

i:integer;

begin

for i:=1 to N do

begin

write ('a=');

readln (x[i]);

end;

end;

Procedure Output (var z:massiv);

var

i:integer;

begin

for i:=1 to N do

write;

end;

functionfsum (c:massiv):integer;

var

s,i:integer ;

begin

s:=0;

for i:=1 to N do

if c[i] mod 5=0

then

s:=s+c[i];

fsum:=s;

end;

begin

writeln ('input massuv');

input (a);

output (a);

sum:=fsum(a);

writeln ('sum=',sum);

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]