Основные операции. Базовые управляющие конструкции структурного программирования. (Лекция 2.2)

Содержание

Слайд 2

Повторение Вопрос 1. Укажите НЕВЕРНЫЕ идентификаторы и поясните почему R025 d_25d 4ab Угол PS/2

Повторение

Вопрос 1. Укажите НЕВЕРНЫЕ идентификаторы и поясните почему
R025
d_25d
4ab
Угол
PS/2

Слайд 3

Повторение Вопрос 2. Назовите тип константы 'A‘ true "А” 0xA 0e1

Повторение

Вопрос 2. Назовите тип константы
'A‘
true
"А”
0xA
0e1

Слайд 4

Слайд 5

ОТВЕТ Вопрос 1. 3 – начинается с цифры 4 – нельзя

ОТВЕТ

Вопрос 1.
3 – начинается с цифры
4 – нельзя использовать русские буквы
5

– нельзя использовать знак “/”
Вопрос 2.
символьная
логическая
строковая
целая в 16-ой системе
вещественная
Слайд 6

Состав языка (формальные языки) Символы - набор неделимых знаков, с помощью

Состав языка (формальные языки)

Символы - набор неделимых знаков, с помощью которых

пишутся все тексты;
лексемы – минимальная единица языка, имеющая самостоятельный смысл;
выражение – задает правило вычисления некоторого значения;
оператор – задает законченное описание некоторого действия.
Слайд 7

Выражение Выражение – это конструкция, составленная из констант, переменных, знаков операций,

Выражение

Выражение – это конструкция, составленная из констант, переменных, знаков операций, функций

и скобок.
Основное назначение выражения:
определить порядок вычисления некоторого выражения;
найти значение выражения.
Если результатом вычисления выражения является число, то данное выражение – арифметическое.
Если результатом будет значение «истина» или «ложь», то это логическое выражение.
Слайд 8

Операции Операции можно разделить на три группы: УНАРНЫЕ : требуют один

Операции

Операции можно разделить на три группы:
УНАРНЫЕ :
требуют один объект:
<оп>

<операнд>
<операнд> <оп>
БИНАРНЫЕ
требуют двух объектов: < операнд> <оп> <операнд>
ТЕРНАРНЫЕ
Требуют трех объектов (условная операция)
Слайд 9

Приоритет выполнения операций Унарные операции Бинарные и тернарная операции Арифметические операции

Приоритет выполнения операций

Унарные операции
Бинарные и тернарная операции
Арифметические операции
Операции сравнения
Побитовые операции
Логические операции
Условная

операция
Операции присваивания
Последовательное вычисление
Слайд 10

Унарные операции ++ увеличение на 1 – – уменьшение на 1

Унарные операции

++ увеличение на 1
– – уменьшение на 1
sizeof размер
~ поразрядное отрицание
! логическое отрицание
– унарный минус
+ унарный

плюс
& взятие адреса
* разадресация
new выделение памяти
delete освобождение памяти
(<тип>) преобразование типа
Слайд 11

Арифметические операции ++ (инкремент) - увеличивает значение переменной на единицу (+1)

Арифметические операции

++ (инкремент) - увеличивает значение переменной на единицу (+1)
--

(декремент) - уменьшает значение переменной на единицу (–1)
Применяются только к переменным!
Префиксная форма: ++a; --b;
Суффиксная (постфиксная) форма: c++; d--;
Слайд 12

Инкремент. Декремент Префиксная форма: сначала значение переменной увеличивается на единицу, а

Инкремент. Декремент

Префиксная форма: сначала значение переменной увеличивается на единицу, а затем

измененное значение подставляется в выражение.
Суффиксная форма: в выражение подставляется старое значение переменной и только после этого значение переменной увеличивается на единицу.
Пример 1
int a=3, b=5, с;
c=(a++)+(++b); // c=3+6=9; a=4; b=6
Пример 2
int a=3, b=5,c;
c=(a--)+(--b); // c=3+4=7; a=2; b=4
Слайд 13

Арифметические операции Мультипликативные операции * умножение / деление % остаток от

Арифметические операции

Мультипликативные операции
* умножение
/ деление
% остаток от деления
Аддитивные операции
+ сложение
– вычитание
Операции сдвига
>> сдвиг вправо
<< сдвиг влево

Слайд 14

Арифметические операции. Деление Вещественное деление: если один из операндов имеет вещественный

Арифметические операции. Деление

Вещественное деление: если один из операндов имеет вещественный тип.
1.2/0.4=3.0 //

