Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции за I семестр 2014 - суммарный текст / Лекции за I семестр 2014 - суммарный текст.doc
Скачиваний:
209
Добавлен:
17.03.2016
Размер:
1.36 Mб
Скачать

Void main(){

int N,K; double D;

cout<<"Vvedite N,K :";

cin>>N>>K;

D=fact(N)+fact(K)+fact(N+K);

cout<<D<<endl;

getch();

}

Задача 2. Вычислить синус, косинус, тангенс и котангенс введенного числа. Каждое вычисленное значение выводить в отдельной строке, а перед ним - строку из звездочек.

#include<iostream.h>

#include<conio.h>

#include<math.h>

void st(void){

cout<<"\n*******************************\n "; }

void main(){

double x;

cout<<"Vvedite x :";

cin>>x;

st();

cout<<"sin="<<sin(x);

st();

cout<<"cos="<<cos(x);

st();

cout<<"tg="<<tan(x);

st();

cout<<"ctg="<<1/tan(x)<<endl;

getch();

}

Результат работы программы (подчеркнуто число, введенное человеком):

Vvedite x :

3

***********************************

sin=0.14112

***********************************

cos=-0.989992

***********************************

tg=-0.142547

***********************************

ctg=-7.015253

13.3. Прототип функции.

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

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

Описание функции заключается в приведении в начале программного файла ее прототипа (заголовка). Прототип функции сообщает компилятору о том, что далее в тексте программы будет приведено ее полное определение: в текущем или другом файле исходного текста, либо в библиотеке, содержащей ее скомпилированный (объектный) код.

Прототип функции имеет вид:

тип_результата имя_функции (список) ;

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

Пример описания функции fun, которая имеет три параметра типа int, один параметр типа double и возвращает результат типа double:

double fun(int, int, int, double);

Пример описания для вышеприведенной функции Min:

int Min (int x, int y);

либо

int Min (int, int);

14. Область видимости и классы памяти

14.1. Область видимости.

Область видимости (действия) объекта (переменной и др.) – это та часть кода (текста) программы, в которой его можно использовать.

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

Основное правило видимости в языке Си: объект, объявленный внутри блока (участка программы, заключенного в фигурные скобки), как правило, виден, начиная с места его объявления и заканчивая концом этого блока ( } ). Если объявление данных лежит внутри нескольких входящих друг в друга блоков, оно считается расположенным в самом внутреннем из них. Если же нужно сделать объект видимым за пределами блока, нужно объявить его вне блока. Можно, например, объявить переменные вне всех функций; такие переменные называются глобальными, в отличие от переменных, объявленных внутри функции, называемых локальными и видимых только в пределах своей функции.

Область действия локальных данных – от точки декларации (объявления) до конца функции (блока), в которой произведено их объявление, включая все вложенные в него блоки.

Областью действия глобальных данных считается файл, в котором они определены, от точки описания до его окончания.

Если некоторое место программы входит в область видимости двух и более переменных с одинаковыми именами, объявленных на разном уровне вложенности блоков, действует та из них, которая объявлена на самом глубоком уровне. Объявление в одном и том же блоке на одном и том же уровне (или глобально - в одном и том же файле) переменных с одинаковыми именами вызывает ошибку компиляции.

Сказанное иллюстрирует пример: