Операция уточнения области действия в C++.

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

 

// 08GSCOPE.CPP

// Программа на C++ иллюстрирует проблемы, связанные с правилами

// области действия, и использование операции уточнения области

// действия. При вычислении произведения с помощью этой операции,

// в функции используется переменная с файловой областью действия

 

#include "stdafx.h"

#include <iostream>

#include <conio.h>

#include <stdio.h>

#include <process.h>

#include <ctype.h>

#include <stdlib.h>

#include <math.h>

#include <stdarg.h>

#include <string.h>

using namespace std;

 

int iproduct(int iw,int ix);

int in=10;

 

main()

{

int il=3;

int im=7;

int io;

io=iproduct(il,im);

cout << "The product of " << il <<" * " << im

<< " * " << in << " is: " << io;

 

printf ("\n\nPress any key to finish\n");

_getch();

return(0);

}

 

int iproduct(int iw,int ix)

{

int iy;

int in=2;

iy=iw*ix*(::in);

return(iy);

}

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

 

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

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

Семантика функции определяет способ реализации функции. Обычно представляет собой тело функции.

 

Определение функции

Каждая функция в языке Си должна быть определена, то есть должны быть указаны:

· тип возвращаемого значения;

· имя функции;

· информация о формальных аргументах;

· тело функции.


Определение функции имеет следующий синтаксис:

 

ТипВозвращаемогоЗначения ИмяФункции(СписокФормальныхАргументов)
{
ТелоФункции;
...
return(ВозвращаемоеЗначение);
}

Пример: Функция сложения двух вещественных чисел

float function(float x, float z)
{
float y;
y=x+z;
return(y);
}

Объявление функций: прототипы функций

1 returnDataType functionName( dataType argName1, dataType argName2, ..., dataType argNameN);

где,

returnDataType — возвращаемый тип данных

functionName — имя функции

dataType — тип данных

argName1...N — имена параметров функции (количество параметров неограниченно)

Смотрим пример объявления функции:

 
1 2 3 / / Объявление прототипа функции с двумя целыми параметрами / / функция принимает два аргумента и возвращает их сумму int sum(int num1, int num2);

 

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

1 int sum(int , int ); // тот же прототип функции

Иногда, объявление функции называют определением функции, хотя это не одно и то же.

 

1 2 3 4 returnDataType functionName( dataType argName1, dataType argName2, ..., dataType argNameN) { // тело функции }

 

Определение функций

 

 
1 2 3 4 5 // определение функции, которая суммирует два целых числа и возвращает их сумму int sum(int num1, int num2) { return (num1 + num2); }

 

Рассмотрим определение функции на примере функции sum.

 

 

Математические функции

Математические функции хранятся в стандартной библиотеке math.h. Аргументы большинства математических функций имеют тип double. Возвращаемое значение также имеет тип double.
Углы в тригонометрических функциях задаются в радианах.


 

Основные математические функции стандартной библиотеки.

 

Функция Описание
int abs(int x) Модуль целого числа x
double acos(double x) Арккосинус x
double asin(double x) Арксинус x
double atan(double x) Арктангенс x
double cos(double x) Косинус x
double cosh(double x) Косинус гиперболический x
double exp(double x) Экспонента x
double fabs(double x) Модуль вещественного числа
double fmod(double x, double y) Остаток от деления x/y
double log(double x) Натуральный логарифм x
double log10(double x) Десятичный логарифм x
double pow(double x, double y) x в степени y
double sin(double x) Синус x
double sinh(double x) Синус гиперболический x
double sqrt(double x) Квадратный корень x
double tan(double x) Тангенс x
double tanh(double x) Тангенс гиперболический x