Студопедія
рос | укр

Головна сторінка Випадкова сторінка


КАТЕГОРІЇ:

АвтомобіліБіологіяБудівництвоВідпочинок і туризмГеографіяДім і садЕкологіяЕкономікаЕлектронікаІноземні мовиІнформатикаІншеІсторіяКультураЛітератураМатематикаМедицинаМеталлургіяМеханікаОсвітаОхорона праціПедагогікаПолітикаПравоПсихологіяРелігіяСоціологіяСпортФізикаФілософіяФінансиХімія






МОЛОДШИМИ ШКОЛЯРАМИ


Дата добавления: 2015-10-19; просмотров: 270


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

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

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

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

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.

 


<== предыдущая лекция | следующая лекция ==>
САМОСТІЙНИМ ДИТЯЧИМ ЧИТАННЯМ | Із яких є тентів • ■ « т т
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | <== 18 ==> | 19 | 20 | 21 | 22 | 23 | 24 |
studopedia.info - Студопедія - 2014-2017 год.
Генерация страницы за: 0.306 сек.