![](/user_photo/2706_HbeT2.jpg)
3_Метод_Часть_2_Разветвл_алгоритм
.pdf![](/html/2706/173/html_4AORAzYUVd.2cMa/htmlconvd-31RoYj11x1.jpg)
Пример 4. Даны действительные x, y. Определить, принадлежит ли точка с координатами х, y заштрихованной области, изображенной на рисунке 9 .
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Так |
как |
заштрихованная область |
||||
|
|
|
у |
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
находится |
|
|
внутри |
окружности |
|||
|
|
|
|
x2 y 1 2 1 |
|
|
x2 ( y 1)2 |
1, |
а |
также |
ниже графика |
||||||
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
функции |
y 1 x2 , |
то все точки данной |
|||||
|
|
|
|
|
|
|
x |
|
области |
удовлетворяют |
одновременно |
||||||
|
|
|
|
|
|
|
|
|
|
|
x2 ( y 1)2 1 |
|
|||||
|
|
|
|
0 |
|
|
|
|
|
двум |
условиям: |
и |
|||||
|
|
|
|
|
y 1 x2 |
|
|
y 1 x2 . |
Обратите внимание во втором |
||||||||
|
|
|
Рис.9 |
|
|
|
|
||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
условии записано нестрогое неравенство, |
|||||||
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
||||||||
т. к. точки самого графика |
y 1 x2 также принадлежат заштрихован- |
ной области.
Алгоритм решения задачи:
Начало
x, y
Нет |
x2+(y-1)2<=1 |
Да |
|
и y<=1-x2 |
|
Не принадлежит |
|
Принадлежит |
|
Конец |
|
Если для выполнения тех или иных действий нужно одновременное выполнение двух и более условий, то они объединяются логической связкой AND (И). Таким образом, условие данной задачи мож-
но записать так: x^2+(y-1)^2<=1 AND y<=1-x^2
Программа
CLS
INPUT x, y
IF x^2+(y-1)^2<=1 AND y<=1-x^2 THEN ? “Да” ELSE ? “Нет” END
11
![](/html/2706/173/html_4AORAzYUVd.2cMa/htmlconvd-31RoYj12x1.jpg)
УПРАЖНЕНИЯ №1
1.Даны действительные числа x, y. Получить max (x, y).
2.Даны числа a, b, c. Найти сумму этих чисел, если а b c и их произведение, если это не так.
3.Дано действительное число a. Вычислить f(a), если
x 2 |
4x 5, |
при x 2 ; |
|
|
|
f x |
1 |
|
,в противоположном случае.
x5
4.Определить, принадлежит ли точка с координатами х0,y0 заштрихованной области:2x 4
а) |
y |
|
б) |
y |
|
|
|
1 |
|
|
|||
|
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0,5 |
|
|
|
|
|
– 1 |
– 0,5 |
0,5 |
1 |
|
|
|
|
|||
|
0 |
3 |
x |
|
|
x |
|
|
|
|
– 0,5 |
|
|
|
|
|
|
– 1 |
|
|
5.Определить, является ли данное целое число чѐтным. Примечание. Дать проверку на четность тремя способами:
1)а / 2 – a \ 2 = 0;
2)а MOD 2 = 0;
3)INT (а / 2) = а \ 2 .
6.Определить является ли треугольник со сторонами a, b, c равносторонним.
12
![](/html/2706/173/html_4AORAzYUVd.2cMa/htmlconvd-31RoYj13x1.jpg)
БЛОЧНАЯ ФОРМА ОПЕРАТОРА IF … THEN … ELSE
Часто возникает необходимость в выполнении целой группы действий как в случае, если значение логического выражения — «истина», так и в случае, когда его значение — «ложь». Однако размещать несколько операторов в одной строке не рекомендуется: это значительно затрудняет зрительное восприятие текста программы и ее сложно понять. В таких случаях желательно использовать блочную форму условного оператора IF … THEN … ELSE.
IF {логическое выражение} THEN
последовательность операторов, которая выполняется в том случае, если логическое выражение принимает значение «истинна»
ELSE
последовательность операторов, которая выполняется в том случае, если логическое выражение принимает значение «ложь»
ENDIF
Пример 5. Проверьте, сколько решений имеет данная система:
a1x b1 y c1a2 x b2 y c2
Если она имеет единственное решение, то решите еѐ методом Крамера.
Алгоритм решения задачи:
При решении данной системы возможны два случая.
1. Определитель системы 0 . Тогда система имеет единственное решение, которое находится по формулам Крамера:
|
|
|
|
x |
|
|
y |
|
|
|
|
a |
b |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
x |
|
|
, |
y |
|
|
, где |
|
1 |
|
1 |
a |
b |
a |
2 |
b |
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
a2 |
b2 |
1 |
2 |
|
|
1 |
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
b1 |
|
|
|
|
|
a1 |
c1 |
|
|
|
|
|
|
|||||||||
|
x |
|
с1 |
с b с |
2 |
b |
y |
|
|
a c |
2 |
a |
2 |
c |
|||||||||||
|
|
|
с2 |
b2 |
|
1 2 |
1 |
|
|
a2 |
c2 |
|
|
1 |
|
1 |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13
![](/html/2706/173/html_4AORAzYUVd.2cMa/htmlconvd-31RoYj14x1.jpg)
2. Если определитель системы 0 , то возможны два подслу- |
|||||||||
чая: |
|
|
|
|
|
|
|
|
|
a) если оба определителя x и y равны нулю, система имеет бесчис- |
|||||||||
ленное множество решений; |
|
|
|
|
|
|
|
|
|
b) если хотя бы один из определителей x или y не равен нулю, то |
|||||||||
система вообще не имеет решений. |
|
|
|
|
|
|
|
||
|
|
|
Начало |
|
|
|
|
|
|
|
|
|
a1 , b1 , c1 , |
|
|
|
|
|
|
|
|
|
a2 , b2 , c2 |
|
|
|
|
|
|
|
|
|
a1 b2 a2 b1 |
|
|
|
|
|
|
|
|
|
x c1 b2 c2 b1 |
|
|
|
|
|
|
|
|
|
y a1 c2 a2 c1 |
|
|
|
|
|
|
|
|
Нет |
|
0 |
Да |
|
|
|
|
|
|
|
|
|
|
|
|
||
Нет |
x 0 и y 0 |
|
Да |
x |
x |
, y |
|
y |
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
||
Не имеет |
|
Множество |
Единственное |
|
|||||
решений |
|
решений |
|
решение |
|
|
x, y
Конец
14
Введем обозначения:
a1 a1 |
b1 b1 |
c1 c1 |
a2 a2 |
b2 b2 |
c2 c2 |
det |
x detx |
y dety |
ПРОГРАММА
CLS
'Вводим значения коэффициентов построчно
INPUT “a1, b1, c1=”;a1, b1, c1 INPUT “a2, b2, c2=”;a2, b2, c2
'Вычисляем определители , x , y .
det=a1*b2-a2*b1 detx=c1*b2-c2*b1 dety=a1*c2-a2*c1
IF det<>0 THEN x=detx/det: y=dety/det
PRINT “Единственнон решение:”
PRINT “x=”;x, “y=”;y
ELSE
IF detx=0 AND dety=0 THEN
PRINT “Множество решений”
ELSE
PRINT “Нет решений”
ENDIF
ENDIF
END
Ветку ELSE первого оператора IF можно было оформить по другому. Попробуйте сделать это самостоятельно, предварительно изучив ещѐ одну форму записи оператора IF, т. е. блочную расширенную форму, рассмотренную ниже.
15
![](/html/2706/173/html_4AORAzYUVd.2cMa/htmlconvd-31RoYj16x1.jpg)
БЛОЧНАЯ РАСШИРЕННАЯ ФОРМА ОПЕРАТОРА IF…THEN…ELSE
Если необходимо осуществить проверку более сложных условий, чем ДА/НЕТ можно использовать либо блочную расширенную форму оператора IF … THEN … ELSE, либо оператор SELECT…
END SELECT.
IF {логическое выражение-1} THEN
последовательность операторов, которая выполняется в том случае, если логическое выражение-1 принимает значение «истинна»
ELSEIF {логическое выражение-2} THEN
последовательность операторов, которая выполняется в том случае, если логическое выражение-2 принимает значение «истинна»
...
ELSE
последовательность операторов, которая выполняется в том случае, если все предшествующие логические выражения имели значение «ложь»
ENDIF
Пример 6.
Дано действительное число а. Вычислить f (a), если
0 |
|
при x 0; |
|
|
при 0 x 1; |
f x x |
|
|
|
4 |
в остальных случаях. |
x |
|
Начало
Программа
a
|
|
|
|
|
Нет |
a 0 |
Да |
|||
|
Нет |
a |
|
1 |
Да |
|
|
|||
|
|
|
|
|
|
|||||
|
|
|
y |
0 |
||||||
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
y a 4 |
|
|
|
y |
a |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
y
CLS
INPUT "a="; a IF a <= 0 THEN
y = 0
ELSEIF a <= 1 THEN y = a
ELSE
y = a ^ 4
END IF
PRINT "y="; y END
Конец
16
![](/html/2706/173/html_4AORAzYUVd.2cMa/htmlconvd-31RoYj17x1.jpg)
9 |
|
|
|
|
|
|
Пример 8. |
|
|
|
|
|
|||
8 |
|
|
|
|
|
|
|
|
|
|
|
||||
7 |
|
|
|
|
|
|
Дано |
действительное |
число |
|
|||||
6 |
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
y=(x-3) |
2 |
-9 |
|
|
х. Вычислить f (х), |
если функ- |
|
|||||||
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
ция задана графически на рис. |
|
||||||||
3 |
|
|
|
|
|
|
|
||||||||
21 y=-x3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-4 -3 -2 -1-1 0 1 2 3 4 5 6 7 8 |
|
|
|
|
|
|
|
|
|
|
|
||||
-2 |
|
|
|
|
|
|
|
|
Алгоритм решения задачи: |
|
|||||
|
|
|
|
|
|
|
|
|
|
||||||
-3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-4 |
|
|
|
|
|
|
|
|
Прежде |
чем |
приступать |
к |
|||
|
|
|
|
|
|
|
|
|
|||||||
-5 |
|
|
|
|
написанию программы, |
необходимо |
|||||||||
-6 |
|
|
|
|
|||||||||||
-7 |
|
|
|
|
записать |
аналитический |
вид |
данной |
|||||||
-8 |
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
-9 |
|
|
|
|
функции. |
На |
промежутке |
( ; 2) |
|||||||
|
|
|
|
|
|||||||||||
-10 |
|
|
|
|
функция имеет вид y=8, на проме- |
||||||||||
|
|
|
|
|
|||||||||||
жутке [ 2;2] функция имеет вид y=x3, на промежутке |
(2; ) функция |
||||||||||||||
имеет вид y (x 3)2 |
9 . |
|
|
|
|
|
|
|
|
|
|
|
|||
Таким образом, функцию можно записать следующим обра- |
|||||||||||||||
зом: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8, |
|
|
|
если x 2 |
|
|
|
|
||
|
|
|
|
|
|
3 |
, |
если - 2 x 2 |
|
|
|
|
|||
|
|
|
|
f (x) x |
|
|
|
|
|
||||||
|
|
|
|
|
|
3) |
2 |
9, если x 2 |
|
|
|
|
|||
|
|
|
|
|
(x |
|
|
|
|
|
|||||
|
|
Начало |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
x |
|
|
|
|
|
Программа |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CLS |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Нет |
|
x 2 |
Да |
|
|
|
|
INPUT "x="; x |
|
|
||||
|
|
|
|
|
|
IF x < -2 THEN |
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
||||||
Нет |
Да |
|
|
|
|
y 8 |
y = 8 |
|
|
|
|
||||
x 2 |
|
|
|
|
|
|
|
|
|
ELSEIF x > 2 THEN |
|
||||
y x3 |
y (x 3)2 9 |
|
|
|
|
|
|
y = (x-3)^2-9 |
|
||||||
|
|
|
|
|
|
|
|
|
|
|
ELSE |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
y = -x ^ 3 |
|
|
END |
IF |
|
PRINT "y="; y |
|
y |
END |
|
Конец
17
Оператор выбора SELECT… END SELECT
Подобные длинные цепочки условных проверок можно записать и по-другому — с помощью оператора выбора, т. е. выбора нужного блока операторов и зависимости от истинности одного из нескольких условий. Этот оператор представляет условия значительно нагляднее, чем блочная расширенная форма оператора
IF...THEN…ELSE.
SELECT CASE {главное_выражение} CASE {список_тестовых_условий1}
блок операторов -1
CASE {список_тестовых_условий2} блок операторов –2
… … …
CASE ELSE
блок операторов - n
END SELECT
Значение главного выражения в дальнейшем используется для проверки в тестовых условиях, начинающихся с ключевого слова
CASE.
Если одно из тестовых условий принимает значение «истинна», то выполняется соответствующий блок операторов, после этого управление передается оператору, следующему за END SELECT (конец выбора).
Блок операторов CASE ELSE выполняется только в том случае, если главное_выражение не удовлетворяет ни одному из тестовых_условий блоков CASE.
Если тест_выражение удовлетворяет нескольким условиям CASE, выполняется блок операторов, идущий первым.
Блоки SELECT CASE могут быть вложенными. Каждый блок должен иметь завершение END SELECT.
В качестве главного выражения может служить любое допустимое в Qbasic выражение, значение которого число или строка,
например, х, 5, (x + 10) * 4, s$ + «456»
18
Значение этого выражения проверяется в списках тестовых условий, каждое из которых может записываться в одной из трѐх допустимых форм:
1. Проверяемое значение должно равняться значению одного из перечисленных через запятую выражений, тогда считается, что данное тестовое условие истинно.
{список – выражений – через – запятую}
Например: CASE 1,23,x%+6
2. Проверяемое значение должно укладываться в диапазон значений.
{выражение – 1} TO {выражение – 2}
Например: CASE 5 TO 25
3. Проверяемое значение сравнивается с каким-либо выражением.
CASE IS {оператор_сравнения} {проверочное_выражение}
Ключевое слово IS обозначает значение главного выражения – оно сравнивается с проверочным выражением.
Например: CASE IS < 100
Данное тестовое условие окажется истинным, если значение главного выражения будет меньше, чем 100.
Для того чтобы окончательно разобраться в том, как работает оператор, напишем программу уже разобранной задачи из примера 6.
Программа
CLS
INPUT "a ="; a SELECT CASE a
CASE IS <= 0 y = 0
CASE IS > 1 y = a ^ 4
CASE ELSE y = a
END SELECT
PRINT "a="; a, "y="; y END
19
![](/html/2706/173/html_4AORAzYUVd.2cMa/htmlconvd-31RoYj20x1.jpg)
Пример 7.
Напишите программу решения квадратного уравнения ax2 bx c 0
Начало |
a, b, c |
D b2 4ac |
D
|
|
D=0 |
|
D>0 |
|
D<0 |
x |
b |
x1 |
|
b |
D |
Нет решений |
|
2a |
|
|
2a |
|
|
|
|
x2 |
|
b |
D |
|
|
|
2a |
|
|
||
x |
|
|
|
|
|
|
|
|
|
|
|
|
x1, x2
Конец
Программа
CLS
INPUT "a, b, c="; a, b, c D=b^2-4*a*c
SELECT CASE D CASE IS = 0
x = -b/(2*a)
?“x=”;x
CASE IS > 0
X1 = (-b+sqr(D)/(2*a)
X2 = (-b-sqr(D)/(2*a)
?“x1=”;x1^ ? “x1=”;x1
CASE ELSE
?“Нет решений !!!”
END SELECT END
20