36569

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

Контрольная

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

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

Русский

2013-09-22

32 KB

5 чел.

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

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

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.


 

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

76812. Двенадцатиперстная кишка 181.15 KB
  Голотопическая проекция кишки приходится на эпигастральную и околопупочную области. Строение стенки Слизистая оболочка с подслизистой основой образует циркулярные складки во всех отделах кишки. Топография кишки Двенадцатиперстная кишка располагается большей своей частью забрюшинно у задней брюшной стенки на уровне ХII грудного III поясничного позвонков проецируется на эпигастральную и околопупочную области.
76813. Брыжеечная часть тонкой кишки (тощая и подвздошная), строение, стенки, кровоснабжение, иннервация 185.11 KB
  Брыжеечная часть называется по наличию у тощей и подвздошной кишки брыжейки которая представляет собой двойной листок брюшины косо прикрепляющийся к задней брюшной стенке по линии слева направо от второго поясничного позвонка к правому...
76814. Толстая кишка 189.72 KB
  Железы кишки выделяют мало ферментов всасывание ограничивается изза отсутствия кишечных ворсинок. Отличительные анатомические признаки: продольные ленты tenie coli: брыжеечная сальниковая свободная tenie mesocilic tenie omentlis tenie liber сформированные длинными гладкомышечными пучками; гаустры hustre coli поперечные вздутия с поперечными бороздами между ними образованные за счет перераспределения продольных и круговых мышц; сальниковые отростки ppendicis epiploice до 45 см длиной в виде пальцевидных выростов...
76815. Слепая кишка: строение, отношение к брюшине. Топография червеобразного отростка, кровоснабжение, иннервация 184.72 KB
  В ней присутствуют все отличительные признаки толстой кишки: продольные ленты и гаустры сальниковые привески и другие признаки толстой кишки. В просвет кишки с медиальной стороны открывается илеоцекальное отверстие в виде горизонтальной щели ограниченной верхней и нижней полулунными складками слизистой которые по углам сходятся и образуют уздечку. Всё вместе взятое складки уздечка мышца составляют илеоцекальный клапан Баугиниеву заслонку vlv ileoceclis регулирующий порционное продвижение пищевой массы из тонкой кишки в толстую....
76816. Прямая кишка 183.75 KB
  На положение и фиксацию кишки значительное влияние оказывает крестцовокопчиковое искривление нижняя часть которого служит своеобразной опорой. Начало кишки находится на уровне третьего крестцового позвонка и левого подвздошнокрестцового сустава. На положение и размеры кишки особенно влияют сигмовидная кишка и матка мышцы и клетчатка тазового дна и промежности. С прямой кишки брюшина переходит на органы малого таза расположенные перед кишкой образуя у мужчин ректовезикальное углубление excvtio rectovesiclis а у женщин ...
76817. Печень, ее развитие, строение, топография, кровоснабжение и иннервация, региональные лимфатические узлы 186.78 KB
  Печень hepr развивается из первичного эпителия энтодермы эмбриональной первичной кишки. Из переднего возникает печень из заднего желчный пузырь. Развивающаяся печень врастает между листками вентральной брыжейки сохраняя связь с кишкой благодаря растущему холедоху.
76818. Желчный пузырь. Выводные протоки желчного пузыря и печени. Кровоснабжение и иннервация желчного пузыр 184.91 KB
  Выводные протоки желчного пузыря и печени. Желчный пузырь vesic felle biliris seu cholecystis прирастает к висцеральной поверхности правой доли печени в одноименной ямке что лежит в передней половине правой сагиттальной борозды. Дно fundus vesic felle есть слепо расширенный конец выступающий из под нижнего края печени на уровне сращения VIIIIХ реберных хрящей справа. Тело corpus vesic felle сужается по направлению к воротам печени и плавно сливается с шейкой над которой нередко нависает в виде своеобразного кармана прилежащая...
76819. Поджелудочная железа, развитие, топография, строение, выводные протоки, внутрисекреторная часть, кровоснабжение, иннервация, региональные лимфатические узлы 185.67 KB
  Внутрисекреторная эндокринная часть железы создаёт инсулин глюкагон соматостатин липокаин и другие гормоны для обменных процессов и роста во всем организме. Развитие железы осуществляется из переднего и заднего выростов эпителия первичной кишки в месте образования дуоденум. Аномалия развития добавочные дольки железы. Масса органа 80 г длина 1418 см ширина 9 см толщина 23 см внутрисекреторная часть составляет 12 от массы железы.
76820. Верхний этаж брюшной полости 180.02 KB
  Брюшина верхнего этажа с диафрагмы переходит на выпуклую диафрагмальную поверхность печени образуя серповидную венечную и треугольные связки которые отграничивают внебрюшинное поле печени прирастающее к диафрагме. В последней в направлении справа налево располагается холедох воротная вена собственная артерия печени. Желудок брюшина покрывает интраперитонеально переходя на него с печени по малому сальнику. Париетальная брюшина в верхнем этаже образует три сумки: печеночную для правой и квадратной долей печени преджелудочную для...