1. Какие этапы составляют предмашинную подготовку задачи?
2. Что такое алгоритм решения?
3. В каком виде выполняются алгоритмы?
4. Как выполняется схема алгоритма?
5. Что такое программа решения?
2.ЯЗЫК ПРОГРАММИРОВАНИЯ С++
2.1 Ключевые слова C++
| __asm
| __es
| __interrupt
| short
|
| _asm
| _es
| _interrupt
| signed
|
| asm
| __export
| interrupt
| sizeof
|
| auto
| _export
| __loadds
| __ss
|
| break
| extern
| _loadds
| _ss
|
| case
| __far
| long
| static
|
| catch
| _far
| __near
| __stdcall
|
| __cdecl
| far
| _near
| _stdcall
|
| _cdecl
| __fastcall
| near
| struct
|
| cdecl
| _fastcall
| new
| switch
|
| char
| __finally
| operator
| template
|
| class
| float
| __pascal
| this
|
| const
| for
| _pascal
| __thread
|
| continue
| friend
| pascal
| throw
|
| __cs
| goto
| private
| __try
|
| _cs
| __huge
| protected
| try
|
| default
| _huge
| public
| typedef
|
| delete
| huge
| register
| union
|
| do
| if
| return
| unsigned
|
| double
| __import
| __rtti
| virtual
|
| __ds
| _import
| __saveregs
| void
|
| _ds
| import
| _saveregs
| volatile
|
| else
| inline
| __seg
| while
|
| enum
| int
| _seg
|
|
2.2. Расширения C++ по сравнению с Си стандарта ANSI
| __asm
| __except
| __import (2)
| pascal
|
| _asm
| __export
| _import (2)
| __saveregs (1)
|
| __cdecl
| __far (1)
| _interrupt (1)
| _saveregs (1)
|
| _cdecl
| _far (1)
| interrupt (1)
| __seg (1)
|
| cdecl
| far (1)
| __loadds (1)
| _seg (1)
|
| __cs (1)
| __fastcall
| _loadds (1)
| ___ss (1)
|
| _cs (1)
| _fastcall
| __near (1)
| __ss (1)
|
| __ds (1)
| __finally
| _near (1)
| __rtti
|
| _ds (1)
| __huge (1)
| near (1)
| __thread (2)
|
| __es (1)
| _huge (1)
| __pascal
| __try
|
| _es (1)
| huge (1)
| _pascal
|
|
(1) - доступны только для 16-разрядных компиляторов
(2) - доступны только для 32-разрядных компиляторов
2.3 Ключевые слова, специфические для C++
| asm
| friend
| protected
| try
|
| catch
| inline
| public
| virtual
|
| class
| new
| template
| __rtti
|
| delete
| operator
| this
|
|
| private
| throw
|
|
|
2.4 Регистровые псевдопеременные Borland C++
| _AH
| _CL
| _EAX (*)
| _ESP
|
| _AL
| _CS
| _EBP (*)
| _FLAGS
|
| _AX
| _CX
| _EBX (*)
| _FS
|
| _BH
| _DH
| _ECX (*)
| _GS (*)
|
| _BL
| _DI
| _EDI (*)
| _SI
|
| _BP
| _DL
| _EDX (*)
| _SP
|
| _BX
| _DS
| _ES
| _SS
|
| _CH
| _DX
| _ESI (*)
|
|
(*) - для 32-разрядного компилятора эти псевдопеременные всегда доступны. 16-разрядный компилятор может их использовать только при указании параметра генерации инструкций 80386.
2.5 Идентификаторы
Характерным для C++ и для других реализаций языка является учет регистра букв в идентификаторах. Последние могут содержать буквы от A до Z и от a до z, символ подчеркивания (_) и цифры от 0 до 9 и должны начинаться с буквы. Константы
Константами называются лексемы, представляющие собой фиксированные числовые или символьные значения. Borland C++ поддерживает четыре класса констант: константы с плавающей точкой, целочисленные константы, константы перечислимого типа и символьные константы (включая строковые).
Целочисленные константы представлены десятичным, восьмиричным и шестнадцатиричным форматом.
Символьные константы записываются одним или более символами, заключенными в одинарные кавычки, например 'F', '=', '\n'.
2.6 Описание операций
Операциями называются лексемы, вызывающие некоторые вычисления с переменными и прочими объектами, указанными в выражении. Borland C++ имеет особенно богатый набор операций, включающий в себя помимо обычных арифметических и логических операций средства манипуляции с данными на битовом уровне, доступа к элементам структур и объединений, а также операции с указателями (ссылка и разыменование).
2.6.1 Унарные операции
| Операция
| Смысл
|
| &
| Операция адресации
|
| *
| Операция обращения по ссылке
|
| +
| Унарный плюс
|
| -
| Унарный минус
|
| ~
| Поразрядное дополнение (дополнение до единицы)
|
| !
| Логическое отрицание
|
| ++
| Префикс: прединкрементация; Постфикс: постинкрементация
|
| --
| Префикс: преддекрементация; Постфикс: постдекрементация
|
2.6.2 Бинарные операции
| Операция
| Смысл
|
| Операции типа сложения
| +
| Бинарный плюс (сложение)
|
| -
| Бинарный минус (вычитание)
|
| Операции типа умножения
| *
| Умножение
|
| /
| Деление
|
| %
| Остаток от деления
|
| Операции сдвига
| <<
| Сдвиг влево
|
| >>
| Сдвиг вправо
|
| Поразрядные операции
| &
| Поразрядное И
|
| ^
| Поразрядное исключающее ИЛИ
|
| |
| Поразрядное включающее ИЛИ
|
| Логические операции
| &&
| Логическое И
|
| ||
| Логическое ИЛИ
|
| Операции присваивания
| =
| Присваивание
|
| *=
| Присвоить произведение
|
| /=
| Присвоить частное
|
| %=
| Присвоить остаток
|
| +=
| Присвоить сумму
|
| -=
| Присвоить разность
|
| <<=
| Присвоить сдвиг влево
|
| >>=
| Присвоить сдвиг вправо
|
| &=
| Присвоить поразрядное И
|
| ^=
| Присвоить поразрядное исключающее ИЛИ
|
| |=
| Присвоить поразрядное ИЛИ
|
| Операции отношения
| <
| Меньше
|
| >
| Больше
|
| <=
| Меньше или равно
|
| >=
| Больше или равно
|
| Операции равенства
| ==
| Равно
|
| !=
| Не равно
|
| Операции выбора элемента
| .
| Непосредственный выбор элемента
|
| ->
| Косвенный выбор элемента
|
| Операции с элементами класса
| ::
| Доступ/определение области действия
|
| .*
| Обращение через указатель к элементу класса
|
| ->*
| Обращение через указатель к элементу класса
|
| Условные операции
| a ? x : y
| "Если a, то x, иначе - y"
|
| Операция запятой
| ,
| Вычислить, например, a, b, c слева - направо
|
2.6.3 Пунктуаторы
В C++ пунктуаторы, также называемые разделителями, определяются следующим образом:
пунктуатор: одно из [ ] ( ) { } , ; : ... * = #
2.6.4 Ассоциативность и приоритеты операций Borland C++
| Операции
| Ассоциативность
|
| () [] -> :: . ! ~ - ++ -- & * (приведение типа)
| Слева-направо
|
| sizeof new delete
| Справа-налево
|
| .* ->*
| Слева-направо
|
| * / %
| Слева-направо
|
| + -
| Слева-направо
|
| << >>
| Слева-направо
|
| < <= > >=
| Слева-направо
|
| == !=
| Слева-направо
|
| &
| Слева-направо
|
| ^
| Слева-направо
|
| |
| Слева-направо
|
| &&
| Слева-направо
|
| ||
| Слева-направо
|
| ?:(условное выражение)
| Справа-налево
|
| = *= /= := += -= &= ^= |= <<= >>=
| Справа-налево
|
| ,
| Слева-направо
|
2.6.5 Размер памяти и диапазон значений стандартных типов данных СИ/СИ++
| №
п/п
|
Тип переменной
| Объём памяти
| Диапазоны представления чисел
| Спецификатор
|
| бит
| байт
| min
| max
|
|
| char
|
|
| -128
|
| %d %c %s
|
|
| unsigned char
|
|
|
|
| %c %s
|
|
| short
|
|
| -32768
|
| %d %o %x
|
|
| int[1]
|
|
| -32768
|
| %d %o %x
|
|
| unsigned int
|
|
|
|
| %u
|
|
| long
|
|
| -2147483648
|
| %ld %lo %lx
|
|
| unsigned long
|
|
|
|
| %lx %lu
|
|
| float
|
|
| 3,4 Е-38
| 3,4 Е+38
| %f %e %g
|
|
| double
|
|
| 1,7 Е-308
| 1,7 Е+308
| %le %lf
|
|
| long double
|
|
| 3,4 Е-4932
| 3,4 Е+4932
| %lf %le %lg
|
|
| указатель
|
|
|
|
| %lu
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|