6. Примеры блок-схем
Пример 1.1. Вычисление длины гипотенузы по катетам
Задача. Даны два вещественных числа, являющихся величинами катетов некоторого прямоугольного треугольника. Вычислить длину гипотенузы этого треугольника.
Решение.
Анализ задачи.
1. Входные данные. Входными данными являются длины катетов x и y.
2. Результат. Результатом работы алгоритма является вычисленное значение гипотенузы z.
3. Формулы. Будем вычислять гипотенузу по формуле Пифагора
.
Проектирование алгоритма.
1. Нарисуем общую блок-схему решения задачи, являющуюся блок-схемой решения любой задачи. Это блок-схема типа «следование». Она изображена на рис. 1.6.
В простых задачах, которые здесь рассматриваются, единственное действие – «полный алгоритм решения задачи» – всегда можно заменить последовательностью трех действий. Соответствующая блок-схема изображена на рис. 1.7.
2. Детализируем главный алгоритм (рис. 1.8). Для этого напишем входные данные и результат в явном виде.
Рис. 1.8. Алгоритм вычисления гипотенузы по катетам
Тестирование алгоритма.
Осталось протестировать этот алгоритм вычисления гипотенузы. Расставим на алгоритме контрольные точки A, B, C (рис. 1.8). Контрольные точки ставятся везде, где вводятся или изменяются данные, т. е. после каждого ввода и каждого действия алгоритма (на блок-схеме контрольные точки ставятся после всех параллелограммов и прямоугольников, кроме вывода данных).
Исполнитель начинает выполнять алгоритм с его начала. При движении по алгоритму его активная точка проходит сначала контрольную точку A, затем B и наконец C.
Зададим входные данные. Пусть катет x = 3, а катет y = 4. Тогда по формуле Пифагора гипотенуза такого прямоугольного треугольника должна быть z = 5. Разберем работу алгоритма, представленного на рис. 1.8. Для этого составим табл. 1.2 из значений данных в контрольных точках.
Таблица 1.2
Тестирование алгоритма вычисления гипотенузы по катетам
Контрольная точка |
Значения данных |
A |
x = 3, y = 4 |
B |
x = 3, y = 4, z = 5 |
C |
x = 3, y = 4, z = 5 |
Итак, с помощью алгоритма вычислено значение гипотенузы z = 5, что совпадает с расчетным значением. Поскольку алгоритм простой, то, скорее всего, он работает правильно. Для большей уверенности в правильной работе алгоритма желательно проверить его еще на нескольких более сложных тестах.
Пример 1.2. Наибольшее среди вещественных чисел.
Задача. Даны два вещественных числа а, b (а ≠ b). Найти наибольшее среди них.
Решение.
Анализ задачи.
1. Входные данные. Из условия задачи следует, что входными данными являются два вещественных числа a и b.
2. Результат. Результатом работы алгоритма является вывод значения, равного наибольшему из двух чисел.
3. Формулы. Чтобы найти наибольшее из двух вещественных чисел, необходимо сравнить их.
Проектирование алгоритма.
Детализируем общую блок-схему (см. рис. 1.7): запишем входные данные в явном виде.
Тестирование алгоритма.
При тестировании расставим на алгоритме контрольные точки A, B, C, D (рис. 1.9). При движении по алгоритму активная точка исполнителя проходит не все контрольные точки!
Рис. 9. Алгоритм нахождения наибольшего из двух чисел
Тест 1. Зададим значения двух переменных a = 4, b = 3. Протестируем алгоритм и запишем значения переменных в контрольных точках (табл. 1.3). Полученная последовательность контрольных точек показывает, по каким ветвям выбора проходит исполнитель: точка С пропущена.
Проектирование алгоритма.
Детализируем общую блок-схему (см. рис. 1.7):
1) напишем входные данные в явном виде;
2) выведем сообщение о величине суммы.
Заметим, что текущее слагаемое суммы (п. 1) имеет вид i. Тогда сумму можно накопить в сумматоре, если:
1) присвоить сумматору начальное значение S = 0;
2) прибавлять к сумматору в цикле переменную i, изменяя ее от 1 до n.
Способ 1. Алгоритм с использованием структуры «цикл-пока».
Результат проектирования представлен на рис. 1.10.
Тестирование алгоритма.
При тестировании расставим на алгоритме контрольные точки A, B, C, D (рис. 1.10). Зададим количество суммируемых первых натуральных чисел n = 4. Получим значение суммы первых пяти натуральных чисел S = 10. Протестируем алгоритм и запишем значения переменных в контрольных точках (табл. 1.5).
Тестирование алгоритма нахождения суммы ряда
(структура «цикл-пока»)
Контрольная точка |
Значения данных |
A |
n = 4 |
B |
n = 4, S = 0, i = 1 |
условие |
1 < = 4 – истина (да) |
С |
n = 4, S = 1, i = 2 |
условие |
2 < = 4 – истина (да) |
С |
n = 4, S = 3, i = 3 |
условие |
3 < = 4 – истина (да) |
С |
n = 4, S = 6, i = 4 |
условие |
4 < = 4 – истина (да) |
С |
n = 4, S = 10, i = 5 |
условие |
5 < = 4 – ложь (нет) |
D |
n = 4, S = 10, i = 5 |
Способ 2. Алгоритм с использованием структуры «цикл-до».
Результат проектирования представлен на рис. 1.11.
Тестирование алгоритма.
При тестировании расставим на алгоритме контрольные точки A, B, C, D (рис. 1.11).
Рис. 1.11. Алгоритм нахождения суммы ряда (структура «цикл-до»)
Зададим количество суммируемых первых натуральных чисел n = 4. Получим значение суммы первых пяти натуральных чисел S = 10. Протестируем алгоритм и запишем значения переменных в контрольных точках (табл. 1.6).
Таблица 1.6
Тестирование алгоритма нахождения суммы ряда
(структура «цикл-до»)
Контрольная точка |
Значения данных |
A |
n = 4 |
B |
n = 4, S = 0, i = 1 |
С |
n = 4, S = 1, i = 2 |
условие |
2 > 4 – ложь (нет) |
С |
n = 4, S = 3, I = 3 |
условие |
3 > 4 – ложь (нет) |
С |
n = 4, S = 6, i = 4 |
условие |
4 > 4 – ложь (нет) |
С |
n = 4, S = 10, i = 5 |
условие |
5 > 4 – истина (да) |
D |
n = 4, S = 10, i = 5 |
Способ 3. Алгоритм с использованием структуры «цикл с параметром».
Результат проектирования представлен на рис. 1.12.
Рис. 1.12. Алгоритм нахождения суммы ряда (структура «цикл с параметром»)
Тестирование алгоритма.
При тестировании расставим на алгоритме контрольные точки A, B, C, D (рис. 1.12). Зададим количество суммируемых первых натуральных чисел n = 4. Получим значение суммы первых пяти натуральных чисел S = 10. Протестируем алгоритм и запишем значения переменных в контрольных точках (табл. 1.7).
Тестирование алгоритма нахождения суммы ряда
(структура «цикл с параметром»)
Контрольная точка |
Значения данных |
A |
n = 4 |
B |
n = 4, S = 0 |
С |
n = 4, i = 1, S = 1 |
С |
n = 4, i = 2, S = 3 |
С |
n = 4, i = 3, S = 6 |
С |
n = 4, i = 4, S = 10 |
D |
n = 4, i = 4, S = 10 |
