36569

Функции: описание и вызов функции

Контрольная

Информатика, кибернетика и программирование

В отличие от процедур функции не являются отдельными операторами. Функции возвращают значения результат обращения к ним и предназначены для использования в составе выражений или в качестве выражений. Это накладывает определенный отпечаток на синтаксическую структуру описания функций которая имеет вид: function имя функции [ список формальных параметров ]: тип функции ; описание локальных имён begin тело функции последовательность операторов end; В заголовке описания функции обязательно указывается тип вырабатываемого функцией...

Русский

2013-09-22

32 KB

3 чел.

Функции: описание и вызов функции.

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

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

< описание локальных имён >

begin

< тело функции - последовательность операторов >

end;

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

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

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

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

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

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

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

Замечание: Используя так называемый расширенный синтаксис, можно вызывать функцию как процедуру (т.е. как оператор). Для включения расширенного синтаксиса имеется директива компилятора {$X+}. Это находит применение при инициализации динамических объектов.

Приведем пример программы triangle2, отличающейся от triangle1 тем, что вместо процедуры d использована функция dist:

 

program triangle2; {Программа, вычисляющая длины сторон треугольника АВС}

 uses CRT;

 type point = array [1..2] of real; {тип- точка на плоскости}

 var A,B,C:point; {вводимые точки}

ch:char;

function dist(X,Y:point):real;{ расстояние между точками X и Y }

 begin dist:= sqrt(sqr(X[1]-Y[1])+sqr(X[2]-Y[2]))

 end { dist};

 BEGIN TextBackground(cyan);TextColor(white);ClrScr;

window(10,5,60,10);TextBackground(green); ClrScr;

 repeat

writeln(' Введите координаты вершин A,B,C:');

writeln('A[1] A[2] B[1] B[2] C[1] C[2] ');

readln(A[1],A[2],B[1],B[2],C[1],C[2]);

 writeln(' Длины сторон треугольника АВС:');

 writeln(' AB=',dist(A,B):2:2,' AC=',dist(A,C):2:2,' BC =',dist(B,C):2:2);readln(ch)

 until ch=' ';

END {triangle}.

Задача 4.2.6(7)

program alex7;

type mas=array[1..5,1..4]of integer;

var a:mas;

i,j,x,y:integer;

procedure raz(b:mas;n,m:Integer;var d:integer);

var i,j:integer;

begin

d:=0;

for j:=n to m do

for i:=1 to 5 do

if b[i,j]=0 then d:=d+1;

end;

begin

for i:=1 to 5 do

for j:=1 to 4 do

read(a[i,j]);

raz(a,1,2,x);

raz(a,3,4,y);

if x>y then Writeln('v levoi bolshe')

else if x<y then Writeln('v pravoi bolshe');

if x=y then Writeln('odinakovo');

readln;

end.


 

А также другие работы, которые могут Вас заинтересовать

15697. Красота в природе 215 KB
  Владимир Сергеевич Соловьёв Красота в природе Красота спасет мир. Достоевский Странно кажется возлагать на красоту спасение мира когда приходится спасать саму красоту от художественных и критических опытов старающихся заменить идеальнопрекрас
15698. НАЧИНАЕМ РАБОТУ: ПОДГОТОВКА ДАННЫХ И ПРЕДВАРИТЕЛЬНЫЙ АНАЛИЗ 82 KB
  Лабораторная работа 1. Начинаем работу: подготовка данных и предварительный анализ Для того чтобы создать таблицу с данными: Запустите программу STATISTICA Создайте свой файл File  New  ОК. Программа создает пустую таблицу содержащую 10 строк и 10 с...
15699. ОПИСАТЕЛЬНАЯ СТАТИСТИКА И ГРАФИКИ 78 KB
  Лабораторная работа 2. описательная статистика и графики Описательные статистики: минимум максимум среднее дисперсия стандартное отклонение медиана квартили мода и т.д. Идея этих статистик очень проста: вместо того чтобы рассматривать...
15700. ЧАСТИЧНАЯ КОРРЕЛЯЦИЯ 49.5 KB
  Лабораторная работа 3. ЧАСТИЧНАЯ Корреляция Задание 3.1: научимся считать частичную корреляцию Коэффициент частичной корреляции можно посчитать так Statistics Basic Statistics/Tables Correlation Matrices Advanced/Plot 3.1.1. Откройте уже знакомый файл Empl_Data.sta в программе STATISTICA 3.1.2....
15701. КОРРЕЛЯЦИЯ И ПРОСТАЯ ЛИНЕЙНАЯ РЕГРЕССИЯ 109.5 KB
  Лабораторная работа 3. Корреляция и простая линейная регрессия Коэффициент корреляции – это показатель степени связи. Он изменяется от –1 до 1. Величина по модулю коэффициента корреляции показывает силу связи чем больше величина тем сильнее с
15702. ТАБЛИЦЫ СОПРЯЖЕННОСТИ 159 KB
  Лабораторная работа 4. таблицы сопряженности Студент пишет дипломную работу на тему Влияние личностных характеристик на поведение в конфликтной ситуации и возможности коррекции этого самого поведения. Он считает что на поведение в конфликтной ситуации могут ока...
15703. ПРОВЕРКА ГИПОТЕЗ. ПРОСТЫЕ ЭКСПЕРИМЕНТАЛЬНЫЕ СХЕМЫ 80.5 KB
  Лабораторная работа 5. ПРОВЕРКА ГИПОТЕЗ. ПРОСТЫЕ ЭКСПЕРИМЕНТАЛЬНЫЕ СХЕМЫ. Задание 5: простая межгрупповая схема Исследователь хочет проверить имеют ли цветные стимулы преимущество перед чернобелыми что является важным для создания рекламы. Он показывает о...
15704. ПРОВЕРКА ГИПОТЕЗ. ОДНОФАКТОРНЫЙ ДИСПЕРСИОННЫЙ АНАЛИЗ И ЕГО НЕПАРАМЕТРИЧЕСКИЕ АНАЛОГИ 82 KB
  Лабораторная работа 6. ПРОВЕРКА ГИПОТЕЗ. однофакторный Дисперсионный анализ и его непараметрические аналоги. Задание 7: однофакторный дисперсионный анализ Эрнст Кречмер немецкий психолог разделил людей на четыре категории по типу конституции: астеники...
15705. МНОГОФАКТОРНЫЙ ДИСПЕРСИОННЫЙ АНАЛИЗ (МЕЖГРУППОВАЯ СХЕМА) 63 KB
  Лабораторная работа 7. ПРОВЕРКА ГИПОТЕЗ. многофакторный Дисперсионный анализ межгрупповая схема Задание 10: многофакторный дисперсионный анализ Рассмотрим случай когда в исследовании больше одной независимой переменной. Исследователь интересуется как изме