640.59K
Category: programmingprogramming

С++. Режимы конфигурации «Debug» и «Release»

1.

С++

2.

Режимы конфигурации «Debug» и
«Release»
Конфигурация сборки (англ. "build configuration") — это набор настроек
проекта, которые определяют принцип его построения. Конфигурация сборки
состоит из: имени исполняемого файла; имени директории исполняемого
файла; имен директорий, в которых IDE будет искать другой код и файлы
библиотек; информации об отладке и параметрах оптимизации вашего
проекта. Интегрированная среда разработки имеет две конфигурации сборки:
"Debug" (Отладка) и "Release" (Релиз).
Конфигурация "Debug" предназначена для отладки вашей программы. Эта
конфигурация отключает все настройки по оптимизации, включает
информацию об отладке, что делает ваши программы больше и медленнее, но
упрощает проведение отладки. Режим "Debug" обычно используется в качестве
конфигурации по умолчанию.
Конфигурация "Release" используется во время сборки программы для её
дальнейшего выпуска. Программа оптимизируется по размеру и
производительности и не содержит дополнительную информацию об отладке.

3.

Структура программ
Cтейтмент (англ. "statement") — это наиболее распространенный тип
инструкций в программах. Это и есть та самая инструкция, наименьшая
независимая единица в языке С++. Стейтмент в программировании — это
то же самое, что и "предложение" в русском языке. Мы пишем
предложения, чтобы выразить какую-то идею.
В языке C++ мы пишем стейтменты, чтобы выполнить какое-то задание.
Все стейтменты в языке C++ заканчиваются точкой с запятой. Есть много
разных видов стейтментов в языке C++. Рассмотрим самые
распространенные из них:

4.

Выражения
Компилятор также способен обрабатывать выражения. Выражение (англ.
"expression") — это математический объект, который создается
(составляется) для проведения вычислений и нахождения
соответствующего результата. Например, в математике выражение 2 + 3
имеет значение 5.

5.

Функции
В языке C++ стейтменты объединяются в блоки — функции. Функция — это
последовательность стейтментов. Каждая программа, написанная на
языке C++, должна содержать главную функцию main().
Именно с первого стейтмента, находящегося в функции main(), и
начинается выполнение всей программы. Функции, как правило,
выполняют конкретное задание.
Например, функция max() может содержать стейтменты, которые
определяют большее из заданных чисел, а функция calculateGrade()
может вычислять среднюю оценку студента по какой-либо дисциплине.

6.

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

7.

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

8.

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

9.

конце функции идет инструкция return
return 0;
Эта инструкция завершает выполнение функции, передаваяконтроль
передается операционной системе.Число 0 после оператора return
указывает операционной системе управление во вне туда, где была
вызвана функция.
В случае с функцией main, что выполнение функции завершилось
успешно, без ошибок.Также стоит отметить, что в функции main можно
опустить инструкцию return 0;:

10.

Препроцессор и Директива
Препроцессор - это программа, которая преобразует исходный код в код
понятный компилятору. В языке С/С++ препроцессор удаляет
комментарии, преобразует код в соответствии с макросами и выполняет
директивы препроцессора.
Препроцессор имеет набор команд, называемых директивами
препроцессора. С помощью этих директив препроцессор управляет
изменениями в трансляции исходного кода в объектный.

11.

Директивы препроцессора
В примере выше на консоль выводится строка, но чтобы использовать вывод на
консоль, необходимо в начале файла с исходным кодом подключать библиотеку
iostream с помощью директивы include.
Директива include является директивой препроцессора. Каждая директива
препроцессора размещается на одной строке. И в отличие от обычных инструкциий
языка C++, которые завершаются точкой с запятой ; , признаком завершения
препроцессорной директивы является перевод на новую строку.
Кроме того, директива должна начинаться со знака решетки #. Непосредственно
директива "include" определяет, какие файлы и библиотеки надо подключить в
данном месте в код программы.

12.

Комментарии

13.

