Лекция 5_ОАИП_2020

Содержание

Слайд 2

11.10.2020

Романькова Т.Л.

Разветвляющийся - алгоритм, в котором некоторые действия выполняются один раз

11.10.2020 Романькова Т.Л. Разветвляющийся - алгоритм, в котором некоторые действия выполняются один
или не выполняются в зависимости от заданного условия.

Пример 1. Составить алгоритм вычисления функции.

Предусмотреть вывод номера расчетной формулы.

Слайд 3

начало


Ввод

х


π

<

<

x

0


5

.

2

sin

2

2


=

x

x

y


N=1


x

x

y

2

2

sin

4

+

=


N=3


Вывод


x, y, n

начало Ввод х π x 0 5 . 2 sin 2 2

0

Ј

x


5

.

7

cos

2

3


+

=

x

x

y


N=2


Конец


да


нет


да

нет

Слайд 4

11.10.2020

Романькова Т.Л.

Операции отношения

Операции отношения позволяют сравнить два значения и возвращают 1 (если

11.10.2020 Романькова Т.Л. Операции отношения Операции отношения позволяют сравнить два значения и
выражение истинно) или 0 (если выражение ложно).

== «равно» Например, x<5
> «больше» 5>z
< «меньше» x >= «больше или равно» 5>=z
<= «меньше или равно» 5<=z
!= «не равно» a!=b

Любое значение, не равное нулю (даже отрицательное), трактуется как true, а нуль считается false;

Слайд 5

11.10.2020

Романькова Т.Л.

Логические операции
Логические операции, как правило, объединяют несколько операций отношения.

! (операция отрицания)
Если

11.10.2020 Романькова Т.Л. Логические операции Логические операции, как правило, объединяют несколько операций
операнд равен 0, то возвращает 1, иначе возвращает 0.

int c = !3; // 0
int d = !0; // 1

&& (конъюнкция, логическое «и»)
Возвращает 1, если оба операнда не равны 0. Возвращает 0, если хотя бы один операнд равен 0.

Слайд 6

11.10.2020

Романькова Т.Л.

int c = -2 && 5; // 1
int d = 0

11.10.2020 Романькова Т.Л. int c = -2 && 5; // 1 int
&& 7; // 0

|| (дизъюнкция, логическое «или»)
Возвращает 1, если хотя бы один операнд не равен 0. Возвращает 0, если оба операнда равны 0.

int c = -2 || 5; // 1
int d = 0 || 7; // 1
int e = 0 || 0; // 0

Слайд 7

11.10.2020

Романькова Т.Л.

Операции && и || действуют по сокращенной схеме. Если значения первого

11.10.2020 Романькова Т.Л. Операции && и || действуют по сокращенной схеме. Если
операнда достаточно, чтобы определить результат операции, второй операнд не вычисляется.

Логические операции выполняются слева направо.
Наивысший приоритет имеет унарная операция ! (НЕ), затем операция &&(И – логическое умножение), а затем || (ИЛИ – логическое сложение).
Операции сравнения имеют приоритет ниже, чем !, но выше, чем && и ||.

int d = -2 > 5 && 0 < 7 || 0 == 0; // 1

Слайд 8

11.10.2020

Романькова Т.Л.

Условный оператор.
Реализует алгоритмическую конструкцию Ветвление и изменяет порядок выполнения операторов в

11.10.2020 Романькова Т.Л. Условный оператор. Реализует алгоритмическую конструкцию Ветвление и изменяет порядок
зависимости от истинности или ложности некоторого условия.

а) Полная форма

if ( выражение )
оператор_1;
else
оператор_2;]

Сначала вычисляется значение выражения (логическое или арифметическое). Если оно не равно 0, то выполняется оператор 1. В противном случае выполняется оператор 2

Слайд 9

11.10.2020

Романькова Т.Л.

а) Сокращенная форма

if(выражение)
оператор;

