- •Лексические элементы языка
- •Соглашение об именах
- •Понятие типа данных
- •Определение переменных
- •Правило видимости (scope rules)
- •Классификация типов данных
- •Характеристики базовых типов данных
- •Константные величины
- •Числовые константы
- •Правила определения компилятором констант таковы:
- •Перечислимые константы
- •Символьные (литерные) константы
- •Строковые константы
- •Именованные (символические) константы
- •Преобразования типов Неявные преобразования.
- •Явные преобразования.
- •Примеры явного приведения типов:
- •Пример неявного преобразования типов
- •Процедура подготовки исполняемой программы
- •Пользовательских символических констант
- •Обращение к функциям
http://ips.ifmo.ru/courses/cpp/topic6/l2/index.html
Лекция 2. Основные понятия ЯП С++
Автор языка - Бьярн Страуструп (Б.С.).
До 1983 года язык был известен лишь автору и его группе поддержки. Практическое использование языка началось летом 1983 г. Тогда же появилось и название - С++; его придумал Рик Масситти ( ++ - операция приращения ).
Большинство новейших компиляиоров С++ соответсвуют стандариу International Standart for Information Systems – Programming Languaage C++ (ISO/IEC JTC1/SC22/WG21), опубликованному в начале 1998 г.
Всякий алгоритмический язык содержит три составные части:
-
алфавит (конечное множество различимых между собою символов, используемых в данном языке)
-
синтаксис (совокупность правил, определяющих допустимые (правильные) конструкции данного
языка)
-
семантика (совокупность правил, определяющих смысловое содержание отдельных конструкций. Семантика обеспечивает однозначность толкования всех понятий языка)
Язык программирования С/С++, так же как и любой естественный язык, имеет свои:
алфавит -- |
символы, которые можно использовать в программах; |
лексику -- |
ключевые слова, идентификаторы, операторы; |
пунктуацию -- |
знаки ; , . : и скобки ( ) { } |
синтаксис -- |
выражения, конструкции; |
семантику -- |
значение элементов языка для программиста и для компьютера. |
Лексические элементы языка
Алфавит – это символы, используемые в языке С++ при написании программ.
Каждый файл – это текст. Для записи программ используются знаки в кодировке ASCII.
Русские буквы можно использовать в комментариях и литералах.
Алфавит С++ включает:
-
Прописные и строчные буквы: a...z и A...Z, а в строковых и символьных константах а...я и А...Я
-
Цифры: 0...9
-
Специальные символы для различных целей ('[]{},.()-+/\%;:`?< >=_!&#~^*)
Программа на языке С++ состоит из элементов, называемых лексемами (token). Лексемы -- это наборы символов, распознаваемые компилятором языка. Компилятор С++ -- это программа, преобразующая текст на языке С++ в машинный код. Компилятор воспринимает текст программы как сплошной поток символов. Позиционирование операторов совершенно не важно. Лексемы разделяются пробельными символами, знаками табуляции, переходами на новую строку. Для читаемости программы текст все же лучше структурировать.
Лексемы:
-
Ключевые слова (keywords).
-
Идентификаторы (identifiers).
-
Литералы (literals) или константы (constants).
-
Операторы (operators).
-
Знаки пунктуации (punctuators).
Соглашение об именах
Если Вы не знакомы с программированием под Windows, некоторые имена и описания, употребляемые в каркасной программе, могут показаться несколько необычными. Однако они соответствуют соглашениям, представленным фирмой Microsoft для программирования под Windows. Для функций используются имена, построенные из глаголов и существительных, причем первые буквы этих слов — заглавные. Для имен переменных Microsoft предлагает более сложную систему, предусматривающую обозначение именуемых типов данных. Для этого используется неболь шой префикс из строчных букв, а собственно имя начинается с заглавной буквы, Типы префиксов представлены в нижеследующей таблице. Откровенно говоря, использование префиксов, обозначающих тип данных, спорно и не всегда адекватно. Большинство Windows-программистов прибегают к такой системе именования, но Вы в своих программах можете поступать по своему усмотрению.
Префикс - Тип данных ------------------------------------------------------- b - Булевский (байт). с - Символ (байт). s - Строка ( char или CString ). dw - Длинное беззнаковое целое (DWORD). f - 16-битный флаг (битовая карта). fn - Функция. h - Дескриптор (handle). l - Длинное целое (long). i - Данные типа Int. lр - Длинный указатель (long pointer). n - Целое (16 бит). р - Указатель (pointer). pt - Точка (два 32-битных целых). w - Целое без знака (WORD, 16 бит). sz - Указатель на строку, заканчивающуюся 0 (string>zero). Ipsz - Длинный указатель на sz (long pointer string zero). rgb - Длинное целое, содержащее цветовую комбинацию RGB.
Комментарии.
Любой текст, начиная с двух знаков деления \\ и до конца строки является комментарием, никак не анализируется компьютером и служит лишь для пояснений.
Кроме того, любой текст, заключенный между символами /* и */ также является комментарием.
Служебные или ключевые слова.
Ключевые слова -- определенные зарезервированные идентификаторы, имеющие конкретное значение(зарезервированные в служебных целях). Можно выделить следующие группы ключевых слов:
-
ключевые слова для объявления типов;
-
ключевые слова для создания языковых конструкций;
-
остальные слова (для создания гетерогенных типов данных, для реализации принципов ООП и др.)
Ключевые слова в языке С++ всегда записываются прописными буквами. Например, if -- это ключевое слово для создания условной конструкции, а IF, If, iF может быть идентификаторами или константами и никогда не будут восприниматься компилятором как оператор. Примеры ключевых слов приведены в табл.1. Таблица 1
Ключевые слова C++
__аlignоf |
__stdcаll |
else |
return |
__аsm |
__super |
enum |
shоrt |
__аssume |
__try __except |
explicit |
signed |
Программа – это запись алгоритма на одном из языков программирования.
Программа содержит:
раздел команд,
раздел описания данных.
Знаки пунктуации используются для логического разделения текста программы. Например, ; -- заканчивает арифметическое выражение или оператор; , -- используется для разделения в перечислениях переменных, констант, аргументов и т.п.; {} -- ограничивает группу выражений или операторов; () -- используется для описания аргументов функций.
Данные – это формализованное представление всех тех объектов (предметов, фактов, идей), с которыми может оперировать ЭВМ. Включают в себя переменные и константы.
Прежде чем задавать в программе действия над данными, переменные и константы должны бытьопределены.
Переменная – символическое обозначение величины в программе (Идентификатор). С точки зрения архитектуры ПК, переменная - это символическое обозначение ячейки ОП, в которой хранятся данные.
Идентификаторы.
Примеры: var1, Tabl_1, El_valor.
Идентификаторы -- это последовательности латинских букв, цифр и символов подчеркивания ( _ ), обозначающие имена переменных (служит для именования различных элементов программы). Прописные и строчные символы различаются. Например, x и X -- это разные переменные. Длина идентификатора могут быть произвольной, но лучше давать идентификаторам короткие имена, отражающие смысл значения, которое они описывают:
i // обычно целая переменная цикла count // количество buff_size // составное (из 2 слов) имя с символом _ g374 // непонятно _foo // плохо if // не может быть идентификатором, т.к. это ключевое слово 374q // не может начинаться с цифры
Длинные идентификаторы считаются различными, если у них отличаются последовательности из первых 32 символов.
Непосредственно записать величину в программе можно с помощью литерной константы (в качестве константы используется символы кода ASCII).
Выражение – это последовательность операндов, знаков операций, круглых скобок, которая задает вычислительный процесс получения результата определенного типа.
Операнд – это элемент-участник операции.
Операндами могут быть:
-
константы (это лексема, представляющая изображение фиксированного числового, строкового или символьного (литерного) значения);
-
переменные;
-
вызовы функций - указание имени вызываемой функции, за которым в круглых скобках указывается список аргументов (возможно пустой). Во время выполнения программы результат, возвращаемый вызванной функцией, заменяет вызов функции;
-
выражения.
Основные синтаксические правила записи программ на языке C++
1. Прописные и строчные буквы считаются разными символами. При записи идентификаторов могут использоваться латинские буквы, цифры, символ подчеркивания "_". Идентификатор не может начинаться с цифры и не может содержать пробельных символов. Длина идентификатора не ограничена, но ради удобства чтения программы надо стремиться использовать короткие и осмысленные идентификаторы.
2. Пробельные символы (пробелы, знаки табуляции, символ новой строки, комментарий) могут размещаться в любом месте текста, но не внутри идентификатора.
3. Комментарии в тексте заключаются в скобки вида /* текст комментария */. Такие комментарии могут вводится в любом месте текста, в частности, внутри операторов, и занимать любое количество строк. Вложенные комментарии обычно не допускаются. Считается, что комментарий закончился, как только в тексте встретились первые символы */.
Еще один способ введение комментария - размещение его после двух символов "слеш" ("//"). Этот комментарий должен занимать конец строки, в котором он введен, и не может переходить на следующую строку. Любой текст в строке, помещенный после символов "//" воспринимается как комментарий.
4. Каждое предложение языка (оператор) кончается символом точка с запятой (";"). Немногие исключения из этого правила будут оговорены особо.
5. В строке может размещаться несколько операторов.
Надо выделять объединенные смыслом операторы в группы, широко используя для этого отступы и комментарии.
6. Фигурные скобки { } выделяют составной оператор. Все операторы, помещенные между ними, воспринимаются синтаксически как один оператор.
7. Все используемые типы, константы, переменные, функции должны определены до их первого использования. Определения могут встречаться в любом месте текста.