- •Программирование и основы алгоритмизации
- •1. Понятие алгоритма
- •1.1. Определение алгоритма
- •1.2. Гост на описание блок-схем
- •1.3. Виды алгоритмов
- •2. Языки программирования
- •2.1. Определение алгоритмического языка
- •2.2. Классификация языков. История развития языков программирования
- •2.3. Выбор языка программирования
- •2.5. Арифметические и логические основы программирования
- •3. Понятие системы программирования
- •3.1. Этапы создания программ
- •3.2. Конструирование программ
- •3.3. Методы, технологии и инструментальные средства производства программных продуктов
- •4.1. Литералы
- •4.2. Встроенные типы данных
- •4.3. Операции
- •Адресные операции
- •Операции преобразования знака
- •Побитовые операции
- •Операция определения размера
- •Операции увеличения и уменьшения значения
- •Операции динамического распределения памяти
- •Операция доступа
- •Аддитивные операции
- •Мультипликативные операции
- •Операции сдвига
- •Поразрядные операции
- •Операции сравнения
- •Логические бинарные операции
- •Операция присваивания
- •Специальные формы операций присваивания
- •Операции выбора компонентов структурированного объекта
- •Операции обращения к компонентам класса
- •Операция управления процессом вычисления значений
- •Операция вызова функции
- •Операция явного преобразования типа
- •Операция индексации
- •4.5. Агрегатные типы данных
- •4.5.1. Массивы
- •4.5.2. Структуры
- •4.5.3. Поля битов
- •4.5.4. Объединения Используются для хранения значений различных типов в одной и той же области памяти, но не одновременно.
- •4.5.5. Перечисления
- •4.5.6. Переименование типов
- •Typedef имя ранее определенного типа имя нового типа1
- •Объявление typedef применяется для создания удобных распознаваемых имен часто встречающихся и для вложенных типов, а также, чтобы сделать программы переносимыми для различных целых типов.
- •4.6. Обработка символьных и строковых переменных
- •4.7. Указатели
- •4.7.1. Инициализация указателей
- •4.7.2. Операции с указателями
- •4.8. Пользовательские процедуры и функции
- •4.8.1. Перегрузка функций
- •4.8.2. Перегрузка операций
- •4.8.3. Шаблоны функций
- •4.8.4. Возврат из функции нескольких значений
- •4.9. Файлы
- •4.10. Директивы препроцессора
- •Библиографический список
Операции увеличения и уменьшения значения
++ Инкремент, или операция увеличения на единицу
Точнее, на величину, кратную единице, поскольку всё зависит от типа операнда. Операция имеет дополнительный эффект – она изменяет значение операнда. Поэтому операндом здесь может быть только леводопустимое выражение арифметического типа, либо типа указателя. В C++ различают префиксную и постфиксную операции инкремента.
В префиксной форме увеличение значения операнда производится до определения значения выражения. В результате значение выражения и значение операнда совпадают.
В постфиксной форме увеличение значения операнда производится после определения значения выражения. Поэтому значение выражения оказывается меньше значения операнда.
В выражении с префиксной операцией увеличения знак ++ записывается слева от операнда, в выражении с постфиксной операцией – справа.
Операция инкремента по отношению к указателю увеличивает значение операнда на количество байт, равное длине одного объекта этого типа, то есть действительно на величину, кратную единице.
-- Операция уменьшения значения операнда
на величину, кратную единице (декремент)
Эта операция в буквальном смысле симметрична операции инкремента. Имеет аналогичный дополнительный эффект, соответствующие ограничения для операнда (свойство леводопустимости, арифметический тип, либо тип указателя, префиксную и постфиксную формы, изменение значения адреса).
В выражении с префиксной операцией увеличения знак -- записывается слева от операнда, в выражении с постфиксной операцией – справа.
Операции динамического распределения памяти
new Операция выделения памяти
Позволяет выделить и сделать доступным участок в динамической памяти. В качестве операнда используется имя типа и, возможно, выражение инициализатор. Операция возвращает адрес размещённого в памяти объекта.
delete Операция освобождения памяти
Освобождает ранее выделенную с помощью операции new область динамической памяти. В качестве операнда используется адрес освобождаемой области памяти.
Операция доступа
:: Операция доступа
Обеспечивает обращение к именованной глобальной области памяти, находящейся вне области видимости. Эта операция применяется при работе с одноимёнными объектами, расположенными во вложенных областях действия имён. Когда объект во внутренней области действия имени скрывает одноименный объект, областью действия которого является файл.
Например:
int m; // Глобальная переменная
:::::
int mmm()
{
int m; // Локальная переменная
m = 100; // Присвоение значения локальной переменной
::m = 125; // Присвоение значения глобальной переменной m, находящейся
// вне области видимости имени
}
Операция обеспечивает доступ лишь к глобальным, естественно, ранее объявленным объектам, независимо от степени вложенности области действия. Поэтому она не обладает свойством транзитивности. Выражения вида ::(::(::m)) воспринимаются транслятором как ошибочные.
Бинарные операции
Аддитивные операции
+ Операция сложения
Операция используется с операндами арифметического типа. Один из операндов может иметь тип указателя. В любом случае значением выражения является либо сумма значений, либо сумма адреса и целочисленного значения, кратного размерам данного типа.
Результат сложения указателя с целым числом эквивалентен результату соответствующего количества операций инкремента, применённых к указателю.
Тип и значение результата выражения любой бинарной операции определяется в зависимости от принятых в C++ соглашений о преобразовании типов, о которых будет сказано ниже.
- Операция вычитания
Симметричная по отношению к операции сложения бинарная операция.