В Камаев - Технологии программирования
- Название:Технологии программирования
- Автор:
- Жанр:
- Издательство:Издательство «Высшая школа»
- Год:2006
- Город:Москва
- ISBN:5-06-004870-5
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
В Камаев - Технологии программирования краткое содержание
Второе издание (1-е — 2005 г.) дополнено главами по структуре данных и основам инженерии создания программ.
Для студентов вузов, обучающихся по направлению «Информатика».
Технологии программирования - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Макет изображения экрана монитора также является тестом. На основе первичных тестовых примеров и организации входной и выходной информации готовится или один тест, или несколько обобщающих тестов. Все составленные тесты для решения квадратного уравнения вошли в обобщающий тест.
Разработка наглядных тестов. Для простейшего алгоритма решения квадратного уравнения первичные тесты вместе с математическими формулами уже обладают наглядностью. Продолжим составление программы решения квадратного уравнения.
Первоначально нужно выполнить действия, определенные макетом изображения на экране монитора, так как для выполнения алгоритма решения квадратного уравнения необходимы исходные данные в виде коэффициентов a, b, c. Однако вводу должен предшествовать вывод информации, поясняющей назначение программы и суть очередной вводимой порции данных. Это предопределяет первичную детализацию одиночное СЛЕДОВАНИЕ в ЦЕПОЧКУ СЛЕДОВАНИЙ. Первичное одиночное СЛЕДОВАНИЕ не может содержать входной и выходной информации. Входная информация должна либо быть введена, либо присвоена. Выходная информация по завершении программы никого не интересует. Итак, ниже представлена цепочка последовательных действий.

Рис. 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 на новую строку.
Теперь осуществляем декомпозицию действия "Само решение квадратного уравнения".
Многовариантность вычислений предполагает цепочку альтернатив. Анализируя математические формулы обобщающего теста, табл. 5.3 и состав наборов выходной информации, выявляем, что ЦЕПОЧКА АЛЬТЕРНАТИВ содержит четыре альтернативных действия. Строкам с 1-й по 3-ю табл. 5.3 соответствует одно действие, поскольку для их выполнения требуется уже вычисленное значение дискриминанта d. Записываем комментарий предшествующего СЛЕДОВАНИЯ всей ЦЕПОЧКИ АЛЬТЕРНАТИВ, набор входной информации (выходной информации — нет) и оформляем заготовку операторов ЦЕПОЧКИ АЛЬТЕРНАТИВ вместе с подчиненными СЛЕДОВАНИЯМИ:
Входная информация: a, b, c
{ Само решение квадратного уравнения }
if
then
begin
{ Продолжение решения с вычислением дискриминанта }
end;
if
then
begin
{ Решение линейного уравнения }
end;
if
then
begin
{ Ввод сообщения: линейное уравнение не имеет решения }
Интервал:
Закладка: