
- •Линейные и разветвляющиеся вычислительные процессы Краткие теоретические сведения
- •Классификация данных
- •Декларирование объектов
- •Структура программы
- •Константы
- •Операции Операции выражения
- •Арифметические операции
- •Операция присваивания
- •Сокращенная запись операции присваивания
- •X##; - постфиксную.
- •Преобразование типов операндов арифметических операций
- •Операция приведения типа
- •Операции сравнения
- •Логические операции
- •Побитовые логические операции, операции над битами
- •Операция «,» (запятая)
- •Функции вывода информации
- •Функции ввода информации
- •Ввод - вывод потоками
- •Стандартные математические функции
- •Синтаксис операторов языка Си
- •Операция присваивания
- •Условные операторы
- •If (условие ) оператор1;
- •If (условие1) оператор1;
- •Условная операция "? :"
- •Оператор выбора switch
- •Программирование циклических вычислительных процессов
- •Циклические операторы while и do–while
- •Вложенные циклы
- •Программирование циклических вычислительных процессов с использованием одномерных массивов и строк Краткие теоретические сведения
- •Строки, как одномерные массивы символов
- •Указатели и операции над адресами
- •Операции над указателями (адресная арифметика)
- •Связь указателей и массивов
- •Пример 1: Упорядочить по алфавиту массив строк (не более 20) длиной не более 10 символов в каждой:
- •Многомерные массивы, динамическое распределение памяти Краткие теоретические сведения
- •Массивы указателей
- •Указатели на указатели
- •Динамическое размещение данных
- •Проверить, является ли введенная строка полиндромом (справа-налево читается также как и слева-направо).
- •Функции пользователя Краткие теоретические сведения
- •Декларация функций.
- •Вызов функции.
- •Изменение значений параметров.
- •Область действия переменных
- •Классы памяти.
- •Рекурсивные функции.
- •Операция typedef
- •Указатели на функции
- •Примеры работы с функциями
- •Программирование алгоритмов с использованием структур Краткие теоретические сведения Структуры
- •Декларация структурного типа данных
- •Создание структурных переменных
- •Обращение к полям структур
- •Вложенные структуры
- •Использование typedef
- •Массивы структур
- •Размещение структурных переменных в памяти
- •Пример на использование структур
Операции Операции выражения
Выражения используются для вычисления значений (определенного типа) и состоят из операндов, операций и скобок. Каждый операнд может быть, в свою очередь, выражением. Знак операции – это один или более символов, определяющих действие над операндами. Внутри знака операции пробелы не допускаются.
Операции делятся на унарные, бинарные и тернарные - по количеству участвующих в них операндов; выполняются в соответствии с приоритетами - для изменения порядка выполнения операций используются круглые скобки. Большинство операций выполняется слева направо, например,
a+b+c → (a+b)+c.
Исключение: унарные операции, операции присваивания и тернарная условная операция (?:) - справа налево.
Полный список операций приводится в прил. 2.
Арифметические операции
Арифметические операции - бинарные, их обозначения:
+ (сложение);
- (вычитание);
/ (деление, дляint операндов - с отбрасыванием остатка);
* (умножение);
% (остаток от деления целочисленных операндов со знаком первого операнда - деление «по модулю»).
Операндами традиционных арифметических операций (+ - * /) могут быть константы, переменные, функции, элементы массивов, указатели, любые арифметические выражения.
Порядок выполнения операций:
1) выражения в круглых скобках;
2) функции (стандартные математические, функции пользователя);
3) операции * / (выполняются слева направо);
4) операции - + (слева направо).
Унарные операции +,– (знак числа) обладают самым высоким приоритетом, определены только для целых и вещественных операндов, «+» носит только информационный характер, «–» меняет знак операнда на противоположный. Таким образом, т.к. операции *, /, % обладают высшим приоритетом над операциями +, -, при записи сложных выражений нужно использовать общепринятые математические правила:
x+yz
-↔x+y*z
- a
/(b+с)
.
Операция присваивания
Формат операции присваивания:
идентификатор = <выражение>;
Присваивание значения в языке Cи в отличие от традиционной интерпретации рассматривается как выражение имеющее значение левого операнда после присваивания. Таким образом, присваивание может включать несколько операций присваивания, изменяя значения нескольких операндов, например:
int i, j, k;
float x, y, z;
...
i = j = k = 0; ↔ k = 0, j = k, i = j;
x = i+(y = 3) - (z = 0); ↔ z = 0, y = 3, x = i + y - z;
Левым операндом операции присваивания может быть только именованная либо косвенно адресуемая указателем переменная. Примеры недопустимых выражений:
а) присваивание константе: 2 = x+y;
б) присваивание функции: getch() =i;
в) присваивание результату операции: (i+1) = 2+y;
Сокращенная запись операции присваивания
В языке Cи используются два вида сокращений записи операции присваивания:
a) вместо записи v =v #e;
где # - арифметическая операция (операция над битовым представлением операндов), рекомендуется использовать запись v #=e; например,i = i + 2; ↔i += 2; (знаки операций без пробелов);
б) вместо записи x =x # 1;
где # - символы, обозначающие операцию инкремента (+), либо декремента (-), x - целочисленная переменная (переменная-указатель), рекомендуется использовать запись:
##x; - префиксную
или