ClrScr; {Очистка экрана}
{Вывод информации о значении программы}
WriteLn ('Программа решения квадратного уравнения');
Write (
'вида а*х*х + b*х + с = 0 с произвольными');
Write ('значениями');
WriteLn ('коэффициентов а, b, с типа вещественный');
WriteLn
{Ввод значений коэффициентов a, b, c}
Write ('Укажите значение коэффициента а = ');
ReadLn (a); { Ввод а}
Write ('Укажите значение коэффициента b = ');
ReadLn (b); { Ввод b}
Write ('Укажите значение коэффициента с = ');
ReadLn (c); { Ввод с}
{ Вывод проверочно-протокольной информации
о введенных значениях коэффициентов а, Ь, с }
WriteLn;
WriteLn ('Решается квадратное уравнение');
Write (a:10:4, '*x*x + ', b:10:4, '*x + ');
WriteLn (c:10:4, ' = 0: ');
{ Само решение квадратного уравнения }
WriteLn;
WriteLn ('Для завершения программы нажмите ',
'любую клавишу…');
repeat until KeyPressed; { Цикл ожидания нажатия
любой клавиши}
end.
При сборке программы пришлось осуществить перенос части оператора WriteLn на новую строку.
Теперь осуществляем декомпозицию действия "Само решение квадратного уравнения".
Многовариантность вычислений предполагает цепочку альтернатив. Анализируя математические формулы обобщающего теста, табл. 5.3 и состав наборов выходной информации, выявляем, что ЦЕПОЧКА АЛЬТЕРНАТИВ содержит четыре альтернативных действия. Строкам с 1-й по 3-ю табл. 5.3 соответствует одно действие, поскольку для их выполнения требуется уже вычисленное значение дискриминанта
Входная информация: a, b, c
{ Само решение квадратного уравнения }
if
then
begin
{ Продолжение решения с вычислением дискриминанта }
end;
if
then
begin
{ Решение линейного уравнения }
end;
if
then
begin
{ Ввод сообщения: линейное уравнение не имеет решения }
WriteLn ("Нет решения ')
end;
if
then
begin
{ Вывод сообщения: бесчисленное множество решений уравнения }
Write ('бесчисленное множество решений уравне');
WriteLn ('ния (корни — любые числа)');
end;
В последней альтернативе одна строка выводится одним оператором.
Далее в соответствии с действиями запишем логические условия выполнения действий. При этом простым сравнением проверять на равенство значения двух вещественных переменных нельзя. Например, при сравнении f =
Для надежного сравнения двух вещественных чисел используют прием использования неравенства |f — g| ≤ ε, где ε — заведомо малое число. На языке программирования это неравенство имеет вид
Abs (f — g) <= 1е — 6
Продолжаем кодирование структуры. Глядя на действия, записываем логические условия выполнения действий. Входная информация: a, b, c.
{ Само решение квадратного уравнения }
if (Abs(а) > 1e — 6)
then
begin
{ Продолжение решения с вычислением дискриминанта }
end;
if ((Abs (a) <= 1e — 6) and (Abs (b) > 1e — 6))
then
begin
{ Решение линейного уравнения }
end;
if ((Abs(a) <= 1e — 6) and (Abs(b) <= 1e — 6 and (Abs(c) >
1e — 6))
then
begin
{ Вывод сообщения: линейное уравнение не имеет решения }
WriteLn ('Нет решения');
end;
Вильям Л Саймон , Вильям Саймон , Наталья Владимировна Макеева , Нора Робертс , Юрий Викторович Щербатых
Зарубежная компьютерная, околокомпьютерная литература / ОС и Сети, интернет / Короткие любовные романы / Психология / Прочая справочная литература / Образование и наука / Книги по IT / Словари и Энциклопедии