user-defined conversion неявное пользовательское
преобразование
include directory, standard стандартный каталог include
file включаемый файл
inclusion source file включение исходного файла
increment operator операция инкремент
indentation выделение пробелами
inderect base class косвенный базовый класс
inderection operator операция косвенности
inequality operator операция неравно
inheritance наследование
containment and принадлежность и наследование
multiple множественное наследование
of constructor наследование конструктора
of destructor наследование деструктора
initialization инициализация
array инициализация массива
array of class objects инициализация массива объектов класса
assignment and инициализация и присваивание
character array инициализация массива символов
class member инициализация члена класса
class object инициализация объекта класса
default стандартная инициализация
dynamic динамическая инициализация
member инициализация члена
member object инициализация объекта-члена
of base class инициализация базового класса
of structure инициализация структуры
initializer инициализатор
initializer-list список-инициализаторов
inline inline
function функция-подстановка
member function функция-член inline
input and output ввод-вывод
of built-in type ввод встроенных типов
of user-defined type ввод пользовательских типов
operator >> операция ввода >>
int int
type тип int
type specifier спецификация типа int
integer constant целая константа
conversion целочисленное преобразование
integral promotion стандартное целочисленное
преобразование
type целочисленный тип
interface интерфейс
class интерфейсный класс
inheritance наследование интерфейса
fat обширный интерфейс
specifications спецификации интерфейса
internal linkage внутреннее связывание
structure внутренняя структура
I/O buffering буферизация ввода-вывода
iteration итерация
statement оператор итерации

J

jump statement оператор перехода
jump-statement оператор-перехода

K

keyword служебное слово
list список служебных слов

L

label метка
case метка case
default метка default
scope of область видимости метки
labeled statement помеченный оператор
language язык
design and проектирование и язык
high-level язык высокого уровня
low-level язык низкого уровня
layout bit-field расположение битовых полей
class objects расположение объектов класса
left shift operator операция сдвига влево
less than operator операция меньше чем
than or equal to operator операция меньше или равно
levels of abstraction уровни абстракции
lexical conventions лексические соглашения
library библиотека
design проектирование библиотеки
headers библиотека заголовочных файлов
initialization инициализация библиотеки
lifetime of object время жизни объекта
linkage связывание
consistency согласованное связывание
error ошибка связывания
external внешнее связывание
internal внутреннее связывание
linker-specification спецификация-связи
linker редактор связей
Lisp Лисп
list of operator functions список операторных функций
literal литерал
constants литеральные константы
loader загрузчик
local class declaration описание локального класса
class member function функция-член локального класса
class, scope of область видимости локального класса
scope локальная область видимости
locking блокирование (замок)
logical AND operator операция логическое И
OR operator операция логическое ИЛИ
negation operator операция логического отрицания
operators, bitwise поразрядные логические операции
long long
constant константа long
double long double
double constant константа long double
double type тип long double
type тип long
loop statement оператор цикла
lvalue адрес
assignment and адрес и присваивание
cast приведение адреса
conversion преобразование адреса
modifiable изменяемый адрес

M

macro макрокоманда
definition, preprocessing макроопределение
expansion, preprocessing макроподстановка
function-like функциональная макрокоманда
name, scope of область видимости макроопределения
names, predefined предопределенные макроимена
preprocessing макрообработка
syntax summary синтаксис макроопределений (сводка)
maintenance, software сопровождение программ
management управление
free store управление свободной памятью
memory управление памятью
manipulator манипулятор
member член
member-declaration описание-члена
member-declarator описатель-члена
member-list список-членов
modifiable lvalue изменяемый адрес
modular programming модульное программирование
modularity модульность
multicharacter constant многосимвольная константа
multidimensional array многомерный массив
multiple inheritance множественное наследование
multiplication operator операция умножения
multiplicative-expression мультипликативное-выражение

N

name имя
global глобальное имя
hiding упрятывание имени
length of длина имени
linkage of local связывание локального имени
overloaded function имя перегруженной функции
overloaded member имя перегруженного члена
qualified уточненное имя
scope of область видимости имени
nested class declaration описание вложенного класса
class, scope of область видимости вложенного класса
new operator операция new
newline \n конец строки \n
node class узловой класс
null character символ null '\0'
pointer пустой указатель (null)

O

