Понятие алгоритма. Изображение алгоритма в
виде блок-схемы.
Алгоритмы линейной и разветвляющейся структуры
1.1. Понятие алгоритма
Алгоритм - четкое описание
последовательности действий, которые необходимо выполнить при решении задачи.
Можно сказать, что алгоритм описывает процесс преобразования исходных данных в
результаты, т.к. для решения любой задачи необходимо:
- Ввести исходные данные.
- Преобразовать исходные данные в результаты
(выходные данные).
- Вывести результаты.
Разработка алгоритма решения задачи - это разбиение задачи на
последовательно выполняемые этапы, причем результаты выполнения предыдущих
этапов могут использоваться при выполнении последующих. При этом должны быть
четко указаны как содержание каждого этапа, так и порядок выполнения этапов.
Отдельный этап алгоритма представляет собой либо другую, более простую задачу,
алгоритм решения которой известен (разработан заранее), либо должен быть
достаточно простым и понятным без пояснений. Разработанный алгоритм можно
записать несколькими способами:
- на естественном языке;
- в виде блок-схемы;
- в виде R-схемы.
Рассмотрим пример алгоритма на естественном языке:
- Ввести в компьютер числовые значения переменных а, b и с.
-
Вычислить d по формуле d = b2 - 4ас.
-
Если d < 0, то напечатать сообщение "Корней нет" и перейти к
п.4. Иначе вычислить и напечатать значения x1
и x2.
- Прекратить вычисления.
1.2. Изображение алгоритма в виде блок-схемы
Блок-схемой называется наглядное графическое
изображение алгоритма, когда отдельные его этапы изображаются при помощи
различных геометрических фигур - блоков, а связи между этапами
(последовательность выполнения этапов) указываются при помощи стрелок,
соединяющих эти фигуры. Блоки сопровождаются надписями. Типичные действия
алгоритма изображаются следующими геометрическими фигурами:
Блок начала-конца алгоритма (рис. 1.1). Надпись на блоке:
"начало" ("конец").
Блок ввода-вывода данных (рис. 1.2). Надпись на блоке: слово
"ввод" ("вывод" или "печать") и список вводимых (выводимых) переменных.
|
|
Рис. 1.1. Блок начала-конца алгоритма |
Рис. 1.2. Блок ввода-вывода данных |
Блок решения или арифметический
(рис. 1.3). Надпись на блоке: операция или группа операций.
Условный блок (рис. 1.4). Надпись на блоке: условие. В
результате проверки условия осуществляется выбор одного из возможных путей
(ветвей) вычислительного процесса. Если условие выполняется, то следующим
выполняется этап по ветви "+", если условие не выполняется, то выполняется этап
по ветви "–".
|
|
Рис. 1.3. Арифметический блок |
Рис. 1.4. Условный блок |
В качестве примера рассмотрим блок-схему алгоритма решения уравнения (рис.
1.5), описанного в предыдущем подразделе.
|
Рис. 1.5. Блок-схема алгоритма решения квадратного уравнения |
1.3. Алгоритмы линейной структуры
Линейный алгоритм - это такой, в котором все
операции выполняются последовательно одна за другой (рис. 1.6).
|
Рис. 1.6 Размещение блоков в линейном алгоритме |
Рассмотрим несколько примеров линейных алгоритмов.
ПРИМЕР 1.1. Зная длины трех сторон
треугольника, вычислить площадь и периметр треугольника.
Пусть a, b, c - длины сторон треугольника. Необходимо найти
S - площадь треугольника, P - периметр.
Для нахождения площади можно воспользоваться формулой Герона: |
|
где r - полупериметр. |
|
Входные данные:
a, b, c.
Выходные данные: S, P.
Блок-схема алгоритма представлена на рис. 1.7.
|
Рис. 1.7. Алгоритм примера 1.1 |
Внимание!!! В этих блоках знак "="
означает не математическое равенство, а операцию присваивания. Переменной,
стоящей слева от оператора, присваивается значение, указанное справа. Причем это
значение может быть уже определено или его необходимо вычислить с помощью
выражения. Например, операция r = (a+b+c)/2 - имеет смысл (переменной r
присвоить значение r=(a+b+c)/2), а выражение (a+b+c)/2=r - бессмыслица.
ПРИМЕР 1.2. Известны плотность и
геометрические размеры цилиндрического слитка, полученного в металлургической
лаборатории. Найти объем, массу и площадь основания слитка.
Входные данные: R - радиус основания цилиндра,
h - высота цилиндра, ?- плотность материала
слитка.
Выходные данные: m - масса слитка, V -
объем, S - площадь основания.
Блок-схема представлена на рис. 1.8.
Рис. 1.8. Алгоритм примера 1.2 |
ПРИМЕР 1.3. Заданы длины двух катетов в
прямоугольном треугольнике. Найти длину гипотенузы, площадь треугольника и
величину его углов.
Входные данные:
a, b - длины катетов.
Выходные данные:
с - длина гипотенузы, S - площадь
треугольника, ?, ? - углы.
Блок-схема представлена на рис.1.9.
|
Рис. 1.9 Алгоритм примера 1.3 |
1.4. Алгоритмы разветвленной структуры
Алгоритмы разветвленной структуры
применяются, когда в зависимости от некоторого условия необходимо выполнить либо
одно, либо другое действие. В блок-схемах разветвленные алгоритмы изображаются
так, как показано на рис. 1.10 - 1.11.
|
|
Рис. 1.10 Фрагмент алгоритма |
Рис. 1.11 Пример разветвления |
Рассмотрим несколько примеров построения алгоритмов
разветвленной структуры.
ПРИМЕР 1.4. Известны коэффициенты и
с квадратного уравнения. Вычислить корни квадратного уравнения.
Входные данные: a, b, c.
Выходные данные: x1, x2.
Блок-схема представлена на рис. 1.5.
ПРИМЕР 1.5. Составить программу нахождения
действительных и комплексных корней квадратного уравнения. Можно выделить
следующие этапы решения задачи:
- Ввод коэффициентов квадратного уравнения a, b и c.
-
Вычисление дискриминанта d по формуле d = b2
- 4ас.
- Проверка знака дискриминанта. Если d >= 0,
то вычисление действительных корней по формуле 1.1 и вывод их на экран.
|
(1.1) |
При отрицательном дискриминанте выводится сообщение о том,
что действительных корней нет, и вычисляются комплексные корни.Комплексные числа
записываются в виде a + ib
a - действительная часть комплексного числа, b
- мнимая часть комплексного числа.У обоих комплексных корней действительные
части одинаковые, а мнимые отличаются знаком. Поэтому можно в переменной
x1 хранить действительную часть числа
-b/2a, в переменной x2 -
модуль мнимой части , а в
качестве корней вывести x1+ix2
и x1-ix2.
На рис. 1.12 изображена блок-схема решения задачи. Блок 1
предназначен для ввода коэффициентов квадратного уравнения. В блоке 2
осуществляется вычисление дискриминанта. Блок 3 осуществляет проверку знака
дискриминанта, если дискриминант отрицателен, то корни комплексные, их расчет
происходит в блоке 4 (действительная часть корня записывается в переменную
x1, модуль мнимой - в переменную
x2), а вывод - в блоке 5 (первый
корень x1 + i x2,
второй - x1- i x2).
Если дискриминант положителен, то вычисляются действительные корни уравнения
(блок 6) и выводятся на экран (блок 7).
|
Рис. 1.12. Блок-схема решения квадратного уравнения |