Рис. 5.16. Макет изображения экрана монитора
ClrScr; {Очистка экрана}
{Вывод информации о назначении программы}
WriteLn ('Программа решения квадратного уравнения');
WriteLn ('вида а*x*x + b*x + с = 0 с произвольны',
'ми значениями');
WriteLn ('коэффициентов a, b, c типа вещественный');
WriteLn;
{Ввод значений коэффициентов a, b, c}
Write ('Укажите значение коэффициента а = ');
ReadLn (a); {Ввод а}
Write ('Укажите значение коэффициента b = ');
ReadLn (b); {Ввод b}
Write ('Укажите значение коэффициента с = ');
ReadLn (с); {Ввод с}
{ Вывод проверочно-протокольной информации
о введенных значениях коэффициентов a, b, c}
WriteLn;
WriteLn ('Решается квадратное уравнение');
WriteLn (а:10:4, '*x*x + ', b:10:4, '* x + ',
с:10:4, ' = 0:'); { Само решение квадратного уравнения }
WriteLn;
Write ('Для завершения программы нажмите');
WriteLn (' любую клавишу…');
Repeat until KeyPressed; { Цикл ожидания нажатия
любой клавиши }
Действие "Очистка экрана" — артефакт реализации, а не задачи, но насколько приятнее обозревать экран без "лишней информации". Также артефактом реализации явились два последних оператора, которые обеспечивают удобство просмотра результатов работы программы. При отсутствии этих операторов и нахождении в оболочке Turbo Pascal для просмотра результатов работы программы пришлось бы вручную переключиться в окно результатов.
Написание операторов WriteLn, Write, ReadLn не вызвало затруднений благодаря заранее подготовленному макету изображения экрана монитора.
Действие "Само решение квадратного уравнения" представлено комментарием и пустой строкой, отмечающей факт добавления действий в будущем. Это объясняется тем, что решение и вывод результатов решения многовариантны, а, следовательно, действие "Само решение квадратного уравнения" нельзя представить ЦЕПОЧКОЙ СЛЕДОВАНИЙ. Многовариантность предполагает управляющие структуры.
Уточняем комментарии, операторы вывода Write и WriteLn.
Проводим проверку информационной согласованности СЛЕДОВАНИЙ в цепочке. Убеждаемся, что все последующие действия обеспечены информацией, определенной предшествующими действиями, в конкретном случае — операторами ReadLn. Особое внимание обращаем на действия, использующие ранее определенную информацию. Это оператор
WriteLn (a:10:4, '*x*x + ', b:10:4, '*x + ', c: 10:4, ' = 0: ');
и будущее действие
{ Само решение квадратного уравнения }.
Убеждаемся, что к моменту их выполнения значения коэффициентов a, b, c уже определены. Теперь можно собрать реализованную часть программы и путем ее выполнения на тестах убедиться, что действия ввода и вывода введенной информации программы исполняются корректно.
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 на новую строку.
Теперь осуществляем декомпозицию действия "Само решение квадратного уравнения".
Читать дальше