SlideShare a Scribd company logo
1
Курс
Основы программирования
на языке
С++
Модуль 2
Переменные и типы данных
2
Прошлое занятие (2)
1. Алфавит языка С++.
2. Лексемы.
3. Компилятор, линковщик,
интерпретатор.
4. Вывод данных на консоль.
5. Escape - последовательности.
6. Raw - строки.
7. Комментарии.
3
Прошлое занятие (2)
1. Алфавит языка С++.
2. Лексемы.
3. Компилятор, линковщик,
интерпретатор.
4. Вывод данных на консоль.
5. Escape - последовательности.
6. Raw - строки.
7. Комментарии.
4
Raw - строки
R”(aaaa)”;
R”(aa)”aa)”;
R/”(aa)”aa)/”;
5
Выполнение домашнего задания
1. Создание блок-схем:
 пользования банкоматом;
 посещения библиотеки.
2. Форматированный вывод на
консоль:
 стихотворения;
 лесенки строк;
 объявления.
6
Библиотека
7
Банкомат
8
Код программы
9
Выполнение
программы
10
Занятие 3
1. Структура программы.
2. Элементы текста программы.
3. Переменные.
4. Типы данных.
5. Константы и литералы.
6. Ввод данных с консоли.
7. Работа с кириллицей.
11
Кому скучно
Написать программу «Обои»
Посчитать сколько для ремонта
комнаты нужно рулонов обоев и
сколько они будут стоить.
12
«Лошадью
ходи!..»
Cd3-g6 f7-g6
Лe3-e6
13
Картинка программы
14
Ключевые слова С++
15
Знаки операций и разделители
! % ^ & * ( ) - + = { } | ~[ ]  ; ' : " < > ? , . / #
Пробельные символы
Пробел
Знак табуляции
Перевод строки
Форматирование текста программы
Средства => Параметры =>
Текстовый редактор => С/С++ =>
Форматирование => Общие => Номера строк
16
Идентификаторы С++
Идентификатор может состоять из букв,
цифр и знака подчеркивания, причем не
может начинаться с цифры.
Идентификатор (имя) НЕ МОЖЕТ
содержать ПРОБЕЛЫ!
Идентификатор — это последовательность
символов, используемая для обозначения
одного из следующих элементов:
имени объекта или переменной;
имени функции;
…
17
Примеры идентификаторов
int x12;
void GetName()
string _alfa;
int 12x;
String Get Number()
18
Литералы
const int answer = 42; // целое число
double r = sin(108.87); // плавающее (дробное)
bool b = true; // логический литерал
MyClass* mc = nullptr; // литерал – указатель
string s = “Hello”; // строка
cha c = 'A'; // символ
string sr = R"("Hello  world")"; // строка
// символьная константа
const double Pi = 3.14159;
double s = Pi * r * r;
19
Операторы и переменные
int a; // объявление переменной
int b;
int c;
cin >> a; // оператор ввода
cin >> b;
c = a + b; // арифметический оператор
cout << c; // оператор вывода
int c = a + b; // объединение объявления
// с выполняемым оператором
20
Объявление переменных
Все переменные должны объявляться перед использованием в
таком формате:
тип список_переменных
Тип должен быть правильным типом данных, а список
переменных может содержать одно или более имен, разделенных
запятыми:
int i, j, l;
std::string str;
double balance, profit, loss;
Имеется три места, где объявляются переменные: внутри
функций, при определении параметров функции и вне функций.
Эти переменные называются соответственно локальными
переменными, формальными параметрами и глобальными
переменными.
21
Инициализация переменных
Во время объявления переменных можно сообщить им значение
путем помещения знака равенства и константы после имени
переменной. Этот процесс называется инициализацией и в
общем случае имеет вид:
тип имя_переменной = константа; (литерал)
int first = 0;
float balance = 123.23;
int a = 1;
int b(1);
int c{1};
Point p(1,2); // инициализация структуры: x = 1, y = 2
int m[] = { 1,2,3 }; // инициализация массива
int m[] { 1,2,3 }; // списковая инициализация
Point mp {{1,2},{3,4},{5,6}};
int a; // a = 0 для глобальных переменных
22
Типы данных
Каждая переменная имеет определенный тип.
Этот тип определяет:
 какие значения может иметь переменная;
 какие операции с ней можно производить;
 сколько байт в памяти она будет занимать.