Вещественное деление (double):
12/0.4=30.0
1.2/4=0.3
Деление нацело (аналог div в языке Паскаль):
12/4=3 (int)
1/4=0
12/5=2
Пример. Вычислить 1/n.
n=10;
h=1/n; // неверно!
h=1.0/n; // верно
Слайд 15

Арифметические операции % остаток от деления нацело (аналог mod в Паскале)

Арифметические операции

% остаток от деления нацело (аналог mod в Паскале)
Применяется только

к операндам целого типа.
При выполнении операции деления если знаки делимого и делителя совпадают, то результат – положительный, и ответ будет отрицательным, если знаки разные.
5%2=1 5/2=2
-5%2=-1 -5/2=-2
5%-2=1 5/-2=-2
-5%-2=-1 -5/-2=2
Слайд 16

Операции сравнения Сравнение на «больше-меньше» > >= Сравнение на «равенство-неравенство» == //равно != //не равно

Операции сравнения

Сравнение на «больше-меньше»
>
>=
<
<=
Сравнение на «равенство-неравенство»
== //равно
!= //не равно

Слайд 17

Побитовые операции Поразрядная конъюнкция (И) & Поразрядное исключающее ИЛИ ^ Поразрядная дизъюнкция (ИЛИ) |

Побитовые операции

Поразрядная конъюнкция (И)
&
Поразрядное исключающее ИЛИ
^
Поразрядная дизъюнкция (ИЛИ)
|

Слайд 18

Логические операции Логическое И && Логическое ИЛИ ||

Логические операции

Логическое И
&&
Логическое ИЛИ
||

Слайд 19

Условная операция (тернарная) ? :

Условная операция (тернарная)

<условие> ? <выр.1> : <выр.2>

Слайд 20

Операции присваивания = *= /= %= += –= >>= &= ^= |=

Операции присваивания

=
*=
/=
%=
+=
–=
<<=
>>=
&=
^=
|=

Слайд 21

Оператор присваивания Общая структура: Арифметическое выражение может включать константы (постоянные) имена

Оператор присваивания

Общая структура:

Арифметическое выражение может включать
константы (постоянные)
имена переменных
знаки арифметических операций:
+

- * / %
вызовы функций
круглые скобки ( )

умножение

деление

остаток от деления

имя переменной = выражение;

куда записать

что

Слайд 22

Сокращенная запись операций в Си инкремент декремент a = a +

Сокращенная запись операций в Си

инкремент

декремент

a = a + 1;

a++;

a = a

+ b;

a += b;

a = a - 1;

a--;

a = a – b;

a -= b;

a = a * b;

a *= b;

a = a / b;

a /= b;

a = a % b;

a %= b;

Слайд 23

Последовательное вычисление

Последовательное вычисление

Слайд 24

Операции присваивания int a=55; // операция присваивания int x, y, z;

Операции присваивания

int a=55; // операция присваивания
int x, y, z;
x = y = z = a*5;
В выражении

используется два раза операция присваивания и один раз оператор присваивания.
Операция присваивания выполняется справа налево (правоассоциативная):
Слайд 25

Правила записи выражений Все символы, входящие в выражение, записываются в строку.

Правила записи выражений

Все символы, входящие в выражение, записываются в строку.
Проставляются все

знаки операций.
При записи выражений учитываются приоритеты (ранги) операций.
Для изменения приоритета последовательности операций используются круглые скобки.
Замечание:
Если в выражениях встречаются переменные и константы разных типов, то производится автоматическое преобразование типов.
Слайд 26

Порядок выполнения операций вычисление выражений в скобках умножение, деление, % слева

Порядок выполнения операций

вычисление выражений в скобках
умножение, деление, % слева направо
сложение и

вычитание слева направо

2 3 5 4 1 7 8 6 9
z = (5*a*c+3*(c-d))/a*(b-c)/ b;

Слайд 27

Правила преобразования типов Преобразование типов не происходит, если оба операнда имеют

Правила преобразования типов

Преобразование типов не происходит, если оба операнда имеют одинаковый

тип.
При наличии разных типов величина с младшим типом приводится к величине старшего типа, исключение составляют операция присваивания и оператор присваивания.
При выполнении операций присваивания величина, полученная в правой части, преобразуется к типу переменной, стоящей в левой части.
Пример:
int x;
float a=2.55, c=1.75; //double преобразуется в
// float
x=a+c;
cout<
Слайд 28

Преобразование типов Преобразование целого типа (от младшего к старшему) char →

Преобразование типов