11.10.2020 Романькова Т.Л. а) Сокращенная форма if(выражение) оператор;

Слайд 10

11.10.2020

Романькова Т.Л.

Например,

if (x > 5)
y = 3 * x + 1.5;

11.10.2020 Романькова Т.Л. Например, if (x > 5) y = 3 * x + 1.5;

Слайд 11

11.10.2020

Романькова Т.Л.

if (a > 5)
b = b + a;
else
b = b -

11.10.2020 Романькова Т.Л. if (a > 5) b = b + a;
a;

Слайд 12

11.10.2020

Романькова Т.Л.

Если в конструкции if необходимо выполнить не одну, а несколько инструкций,

11.10.2020 Романькова Т.Л. Если в конструкции if необходимо выполнить не одну, а
то эти инструкции оформляются в блок кода с помощью фигурных скобок:

if(выражение)
оператор1;
else
{
оператор2;
оператор3;
}

Слайд 13

11.10.2020

Романькова Т.Л.

a>0

a=a+5

y=sina

y<0

Да

y=2y

Вывод y

Да

нет

a≥-20

Нет

y=cosa

Да

y=2.5a

Нет

a=a-3

Вывод а

11.10.2020 Романькова Т.Л. a>0 a=a+5 y=sina y Да y=2y Вывод y Да

Слайд 14

11.10.2020

Романькова Т.Л.

11.10.2020 Романькова Т.Л.

Слайд 15

11.10.2020

Романькова Т.Л.

Из-за погрешности представления вещественных значений в памяти следует ее избегать, вместо

11.10.2020 Романькова Т.Л. Из-за погрешности представления вещественных значений в памяти следует ее
этого лучше сравнивать модуль разности с некоторым малым числом.
float x, y; …
if ( x == y ) … // не рекомендуется!
if ( abs(x - y) < 1e-7 ) … // рекомендуется!
Значение величины, с которой сравнивается модуль разности, следует выбирать в зависимости от решаемой задачи и точности участвующих в выражении переменных.

Слайд 16

11.10.2020

Романькова Т.Л.

Константа π определена в файле math.h следующим образом:

#define M_PI 3.14159265358979323846 /*

11.10.2020 Романькова Т.Л. Константа π определена в файле math.h следующим образом: #define
pi */

Составим программу для примера 1.