object объект
object-oriented programming объектно-ориентированное
программирование
octal constant восьмеричная константа
number восьмеричное число
operand const операнд const
reference операнд ссылка
volatile операнд volatile
operator , операция ,
! операция !
# операция #
## операция ##
%= операция %=
&& операция &&
&= операция &=
*= операция *=
*=, user-defined пользовательская операция *=
+, user-defined пользовательская операция +
++ операция ++
++, user-defined пользовательская операция ++
+= операция +=
-, user-defined пользовательская операция -
-- операция --
--, user-defined пользовательская операция --
-= операция -=
->, user-defined пользовательская операция ->
/= операция /=
:: операция ::
<<, output операция вывода <<
<<= операция <<=
=, user-defined пользовательская операция =
>>, input операция ввода >>
>>= операция >>=
^= операция ^=
address-of операция взятия адреса
assignment операция присваивания
associativity ассоциативность операций
binding strength порядок выполнения операций
built-in встроенные операции
function call операция вызова функции
precedence приоритет операций
sizeof операция sizeof
subscripting операция индексации
summary сводка операций
user-defined пользовательская операция
operator function операторная функция
function, list of список операторных функций
order of argument evaluation порядок вычисления параметров
of evaluation порядок вычислений
output formatted форматированный вывод
input and ввод и вывод
of built-in type вывод встроенных типов
of user-defined type вывод пользовательских типов
operator << операция вывода <<
overflow переполнение
overloaded assignment operator перегрузка операции присваивания
binary operator перегрузка бинарной операции
decrement operator перегрузка декремента
function call operator перегрузка операции вызова
function name перегрузка имени функции
increment operator перегрузка инкремента
member access operator перегрузка операции выбора члена
member name перегрузка имени члена
operator перегрузка операции
subscripting operator перегрузка индексации
unary operator перегрузка унарной операции
overloading перегрузка
and access перегрузка и доступ
and scope перегрузка и область видимости
resolution разрешение перегрузки
resolution rules правила разрешения перегрузки
overriding virtual function переопределение виртуальной
функции

P

paradigm, programming парадигма программирования
placement указание размещения
pointer указатель
arithmetic арифметические операции указателей
assignment to присваивание указателю
comparison сравнение указателей
const указатель const
conversion преобразование указателей
declaration описание указателя
null пустой указатель null
size of размер указателя
substraction вычитание указателей
type тип указателя
postfix ++ and -- постфиксные ++ и --
expression постфиксное выражение
precedence of operator приоритет операций
predefined address-of operator предопределенная операция
взятия адреса
assignment operator предопределенное присваивание
macronames предопределенные макроимена
prefix ++ and -- префиксные ++ и --
preprocessing макрообработка
directive макрокоманда
directive, error макрокоманда error
directive, null макрокоманда null
directive, pragma макрокоманда pragma
macro definition макроопределение
macro expansion макроподстановка (подстановка)
syntax summary сводка макрокоманд
primary expression первичное выражение
private private
base class частный базовый класс
class member частный член класса
procedural programming процедурное программирование
program программа
environment окружение программы
partitioning разбиение программы
start запуск программы
termination завершение программы
protected protected
member защищенный член
member access доступ к защищенному члену
prototypes прототипы
public public
class member общий член класса
pure specifier спецификация pure
virtual function чисто виртуальная функция
pure-specifier спецификация-pure

Q

qualified name уточненное имя
qualified-class-name уточненное-имя-класса
qualified-name уточненное-имя
qualified-type-name уточненное-имя-типа
queue empty пустая очередь
quote, single одиночная кавычка
double двойная кавычка

R

range checking контроль диапазона
recursion рекурсия
recursive decent parser анализатор рекурсивного спуска
function call рекурсивный вызов функции
reference ссылка
assignment присваивание ссылки
assignment to присваивание ссылке
call by вызов по ссылке
cast приведение ссылки
conversion преобразование ссылки
const ссылка const
declaration описание ссылки
initialization инициализации ссылки
operand операнд ссылка
overloading and перегрузка и ссылка
volatile ссылка volatile
register declaration описание register
initialization инициализация регистра
relational operator операция отношения
relational-expression выражение-отношения
reserved identifier зарезервированный идентификатор
resolution ambiguity разрешение неоднозначности
scoping ambiguity разрешение неоднозначности
области видимости
template function overloading разрешение перегрузки шаблонной
функции
resource acquisition запрос ресурса
exhaustion исчерпание ресурса
release освобождение ресурса
re-throw повторный запуск (особой ситуации)
return return
return statement оператор return
return type тип возвращаемого значения
run-time error динамическая ошибка
initialization динамическая инициализация
type information динамическая информация о типе

