Головна сторінка Випадкова сторінка КАТЕГОРІЇ: АвтомобіліБіологіяБудівництвоВідпочинок і туризмГеографіяДім і садЕкологіяЕкономікаЕлектронікаІноземні мовиІнформатикаІншеІсторіяКультураЛітератураМатематикаМедицинаМеталлургіяМеханікаОсвітаОхорона праціПедагогікаПолітикаПравоПсихологіяРелігіяСоціологіяСпортФізикаФілософіяФінансиХімія |
МОЛОДШИМИ ШКОЛЯРАМИДата добавления: 2015-10-19; просмотров: 1640
В математике функция – это зависимость некоторой переменной от других переменных (аргументов). В отличие от математического понятия функции в программировании рассматриваются такие функции, Для которых можно построить алгоритм (а следовательно, и программу) вычислеия значений, Значения которых относятся к простым типам (например, значением функции не может быть вектор, массив ). Структура функции в определенной мере по форме, также как и структура процедуры, совпадает со структурой программы, но имеет и существенные отличия: 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.
|