Основные операторы. Лекция 2 по алгоритмизации и программированию

Содержание

Слайд 2

Знаки операций Унарные

Знаки операций Унарные

Слайд 3

Знаки операций Бинарные

Знаки операций Бинарные

Слайд 4

Знаки операций Бинарные

Знаки операций Бинарные

Слайд 5

Знаки операций Бинарные

Знаки операций Бинарные

Слайд 6

Знаки операций Бинарные

Знаки операций Бинарные

Слайд 7

Знаки операций Тернарная Выражение1 ? Выражение2 : Выражение3; Первым вычисляется значение

Знаки операций Тернарная

Выражение1 ? Выражение2 : Выражение3;
Первым вычисляется значение выражения1.
Если оно

истинно, то вычисляется значение выражения2, которое становится результатом.
Если при вычислении выражения1 получится 0, то в качестве результата берется значение выражения3.
x<0 ? -x : x ; //вычисляется абсолютное значение x.
Слайд 8

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

Выражения

Из констант, переменных, разделителей и знаков операций можно конструировать выражения.
Каждое

выражение состоит из одного или нескольких операндов, символов операций и ограничителей.
Если выражение формирует целое или вещественное число, то оно называется арифметическим.
Пара арифметических выражений, объединенная операцией сравнения, называется отношением.
Слайд 9

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

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

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

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

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

умножение

деление

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

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

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

что

Слайд 10

Сокращенная запись операций в Си инкремент декремент 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;

Слайд 11

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

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

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

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

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

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

Слайд 12

Стандартные функции abs(x) — модуль целого числа fabs(x) — модуль вещественного

Стандартные функции

abs(x) — модуль целого числа
fabs(x) — модуль вещественного числа
sqrt(x) —

квадратный корень
sin(x) — синус угла, заданного в радианах
cos(x) — косинус угла, заданного в радианах
exp(x) — экспонента ех
ln(x) — натуральный логарифм
pow(x,y) — xy: возведение числа x в степень y
floor(x) — округление «вниз»
ceil(x) — округление «вверх»

#include

подключить математическую библиотеку

float x;
x = floor(1.6);// 1
x = ceil(1.6); // 2

x = floor(-1.6);//-2
x = ceil(-1.6); //-1

Слайд 13