Все типы данных могут быть разделены на такие группы:
 целочисленные (short, int, long, long long);
 типы чисел с плавающей точкой (float, double, long double);
 символьные (char, wchar_t, char16_t, char32_t);
 логический (bool);
 тип без значения (void);
23
Целочисленные данные(short, int)
short: представляет целое число в диапазоне от –32768 до 32767. Занимает в
памяти 2 байта (16 бит).
Данный тип также имеет синонимы short int, signed short int, signed short.
•unsigned short: представляет целое число в диапазоне от 0 до 65535.
Занимает в памяти 2 байта (16 бит).
•Данный тип также имеет синоним unsigned short int.
•int: представляет целое число. В зависимости от архитектуры процессора
может занимать 2 байта (16 бит) или 4 байта (32 бита). Диапазон предельных
значений соответственно также может варьироваться от –32768 до 32767 (при
2 байтах) или от −2 147 483 648 до 2 147 483 647 (при 4 байтах). Но в любом
случае размер должен быть больше или равен размеру типа short и меньше или
равен размеру типа long
•Данный тип имеет синонимы signed int и signed.
•unsigned int: представляет положительное целое число. В зависимости от
архитектуры процессора может занимать 2 байта (16 бит) или 4 байта (32
бита), и из-за этого диапазон предельных значений может меняться: от 0 до
65535 (для 2 байт), либо от 0 до 4 294 967 295 (для 4 байт).
•В качестве синонима этого типа может использоваться unsigned
24
Целочисленные данные (long)
•long: представляет целое число в диапазоне от −2 147 483 648 до 2 147 483
647. Занимает в памяти 4 байта (32 бита).
•У данного типа также есть синонимы long int, signed long int и signed long
•unsigned long: представляет целое число в диапазоне от 0 до 4 294 967 295.
Занимает в памяти 4 байта (32 бита).
•Имеет синоним unsigned long int.
•long long: представляет целое число в диапазоне от −9 223 372 036 854 775
808 до +9 223 372 036 854 775 807. Занимает в памяти, как правило, 8 байт (64
бита).
•Имеет синонимы long long int, signed long long int и signed long long.
•unsigned long long: представляет целое число в диапазоне от 0 до 18 446 744
073 709 551 615. Занимает в памяти, как правило, 8 байт (64 бита).
•Имеет синоним unsigned long long int.
25
Типы данных для работы
с дробными числами
float: представляет вещественное число ординарной точности с плавающей
точкой в диапазоне +/- 3.4E-38 до 3.4E+38. В памяти занимает 4 байта (32
бита)
double: представляет вещественное число двойной точности с плавающей
точкой в диапазоне +/- 1.7E-308 до 1.7E+308. В памяти занимает 8 байт (64
бита)
long double: представляет вещественное число двойной точности с
плавающей точкой не менее 8 байт (64 бит). В зависимости от размера
занимаемой памяти может отличаться диапазон допустимых значений.
26
Символьный тип данных
•char: представляет один символ в кодировке ASCII. Занимает в памяти 1 байт
(8 бит). Может хранить любое значение из диапазона от -128 до 127, либо от 0
до 255
•signed char: представляет один символ. Занимает в памяти 1 байт (8 бит).
Может хранить любой значение из диапазона от -128 до 127
•unsigned char: представляет один символ. Занимает в памяти 1 байт (8 бит).
Может хранить любой значение из диапазона от 0 до 255
•wchar_t: представляет расширенный символ. На Windows занимает в памяти
2 байта (16 бит), на Linux - 4 байта (32 бита). Может хранить любой значение
из диапазона от 0 до 65 535 (при 2 байтах), либо от 0 до 4 294 967 295 (для 4
байт)
•char16_t: представляет один символ в кодировке Unicode. Занимает в памяти
2 байта (16 бит). Может хранить любой значение из диапазона от 0 до 65 535
•char32_t: представляет один символ в кодировке Unicode. Занимает в памяти
4 байта (32 бита). Может хранить любой значение из диапазона от 0 до 4 294
967 295
27
Логический тип данных
•bool: логический тип. Может принимать одну из двух значений true (истина)
и false (ложь). Размер занимаемой памяти для этого типа точно не определен.
Перечислимый тип данных
(перечисление)
Перечисление (или ещё «перечисляемый тип») — это тип данных, где
любое значение (или ещё «перечислитель») определяется как символьная
константа. Объявить перечисление можно с помощью ключевого
слова enum.
enum Colors
{
Red, // const int Red = 0;
White, // const int White = 2;
Black
}
28
Ввод данных с консоли
cout << “Enter number” << endl;
int n;
cin >> n;
1 --- 1
2 3 --- 2
abc --- 0
12a --- 12
a12 --- 0
string s;
cin >> s;
12a --- 12a
1 2 --- 1
cin >> s >> n;
a12 12a --- a12 12
29
Работа с кириллицей
setlocale(LC_ALL, "rus");
setlocale(LC_ALL, "");
setlocale(LC_ALL, "rus_rus.1251");
cout << "Всем привет!" << endl; // кодировка 1251
string name;
cin >> name;
cout << name; // кодировка 866
setlocale(LC_ALL, "rus_rus.866");
cout << name; // кодировка 866
setlocale(LC_ALL, "rus_rus.1251");
cout << «Еще привет!" << endl;// кодировка 1251
30
Пишем программу
Создать (проект) консольное приложение С++
(NamePlus)
Вывести Hello! пауза
Вывести «Всем привет!» (setlocale(LC_ALL, "rus_rus.1251");)
Добавить переменную name и функцию void EnterName()
Вызвать EnterName и вывести «Вас зовут» name
Добавить функцию int Sum(int a, int b)
Ввести a,b, и вывести name, a + b = Sum(a,b)
31
Самостоятельная работа
Встреча №3
Задание 1.
Создать приложение, которое выводит информацию о книге, в следующем формате:
Name : “The war and the peace”
Avtor : L.N. Tolstoj
Izdatelstvo: Piter
Pages : 500
Задание 2.
Создать приложение, которое выводит на консоль фразу:
“U lukomor’a dub zelenij,
Zlataya zep na dupe tom,
I dnem i nochju kot uchenij
vse hodit po cepi krugom”
Сопроводить каждую новую строчку тройным звуковым сигналом b
Задание 3.
Создать приложение, которое выводит на экран следующую таблицу:
╔════════════════════════════════════════════╗
║ Vremena goda ║
╠═════════╦═══════════╦═══════════╦══════════╣
║ Zima ║ Vesna ║ Leto ║ Osen ║
╚═════════╩═══════════╩═══════════╩══════════╝
Подсказка:
Рекомедуем выполнить следующий пример
cout<<"n"<<(char)201<<(char)205<<(char)205<<(char)187;
Необходимые символы находятся в дипазоне от 179 до 218
32
Домашняя работа
Встреча №3
Задание 1: Заданы три сопротивлении R1, R2, R3 . Вычислить значение
сопротивления R0 по
формуле: 1/R0 = 1/R1+1/R2+1/R3.
Контрольный пример: R1=2, R2=4, R3=8 R0 = 1.142857
Задание 2: По заданной длине окружности найти площадь круга по формуле S =
pi*R2, радиус
вычислить из формулы длины окружности: L=2*pi *R
Примечание pi = 3.14
Задание 3: Вычислить пройденное расстояние при прямолинейном
равноускоренном движении
по формуле S = v*t + (a*t2) / 2, где v – скорость, t – время, а – ускорение
Ad

