Оглавление
ВВЕДЕНИЕ В С++. 2
1. Алфавит. 2
2. Литералы.. 2
3. Комментарии. 2
ОПЕРАТОРЫ С++. 3
Арифметические операторы.. 3
Логические операторы.. 3
Побитовые операторы.. 3
Составное присваивание. 4
Операторы работы с указателями и членами класса. 5
Другие операторы.. 5
ПРИОРИТЕТЫ ОПЕРАТОРОВ.. 6
ОСНОВНЫЕ ТИПЫ ДАННЫХ.. 7
СОЗДАНИЕ ПЕРВОЙ ПРОГРАММЫ… 9
Задание к лабораторной работе № 1. 13
ВВЕДЕНИЕ В С++
Алфавит
Множество символов языка C включает:
прописные буквы латинского алфавита;
строчные буквы латинского алфавита;
арабские цифры;
разделители: , . ; : ? ! ‘ | / \ ~ _ ^ ( ) { } [ ] # % — = + *
Остальные символы могут быть использованы только в символьных строках, символьных константах и комментариях. Язык C++ различает большие и маленькие буквы, таким образом, name и Name – разные идентификаторы.
Литералы
Литералы в языке C++ могут быть целые, вещественные, символьные и строковые.
Целые:
десятичные: 10, 132, -32179;
восьмеричные (предваряются символом «0»): 010, 0204, -076663;
шестнадцатеричные (предваряются символами «0х»): 0хА, 0x84, 0x7db3.
Вещественные: 15.75, 1.575e1, .75, -.125
Символьные: ‘a’, ‘e’, ‘.’, ‘?’, ‘2’.
Строковые: строка.
Управляющие символы С++ | |
Символ | Описание |
\r | возврат каретки в начало строки |
\n | новая строка |
\t | горизонтальная табуляция |
\v | вертикальная табуляция |
\» | двойные кавычки |
\’ | апостроф |
\\ | обратный слеш |
\0 | нулевой символ |
\? | знак вопроса |
\a | сигнал бипера (спикера) компьютера |
Комментарии
Комментарий – это последовательность символов, которая игнорируется компилятором языка C++. Комментарии могут занимать несколько строк – имеет следующий вид: /*ВАШ ТЕКСТ*/. Кроме того, комментарий может быть однострочный – //ВАШ ТЕКСТ.
Разумное использование комментариев (и согласованное употребление отступов) может сделать чтение и понимание программы более приятным занятием. При неправильном использовании комментариев читабельность программы может, напротив, серьезно пострадать. Компилятор не понимает смысл комментариев, поэтому не существует способа проверить, что комментарий:
содержателен;
имеет какое-то отношение к программе;
не устарел.
Удачно подобранный и написанный набор комментариев является существенной частью хорошей программы. Написание «правильных» комментариев может оказаться не менее сложной задачей, чем написание самой программы.
ОПЕРАТОРЫ С++
Арифметические операторы
Оператор | Синтаксис | ||
Присваивание | a = b | ||
Сложение | a + b | ||
Вычитание | a — b | ||
Унарный плюс | +a | ||
Унарный минус | -a | ||
Умножение | a * b | ||
Деление | a / b | ||
Операция модуль (остаток от деления целых чисел) | a % b | ||
Выражение в скобках | (a любой знак b) | ||
Инкремент | префиксный | ++a | |
суффиксный (постфиксный) | a++ | ||
Декремент | префиксный | —a | |
суффиксный (постфиксный) | a— | ||
Оператор ++ увеличивает переменную на 1 т.е. выражение ++a или a++ идентично a + 1, но порядок их выполнения в выражении будет разным!!!
Оператор — уменьшает переменную на 1 т.е. выражение —a или a— идентично a — 1, но порядок их выполнения в выражении будет разным!!!
Операторы сравнения
Оператор | Синтаксис | |
Равенство | a == b | |
Неравенство | a != b | |
Больше | a b | |
Меньше | a b | |
Больше или равно | a = b | |
Меньше или равно | a |
Логические операторы
Оператор | Синтаксис | |
Логическое отрицание, НЕ | !a | |
Логическое умножение, И | a b | |
Логическое сложение, ИЛИ | a || b |
Побитовые операторы
Оператор | Синтаксис | |
Побитовая инверсия | ~a | |
Побитовое И | a b | |
Побитовое ИЛИ (or) | a | b | |
Побитовое исключающее ИЛИ (xor) | a ^ b | |
Побитовый сдвиг влево | a | |
Побитовый сдвиг вправо | a b |
Составное присваивание
Оператор | Синтаксис | Значение | |
Сложение, совмещённое с присваиванием | a += b | a = a + b | |
Вычитание, совмещённое с присваиванием | a -= b | a = a — b | |
Умножение, совмещённое с присваиванием | a *= b | a = a * b | |
Деление, совмещённое с присваиванием | a /= b | a = a / b | |
Вычисление остатка от деления, совмещённое с присваиванием | a %= b | a = a % b | |
Побитовое «И» (AND), совмещённое с присваиванием | a = b | a = a b | |
Побитовое «ИЛИ» (or), совмещённое с присваиванием | a |= b | a = a | b | |
Побитовое «исключающее ИЛИ» (xor), совмещённое с присваиванием | a ^= b | a = a ^ b | |
Побитовый сдвиг влево, совмещённый с присваиванием | a | a = a | |
Побитовый сдвиг вправо, совмещённый с присваиванием | a = b | a = a b |
Операторы работы с указателями и членами класса
Оператор | Синтаксис | |
Обращение к элементу массива | a[b] | |
Непрямое обращение («объект, на который указывает a») | *a | |
Ссылка («адрес a») | a | |
Обращение к члену структуры («член b объекта, на который указывает a») | a-b | |
Обращение к члену структуры («член b объекта a») | a.b | |
Член, на который указывает b в объекте, на который указывает a | a-*b | |
Член, на который указывает b в объекте a | a.*b |
Другие операторы
Оператор | Синтаксис | |
Функтор | a(a1, a2) | |
Оператор «запятая» | a, b | |
Тернарная условная операция | a ? b : c | |
Оператор расширения области видимости | a::b | |
Sizeof (размер) | sizeof(a) sizeof(type) | |
Align-of (выравнивание) | alignof(type) или _Alignof(type) | |
Интроспекция | typeid(a) typeid(type) | |
Приведение типа | (type) a | |
Выделение памяти | new type | |
Выделение памяти для массива | new type[n] | |
Освобождение памяти | delete a | |
Освобождение памяти, занятой массивом | delete[] a |
Унарные операторы – операторы, конструкция которых содержит в себе 1 переменную (унарный плюс, унарный минус, инкремент, декремент)
Бинарные операторы – операторы с 2 переменными (обычный плюс, обычный минус, деление, модуль и тд.)
Тернарные операторы – операторы с 3 переменными (тернарная условная операция. Она единственная)
ПРИОРИТЕТЫ ОПЕРАТОРОВ
В данной таблице указаны приоритеты операторов и их ассоциативность. Операторы, указанные в таблице выше (раньше), имеют более высокий приоритет (приоритет вычисления). При рассмотрении выражения, операторы, имеющие более высокий приоритет, будут вычислены раньше операторов с низким приоритетом. Если несколько операторов указаны в одной ячейке, то они имеют одинаковый приоритет и вычисляются в последовательности, задаваемой ассоциативностью.
Приоритет | Оператор | Описание | Ассоциативность |
Наивысший | :: | Раскрытие области видимости | Нет |
++ | Суффиксный инкремент | Слева направо | |
— | Суффиксный декремент | ||
() | Вызов функции | ||
[] | Взятие элемента массива | ||
. | Выбор элемента по ссылке | ||
— | Выбор элемента по указателю | ||
typeid() | RTTI | ||
const_cast | Приведение типа | ||
dynamic_cast | Приведение типа | ||
reinterpret_cast | Каламбур типизации | ||
static_cast | Приведение типа | ||
++ | Префиксный инкремент | Справа налево | |
— | Префиксный декремент | ||
+ | Унарный плюс | ||
— | Унарный минус | ||
! | Логическое НЕ | ||
~ | Побитовое НЕ | ||
(type) | Приведение типа | ||
* | Разыменование указателя | ||
Взятие адреса объекта | |||
sizeof | Size-of (размер) | ||
new, new[] | Выделение динамической памяти | ||
delete, delete[] | Освобождение динамической памяти | ||
.* | Указатель на член (C++) | Слева направо | |
-* | Указатель на член (C++) | ||
* | Умножение | ||
/ | Деление | ||
% | Получение остатка от деления | ||
+ | Сложение | ||
— | Вычитание | ||
Побитовый сдвиг влево | |||
Побитовый сдвиг вправо | |||
Меньше | |||
Меньше или равно | |||
Больше | |||
= | Больше или равно | ||
== | Равенство | ||
!= | Неравенство | ||
Побитовое И (and) | |||
^ | Побитовое исключающее ИЛИ (xor) | ||
| | Побитовое ИЛИ (or) | ||
Логическое И | |||
|| | Логическое ИЛИ | ||
?: | Тернарная условная операция | Справа налево | |
= | Присваивание | ||
+= | Сложение, совмещённое с присваиванием | ||
-= | Вычитание, совмещённое с присваиванием | ||
*= | Умножение, совмещённое с присваиванием | ||
/= | Деление, совмещённое с присваиванием | ||
%= | Вычисление остатка от деления, совмещённое с присваиванием | ||
Побитовый сдвиг влево, совмещённый с присваиванием | |||
= | Побитовый сдвиг вправо, совмещённый с присваиванием | ||
= | Побитовое «И», совмещённое с присваиванием | ||
|= | Побитовое «ИЛИ», совмещённое с присваиванием | ||
^= | Побитовое «исключающее ИЛИ» (xor), совмещённое с присваиванием | ||
throw | Оператор создания исключения | ||
, | Оператор «запятая» | Слева направо |
ОСНОВНЫЕ ТИПЫ ДАННЫХ
Основные (стандартные) типы данных часто называют арифметическими, поскольку их можно использовать в арифметических операциях. Для описания основных типов определены следующие ключевые слова:
- int (целый);
- long long (расширенный целый);
- char (символьный);
- wchar_t (расширенный символьный);
- bool (логический);
- float (вещественный);
- double (вещественный с двойной точностью);
- long double(расширенный вещественный).
Тип char также может выступать как целочисленный.
Первые четыре тина называют целочисленными (целыми), последние два — типами с плавающей точкой. Код, который формирует компилятор для обработки целых величин, отличается от кода для величин с плавающей точкой.
Существует четыре спецификатора типа, уточняющих внутреннее представление и диапазон значений стандартных типов:
- short (короткий);
- long (длинный);
- signed (знаковый, обычно не пишется)
- unsigned (беззнаковый).
Тип данных | Байты | Биты | Min | Max |
Логический | ||||
bool | Принимает значение true(1) или false(0) | |||
Символьный | ||||
char | — 128 (-27) | 127 (27-1) | ||
unsigned char | 255 (28) | |||
wchar_t | 65 535 (216) | |||
Целочисленный | ||||
short | -32768 (-215) | 32767 (215-1) | ||
unsigned short | 65535 (216) | |||
int | -2147483648 (-231) | 2147483647 (231-1) | ||
unsigned int | 4294967295 (232) | |||
long | -2147483648 (-231) | 2147483647 (231-1) | ||
unsigned long | 4294967295 (232) | |||
long long | -9 223 372 036 854 775 808 (-263) | 9 223 372 036 854 775 807 (263-1) | ||
unsigned long long | 18 446 744 073 709 551 615 (264) | |||
Вещественный | ||||
float | 3.4E-38 | 3.4E+38 | ||
double | 1.7E-308 | 1.7E+308 | ||
long double | 3.4E-4932 | 3.4E+4932 |
СОЗДАНИЕ ПЕРВОЙ ПРОГРАММЫ
Любая программа на С или С++ начинает свое выполнение с функции main(). Напишем нашу первую программу. Для этого создадим файл main.cpp(на самом деле можно файл назвать как захотим) в Visual Studio:
1.Нажимаем в меню «Файл»
2. Выбираем «Создать»
3.Выбираем «Проект»
4. Выбираем «Visual C++»
5. Выбираем «Консольное приложение Win32»
6. Задаем имя и расположение проекта
7. Нажимаем ОК
8. Нажимаем Далее
9. Выбираем «Консольное приложение»
10. Ставим галочку «Пустой проект»
11. БОЛЬШЕ НИЧЕГО НЕ МЕНЯЕМ!!!
12. Нажимаем «Готово»
13. Ищем блок «Обозреватель решений» (он может быть слева, как на рисунке, либо справа)
14. Находим и нажимаем правой кнопкой мыши по строке «Файлы исходного кода»
15. Выбираем «Добавить»
16. Выбираем «Создать элемент»
13. – 16. ЛИБО МЫ МОЖЕМ ВСЕ ЭТО ВЫПОЛНИТЬ ГОРЯЧИМ СОЧЕТАНИЕМ КЛАВИШЬ cltr+shift+a
17. Выбираем «Файл С++(.cpp)»
18. Выбираем имя и расположение файла (в нашем случае имя main.cpp)
19. Нажимаем «Добавить»
20. Откроется рабочая область и в ней напишем код:
Скомпилировав и запустив нашу программу (нажатием клавиш cltr+F5), мы должны получить на экране:
В первой строке программы мы написали директиву #include(служит для подключения дополнительных библиотек), она подключает библиотеку ввода-вывода iostream, без которой компилятор не поймет определенные в ней функции cin(функция ввода с клавиатуры), cout(функция вывода информации на экран). Using namespace std; подключает пространство имен std, где и находятся cin и cout. Скобки { и } обрамляют начало и конец функции int main() –главной функции( с нее начинается любое выполнение кода). В С++ каждый оператор, а также каждая строка с обращением к функции заканчивается точкой с запятой, исключения составляют комментарии, команды препроцессора и имена функций стоящие в начале программной единицы (например, у нас в программе int main()). В строке cout
Для того, чтобы писать русскими буквами в консоли, используем в теле функции int main() следующую команду:
setlocale(LC_ALL, Russian);
У нас получится:
Без этой команды консоль будет показывать непонятные символы:
Теперь на основе полученных знаний напишем простую программу a+b.
Та же программа, только с комментариями.
В программе переменные были объявлены на каждой строке:
int a;
int b;
int sum;
Но переменные одного типа можно объявлять через запятую:
int a,b,sum;