Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Информатика_Тимохова_Ч2.doc
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
815.62 Кб
Скачать

5.2. Программы линейной структуры

Простейшие задачи имеют линейный алгоритм решения (или алгоритм следования). Это означает, что он не содержит проверок условий и повторений, может быть изображена любая последовательность операторов, выполняющихся один за другим, имеющая один вход и один выход.

Следование – самая важная из структур. Она означает, что действия могут быть выполнены друг за другом (рисунок 5.4):

Рис. 5.4. Структура «Следование»

Эти прямоугольники могут представлять как одну единственную команду, так и множество операторов, необходимых для выполнения сложной обработки данных.

Пример 1. Пешеход шел по пересеченной местности. Его скорость движения по равнине v1 км/ч, в гору – v2 км/ч и под гору – v3 км/ч. Время движения соответственно t1, t2 и t3 ч. Какой путь прошел пешеход?

Для решения этого примера используем структуру «Следование» в блок-схеме на рисунке 5.5:

1. Ввести v1, v2, v3, t1, t2, t3.

2. S1 := v1 * t1.

3. S2 := v2 * t2.

4. S3 := v3 * t3.

5. S := S1 + S2 + S3.

6. Вывести значение S.

7. Конец.

Рис. 5.5. – Блок-схема для решения примера 1

Для проверки работоспособности алгоритма необходимо задать значения входных переменных, вычислить конечный результат по алгоритму и сравнить с результатом ручного счета.

Пример 2. Дано натуральное трехзначное число n, в записи которого нет нулей. Составить алгоритм, который возвращает значение ИСТИНА, если верно утверждение: «число n кратно каждой своей цифре», и ЛОЖЬ – в противном случае.

Для написания данной блок-схемы (рисунок 5.6) так же используем структуру «Следование».

1. Ввести число n

2. A := n mod 10 {разряд единиц}

3. B := n div 100 {разряд сотен}

4. C := n div 10 mod 10 {десятки}

5. L := (n mod A=0) and (n mod B=0) and (n mod C=0)

6. Вывод L

7. Конец

Рис. 5.6. – Блок-схема для решения примера 2

На приведенной выше схеме DIV и MOD соответственно операции деления нацело и получения остатка от целочисленного деления. В фигурных скобках записаны пояснения (комментарии) к операторам (рис. 5.6.).

5.3. Разветвляющаяся алгоритмическая структура

Достаточно часто то или иное действие должно быть выполнено в зависимости от значения логического выражения, выступающего в качестве условия. В таких случаях используется развилка (ветвление).

Ветвление – это структура, обеспечивающая выбор между двумя альтернативами (рисунок 5.7). Выполняется проверка, а затем выбирается один из путей:

Рис. 5.7. – Структура «Ветвление»

Эта структура называется также «ЕСЛИ – ТО – ИНАЧЕ». Каждый из путей (ТО или ИНАЧЕ) ведет к общей точке слияния, так что выполнение программы продолжается независимо от того, какой путь был выбран.

Может оказаться, что для одного из результатов проверки ничего предпринимать не надо. В этом случае можно применять только один обрабатывающий блок (рисунок 5.8):

Рис. 5.8. – Структура «Неполное ветвление»

Пример 3. Вычислить значение функции

Для решения этого примера блок-схема представлена на рисунке 5.9:

1. Ввести x.

2. Если x<=-12, то y:=-x2

3. Если x<0, то y:=x4

4. y := x–2

5. Вывести y

6. Конец

Рис. 5.9. – Блок-схема для решения примера 3

При тестировании алгоритмов с развилкой необходимо подбирать такие исходные данные, чтобы можно было проверить все ветви. В приведенном выше примере должно быть по крайней мере три тестовых набора.

Пример 4. Дано натуральное число n. Если число нечётное и его удвоение не приведет к выходу за 32767 (двухбайтовое целое число со знаком), удвоить его, иначе – оставить без изменения.

Чтобы удовлетворить условию удвоения, число n должно быть нечетным и меньше 16384.

Блок-схема для решения этого примера представлена на рисунке 5.10:

1. Ввести число n

2. Если число n нечетное и меньше 16384, то n := n*2

3. Вывод n

4. Конец

Рис. 5.10 – Блок-схема для решения примера 4

Рассмотренный пример иллюстрирует неполную развилку. Также следует отметить, здесь логическое выражение, являющееся условием, содержит 2 операнда.