More Related Content

What's hot (20)

хитрости выведения типов
хитрости выведения типовхитрости выведения типов
хитрости выведения типов
corehard_by
 
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворков
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворковНикита Глушков, К вопросу о реализации кроссплатформенных фреймворков
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворков
Sergey Platonov
 
особенности программирования на с++
особенности программирования на с++особенности программирования на с++
особенности программирования на с++
mcroitor
 
Конкурентные ассоциативные контейнеры
Конкурентные ассоциативные контейнерыКонкурентные ассоциативные контейнеры
Конкурентные ассоциативные контейнеры
corehard_by
 
Догнать и перегнать boost::lexical_cast
Догнать и перегнать boost::lexical_castДогнать и перегнать boost::lexical_cast
Догнать и перегнать boost::lexical_cast
Roman Orlov
 
Евгений Зуев, С++ в России: Стандарт языка и его реализация
Евгений Зуев, С++ в России: Стандарт языка и его реализацияЕвгений Зуев, С++ в России: Стандарт языка и его реализация
Евгений Зуев, С++ в России: Стандарт языка и его реализация
Platonov Sergey
 
вывод алфавитно цифровой информации
вывод алфавитно цифровой информациивывод алфавитно цифровой информации
вывод алфавитно цифровой информации
Lungu
 
Введение в синтаксис C++, часть 1
Введение в синтаксис C++, часть 1Введение в синтаксис C++, часть 1
Введение в синтаксис C++, часть 1
DEVTYPE
 
