Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ООП ист 22 ответы.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
151.85 Кб
Скачать

2. Алфавит C++

Алфавит C++ включает:

прописные и строчные латинские буквы и знак подчеркивания;

арабские цифры от 0 до 9;

специальные знаки: ? { } , ¦ [ ] ( ) + — / % * . \ ‘ : ? < = > ! & # ~ — ; ^

пробельные символы: пробел, символы табуляции, символы перехода на новую строку.

Из символов алфавита формируются лексемы языка:

идентификаторы;

ключевые (зарезервированные) слова;

знаки операций;

константы;

разделители (скобки, точка, запятая, пробельные символы).

Границы лексем определяются другими лексемами, такими, как разделители или знаки операций.

Идентификаторы

Идентификатор — это имя программного объекта. В идентификаторе могут использоваться латинские буквы, цифры и знак подчеркивания. Прописные и строчные буквы различаются, например, sysop, SySoP и SYSOP — три различных имени. Первым символом идентификатора может быть буква или знак подчеркивания, но не цифра. Пробелы внутри имен не допускаются.

Другая традиция — разделять слова, составляющие имя, знаками подчеркивания: maxjength, number_of_galosh.

Длина идентификатора по стандарту не ограничена, но некоторые компиляторы и компоновщики налагают на нее ограничения. Идентификатор создается на этапе объявления переменной, функции, типа и т. п., после этого его можно использовать в последующих операторах программы. При выборе идентификатора необходимо иметь в виду следующее:идентификатор не должен совпадать с ключевыми словами и именами используемых стандартных объектов языка;

не рекомендуется начинать идентификаторы с символа подчеркивания, поскольку они могут совпасть с именами системных функций или переменных, и, кроме того, это снижает мобильность программы;

на идентификаторы, используемые для определения внешних переменных, налагаются ограничения компоновщика (использование различных компоновщиков или версий компоновщика накладывает разные требования на имена внешних переменных).

Ключевые слова

Ключевые слова — это зарезервированные идентификаторы, которые имеют специальное значение для компилятора. Их можно использовать только в том смысле, в котором они определены. Список ключевых слов C++ приведен в таблице ниже.Список ключевых слов C++

asm else new this

auto enum operator throw

bool explicit private true

break export protected try

case extern public typedef

catch false register typeid

char float reinterpret_cast typename и т.д.

Знаки операций

Знак операции — это один или более символов, определяющих действие над операндами. Внутри знака операции пробелы не допускаются. Операции делятся на унарные, бинарные и тернарную по количеству участвующих в них операндов. Один и тот же знак может интерпретироваться по-разному в зависимости от контекста. Все знаки операций за исключением [ ], ( ) и ? : представляют собой отдельные лексемы.

Большинство стандартных операций может быть переопределено (перегружено).

Константы

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

Если требуется сформировать отрицательную целую или вещественную константу, то перед константой ставится знак унарной операции изменения знака (-), например: -218, -022, -0х3C, -4.8, -0.1e4.

Вещественная константа в экспоненциальном формате представляется в виде мантиссы и порядка. Мантисса записывается слева от знака экспоненты (Е или е), порядок — справа от знака. Значение константы определяется как произведение мантиссы и возведенного в указанную в порядке степень числа 10. Обратите внимание, что пробелы внутри числа не допускаются, а для отделения целой части от дробной используется не запятая, а точка.

Символьные константы, состоящие из одного символа, занимают в памяти один байт и имеют стандартный тип char. Двухсимвольные константы занимают два байта и имеют тип int, при этом первый символ размещается в байте с меньшим адресом.

Все строковые литералы рассматриваются компилятором как различные объекты.

Строковые константы, отделенные в программе только пробельными символами, при компиляции объединяются в одну. Длинную строковую константу можно разместить на нескольких строках, используя в качестве знака переноса обратную косую черту, за которой следует перевод строки. Эти символы игнорируются компилятором, при этом следующая строка воспринимается как продолжение предыдущей. Например, строка

“Никто не доволен своей \

внешностью, но все довольны \

своим умом”

полностью эквивалентна строке

“Никто не доволен своей внешностью, но все довольны своим умом”

3 math.h — заголовочный файл стандартной библиотеки языка программирования С, разработанный для выполнения простых математических операций. Большинство функций привлекают использование чисел с плавающей точкой. C++ также реализует данные функции для обеспечения совместимости, все они содержатся в заголовочном файле cmath.

Все эти функции принимают double, если не определено иначе. Для работы с типами float и long double используются функции с постфиксами f и l соответственно. Все функции, принимающие или возвращающие угол, работают с радианами.

Функции

acos - арккосинус

acosh - гиперболический арккосинус

asin - арксинус

asinh - гиперболический арксинус

atan - арктангенс

atan2 - арктангенс с двумя параметрами

atanh - гиперболический арктангенс

cbrt - кубический корень

ceil - округление до ближайшего большего целого числа

copysign - возвращает величину, абсолютное значение которой равно x, но знак которой соответствует знаку y

