Similar presentations:
С++. Режимы конфигурации «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.
конце функции идет инструкция returnreturn 0;
Эта инструкция завершает выполнение функции, передаваяконтроль
передается операционной системе.Число 0 после оператора return
указывает операционной системе управление во вне туда, где была
вызвана функция.
В случае с функцией main, что выполнение функции завершилось
успешно, без ошибок.Также стоит отметить, что в функции main можно
опустить инструкцию return 0;:
10.
Препроцессор и ДирективаПрепроцессор - это программа, которая преобразует исходный код в код
понятный компилятору. В языке С/С++ препроцессор удаляет
комментарии, преобразует код в соответствии с макросами и выполняет
директивы препроцессора.
Препроцессор имеет набор команд, называемых директивами
препроцессора. С помощью этих директив препроцессор управляет
изменениями в трансляции исходного кода в объектный.
11.
Директивы препроцессораВ примере выше на консоль выводится строка, но чтобы использовать вывод на
консоль, необходимо в начале файла с исходным кодом подключать библиотеку
iostream с помощью директивы include.
Директива include является директивой препроцессора. Каждая директива
препроцессора размещается на одной строке. И в отличие от обычных инструкциий
языка C++, которые завершаются точкой с запятой ; , признаком завершения
препроцессорной директивы является перевод на новую строку.
Кроме того, директива должна начинаться со знака решетки #. Непосредственно
директива "include" определяет, какие файлы и библиотеки надо подключить в
данном месте в код программы.
12.
Комментарии13.
Инициализация vs. Присваивание14.
В отличие от других языков программирования, языки Cи и C++ неинициализируют переменные определенными значениями (например,
нулем) по умолчанию. Поэтому, при создании переменной, ей
присваивается ячейка в памяти, в которой уже может находиться какойнибудь мусор! Переменная без значения (со стороны программиста или
пользователя) называется неинициализированной переменной.
15.
cout, cin и endl16.
Пространства имён в 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.
Конструкция условного ветвления ifIf(условие){
// код который выполняется при соблюдения условия
}
На месте условия стоит выражение булевского типо либо булевская переменная
47.
Конструкция условного ветвления if-elseIf(условие){
// код который выполняется при соблюдения условия
}
else{
//код, который выполняется при несоблюдения условия
}
48.
Конструкция условного ветвления ifelse ifIf{
//Если истина, то выполняется этот код
}else if{
//Если сверху ложь, а тут истина, то выполняется этот код
}
else{
//иначе выполняется этот код
}
Проверка условий выполняется последовательно