[C++] Введение в базовый синтаксис
Создайте пустой проект
Запустите CLion.
- Нажмите
Create New ProjectилиFile->New Project - Сверху слева:
C++ Executable, по середине Language standard:C++11 - Назовите как-нибудь проект (например
Lesson1) и убедитесь что проект в папке которая не пропадет к следующему уроку ->Create - Слева сверху в панели
1: Projectв папкеLesson1вы видите два файла:main.cpp- основной исходный файл программыCMakeLists.txt- файл описывающий вашу программу - из каких исходников она состоит и как их компилировать
- Теперь нужно запустить эту программу - нажмите на зеленую стрелочку сверху справа:

- Обратите внимание что снизу появилось полу
4: Runв котором находится вывод вашей программы - сообщениеHello, World!
Правила игры
Читайте дальше все и сразу пробуйте сами, вы должны запустить каждую строчку которая предложена вам ниже ввиде примера.
Из выполненных заданий вы должны постепенно накопить небольшую программу которая и является результатом вашей работы. Если вы не успели выполнить все задания до конца - доделайте дома, и отправьте этот файл main.cpp (даже если не все успели) мне по почте с указанием вашего имени и фамилии.
Недоделанное на уроке и неотправленное до четверга задание - будет означать двойку или единицу.
Объявления переменных и вывод
Пока что весь код будет внутри main-функции.
Чтобы объявить локальную переменную нужно написать сначала тип этой переменной, затем название этой переменной и опционально сразу присвоить какое-то значение через оператор присвоения =:
int main() {
int a = 239;
double b = 23.9;
return 0;
}
Вот примеры нескольких типов:
int- целое числоdouble- вещественное число (так же называется числом с плавающей точкой)
Обратите внимание что печатать в консоль можно не только строчку Hello world, но таким образом можно вывести и значение переменной - нужно лишь передать в std::cout эту переменную:
int main() {
int a = 239;
std::cout << a << std::endl;
}
Запустите программу чтобы убедиться в этом.
Обратите внимание на std::endl на конце - это специальный символ означающий что нужно в выводе перейти на следующую строку.
Задание 1 Напечатайте переменную a три раза, каждый раз на новой строчке. А теперь напечатайте переменную три раза, каждый раз не на новой строчке, а подряд, без переноса строки (т.е. без std::endl).
Операции над переменными
Над численными переменными можно делать разные арифметические операции, такие как сложение +, вычитание -, умножение *, деление / и взятие по модулю %.
Например:
int a = 239;
int b = 10 * a;
a = a + b;
b = a;
Определение Число Фибоначчи \(F_0=0\), \(F_1=1\), \(F_n = F_{n-1} + F_{n-2}\)
Задание 2 посчитайте используя переменные и операции над ними, а затем выведите на экран \(F_3\) и \(F_4\).
Обратите внимание что можно печатать в консоль не только строку или переменную, но и их вместе:
std::cout << "Число Фиббоначи F0=" << f0 << ", а число Фиббоначи F1=" << f1 << "!";
Задание 3 выводя в консоль числа \(F_3\) и \(F_4\) добавьте текстовое пояснение, что же за числа вы выводите.
Считывание введенных данных
Чтобы считать данные из консоли - удобно использовать std::cin. С его помощью можно не только выводить числа, но и считывать пользовательский ввод из консоли:
int a = 239;
std::cout << "Старое число a=" << a << std::endl;
std::cout << "Введите число a: ";
std::cin >> a;
std::cout << "Введенное число a=" << a << std::endl;
Чтобы ввести число - кликните мышкой в поле с выводом программы, напечатайте число и нажмите Enter.
Задание 4 считайте из консоли 3 числа (с явным комментарием что пользователь должен ввести - например Введите первое целое число:), и напечатайте в консоль их сумму.
Логические операции
Кроме типов int, double часто нужен тип bool.
Переменная типа bool обладает одним из двух значений:
true- правда - соответствует числу1false- ложь - соответсвует числу0
Такую переменную можно назвать логической. Т.е. эта переменная говорит да или нет, правда или ложь, верно какое-то утверждение или нет.
Задание 5 Запустите простой пример:
bool b = true;
std::cout << b << std::endl;
b = false;
std::cout << b << std::endl;
Условный оператор if/else
bool b = true;
if (b) {
std::cout << "Переменная b == true" << std::endl;
}
std::cout << "Конец программы";
if проверяет верно ли утверждение в скобочках (в данном случае он проверяет какое значение логической переменной b), и если значение в скобочках true, то программа выполнит код внутри фигурных скобочек.
Открывающая фигурная скобка { - начало, закрывающая фигурная скобка } - конец.
Заметьте что этот код эквивалентен явной проверке на равенство логической переменной b значению true:
bool b = true;
if (b == true) {
std::cout << "Переменная b == true" << std::endl;
}
std::cout << "Конец программы";
Задание 6 Напишите программу с if который проверяет что логическая переменная содержит ложь (false) и пишет соответствующее сообщение. Обратите внимание что сравнение на равенство делается не через одно равенство =, а через два ==.
Часто удобно использовать if/else конструкцию:
bool b = true;
if (b) {
std::cout << "Переменная b == правда" << std::endl;;
} else {
std::cout << "Переменная b == ложь" << std::endl;;
}
std::cout << "Конец программы";
Если условие написанное в скобочках у if верно - выполняется первый блок кода в фигурных скобочках, если же условие неверно, то первый блок кода не выполняется как и раньше, но т.к. есть else (в переводе означает “иначе”),
то программа пойдет по этому альтернативному пути, и второй блок кода будет исполнен.
Так же обратите внимание что в скобочках у if может быть не только логическая переменная, но и логическое выражение.
Примеры логических операций:
a == ba > ba < ba >= ba <= b!(логическаяОперация)-!- операция логическогоНЕ- т.е. отрицания, т.е. эта логическая операция возвращаетtrueтогда и только тогда, когда логическая операция в скобочках равнаfalse(логическаяОперация1) && (логическаяОперация2)-&&- это операция логическогоИ, т.е. эта логическая операция возвращаетtrueтогда и только тогда, когда обе логические операции равныtrue(логическаяОперация1) || (логическаяОперация2)-||- это операция логическогоИЛИ, т.е. эта логическая операция возвращаетtrueтогда и только тогда, когда хотя бы одна из логических операций равнаtrue
Пример:
int a = 725;
if ((a >= 100) && (a < 1000)) {
std::cout << "Число " << a << " лежит в промежутке от 100 до 999" << std::endl;
}
Пример (% - операция взятия по модулю):
int a = 725;
if (((a % 100) / 10 == 2) && (a % 10 == 5)) {
std::cout << "В числе " << a << " два десятка и пятерка на конце, а сотен аж " << (a / 100) << std::endl;
} else {
std::cout << "В числе " << a << " не два десятка и пятерка в конце :(" << std::endl;
if (a % 239 == 0) {
std::cout << "Но оно хотя бы делится на 239! :)" << std::endl;
}
}
Задание 7 Считайте целое число из консоли, проверьте лежит ли оно от 10000 до 99999, если меньше - напечатайте “число слишком маленькое”, если больше - напчеатайте “число слишком большое”.
Если же число подходящее, то если оно четное - напечатайте число сотен в этом числе, а если нечетное - то число тысяч в этом числе.
Задание 8 Считайте целое число из консоли, проверьте лежит ли оно в промежутке от 0 до 99 включительно. Если меньше - напечатайте что “число слишком маленькое”, если больше - напечатайте “число слишком большое”.
Если же число подходящее, то напечатайте в консоль текстовое представление числа, например для 23 это будет “двадцать три”, а для 15 - “пятнадцать”.