- •Введение
- •Теоретическая часть
- •1.Структура программы на языке pascal
- •1.1 Раздел описания меток
- •1.2 Раздел констант
- •1.3 Раздел описания типов
- •1.4 Примеры решения задач
- •2 Операторы
- •2.1Оператор присвоения
- •2.2Условный оператор
- •2.3Оператор цикла
- •3 Массивы
- •3.1Примеры решения задач
- •4. Процедуры и функции
- •4.1 Описание процедур
- •4.2 Описание функций.
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);