2. Составные операторы 2.1. Составные операторы 2.2. Блоки { n++; //это

2. Составные операторы

2.1. Составные операторы

2.2. Блоки

{
n++; //это составной оператор
summa+=n;
}

{
int n=0;
n++; //это блок
summa+=n;
}

Слайд 14

Разветвляющиеся алгоритмы Задача. Ввести два целых числа и вывести на экран

Разветвляющиеся алгоритмы

Задача. Ввести два целых числа и вывести на экран наибольшее

из них.
Идея решения: надо вывести на экран первое число, если оно больше второго, или второе, если оно больше первого.
Особенность: действия исполнителя зависят от некоторых условий (если … иначе …).

Алгоритмы, в которых последовательность шагов зависит от выполнения некоторых условий, называются разветвляющимися.

Слайд 15

Условный оператор Задача: изменить порядок действий в зависимости от выполнения некоторого

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

Задача: изменить порядок действий в зависимости от выполнения некоторого условия.

полная

форма ветвления

if ( a > b )
M = a;
else
M = b;

Слайд 16

Условный оператор: неполная форма неполная форма ветвления M = a; if

Условный оператор: неполная форма

неполная форма ветвления

M = a;
if ( b

> a )
M = b;
Слайд 17

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

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

if ( a > b )
{
с =

a;
a = b;
b = c;
}

4

6

?

4

6

4

a

b

3

2

1

c

Слайд 18

Знаки отношений > >= == != больше, меньше больше или равно

Знаки отношений

>

<

>=

<=

==

!=

больше, меньше

больше или равно

меньше или равно

равно

не равно

Слайд 19

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

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

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

if

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

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

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

Слайд 20

Задача: набор сотрудников в возрасте 25-40 лет (включительно). начало ввод x

Задача: набор сотрудников в возрасте 25-40 лет (включительно).

начало

ввод x

'подходит'

да

нет

x >= 25

и
x <= 40?

'не подходит'

Слайд 21

Сложные условия Задача: набор сотрудников в возрасте 25-40 лет (включительно). if

Сложные условия

Задача: набор сотрудников в возрасте 25-40 лет (включительно).

if ( )


printf("подходит");
else
printf("не подходит");

&&

||

!

v >= 25 && v <= 40

сложное условие

«И»

«ИЛИ»

«НЕ»

Слайд 22

Сложные условия Порядок выполнения сложных условий: выражения в скобках ! (НЕ,

Сложные условия

Порядок выполнения сложных условий:
выражения в скобках
! (НЕ, отрицание)
<, <=,

>, >=
==, !=
&& (И)
|| (ИЛИ)
Пример:
2 1 6 3 5 4
if ( !(a > b) || c != d && b == a)
{
...
}
Слайд 23

Задачи «B»: Напишите программу, которая получает номер месяца и выводит соответствующее

Задачи

«B»: Напишите программу, которая получает номер месяца и выводит соответствующее ему

время года или сообщение об ошибке.
Пример:
Введите номер месяца:
5
Весна.
Пример:
Введите номер месяца:
15
Неверный номер месяца.
Слайд 24

Задачи «C»: Напишите программу, которая получает возраст человека (целое число, не

Задачи

«C»: Напишите программу, которая получает возраст человека (целое число, не превышающее

120) и выводит этот возраст со словом «год», «года» или «лет». Например, «21 год», «22 года», «25 лет».
Пример:
Введите возраст: 18
Вам 18 лет.
Пример:
Введите возраст: 21
Вам 21 год.
Пример:
Введите возраст: 22
Вам 22 года.
Слайд 25

Множественный выбор 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("ошибка");
}

Слайд 26

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

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

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

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

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

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

При m = 2:

Слайд 27

Множественный выбор char c; c = getch(); switch(c) { case 'а':

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

char c;
c = getch();
switch(c)
{
case 'а':
printf("антилопа\n");
printf("Анапа\n");

break;
...
case 'я':
printf("ягуар\n");
printf("Якутск\n");
break;
default: printf("Ошибка!");
}

несколько операторов в блоке

ждать нажатия клавиши, получить её код

Слайд 28

3. Операторы выбора 3.1. Условный оператор if (выражение-условие) оператор; //сокращенная форма

3. Операторы выбора

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

if (выражение-условие) оператор; //сокращенная форма

if (выражение-условие) оператор;
else

оператор; //полная форма
Слайд 29

Условный оператор if ( условие ) { // что делать, если

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

if ( условие )
{
// что делать, если

условие верно
}
else
{
// что делать, если условие неверно
}

Особенности:
вторая часть (else …) может отсутствовать (неполная форма)
если в блоке один оператор, можно убрать { }

Слайд 30

Выражение-условие : арифметическое выражение, отношение, логическое выражение. Пример 1 if (x

Выражение-условие :
арифметическое выражение,
отношение,
логическое выражение.

Пример 1
if (xПример 2
if

(d>=0)
{
x1=(-b-sqrt(d))/(2*a);
x2=(-b+sqrt(d))/(2*a);
cout<< “\nx1=”<}
else cout<<“\nРешения нет”;
Слайд 31

3.2. Переключатель switch (выражение) { case константа1 : оператор1 ; case

3.2. Переключатель

switch (выражение)
{
case константа1 : оператор1 ;
case константа2 : оператор2 ;
.

. . . . . . . . . .
[default: операторы;]
}
switch (выражение)
{
case константа1 :
case константа2 : оператор1 ;
case константа3 : оператор2 ;
. . . . . . . . . . .
[default: операторы;]
}
Слайд 32

Пример #include using namespace std; void main() { int i; cout

Пример
#include
using namespace std;
void main()
{
int i;
cout<<"\nEnter the number";
cin>>i;
switch(i)
{
case 1:cout<<"\nthe number is

one";
case 2:cout<<"\n2*2="< case 3: cout<<"\n3*3="< case 4: cout<<"\n"< default:cout<<"\nThe end of work";
}
}
Слайд 33

Циклические алгоритмы

Циклические алгоритмы

Слайд 34

Что такое цикл? Цикл – это многократное выполнение одинаковых действий. Два

Что такое цикл?

Цикл – это многократное выполнение одинаковых действий.

Два вида циклов:
цикл

с известным числом шагов (сделать 10 раз)
цикл с неизвестным числом шагов (делать, пока не надоест)

Задача. Вывести на экран 10 раз слово «Привет».

Слайд 35

Повторения в программе printf("Привет\n"); printf("Привет\n"); ... printf("Привет\n");

Повторения в программе

printf("Привет\n");
printf("Привет\n");
...
printf("Привет\n");

Слайд 36

Блок-схема цикла начало конец да нет тело цикла

Блок-схема цикла

начало

конец

да

нет

тело цикла

Слайд 37

Как организовать цикл? счётчик = 0 пока счётчик printf("Привет\n"); увеличить счётчик

Как организовать цикл?

счётчик = 0
пока счётчик < 10
printf("Привет\n");
увеличить счётчик

на 1

счётчик = 10
пока счётчик > 0
printf("Привет\n");
уменьшить счётчик на 1


результат операции автоматически сравнивается с нулём!

Слайд 38

Цикл с условием Задача. Определить количество цифр в десятичной записи целого

Цикл с условием

Задача. Определить количество цифр в десятичной записи целого положительного

числа, записанного в переменную n.

счётчик = 0
пока n > 0
отсечь последнюю цифру n
увеличить счётчик на 1

n = n / 10;

счётчик = счётчик + 1;

счётчик ++;

Слайд 39

Цикл с условием count = 0; while ( ) { }

Цикл с условием

count = 0;
while ( )
{
}

n = n

/ 10;
count ++;

тело цикла

начальное значение счётчика

n > 0

условие продолжения

заголовок цикла

конец цикла

Слайд 40

Цикл с условием k = 0; while ( k { printf

Цикл с условием

k = 0;
while ( k < 10 )

{
printf ( "привет\n" );
k ++;
}

При известном количестве шагов:

k = 0;
while ( k < 10 )
{
printf ( "привет\n" );
}

Зацикливание:

Слайд 41

Сколько раз выполняется цикл? a = 4; b = 6; while

Сколько раз выполняется цикл?

a = 4; b = 6;
while ( a

< b ) a = a + 1;

2 раза
a = 6

a:= 4; b:= 6;
while ( a < b ) a = a + b;

1 раз
a = 10

a:= 4; b:= 6;
while ( a > b ) a ++;

0 раз
a = 4

a:= 4; b:= 6;
while ( a < b ) b = a - b;

1 раз
b = -2

a:= 4; b:= 6;
while ( a < b ) a --;

зацикливание

Слайд 42

Цикл с постусловием do { } while ( n условие продолжения

Цикл с постусловием

do
{
}
while ( n <= 0 );

условие

продолжения

заголовок цикла

printf("Введите n > 0: ");
scanf ( "%d", &n );

тело цикла

при входе в цикл условие не проверяется
цикл всегда выполняется хотя бы один раз

Слайд 43

4. Операторы циклов 4.1. Цикл с предусловием while (выражение-условие) оператор; Пример

4. Операторы циклов

4.1. Цикл с предусловием

while (выражение-условие)
оператор;
Пример
a=1;s=0;
while (a!=0)
{
cin>>a;
s+=a;
}

Слайд 44

4.2. Цикл с постусловием do оператор while (выражение-условие); Пример s=0; do { cin>>a; s+=a; } while(a!=0);

4.2. Цикл с постусловием

do
оператор
while (выражение-условие);
Пример
s=0;
do
{
cin>>a;
s+=a;
}
while(a!=0);

Слайд 45

Задачи «A»: Напишите программу, которая получает два целых числа A и

Задачи

«A»: Напишите программу, которая получает два целых числа A и B

(0 < A < B) и выводит квадраты всех натуральных чисел в интервале от A до B.
Пример:
Введите два целых числа:
10 12
10*10=100
11*11=121
12*12=144

«B»: Напишите программу, которая получает два целых числа и находит их произведение, не используя операцию умножения. Учтите, что числа могут быть отрицательными.
Пример:
Введите два числа:
10 -15
10*(-15)=-150

Слайд 46

Задачи «C»: Ввести натуральное число N и вычислить сумму всех чисел

Задачи

«C»: Ввести натуральное число N и вычислить сумму всех чисел Фибоначчи,

меньших N. Предусмотрите защиту от ввода отрицательного числа N.
Пример:
Введите число N:
10000
Сумма 17709
Слайд 47

Задачи-2 «A»: Ввести натуральное число и найти сумму его цифр. Пример:

Задачи-2

«A»: Ввести натуральное число и найти сумму его цифр.
Пример:
Введите натуральное

число:
12345
Сумма цифр 15.

«B»: Ввести натуральное число и определить, верно ли, что в его записи есть две одинаковые цифры, стоящие рядом.
Пример:
Введите натуральное число:
12342
Нет.
Пример:
Введите натуральное число:
12245
Да.

Слайд 48

Задачи-2 «C»: Ввести натуральное число и определить, верно ли, что в

Задачи-2

«C»: Ввести натуральное число и определить, верно ли, что в его

записи есть две одинаковые цифры (не обязательно стоящие рядом).
Пример:
Введите натуральное число:
12342
Да.
Пример:
Введите натуральное число:
12345
Нет.
Слайд 49

Цикл с переменной Задача. Вывести все степени двойки от 21 до

Цикл с переменной

Задача. Вывести все степени двойки от 21 до 210.

 
n

= 2;
while ( )
{
printf("%d\n", n);
n *= 2;
}

k = 1;

k <= 10

k ++;

n = 2;
for( )
{
printf("%d\n", n);
n *= 2;
  }

k=1; k<=10; k++

цикл с переменной

Слайд 50

Цикл с переменной: другой шаг for ( k = 10; k

Цикл с переменной: другой шаг

for ( k = 10; k >=

1; k-- )
printf( "%d\n", k*k );

100
81
64
49
36
25
16
9
4
1

for ( k = 1; k <= 10; k += 2 )
printf( "%d\n", k*k );

1
9
25
49
81

Слайд 51

Сколько раз выполняется цикл? a = 1; for( i = 1;

Сколько раз выполняется цикл?

a = 1;
for( i = 1; i <=

3; i++ ) a = a + 1;

a = 4

a = 1;
for( i = 3; i <= 1; i++ ) a = a + 1;

a = 1

a = 1;
for( i = 1; i <= 3; i-- ) a = a + 1;

a = 1

a = 1;
for( i = 3; i >= 1; i-- ) a = a + 1;

a = 4

Слайд 52

Задачи «A»: Найдите все пятизначные числа, которые при делении на 133

Задачи

«A»: Найдите все пятизначные числа, которые при делении на 133 дают

в остатке 125, а при делении на 134 дают в остатке 111.
«B»: Натуральное число называется числом Армстронга, если сумма цифр числа, возведенных в N-ную степень (где N – количество цифр в числе) равна самому числу. Например, 153 = 13 + 53 + 33. Найдите все трёхзначные Армстронга.
Слайд 53

Задачи «С»: Натуральное число называется автоморфным, если оно равно последним цифрам

Задачи

«С»: Натуральное число называется автоморфным, если оно равно последним цифрам своего

квадрата. Например, 252 = 625. Напишите программу, которая получает натуральное число N и выводит на экран все автоморфные числа, не превосходящие N.
Пример:
Введите N:
1000
1*1=1
5*5=25
6*6=36
25*25=625
76*76=5776
Слайд 54

Вложенные циклы Задача. Вывести все простые числа в диапазоне от 2

Вложенные циклы

Задача. Вывести все простые числа в диапазоне от 2 до 1000.

сделать

для n от 2 до 1000
если число n простое то
вывод n

число n простое

нет делителей [2.. n-1]: проверка в цикле!

Слайд 55

Вложенные циклы for ( n = 2; n { count =

Вложенные циклы

for ( n = 2; n <= 1000; n ++

)
{
count = 0;
if ( count == 0 )
printf("%d\n", n);
}

for ( k = 2; k < n; k ++ )
if ( n % k == 0 )
count ++;

вложенный цикл

Слайд 56

Вложенные циклы for ( i = 1; i { for (

Вложенные циклы

for ( i = 1; i <= 4; i++ )


{
for ( k = 1; k <= i; k++ )
{
...
}
}

1 1
2 1
2 2
3 1
3 2
3 3
4 1
4 2
4 3
4 4

Слайд 57

Поиск простых чисел – как улучшить? count = 0; k =

Поиск простых чисел – как улучшить?

count = 0;
k = 2;
while

( )
{
if ( n % k == 0 ) count ++;
k ++;
}

while( k <= sqrt(n) )
{
...
}

while ( k*k <= n && count == 0 ) {
...
}

k*k <= n

(count == 0)

Слайд 58

Задачи «A»: Напишите программу, которая получает натуральные числа A и B

Задачи

«A»: Напишите программу, которая получает натуральные числа A и B (A

и выводит все простые числа в интервале от A до B.
Пример:
Введите границы диапазона:
10 20
11 13 17 19
«B»: В магазине продается мастика в ящиках по 15 кг, 17 кг, 21 кг. Как купить ровно 185 кг мастики, не вскрывая ящики? Сколькими способами можно это сделать?
Слайд 59

Задачи «C»: Ввести натуральное число N и вывести все натуральные числа,

Задачи

«C»: Ввести натуральное число N и вывести все натуральные числа, не

превосходящие N и делящиеся на каждую из своих цифр.
Пример:
Введите N:
15
1 2 3 4 5 6 7 8 9 11 12 15
Слайд 60

4.3. Цикл с параметром for (выражение_1;выражение-условие;выражение_3) оператор; Выражение_1 – задает начальные

4.3. Цикл с параметром

for (выражение_1;выражение-условие;выражение_3)
оператор;
Выражение_1 – задает начальные значения для цикла

(инициализация).
Выражение-условие определяет условие выполнения цикла, если оно не равно 0, цикл выполняется, а затем вычисляется значение выражения_3.
Выражение_3 – задает изменение параметра цикла или других переменных (коррекция).
Слайд 61

Пример 1. for ( i=1;i оператор; Пример 2 for ( n=10;

Пример 1.
for ( i=1;i<=10;i++) // Увеличение параметра
оператор;
Пример 2
for ( n=10;

n>0; n--) // Уменьшение параметра
{
оператор;
}
Пример 3
for ( n=2; n<60; n+=13) // Изменение шага корректировки
{
оператор;
}
Слайд 62

Пример 4. //проверка условия отличного от того, которое налагается //на число

Пример 4.
//проверка условия отличного от того, которое налагается //на число итераций
for

( num=1;num*num*num<216; num++)
{
оператор;
}
Пример 5.
//коррекция с помощью умножения
for ( d=100.0; d<150.0;d*=1.1)
{
оператор;
}
Слайд 63

Пример 6 //коррекция с помощью арифметического выражения for (x=1;y { оператор;

Пример 6
//коррекция с помощью арифметического выражения
for (x=1;y<=75;y=5*(x++)+10)
{
оператор;
}
Пример 7
//использование нескольких корректирующих //выражений,

тело цикла отсутствует
for (x=1, y=0; x<10;x++,y+=x);
Слайд 64

Примеры решения задач Задача №1. Определить, попадет ли точка с координатами

Примеры решения задач

Задача №1. Определить, попадет ли точка с координатами (х,

у ) в заштрихованную область.
Слайд 65

#include #include using namespace std; void main() { float x,y; cout

#include
#include
using namespace std;
void main()
{
float x,y;
cout<<"\nEnter x,y";
cin>>x>>y;
bool Ok=(y>=-x+1&& y<=2/3*x+2 &&

x>=0 && y>=0) ||
(pow(x,2)+pow(y,2)>=1 && pow(x,2)+pow(y,2)<=9 && x<=0) ||
(x>=0 && x<=1 && y<=-1 && y>=-3) ||
(x>=1 && x<=2 && y<=0 && y>=-3);
cout<<"\n"<}
Слайд 66

Задача №2. Дана последовательность целых чисел из n элементов. Найти среднее арифметическое этой последовательности.

Задача №2. Дана последовательность целых чисел из n элементов. Найти среднее

арифметическое этой последовательности.
Слайд 67

#include using namespace std; void main() { int a,n,i; double s=0;

#include
using namespace std;
void main()
{
int a,n,i;
double s=0;
cout<<"\nEnter n";
cin>>n;
for(i=1;i<=n;i++)
{
cout<<"\nEnter a";
cin>>a;


s+=a;
}
s=s/n;
cout<<"\nсреднее арифметическое равно="<}
Слайд 68

Задача №3. Дана последовательность целых чисел, за которой следует 0. Найти минимальный элемент этой последовательности.

Задача №3. Дана последовательность целых чисел, за которой следует 0. Найти

минимальный элемент этой последовательности.
Слайд 69

//вариант программы №1 #include using namespace std; void main() { int

//вариант программы №1
#include
using namespace std;
void main()
{
int a,min;
cout<<"\nEnter a";
cin>>a;
min=a;
while(a!=0)
{
cout<<"\nEnter

a";
cin>>a;
if (a!=0&&a}
cout<<"\nmin="<}
Слайд 70

//вариант программы №2 #include using namespace std; void main() { int

//вариант программы №2
#include
using namespace std;
void main()
{
int a,min;
cout<<"\nEnter a";
cin>>a;
min=a;
do
{
cout<<"\nEnter

a";
cin>>a;
if (a==0)break;
if (a}
while(1);
cout<<"\nmin="<}