var t:real; //промежуточная переменная

Лабораторная работа №7

Разработка, отладка и испытание алгоритмов и программ с использованием процедур и функций

Цель работы: овладение практическими навыками разработки программ с использованием процедур и функций.

 

ОПИСАНИЕ ПРОЦЕДУРЫ

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

Procedure <Имя> [(Список формальных параметров)]; Разделы описаний процедуры Begin Тело процедуры End;

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

  • по типу,
  • по порядку следования
  • по количеству.

Формальные параметры описываются в заголовке процедуры. Они делятся на параметры-значения — это входные данные. Перед ними не ставится служебное слово Var.

Парметры-переменные — это выходные и входные данные. Перед ними ставится служебное слово Var.

В процедуре может быть любое конечное количество выходных данных (результатов). Все переменные делятся на глобальные (описываются в разделе описаний основной программы) и локальные (описываются в разделе описаний подпрограммы). Локальные переменные «живут» только во время работы подпрограммы.

Вызов процедуры

Вызов процедуры осуществляется путем указания имени процедуры с указанием фактических параметров. Например, Summa(a,150,s).

Пример . Найти значение выражения y=3x10+2x5+x3.

Решение. Для решения данной задачи воспользуемся процедурой, вычисляющей степень аn .

Var x, y, s1, s2, s3: integer; {x, y, s1, s2, s3 — глобальные переменные}

Procedure St (a, n: integer; Var s: integer);
{a, n, S — формальные параметры}

{a,n — параметры- значения, S — параметр -переменная }

Var i: integer; {i— локальная переменная}

Begin

S:=1;

For i:=1 to N do s:=s*a;

End; {ProcedureSt }

BEGIN

Read(x);

ST(x, 10,s1); ST(x, 5,s2); ST(x, 3,s3);

Y:=3*s1+2*s2+s3;

Write(y);

End.

 

Описание функции

Заголовок функции состоит из зарезервированного слова Function, за которым следует имя функции, затем в круглых скобках записывается список формальных параметров, далее ставится двоеточие и указывается тип результата функции (результат всегда один).

! В теле функции обязательно должен быть один и только один оператор присваивания, в левой части которого стоит имя функции, а в правой — ее значение. Иначе значение функции не определено.

Таким образом, общий вид описания функции следующий:

Function Имя [ (Список формальных параметров)]: Тип результата;

<Описательная часть>

Begin

<Тело функции>

End;

Вызов функции

Вызов функции осуществляется в выражениях с указанием имени и фактических параметров: например, y: =f(1,x)+f(2*x,3).

Пример . Найти

Решение.

Var n: integer;

c: integer;

Function Factor (n:integer): integer;

Var i:integer; rez: integer;

Begin

Rez:=1;

For i:=1 to N do

rez:=rez*i;

Factor:=rez;

End;

Begin

Readln (n);

с:=factor(n);

Writeln (c);

End.

 

 

Задания

1. Составьте программу для определения числа сочетаний , используя функцию при вычислении факториала.

2. С помощь следующей процедуры произведите обмен значениями между двумя переменными:

procedure Swap (var x,y: real);

var t:real; //промежуточная переменная

Begin

t:=x; //запоминаем значение x

x:=y; //переменной x присваиваем значение y

y:=t; //переменной y присваиваем t, равное x

end;

  1. Опишите функцию, определяющую максимальное из двух чисел, и с помощью этой функции вычислите значение выражения: .
  2. Даны значения c,d,l,k. Напишите функцию min для вычисления значения следующего выражения: .
  3. Ввести 3 целых массива из n чисел каждый: А, В, С. Вычислить значение , где max(A) — максимальный элемент массива А (аналогично max(B) и max(C)). Вычисление максимального элемента массива оформить в виде подпрограммы. Формула имеет смысл, если max(C)<>0.
  4. Треугольник задан длинами своих сторон. Найдите длины его медиан. Вычисление длины медианы оформить в виде подпрограммы ( – длина медианы, проведенной из вершины B).

***