Функции, определяемые пользователем


 

Помимо стандартных числовых функций (sin, cos и т.д.) или символьных функций пользователь может определить и свои собственные. Иногда при решении задач возникает необходимость вычисления одного и того же выражения при различных значениях величин, входящих в это выражение. Вот тогда и применяются функции, определяемые пользователем.

Формат:

DEF FN <имя функции>(<список формальных параметров>)=<выражение>

Обращение к функции пользователя осуществляется

FN <имя функции>(<список фактических параметров>)

Имя определяемой функции должно быть уникально: оно не может повторять имя другой процедуры, переменной или функции.

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

DEF FNKT(X)=COS(X)/SIN(X)

DEF FNP(A,B)=A/B*100

X,A,B – формальные параметры

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

FNKT(X)

FNP(C,D)

X,C,D - фактические параметры

Имена формальных и фактических параметров могут не совпадать.

С помощью оператора DEF FN можно описать более сложную функцию, занимающую несколько строк

Формат:

DEF FN <имя функции>(<список аргументов>)

<блок команд>

FN<имя функции>=<выражение>

END DEF

В строке FN<имя функции>=записывается выражение, значение которого функция возвращает.

Пример1. Отрезки заданы координатами концов. Сравнить эти отрезки.

DEF FNL(x1,x2,y1,y2)=SQR((x1-x2)^2+(y1-y2)^2) ‘функция нахождения длины отрезка

INPUT “введите координаты первого отрезка”,x1,x2,y1,y2

L1=FNL(x1,x2,y1,y2)

INPUT “введите координаты второго отрезка”,x1,x2,y1,y2

L2=FNL(x1,x2,y1,y2)

IF L1>L2 THEN

? “длина первого отрезка больше”

ELSEIF L2>L1 THEN

? “длина второго отрезка больше

ELSE

? “отрезки равны”

END IF

Пример 2. Вычислить сложное выражение, используя определяемую функцию для вычисления повторяющейся в нем части.

K=½(1+m^2)/cos(1-m)½–5*Ö½(c+d^2)/cos(c-d)½+tg½(x+y^2)/cos(x-y)½

 

DEF FNT(a,b)=abs((a+b^2)/cos(a-b))

INPUT “Введите 5 значений”,m,c,d,x,y

K=FNT(1,m)-5*sqr(FNT(c,d))+tan(FNT(x,y))

? “K=”;K

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

S=1!/4!+4!/5!+9!/6!+16!/7!+…+(n^2)!/(n+3)!

 

DEF FNFACT(M)

P=1

FOR I=1 TO M

P=P*I

NEXT I

FNFACT=P

END DEF

INPUT “Введите n”;N

S=0

FOR J=1 TO N

S=S+FNFACT(J^2)/FNFACT(J+3)

NEXT J

? “S=”;S

 

Задание:

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

C=Ö(d+½e½)/tg(de)+(x+½y½)/tg(xy)-(z+½t½)/tg(zt)

2. Вычислить функцию: C = m!n!/(m-n)!. Для вычисления факториала использовать определяемую функцию.

 

Практическое занятие с использованием подпрограмм и функций пользователя

1 вариант

  1. Дан массив с оценками учащихся. Найти средний балл учащихся. Подсчитать количество 5 и 4. Заполнение массива, подсчет среднего балла и подсчет количества оценок оформить отдельными подпрограммами.
  2. Задана матрица W(5,6). Отрицательные элементы матрицы заменить на 0. измененный массив вывести на экран. Обработку элементов массива оформить в подпрограмме.

2 вариант

1. Дан одномерный массив со значениями веса кур на птицефабрике. Найти средний вес кур. Найти вес самой тяжелой курицы. Заполнение массива, подсчет среднего веса и нахождение веса самой тяжелой курицы оформить отдельными подпрограммами.

  1. Найти произведение элементов массива R(7,5) в строках с четными номерами. Обработку элементов массива оформить в подпрограмме.

 

 



Дата добавления: 2016-06-15; просмотров: 1979;


Поиск по сайту:

Воспользовавшись поиском можно найти нужную информацию на сайте.

Поделитесь с друзьями:

Считаете данную информацию полезной, тогда расскажите друзьям в соц. сетях.
Poznayka.org - Познайка.Орг - 2016-2024 год. Материал предоставляется для ознакомительных и учебных целей.
Генерация страницы за: 0.01 сек.