Элементы языка Си++

Алфавит языка

В алфавит языка С++ входят:

  • латинские буквы: от a до z (строчные) и от A до Z (прописные);

  • десятичные цифры: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9;

  • специальные символы: ² } , │ [ ] ( ) + - / % \ ; ':? < > _ & # * и другие символы. К специальным символам относится также пробел.

В языке С++ используются лексемы, которые формируются из символов алфавита. К лексемам относятся:

  • идентификаторы;

  • ключевые слова или служебные  слова;

  • константы;

  • знаки операций;

  • разделители;

  • комментарии.

Идентификаторы – это имена переменных, функций, меток, используемых в программе.

Правила пользования идентификаторов:

  1. идентификатором может быть любая последовательность строчных и прописных латинских букв, цифр и знака подчеркивания, начинающаяся не с цифры;
  2. максимальная длина идентификатора 32 символа (ограничения на длину идентификатора могут различаться в разных реализациях языка; компиляторы фирмы Borland позволяют использовать до 32 первых символов имени; в некоторых других реализациях допускаются идентификаторы длиной не более  8 символов);
  3. идентификаторы в С++ чувствительны к регистру (прописные/строчные буквы).  Это значит, что, например, flag, FLAG, Flag, FlAg – разные идентификаторы;
  4. нельзя использовать 2 символа подчеркивания подряд;
  5. нельзя использовать ключевые слова в качестве идентификатора.

Ключевые (служебные) слова – это идентификаторы, зарезервированные в языке для специального использования: обозначение типов данных, операторов языка, классов памяти. Они не могут быть использованы как свободно выбираемые имена. Полный список служебных слов зависит от реализации языка, т. е. различается для разных компиляторов. Однако существует неименное ядро, которое определено стандартом С++. Вот его список:

asm else private throw
auto enum protected try
break extern public typedef
case float register typeid
catch for return union
char friend short unsigned
class goto signed virtual
const if sizeof void
continue inline static volatile
default int struct while
delete long switch  
do new template  
double operator this  


Константы – это лексемы, предоставляющие изображения фиксированного числового, строкового и символьного значения.

Ограничение -  ключевые слова распознаются только в том случае, когда они написаны строчными буквами.

Константы бывают:

  • целые числа;

  • вещественные числа;

  • символьные;

  • строковые;

  • перечисляемые;

  • типизированные константы;

  • неарифметическая константа.

Целые константы могут быть десятичными, восьмеричными и шестнадцатеричными.

Десятичная целая константа определена как последовательность десятичных цифр, начинающаяся не с нуля, если это не число нуль.

Восьмеричные целые константы начинаются всегда с нуля: 016 имеет десятичное значение 14. Если в записи восьмеричной константы встретит­ся недопустимая цифра 8 или 9, то это воспринимается как ошибка.

Последовательность шестнадцатеричных цифр, которой предшествует 0х, считается шестнадцатеричной константой. В шестнадцатеричные циф­ры кроме десятичных входят латинские буквы от а (или А) до f (или F).
Таким образом, 0x16 имеет десятичное значение 22, a OxF - десятичное
значение 15.

Вещественные константы, т.е. константы с плавающей точкой, даже  не отличаясь от целых  констант по значению,  имеют другую форму внутреннего представления в ЭВМ. Эта форма требует использова­ния арифметики с плавающей точкой при операциях с такими константа­ми. Поэтому компилятор должен уметь распознавать вещественные константы. Распознает он их по внешним признакам. Константа с пла­вающей точкой может включать следующие шесть частей: целая часть (десятичная целая константа); десятичная точка; дробная часть (десятичная целая константа); признак (символ) экспоненты е или е; пока­затель десятичной степени (десятичная целая константа, возможно со знаком); суффикс F (или f) либо L (или l).

В записях вещественных констант могут опускаться: целая или дроб­ная часть (но не одновременно); десятичная точка или признак экспонен­ты с показателем степени (но не одновременно); суффикс.

Примеры:  66.0;    .0; .12;      3.14159F;     1.12е-2;    2E+6L;     2.7l.

