Студопедия — ФУНКЦИИ
Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

ФУНКЦИИ






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

Для которых можно построить алгоритм (а следовательно, и программу) вычислеия значений,

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

Структура функции в определенной мере по форме, также как и структура процедуры, совпадает со структурой программы, но имеет и существенные отличия:

Function имя_функции[(список параметров)]: тип_функции;

{раздел объявления локальных объектов функции: констант,

типов, переменных:}

const…

type…

var…

Begin

{операторная часть или тело функции}

End;

Примечание. В отличие от процедуры для функции необходимо выполнять следующие требования

В заголовке всегда указывается тип функции;

в списке параметров записываются только те параметры, значения которых передаются (вводятся) из вызывающей программы, но не возвращаются в программу;

значение функции, возвращаемое вызывающей программе, присваивается имени функции, поэтому операция присваивания имени функции (уже без указания параметров) вычисленного значения – обязательная в операторной части описания функции; эта операция присваивания – последняя в операторной части функции;

обращение к функции из вызывающей программы состоит в написании имени функции и в подстановке фактических значений всех формальных параметров;

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

Функция, в отличие от процедуры, не является самостоятельной подпрограммой, поэтому обращение к функции из вызывающей программы будет корректным в одном из двух случаев:

1)имя функции присваивается некоторой переменной или

Имя функции входит составной частью (как переменная) в некоторое выражение.

Ниже рассмотрены примеры описания и применения функций.

 

Пример 15. Даны четыре произвольных числа a,b,c,d. Найти максимальное, используя функцию fmax2 выбора большего из двух чисел.

Program max_4;

Var a,b,c,d:real;

y1,y2,z:real;

Function fmax2(x1,x2:real):real;

Var fm:real;

begin if x1>x2 then fmax2:=x1 else fmax:=x2

End;

begin write(‘Введите 4 числа’);read(a,b,c,d);

y1:=fmax2(a,b); y2:=fmax2(c,d); z:=fmax2(y1,y2);

writeln(‘Максимальное число: ’,z:8:2); readln

end.

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

Z:=fmax2(fmax2(a,b),fmax2(c,d));

Или еще короче – выражение, вычисляющее результат, записывается в качестве параметра процедуры вывода:

writeln(‘Максимальное число: ’, max2(fmax2(a,b),fmax2(c,d)):8:2);

 

Пример 16. Функция F_middle вычисляет среднее значение элементов одномерного массива целых чисел {Тип массива А должен быть объявлен в вызывающей программе

Type TA=array[1..30] of integer;}:

Function f_middle (n:integer; A:TA):real;

Var i:integer; s:real;

Begin s:=0;

For i:=1 to n do s:=s+A[i]; s:=s/n;

F_middle:=s

End;

Пример 17. В программе формируется двумерный массив (матрица) целых чисел, получаемых с помощью стандартной функции генерирования случайных чисел в диапазоне (0..50). Применяя функцию, описанную в предыдущем примере, в данной программе вычисляются и выдаются на экран ПК средние значения строк и средние значения столбцов матрицы.

program m_s;

type T1= array[1..10] of integer;

var i,j,n,m:integer;

mas:array[1..10,1..15]; {матрица исходных чисел}

mas1:array[1..15] of real; mas2:array[1..10] of real;{массивы для хранения текущей строки и текущего столбца матрицы}

Function f_middle (n:integer; A:Т1):real;

Var i:integer; s:real;

Begin s:=0;

For i:=1 to n do s:=s+A[i]; s:=s/n;

F_middle:=s

End;{function middle}

Begin writeln(‘Задайте размерность матрицы: ’);

Write(‘Количество строк N= ’);read(n);

Write(‘Количество чисел в строке М=’);read(m);

{Задание значений и печать элементов матрицы}

Writeln(‘Исходная матрица:’);

for i:=1 to n do

begin

For j:=1 to m do

Begin mas[i,j]:=random(51); write(mas[i,j])

End; writeln

End;

Writeln;

Writeln(‘Средние значения элементов строк:’);

For i:=1 to n do

Begin

{Элементы i-той строки копируются, образуя массив mas1:}

For j:=1 to m do mas1[j]:=mas[i,j];

{на монитор выдается в форме с фиксированной точкой рассчитанное с помощью функции среднее значение текущей i-той строки:}

write(i,’-й строки: ’, f_middle(m, mas1):8:3);

end;

writeln;

Writeln(‘Средние значения элементов столбцов:’);

For j:=1 to m do

Begin

{Элементы j-того столбца копируются, образуя массив mas2:}

For i:=1 to n do mas2[i]:=mas[i,j];

{на монитор выдается в форме с фиксированной точкой вычисленное с помощью функции среднее значение текущего j-того столбца:}

write(j,’-го столбца: ’, f_middle(n, mas2):8:3);

end;

writeln; writeln(‘Для выхода из программы нажать Enter’);

readln

End.

 







Дата добавления: 2015-10-19; просмотров: 333. Нарушение авторских прав; Мы поможем в написании вашей работы!



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

Картограммы и картодиаграммы Картограммы и картодиаграммы применяются для изображения географической характеристики изучаемых явлений...

Практические расчеты на срез и смятие При изучении темы обратите внимание на основные расчетные предпосылки и условности расчета...

Функция спроса населения на данный товар Функция спроса населения на данный товар: Qd=7-Р. Функция предложения: Qs= -5+2Р,где...

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

Особенности массовой коммуникации Развитие средств связи и информации привело к возникновению явления массовой коммуникации...

Тема: Изучение приспособленности организмов к среде обитания Цель:выяснить механизм образования приспособлений к среде обитания и их относительный характер, сделать вывод о том, что приспособленность – результат действия естественного отбора...

Выработка навыка зеркального письма (динамический стереотип) Цель работы: Проследить особенности образования любого навыка (динамического стереотипа) на примере выработки навыка зеркального письма...

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

Правила наложения мягкой бинтовой повязки 1. Во время наложения повязки больному (раненому) следует придать удобное положение: он должен удобно сидеть или лежать...

Studopedia.info - Студопедия - 2014-2024 год . (0.008 сек.) русская версия | украинская версия