Функции и файлы inline, static

Содержание

Слайд 2

Ключевое слово auto Например: auto var1 = 10L; auto var2 =

Ключевое слово auto

Например:
auto var1 = 10L;
auto var2 = 0.2;
auto var3 =

123;
auto var4 = 'x';

auto – используется для автоматического вывода типа компилятором.

Слайд 3

Директивы препроцессора #include — вставляет текст из указанного файла #define —

Директивы препроцессора

#include — вставляет текст из указанного файла #define — задаёт макроопределение (макрос) или

символическую константу #undef — отменяет предыдущее определение #if — осуществляет условную компиляцию при истинности константного выражения #ifdef — осуществляет условную компиляцию при определённости символической константы #ifndef — осуществляет условную компиляцию при неопределённости символической константы #else — ветка условной компиляции при ложности выражения #elif — ветка условной компиляции, образуемая слиянием else и if #endif — конец ветки условной компиляции #line — препроцессор изменяет номер текущей строки и имя компилируемого файла #error — выдача диагностического сообщения #pragma — действие, зависящее от конкретной реализации компилятора.
Слайд 4

Функции Синтаксис объявления функции: тип_возвращаемого_значения имя функции(тип_формального_параметра имя_формального_параметра, …); Синтаксис вызова функции: имя_функции(имя_фактического_параметра, …);

Функции

Синтаксис объявления функции:
тип_возвращаемого_значения имя функции(тип_формального_параметра имя_формального_параметра, …);

Синтаксис вызова функции:
имя_функции(имя_фактического_параметра, …);

Слайд 5

#include #include double readTriangleSide(); bool isTriangleExists(double leftSide, double rightSide, double bottomSide);

#include
#include
double readTriangleSide();
bool isTriangleExists(double leftSide, double rightSide, double bottomSide);
double triangleSemiperimeter(double

leftSide, double rightSide, double bottomSide);
double triangleSquare(double leftSide, double rightSide, double bottomSide);
void showSquare(double square);
void showWarningMessage();
int main()
{
double leftSide = readTriangleSide();
double rightSide = readTriangleSide();
double bottomSide = readTriangleSide();
if (isTriangleExists(leftSide, rightSide, bottomSide))
showSquare(triangleSquare(leftSide, rightSide, bottomSide));
else
showWarningMessage();
return 0;
}
Слайд 6

double readTriangleSide() { double triangleSide; std::cout std::cin >> triangleSide; return triangleSide;

double readTriangleSide()
{
double triangleSide;
std::cout << "Enter triangle side: ";
std::cin

>> triangleSide;
return triangleSide;
}
void showSquare(double square)
{
std::cout << "Triangle square = " << square << std::endl;
}
bool isTriangleExists(double leftSide, double rightSide, double bottomSide)
{
return leftSide + rightSide > bottomSide &&
leftSide + bottomSide > rightSide && rightSide + bottomSide > leftSide;
}
double triangleSemiperimeter(double leftSide, double rightSide, double bottomSide)
{
return (leftSide + rightSide + bottomSide) / 2;
}
Слайд 7

double triangleSquare(double leftSide, double rightSide, double bottomSide) { double p =

double triangleSquare(double leftSide, double rightSide, double bottomSide)
{
double p = triangleSemiperimeter(leftSide,

rightSide, bottomSide);
return sqrt(p * (p - leftSide) * (p - rightSide) * (p - bottomSide));
}
void showWarningMessage()
{
std::cout << "Triangle doesn't exists" << std::endl;
}
Слайд 8

Глобальные переменные Объявление: extern int var; Определение: int variable = 3;

Глобальные переменные

Объявление:

extern int var;

Определение:

int variable = 3;

Недостатки глобальных переменных:

Побочные эффекты
Не стандартизирован

порядок инициализации
Слайд 9

Статические глобальные переменные Статическая глобальная переменная – глобальная переменная, которая видна

Статические глобальные переменные

Статическая глобальная переменная – глобальная переменная, которая видна только

в пределах одной единицы трансляции

Определение:

static int var;

Недостатки глобальных переменных:

Побочные эффекты

Слайд 10

Статические локальные переменные Время жизни статических локальных переменных – от первого

Статические локальные переменные

Время жизни статических локальных переменных – от первого вызова

функции, до окончания работы программы
int callCount()
{
static int counter = 0;
counter++;
return counter;
}
Слайд 11

Статические функции Статическая функция доступна в пределах одного модуля и имеет

Статические функции

Статическая функция доступна в пределах одного модуля и имеет внутреннюю

линковку

static void function()
{
}

Файл 1.cpp

static void function()
{
}

Файл 2.cpp