S

scope область видимости
class область видимости класса
file файловая область видимости
function область видимости функции
global глобальная область видимости
local локальная область видимости
of label область видимости метки
of local class область видимости локального класса
of macro name область видимости макроимени
of name область видимости имени
of nested class область видимости вложенного класса
resolution operator операция разрешения области
видимости
rules summary сводка правил области видимости
separate compilation раздельная трансляция
shift-expression выражение-сдвига
short type тип short
type specifier спецификация типа short
side effects побочные эффекты
sign extension размножение знака
signed char type тип signed char
type знаковый тип
simple-type-name имя-простого-типа
Simula Симула
size of pointer размер указателя
of string размер строки
of structure размер структуры
sizeof operator операция sizeof
Smalltalk Smalltalk
source file исходный файл
file, inclusion включение исходного файла
special character специальный символ
specifier auto спецификация auto
declaration спецификация описания
friend спецификация friend
function спецификация функции
inline спецификация inline
static спецификация static
storage class спецификация класса памяти
template спецификация шаблона типа
typedef спецификация typedef
virtual спецификация virtual
stack unwinding раскручивание стека
standard component стандартный компонент
conversion стандартное преобразование
headers стандартные заголовочные файлы
include directory стандартный каталог включаемых
файлов
libraries стандартные библиотеки
statement оператор
break оператор break
compound составной оператор
continue оператор continue
declaration оператор описания
do оператор do
empty пустой оператор
expression оператор выражения
for оператор for
goto оператор goto
if оператор if
summary сводка операторов
switch оператор switch (переключатель)
syntax summary синтаксис операторов
while оператор while
static type checking статический контроль типов
static static
class member статический член класса
linkage of связывание статических
local object статический локальный объект
member статический член
member declaration описание статического члена
member definition определение статического члена
member function статическая функция-член
specifier спецификация static
storage class статический класс памяти
stream closing of закрытие потока
file and файл и поток
state состояние потока
string строковый поток
string class строковый класс
concatenation конкатенация строк
constant константа строка
type of тип строки
wide-character широкосимвольная строка
struct struct
type specifier спецификация типа struct
structure структура
initialization of инициализация структуры
subclass вложенный класс
subscripting user-defined пользовательская операция индексации
summary class declaration syntax синтаксис описаний класса
compatibility with ANSI C совместимость с ANSI C
compatibility with C совместимость с С
declaration syntax синтаксис описаний
declarator syntax синтаксис описателей
exception handling syntax синтаксис особых ситуаций
expression syntax синтаксис выражений
macro syntax синтаксис макрокоманд
scope rules правила областей видимости
statement syntax синтаксис операторов
template syntax синтаксис шаблонов типа
support for data abstraction поддержка абстракции данных
for object-oriented programming поддержка объектно-ориентированного
программирования

T

template шаблон типа
class шаблонный класс
class declaration описание шаблонного класса
class definition определение шаблонного класса
declaration описание шаблона типа
function шаблонная функция
function declaration описание шаблонной функции
function definition определение шаблонной функции
linkage of связывание шаблона типа
member function шаблонная функция-член
specifier спецификация template
syntax summary синтаксис шаблона типа
template-arg парам-шаблона-типа
template-arg-list список-парам-шаблона-типа
template-argument параметр-шаблона-типа
template-argument-list список-параметров-шаблона-типа
template-class-name имя-шаблонного-класса
template-declaration описание-шаблона-типа
temporary временный объект
this this
throw throw
throw-expression выражение-запуска
throwing, exception запуск особой ситуации
throw-point точка запуска
token лексема
tools design проектирование сервисных программ
translation phases стадии трансляции
unit единица трансляции
trigraph триграф
try try
try-block проверяемый-блок
type тип
user-defined пользовательский тип
type-specifier спецификация-типа

U