При отсутствии суффиксов f(f) или L(l) вещественные константы [имеют форму внутреннего представления, которой в языке С++ соответ­ствует тип данных double. Добавив суффикс f или F, константе придают тип float. Константа имеет тип long double, если в ее представлении ис­пользуется суффикс L или 1.

Символьные константыэто один или два символа, заключенные в апострофы. Односимвольная константа имеет стандартный тип char. Примеры констант: 'z', ‘+’, ‘A’.

В С++ есть специальные символы, начинающиеся со знака '\'

‘\n’ – перевод строки;

‘\t’ – табуляция горизонтальная;

‘\v’ – табуляция вертикальная;

‘\r’ – возврат каретки;

‘\0’ – нулевой символ (конец строки).

Строка или строковая константа, иногда называемая литерной строкой, определяется как последовательность символов, заключенная в кавычки (не в апострофы): ”Изучаем новый язык программирования”. Все символы строки размещаются подряд. Каждый символ занимает ровно 1 байт. В конце записи строковой константы компилятор помещает символ ‘\0’ – конец строки. Поэтому запись 'F' содержит 1 байт, а запись ”F” – 2 байта.

Перечислимые константы (или константы перечисления, иначе константы перечислимого типа) вводятся с помощью служебного сло­ва enum. По существу это обычные целочисленные константы (типа int), которым приписаны уникальные и удобные для использования обозначения. В качестве обозначений выбираются произвольные идентификаторы, не совпадающие со служебными словами и именами других объектов программы. Пример: enum color{black, red, blue,gren};

Типизированные константы используются как переменные, значения которых не может быть изменено после инициализации. Объявляются с помощью ключевого слова const.  Пример:  const int a =  50;

Неарифметическая константа - нулевой указатель NULL

Знаки операций обеспечивают формирование и последующее вы­числение выражений. Выражение есть правило для получения значе­ния. Один и тот же знак операции может употребляться в различных выражениях и по-разному интерпретироваться в зависимости от кон­текста. Для изображения операций в большинстве случаев использу­ется несколько символов.

Операции бывают унарные (для оного операнда) и бинарные (для двух операндов).

Унарные операции

&      операция получения адреса операнда;

      операция обращения по адресу, т.е. раскрытия ссылки, ина­че операция разыменования (доступа по адресу к значению того объекта, на который указывает операнд). Операндом должен быть адрес;

       логическое отрицание (НЕ) значения операнда; применяется к скалярным операндам; целочисленный результат 0 (если операнд ненулевой, т.е. истинный) или 1 (если операнд ну­левой, т.е. ложный). В качестве логических значений в языке С++ используют целые числа: 0 - ложь и не нуль (! 0) - ис­тина. Отрицанием любого ненулевого числа будет 0, а отрицанием нуля будет 1. Таким образом: ! 1 равно 0; ! 2 равно 0; ! (-5) равно 0; !0 равно 1;

++     увеличение на единицу (инкремент или автоувеличение); префиксная операция - увеличение значения операнда на 1 до его использования;
постфиксная операция - увеличение значения операнда на 1 после его использования.

--       уменьшение на единицу (декремент или автоуменьшение); префиксная операция - уменьшение значения операнда на 1 до его  использования; постфиксная операция - уменьшение значения операнда на 1 после его использования;

sizeof  операция вычисления размера (в байтах) для объекта того типа, который имеет операнд  sizeof (тип).

Бинарные операции

Эти операции делятся на следующие группы:

  • аддитивные;

  • мультипликативные;

  • операции отношений;

  • логические;

  • присваивания;

Аддитивные операции сложение арифметических операндов и вычитание арифметических  операнде или указателей.        

Мультипликативные операции:

*      умножение операндов арифметического типа;

     деление операндов арифметического типа. Операция стандартна. При целочисленных операндах абсолютное значение результата округляется до целого. Например, 20/3 равно 6, -20/3 равняется -6;

%    получение остатка от деления целочисленных операндов (целение по модулю). При неотрицательных операндах остаток положительный 13%4 = 1, (-13) % 4 = -1,  13% (-4) = +1, а (-13)%(-4) =-1.

Операции отношения (сравнения):

<   меньше, чем;

>   больше, чем;

<=   меньше или равно;

>=   больше или равно;

==   равно;

!=    не равно;

Логические операции

&&   конъюнкция (И) арифметических операндов или отношений. Целочисленный результат 0(ложь) или 1(истина);

| |   дизъюнкция (ИЛИ) арифметических операндов или отношений. Целочисленный результат 0(ложь) или 1(истина);

!   логическое отрицание (НЕ) значения операнда; применяется к скалярным операндам; целочисленный результат 0 (если операнд ненулевой, т.е. истинный) или 1 (если операнд нулевой, т.е. ложный).

Операции присваивания

   присвоить значение выражения-операнда из правой части операнду левой части: Р = 10.3 – 2*х;

*=   присвоить операнду левой части произведение значений обоих операндов:  Р *= 2 эквивалентно Р = Р * 2;

/=   присвоить операнду левой части частное от деления значе­ния левого операнда на значение правого: Р /= 2.2 – d эквивалентно Р = Р /  (2.2 - d);

%=  присвоить операнду левой части остаток от деления цело­численного  значения левого операнда на целочисленное значение правого операнда: N % = 3 эквивалентно N = N % 3;

+=   присвоить операнду левой части сумму значений обоих опе­рандов: А += в эквивалентно А = А + В;

-=   присвоить операнду левой части разность значений левого и правого операндов: х -= 4.3 - z эквивалентно х = х -  (4.3 - z);

Разделители

Квадратные скобки ` [ ] ` ограничивают индексы одно- и многомерных массивов и индексированных элементов.

Круглые скобки ` ( ) `:

  • выделяют условные выражения (в операторе ²если²);

  • входят как обязательные элементы в определение, описание (в прототип) и вызов любой функции, где выделяют соответственно список формальных параметров и список фактических параметров (аргументов);

  • группируют выражения, изменяя естественную последовательность выполнения операций;

  • входят как обязательные элементы в операторы циклов;

  • необходимы при явном преобразовании типа.

Фигурные скобки ` { }` обозначают соответственно начало и конец составного оператора в условном операторе;  используются для выделения списка компонентов в определениях типов структур, объединений, классов;  используются при инициализации массивов и структур при их определении.

Запятая ` , ` разделяет элементы списков.

  • списки начальных значений, присваиваемых индексированным элементам массивов и компонентам структур при их инициализации.

  • списки формальных и фактических параметров и их спецификаций в функциях.

  • использование запятой как разделителя – в заголовке оператора цикла for.

  • запятая как разделитель используется также в описаниях и определениях объектов (переменных) одного типа.

Точка с запятой  ` ; ` завершает каждый оператор, каждое определе­ние (кроме определения функции) и каждое описание. Любое допустимое выражение, за которым следует ' ; ', воспринимается как оператор. Это справедливо и для пустого выражения, т.е. отдельный символ "точка с запятой" считается пустым оператором.

Двоеточие ` : ` служит для отделения (соединения) метки и помечаемого ею оператора:

Многоточие - это три точки '...' без пробелов между ними. Оно используется для обозначения переменного числа параметров у функ­ции при ее определении и описании (при задании ее прототипа).

Звездочка` * `, как уже упоминалось, используется в качестве знака операции умножения и знака операции разыменования (получения значения через указатель). В описаниях и определениях звездочка означает, что описывается указатель на значение использованного в объявлении типа.

Знак ` = `, как уже упоминалось, является обозначением операции присваивания. Кроме того, в определении он отделяет описание объекта от списка его инициализации:

Символ ` # ` (знак номера или диеза в музыке) используется для обозначения директив (команд) препроцессора. Если этот символ является первым отличным от пробела символом в строке программы, то строка воспринимается как директива препроцессора.

Символ ` & ` играет роль разделителя при определении   переменных типа ссылки.

Операции выбора компонентов структурированного объекта: (точка) прямой выбор (выделение) компонента структурированного объекта, например объединения. Формат применения опе­рации: имя структурируемого объекта . имя компонента  

->        косвенный выбор (выделение) компонента структурированного объекта, адресуемого указателем.   

Комментарии

В С++ в качестве ограничителей комментариев могут использоваться как пары символов /* и */, принятые в языке, так и символы //, используемые только в С++. Признаком конца такого комментария является невидимый символ перехода на новую строку. Примеры:

/* Это комментарий, допустимый в Си и С++ */

// Это строчный комментарий, используемый только в С++.

Среда, 08.05.2024, 08:02
Приветствую Вас Гость