Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Глобальная переменная объявляется вне каких-либо функций, в том числе main. Она может использоваться в любом месте программы, начиная от места объявления. Полной противоположностью глобальной переменной является локальная переменная, которая описывается внутри функции. Областью ее действия является функция. Между вызовами одной и той же функции значение локальной переменной не сохраняется. Если этого требуется избежать, при объявлении локальных переменных используется модификатор static, например:
...........
static int n=0; n++; //при повторном вызове n=1, далее n=2 и т.д.
...........
Если локальная и глобальная переменные имеют одно и то же имя, то локальная переменная "блокирует" в функции действие глобальной переменной, т.е. глобальная переменная в этом случае не видима.
Использование глобальных переменных в функциях не рекомендуется, так как это препятствует их помещению в библиотеку общего пользования. Необходимо всегда стремиться к тому, чтобы функции были максимально независимыми и обменивались информацией через свои заголовки.
Пример. Составить программу вычисления значения
,
при k =10, m =4, d =2,5; bi =1…4,6; ci =1…3,6.
Вычисление суммы и факториала оформить в виде функций.
Программа для решения данной задачи приведена в лист. 6.1.
Листинг 6.1. faktorial. сpp
#include <iostream.h>
#include <math.h>
#include <iomanip.h>
float d=2.5; //Глобальная переменная
//Прототип функции summ с параметром по умолчанию
double summ(double,double,int,int=2);
//Описание основной функции main
void main() /*Функция main не имеет параметров
и не возвращает значение*/
{
int k,m; //Локальные переменные
double b1,bk,c1,ck,y,y1,y2; //функции main
//Ввод исходных данных
cout<<"k=";cin>>k;
cout<<"m=";cin>>m;
cout<<"b1=";cin>>b1; //Начальное значение bi
cout<<"bk=";cin>>bk; //Конечное значение bi
cout<<"c1=";cin>>c1; //Начальное значение ci
cout<<"ck=";cin>>ck; //Конечное значение ci
y1=tan(d)*summ(b1,bk,k); //Параметр по умолчанию опущен
y2=exp(d)*summ(c1,ck,m,3); //Параметр по умолчанию изменен
y=y1+y2;
cout<<"\nПолученный результат:";
cout<<"y="<<setw(8)<<y;
}
unsigned long fact(int); //Прототип функции fact
//Описание функции вычисления суммы summ
double summ(double x1,double xk,int p,int q) //Заголовок
{ double x=x1,s=0,h; //Локальные переменные
h=(xk-x1)/(p-1); //Вычисление шага
for(int i=1;i<=p;i++)
{
s+=(pow(x,q)+d)/fact(q*i); //Вызов функции fact
x+=h;
}
return s; //Возвращение результата
}
//Описание функции вычисления факториала fact
unsigned long fact(int a) //Заголовок функции fact
{
unsigned long f=1; //Локальная переменная f
if(a==0) return 1; //Первый оператор возврата
for(int j=1;j<=a;j++)
f*=j;
return f; //Второй оператор возврата
}
Дата публикования: 2014-11-02; Прочитано: 297 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!