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.


 

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

64159. Розробка тестових завдань та автоматизованої системи тестування для перевірки та оцінювання поточних знань студентів з дисциплін «Інформатика. Обчислювальна математика та програмування» та «Комп’ютерні мережі» 1.44 MB
  Використання комп’ютерів для контролю знань є економічно вигідним і забезпечує підвищення ефективності навчального процесу. Як зазначає І. Булах, комп’ютерне тестування успішності дає можливість реалізувати основні дидактичні принципи контролю навчання: принцип індивідуального характеру перевірки й оцінки знань...
64160. Разработка и исследование ускоренного алгоритма калибровки моделей больших сетей по коэффициенту кластеризации 1.56 MB
  Целью работы является изучение алгоритмов генерации случайных графов, разработка нового алгоритма, его реализация, проведение необходимых испытаний. В работе изложены необходимые понятия из теории случайных графов, подробно разбираются методы генерации графов Барабаши-Альберт, Эрдеша-Реньи, Уатса-Строгатса...
64162. Аналіз та прогнозування потоків вхідної та вихідної кореспонденції у Ширяївському ЦПЗ №4 Одеської дирекції «Укрпошта» 2.65 MB
  Зміст розрахунково-пояснювальної записки перелік питань які потрібно розробити Основні методи аналізу часових рядів Тенденція і коливання часових рядів Періодизація динаміки часових рядів Стійкість рівня ряду та тренда Регресійний аналіз Сингулярний спектральний аналіз...
64163. Определение оптимальных способов обеспечения безопасности на железнодорожных переездах Ижевского отделения ГЖД 9.19 MB
  Автомобилисты не осознают что шлагбаум это не очередное препятствие которое железнодорожники установили у них на пути а устройство прямое назначение которого уберечь автомобиль и находящихся в нем людей от проходящего железнодорожного состава эффект от вложенных в охрану переездов средств будет минимальным.
64164. Синтез ансамблей гетероциклов на основе тиазола 2.91 MB
  В данном дипломном проекте разрабатываются методы получения 4 оксотиазолидин 25 диилиденов Составлена технологическая схема получения роданина и приведено описание технологического процесса производства. Химическая схема получения роданина...
64165. Разработка и обоснование мероприятий по усовершенствованию укрытия и защиты населения Октябрьского района города Ижевска 896 KB
  Размещение защитных сооружений гражданской обороны Укрытие населения района категорированного города Размещение и укрытие населения Октябрьского района г. Ижевска в защитных сооружениях гражданской обороны подвальных и других заглубленных помещениях Расчет строительства простейших укрытий...
64166. Разработка предложений по совершенствованию контроля качества тяжелых бетонных смесей на предприятии ООО «ПКФ Стройбетон» 233.98 KB
  Во втором разделе описывается существующие технологии контроля качества бетона на различных этапах его использования: при погрузке транспортировке укладке уходе за бетоном. Показатели качества бетона и бетонной смеси Приготовление бетонной смеси и ее использование в строительстве...
64167. Процесс управления рисками в отношении качества услуг ООО «ПИТЦ «Геофизика» 12.75 MB
  Описание существующего процесса управления рисками Обоснование необходимости улучшения процесса управления рисками в отношении качества услуг ООО ПИТЦ Геофизика Разработка предложений по улучшению процесса управления рисками Сбор информации и анализ существующих методов оценки рисками...