Антон Полухин, Немного о Boost
Антон Полухин, Немного о BoostАнтон Полухин, Немного о Boost
Антон Полухин, Немного о Boost
Sergey Platonov
 
Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building BlocksЛекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
Mikhail Kurnosov
 
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
Alexey Paznikov
 
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVMДмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
Sergey Platonov
 
Характерные черты функциональных языков программирования
Характерные черты функциональных языков программированияХарактерные черты функциональных языков программирования
Характерные черты функциональных языков программирования
Alex.Kolonitsky
 
Программирование линейных алгоритмов
Программирование линейных алгоритмовПрограммирование линейных алгоритмов
Программирование линейных алгоритмов
Andrey Dolinin
 
Урок 17. Паттерн 9. Смешанная арифметика
Урок 17. Паттерн 9. Смешанная арифметикаУрок 17. Паттерн 9. Смешанная арифметика
Урок 17. Паттерн 9. Смешанная арифметика
Tatyanazaxarova
 
Современный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтерыСовременный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтеры
corehard_by
 
C++ и базы данных
C++ и базы данныхC++ и базы данных
C++ и базы данных
mcroitor
 
Шаблоны C++ и базы данных. Сергей Федоров. CoreHard Spring 2019
Шаблоны C++ и базы данных. Сергей Федоров. CoreHard Spring 2019Шаблоны C++ и базы данных. Сергей Федоров. CoreHard Spring 2019
Шаблоны C++ и базы данных. Сергей Федоров. CoreHard Spring 2019
corehard_by
 
хитрости выведения типов
хитрости выведения типовхитрости выведения типов
хитрости выведения типов
corehard_by
 
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворков
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворковНикита Глушков, К вопросу о реализации кроссплатформенных фреймворков
Никита Глушков, К вопросу о реализации кроссплатформенных фреймворков
Sergey Platonov
 
особенности программирования на с++
особенности программирования на с++особенности программирования на с++
особенности программирования на с++
mcroitor
 
Конкурентные ассоциативные контейнеры
Конкурентные ассоциативные контейнерыКонкурентные ассоциативные контейнеры
Конкурентные ассоциативные контейнеры
corehard_by
 
Догнать и перегнать boost::lexical_cast
Догнать и перегнать boost::lexical_castДогнать и перегнать boost::lexical_cast
Догнать и перегнать boost::lexical_cast
Roman Orlov
 
Евгений Зуев, С++ в России: Стандарт языка и его реализация
Евгений Зуев, С++ в России: Стандарт языка и его реализацияЕвгений Зуев, С++ в России: Стандарт языка и его реализация
Евгений Зуев, С++ в России: Стандарт языка и его реализация
Platonov Sergey
 
вывод алфавитно цифровой информации
вывод алфавитно цифровой информациивывод алфавитно цифровой информации
вывод алфавитно цифровой информации
Lungu
 
Введение в синтаксис C++, часть 1
Введение в синтаксис C++, часть 1Введение в синтаксис C++, часть 1
Введение в синтаксис C++, часть 1
DEVTYPE
 
Антон Полухин, Немного о Boost
Антон Полухин, Немного о BoostАнтон Полухин, Немного о Boost
Антон Полухин, Немного о Boost
Sergey Platonov
 
Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building BlocksЛекция 8: Многопоточное программирование: Intel Threading Building Blocks
Лекция 8: Многопоточное программирование: Intel Threading Building Blocks
Mikhail Kurnosov
 
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
Лекция 2. Коллективные операции в MPI. Параллельные алгоритмы случайного блуж...
Alexey Paznikov
 
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVMДмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
Дмитрий Кашицын, Троллейбус из буханки: алиасинг и векторизация в LLVM
Sergey Platonov
 
Характерные черты функциональных языков программирования
Характерные черты функциональных языков программированияХарактерные черты функциональных языков программирования
Характерные черты функциональных языков программирования
Alex.Kolonitsky
 
Программирование линейных алгоритмов
Программирование линейных алгоритмовПрограммирование линейных алгоритмов
Программирование линейных алгоритмов
Andrey Dolinin
 
Урок 17. Паттерн 9. Смешанная арифметика
Урок 17. Паттерн 9. Смешанная арифметикаУрок 17. Паттерн 9. Смешанная арифметика
Урок 17. Паттерн 9. Смешанная арифметика
Tatyanazaxarova
 
