Слайд 7Знаки операций
Тернарная
Выражение1 ? Выражение2 : Выражение3;
Первым вычисляется значение выражения1.
Если оно
истинно, то вычисляется значение выражения2, которое становится результатом.
Если при вычислении выражения1 получится 0, то в качестве результата берется значение выражения3.
x<0 ? -x : x ; //вычисляется абсолютное значение x.
Слайд 8Выражения
Из констант, переменных, разделителей и знаков операций можно конструировать выражения.
Каждое
выражение состоит из одного или нескольких операндов, символов операций и ограничителей.
Если выражение формирует целое или вещественное число, то оно называется арифметическим.
Пара арифметических выражений, объединенная операцией сравнения, называется отношением.
Слайд 9
Оператор присваивания
Общая структура:
Арифметическое выражение может включать
константы (постоянные)
имена переменных
знаки арифметических операций:
+ - * / %
вызовы функций
круглые скобки ( )
умножение
деление
остаток от деления
имя переменной = выражение;
куда записать
что
Слайд 10
Сокращенная запись операций в Си
инкремент
декремент
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) — модуль вещественного числа
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
Слайд 132. Составные операторы
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 (
b > a )
M = b;
Слайд 17Условный оператор
if ( a > b )
{
с =
a;
a = b;
b = c;
}
4
6
?
4
6
4
a
b
3
2
1
c
Слайд 19Вложенные условные операторы
if ( a > b )
printf("Андрей старше");
else
if ( a == b )
printf("Одного возраста");
else
printf("Борис старше");
вложенный условный оператор
Задача: в переменных a и b записаны возрасты Андрея и Бориса. Кто из них старше?
Слайд 20Задача: набор сотрудников в возрасте 25-40 лет (включительно).
начало
ввод x
'подходит'
да
нет
x >= 25
Слайд 21Сложные условия
Задача: набор сотрудников в возрасте 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»: Напишите программу, которая получает номер месяца и выводит соответствующее ему
время года или сообщение об ошибке.
Пример:
Введите номер месяца:
5
Весна.
Пример:
Введите номер месяца:
15
Неверный номер месяца.
Слайд 24Задачи
«C»: Напишите программу, которая получает возраст человека (целое число, не превышающее
120) и выводит этот возраст со словом «год», «года» или «лет». Например, «21 год», «22 года», «25 лет».
Пример:
Введите возраст: 18
Вам 18 лет.
Пример:
Введите возраст: 21
Вам 21 год.
Пример:
Введите возраст: 22
Вам 22 года.
Слайд 25Множественный выбор
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 2: printf("февраль");
case 3: printf("март");
default: printf("ошибка");
}
Если не ставить break:
февральмартошибка
При m = 2:
Слайд 27Множественный выбор
char c;
c = getch();
switch(c)
{
case 'а':
printf("антилопа\n");
printf("Анапа\n");
break;
...
case 'я':
printf("ягуар\n");
printf("Якутск\n");
break;
default: printf("Ошибка!");
}
несколько операторов в блоке
ждать нажатия клавиши, получить её код
Слайд 283. Операторы выбора
3.1. Условный оператор
if (выражение-условие) оператор; //сокращенная форма
if (выражение-условие)
оператор;
else оператор; //полная форма
Слайд 29
Условный оператор
if ( условие )
{
// что делать, если условие верно
}
else
{
// что делать, если условие неверно
}
Особенности:
вторая часть (else …) может отсутствовать (неполная форма)
если в блоке один оператор, можно убрать { }
Слайд 30Выражение-условие :
арифметическое выражение,
отношение,
логическое выражение.
Пример 1
if (x
(d>=0)
{
x1=(-b-sqrt(d))/(2*a);
x2=(-b+sqrt(d))/(2*a);
cout<< “\nx1=”<}
else cout<<“\nРешения нет”;
Слайд 313.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;
couti;
switch(i)
{
case 1:cout
one";
case 2:cout<<"\n2*2="< case 3: cout<<"\n3*3="< case 4: cout<<"\n"< default:cout<<"\nThe end of work";
}
}
Слайд 34Что такое цикл?
Цикл – это многократное выполнение одинаковых действий.
Два вида циклов:
цикл
с известным числом шагов (сделать 10 раз)
цикл с неизвестным числом шагов (делать, пока не надоест)
Задача. Вывести на экран 10 раз слово «Привет».
Слайд 35Повторения в программе
printf("Привет\n");
printf("Привет\n");
...
printf("Привет\n");
Слайд 36Блок-схема цикла
начало
конец
да
нет
тело цикла
Слайд 37Как организовать цикл?
счётчик = 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 ( )
{
}
n = n / 10;
count ++;
тело цикла
начальное значение счётчика
n > 0
условие продолжения
заголовок цикла
конец цикла
Слайд 40Цикл с условием
k = 0;
while ( k < 10 )
{
printf ( "привет\n" );
k ++;
}
При известном количестве шагов:
k = 0;
while ( k < 10 )
{
printf ( "привет\n" );
}
Зацикливание:
Слайд 41Сколько раз выполняется цикл?
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
);
условие продолжения
заголовок цикла
printf("Введите n > 0: ");
scanf ( "%d", &n );
тело цикла
при входе в цикл условие не проверяется
цикл всегда выполняется хотя бы один раз
Слайд 434. Операторы циклов
4.1. Цикл с предусловием
while (выражение-условие)
оператор;
Пример
a=1;s=0;
while (a!=0)
{
cin>>a;
s+=a;
}
Слайд 444.2. Цикл с постусловием
do
оператор
while (выражение-условие);
Пример
s=0;
do
{
cin>>a;
s+=a;
}
while(a!=0);
Слайд 45Задачи
«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 и вычислить сумму всех чисел Фибоначчи,
меньших N. Предусмотрите защиту от ввода отрицательного числа N.
Пример:
Введите число N:
10000
Сумма 17709
Слайд 47Задачи-2
«A»: Ввести натуральное число и найти сумму его цифр.
Пример:
Введите натуральное
число:
12345
Сумма цифр 15.
«B»: Ввести натуральное число и определить, верно ли, что в его записи есть две одинаковые цифры, стоящие рядом.
Пример:
Введите натуральное число:
12342
Нет.
Пример:
Введите натуральное число:
12245
Да.
Слайд 48Задачи-2
«C»: Ввести натуральное число и определить, верно ли, что в его
записи есть две одинаковые цифры (не обязательно стоящие рядом).
Пример:
Введите натуральное число:
12342
Да.
Пример:
Введите натуральное число:
12345
Нет.
Слайд 49Цикл с переменной
Задача. Вывести все степени двойки от 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 >=
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; 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 дают
в остатке 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 до 1000.
сделать
для n от 2 до 1000
если число n простое то
вывод n
число n простое
нет делителей [2.. n-1]: проверка в цикле!
Слайд 55Вложенные циклы
for ( n = 2; 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 ( 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 = 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.
Пример:
Введите границы диапазона:
10 20
11 13 17 19
«B»: В магазине продается мастика в ящиках по 15 кг,
17 кг, 21 кг. Как купить ровно 185 кг мастики, не вскрывая ящики? Сколькими способами можно это сделать?
Слайд 59Задачи
«C»: Ввести натуральное число N и вывести все натуральные числа, не
превосходящие N и делящиеся на каждую из своих цифр.
Пример:
Введите N:
15
1 2 3 4 5 6 7 8 9 11 12 15
Слайд 604.3. Цикл с параметром
for (выражение_1;выражение-условие;выражение_3)
оператор;
Выражение_1 – задает начальные значения для цикла
(инициализация).
Выражение-условие определяет условие выполнения цикла, если оно не равно 0, цикл выполняется, а затем вычисляется значение выражения_3.
Выражение_3 – задает изменение параметра цикла или других переменных (коррекция).
Слайд 61Пример 1.
for ( i=1;i
n>0; n--) // Уменьшение параметра
{
оператор;
}
Пример 3
for ( n=2; n<60; n+=13) // Изменение шага корректировки
{
оператор;
}
Слайд 62Пример 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
тело цикла отсутствует
for (x=1, y=0; x<10;x++,y+=x);
Слайд 64Примеры решения задач
Задача №1. Определить, попадет ли точка с координатами (х,
у ) в заштрихованную область.
Слайд 65#include
#include
using namespace std;
void main()
{
float x,y;
coutx>>y;
bool Ok=(y>=-x+1&& y
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 элементов. Найти среднее
арифметическое этой последовательности.
Слайд 67#include
using namespace std;
void main()
{
int a,n,i;
double s=0;
coutn;
for(i=1;i
s+=a;
}
s=s/n;
cout<<"\nсреднее арифметическое равно="<}
Слайд 68Задача №3. Дана последовательность целых чисел, за которой следует 0. Найти
минимальный элемент этой последовательности.
Слайд 69//вариант программы №1
#include
using namespace std;
void main()
{
int a,min;
couta;
min=a;
while(a!=0)
{
cout
a";
cin>>a;
if (a!=0&&a}
cout<<"\nmin="<}
Слайд 70//вариант программы №2
#include
using namespace std;
void main()
{
int a,min;
couta;
min=a;
do
{
cout
a";
cin>>a;
if (a==0)break;
if (a}
while(1);
cout<<"\nmin="<}
Слайд 71//вариант программы №3
#include
using namespace std;
void main()
{
int a,min;
couta;
min=a;
for(;a!=0;)
{
cout<<"\nEnter a";
cin>>a;
if (a!=0&&a}
cout<<"\nmin="<}