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

Int main()

{

double Angle;

double PI = 3.14159;

cout « "Введите угол в градусах: ";

cin » Angle;

cout « "Значение синуса: ";

cout « sin(Angle * PI / 180) « '\n';

return 0;

}

К сожалению, в C++ нет готовой реализации функции возведения аргумента в квадрат. Эту функцию можно реализовать, например, следующим образом:

Inline double sqr(double X)

{return pow(x, 2);}

Заметим, что для работы данной функции необходимо задействовать заголовочный файл math.h, содержащий прототип функция pow ().

Функции округления

Для округления числа в меньшую сторону используется функция floor ()и ее разновидности для различных типов аргументов и возвращаемых параметров. Данная функция имеет следующий синтаксис:

double floor(double x);

long double floor1(long double x) ;

Округление в большую сторону производится с помощью функции ceil ():

double ceil(double x);

long double ceil(long double x);

Однако в реальности проблема выбора в какую же сторону производить округление, возлагается на разрабатываемую программу. Ниже предлагается два варианта решения этой задачи.

Вариант 1:

Inline double Round(double X)

{return floor(x + .5);}

Вариант 11:

double round(double num)

{

double frac;

double val;

frac = modf(num, &val);

if(frac < 0.5)

num = val;

else

num = val + 1.0;

return num;

}

Для работы обоих вариантов функции необходимо задействовать заголовочный файл math.h, содержащий прототип функций floor() и modf().

РЕЗЮМЕ

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

возвр_тип FuncName (список объявляемых параметров);

Здесь возвр_тип- возвращаемый функцией тип данных, Если возвращаемый тип данных не указан, то по умолчанию компилятор считает, что возвращаемый функцией тип естьint.Список объявляемых параметров задает тип и имя каждого параметра функции, разделенные запятыми. Допускается опускать имя параметра. Список объявляемых параметров функции может быть пустым. Приведем примеры прототипов функций:

Int swap(int, int);

double max (double par1, double par2);

Void func();

Определение функции состоит из ее заголовка и собственно тела, заключенного в фигурные скобки и несущего смысловую нагрузку. Если функция возвращает значение, отличное от типа void, в теле функции обязательно должен присутствовать операторreturnс параметром того же типа, что и возвращаемое значение. В случае, если возвращаемое значение не будет использоваться в дальнейшем в программе (void), операторreturnследует без параметра или вообще может быть опущен, тогда возврат из функции осуществляется по достижении закрывающейся скобки.

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

Вызов функциипредставляет собой указание идентификатора функции (ее имени), за которым в круглых скобках следует список аргументов, разделенных запятыми:

имя_функции (аргумент_1, аргумент _2...,аргумент_N);

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

Функция может вызывать другие функции (одну или несколько), а те, в свою очередь, производить вызов третьих и т.д. Кроме того, функция может вызывать сама себя. Это явление в программировании называется рекурсией.Как уже было отмечено ранее, любая программа на C++ обязательно включает в себя главную функцию main (). Именно с этой функции начинается выполнение программы.

Переменные могут быть объявлены как внутри тела какой-либо функции, так и за пределами любой из них.

Переменные, объявленные внутри тела функции, называются локальными. Такие переменные размещаются в стеке программы и действуют только внутри той функции, в которой объявлены. Как только управление возвращается вызывающей функции, память, отводимая под локальные переменные, освобождается.

Каждая переменная характеризуется областью действия, областью видимости и временем жизни,

Под областью действия переменной понимают область программы, в которой переменная доступна для использования.

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

Временем жизни переменной называется интервал выполнения программы, в течение которого она существует.

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

Это означает, например, что в разных функциях могут использоваться переменные с одинаковыми именами совершенно независимо друг от друга.

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

Область действия глобальной переменной совпадает с областью видимости и простирается от точки ее описания до конца файла, в котором она объявлена. Время жизни глобальной переменной - постоянное, то есть совпадает со временем выполнения программы.

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

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

Таблица 5.1. Модификаторы переменных

Модификатор

Применение

Область действия

Время жизни

auto

локальное

Блок

временное

register

локальное

Блок

временное

extern

глобальное

Блок

временное

static

локальное

Блок

постоянное

глобальное

Файл

Volatile

глобальное

Файл

постоянное

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

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

Ключевое слово inline должно предшествовать первому вызову встраиваемой функции (например, содержаться в ее прототипе).

#include <iostream.h>

// Прототип встраиваемой функции: inline int Sum(int, int);

Соседние файлы в папке ЛекцииКарасева