Технологии программирования | страница 128
>Program Kvadrat;
>{ Программа решения квадратного уравнения
>вида а*х*х + Ь*х + с = 0 с произвольными значениями
>коэффициентов а, Ь, с типа вещественный }
>Uses
>Crt, Dos;
>Var
>a, b, c: Real; {Коэффициенты квадратного уравнения}
>xl, x2: Real; {Корни квадратного уравнения}
>begin
>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 соответствует одно действие, поскольку для их выполнения требуется уже вычисленное значение дискриминанта d. Записываем комментарий предшествующего СЛЕДОВАНИЯ всей ЦЕПОЧКИ АЛЬТЕРНАТИВ, набор входной информации (выходной информации — нет) и оформляем заготовку операторов ЦЕПОЧКИ АЛЬТЕРНАТИВ вместе с подчиненными СЛЕДОВАНИЯМИ:
Входная информация: a, b, c
>{ Само решение квадратного уравнения }
>if
>then
>begin
>{ Продолжение решения с вычислением дискриминанта }
>end;
>if
>then
>begin
>{ Решение линейного уравнения }
>end;
>if
>then
>begin
>{ Ввод сообщения: линейное уравнение не имеет решения }
>WriteLn ("Нет решения ')
>end;
>if
>then
>begin
>{ Вывод сообщения: бесчисленное множество решений уравнения }
>Write ('бесчисленное множество решений уравне');
>WriteLn ('ния (корни — любые числа)');
>end;
В последней альтернативе одна строка выводится одним оператором.
Далее в соответствии с действиями запишем логические условия выполнения действий. При этом простым сравнением проверять на равенство значения двух вещественных переменных нельзя. Например, при сравнении f =