
- •1.1. Алфавит языка
- •1.2. Идентификаторы
- •1.3. Ключевые слова
- •1.4. Знаки операций
- •1.5. Константы
- •1.6. Комментарии
- •2.1. Стадии прохождения программы
- •3.1. Концепция типа данных
- •3.2. Основные типы данных
- •3.3. Переменные
- •4. Операции и выражения
- •4.1. Выражение и его интерпретация
- •4.2. Арифметические операции
- •4.3. Операции отношения
- •4.4. Логические операции
- •4.5. Операции с разрядами
- •4.6. Операции сдвига
- •4.7. Операция условия
- •4.8. Операция присваивания
- •4.9. Операция sizeof
- •4.10. Преобразование типов
- •4.11. Порядок выполнения операций
- •5. Форматный ввод и вывод данных
- •5.1. Форматный вывод: функция printf()
- •5.2. Форматный ввод: функция scanf()
- •Содержание
Глава I. ОСНОВНЫЕ ПОНЯТИЯ ЯЗЫКА С++
1. Состав языка С++
В тексте на любом естественном языке можно выделить четыре основных элемента: символы, слова, словосочетания и предложения. Подобные элементы содержит и алгоритмический язык, только слова называют лексемами (элементарными конструкциями), словосочетания – выражениями, а предложения – операторами. Лексемы образуются из символов, выражения – из лексем и символов, а операторы – из символов, выражений и лексем (рис. 1).
Алфавит языка, или его символы – это основные неделимые знаки, с помощью которых пишутся все тексты на языке.
Лексема – минимальная единица языка, имеющая самостоятельный смысл.
Выражение задает правило вычисления некоторого значения.
Оператор задает законченное описание некоторого действия.
Рис. 1. Состав алгоритмического языка
Для описания сложного действия требуется последовательность операторов. Операторы могут быть объединены в составной оператор, или блок (блоком в языке С++ считается последовательность операторов, заключенная в фигурные скобки { } ). В этом случае они рассматриваются как один оператор.
Операторы бывают исполняемые и неисполняемые.
Исполняемые операторы задают действия над данными.
Неисполняемые операторы служат для описания данных, поэтому их часто называют операторами описания или просто описаниями.
Каждый элемент языка определяется синтаксисом и семантикой. Синтаксические определения устанавливают правила построения элементов языка, а семантика определяет их смысл и правила использования.
Для описания языка будем пользоваться неформальным способом, при котором необязательные части синтаксических конструкций заключаются в квадратные скобки, текст, который необходимо заменить конкретным значением, пишется по-русски, а выбор одного из нескольких элементов обозначается вертикальной чертой. Например, запись
[ void | int ] имя();
означает, что вместо конструкции имя необходимо указать конкретное имя в соответствии с правилами языка, а перед ним может находиться либо void, либо int, либо ничего. Фигурные скобки используются для группировки элементов, из которых требуется выбрать только один.
1.1. Алфавит языка
Алфавит С++ включает:
прописные и строчные латинские буквы и знак подчеркивания;
арабские цифры от 0 до 9;
специальные знаки, например, {, }, %, #, & и т.д.
пробельные символы: пробел, символы табуляции, символы перехода на новую строку.
Из символов алфавита формируются лексемы языка:
идентификаторы;
ключевые (зарезервированные) слова;
знаки операций;
константы;
разделители (скобки, точка, запятая, пробельные символы).
Границы лексем определяются другими лексемами, такими, как разделители или знаки операций.
1.2. Идентификаторы
Идентификатор – это имя программного объекта. В идентификаторе могут использоваться латинские буквы (прописные и строчные), цифры и знак подчеркивания. Прописные и строчные буквы различаются, например, sysop, SySoP и SYSOP – три различных имени. Первым символом идентификатора может буква или знак подчеркивания, но не цифра. Обычно с символа подчеркивания начинаются имена системных зарезервированных переменных и констант. Пробелы внутри имени не допускаются.
Длина идентификатора по стандарту не ограничена. Идентификатор создается на этапе объявления переменной, функции, типа и т.п., после этого его можно использовать в последующих операторах программы. При выборе идентификатора необходимо иметь в виду следующее:
идентификатор не должен совпадать с ключевыми словами и именами используемых стандартных объектов языка;
не рекомендуется начинать идентификаторы с символа подчеркивания, поскольку они могут совпадать с именами системных функций или переменных, и, кроме того, это снижает мобильность программы;
на идентификаторы, используемые для определения внешних переменных, налагаются ограничения компоновщика.
Часто идентификатор мы называем просто именем: имя переменной, имя функции.
void main (void) // main - идентификатор функции
{
const int MAX=100; // MAX - идентификатор константы
int i=10; // i - идентификатор переменной
typedef int Vector[MAX]; // Vector - идентификатор типа
}
Значащими (различимыми для компилятора) являются первые n символов идентификатора, где n задается в среде программирования (обычно от 8 до 64 символов).
Например, верными будут являться идентификаторы "PupkinVasya", "my_height", "_inputfile", "parrots38" и неверными "Pupkin Vasya" (пробел недопустим), "38parrots" (начинается с цифры), "while" (совпадает с ключевым словом C++).
Для улучшения читаемости программы следует давать объектам осмысленные имена.
1.3. Ключевые слова
Ключевые слова – это зарезервированные идентификаторы, которые имеют специальное значение для компилятора. Их можно использовать только в том смысле, в котором они определены. Список ключевых слов С++ приведен в таблице 1.
Таблица 1. Список ключевых слов С++
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 |
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 |
dynamic_cast |
namespace |
template |
|