Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

2K_programuvanna / Практика / 1 mod / Lab_1_func_perem

.doc
Скачиваний:
29
Добавлен:
19.04.2015
Размер:
48.64 Кб
Скачать

ТЕМА : ФУНКЦИИ

Занятие 1. Передача переменных и выражений при вызове функций (передача данных по значению при вызове функции).

Пример 1 Предположим, необходимо вычислить

z=(ax+b)(cx+d)2+(acx+bd)3((a+c)x+b+d)4;

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

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

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

#include<stdio.h>

#include<math.h>

float f(float a, float x, float b, int stepen);

void main()

{

float z, a, x, b, c, d ;

puts(“Введите a,x,b,c,d ”);

scanf(“%f%f%f%f%f”,&a,&x,&b,&c,&d);

z=f(a,x,b,1)*f(c,x,d,2)+f(a*c,x,b*d,3)*f(a+c,x,b+d,4);

printf(“z=%f\n”,z);

}

float f(float a, float x, float b, int stepen)

{

float v;

v=pow(a*x+b,stepen);

return v;

}

Эту функцию можно было написать проще:

float f(float a, float x, float b, int stepen)

{

return pow(a*x+b, stepen);

}

При первом вызове f(a,x,b,1) фактические параметры имеют такие же имена, как и формальные. Однако еще раз следует подчеркнуть, что это разные переменные и для каждой, выделена своя память. Копии значений фактических переменных a,x,b присваиваются формальным параметрам a,x,b, а 1 присваивается формальному параметру stepen.

Возвращенный результат, в свою очередь, умножается на f(c,x,d,2). Теперь уже копии фактических параметров c,x,d присваиваются соответственно формальным параметрам a,x,b, а константа 2 присваивается формальному параметру stepen.

При вызовах f(a*c,x,b*d) и f(a+c,x,b+d) сначала вычисляются выражения, и копии результатов вычислений присваиваются формальным параметрам. Так, для f(a*c,x,b*d,3) результат умножения a*c будет присвоен формальному параметру а, а b*d – формальному параметру b.

При вызове f(a+c,x,b+d,4) результаты сложения a+c и b+d будут присвоены соответственно формальным параметрам а и b.

Так передаются при вызове функции данные по значению.

Задания для лабораторной работы

  1. Заданы массивы X[N],Y[N] (N<20). Сформировать массив Z[N], каждый элемент которого вычисляется по формуле

Вычисление Zi оформить в виде функции

  1. Заданы массивы X[N],Y[N] (N<20). Сформировать массив Z[N], каждый элемент которого вычисляется по формуле

Вычисление Zi оформить в виде функции

  1. Заданы массивы X[N],Y[N] (N<20). Сформировать массив Z[N], каждый элемент которого вычисляется по формуле

Вычисление Zi оформить в виде функции

4 Заданы массивы P[N],Q[N] (N<20). Сформировать массив Z[N], каждый элемент которого равен большему корню уравнения Z2+Pi Z+Qi=0, если дискриминант >=0, и рамен 1038, если дискриминант <0.

5 Заданы массивы P[N],Q[N] (N<20). Сформировать массив Z[N], каждый элемент которого равен меньшему корню уравнения Z2+Pi Z+Qi=0, если дискриминант >=0, и рамен -1038, если дискриминант <0.

6. Вычислить . Вычисления осуществить с использованием функции.

7. Вычислить . Вычисления осуществить с использованием функции.

8. Вычислить значения функции Х, если а изменяется от анач до акон с шагом Δа. Вычисления осуществить с использованием функции.

9. Вычислить значения функции Х, если а изменяется от анач до акон с шагом Δа. Вычисления осуществить с использованием функции.

10 . Вычислить значения функции у, если х изменяется от хнач до хкон с шагом Δх. Вычисления осуществить с использованием функции. Значение функции y=f(x) вычисляется в зависимости от номера точки i

i делится на 3 без остатка у=sin x ;

остаток от деления i на 3=1 y=cos x;

остаток от деления i на 3=2 y=tg x.

Соседние файлы в папке 1 mod