Современный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтерыСовременный статический анализ кода: что умеет он, чего не умели линтеры
Современный статический анализ кода: что умеет он, чего не умели линтеры
corehard_by
 
C++ и базы данных
C++ и базы данныхC++ и базы данных
C++ и базы данных
mcroitor
 
Шаблоны C++ и базы данных. Сергей Федоров. CoreHard Spring 2019
Шаблоны C++ и базы данных. Сергей Федоров. CoreHard Spring 2019Шаблоны C++ и базы данных. Сергей Федоров. CoreHard Spring 2019
Шаблоны C++ и базы данных. Сергей Федоров. CoreHard Spring 2019
corehard_by
 

Similar to Step cpp0201 (20)

Использование C++ для низкоуровневой платформозависимой разработки — Кирилл ...
 Использование C++ для низкоуровневой платформозависимой разработки — Кирилл ... Использование C++ для низкоуровневой платформозависимой разработки — Кирилл ...
Использование C++ для низкоуровневой платформозависимой разработки — Кирилл ...
Yandex
 
Data types. Variables
Data types. VariablesData types. Variables
Data types. Variables
Ihor Porotikov
 
Правила статического анализа кода для диагностики потенциально опасных констр...
Правила статического анализа кода для диагностики потенциально опасных констр...Правила статического анализа кода для диагностики потенциально опасных констр...
Правила статического анализа кода для диагностики потенциально опасных констр...
Sergey Vasilyev
 
Урок 13. Паттерн 5. Адресная арифметика
Урок 13. Паттерн 5. Адресная арифметикаУрок 13. Паттерн 5. Адресная арифметика
Урок 13. Паттерн 5. Адресная арифметика
Tatyanazaxarova
 
паскаль 10кл 14
паскаль 10кл 14паскаль 10кл 14
паскаль 10кл 14
Ирина Куликова
 
C language lect_05_introduction
C language lect_05_introductionC language lect_05_introduction
C language lect_05_introduction
Roman Brovko
 
На что нужно обратить внимание при обзоре кода разрабатываемой библиотеки
На что нужно обратить внимание при обзоре кода разрабатываемой библиотекиНа что нужно обратить внимание при обзоре кода разрабатываемой библиотеки
На что нужно обратить внимание при обзоре кода разрабатываемой библиотеки
Andrey Karpov
 
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
Pavel Tsukanov
 
Как приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVMКак приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVM
Tech Talks @NSU
 
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU
 
20 ловушек переноса Си++ - кода на 64-битную платформу
20 ловушек переноса Си++ - кода на 64-битную платформу20 ловушек переноса Си++ - кода на 64-битную платформу
20 ловушек переноса Си++ - кода на 64-битную платформу
Tatyanazaxarova
 
Урок 9. Паттерн 1. Магические числа
Урок 9. Паттерн 1. Магические числаУрок 9. Паттерн 1. Магические числа
Урок 9. Паттерн 1. Магические числа
Tatyanazaxarova
 
Разработка статического анализатора кода для обнаружения ошибок переноса прог...
Разработка статического анализатора кода для обнаружения ошибок переноса прог...Разработка статического анализатора кода для обнаружения ошибок переноса прог...
Разработка статического анализатора кода для обнаружения ошибок переноса прог...
Tatyanazaxarova
 
курсовой проект
курсовой проекткурсовой проект
курсовой проект
Gulnaz Shakirova
 
Vba 03
Vba 03Vba 03
Vba 03
Alexander Babich
 
тема 1.введение в pascal
тема 1.введение в pascalтема 1.введение в pascal
тема 1.введение в pascal
dasha2012
 
Использование C++ для низкоуровневой платформозависимой разработки — Кирилл ...
 Использование C++ для низкоуровневой платформозависимой разработки — Кирилл ... Использование C++ для низкоуровневой платформозависимой разработки — Кирилл ...
Использование C++ для низкоуровневой платформозависимой разработки — Кирилл ...
Yandex
 
Правила статического анализа кода для диагностики потенциально опасных констр...
Правила статического анализа кода для диагностики потенциально опасных констр...Правила статического анализа кода для диагностики потенциально опасных констр...
Правила статического анализа кода для диагностики потенциально опасных констр...
Sergey Vasilyev
 
Урок 13. Паттерн 5. Адресная арифметика
Урок 13. Паттерн 5. Адресная арифметикаУрок 13. Паттерн 5. Адресная арифметика
Урок 13. Паттерн 5. Адресная арифметика
Tatyanazaxarova
 
