Структура подпрограммы-функции
Описание блока подпрограммы-функции в общем виде имеет следующую структуру: FUNCTION <имя> ( <формальные параметры> ) : <тип>; { раздел описаний: переменные, типы, метки} BEGIN { операторы функции } <имя> := <выражение> {имени функции присваивается значение} END; Функция передает в вызывающую программу единственное значение, которое хранится под ее именем. В качестве переменных могут использоваться параметры-переменные и параметры-значения. <Тип> функции должен соответствовать значению, которое вычисляется в данной подпрограмме (типу результата). В вызывающую подпрограмму передается значение функции данного типа. Вызов функции в программе производится не обособленно, как в процедуре, а в выражении указывается имя функции со списком параметров.
Примеры и задания с подпрограммой-функцией Пример 1. Вычислить вторую и N-ю степени числа Х. PROGRAM FUNC; VAR X: REAL; N: INTEGER; FUNCTION STEPEN(M: INTEGER; A: REAL): REAL; VAR P: REAL; I: INTEGER; BEGIN P := 1; FOR I :=1 TO M DO P := P*A; STEPEN := P; END; BEGIN READ(X,N); WRITELN(' X=', X, ' квадрат', STEPEN(2,X)); WRITELN(' X=', X, ' степень', STEPEN(N,X)); END. Пример 2. Даны три массива A (5), B (5), C (5). Найти среднее арифметическое значение наименьших элементов массивов. До написания программы разрабатывается СА главной программы (рис. 14, а) и СА для подпрограммы нахождения наименьшего элемента в любом массиве (рис. 14, б). Отлаженная программа решения задачи имеет следующий вид: Program lr8; type mass = array[1..5] of integer; const a: mass = ( 5,2,7,1,8 ); {заданы массивы констант} b: mass = ( 3,4,5,6,6 ); c: mass = ( 3,8,5,2,6 ); var n: integer; sr: real; FUNCTION minim(d:mass) : integer; {заголовок функции} var i, min: integer; begin {начало блока операторов функции} min:=d[1]; for i:=2 to 5 do if d[i]<min then min:=d[i]; writeln('минимальный элемент равен ',min); minim := min {имени функции присваивается значение} end; {конец блока функции} BEGIN {блок основной программы} sr: = (minim(a) + minim(b) + minim(c)) /3; {три обращения к функции} writeln(' sr = ', sr:5:2); END. Задание 1 Написать и отладить программы для задач из пп. 3.7 и 6.4 с применением подпрограммы-функции с параметрами. Вычисление функции (или обработку массива) выполнить в подпрограмме, а ввод исходных данных и вывод результатов - в основной программе. Предусмотреть, по крайней мере, два обращения к функции с различными фактическими параметрами. Для отладки программ использовать средства системы Pascal ABC: пошаговое исполнение программы (трассировку) с контролем значений переменных в окне отладчика. Задание 2 1. По заданным вещественным массивам A [1..6], B [1..6] и C [1..6] вычислить (max B)/max A + (max C)/max(B+C) при min A < max B, max(B+C) + max C в противном случае. 2. Даны два двумерных массива целых чисел А [1…5], B [1…5]. Напечатать квадрат того из них, в котором наименьший след (сумма диагональных элементов), считая, что такой массив один. 3. Определить координаты центра тяжести трех материальных точек с массами m1, m2, m3 и координатами (x1,y1), (x2,y2), (x3,y3) по формулам xc = (m1x1+m2x2+m3x3)/(m1+m2+m3), yc = (m1y1+m2y2+m3y3)/(m1+m2+m3). Вычисление координаты оформить функцией с параметрами. 4. Вычислить все медианы для каждого из трех треугольников по заданным в массивах A, B, C сторонам: ma = 0.5 , mb = 0.5 , mc = 0.5 . Вычисление медианы оформить функцией. 5. Даны три одномерных массива вещественных чисел A [1..6], B [1..8] и С [1..7]. Найти общую сумму положительных элементов в массивах. Нахождение суммы элементов в массиве оформить функцией. 6. Даны два двумерных массива целых чисел с размерами (4х5) элементов. Подсчитать количество отрицательных элементов в каждом из них. 7. Даны два одномерных массива целых чисел A [1..8] и B [1..8]. Найти сумму их максимальных элементов. Для нахождения максимального элемента в массиве использовать функцию. 8. Даны два двумерных массива целых чисел по (5х5) элементов каждый. Подсчитать произведение элементов главных диагоналей в каждом из них. 9. Даны три одномерных массива вещественных чисел A [1..6], B [1..8] и С [1..7]. Найти среднее геометрическое значение положительных элементов для каждого. 10. Даны две матрицы целых чисел M [1..3,0..1], К [1..3,0..2]. Найти среднее арифметическое значение для каждой из них. 11. Даны три одномерных массива целых чисел A [1..6], B [1..8] и С [1..7]. Подсчитать количество неотрицательных элементов в каждом. 12. Даны две матрицы целых чисел S [1..3,0..2], К [1..3,0..2], в каждой из которых имеется по два одинаковых числа. Распечатать их значения. 13. Даны два одномерных массива целых чисел A [1..6] и B [1..8]. Вычислить значение Z = (min A[i] + min B[j]) / min (A[i]+B[j]). i j i, j 14. По заданным целым массивам X[0..7] и Y[8..15] вычислить xi2 при xi yi+8 > 0, yi2 в противном случае. 15. Дана матрица целых чисел D [1..6,1..5]. Найти наименьшую из сумм неотрицательных элементов строк матрицы. Для вычисления суммы использовать подпрограмму (функцию). 16. Дана матрица целых чисел E [1..3,1..5]. Используя функцию, найти среднее геометрическое значение для каждого столбца матрицы. 17. Дана матрица целых чисел F [1..4,1..5]. Найти наименьшие значения элементов в каждой из строк матрицы с помощью функции. 18. Даны две квадратные вещественные матрицы шестого порядка. Напечатать квадрат той из них, в которой наименьший след (сумма диагональных элементов), считая, что такая матрица одна. 19. Сформировать двумерный массив: 1 2 3 4 5 1 4 9 16 25 1 8 27 64 125 ... … Найти правило и оформить функцией вычисление любой строки. 20. Даны две матрицы целых чисел V [1..2,1..3], W [1..3,1..2]. Найти суммы элементов строк и столбцов в этих матрицах. ©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.
|