Преобразование целого типа (от младшего к старшему)
char → short → int → long int
Преобразование вещественного

типа (от младшего к старшему)
float → double → long double
Слайд 29

Как выполнять операции одинакового приоритета? Слева направо (?) все операции кроме…

Как выполнять операции одинакового приоритета?

Слева направо (?) все операции кроме…
Справа налево

(?)
Унарные операции
Тернарная операция
Операции присваивания
Слайд 30

Задача: поменять местами значения переменных a и b Используем дополнительную переменную

Задача: поменять местами значения переменных a и b

Используем дополнительную переменную (tmp).
tmp

= a;
a = b;
b = tmp;

Без использования дополнительной переменной.
a = a + b;
b = a – b;
a = a – b;

Слайд 31

Вычислить min(a,b) if (a min = a min = (a = b)*b; Еще способы ???

Вычислить min(a,b)

if (amin = a

b;
min = (a < b)*a + (a >= b)*b;
Еще способы ???
Слайд 32

Математические функции #include |x| fabs(x) sin x sin(x) cos x cos(x)

Математические функции

#include
|x| fabs(x)
sin x sin(x)
cos x cos(x)
tg x tan(x)
ex exp(x)
ln x log(x)
xy pow(x,y)
sqrt(x)

Возможности округления:
ceil(x) округление

вверх (ceil(4.3) =5,
ceil(- 4.3)=-4)
floor(x) округление вниз (floor(4.9) =4,
floor(- 4.9) = -5)
(int)x приведение к типу int, дробная часть отбрасывается
(int)4.7 = 4, int(-4.7) = -4
Слайд 33

Базовые конструкции структурного программирования

Базовые конструкции структурного программирования

Слайд 34

Условный оператор if (условие) оператор_1; else оператор_2; Здесь условие - это

Условный оператор

if (условие) оператор_1; else оператор_2;
Здесь условие - это логическое выражение,

переменная или константа.
Сначала вычисляется значение выражения, записанного в виде условия.
Если оно имеет значение истина (true, не равно 0), выполняется оператор_1.
В противном случае (значение ложное (false), равно 0 ) оператор_2.
Слайд 35

Условный оператор Если в задаче требуется, чтобы в зависимости от значения

Условный оператор

Если в задаче требуется, чтобы в зависимости от значения условия

выполнялся не один оператор, а несколько, их необходимо заключить в фигурные скобки, как составной оператор.
if (условие)
{
оператор_1;
оператор_2;
… }
else
{
оператор_1;
оператор_2; …
}
Альтернативная ветвь else в условном операторе может отсутствовать, если в ней нет необходимости.
Слайд 36

Условный оператор if ( a > b ) { с =

Условный оператор

if ( a > b )
{
с =

a;
a = b;
b = c;
}
Слайд 37

Вложенные условные операторы if ( a > b ) printf("Андрей старше");

Вложенные условные операторы

if ( a > b )
printf("Андрей старше");
else

if

( a == b )
printf("Одного возраста");
else
printf("Борис старше");

вложенный условный оператор

Задача: в переменных a и b записаны возрасты Андрея и Бориса. Кто из них старше?

Слайд 38

Задача Даны три целых числа различных между собой: a,b и с.

Задача

Даны три целых числа различных между собой: a,b и с.
Перераспределить их

значения таким образом, чтобы в переменной а оказалось самое маленькое из значений, в с – самое большое, в переменную b поместить оставшееся.
Разрешается использовать только одну дополнительную переменную.
Слайд 39

Оператор switch switch ( ) { case конст.выр.1: [ ] case

Оператор switch

switch (<выражение>)
{
case конст.выр.1: [<список операторов 1>]
case

конст.выр.2: [<список операторов 2>]

case конст.выр.n: [<список операторов n>]
[default: <операторы>]
}
Слайд 40

Множественный выбор if (m == 1) printf("январь"); if (m == 2)

Множественный выбор

if (m == 1) printf("январь");
if (m == 2) printf("февраль");
...
if (m

== 12) printf("декабрь");

switch ( m ) {
case 1: printf("январь");
break;
case 2: printf("февраль");
break;
...
case 12: printf("декабрь");
break;
default: printf("ошибка");
}

Слайд 41

Множественный выбор switch ( m ) { case 1: printf("январь"); case

Множественный выбор

switch ( m ) {
case 1: printf("январь");
case

2: printf("февраль");
case 3: printf("март");
default: printf("ошибка");
}

Если не ставить break:

февральмартошибка

При m = 2: