Общие сведения о программах, лексемах и алфавите

   
Алфавит языка программирования С++ аналогичен алфавитам других языков
программирования
(Pascal, Basic и т.д.). Из символов алфавита формируются лексемы языка
(лексема – последовательность
символов, обрабатываемая компилятором):

  • идентификаторы;
  • ключевые (служебные, зарезервированные) слова;
  • константы;
  • знаки операций;
  • разделители (знаки пунктуации).

   
Идентификатор - последовательность из букв латинского
алфавита, десятичных
цифр и символов подчеркивания, начинающаяся не с цифры, например: RUN,
Run, summa_factorial.
Прописные и строчные буквы различаются. Таким
образом, в этом
примере два первых идентификатора различны. Длина различаемой части
идентификатора зависит
от реализации языка С++.

   
Ключевые (служебные) слова - это идентификаторы,
зарезервированные
в языке для специального использования. Не рекомендуется использовать
символ подчеркивания
в качестве начального символа при записи идентификаторов, так как такие
конструкции
активно применяются самим языком программирования.

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

  • целыми;
  • вещественными (с плавающей точкой);
  • перечислимыми;
  • символьными (литерными);
  • строковыми (строки или литерные строки).

   
Целые константы могут быть десятичными, восьмеричными и
шестнадцатиричными.
Десятичная целая константа определена как
последовательность десятичных цифр,
начинающаяся не с нуля, если это не число нуль, например: 16, 484216, 0, 4.
Диапазон допустимых целых положительных значений от 0 до 4 294 967 295.
Константы,
превышающие указанное максимальное значение, вызывают ошибку на этапе
компиляции.
Отрицательные константы - это константы без знака, к которым
применена
операция изменения знака. Их абсолютные значения не должны превышать
2147483648.

   
Восьмеричные целые константы начинаются всегда с нуля,
например 016 имеет
десятичное значение 14.

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

   

Таблица 1. Целые константы и
выбираемые для них типы

Диапазоны значений
констант Тип
данных

ДесятичныеВосьмеричныеШестнадцатеричные
от 0 до 32767от 00 до 077777от 0х0000 до 0х7FFFint
 от 0100000 до 0177777от 0х8000 до 0xFFFFunsigned int
от 32768 до 2147483647от 0200000 до 017777777777от 0x10000 до 0x7FFFFFFFlong
от 2147483648 до 4294967295от 020000000000 до
037777777777
от 0x80000000 до 0xFFFFFFFFunsigned long

   
В зависимости от значения целой константы компилятор по-разному
представляет её в
памяти ЭВМ. Соответствие между значениями целых констант и автоматически
выбираемыми
для них компилятором типами данных отображает таблица 1. Можно явно
указать тип,
используя суффиксы L, l (long) и U, u (unsigned). Например,
константа
64L будет иметь тип long, хотя значению 64 должен быть
приписан тип
int, как это видно из таблицы 1. Для одной константы можно
использовать два
суффикса в произвольном порядке. Например, константы 0x22ul, 0x33Lu
будут иметь
тип unsigned long.

   
Вещественные константы распознаются компилятором по внешним
признакам. Константа
с плавающей точкой может включать следующие семь частей:

  • целая часть (десятичная целая константа);
  • десятичная точка;
  • дробная часть (десятичная целая константа);
  • признак (символ) экспоненты е или Е;
  • показатель десятичной степени (десятичная целая константа, возможно со
    знаком);
  • суффикс F (или f) либо L (или l).

   
В записях вещественных констант могут опускаться: целая или дробная часть
(но не одновременно);
десятичная точка или признак экспоненты с показателем степени (но не
одновременно);
суффикс. Примеры: 66.; .0; .12; 3.14159F; 1.12e-2; 2E+6L; 2.71.

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

Таблица 2. Данные
вещественного типа

Тип данныхРазмер, битДиапазон значений
float32от 3.4Е-38до 3.4Е+38
double64от 1.7Е-308 до 1.7Е+308
long double80от 3.4Е-4932 до 1.1Е+4932

   
Перечислимые константы вводятся с помощью служебного слова enum.
Как правило, это
целочисленные константы типа int, которым приписаны уникальные и
удобные для
использования обозначения. В качестве обозначений выбираются произвольные
идентификаторы,
не совпадающие со служебными словами и именами других объектов
программы. Обозначения присваиваются
константам с помощью определения, например: enum { one = 1, two = 2, three
= 3 };.
После такого определения в программе вместо константы 2 (и наряду с ней)
можно использовать
ее обозначение two и т.д.

   
Если в определении перечислимых констант опускать знаки "=" и не указывать
числовых
значений, то они будут приписываться идентификаторам (именам) по умолчанию.
При этом
самый левый в фигурных скобках идентификатор получит значение 0, а каждый
последующий
увеличивается на 1.

   
Для перечислимых констант может быть введено имя типа, соответствующего
приведенному списку
констант. Имя типа - это произвольно выбираемый уникальный идентификатор,
помещаемый
между служебным словом enum и открывающейся фигурной скобкой.
Например, определение:
enum week { Sunday, Monday, Tuesday, Wednesday, Thursday, Ffriday, Saturday
};
не только определяет константы, но и вводит перечислимый тип с именем
week, который
может в дальнейшем использоваться в определениях и описаниях других
объектов.

   
Символьная (литерная) константа - это один символ,
заключенный в апострофы.
Для размещения их значений могут вводится переменные символьного типа, то
есть типа
char. Примеры констант: 'z', '*', '\0l2', '\0', '\n'. Последовательности литер,
начинающиеся со знака '\', называют
ESC-последовательностями. В таблице 3
приведены наиболее часто используемые последовательности.

   

Таблица 3. Часто используемые
ESC-последовательности

ИзображениеВнутренний кодРеакция или смысл
\a0х07Звуковой сигнал
\b0х08Возврат на шаг (забой)
\f0х0CНовая страница
\n0х0AНовая строка
\r0х0DВозврат каретки
\t0х09Табуляция горизонтальная
\v0х0BТабуляция вертикальная
\\0х5СОбратная косая черта (\)
\’0х27Одинарная кавычка (')
\"0х22Двойная кавычка (“)
\?0х3FВопросительный знак

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

     "Строка - это массив символов. " "Строка имеет тип char[]."

эквивалентна одной строке:

     "Строка - это массив символов. Строка имеет тип char[]."

   
Размещая строку в памяти, транслятор автоматически добавляет в ее конец
символ ‘\0’,
то есть нулевой байт. Таким образом, количество символов во внутреннем
представлении строки
на 1 больше числа символов в ее записи. Пустая строка хранится как один
символ "\0".
Кавычки не входят в строку, а служат ее ограничителями при записи в
программе. В строке
может быть один символ, например, "А" - строка из одного символа. Однако в
отличие от символьной
константы 'А' длина внутреннего представления строки "А" равна 2. Строка
может быть
пустой "", при этом ее длина равна 1. Однако символьная константа не может
быть пустой,
то есть запись ' ' в большинстве реализаций недопустима.

   
На следующем шаге будут перечислены операции, которые поддерживаются в
языке программирования C++.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий