Лекция 6. Разветвляющиеся вычислительные процессы
Примеры алгоритмов: а) линейный алгоритм; б) ветвящийся алгоритм
пример алгоритма с ветвлением
Логические выражения
Логические операции
Порядок выполнения операций в логических выражениях
Пример лог. выражения
Условный оператор
Полный условный оператор
Полный условный оператор
Пример 1. Вычислить значение переменной у по одной из двух ветвей:
Короткий условный оператор
Пример 2. Переменной у присвоить минимальное значение из трех различных чисел, т.е. у = min(a, b, с).
Пример 3. Вычислить корни полного квадратного уравнения ах2 + bх + с = 0. В программе предусмотреть проверку дискриминанта на
Вложенные структуры условных операторов
Вариант 1 (с использованием вложенной структуры)
Вариант 2 (без использования вложенной структуры)
Варианты наиболее часто используемых логических выражений
422.00K
Категория: ПрограммированиеПрограммирование

Разветвляющиеся вычислительные процессы. Условный оператор. Лекция 6

1. Лекция 6. Разветвляющиеся вычислительные процессы

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

2. Примеры алгоритмов: а) линейный алгоритм; б) ветвящийся алгоритм

3. пример алгоритма с ветвлением

Y = (а+b), если Х <=0;
Y=
с/b, если Х>0.
Х<=0 и X>0 логические
выражения

4.

Вычислительный процесс называется
ветвящимся, если для его реализации
предусмотрено несколько направлений (ветвей)
Выбор той или иной ветви
осуществляется по условию,
включенному в состав условного
оператора.
Для программной реализации условия
используется логическое выражение.

5. Логические выражения

• Логические выражения строятся из
операндов, операций отношений,
логических операций и круглых скобок.
Операция отношения - это операция сравнения
двух операндов
<
<=
>
>=
==
!=
- меньше
- меньше либо равно
- больше
- больше либо равно
- равно
- не равно.

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

Математическая
запись
Запись на языке
Си
Название
операции
¬
!
Отрицание
^
&&
˅
||
Операция «И»
(логическое
умножение)
Операция
«ИЛИ»
(логическое
сложение)

7. Порядок выполнения операций в логических выражениях

• В бесскобочных логических
выражениях операции выполняют
слева направо в соответствии с их
приоритетом:
• !
• &&
• ||
• Отношения.(< > == != )

8. Пример лог. выражения


Вычислить логическое выражение:
(-3≥5)V ¬(7<9)A(0≤3)
• Запись на языке Си имеет вид:
(-3>= 5) || ! (7 <9) && (0 <= 3)
1 6 4 2
5
3
• Внизу под операциями проставлен порядок
выполнения действий.
• 1) -3>= 5 (F); 2) 7 <9 (Т); 3) 0 <= 3 (Т);
• 4) !(T)
( F); 5) F && T (F);
6) F || F ( F).
• Ответ: False (ложь)

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

На языке Си различают две формы
записи условного оператора:
• короткий
и
полный

10. Полный условный оператор

Общий вид записи
if (логическое выражение) {P1;} else { P2;}
• где Р1, Р2 - любые операторы или даже группы операторов.
Работа оператора
Вычисляется логическое выражение, и если оно имеет
значение TRUE(1), то выполняется оператор ( или
группа операторов) Р1, стоящий после логического
выражения. В противном случае (FALSE (0))оператор
P1 пропускается, а выполняется оператор (или
группа операторов) Р2, стоящий после служебного
слова else.

11. Полный условный оператор

Общий вид записи
Графическая интерпретация
оператора
if (логическое выражение)
{ P1;}
else { P2;}
Замечание. Если возникает необходимость выполнить в
ветвях несколько операторов, то их заключают в
операторные скобки { }. Вид записи условного
оператора в этом случае следующий:
if (логическое выражение)
{
оператор 1;
………………
оператор n;
}
else
{
оператор 1;
………………
оператор m;
}
1
P1
Логическ
ое
выражен
ие
0
P2

12.

Работа логического оператора
Сначала
вычисляется
логическое
выражение (ЛВ),
и если оно имеет значение TRUE(истина),
то выполняется оператор Р1, стоящий за
логическим
выражением
в
первых
фигурных скобках.
В противном случае оператор Р1
игнорируется
(пропускается)
и
выполняется оператор Р2.

13. Пример 1. Вычислить значение переменной у по одной из двух ветвей:

#include <stdio.h>
#include<math.h>
void main()
{
float a, b, c,y;
printf(“ Введ ите число x= ”);
scanf(“%f”,&x);
х
1
Х>0
ln x, если x 0,
y
x
e , если x 0.
0
if( x>0) { у = log(х) ; }
Y=e
Y=ln x
else { у = ехр(х); }
y
printf(“y =%6.2f”, у);
}

14. Короткий условный оператор

Общий вид записи
if (логическое выражение) { P; }
где Р - любой оператор или группа
операторов
0
Лог.
выражение
1
Р

15.

Работа логического оператора
Сначала
вычисляется
логическое
выражение (ЛВ),
и если оно имеет значение TRUE(истина),
то выполняется оператор Р1, стоящий за
логическим выражением в первых фигурных
скобках.
В противном случае оператор Р1
игнорируется (пропускается).

16.

Замечание. По определению, конструкция короткого условного
оператора включает единственный оператор Р.
Если в задаче по заданному условию требуется выполнить
несколько операторов, то их необходимо заключить в скобки { }.
Тогда запись условного оператора с использованием скобок имеет
следующий вид:
if (логическое выражение)
{
оператор 1;
....................
Составной
оператор N ; оператор
}

17. Пример 2. Переменной у присвоить минимальное значение из трех различных чисел, т.е. у = min(a, b, с).


#include <stdio.h>
#include<math.h>
void main()
{
float a, b, c, y;
printf(“ Введите числа а, b, с”);
scanf(“%f %f %f”, &a,& b,& с);
у=а;
if (b<y) {у = b; }
if (c<y) {у = с; }
printf(“y =%6.2f”, y);
}

18. Пример 3. Вычислить корни полного квадратного уравнения ах2 + bх + с = 0. В программе предусмотреть проверку дискриминанта на

знак. Если дискриминант окажется
отрицательным, то вывести сообщение «Корни мнимые».
#include <stdio.h>
#include<math.h>
main()
{
float a, b, с, d, xl, x2; // описание переменных
printf(“Введите коэффициенты уравнения ”);
scanf(“%f%f%f”,&a, &b, &с);
// ввод исходных данных
d = pow(b,2)-4*a*c;
//вычисление дискриминанта
if ( d<0 )
// сравнение дискриминанта с нулем
• printf (“Корни мнимые”);
/*вывод «корни мнимые», если
d окажется < 0 */
else
// иначе
{
x1=(-b+sqrt(d))/(2*a);
// вычисление первого корня
x2=(-b-sqrt(d))/(2*a);
// вычисление второго корня
printf(“x1=%f
}
x2=%f”,x1,x2);
// вывод корней на экран

19. Вложенные структуры условных операторов

1
2 x , если x 1,
1 3
Y= x , если 0 x 1
3
1 4 x , если x 0
4
При решении данной задачи возможны два варианта
программирования:
1) с вложенной структурой условных операторов
2) без вложенной структуры условных операторов

20. Вариант 1 (с использованием вложенной структуры)


X
1
0
Х>=
1
X>0
Y=√ /2
0
Y
Y
1
Y=√
#include <stdio.h>
#include<math.h>
main()
{
float х, у;
printf(“Введите число х
scanf(“%f”,&x);
” );
if (х>=1)
у = sqrt(x)/2;
else
if(x>0) y=pow(x,1./3)/2;
else
y=pow(x,l./4)/4;
printf(“y=%6.2f”,y);
}

21. Вариант 2 (без использования вложенной структуры)

• #include <stdio.h>
#include<math.h>
main()
{
float х, у;
printf(“Введите число х ”);
scanf(“%f”,&x);
if (х>=1)
у = sqrt(x)/2;
if ((x>0)&&(x<1)) y =pow(x,1.0/3)/2;
if(x<=0) y=pow(x,1./4)/4;
printf(“y=%6.2f”,y);
}
X
X>
=1
1
X>0
и
х<1
X<=
0
1
1

22. Варианты наиболее часто используемых логических выражений

• if ( a>0) - для поиска положительного
числа
• if ( a<0) - для поиска отрицательного
числа
• if ( a==0) - для поиска числа, равного
нулю
• if ( ( a%2)==0) - для поиска числа ,
кратного двум (т.е. четного)
• if (( a%2)!=0) - для поиска нечетного
числа
English     Русский Правила