
- •Общие сведения
- •Средства разработки
- •Структура программы
- •Алфавит
- •Лексемы
- •1.2. Переменные. Типы данных
- •Простые типы данных
- •Структурированные типы данных
- •1.3. Константы
- •1.4. Операции Арифметические
- •Присваивание
- •1.5. Операторы ветвления и цикла
- •1.6. Функции Описание и вызов
- •Неявно заданные параметры функции
- •Рекурсия
- •Механизм вызова функций, подставляемые функции
- •Перегрузка функций. Параметры по умолчанию
- •1.7. Указатели. Массивы. Строки Обзор
- •Приведение типов
- •Типизированные и нетипизированные указатели
- •Операции над указателями
- •Массивы
- •Многомерные массивы
- •Указатели в качестве параметров функций
- •Указатель на функцию
- •Функции работы с указателями и памятью
- •Строки.
- •1.8. Организация ввода-вывода
- •Форматированный ввод-вывод
- •1.9. Директивы препроцессора
- •1.10. Метки. Безусловный переход
- •1.11. Время жизни и область видимости переменных
- •1. 12. Многофайловые проекты
- •1.13. Введение в объектно-ориентированное программирование
- •2.3. Проблемы разработки сложных программных систем
- •2.4. Жизненный цикл программного продукта
- •Модели жц.
- •Экстремальное программирование
- •2.5. Оценка качества процессов создания программного обеспечения
- •2.6. Проектирование надёжного программного средства
- •2.7. Процессы проектирования
- •2.8. Требования, цели
- •2.9. Внешнее проектирование
- •Диаграммы потоков данных (Data Flow Diagrams).
- •Диаграммы переходов состояний (State Transition Diagrams). Функциональные диаграммы.
- •Описание структур данных
- •2.10. Проектирование архитектуры
- •2.11. Проектирование модульной структуры. Модуль
- •Внешнее проектирование модулей
- •Модульная декомпозиция
- •2.12. Кодирование.
- •2.13. Тестирование
- •2.14. Документирование
- •2.15. Проектирование пользовательского интерфейса
- •Реализация многомерных массивов
- •Очередь и стек
- •Ассоциативные массивы
- •3.3. Упорядоченные структуры данных.
- •Сортировка методом пузырька
- •Быстрая сортировка
- •3.4. Деревья
- •Бинарное дерево
- •Обход дерева
- •3.5. Множества, графы Множества
- •3.6. Строки Константные строки
- •Списковое представление строк
- •Представление массива строк
- •3.7. Библиотека stl
- •3.8. Реализация некоторых структур данных Реализация двусвязанного списка.
- •Реализация массива переменного размера:
- •Примеры программ
- •Список литературы
1.4. Операции Арифметические
Примечание: в данном разделе x,y – некоторые переменные, a,b – некоторые выражения, символ → обозначает результат операции
a+b; a-b; a*b; a/b – соответственно сложение, вычитание, умножение, деление.
a%b – остаток от деления
-a; +a – унарные минус и плюс.
Если оба операнда целочисленные, результат тоже целочисленный, если хотя бы один из операндов вещественный – результат вещественный.
ВНИМАНИЕ при делении целочисленных операндов результат также целочисленный. Например, 5/2 → 2. Следует записать «5./2» или «5/2.».
a<<b, a>>b - сдвиги операнда а на b двоичных разрядов влево / вправо.
a&b – поразрядное логическое И (например, 10012 & 11002 → 10002)
a|b – поразрядное логическое ИЛИ
a^b – поразрядное логическое исключающее ИЛИ (XOR)
~a – логическое поразрядное отрицание
Присваивание
x=a;
Присваивания является операцией и имеет возвращаемое значение, что позволяет использовать её в составных выражениях.
Примеры: y=x=9; 5+(x=4) → 9
Операция присваивания является правоассоциативной, то есть, несколько подряд записанных операций присваивания будут выполняться справа налево.
На базе арифметических операций определены особые формы присваивания, например:
x+=a – тоже, что и x=x+a.
аналогично определены операции x-=a, x*=a, x/=a, x%=a, x&=a, x|=a, x^=a, x<<=a, x>>=a.
Логические
В языке «С» результатом логической операции является целое число: «1», если результат истинен, и «0», если ложен.
a&&b, a||b - логические И и ИЛИ
!a – логическое общее отрицание
Например, 5&&3 → 1 (в значении ИСТИНА), 8||0 → 1, 5&&0 → 0.
Отношения
a<b ,a>b, a<=b,a>=b – операции, сравнивающие значения
a= =b – проверка на равенство (например, 5==3 → 0, 4==4 → 1)
a!=b – проверка на неравенство
ВНИМАНИЕ. Частой ошибкой является использование операции присваивания (=) вместо проверки на равенство (==). В этом случае компилятор выдает предупреждение, но не ошибку.
Операции работы с указателями
&x – взятие адреса
*x – разыменовывание указателя (обращение по адресу)
Более подробно данные операции будут рассмотрены в разделе «Указатели»
Инкремент и декремент
++x, --x – значение x увеличивается или уменьшается на 1, затем используется в выражении.
x++ ,x-- – предыдущее значение x используется в выражении, а затем увеличивается/уменьшается на 1.
Примеры (в каждом примере изначально x=3):
(++x)+6 → 10, (x++)+6 → 9 (в обоих случаях в результате x=4)
(++x) + (++x) → 9
(x++) + (x++) → 7
Операция «последовательное вычисление»
a,b – вычисляет выражение a, затем выражение b, возвращает b.
Пример (объявлены целочисленные переменные x,x1,x2,x3):
x = (x1=4+6, x2=x1-2, x3=x2+7)
В результате: x1=10, x2=8, x3=15, x=15.
Операция «условие»
x?a:b - возвращает a, если х истинно, иначе возвращает b.
Пример:
(5>2?4:6) → 4, (8<3?5:9) → 9, 5+(7>3?5:2) → 10
Операция sizeof
sizeof(<тип данного/имя переменной>) – возвращает размер (в байтах), занимаемый данной переменной или типом данных.
sizeof(short) → 2
Приоритет и ассоциативность операций
Операция |
Ассоциативность |
Приоритет |
приоритетные скобки |
слева направо |
17 |
x[b],f(…), x.a, x->a, ++x, --x |
слева направо |
16 |
x++, x--, sizeof(x), ~a, !a, +a, -a, &x, *a |
справа налево |
15 |
приведение типа |
справа налево |
14 |
a*b, a/b, a%b |
слева направо |
13 |
a+b, a-b |
слева направо |
12 |
a<<b, a>>b |
слева направо |
11 |
a<b, a<=b, a>b, a>=b |
слева направо |
10 |
a==b, a!=b |
слева направо |
9 |
a&b |
слева направо |
8 |
a^b |
слева направо |
7 |
a|b |
слева направо |
6 |
a&&b |
слева направо |
5 |
a||b |
слева направо |
4 |
a?b:c |
справа налево |
3 |
все виды присваивания |
справа налево |
2 |
a,b |
справа налево |
1 |
Большое количество уровней приоритетов операций позволяет строить достаточно сложные выражения без использования скобок. Но для улучшения читаемости скобки всё-таки рекомендуется использовать.