Но не каждый компилятор распознает(

#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include
#define PI 3.14159265358979323846

Слайд 17

11.10.2020

Романькова Т.Л.

void main(void)
{
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
double x,y; // декларируем необходимые

11.10.2020 Романькова Т.Л. void main(void) { SetConsoleCP(1251); SetConsoleOutputCP(1251); double x,y; // декларируем
переменные
unsigned int n;
//ввод переменных с клавиатуры
printf("Введите x: ");
int value_count=scanf("%lf", &x);

//проверка введенных данных
if (!value_count)//value_count==0
puts("Вы ввели что-то не то :-(");
else
{

Слайд 18

11.10.2020

Романькова Т.Л.

//рассчитываем результат
if (x > 0 && x < PI)
{
y =

11.10.2020 Романькова Т.Л. //рассчитываем результат if (x > 0 && x {
2 * x * x / sin(x) - 2.5;
n = 1;
}

else
if (x <= 0)
{
y = 2 * pow(cos(x), 3) + fabs(x - 7.5);
n = 2;
}
else
{
y = 4 * sqrt(x * x + sin(x) * sin(x));
n = 3;
}

Слайд 19

11.10.2020

Романькова Т.Л.

//вывод результата на экран
printf("Вы ввели x=%.3f , Результат: %.3f\n",

11.10.2020 Романькова Т.Л. //вывод результата на экран printf("Вы ввели x=%.3f , Результат:
x, y);
printf("Расчет произведен по формуле № %i\n", n);
}
system("pause");

Тесты для проверки:
x = -1 y = 8.815 n = 2
x = 0 y = 9.5 n = 2
x =1 y = -0.123 n = 1
x = 3.1415926 y = 12.566 n = 3
x = 5 y = 20.032 n = 3

Слайд 20

11.10.2020

Романькова Т.Л.

Пример 2.
Даны числа a, b, c. Если все они равны

11.10.2020 Романькова Т.Л. Пример 2. Даны числа a, b, c. Если все
нулю, вывести об этом сообщение, если среди чисел есть нули, заменить их единицами, в противном случае найти и вывести сумму исходных чисел.

Что-то не то (

Нужно:

if (x > 0 && x < PI-1e-6 )

Слайд 21

начало

Ввод a, b, c

a=0 и b=0 и c=0

Вывод
сообщения

Да

a≠0 и b≠0 и

начало Ввод a, b, c a=0 и b=0 и c=0 Вывод сообщения
c≠0

нет

Да

нет

a=1

нет

S=a+b+c

Вывод S

A

a=0

Да

b=1

нет

b=0

Да

с=1

нет

с=0

Да

Слайд 22

A

Вывод а, b, c

конец

#define _CRT_SECURE_NO_WARNINGS
#include
#include
void main(void) {
SetConsoleCP(1251); //на

A Вывод а, b, c конец #define _CRT_SECURE_NO_WARNINGS #include #include void main(void)
ввод
SetConsoleOutputCP(1251); //на вывод
int a,b,c;

Слайд 23

11.10.2020

Романькова Т.Л.

puts("Введите три целых числа через пробел или через ENTER");
int

11.10.2020 Романькова Т.Л. puts("Введите три целых числа через пробел или через ENTER");
value_count = scanf("%d %d %d", &a,&b,&c);
//проверка введенных данных
if (value_count<3)
puts("Вы ввели не все или что-то не то :-(");
else
{

system("cls");//очистка экрана
printf("Исходные числа:\na=%d b=%d c=%d\n", a, b, c);

if (a==0 && b==0 && c==0)
{
puts("Все числа равны нулю");
}

else
if (a!=0 && b != 0 && c != 0)
{
int sum=a+b+c;
printf("Сумма чисел равна %d\n", sum);
}

Слайд 24

11.10.2020

Романькова Т.Л.

else
{
if (a == 0) a = 1;
if

11.10.2020 Романькова Т.Л. else { if (a == 0) a = 1;
(b == 0) b = 1;
if (c == 0) c = 1;
printf("Числа после изменения:\na=%d b=%d c=%d\n", a, b, c);
}
}
system("pause");
}

Слайд 25

11.10.2020

Романькова Т.Л.

Условная операция «? :»

Выражение 1 ? выражение 2 : выражение 3

Синтаксис:

Порядок

11.10.2020 Романькова Т.Л. Условная операция «? :» Выражение 1 ? выражение 2
выполнения:
если выражение 1 (условие) отлично от нуля (истинно), то результатом операции является значение выражения 2, в противном случае – значение выражения 3.

if (a > 5)
b = b + a;
else
b = b - a;

b = (a > 5) ? b+a : b-a;

Слайд 26

11.10.2020

Романькова Т.Л.

Оператор выбора (переключатель)

Оператор выбора позволяет выбрать один из нескольких возможных вариантов

11.10.2020 Романькова Т.Л. Оператор выбора (переключатель) Оператор выбора позволяет выбрать один из
продолжения программы.

Реализует алгоритмическую структуру «Выбор»

Слайд 27

11.10.2020

Романькова Т.Л.

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

11.10.2020 Романькова Т.Л. switch ( выражение ) { case константа1: список операторов
операторов 2
...
case константаN: список операторов N
default: список операторов N+1
}

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

Слайд 28

11.10.2020

Романькова Т.Л.

Значение выражения должно быть целого или символьного типа.
Все константы должны иметь

11.10.2020 Романькова Т.Л. Значение выражения должно быть целого или символьного типа. Все
разные значения, но быть одного и того же типа.

Порядок выполнения:
Если значение выражения совпало с одной из перечисленных констант, то управление передается в соответствующую ветвь.
После этого, если выход из переключателя в данной ветви явно не указан, последовательно выполняются все остальные ветви.
В случае несовпадения значения выражения ни с одной из констант выбора происходит переход на метку default либо, при ее отсутствии, к оператору, следующему за оператором switch.

Слайд 29

11.10.2020

Романькова Т.Л.

int key;
puts("Введите число");
scanf("%d", &key);
switch (key)
{
case 1:puts("Вася");
case 2:puts("Петя");
case 5:puts("Коля");

11.10.2020 Романькова Т.Л. int key; puts("Введите число"); scanf("%d", &key); switch (key) {
default:
puts("Маша");
break;
}
puts("**************");

Слайд 30

11.10.2020

Романькова Т.Л.

Для выхода из оператора switch следует использовать управляющий оператор break .
После

11.10.2020 Романькова Т.Л. Для выхода из оператора switch следует использовать управляющий оператор
операторов последней группы (после default или после последнего case) оператор break можно не указывать.

switch (key)
{
case 1:puts("Вася"); break;
case 2:puts("Петя"); break;
case 5:puts("Коля"); break;
default:
puts("Маша");
}
puts("**************");

Оператор break не является частью конструкции выбора. Он может использоваться и в других контекстах (например, для экстренного выхода из цикла)

Слайд 31

11.10.2020

Романькова Т.Л.

switch (key)
{
case 1:puts("Вася"); break;
case 2:
case 3:
case 4:puts("Петя"); break;
case 5:puts("Коля"); break;
default:puts("Маша");
}

Пример 3.

11.10.2020 Романькова Т.Л. switch (key) { case 1:puts("Вася"); break; case 2: case
Требуется вывести на экран оценку, введенную цифрой, прописью.

Слайд 32

11.10.2020

Романькова Т.Л.

11.10.2020 Романькова Т.Л.

Слайд 33

11.10.2020

Романькова Т.Л.

Пример 4. Реализовать простейший калькулятор на четыре действия с контролем правильности

11.10.2020 Романькова Т.Л. Пример 4. Реализовать простейший калькулятор на четыре действия с
ввода символа нужной операции.
Ввод данных осуществляется следующим образом: операнд 1 символ нужной операции операнд 2.

Слайд 34

11.10.2020

Романькова Т.Л.

11.10.2020 Романькова Т.Л.

Слайд 35

11.10.2020

Романькова Т.Л.

Пример 5. Программа выводит на экран меню, в котором пользователь может

11.10.2020 Романькова Т.Л. Пример 5. Программа выводит на экран меню, в котором
выбрать одно из следующих действий введя соответствующее число: подсчитать сумму двух чисел, подсчитать разность двух чисел, выйти из программы.

Слайд 36

11.10.2020

Романькова Т.Л.

11.10.2020 Романькова Т.Л.

Слайд 37

11.10.2020

Романькова Т.Л.

11.10.2020 Романькова Т.Л.

Слайд 38

11.10.2020

Романькова Т.Л.

Пример 6. Программа-конвертор валют. Пользователь вводит сумму в белорусских рублях, а

11.10.2020 Романькова Т.Л. Пример 6. Программа-конвертор валют. Пользователь вводит сумму в белорусских
программа рассчитывает соответствующую сумму в долларах, евро или российских рублях. Валюту выбирает пользователь.

Слайд 39

11.10.2020

Романькова Т.Л.

11.10.2020 Романькова Т.Л.

Слайд 40

11.10.2020

Романькова Т.Л.

11.10.2020 Романькова Т.Л.
Имя файла: Лекция-5_ОАИП_2020.pptx
Количество просмотров: 44
Количество скачиваний: 0