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.


 

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

7761. Педагогические технологии в образовательном процессе 76 KB
  Педагогические технологии в образовательном процессе. Из истории становления понятия педагогической технологии Технология (от греч. techne - искусство, мастерство, ремесло, умение и logos - учение, наука) - совокупность методов обра...
7762. Сущность проблемного обучения 72.5 KB
  Сущность проблемного обучения. Определение сущности проблемного обучения. Его основные понятия. Одним из перспективных направлений активизации учебной деятельности учащихся, развития у них познавательных интересов, творческих способностей самостоят...
7763. Дидактическая система развивающего обучения 63 KB
  Дидактическая система развивающего обучения. Из истории становления развивающего обучения Развивающее обучение - это ориентация учебного процесса на потенциальные возможности учащегося и их реализацию. Теория развивающего обучения берет...
7764. Сущность личностно-ориентированного образования школьников 59.76 KB
  Сущность личностно-ориентированного образования школьников. Сущность личностно-ориентированного образования в школе (определение, цель, принципы) Определение. Личностно-ориентированный образовательный процесс представляет собой не аккумуляти...
7765. Теория и практика воспитания детей и учащейся молодежи 135.5 KB
  Теория и практика воспитания детей и учащейся молодежи. Теоретические основы воспитания: закономерности, цели, принципы. В условиях социальных преобразований в обществе к человеку предъявляются требования активности, мобильности, готовности жить...
7766. Воспитание учащихся в духе ненасилия и мира 99.5 KB
  Воспитание учащихся в духе ненасилия и мира. Сущность концепции культуры мира. Педагогика мира В последние десятилетия обострились глобальные проблемы человечества, связанных с мирным сосуществованием народов планеты, экологией, демографичес...
7767. Гражданское образование школьников 92 KB
  Гражданское образование школьников. Сущность гражданского образования и модели его реализации в учебно-воспитательном процессе школы. Гражданин - это одна из основных социальных ролей человека, которая охватывает широкую сферу социальных отно...
7768. Профессиональная педагогическая деятельность: сущность, структура, особенности 90.5 KB
  Профессиональная педагогическая деятельность: сущность, структура, особенности. Требования к личности учителя и структуре педагогической деятельности В условиях реформирования высшей и средней школы, при которых вариативность и дифференциаци...
7769. Педагогика. Краткий терминологический словарь 52 KB
  Краткий терминологический словарь Активные методы обучения - это методы обучения, основанные на самостоятельной творческой деятельности учащихся по разрешению задач и ситуаций. Активные методы обучения повышают степень мотивации и эм...