C language lect_05_introduction
C language lect_05_introductionC language lect_05_introduction
C language lect_05_introduction
Roman Brovko
 
На что нужно обратить внимание при обзоре кода разрабатываемой библиотеки
На что нужно обратить внимание при обзоре кода разрабатываемой библиотекиНа что нужно обратить внимание при обзоре кода разрабатываемой библиотеки
На что нужно обратить внимание при обзоре кода разрабатываемой библиотеки
Andrey Karpov
 
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
СИ++ УМЕР. ДА ЗДРАВСТВУЕТ СИ++
Pavel Tsukanov
 
Как приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVMКак приручить дракона: введение в LLVM
Как приручить дракона: введение в LLVM
Tech Talks @NSU
 
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVMTech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU: Как приручить дракона: введение в LLVM
Tech Talks @NSU
 
20 ловушек переноса Си++ - кода на 64-битную платформу
20 ловушек переноса Си++ - кода на 64-битную платформу20 ловушек переноса Си++ - кода на 64-битную платформу
20 ловушек переноса Си++ - кода на 64-битную платформу
Tatyanazaxarova
 
Урок 9. Паттерн 1. Магические числа
Урок 9. Паттерн 1. Магические числаУрок 9. Паттерн 1. Магические числа
Урок 9. Паттерн 1. Магические числа
Tatyanazaxarova
 
Разработка статического анализатора кода для обнаружения ошибок переноса прог...
Разработка статического анализатора кода для обнаружения ошибок переноса прог...Разработка статического анализатора кода для обнаружения ошибок переноса прог...
Разработка статического анализатора кода для обнаружения ошибок переноса прог...
Tatyanazaxarova
 
курсовой проект
курсовой проекткурсовой проект
курсовой проект
Gulnaz Shakirova
 
тема 1.введение в pascal
тема 1.введение в pascalтема 1.введение в pascal
тема 1.введение в pascal
dasha2012
 
Ad

