Пример решения задачи
Постановка задачи
Исходные данные и результат
Анализ
Проектирование
Программирование
Программирование
Программирование
Программирование
Тестирование
Тестирование
Тестирование
Спасибо за внимание!
103.93K
Категория: ПрограммированиеПрограммирование

Найти корни квадратного уравнения Ax2+Bx+C=0

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

Марквирер Владлена Дмитриевна
[email protected]

2. Постановка задачи

Найти корни квадратного уравнения Ax2+Bx+C=0.
Для решения поставленной задачи необходимо:
• выделить исходные данные и ожидаемый результат;
• провести анализ данных;
• выполнить проектирование (составить алгоритм решения);
• написать программу;
• проверить программу с помощью тестирования.
30.09.2019
НИУ ВШЭ, г. Пермь
2

3. Исходные данные и результат

Найти корни квадратного уравнения Ax2+Bx+C=0.
Исходные данные и результат
Исходные данные:
A, B, C
Результат:
есть корни или нет, если корни есть, то их значения.
30.09.2019
НИУ ВШЭ, г. Пермь
3

4. Анализ

Найти корни квадратного уравнения Ax2+Bx+C=0.
Анализ
Входные
данные
A, B, C
30.09.2019
Классы
Не является вещественным
числом (т.е. не число вообще)
A=0, B=0, C=0
A=0, B=0, C≠0
A=0, B,С – любое
A≠0, B,C – любое, D<0
A≠0, B,C – любое, D>0
A≠0, B,C – любое, D=0
НИУ ВШЭ, г. Пермь
Выходные данные
Ошибка
x - любое
Нет решений
x
Нет решений
x1, x2
x1 = x2
4

5. Проектирование

Найти корни квадратного уравнения Ax2+Bx+C=0.
Проектирование
α
Начало
да
да
да
Ввод A
да
x – любое
А – не вещественное?
C=0?
A=0?
B=0?
нет
D=B2-4AC
нет
да
x=-C/B
нет корней
нет корней
нет
D<0?
да
x1=(-B+D½)/2A
x=-B/2A
x
x
нет
D=0?
нет
x2=(-B-D½)/2A
x1, x2
...
α
Конец
30.09.2019
НИУ ВШЭ, г. Пермь
5

6. Программирование

Найти корни квадратного уравнения Ax2+Bx+C=0.
Программирование
Объявление переменных:
double A,
double D;
double x;
bool ok =
30.09.2019
B, C; //коэффициенты
//дискриминант
//корень
false; //проверка ввода чисел
НИУ ВШЭ, г. Пермь
6

7. Программирование

Найти корни квадратного уравнения Ax2+Bx+C=0.
Программирование
Проверка ввода коэффициентов (аналогично для B, C):
Console.WriteLine("Введите значение коэффициента A: ");
do
{
string buf = Console.ReadLine();
ok = Double.TryParse(buf, out A);
if (!ok) Console.WriteLine("Ошибка! Введите
вещественное значение A!");
} while (!ok);
30.09.2019
НИУ ВШЭ, г. Пермь
7

8. Программирование

Найти корни квадратного уравнения Ax2+Bx+C=0.
Программирование
Решение для части зависимости корней от коэффициентов:
if (A == 0)
{
if (B == 0)
{
if (C == 0)
{
Console.WriteLine("Решением квадратного уравнения ({0})x^2+({1})x+({2})=0 может быть любое
число!",A,B,C);
}
else
{
Console.WriteLine("Уравнение ({0})x^2+({1})x+({2})=0 не имеет корней!", A, B, C);
}
}
else
{
x = -C / B;
Console.WriteLine("Квадратное уравнение ({0})x^2+({1})x+({2})=0 имеет 1 корень, равный «
+ x + "!", A, B, C);
}
}
else { … } // часть с дискриминантом на следующем слайде
30.09.2019
НИУ ВШЭ, г. Пермь
8

9. Программирование

Найти корни квадратного уравнения Ax2+Bx+C=0.
Программирование
Решение для части зависимости корней от коэффициентов:
D = B * B - 4 * A * C;
if (D < 0)
{
Console.WriteLine("Уравнение ({0})x^2+({1})x+({2})=0 не имеет корней, т.к. дискриминант меньше 0!", A, B, C);
}
else
{
if (D == 0)
{
x = -B / 2 * A;
Console.WriteLine("Уравнение ({0})x^2+({1})x+({2})=0 имеет 2 одинаковых корня, со значением " + x, A, B, C);
}
else
{
x = (-B + Math.Sqrt(D)) / (2 * A);
Console.Write("Решения квадратного уравнения ({0})x^2+({1})x+({2})=0: " + x, A, B, C);
x = (-B - Math.Sqrt(D)) / (2 * A);
Console.Write(" и "+x);
}
}
30.09.2019
НИУ ВШЭ, г. Пермь
9

10. Тестирование

Найти корни квадратного уравнения Ax2+Bx+C=0.
Тестирование
• Набор тестов:
T1
T2
T3
T4
T5
T6
T7
T8
T9
T10
T11
T12
Т13
A
0
0
0
0
0
1
1
1
ывсвс
-5,6
9
1
2
30.09.2019
B
C
Полученный результат
Ожидаемый результат
0
0
Решение уравнения - любое число
Решение уравнения - любое число
0
3
Нет действительных корней
Нет действительных корней
2
4
Одно решение: x=-2
Одно решение: x=-2
-2
4
Одно решение: x=2
Одно решение: x=2
2
-4
Одно решение: x=2
Одно решение: x=2
2
3
Нет действительных корней
Нет действительных корней
2
1
Два одинаковых корня со значением: -1 Два одинаковых корня со значением: -1
2
-3
x1=1, x2=-3
x1=1, x2=-3
Ошибка ввода коэффициента A
Ошибка ввода коэффициента A
dfvfgvg
Ошибка ввода коэффициента B
Ошибка ввода коэффициента B
-6
c!--d8/*Ошибка ввода коэффициента C
Ошибка ввода коэффициента C
3
0
x1=0, x2=-3
x1=0, x2=-3
0
x1=2, x2=-2
x1=2, x2=-2
-8
НИУ ВШЭ, г. Пермь
10

11. Тестирование

Найти корни квадратного уравнения Ax2+Bx+C=0.
Тестирование
• Набор тестов.
• Тестирование
по критериям
ЧЯ:
30.09.2019
T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11 T12 T13
Решение уравнения - любое число +
Нет действительных корней
+
+
Решение уравнения - один корень
+ + +
Решение уравнения - два
одинаковых корня, равных по
+
значению (т.е. дискриминант = 0)
Решение уравнения - два
+
+ +
различных корня
Ошибка ввода A
+
Ошибка ввода B
+
Ошибка ввода C
+
X>0
+ +
+
+
X<0
+
+ +
+ +
x=0
+
НИУ ВШЭ, г. Пермь
11

12. Тестирование

T1 T2 T3 T4 T5 T6 T7 T8 T9 T10 T11 T12 T13
do{}while
Тестирование
if
do{}while
• Набор тестов.
• Тестирование по критериям ЧЯ.
• Тестирование по критериям БЯ:
if
do{}while
if
if1
if2
if3
if11
if111
Найти корни квадратного уравнения Ax2+Bx+C=0.
30.09.2019
A=0?
B=0?
C=0?
D<0?
D=0?
НИУ ВШЭ, г. Пермь
1
n
0
+
1
n
0
+
1
n
0
+
+
+
+
+
+
T
T
T
T
T
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
12

13. Спасибо за внимание!

30.09.2019
НИУ ВШЭ, г. Пермь
13
English     Русский Правила