
- •Требования к оформлению графика
- •Требования к тексту программы
- •Содержание отчета
- •Варианты заданий
- •Алфавит
- •Объявление переменных. Типы данных
- •Простые типы данных
- •Структурированные типы данных
- •Константы
- •Операции Присваивание.
- •Арифметические:
- •Логические (результат – логическое значение).
- •Функции
- •Директивы препроцессора
- •Указатели
- •Приведение типов
- •Типизированные и нетипизированные указатели
- •Массивы
- •Функции работы с памятью
- •Строки.
- •Указатель на функции
- •Работа с файлами.
- •Форматированный ввод-вывод
Операции Присваивание.
x=a;
Присваивания является операцией и имеет возвращаемое значение, что позволяет использовать её в других выражениях.
A=x=9;
5+(x=4) → 9
Операция присваивания является правоассоциативной, то есть, несколько подряд записанных операций присваивания будут выполняться справа налево.
Арифметические:
a+b; a-b; a*b; a/b– соответственно сложение, вычитание, умножение, деление.
a%b - остаток от деления
ВНИМАНИЕ при делении целочисленных операндов результат также целочисленный (например 5/2 даст 2)
a<<b, a>>b - сдвиги операнда а на b двоичных разрядов влево / вправо.
-a; +a – унарные минус и плюс.
a&b - поразрядное логическое И (например, 1001b & 1100b → 1000b)
a|b - поразрядное логическое ИЛИ
a^b - поразрядное логическое исключающее ИЛИ (XOR)
~x - логическое поразрядное отрицание
Логические (результат – логическое значение).
В языке «С» результатом логической операции является целое число: «1», если результат истинен, и «0», если ложен. В языке «С++» результатом является логическое значение.
a&&b, a||b - логические И и ИЛИ
Например, 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+=a - тоже, что и x=x+a
аналогично определены операции x-=a, x*=a, x/=a, x%=a, x&=a, x|=a, x^=a, x<<=a, x>>=a.
Инкремент и декремент
++x, --x - увеличивает или уменьшает x на 1, затем подставляет в выражение.
x++ ,x-- - подставляет x в выражение, а затем увеличивает/уменьшает на 1.
Пример (в каждом примере изначально x=3):
(++x)+6 → 10, (x++)+6 → 9
(в обоих случаях в результате x=4)
(++x) + (++x) → 9
(x++) + (x++) → 7
Операция ","
возвращает крайнее правое значение.
Пример (объявлены переменные 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(short) → 4
Операторы ветвления и цикла
if
if (условие) действие1;
else действие2;
Если условие истинно, выполняется действие1, иначе выполняется действие2. Секция else необязательна.
while
while (условие) действие;
Цикл с предусловием. Действие выполняется, пока условие истинно.
Есть также цикл с постусловием:
do действие while (условие);
for
Цикл for выглядит следующим образом и в общем случае не является циклом с заданным числом повторений (в отличие, например, от ЯВУ Pascal).
for (инициализация; условие_цикла; изменение_переменых) действие;
Например,
for (x=0;x<10;x++) a+=f(x);
break
Оператор break используют для выхода из циклов for / while и ветвления switch. Для вложенных циклов выход осуществляется на один уровень.
continue
Данный оператор вызывает принудительный переход к следующему шагу цикла. Например, требуется сложить все целые числа от a до b не кратные трём.
for(int i=a, s=0; i<b; i++)
{
if (i%3==0) continue; //переходим к следующему значению i
s+=i;
}
switch
Структура записи оператора switch следующая.
switch(переменная)
{
case значение1: набор_действий1; break;
case значение2: набор_действий2; break;
…
default: набор_действий_по_умолчанию;
}
При равенстве переменной значению 1, выполняется соответствующий набор действий, который может состоять из нескольких операторов и заканчивается словом break. При несовпадении ни с одним из значений, выполняется секция default.
Формально, секции «case …: » являются метками, на которые осуществляется переход при совпадении значений. Именно поэтому после перехода на метку выполняются все команды до конца секции switch-case либо до оператора break. Этим можно пользоваться для уменьшения дублирования кода. Например, пусть задано условие: если переменная x равна 0, то вызвать функцию f1(), а если равно 2, то вызвать f1() и f2().
switch(x)
{
case 2: f2(); //не используем break, т.к. требуется выполнение и следующей команды.
case 0: f1(); //не используем break, т.к. дошли до конца.
}