cos - косинус

cosh - гиперболический косинус

erf - функция ошибок

erfc - Дополнительная функция ошибок

exp - вычисление экспоненты

exp2 - значение числа 2, возведённого в степень x, 2x

expm1 - значение функции ex − 1

fabs - абсолютная величина (числа с плавающей точкой)

и т.д.

Стандартной библиотекой языка Си (также известная как libc, crt) называется часть стандарта ANSI C, посвященная заголовочным файлам и библиотечным подпрограммам. Является описанием реализации общих операций, таких как обработка ввода/вывода и строк, в языке программирования Си. Стандартная библиотека языка Си — это описание программного интерфейса, а не настоящая библиотека, пригодная для использования в процессе компиляции.

4. Инкремент и декремент

В С++ есть унарная операция инкремента ++ (увеличение на 1) и унарная операция декремента — (уменьшение на 1). Эти операции используются для более короткой записи увеличения переменной на единицу. Например, целочисленную переменную d можно увеличить на единицу так: d = d + 1;, либо записать d++;, что будет идентично.

Кроме того, различают постфиксную и префиксную формы записей инкремента и декремента. При префиксной форме записи переменная сначала увеличивается, а затем это уже новое значение используется в том выражении, в котором он встретилась. Префиксная форма имеет следующий вид записи: ++i, ++f, ++g, —h, —k, —l.

При постфиксной форме записи в выражении используется текущее значение переменной, а уже после переменная наращивается на единицу. Постфиксная форма имеет следующий вид записи: i++, f++, g++, h—, k—, l—.

Оператор присваивания

Как в языке С++, так и в C# присваивание формально считается операцией. Вместе с тем запись:

X= expr;

следует считать настоящим оператором присваивания, так же, как и одновременное присваивание со списком переменных в левой части:

X1 = X2 = … = Xk = expr;

В отличие от языка C++ появление присваивания в выражениях C# хотя и допустимо, но практически не встречается. Например, запись:

if(x = expr)...

часто используемая в С++, в языке C# в большинстве случаев будет воспринята как ошибка еще на этапе компиляции.

В предыдущих лекциях семантика присваивания разбиралась достаточно подробно, поэтому сейчас я на этом останавливаться не буду.

Блок, или составной оператор

С помощью фигурных скобок несколько операторов языка (возможно, перемежаемых объявлениями) можно объединить в единую синтаксическую конструкцию, называемую блоком или составным оператором:

{

оператор_1

оператор_N

}

Пустой оператор

Пустой оператор – это пусто, завершаемое точкой с запятой. Иногда полезно рассматривать отсутствие операторов как существующий пустой оператор. Синтаксически допустимо ставить лишние точки с запятой, полагая, что вставляются пустые операторы. Например, синтаксически допустима следующая конструкция:

for (int j=1; j<5; j++)

{;;;};

Она может рассматриваться как задержка по времени, работа на холостом ходе.

Операторы выбора

Как в С++ и других языках программирования, в языке C# для выбора одной из нескольких возможностей используются две конструкции – if и switch. Первую из них обычно называют альтернативным выбором, вторую – разбором случаев.

Оператор if

Начнем с синтаксиса оператора if:

if(выражение_1) оператор_1

else if(выражение_2) оператор_2

else if(выражение_K) оператор_K

else оператор_N

Какие особенности синтаксиса следует отметить? Выражения if должны заключаться в круглые скобки и быть булевского (? булевого) типа. Точнее, выражения должны давать значения true или false. Напомню, арифметический тип не имеет явных или неявных преобразований к булевскому (?булевому) типу. По правилам синтаксиса языка С++, then-ветвь оператора следует сразу за круглой скобкой без ключевого слова then, типичного для большинства языков программирования. Каждый из операторов может быть блоком, в частности if-оператором. Поэтому возможна и такая конструкция:

if(выражение1) if(выражение2) if(выражение3) …

Ветви else if, позволяющие организовать выбор из многих возможностей, могут отсутствовать. Может быть опущена и заключительная else-ветвь. В этом случае краткая форма оператора if задает альтернативный выбор – делать или не делать – выполнять или не выполнять then-оператор.

Семантика оператора if проста и понятна. Выражения if проверяются в порядке их написания. Как только получено значение true, проверка прекращается и выполняется оператор (это может быть блок), который следует за выражением, получившим значение true. С завершением этого оператора завершается и оператор if. Ветвь else, если она есть, относится к ближайшему открытому if.

Оператор switch

Частным, но важным случаем выбора из нескольких вариантов является ситуация, при которой выбор варианта определяется значениями некоторого выражения. Соответствующий оператор C#, унаследованный от C++, но с небольшими изменениями в синтаксисе, называется оператором switch. Вот его синтаксис:

switch(выражение)

{

case константное_выражение_1: [операторы_1 оператор_перехода_1]

case константное_выражение_K: [операторы_K оператор_перехода_K]

[default: операторы_N оператор_перехода_N]

}

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]