|
Основные элементы языка программирования Си алфавит, идентификаторы, ключевые слова, константы
Основные элементы языка программирования Си++: алфавит, идентификаторы, ключевые слова, константы.
Алфавит языка Си (Си++)
– прописные и строчные буквы английского алфавита (в современных средствах разработки буквы, являющиеся буквами в кодировке Unicode);
– арабские цифры 0, 1,…, 9;
– специальные символы:
• пробельные символы: пробел, табуляция, перевод строки, новая строка, возврат каретки, новая страница, вертикальная табуляция;
• разделители: , . ; : ? ‘ ! “ / | \ _ ( ) { } [ ] > < # % & ^ - = + *.
Символы алфавита находятся в первой половине кодовой таблицы (первые 128 символов) кодировки ASCII. Современные средства разработки поддерживают кодировку Unicode (существуют различные модификации этой кодировки).
Из символов алфавита строятся лексемы.
Лексема – единица текста программы, имеющая для компилятора самостоятельный смысл.
Идентификаторы (имена)
Идентификатор (имя) – это лексема, представляющая собой последовательность букв английского алфавита, десятичных цифр, символа подчеркивания, начинающаяся не с цифры (в некоторых компиляторах разрешается внутри идентификатора использовать $).
Примеры идентификаторов: x, X, abc124, A_c3, x4er, x_, __d.
Неверные идентификаторы: 1c, 4sd.
Следует отметить, что большие и малые буквы в идентификаторах отличаются, т.е. x и X разные идентификаторы.
В современных средствах можно использовать буквы кодировки Unicode.
Ключевые слова
Ключевые слова – это идентификаторы, зарезервированные для специального использования.
Названия стандартных типов, управляющих конструкций, и т.п.
int double char float long …. if else for while do …. struct
Программист не может их использовать в качестве имен своих объектов.
Константы (литералы)
Константа – лексема, представляющая собой изображение фиксированного числового, строкового или символьного значения.
Типы констант:
целые:
два типа:
тип int (по умолчанию), в Win32 (Win64) (раньше было 2 байта)– 4 байта, примеры: 1245, 6, 175, 5, 1425; тип long – 4 байта, если диапазон выходит за тип int, или явно указывается тип с помощью суффикса l (L), примеры: 12l, 14567L, 125234;
три формы представления:
в десятичной СС – 1234, 378l, 346; в шестнадцатеричной СС – 0x10, 0x10acd, 0XFFFF; в восьмеричной СС – 010, 070, 01237;
константы могут быть представлены типами unsigned int и unsigned long, для явного указания можно использовать суффикс u (U);
вещественные:
три типа:
тип double (по умолчанию) – 8 байт, примеры: 12.5, .123, 0.5, 1. ; тип float – 4 байта, используется суффикс f (F), примеры: 10.5f, 0.123F ; тип long double – 10 байт (в Visual C++ 8 байт), используется суффикс l (L), примеры: 10.5l, 0.9L;
две формы представления:
– форма с точкой, примеры: 10.125, 1. , .125 , 0.125 ;
форма со знаком экспоненты: 1e -5 , 12.23E4F ;
символьные:
односимвольные (занимают памяти 1 байт): это буква, цифра, знак пунктуации или специальный символ, заключенный в апострофы.
‘a’, ‘d’, ‘1’, ‘.’, ‘ ‘, представлены в памяти типом char;
многосимвольные (до 4-х символов): ‘asdf’, ‘GR’, представлены в памяти типом int (первый символ – младший байт).
Последовательность литер, начинающихся с ‘\’ называется эскейп-последовательностью.
‘\\’, ‘\’’, ‘\”’, ‘\n’ – перевод строки (новая строка) (код 10), ‘\r’ – возврат каретки (код 13), ‘\a’ – звуковой сигнал (7), ‘\b’ – возврат на шаг (забой) (8),
Допустимо использовать коды символов от 0 до 255, заданные в восьмеричной или шестнадцатеричной СС. ‘\127’, ‘\10’, ‘\xff’, ‘\xf’. строковые константы – последовательность символов, заключенных в кавычки (не в апострофы), внутри строковых констант допускается использовать эскейп-последовательности.
Пример:
“начало строки\nтекст с новой строки”
константы типа перечислений
enum<имя_типа>{
<имя1>[=<инициализатор1>],
<имя2>[=<инициализатор2>]
……………….
<имяN>[=<инициализаторN>]};
<имя1>,<имя2>,…,<имяN>-выступают далее в качестве констант, по умолчанию первая константа инициализируется 0, каждая последующая на 1 больше.
Константы: целые, вещественные, символьные, строковые, перечислимые.
Целые константы в языке Си могут быть представлены в одной из следующих систем счисления:
Целые константы могут быть десятичными, восьмеричными и шестнадцатеричными.
Вещественные константы
Константа с плавающей точкой (вещественная константа) всегда представляется числом с плавающей точкой двойной точности, т. е. как имеющая тип double, и состоит из следующих частей:
целой части — последовательности цифр; точки — разделителя целой и дробной части; дробной части — последовательности цифр; символа экспоненты е или E; экспоненты в виде целой константы (может быть со знаком).
Любая часть (но не обе сразу) из нижеследующих пар может быть опущена:
целая или дробная часть; точка или символ е (Е) и экспонента в виде целой константы.
Символьные константы
Символьная константа — это один символ, например: ‘z’. В качестве символьных констант также могут использоваться управляющие коды, не имеющие графического представления. При этом код управляющего символа начинается с символа ‘\’ (обратный слеш).
Строковые константы
Строковая константа — это последовательность символов, заключенная в кавычки, например:
«Это строковая константа»
Кавычки не входят в строку, а лишь ограничивают её. Технически строковая константа представляет собой массив символов, и по этому признаку может быть отнесена к разряду сложных объектов языка Си.
В конце каждой строковой константы компилятор помещает ‘\0’ (нуль-символ), чтобы программе было возможно определить конец строки. Такое представление означает, что размер строковой константы не ограничен каким-либо пределом, но для определения длины строковой константы её нужно полностью просмотреть.
Поскольку строковая константа состоит из символов, то она имеет тип char. Количество ячеек памяти, необходимое для хранения строковой константы на 1 больше количества символов в ней (1 байт используется для хранения нуль-символа).
Символьная константа ‘x’ и строка из одного символа «x» — не одно и то же. Символьная константа — это символ, используемый для числового представления буквы x, а строковая константа «x» содержит символ ‘x’ и нуль-символ ‘\0’ и занимает в памяти 2 байта. Если в программе строковые константы записаны одна за другой через разделители, то при выполнении программы они будут размещаться в последовательных ячейках памяти.
Перечислимые константы
Перечислимые константы вводятся с помощью служебного слова enum. Как правило, это целочисленные константы типа int, которым приписаны уникальные и удобные для использования обозначения. В качестве обозначений выбираются произвольные идентификаторы, не совпадающие со служебными словами и именами других объектов программы. Обозначения присваиваются константам с помощью определения, например: enum {one = 1, two = 2, three = 3};. После такого определения в программе вместо константы 2 (и наряду с ней) можно использовать ее обозначение two и т.д.
Если в определении перечислимых констант опускать знаки "=" и не указывать числовых значений, то они будут приписываться идентификаторам (именам) по умолчанию. При этом самый левый в фигурных скобках идентификатор получит значение 0, а каждый последующий увеличивается на 1.
Для перечислимых констант может быть введено имя типа, соответствующего приведенному списку констант. Имя типа - это произвольно выбираемый уникальный идентификатор, помещаемый между служебным словом enum и открывающейся фигурной скобкой. Например, определение: enum week {Sunday, Monday, Tuesday, Wednesday, Thursday, Ffriday, Saturday}; не только определяет константы, но и вводит перечислимый тип с именем week, который может в дальнейшем использоваться в определениях и описаниях других объектов.
Операции: унарные, бинарные, условная операция, приоритеты операций и порядок выполнения в выражении.
Над объектами в языке Си могут выполняться различные операции:
операции присваивания; операции отношения; арифметические; логические; сдвиговые операции.
Результатом выполнения операции является число.
Операции могут быть бинарными или унарными. Бинарные операции выполняются над двумя объектами, унарные — над одним.
Операция присваивания
Операция присваивания обозначается символом = и выполняется в 2 этапа:
вычисляется выражение в правой части; результат присваивается операнду, стоящему в левой части:
объект = выражение;
Операции отношения
Основные операции отношения:
== эквивалентно — проверка на равенство; != не равно — проверка на неравенство; < меньше; > больше; <=меньше или равно; >= больше или равно.
Операции отношения используются при организации условий и ветвлений. Результатом этих операций является 1 бит, значение которого равно 1, если результат выполнения операции — истина, и равно 0, если результат выполнения операции — ложь.
Арифметические операции
Основные бинарные операции, расположенные в порядке уменьшения приоритета:
* — умножение; / — деление; + — сложение; — — вычитание; % — остаток от целочисленного деления.
Основные унарные операции:
++ — инкрементирование (увеличение на 1); –– — декрементирование (уменьшение на 1); — — изменение знака.
Результат вычисления выражения, содержащего операции инкрементирования или декрементирования, зависит от того, где расположен знак операции (до объекта или после него). Если операция расположена до объекта, то сначала происходит изменение значения переменной на 1, а потом это значение используется для выполнения следующих операций. Если операция ++ или — расположена после переменной, то сначала выполняется операция, а потом значение переменной изменяется на 1.
Логические операции
Логические операции делятся на две группы: Условные логические операции чаще всего используются в операциях проверки условия if и могут выполняться над любыми объектами. Результат условной логической операции:
1 если выражение истинно; 0 если выражение ложно.
Вообще, все значения, отличные от нуля, интерпретируются условными логическими операциями как истинные.
Основные условные логические операции:
&& — И (бинарная) — требуется одновременное выполнение всех операций отношения; || — ИЛИ (бинарная) — требуется выполнение хотя бы одной операции отношения; ! — НЕ (унарная) — требуется невыполнение операции отношения.
Побитовые логические операции оперируют с битами, каждый из которых может принимать только два значения: 0 или 1.
Основные побитовые логические операции в языке Си:
& конъюнкция (логическое И) — бинарная операция, результат которой равен 1 только когда оба операнда единичны (в общем случае — когда все операнды единичны); | дизъюнкция (логическое ИЛИ) — бинарная операция, результат которой равен 1 когда хотя бы один из операндов равен 1;
инверсия (логическое НЕ) — унарная операция, результат которой равен 0 если операнд единичный, и равен 1, если операнд нулевой; ^ исключающее ИЛИ — бинарная операция, результат которой равен 1, если только один из двух операндов равен 1 (в общем случае если во входном наборе операндов нечетное число единиц). Бинарные побитовые логические операции могут быть объединены с операцией присваивания:
объект &= выражение; // объект = объект & выражение
объект |= выражение; // объект = объект | выражение
объект ^= выражение; // объект = объект ^ выражение
Сдвиговые операции
Операции арифметического сдвига применяются в целочисленной арифметике и обозначаются как:
>> — сдвиг вправо; << — сдвиг влево.
Общий синтаксис осуществления операции сдвига: объект = выражение сдвиг Количество Разрядов;
Арифметический сдвиг целого числа вправо >> на 1 разряд соответствует делению числа на 2.
Арифметический сдвиг целого числа влево << на 1 разряд соответствует умножению числа на 2.
|
|
|