ВУЗ:
Составители:
Рубрика:
67
Первый шаг решения.
if a>b
then { max(a,c) }
else { max(b,c) }.
Сейчас исходная задача упростилась и свелась к двум, решать которые мы
уже умеем.
Второй шаг решения. { max(a,c) }
if a>c
then m:=a
else m:=c.
Третий шаг решения. { max(b,c) }
if b>c
then m:=b
else m:=c.
Сейчас можно собрать решение исходной задачи из отдельных частей:
if a>b
then if a>c
then m:=a { 1 }
else m:=c { 2 }
else if b>c
then m:=b { 3 }
else m:=c. { 4 }
Здесь применяется метод пошаговой детализации (см. стр.49). Исходная
задача разбивается на ряд частей (подзадач). Каждая подзадача
представляет
собой менее сложную задачу, которая так же подвергается разбиению на
подзадачи. На каждом шаге подзадачи представляются с помощью одной из
трех основных алгоритмических структур: линейной, ветвящейся или
циклической. Разбиение продолжается до тех пор, пока не получатся
элементарные задачи, каждая из которых может быть реализована одним из
операторов алгоритмического языка.
На каждом шаге разбиений все
полученные подзадачи могут быть представлены вызовами вспомогательных
алгоритмов (процедур и функций) и протестированы до завершения всей
разработки.
В этом методе любой алгоритм получается как суперпозиция (вложение)
трех названных выше структур. Здесь отпадает надобность в использовании
оператора «go to», который запутывает алгоритм, делает трудным его
понимание, тестирование и
сопровождение. Без использования этого оператора
процесс построения не сильно усложняется, зато алгоритмы получаются
наглядными, хорошо читаемыми, в них меньше вероятность допустить ошибки,
легче их обнаружить и исправить. В дальнейшем все алгоритмы будут
строиться с использованием этого метода.
Вернемся к решению 1 задачи 9.25. В этом решении четыре ветви. Для
тестирования потребуется как
минимум четыре теста, чтобы пройти по каждой
ветви алгоритма хотя бы по одному разу.
1-я ветвь: a=3, b=2, c=1; m=3 (a>b и a>c).
2-я ветвь: a=3, b=2, c=4; m=4 (b<a<=c).
67
Первый шаг решения.
if a>b
then { max(a,c) }
else { max(b,c) }.
Сейчас исходная задача упростилась и свелась к двум, решать которые мы
уже умеем.
Второй шаг решения. { max(a,c) }
if a>c
then m:=a
else m:=c.
Третий шаг решения. { max(b,c) }
if b>c
then m:=b
else m:=c.
Сейчас можно собрать решение исходной задачи из отдельных частей:
if a>b
then if a>c
then m:=a {1}
else m:=c {2}
else if b>c
then m:=b { 3 }
else m:=c. { 4 }
Здесь применяется метод пошаговой детализации (см. стр.49). Исходная
задача разбивается на ряд частей (подзадач). Каждая подзадача представляет
собой менее сложную задачу, которая так же подвергается разбиению на
подзадачи. На каждом шаге подзадачи представляются с помощью одной из
трех основных алгоритмических структур: линейной, ветвящейся или
циклической. Разбиение продолжается до тех пор, пока не получатся
элементарные задачи, каждая из которых может быть реализована одним из
операторов алгоритмического языка. На каждом шаге разбиений все
полученные подзадачи могут быть представлены вызовами вспомогательных
алгоритмов (процедур и функций) и протестированы до завершения всей
разработки.
В этом методе любой алгоритм получается как суперпозиция (вложение)
трех названных выше структур. Здесь отпадает надобность в использовании
оператора «go to», который запутывает алгоритм, делает трудным его
понимание, тестирование и сопровождение. Без использования этого оператора
процесс построения не сильно усложняется, зато алгоритмы получаются
наглядными, хорошо читаемыми, в них меньше вероятность допустить ошибки,
легче их обнаружить и исправить. В дальнейшем все алгоритмы будут
строиться с использованием этого метода.
Вернемся к решению 1 задачи 9.25. В этом решении четыре ветви. Для
тестирования потребуется как минимум четыре теста, чтобы пройти по каждой
ветви алгоритма хотя бы по одному разу.
1-я ветвь: a=3, b=2, c=1; m=3 (a>b и a>c).
2-я ветвь: a=3, b=2, c=4; m=4 (bСтраницы
- « первая
- ‹ предыдущая
- …
- 63
- 64
- 65
- 66
- 67
- …
- следующая ›
- последняя »
