Что означает идентификатор языка программирования
Идентификаторы и ключевые слова
Идентификатор (ID) – это имя программного объекта* (константы, переменной, метки, типа, функции и т.д.). В идентификаторе могут использоваться латинские буквы, цифры и знак подчеркивания; первый символ ID – не цифра; пробелы внутри ID не допускаются.
Длина идентификатора определяется выбранной версией среды программирования. Например, в среде Borland C++ 6.0 идентификаторы могут включать любое число символов, из которых воспринимаются и используются только первые 32 символа. Современная тенденция – снятие ограничений длины идентификатора.
При именовании объектов следует придерживаться общепринятых соглашений:
– ID переменных и функций обычно пишутся строчными (малыми) буквами – index, max();
– ID типов пишутся с большой буквы, например, Spis, Stack;
– ID констант (макросов) – большими буквами – INDEX, MAX_INT;
– идентификатор должен нести смысл, поясняющий назначение объекта в программе, например, birth_date – день рождения, sum – сумма;
– если ID состоит из нескольких слов, как, например, birth_date, то принято либо разделять слова символом подчеркивания, либо писать каждое следующее слово с большой буквы – birthDate.
В Си прописные и строчные буквы – различные символы. Идентификаторы Name, NAME, name – различные объекты.
Ключевые (зарезервированные) слова не могут быть использованы в качестве идентификаторов.
Список ключевых слов, определенных в стандарте ANSI Cи:
auto | do | goto | signed | unsigned |
break | double | if | sizeof | void |
case | else | int | static | volatile |
char | enum | long | struct | while |
const | extern | register | switch | |
continue | float | return | typedef | |
default | for | short | union |
Еще один базовый элемент языка программирования – комментарий – не является лексемой. Внутри комментария можно использовать любые допустимые на данном компьютере символы, поскольку компилятор их игнорирует.
В Си комментарии ограничиваются парами символов /* и */, а в С++ был введен вариант комментария, который начинается символами // и заканчивается символом перехода на новую строку.
Программа, написанная на языке Си, состоит из одной или нескольких функций, одна из которых имеет идентификатор main* – главная (основная). Она является первой выполняемой функцией (с нее начинается выполнение программы) и ее назначение – управлять работой всей программы (проекта).
Общая структура программы на языке Си имеет вид:
В свою очередь, каждая функция имеет следующую структуру:
Код функции является блоком и поэтому заключается в фигурные скобки.
Функции не могут быть вложенными друг в друга.
Рассмотрим кратко основные части общей структуры программ.
Перед компиляцией программа обрабатывается препроцессором (прил. 3), который работает под управлением директив.
Препроцессорные директивы начинаются символом #, за которым следует наименование директивы, указывающее ее действие.
Препроцессор решает ряд задач по предварительной обработке программы, основной из которых является подключение (include) к программе так называемых заголовочных файлов (обычных текстов) с декларацией стандартных библиотечных функций, использующихся в программе. Общий формат ее использования
где h – расширение заголовочных файлов.
Если идентификатор файла заключен в угловые скобки (), то поиск данного файла производится в стандартном каталоге, если – в двойные кавычки (” ”), то поиск файла производится в текущем каталоге.
К наиболее часто используемым библиотекам относятся:
stdio.h – содержит стандартные функции файлового ввода-вывода;
math.h – математические функции;
conio.h – функции для работы с консолью (клавиатура, дисплей).
Второе основное назначение препроцессора – обработка макроопределений. Макроподстановка определить (define) имеет общий вид
Например: #define PI 3.1415927
– в ходе препроцессорной обработки программы идентификатор PI везде будет заменяться значением 3.1415927.
Рассмотрим пример, позволяющий понять простейшие приемы программирования на языке Си:
> // Окончание функции main
Отличительным признаком функции служат скобки ( ) после ее идентификатора, в которые заключается список параметров. Перед ID функции указывается тип возвращаемого ею результата. Если функция не возвращает результата и не имеет параметров, указывают атрибуты void – отсутствие значений.
Для начала будем использовать функцию main без параметров и не возвращающую значения.
Код функции представляет собой набор инструкций, каждая из которых оканчивается символом «;». В нашем примере одна инструкция – функция printf, выполняющая вывод данных на экран, в данном случае – указанную фразу.
Приемы отладки в среде программирования Visual C++ 6.0 рассматриваются в прил. 5.
Основные типы данных
Данные в языке Си разделяются на две категории: простые (скалярные), будем их называть базовыми, и сложные (составные) типы данных.
Тип данных определяет:
– внутреннее представление данных в оперативной памяти;
– совокупность значений (диапазон), которые могут принимать данные этого типа;
– набор операций, которые допустимы над такими данными.
Основные типы базовых данных: целый – int (integer), вещественный с одинарной точностью – floatи символьный – char (character).
В свою очередь, данные целого типа могут быть короткими – short, длинными – long и беззнаковыми – unsigned, а вещественные – с удвоенной точностью – double.
Сложные типы данных – массивы, структуры – struct, объединения – union, перечисления – enum.
Данные целого и вещественного типов находятся в определенных диапазонах, т.к. занимают разный объем оперативной памяти (табл. 2.1).
Тип данных | Объем памяти (байт) | Диапазон значений |
сhar | –128 … 127 | |
int | 2 (4)* | –32768 … 32767 |
short | 1 (2)* | –32768 … 32767(–128 … 127) |
long | –2147483648 … 2147483647 | |
unsigned int | 0 … 65535 | |
unsigned long | 0 … 4294967295 | |
float | 3,14?10–38 … 3,14?1038 | |
double | 1,7?10–308 … 1,7?10308 | |
long double | 3,4?10–4932 … 3,4?104932 |
* Размер памяти зависит от разрядности процессора, для 16-разрядных объем памяти определяется первой цифрой, для 32-разрядных – второй.
Все объекты, с которыми работает программа, необходимо декларировать, т.е. объявлять компилятору об их присутствии. При этом возможны две формы декларации:
– описание, не приводящее к выделению памяти;
– определение, при котором под объект выделяется объем памяти в соответствии с его типом; в этом случае объект можно инициализировать, т.е. задать его начальное значение.
Кроме констант, заданных в исходном тексте, все объекты программы должны быть явно декларированы по следующему формату:
элементы списка ID объектов разделяются запятыми, а атрибуты – разделителями, например: int i, j, k; float a, b;
Объекты программы могут иметь следующие атрибуты:
класс памяти – характеристика способа размещения объектов в памяти (статическая, динамическая); определяет область видимости и время жизни переменной (по умолчанию – auto), данные атрибуты будут рассмотрены в гл. 12;
тип – тип будущих значений декларируемых объектов (по умолчанию устанавливается тип int).
Класс памяти и тип – атрибуты необязательные и при отсутствии одного из них (но не обоих одновременно) устанавливаются атрибуты по умолчанию.
Примеры декларации простых объектов:
int i, j, k; char r; double gfd;
Рассмотрим основные базовые типы данных более подробно.
Статьи к прочтению:
3.Идентификаторы и ключевые слова
Похожие статьи:
Таблица 2.2 Управляющие последовательности Управляющая последовательность Наименование \b Возвращение на шаг \n Переход на новый ряд \r Возвращение…
Идентификаторы — это имена переменных, подпрограмм-функций и других элементов языка программирования. В идентификаторах можно применять только буквы и…
Что означает идентификатор языка программирования
Книга содержит полное описание наиболее распространенных реализаций языка программирования Си на 16-разрядных микроЭВМ, совместимых с IBM PC. Приведено описание стандартных библиотек языка.
Для слушателей учебных курсов в области программирования, разработчиков программного обеспечения, а также студентов соответствующих специальностей вузов. Может быть использовано как техническая документация и справочное пособие для широкого круга программистов, как профессионалов, имеющих большой опыт работы на языке Си, так и начинающих программировать на Си.
Книга: Язык программирования Си для персонального компьютера
Идентификаторы
Идентификаторы
Идентификаторы — это имена переменных, функций и меток, используемых в программе. Идентификатор вводится в объявлении переменной или функции, либо в качестве метки оператора. После этого его можно использовать в последующих операторах программы. Идентификатор — это последовательность из одной или более латинских букв, цифр и символов подчеркивания, которая начинается с буквы или символа подчеркивания. Допускается любое число символов в идентификаторе, однако только первые 32 символа рассматриваются компилятором языка Си как значащие. Если первые 32 символа у двух идентификаторов совпадают, компилятор языка Си рассматривает их как один и тот же идентификатор. Компоновщик также распознает 32 символа в именах глобальных переменных.
В идентификаторах версии 1.5 СП ТС допускается знак $, однако, идентификатор не может с него начинаться.
Компиляторы языка Си в СП MSC и СП ТС имеют опцию, позволяющую изменять число значащих символов в идентификаторах.
При использовании символов подчеркивания в качестве первых символов идентификаторов необходимо соблюдать осторожность, поскольку такие идентификаторы могут совпасть (войти в конфликт) с именами «скрытых» библиотечных функций.
Компилятор языка Си рассматривает буквы верхнего и нижнего регистров как различные символы. Поэтому можно создавать идентификаторы, которые совпадают орфографически, но различаются регистром букв. Например, каждый из следующих идентификаторов является уникальным:
Идентификаторы (C++) Identifiers (C++)
Идентификатор — это последовательность символов, используемая для обозначения одного из следующих элементов: An identifier is a sequence of characters used to denote one of the following:
Имени объекта или переменной Object or variable name
Имени класса, структуры или объединения Class, structure, or union name
Имени перечисленного типа Enumerated type name
Члена класса, структуры, объединения или перечисления Member of a class, structure, union, or enumeration
Функции или функции члена класса Function or class-member function
Имени определения типа (typedef) typedef name
Имени метки Label name
Имени макроса Macro name
Параметра макроса Macro parameter
Следующие символы можно использовать в качестве любого символа идентификатора: The following characters are allowed as any character of an identifier:
В идентификаторе также можно использовать определенные диапазоны универсальных имен символов. Certain ranges of universal character names are also allowed in an identifier. Универсальное имя в идентификаторе не может обозначать управляющий символ или символ в основной кодировке исходного кода. A universal character name in an identifier cannot designate a control character or a character in the basic source character set. Дополнительные сведения см. в разделе Character Sets. For more information, see Character Sets. Следующие диапазоны номеров кодовых точек Юникода можно использовать как универсальные имена символов для любого символа в идентификаторе. These Unicode code point number ranges are allowed as universal character names for any character in an identifier:
Следующие символы могут быть любым символом в идентификаторе, кроме первого: The following characters are allowed as any character in an identifier except the first:
Следующие диапазоны номеров кодовых точек Юникода также можно использовать как универсальные имена символов для любого символа в идентификаторе, кроме первого: These Unicode code point number ranges are also allowed as universal character names for any character in an identifier except the first:
Блок, относящийся только к системам Microsoft Microsoft Specific
Обозначает ли идентификатор объект пользовательского типа или типа, производного от пользовательского типа. Whether the identifier denotes an object of user-defined type or a type derived from a user-defined type.
Обозначает ли идентификатор функцию типа, производного от функции. Whether the identifier denotes a function or a type derived from a function.
Количество аргументов функции. The number of arguments to a function.
Диапазон разрешенных символов в идентификаторе шире, чем при компиляции кода C++/CLI. The range of characters allowed in an identifier is less restrictive when compiling C++/CLI code. Идентификаторы в коде, скомпилированном с помощью /clr, должны соответствовать стандарту ECMA-335: Common Language Infrastructure (CLI). Identifiers in code compiled by using /clr should follow Standard ECMA-335: Common Language Infrastructure (CLI).
Завершение блока, относящегося только к системам Майкрософт END Microsoft Specific
Использование двух последовательных символов подчеркивания ( __ ) в идентификаторе или одиночный символ подчеркивания, за которым следует заглавная буква, зарезервировано для реализаций C++ во всех областях. Use of two sequential underscore characters ( __ ) in an identifier, or a single leading underscore followed by a capital letter, is reserved for C++ implementations in all scopes. В области видимости файла не следует использовать идентификаторы, начинающиеся с одного символа подчеркивания, за которым следует строчная буква. Это связано с возможными конфликтами с уже существующими или будущими зарезервированными идентификаторами. You should avoid using one leading underscore followed by a lowercase letter for names with file scope because of possible conflicts with current or future reserved identifiers.
Урок №16. Ключевые слова и идентификаторы
Язык C++ имеет зарезервированный набор из 84 слов (включая версию С++17) для собственного использования. Эти слова называются ключевыми словами, каждое из которых имеет свое особое значение.
Вот список всех ключевых слов в языке C++ (включая C++17):
alignas (C++11) alignof (C++11) and and_eq asm auto bitand bitor bool break case catch char char16_t (C++11) char32_t (C++11) class compl const constexpr (C++11) const_cast continue | decltype (C++11) default delete do double dynamic_cast else enum explicit export extern false float for friend goto if inline int long mutable | namespace new noexcept (C++11) not not_eq nullptr (C++11) operator or or_eq private protected public register reinterpret_cast return short signed sizeof static static_assert (C++11) static_cast | struct switch template this thread_local (C++11) throw true try typedef typeid typename union unsigned using virtual void volatile wchar_t while xor xor_eq |
C++11 также добавил два специальных идентификатора: override и final. Они имеют особое значение при использовании в определенных контекстах, но не являются зарезервированными ключевыми словами.
Мы уже сталкивались с некоторыми ключевыми словами, такими как int, void и return. Вместе с набором операторов, ключевые слова определяют весь язык C++ (не включая команд препроцессора). Поскольку они имеют особые значения, то IDE всегда выделяют/подсвечивают их другим цветом.
После изучения материалов всех уроков по С++ на Ravesli, вы узнаете суть большинства ключевых слов языка С++, приведенных выше.
Идентификаторы
Идентификатор — это имя переменной, функции, класса или другого объекта в языке C++. Мы можем определять идентификаторы любыми словами/именами. Тем не менее, есть несколько общих правил, которые необходимо соблюдать:
Идентификатор не может быть ключевым словом. Ключевые слова зарезервированы.
Идентификатор может состоять только из букв (нижнего и верхнего регистра) латинского алфавита, цифр и символов подчёркивания. Это означает, что все другие символы и пробелы — запрещены.
Идентификатор должен начинаться с буквы (нижнего или верхнего регистра). Он не может начинаться с цифры.
Теперь, когда вы знаете, как можно называть объекты, давайте поговорим о том, как их нужно называть.
Во-первых, в языке C++ имена переменных начинаются с буквы в нижнем регистре. Если имя переменной состоит из одного слова, то это слово должно быть записано в нижнем регистре:
Как правило, имена функций также начинаются с буквы в нижнем регистре (хотя есть некоторые разногласия по этому вопросу). Мы будем придерживаться этого стиля, поскольку даже функция main() (главная функция всех программ) начинается с буквы в нижнем регистре, как и все функции из Стандартной библиотеки C++.
Имена идентификаторов, которые начинаются с заглавной буквы, используются для структур, классов или перечислений (об этом позже).
Если имя переменной или функции состоит из нескольких слов, то здесь есть два варианта: разделить подчёркиванием или использовать CamelCase — принцип, когда несколько слов пишутся слитно, без пробелов, и каждое новое слово пишется с заглавной буквы. CamelCase (в переводе как «ВерблюжийСтиль») получил свое название из-за заглавных букв, которые напоминают верблюжьи горбы.
Хотя даже Стандартная библиотека C++ использует символ подчёркивания для переменных и функций, мы же будем использовать CamelCase — для лучшей читабельности кода. Иногда вы будете видеть сочетание двух способов: подчёркивание для переменных и CamelCase для функций.
Стоит отметить, что, если вы работаете с чужим кодом, хорошей практикой будет придерживаться стиля, в котором написан этот код, даже если он не соответствует рекомендациям, приведенным выше.
Во-вторых, не начинайте ваши имена с символа подчёркивания, так как такие имена уже зарезервированы для ОС, библиотеки и/или используются компилятором.
В-третьих, (это, пожалуй, самое важное правило из всех) используйте в качестве идентификаторов только те имена, которые реально описывают то, чем является объект. Очень характерно для неопытных программистов сокращать имена переменных, чтобы сэкономить время при наборе кода или потому, что они думают, что всё и так понятно. В большинстве случаев не всё всегда является понятным и очевидным. В идеале переменные нужно называть так, чтобы человек, который первый раз увидел ваш код, понял как можно скорее, что этот код делает. Через 3 месяца, когда вы будете пересматривать свои программы, вы забудете, как они работают, и будете благодарны самому себе за то, что называли переменные по сути, а не как попало. Чем сложнее код, тем проще и понятнее должны быть идентификаторы.
int ccount | Плохо | Никто не знает, что такое ccount |
int customerCount | Хорошо | Теперь понятно, что мы считаем |
int i | Плохо* | В большинстве нетривиальных случаев — плохо, в простых примерах — может быть (например, в циклах) |
int index | 50/50 | Хорошо, если очевидно, индексом чего является переменная |
int totalScore | Хорошо | Всё понятно |
int _count | Плохо | Не начинайте имена переменных с символов подчёркивания |
int count | 50/50 | Хорошо, если очевидно, что мы считаем |
int data | Плохо | Какой тип данных? |
int value1, value2 | 50/50 | Может быть трудно понять разницу между переменными |
int numberOfApples | Хорошо | Всё понятно |
int monstersKilled | Хорошо | Всё понятно |
int x, y | Плохо* | В большинстве нетривиальных случаев — плохо, в простых примерах — может быть (например, в математических функциях) |
*Примечание: Можно использовать тривиальные имена для переменных, которые имеют тривиальное использование (например, для переменных в цикле, в простых математических функциях и т.д.).
Идентификаторы C C Identifiers
«Идентификаторы» или «символы» — это имена, задаваемые в программе для переменных, типов, функций и меток. «Identifiers» or «symbols» are the names you supply for variables, types, functions, and labels in your program. Написание и регистр символов в именах идентификаторов должны отличаться от всех ключевых слов. Identifier names must differ in spelling and case from any keywords. Не допускается использовать ключевые слова (C или Microsoft) в качестве идентификаторов; они зарезервированы для специального применения. You cannot use keywords (either C or Microsoft) as identifiers; they are reserved for special use. Идентификатор создается путем его указания в объявлении переменной, типа или функции. You create an identifier by specifying it in the declaration of a variable, type, or function. В этом примере result представляет собой идентификатор целой переменной, а main и printf — это имена идентификаторов для функций. In this example, result is an identifier for an integer variable, and main and printf are identifier names for functions.
Объявленный идентификатор можно использовать в последующих операторах программы для ссылки на соответствующее значение. Once declared, you can use the identifier in later program statements to refer to the associated value.
Синтаксис Syntax
nondigit: один из следующих символов: nondigit: one of
_ a b c d e f g h i j k l mn o p q r s t u v w x y z _ a b c d e f g h i j k l mn o p q r s t u v w x y z
A B C D E F G H I J K L MN O P Q R S T U V W X Y Z A B C D E F G H I J K L MN O P Q R S T U V W X Y Z
digit: один из следующих символов: digit: one of
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9
Первый символ имени идентификатора должен принадлежать к группе nondigit (т. е., первым символом должен быть знак подчеркивания или прописная либо строчная буква). The first character of an identifier name must be a nondigit (that is, the first character must be an underscore or an uppercase or lowercase letter). Стандарт ANSI допускает 6 значащих символов в имени внешнего идентификатора и 31 символ для имен внутренних (внутри функции) идентификаторов. ANSI allows six significant characters in an external identifier’s name and 31 for names of internal (within a function) identifiers. На имена внешних идентификаторов (идентификаторов, объявленных в глобальной области или с классом хранения extern ) могут накладываться дополнительные ограничения, поскольку эти идентификаторы должны обрабатываться другим программным обеспечением, таким как компоновщики. External identifiers (ones declared at global scope or declared with storage class extern ) may be subject to additional naming restrictions because these identifiers have to be processed by other software such as linkers.
Блок, относящийся только к системам Microsoft Microsoft Specific
Хотя стандарт ANSI допускает 6 значащих символов в именах внешних идентификаторов и 31 символ в именах внутренних (внутри функции) идентификаторов, компилятор Microsoft C допускает 247 символов в именах внутренних и внешних идентификаторов. Although ANSI allows 6 significant characters in external identifier names and 31 for names of internal (within a function) identifiers, the Microsoft C compiler allows 247 characters in an internal or external identifier name. Если совместимость со стандартом ANSI не требуется, можно увеличить или уменьшить это значение по умолчанию с помощью параметра /H (ограничение длины внешних имен). If you aren’t concerned with ANSI compatibility, you can modify this default to a smaller or larger number using the /H (restrict length of external names) option.
Завершение блока, относящегося только к системам Майкрософт END Microsoft Specific
В компиляторе языка C прописные и строчные буквы считаются разными символами. The C compiler considers uppercase and lowercase letters to be distinct characters. Эта особенность, называемая «учетом регистра», позволяет создавать различные идентификаторы, состоящие из одинаковых букв в различных регистрах. This feature, called «case sensitivity,» enables you to create distinct identifiers that have the same spelling but different cases for one or more of the letters. Например, каждый из следующих идентификаторов является уникальным: For example, each of the following identifiers is unique:
Блок, относящийся только к системам Microsoft Microsoft Specific
Не выбирайте для идентификаторов имена, которые начинаются с двух символов подчеркивания или с одного символа подчеркивания и последующей прописной буквы. Do not select names for identifiers that begin with two underscores or with an underscore followed by an uppercase letter. Стандарт ANSI языка C разрешает резервировать имена идентификаторов, начинающиеся с таких сочетаний символов, для использования компилятором. The ANSI C standard allows identifier names that begin with these character combinations to be reserved for compiler use. Идентификаторы с областью действия на уровне файлов также не должны начинаться со знака подчеркивания и последующей строчной буквы. Identifiers with file-level scope should also not be named with an underscore and a lowercase letter as the first two letters. Имена идентификаторов, начинающиеся с таких символов, также зарезервированы. Identifier names that begin with these characters are also reserved. По принятому соглашению в системах Microsoft символ подчеркивания и прописная букву используются в начале имен макросов, а два символа подчеркивания используются для специальных ключевых слова систем Microsoft. By convention, Microsoft uses an underscore and an uppercase letter to begin macro names and double underscores for Microsoft-specific keyword names. Во избежание каких-либо конфликтов имен никогда не выбирайте имена идентификаторов, которые начинаются с одного или двух символов подчеркивания или с символа подчеркивания и последующей прописной буквы. To avoid any naming conflicts, always select identifier names that do not begin with one or two underscores, or names that begin with an underscore followed by an uppercase letter.
Завершение блока, относящегося только к системам Майкрософт END Microsoft Specific
Ниже приведены примеры допустимых идентификаторов, которые соответствуют ограничениям на имена, накладываемым стандартом ANSI или системами Microsoft: The following are examples of valid identifiers that conform to either ANSI or Microsoft naming restrictions:
Блок, относящийся только к системам Microsoft Microsoft Specific
Хотя по умолчанию в файлах исходного кода учитывается регистр символов в идентификаторах, в символах объектных файлов регистр не учитывается. Although identifiers in source files are case sensitive by default, symbols in object files are not. Microsoft C обрабатывает идентификаторы в единице компиляции с учетом регистра. Microsoft C treats identifiers within a compilation unit as case sensitive.
Компоновщик Microsoft учитывает регистр. The Microsoft linker is case sensitive. Необходимо указывать все идентификаторы единообразно с учетом регистра. You must specify all identifiers consistently according to case.
«Исходная кодировка» — это набор допустимых символов, которые могут использоваться в файлах исходного кода. The «source character set» is the set of legal characters that can appear in source files. Для Microsoft C исходной кодировкой является стандартный набор символов ASCII. For Microsoft C, the source set is the standard ASCII character set. Исходная кодировка и кодировка выполнения содержат символы ASCII, используемые в виде escape-последовательностей. The source character set and execution character set include the ASCII characters used as escape sequences. Сведения о кодировке выполнения см. в статье Константы символов в C. See Character Constants for information about the execution character set.
Завершение блока, относящегося только к системам Майкрософт END Microsoft Specific
У идентификатора имеется «область», т. е. область программы, в которой он определен, и «компоновка», которая определяет, ссылается ли то же самое имя из другой области на этот же идентификатор. An identifier has «scope,» which is the region of the program in which it is known, and «linkage,» which determines whether the same name in another scope refers to the same identifier. Эти вопросы рассматриваются в разделе Время существования, область, видимость и компоновка. These topics are explained in Lifetime, Scope, Visibility, and Linkage.