unary expression унарное выражение
minus operator операция унарный минус
operator унарная операция
operator, user-defined пользовательская унарная операция
plus, operator операция унарный плюс
unary-expression унарное-выражение
unary-operator унарная-операция
uncaught exception неперехваченная особая ситуация
undeclared argument неописанный параметр
underscore character символ подчеркивания _
unexpected exceptions неожиданные особые ситуации
union объединение
anonymous безымянное объединение
constructor конструктор объединения
destructor деструктор объединения
discriminating контролируемое объединение
initialization инициализация объединения
member function функция-член объединения
type specifier спецификация типа union
UNIX UNIX
unsigned arithmetic беззнаковая арифметика
char type тип unsigned char
constant беззнаковая константа
type беззнаковый тип
type specifier спецификация типа unsigned

V

vertical tab \v вертикальная табуляция \v
virtual virtual
base class виртуальный базовый класс
destructor виртуальный деструктор
function виртуальная функция
function access доступ к виртуальной функции
function call вызов виртуальной функции
function, type of тип виртуальной функции
specifier спецификация virtual
user-defined conversion виртуальное пользовательское
преобразование
void void
argument пустой параметр
pointer to указатель типа void*
type тип void
type specifier спецификация типа void
volatile volatile
member function функция-член volatile
operand операнд volatile
reference ссылка volatile
type тип volatile
type specifier спецификация типа volatile

W

waterfall model модель каскад
white space обобщенный пробел
wide-character string широкосимвольная строка


    * ПРИМЕРЫ *




    b1_1_1.cxx


#include <stream.hxx>

main()
{
cout << "Hello, world\n";
}



    b1_1_3.cxx


#include <stream.hxx>

main ()
{
int inch = 0;
cout << "inches=";
cin >> inch;
cout << inch;
cout << "in = ";
cout << inch*2.54;
cout << " cm\n";
}



    b1_4_5v.cxx


#include <stream.hxx>

main()
{
const float fac = 2.54;
float x, in, cm;
char ch = 0;

for ( int i= 0; i< 8; i++) {
cerr << "enter length: ";
cin >> x >> ch;

if (ch == 'i' ) { // inch
in = x;
cm = x*fac;
}
else if (ch == 'c') { // cm
in = x/fac;
cm = x;
}
else
in = cm = 0;

cerr << in << "in = " << cm << " cm\n";
}
}



    b1_5.cxx


#include <stream.hxx>
extern float pow(float, int);

main()
{
for (int i=0; i<10; i++) cout << pow(2,i) << "\n";
}

extern void error(char *);

float pow(float x, int n)
{
if (n < 0) {
error ("sorry, negative exponent to pow()");
return 0;
}

switch (n) {
case 0: return 1;
case 1: return x;
default: return x*pow(x,n-1);
}
}

void error(char *s)
{
cout << s;
}



    b1__13.cxx


#include <stream.hxx>

// 1.11
class vector {
int *v;
int sz;
public:
vector(int); // constructor
~vector(); // destructor
int size() { return sz; }
void set_size(int);
int& operator[](int);
int& elem(int i) { return v[i]; }
};

// 1.13
class vec : public vector {
int low, high;
public:
vec(int, int);
int& elem(int);
int& operator[](int);
};


main()
{
vector a(10);
for (int i=0; i<a.size(); i++) {
a[i] = i;
cout << a[i] << " ";
}
cout << "\n";
vec b(10,19);
for (i=0; i<b.size(); i++) b[i+10] = a[i];
for (i=0; i<b.size(); i++) cout << b[i+10] << " ";
cout << "\n";
}

extern void exit(int);
// 1.13
void error(char* p)
{
cerr << p << "\n";
exit (1);
}

// 1.11
vector::vector(int s)
{
if (s<=0) error("bad vector size");
sz = s;
v = new int[s];
}

int& vector::operator[](int i)
{
if (i<0 || sz<=i) error("vector index out of range");
return v[i];
}

vector::~vector()
{
delete v;
}

// 1.13
int& vec::elem(int i)
{
return vector::elem(i-low);
}

vec::vec(int lb, int hb) : (hb-lb+1)
{
if (hb-lb<0) hb = lb;
low = lb;
high = hb;
}

void vector::set_size(int) { /* dummy */ }

int& vec::operator[](int i)
{
if (i<low || high<i) error("vec index out of range");
return elem(i);
}



    b1__14.cxx


#include<stream.hxx>

extern void exit( int );
extern void error( char* );

// 1.11
class vector {
int *v;
int sz;
public:
vector(int); // constructor
~vector(); // destructor
int size() { return sz; }
void set_size(int);
int& operator[](int);
int& elem(int i) { return v[i]; }
};

vector::vector(int s)
{
if (s<=0) error("bad vector size");
sz = s;
v = new int[s];
}