Инициализация vs. Присваивание

14.

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

15.

cout, cin и endl

16.

Пространства имён в C++
Пространство имён (англ. namespace) — это группа взаимосвязанных
функций, переменных, констант, классов, объектов и других компонентов
программы.
С самого начала изучения C++ мы используем команду std: cout, чтобы
выводить данные в терминал. На самом деле команда называется
просто cout, а std — это пространство имён, в котором она находится.
Пространства имён нужны, чтобы логически связывать части программы.
Например, математические функции, физические, бухгалтерские и так
далее.

17.

18.

Мы объединяем в группу несколько разных команд и избегаем конфликтов
имён. Это нужно, когда в какой-то из подключённых вами библиотек уже
есть функция, например sum (). По пространству имён программа поймёт,
какая именно функция вам нужна.
Если же вы хотите сократить код, то используйте команду using:

19.

Также после using можно указать не целое пространство имён, а только
отдельную функцию или переменную:

20.

Файлы заголовков в C++
Пространство имён из примера выше
можно перенести в отдельный файл,
чтобы потом подключить его к другой
программе и избавиться
от дополнительного кода в основном
файле.
Для этого создайте файл заголовков —
сохраните код с расширением .h,
например mylib.h:

21.

Здесь нет функции main (), потому что этот код — не самостоятельная
программа, а библиотека для других программ. Следовательно, точка
входа здесь не нужна. Также мы не подключаем iostream, потому что
не собираемся ничего выводить, но вы можете добавить в свой заголовок
любые другие файлы.

22.

23.

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

24.

Константы
Константной называется именованная область памяти, в которую при создании
можно записать значение определенного типа, но далее по ходу программы
это значение можно только читать (и нельзя изменять).
const int k1 = 13; // создали константу типа int с именем k1 и записали в неё значение
cout << k1 = 12; // но нельзя изменить, это приведёт к ошибке

25.

Идентификаторы
При выборе идентификатора необходимо иметь
в виду следующее:
1.
идентификатор не должен совпадать с
ключевыми словами и именами
используемых стандартных объектов языка;
2.
не рекомендуется начинать
идентификаторы с символа подчеркивания;
3.
Для улучшения читаемости программы
следует давать объектам осмысленные
имена.

26.

Простые типы данных
Простые типы делятся на целочисленные типы и типы с плавающей точкой.
Для описания стандартных типов определены следующие ключевые слова:
1.
int (целый);
2.
char (символьный);
3.
bool (логический);
4.
float (вещественный);
5.
double (вещественный с двойной точностью).

27.

Простые типы данных
Существует четыре спецификатора типа, уточняющих внутреннее представление
и диапазон значений стандартных типов:
1.
short (короткий);
2.
long (длинный);
3.
signed (со знаком);
4.
unsigned (без знака).

28.

Простые типы данных
Тип
Диапазон значений
Размер (байт)
bool
true и false
1
signed char
–128 .. 127
1
unsigned char
0 .. 255
1
signed short int
–32 768 .. 32 767
2
unsigned short int
0 .. 65 535
2
signed long int
–2 147 483 648 .. 2 147 483 647
4
unsigned long int
0 .. 4 294 967 295
4
float
3.4e–38 .. 3.4e+38
4
double
1.7 e–308 .. 1.7 e+308
8
long double
3.4 e–4932 .. 3.4 e+4932
10

29.

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

30.

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

31.

Преобразование типов
данных
Явное приведение осуществляется с помощью указания целевого
типа данных (того, к которому нужно привести) в круглых скобках
перед выражением:
double s = 2.71;
int t = (int) s;
cout << t << endl; // 2
cout << (int) 3.14 << endl; // 3
cout << (int) (2.5 + t) << endl; // 4
Приведение к целым числам от вещественных осуществляется путём
отбрасывания целой части (не округлением).

32.

Библиотека math.h
Чтобы воспользоваться сложными математическими действиями, нам
нужно подключить в программу библиотеку, в которой и содержаться
эти функции, а именно:
#include<math.h>

