Файл: Лекция 2. Основы программирования на языке С 1 Состав языка.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 22.11.2023
Просмотров: 35
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
2 Лекция №2. Основы программирования на языке С++
2.1 Состав языка
В тексте на любом естественном языке можно выделить четыре основных элемента: символы, слова, словосочетания и предложения. Подобные элементы содержит и алгоритмический язык, только слова называют лексемами (элементарными конструкциями), словосочетания - выражениями, а предложения - операторами. Лексемы образуются из символов, выражения - из лексем и символов, а операторы - из символов, выражений и лексем (рисунок 2.1):
-
Алфавит языка, или его символы - это основные неделимые знаки, с помощью которых пишутся все тексты на языке.
-
Лексема, или элементарная конструкция, - минимальная единица языка, имеющая самостоятельный смысл.
-
Выражение задает правило вычисления некоторого значения.
-
Оператор задает законченное описание некоторого действия.
Рисунок 2.1 - Состав алгоритмического языка
2.1.1 Алфавит языка
Алфавит языка С++ включает:
-
прописные и строчные латинские буквы и знак подчеркивания;
-
арабские цифры от 0 до 9, шестнадцатеричные цифры от A до F;
-
специальные знаки:
« { } , | [ ] ( ) + - / % * .
' : ? < = > ! & #
; ^Алфавит языка, или его символы - это основные неделимые знаки, с помощью которых пишутся все тексты на языке.
Лексема, или элементарная конструкция, - минимальная единица языка, имеющая самостоятельный смысл.
Выражение задает правило вычисления некоторого значения.
Оператор задает законченное описание некоторого действия.
прописные и строчные латинские буквы и знак подчеркивания;
арабские цифры от 0 до 9, шестнадцатеричные цифры от A до F;
специальные знаки:
-
пробельные символы: пробел, символы табуляции, символы перехода на новую строку.
Из символов алфавита формируются лексемы языка:
-
идентификаторы; -
ключевые (зарезервированные) слова; -
знаки операций; -
константы; -
разделители (скобки, точка, запятая, пробельные символы).
Границы лексем определяются другими лексемами, такими, как разделители или знаки операций.
2.1.2 Идентификаторы
Идентификатор - это имя программного объекта. В идентификаторе могут использоваться латинские буквы, цифры и знак подчеркивания. Прописные и строчные буквы различаются, например, sysop, SySoP и SYSOP - три различных имени. Первым символом идентификатора может быть буква или знак подчеркивания, но не цифра. Пробелы внутри имен не допускаются.
Длина идентификатора по стандарту не ограничена, но некоторые компиляторы и компоновщики налагают на нее ограничения. Идентификатор создается на этапе объявления переменной, функции, типа и т. п., после этого его можно использовать в последующих операторах программы. При выборе идентификатора необходимо иметь в виду следующее:
-
идентификатор не должен совпадать с ключевыми словами и именами используемых стандартных объектов языка; -
не рекомендуется начинать идентификаторы с символа подчеркивания, поскольку они могут совпасть с именами системных функций или переменных, и, кроме того, это снижает мобильность программы; -
на идентификаторы, используемые для определения внешних переменных, налагаются ограничения компоновщика (использование различных компоновщиков или версий компоновщика накладывает разные требования на имена внешних переменных).
2.1.3 Ключевые слова
Ключевые слова - это зарезервированные идентификаторы, которые имеют специальное значение для компилятора. Их можно использовать только в том смысле, в котором они определены. Список ключевых слов С++ приведен в таблице 2.1.
Таблица 2.1 - Список ключевых слов языка С++
asm | else | new | this |
auto | enum | operator | throw |
bool | explicit | privte | true |
break | export | protected | try |
case | extern | public | typedef |
catch | false | register | typeid |
char | float | reinterpret_cast | typename |
class | For | return | union |
const | friend | short | unsigned |
const_cast | Goto | signed | using |
continue | If | sizeof | virtual |
default | inline | static | void |
delete | Int | static_cast | volatile |
do | long | struct | wchar_t |
double | mutable | switch | while |
2.1.4 Знаки операций
Знак операции - это один или более символов, определяющих действие над операндами. Внутри знака операции пробелы не допускаются. Операции делятся на унарные, бинарные и тернарную по количеству участвующих в них операндов. Один и тот же знак может интерпретироваться по-разному в зависимости от контекста. Все знаки операций за исключением [ ], ( ) и ? : представляют собой отдельные лексемы.
2.1.5 Константы
Константами называют неизменяемые величины. Различаются целые, вещественные, символьные и строковые константы. Компилятор, выделив константу в качестве лексемы, относит ее к одному из типов по ее внешнему виду 1. Форматы констант, соответствующие каждому типу, приведены в табл. 2.2.
Таблица 2.2 - Константы в языке С++
Константа | Формат | Примеры |
Целая | Десятичный: последовательность десятичных цифр, начинающаяся не с нуля, если это не число нуль Восьмеричный: нуль, за которым следуют восьмеричные цифры (0,1,2,3,4,5,6,7) Шестнадцатеричный: 0х или 0Х, за которым следуют шестнадцатеричные цифры (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F) | 8, 0, 199226 01, 020, 07155 0xA, 0x1B8, 0X00FF |
Продолжение таблицы 2.2
Вещественная | Десятичный: [цифры].[цифры] Экспоненциальный: [цифры][.][цифры]{E|e}[+|-][цифры] | 5.7, .001, 35. 0.2E6, .11e-3, 5E10 |
Символьная | Один или два символа, заключенных в апострофы | 'A', 'ю', '*', 'db', '\0', '\n', '\012', '\x07\x07' |
Строковая | Последовательность символов, заключенная в кавычки | «Здесь был Vasia», «\tЗначение r=\0xF5\n» |
Допустимые диапазоны значений целых и вещественных констант приведены
в табл. 2.4.
Если требуется сформировать отрицательнуюцелую или вещественную константу, то перед константой ставится знак унарной операции изменения знака (-), например: -218, -022, -0x3С, -4.8, -0.1e4.
Вещественная константа в экспоненциальном формате представляется в виде мантиссы и порядка. Мантисса записывается слева от знака экспоненты (E или e), порядок - справа от знака. Значение константы определяется как произведение мантиссы и возведенного в указанную в порядке степень числа 10. Обратите внимание, что пробелы внутри числа не допускаются, а для отделения целой части от дробной используется не запятая, а точка.
Символьные константы, состоящие из одного символа, занимают в памяти один байт и имеют стандартный тип char. Двухсимвольные константы занимают два байта и имеют тип int, при этом первый символ размещается в байте с меньшим адресом (о типах данных рассказывается в следующем разделе).
Символ обратной косой черты используется для представления:
-
кодов, не имеющих графического изображения (например, \a - звуковой сигнал, \n - перевод курсора в начало следующей строки); -
символов апострофа ( ' ), обратной косой черты ( \ ), знака вопроса ( ? ) и кавычки ( " ); -
любого символа с помощью его шестнадцатеричного или восьмеричного кода, например, \073, \0xF5. Числовое значение должно находиться в диапазоне от 0 до 255.
Последовательности символов, начинающиеся с обратной косой черты, называют управляющими, или escape-последовательностями. В таблице 2.3 приведены их допустимые значения. Управляющая последовательность интерпретируется как одиночный символ. Если непосредственно за обратной косой чертой следует символ, не предусмотренный табл. 1.3, результат интерпретации не определен. Если в последовательности цифр встречается недопустимая, она считается концом цифрового кода.
Таблица 2.3 - Управляющие последовательности в языке С++
Изображение | Шестнадцатеричный код | Наименование |
\a | 7 | Звуковой сигнал |
\b | 8 | Возврат на шаг |
\f | C | Перевод страницы (формата) |
\n | A | Перевод строки |
\r | D | Возврат каретки |
\t | 9 | Горизонтальная табуляция |
\v | B | Вертикальная табуляция |
\\ | 5C | Обратная косая черта |
\' | 27 | Апостроф |
\" | 22 | Кавычка |
\? | 3F | Вопросительный знак |
\0ddd | - | Восьмеричный код символа |
\0xddd | ddd | Шестнадцатеричный код символа |
Управляющие последовательности могут использоваться и в строковых константах, называемых иначе строковыми литералами. Например, если внутри строки требуется записать кавычку, ее предваряют косой чертой, по которой компилятор отличает ее от кавычки, ограничивающей строку:
"Издательский дом \"Питер\""
Все строковые литералы рассматриваются компилятором как различные объекты. Строковые константы, отделенные в программе только пробельными символами, при компиляции объединяются в одну. Длинную строковую константу можно разместить на нескольких строках, используя в качестве знака переноса обратную косую черту, за которой следует перевод строки. Эти символы игнорируются компилятором, при этом следующая строка воспринимается как продолжение предыдущей. Например, строка
"Никто не доволен своей \
внешностью, но все довольны \
своим умом"
полностью эквивалентна строке
"Никто не доволен своей внешностью, но все довольны своим умом"
В конец каждого строкового литерала компилятором добавляется нулевой символ, представляемый управляющей последовательностью \0. Поэтому длина строки всегда на единицу больше количества символов в ее записи. Таким образом, пустая строка " " имеет длину 1 байт. Обратите внимание на разницу между строкой из одного символа, например, "A", и символьной константой 'A'. Пустая символьная константа недопустима.
2.1.6 Комментарии
Комментарий либо начинается с двух символов «прямая косая черта» (//) и заканчивается символом перехода на новую строку, либо заключается между символами - скобками /* и */. Внутри комментария можно использовать любые допустимые на данном компьютере символы, а не только символы из алфавита языка C++, поскольку компилятор комментарии игнорирует. Вложенные комментарии - скобки стандартом не допускаются, хотя в некоторых компиляторах разрешены.
2.2 Типы данных
Основная цель любой программы состоит в обработке данных. Данные различного типа хранятся и обрабатываются по-разному. В любом алгоритмическом
языке каждая константа, переменная, результат вычисления выражения или функции должны иметь определенный тип.
Тип данных определяет:
-
внутреннее представление данных в памяти компьютера; -
множество значений, которые могут принимать величины этого типа; -
операции и функции, которые можно применять к величинам этого типа.