Введение в С++
Алфавит языка С++ • прописные и строчные латинские буквы и знак подчёркивания, • арабские цифры от 0 до 9 • специальные знаки: " { } , | [ ] ( ) + / % *. ? <=>!~; ^ • пробельные символы: пробел, символы табуляции.
Из символов алфавита формируются лексемы языка: • идентификаторы (имена); • ключевые (зарезервированные) слова; • знаки операций; • константы • разделители (скобки, точка, запятая, пробельные символы).
Идентификаторы Идентификатор — это имя программного объекта. В идентификаторе используются латинские буквы, цифры и знак подчеркивания. sysop, Sy. So. P и SYS 0 P — три различных имени. Первым символом идентификатора может быть буква или знак подчеркивания, но не цифра. Пробелы внутри имен не допускаются.
Венгерская нотация: i. Max. Length, d. Sum. Знаки подчёркивания: max_length, number_of_galosh. При выборе идентификатора: • идентификатор не должен совпадать с ключевыми словами языка; • не рекомендуется начинать идентификаторы с символа подчеркивания.
Ключевые слова — это зарезервированные идентификаторы, которые имеют специальное значение для компилятора.
asm else new auto enum operator bool explicit private break export protected case extern public catch false register char float reinterpret_cast class for return const friend short const_cast goto signed continue if sizeof default inline static delete int static_cast do long struct double mutable switch dynamic_cast namespace template this throw true try typedef typeid typename union unsigned using virtual void volatile wchar_t while
Константы Константами называют неизменяемые величины. Различаются целые, вещественные, символьные и строковые константы.
Вещественная константа в экспоненциальном формате представляется в виде мантиссы и порядка: 0. 2 Е 6 → 0, 2 · 10 6 мантисса порядок
Символ используется для представления: • кодов, не имеющих графического изображения (например, n — перевод курсора в начало следующей строки); • символов апострофа ( ' ), обратной косой черты ( ), знака вопроса (? ) и кавычки ( " ); • любого символа с помощью его шестнадцатеричного или восьмеричного кода, например, 73, ХF 5. Числовое значение должно находиться в диапазоне от 0 до 255. Последовательности символов, начинающиеся с , называют управляющими, или escapeпоследовательностями.
Управляющие последовательности в языке C++ Изображение Наименование а Звуковой сигнал b Возврат на шаг f Перевод страницы (формата) n Перевод строки r Возврат каретки t Горизонтальная табуляция v Вертикальная табуляция \ Обратная косая черта ' Апостроф " Кавычка ? Вопросительный знак ddd Восьмеричный код символа Xddd Шестнадцатеричный код символа
"Издательский дом "Питер" "
Комментарии • начинается с двух символов // и заканчивается символом перехода на новую строку, • заключается между символами-скобками /* и */. Внутри комментария можно использовать любые допустимые на данном компьютере символы.
Типы данных C++ Тип данных определяет: • внутреннее представление данных в памяти компьютера; • множество значений, которые могут принимать величины этого типа; • операции и функции, которые можно применять к величинам этого типа.
Все типы языка C++ можно разделить на основные и составные. В языке C++ определено шесть основных типов данных для представления целых, вещественных, символьных и логических величин. На основе основных типов описывают составные типы: массивы, перечисления, функции, структуры, ссылки, указатели, объединения и классы.
Основные типы данных • • • int (целый); char (символьный); wchar_t (расширенный символьный); bool (логический); float (вещественный); double (вещественный с двойной точностью). Первые четыре типа называют целочисленными (целыми), последние два — типами с плавающей точкой.
Существует четыре спецификатора типа, уточняющих представление стандартных типов: • short (короткий); • long (длинный); • signed (знаковый); • unsigned (беззнаковый).
Целый тип (int) Размер типа int не определяется стандартом, а зависит от компьютера и компилятора (для 16 -разрядного процессора отводится 2 байта, для 32 -разрядного — 4 байта). Спецификатор short перед int указывает, что под число требуется отвести 2 байта. Спецификатор long означает, что целая величина будет занимать 4 байта.
Внутреннее представление величины целого типа — целое число в двоичном коде. При использовании спецификатора signed старший бит числа интерпретируется как знаковый (0 — положительное число, 1 — отрицательное). Спецификатор unsigned позволяет представлять только положительные числа (старший разряд рассматривается как часть кода числа). По умолчанию все целочисленные типы считаются знаковыми.
Тип константы можно регулировать с помощью суффиксов L, l (long) и U, u (unsigned). Например: константа 32 L - тип long (4 байта), 0 x 22 UL, 05 Lu.
Символьный тип (char) Под величину символьного типа отводится 1 байт. Тип char, как и другие целые типы, может быть со знаком или без знака. В величинах со знаком можно хранить значения в диапазоне от -128 до 127. В величинах без знака значения могут находиться в пределах от 0 до 255 ( достаточно для хранения 256 -символьного набора ASCII).
Расширенный символьный тип wchar_t Работает с набором символов, для кодировки которых не достаточно 1 байта, например, Unicode. Строковые константы типа wchar_t записываются с префиксом L, например, L"Gates".
Логический тип (bool) Величины логического типа могут принимать 2 значения: true и false. Внутренняя форма представления значения false — 0 (нуль). Любое другое значение (≠ 0) интерпретируется как true.
Типы с плавающей точкой (float, double и long double) Внутреннее представление вещественного числа состоит из двух частей — мантиссы и порядка: 12 10 = 11002 = 1, 1 · 2 3 порядок мантисса Мантисса — это число, большее 1. 0, но меньшее 2. 0.
Длина мантиссы определяет точность числа, а длина порядка — его диапазон. Величины типа float занимают 4 байта, из которых один двоичный разряд отводится под знак мантиссы, 8 разрядов под порядок и 23 под мантиссу. Для величин типа double, занимающих 8 байт, под порядок и мантиссу отводится 11 и 52 разряда соответственно. Спецификатор long перед именем типа double указывает, что под величину отводится 10 байтов.
Тип Диапазон Байт bool true и false 1 signed char -128. . . 127 1 unsigned char 0. . . 255 1 signed short int -32768. . . 32767 2 unsigned short int 0. . . 65535 2 signed long int -2, 15 млрд. . . 2, 15 млрд 4 unsigned long int 0. . . 4 294 967 295 4 float 3. 4 e-38. . . 3. 4 e+38 4 double 1. 7 e-308. . . 1. 7 e+308 8 long double 3. 4 e-4932. . . 3. 4 e+4932 10
Тип void (пустой тип) используется для определения функций, которые не возвращают значения, для указания пустого списка аргументов функции , как базовый тип для указателей и в операции приведения типов.
Структура программы Программа на языке C++ состоит из функций, описаний и директив препроцессора. Одна из функций должна иметь имя main. Выполнение программы начинается с первого оператора этой функции.
Простейшее определение функции имеет следующий формат: Тип имя_функции([параметры]) { Оператор1. . . Оператор. N }
Необходимые сведения о функциях: • тип функции – это тип возвращаемого функцией значения ; • если функция не возвращает значение, указывается тип void ; • тело функции является блоком и, следовательно, заключается в фигурные скобки ; • функции не могут быть вложенными.
Пример программы, содержащей функции main, f 1 и f 2: #include
Директивы препроцессора задают действия препроцессора по преобразованию текста программы перед компиляцией. Директива #include <имя_файла> вставляет содержимое указанного файла (заголовочного файла) в ту точку исходного файла, где она записана. Заголовочные файлы имеют расширение. h и могут содержать: • Объявления функций, данных; • Определения констант, типов.
Описания задают имена и атрибуты переменных, данных и типов, используемых в программе. Объявление функции является предварительным описанием функции и может опускаться. Программа может состоять из нескольких модулей (исходных файлов).
Переменные и выражения Переменная – это именованная область памяти, в которой хранятся данные определённого типа. У переменной есть имя и значение (значение можно менять). Перед использованием любая переменная должна быть описана (определена): [const] тип имя [инициализатор];
Модификатор const показывает, что значение переменной изменять нельзя. Такую переменную называют именованной константой, или просто константой. При описании можно присвоить переменной начальное значение, это называется инициализацией. Инициализатор можно записывать в двух формах — со знаком равенства: = значение или в круглых скобках: ( значение ) Константа должна быть инициализирована при объявлении. В одном операторе можно описать несколько переменных одного типа, разделяя их запятыми.
Примеры: short int а = 1; // целая переменная а double g (9. 81); // переменная типа double const char С = 'С'; // символ. константа С char s, sf = ‘ f '; // инициализация относится только к sf char t(54); float с = 0. 22, x(3), sum;
Описание переменной задает ее область действия : переменная может быть локальной или глобальной. Если переменная определена внутри блока (блок ограничен фигурными скобками), она называется локальной, область ее действия — от точки описания до конца блока, включая все вложенные блоки. Если переменная определена вне любого блока, она называется глобальной и областью ее действия считается файл, в котором она определена, от точки описания до его конца.
Операции В соответствии с количеством операндов, которые используются в операциях, они делятся на унарные (один операнд), бинарные (два операнда) и тернарные (три операнда).
Унарные операции Операция Описание ++ -sizeof ~ ! – & * new delete Увеличение на 1 Уменьшение на 1 Определение размера в байтах Поразрядное отрицание Логическое отрицание Арифметическое отрицание Взятие адреса Разадресация Выделение памяти Освобождение памяти
Операция увеличения на 1 (++) называется инкремент. 2 формы записи – префиксная (++х) и постфиксная (х++). Примеры: 1) int х = 4; cout << ++x; // х увеличивается, затем вывод Результат: 5 2) int х = 4 ; cout << x++; // вывод, затем х увеличивается Результат: 4
Операция уменьшения на 1 (- -) называется декремент. Операция определения размера sizeof предназначена для определения размера объекта в байтах. Она имеет 2 формы: sizeof выражение sizeof (тип) Примеры: cout << sizeof(float); Результат: 4
Операции отрицания. Арифметическое отрицание (–) изменяет знак операнда целого или вещественного типа на противоположный. Логическое отрицание (!) даёт 0 (ложь), если операнд ≠ 0 (истина) и наоборот (операнд целого и вещественного типа). Поразрядное отрицание (~) инвертирует каждый разряд в двоичном представлении целочисленного операнда.
Бинарные и тернарные операции Операция Описание * / % + << >> < <= > >= == != Умножение Деление Остаток от деления Сложение Вычитание Сдвиг влево Сдвиг вправо Меньше или равно Больше или равно Равно Не равно
Бинарные и тернарные операции Операция Описание && || & ^ | = *= /= %= += -= Логическое ИЛИ Поразрядная конъюнкция Поразрядное исключающее ИЛИ Поразрядная дизъюнкция Присваивание Умножение с присваиванием Деление с присваиванием Остаток от деления с присваиванием Сложение с присваиванием Вычитание с присваиванием
Деление (/). Если результат целочисленный, то он округляется до целого числа. int a, b=10, c=3; a=b/c; cout << a; Результат: 3 Остаток от деления (%) применяется только к целочисленным операндам. int a, b=10, c=3; a=b%c; cout << a; Результат: 1
Операции отношения (<, >, >=, <=, ==, !=) сравнивают первый операнд со вторым. Результат операции: true или false. Логические операции ( && и || ). Результат - true или false. Результат логического ИЛИ (||) равен true, если хотя бы один из операндов равен true. 5=6 || 3>-5 x<3 || x>=3
В программе для присвоения переменной значения используется оператор присваивания: Имя_переменной = арифметич. выражение Например, Коeff = 5. 6; FIO = “Иванович”; X = 2*sin(3*A);
Арифметические выражения В арифметическом выражении можно использовать: • имена переменных, констант, • круглые скобки, • знаки арифметических операций +, - , * , / , % (остаток от деления), • математические функции.
Операции выполняются в соответствии с приоритетами (см. табл. операций): 2 + a / 4*b → (2+a) /(4*b) →
• • Математические функции: abs (fabs) - модуль числа acos - арккосинус числа asin - арксинуса числа atan - арктангенс числа ceil - наибольшее целое число, большее или равное числу cos - косинус заданного угла(в радианах) eхр – экспонента числа floor - наименьшее целое число, большее или равное заданному
• log - натуральный логарифм числа • log 10 - десятичный логарифм числа • modf – делит вещественное число на целую и дробную часть • pow - значение xy • pow 10 – значение 10 y • sin - синус заданного угла (в радианах). • sinh – гиперболический синус • sqrt - квадратный корень числа • tаn – тангенс угла ( в радианах).
Математ. запись Запись в C++ 3*sqrt(5*a*a*a) 2*sin(6*y)/(8– 4*cos(8*y)) (3. 5+exp(2*b))/(0. 25*log(fabs(4*a))) (tg x – cos y)7 exp(7*log(tan(x)-cos(y))) pow(tan(x)-cos(y), 7) или
Примеры операторов присваивания Num = 3*sqrt(R); Sum =Sum+1; или X =X*(A + B); или Y = Y-res; или Sum+ = 1; X* = A+B; Y- = res;