int& vector::operator[](int i)
{
if (i<0 || sz<=i) error("vector index out of range");
return v[i];
}

vector::~vector()
{
delete v;
}

// 1.14
class Vec : public vector {
public:
Vec(int s) : (s) {}
Vec(Vec&);
~Vec() {}
void operator=(Vec&);
void operator*=(Vec&);
void operator*=(int);
};

Vec::Vec(Vec& a) : (a.size())
{
int sz = a.size();
for (int i = 0; i<sz; i++) elem(i) =a.elem(i);
}

void Vec::operator=(Vec& a)
{
int s = size();
if (s!=a.size()) error("bad vector size for =");
for (int i =0; i<s; i++) elem(i)=a.elem(i);
}

Vec operator+(Vec& a, Vec& b)
{
int s = a.size();
if (s != b.size()) error("bad vector size for +");
Vec sum(s);
for (int i=0; i<s; i++)
sum.elem(i) = a.elem(i) + b.elem(i);
return sum;
}


void error(char* p)
{
cerr << p << "\n";
exit (1);
}

void vector::set_size(int) { }

main()
{
Vec a(10);
Vec b(10);
for (int i=0; i<a.size(); i++) a[i] = i;
b = a;
Vec c = a+b;
for (i=0; i<c.size(); i++) cout << c[i] << "\n";
}



    b1__16.cxx


#include <vector.hxx>

declare(vector,int);
implement(vector,int);

main()
{
vector(int) vv(10);
vv[2] = 3;
vv[10] = 4; // range error
}



    b2_1_3.cxx


#include <stream.hxx>

int a = 1;

void f()
{
int b = 1;
static int c = 1;
cout << " a = " << a++
<< " b = " << b++
<< " c = " << c++ << "\n";
}

main ()
{
while (a < 4) f();
}



    b2_3.cxx


#include <stream.hxx>

main()
{
int* p = new int;
cout << "sizeof(int) = " << sizeof(int) "\n";
}



    b2_3_6a.cxx


#include <stream.hxx>

extern int strlen(char*);

char alpha[] = "abcdefghijklmnopqrstuvwxyz";

main ()
{
int sz = strlen(alpha);

for (int i=0; i<sz; i++) {
char ch = alpha[i];
cout << "'" << chr(ch) << "'"
<< " = " << ch
<< " = 0" << oct(ch)
<< " = 0x" << hex(ch) << "\n";
}
}



    b2_3_6b.cxx


#include <stream.hxx>

char v[2][5] = {
'a', 'b', 'c', 'd', 'e',
'0', '1', '2', '3', '4'
};

main() {
for ( int i = 0; i<2; i++) {
for (int j = 0; j <5; j++)
cout << "v[" << i << "][" << j
<< "]=" << chr(v[i][j]) << " ";
cout << "\n";
}
}



    b2_3_7.cxx


#include <stream.hxx>

main()
{
char cv[10];
int iv[10];

char* pc = cv;
int* pi = iv;

cout << "char* " << long(pc+1)-long(pc) << "\n";
cout << "int* " << long(pi+1)-long(pi) << "\n";
}



    b2_3__10.cxx


#include <stream.hxx>

struct pair {
char* name;
int val;
};
extern int strlen(char*);
extern int strcpy(char*, char*);
extern int strcmp(char*, char*);

const large = 1024;
static pair vec[large];

pair* find(char* p)
{
for (int i=0; vec[i].name; i++)
if (strcmp(p,vec[i].name)==0) return &vec[i];

if (i== large) return &vec[large-1];

return &vec[i];
}

int& value(char* p)
{
pair* res = find(p);
if (res->name == 0) {
res->name = new char[strlen(p)+1];
strcpy(res->name,p);
res->val = 0;
}
return res->val;
}

const MAX = 256;


main ()
{
char buf [MAX];

while ( cin>>buf) value(buf)++;

for (int i=0; vec[i].name; i++)
cout << vec[i].name << ":" << vec[i].val << "\n";
}



    b3_1all.cxx


#include <xstream.hxx>
#include <ctype.h>

enum token_value {
NAME, NUMBER, END,
PLUS = '+', MINUS = '-', MUL='*', DIV='/',
PRINT=';', ASSIGN='=', LP='(', RP=')'
};

token_value curr_tok;

struct name {
char* string;
name* next;
double value;