Step cpp0201

  • 2. 2 Прошлое занятие (2) 1. Алфавит языка С++. 2. Лексемы. 3. Компилятор, линковщик, интерпретатор. 4. Вывод данных на консоль. 5. Escape - последовательности. 6. Raw - строки. 7. Комментарии.
  • 3. 3 Прошлое занятие (2) 1. Алфавит языка С++. 2. Лексемы. 3. Компилятор, линковщик, интерпретатор. 4. Вывод данных на консоль. 5. Escape - последовательности. 6. Raw - строки. 7. Комментарии.
  • 5. 5 Выполнение домашнего задания 1. Создание блок-схем:  пользования банкоматом;  посещения библиотеки. 2. Форматированный вывод на консоль:  стихотворения;  лесенки строк;  объявления.
  • 10. 10 Занятие 3 1. Структура программы. 2. Элементы текста программы. 3. Переменные. 4. Типы данных. 5. Константы и литералы. 6. Ввод данных с консоли. 7. Работа с кириллицей.
  • 11. 11 Кому скучно Написать программу «Обои» Посчитать сколько для ремонта комнаты нужно рулонов обоев и сколько они будут стоить.
  • 15. 15 Знаки операций и разделители ! % ^ & * ( ) - + = { } | ~[ ] ; ' : " < > ? , . / # Пробельные символы Пробел Знак табуляции Перевод строки Форматирование текста программы Средства => Параметры => Текстовый редактор => С/С++ => Форматирование => Общие => Номера строк
  • 16. 16 Идентификаторы С++ Идентификатор может состоять из букв, цифр и знака подчеркивания, причем не может начинаться с цифры. Идентификатор (имя) НЕ МОЖЕТ содержать ПРОБЕЛЫ! Идентификатор — это последовательность символов, используемая для обозначения одного из следующих элементов: имени объекта или переменной; имени функции; …
  • 17. 17 Примеры идентификаторов int x12; void GetName() string _alfa; int 12x; String Get Number()
  • 18. 18 Литералы const int answer = 42; // целое число double r = sin(108.87); // плавающее (дробное) bool b = true; // логический литерал MyClass* mc = nullptr; // литерал – указатель string s = “Hello”; // строка cha c = 'A'; // символ string sr = R"("Hello world")"; // строка // символьная константа const double Pi = 3.14159; double s = Pi * r * r;
  • 19. 19 Операторы и переменные int a; // объявление переменной int b; int c; cin >> a; // оператор ввода cin >> b; c = a + b; // арифметический оператор cout << c; // оператор вывода int c = a + b; // объединение объявления // с выполняемым оператором
  • 20. 20 Объявление переменных Все переменные должны объявляться перед использованием в таком формате: тип список_переменных Тип должен быть правильным типом данных, а список переменных может содержать одно или более имен, разделенных запятыми: int i, j, l; std::string str; double balance, profit, loss; Имеется три места, где объявляются переменные: внутри функций, при определении параметров функции и вне функций. Эти переменные называются соответственно локальными переменными, формальными параметрами и глобальными переменными.
  • 21. 21 Инициализация переменных Во время объявления переменных можно сообщить им значение путем помещения знака равенства и константы после имени переменной. Этот процесс называется инициализацией и в общем случае имеет вид: тип имя_переменной = константа; (литерал) int first = 0; float balance = 123.23; int a = 1; int b(1); int c{1}; Point p(1,2); // инициализация структуры: x = 1, y = 2 int m[] = { 1,2,3 }; // инициализация массива int m[] { 1,2,3 }; // списковая инициализация Point mp {{1,2},{3,4},{5,6}}; int a; // a = 0 для глобальных переменных
  • 22. 22 Типы данных Каждая переменная имеет определенный тип. Этот тип определяет:  какие значения может иметь переменная;  какие операции с ней можно производить;  сколько байт в памяти она будет занимать. Все типы данных могут быть разделены на такие группы:  целочисленные (short, int, long, long long);  типы чисел с плавающей точкой (float, double, long double);  символьные (char, wchar_t, char16_t, char32_t);  логический (bool);  тип без значения (void);
  • 23. 23 Целочисленные данные(short, int) short: представляет целое число в диапазоне от –32768 до 32767. Занимает в памяти 2 байта (16 бит). Данный тип также имеет синонимы short int, signed short int, signed short. •unsigned short: представляет целое число в диапазоне от 0 до 65535. Занимает в памяти 2 байта (16 бит). •Данный тип также имеет синоним unsigned short int. •int: представляет целое число. В зависимости от архитектуры процессора может занимать 2 байта (16 бит) или 4 байта (32 бита). Диапазон предельных значений соответственно также может варьироваться от –32768 до 32767 (при 2 байтах) или от −2 147 483 648 до 2 147 483 647 (при 4 байтах). Но в любом случае размер должен быть больше или равен размеру типа short и меньше или равен размеру типа long •Данный тип имеет синонимы signed int и signed. •unsigned int: представляет положительное целое число. В зависимости от архитектуры процессора может занимать 2 байта (16 бит) или 4 байта (32 бита), и из-за этого диапазон предельных значений может меняться: от 0 до 65535 (для 2 байт), либо от 0 до 4 294 967 295 (для 4 байт). •В качестве синонима этого типа может использоваться unsigned
  • 24. 24 Целочисленные данные (long) •long: представляет целое число в диапазоне от −2 147 483 648 до 2 147 483 647. Занимает в памяти 4 байта (32 бита). •У данного типа также есть синонимы long int, signed long int и signed long •unsigned long: представляет целое число в диапазоне от 0 до 4 294 967 295. Занимает в памяти 4 байта (32 бита). •Имеет синоним unsigned long int. •long long: представляет целое число в диапазоне от −9 223 372 036 854 775 808 до +9 223 372 036 854 775 807. Занимает в памяти, как правило, 8 байт (64 бита). •Имеет синонимы long long int, signed long long int и signed long long. •unsigned long long: представляет целое число в диапазоне от 0 до 18 446 744 073 709 551 615. Занимает в памяти, как правило, 8 байт (64 бита). •Имеет синоним unsigned long long int.
  • 25. 25 Типы данных для работы с дробными числами float: представляет вещественное число ординарной точности с плавающей точкой в диапазоне +/- 3.4E-38 до 3.4E+38. В памяти занимает 4 байта (32 бита) double: представляет вещественное число двойной точности с плавающей точкой в диапазоне +/- 1.7E-308 до 1.7E+308. В памяти занимает 8 байт (64 бита) long double: представляет вещественное число двойной точности с плавающей точкой не менее 8 байт (64 бит). В зависимости от размера занимаемой памяти может отличаться диапазон допустимых значений.
  • 26. 26 Символьный тип данных •char: представляет один символ в кодировке ASCII. Занимает в памяти 1 байт (8 бит). Может хранить любое значение из диапазона от -128 до 127, либо от 0 до 255 •signed char: представляет один символ. Занимает в памяти 1 байт (8 бит). Может хранить любой значение из диапазона от -128 до 127 •unsigned char: представляет один символ. Занимает в памяти 1 байт (8 бит). Может хранить любой значение из диапазона от 0 до 255 •wchar_t: представляет расширенный символ. На Windows занимает в памяти 2 байта (16 бит), на Linux - 4 байта (32 бита). Может хранить любой значение из диапазона от 0 до 65 535 (при 2 байтах), либо от 0 до 4 294 967 295 (для 4 байт) •char16_t: представляет один символ в кодировке Unicode. Занимает в памяти 2 байта (16 бит). Может хранить любой значение из диапазона от 0 до 65 535 •char32_t: представляет один символ в кодировке Unicode. Занимает в памяти 4 байта (32 бита). Может хранить любой значение из диапазона от 0 до 4 294 967 295
  • 27. 27 Логический тип данных •bool: логический тип. Может принимать одну из двух значений true (истина) и false (ложь). Размер занимаемой памяти для этого типа точно не определен. Перечислимый тип данных (перечисление) Перечисление (или ещё «перечисляемый тип») — это тип данных, где любое значение (или ещё «перечислитель») определяется как символьная константа. Объявить перечисление можно с помощью ключевого слова enum. enum Colors { Red, // const int Red = 0; White, // const int White = 2; Black }
  • 28. 28 Ввод данных с консоли cout << “Enter number” << endl; int n; cin >> n; 1 --- 1 2 3 --- 2 abc --- 0 12a --- 12 a12 --- 0 string s; cin >> s; 12a --- 12a 1 2 --- 1 cin >> s >> n; a12 12a --- a12 12
  • 29. 29 Работа с кириллицей setlocale(LC_ALL, "rus"); setlocale(LC_ALL, ""); setlocale(LC_ALL, "rus_rus.1251"); cout << "Всем привет!" << endl; // кодировка 1251 string name; cin >> name; cout << name; // кодировка 866 setlocale(LC_ALL, "rus_rus.866"); cout << name; // кодировка 866 setlocale(LC_ALL, "rus_rus.1251"); cout << «Еще привет!" << endl;// кодировка 1251
  • 30. 30 Пишем программу Создать (проект) консольное приложение С++ (NamePlus) Вывести Hello! пауза Вывести «Всем привет!» (setlocale(LC_ALL, "rus_rus.1251");) Добавить переменную name и функцию void EnterName() Вызвать EnterName и вывести «Вас зовут» name Добавить функцию int Sum(int a, int b) Ввести a,b, и вывести name, a + b = Sum(a,b)
  • 31. 31 Самостоятельная работа Встреча №3 Задание 1. Создать приложение, которое выводит информацию о книге, в следующем формате: Name : “The war and the peace” Avtor : L.N. Tolstoj Izdatelstvo: Piter Pages : 500 Задание 2. Создать приложение, которое выводит на консоль фразу: “U lukomor’a dub zelenij, Zlataya zep na dupe tom, I dnem i nochju kot uchenij vse hodit po cepi krugom” Сопроводить каждую новую строчку тройным звуковым сигналом b Задание 3. Создать приложение, которое выводит на экран следующую таблицу: ╔════════════════════════════════════════════╗ ║ Vremena goda ║ ╠═════════╦═══════════╦═══════════╦══════════╣ ║ Zima ║ Vesna ║ Leto ║ Osen ║ ╚═════════╩═══════════╩═══════════╩══════════╝ Подсказка: Рекомедуем выполнить следующий пример cout<<"n"<<(char)201<<(char)205<<(char)205<<(char)187; Необходимые символы находятся в дипазоне от 179 до 218
  • 32. 32 Домашняя работа Встреча №3 Задание 1: Заданы три сопротивлении R1, R2, R3 . Вычислить значение сопротивления R0 по формуле: 1/R0 = 1/R1+1/R2+1/R3. Контрольный пример: R1=2, R2=4, R3=8 R0 = 1.142857 Задание 2: По заданной длине окружности найти площадь круга по формуле S = pi*R2, радиус вычислить из формулы длины окружности: L=2*pi *R Примечание pi = 3.14 Задание 3: Вычислить пройденное расстояние при прямолинейном равноускоренном движении по формуле S = v*t + (a*t2) / 2, где v – скорость, t – время, а – ускорение