33.

Библиотека math.h
Рассмотрим, какие функции содержатся в этой библиотеки.
abs – это модуль, возвращает положительное число
acos (xxx)- арккосинус
asin (sss) — арксинус
atan (poiy) — арктангенс
cos (sgrgrg) — косинус
Random- вывод случайных чисел
exp — экспонента
log (56) — натуральный логарифм
log10 (45,755) — это логарифм по основанию десять.
pow(xx,yyy)- возведение в степень
sin — синус
tan — тангенс

34.

Функция system()
Операционная система получает команду “выражение”:
system("выражение");
Пример
Операционная система получает команду сделать паузу:
system("pause");

35.

Арифметические операции
+ — сложение
- — вычитание
* — умножение
/ — деление
% — остаток от деления

36.

Инкремент и декремент
Также есть две унарные арифметические операции, которые
производятся над одним числом: ++ (инкремент) и -- (декремент). Каждая
из операций имеет две разновидности: префиксная и постфиксная:
Префиксный инкремент.Увеличивает значение переменной на единицу и
полученный результат используется как значение выражения ++x

37.

Постфиксный инкремент.
Увеличивает значение переменной на единицу, но значением выражения
x++ будет то, которое было до увеличения на единицу

38.

Как использовать кириллицу в
программах C++?
1. #include <Windows.h>
2. SetConsoleCP(1251);
3. SetConsoleOutputCP(1251);
Или же setlocale(LC_ALL, "Russian");

39.

l-values и r-values
В языке C++ все переменные являются l-values. l-value (в переводе "л-значение",
произносится как "ел-валью") — это значение, которое имеет свой собственный адрес
в памяти. Поскольку все переменные имеют адреса, то они все являются l-values
(например, переменные a, b, c — все они являются l-values).
A=15
l от слова "left", так как только значения l-values могут находиться в левой стороне в
операциях присваивания (в противном случае, мы получим ошибку). Например,
стейтмент 9 = 10; вызовет ошибку компилятора, так как 9 не является l-value. Число 9
не имеет своего адреса в памяти и, таким образом, мы ничего не можем ему
присвоить (9 = 9 и ничего здесь не изменить).

40.

R-values
Противоположностью l-value является r-value (в переводе "р-значение", произносится
как «ер-валью»). r-value — это значение, которое не имеет постоянного адреса в
памяти. Примерами могут быть единичные числа (например, 7, которое имеет
значение 7) или выражения (например, 3 + х, которое имеет значение х плюс 3)

41.

b = b + 2;
Здесь переменная b используется в двух различных контекстах. Слева b
используется как l-value (переменная с адресом в памяти), а справа b
используется как r-value и имеет отдельное значение (в данном случае,
12).

42.

Логические операции
Логические операции всегда возвращают булевский тип данных. То есть
true(1) или false(0).
Логические операторы делятся на три типа:
1) Операторы сравнения
2) Операторы равенства
3) Операторы объединения и отрицательная инверсия

43.

Операторы сравнения
< - больше
> - больше
<= - меньше\равно
>= больше\равно

44.

Операторы равенства
== - равно
!=
== - оператор сравнения
= - оператор присваивания
Важно не путать данные операторы!!!
- не равно

45.

Операторы объединения и инверсия
&& - логическое И
|| - логическое ИЛИ
! - логическое НЕ

46.

Конструкция условного ветвления if
If(условие){
// код который выполняется при соблюдения условия
}
На месте условия стоит выражение булевского типо либо булевская переменная

47.

Конструкция условного ветвления if-else
If(условие){
// код который выполняется при соблюдения условия
}
else{
//код, который выполняется при несоблюдения условия
}

48.

Конструкция условного ветвления ifelse if
If{
//Если истина, то выполняется этот код
}else if{
//Если сверху ложь, а тут истина, то выполняется этот код
}
else{
//иначе выполняется этот код
}
Проверка условий выполняется последовательно
English     Русский Rules