Разберите следующий пример составления схемы алгоритма.
Действительные корни квадратного уравнения ax2 + bx + c = 0, заданного коэффициентами a, b, c, вычисляются следующим образом (при условии, что а ¹ 0):
1. Прочитать коэффициенты a, b, c.
2. Вычислить дискриминант d = b2 – 4ac.
3. Если d 0, вычислить и написать эти числа, иначе, если d = 0, вычислить и написать это число, иначе написать «действительных корней нет».
По алгоритму выполняется соответствующая последовательность действий, составляющих процесс решения задачи:
1. Прочитать коэффициенты, вычислить d, проверить, что d 0 (и это так), вычислить х1, х2 и написать эти числа.
2. Прочитать коэффициенты, вычислить d, проверить, что d 0 (и это не так), проверить, что d = 0 (и это так), вычислить х и написать это число.
3. Прочитать коэффициенты, вычислить d, проверить, что d 0 (и это не так), проверить, что d = 0 (и это не так), и написать, что действительных корней нет.
Схема алгоритма приведена на рис. 1.2.
В данной схеме используются следующие графические примитивы:
1) Знак завершения – обозначает начало и конец алгоритма.
2) Данные – обозначает ввод и вывод данных.
3) Процесс – обозначает вычислительные операции.
4) Решение – обозначает выбор одной из альтернатив.
Задание № 2. Алгоритм вычисления бесконечной суммы
1. Составить схему алгоритма вычисления бесконечной суммы
с заданной точностью e (для данной знакочередующейся бесконечной суммы требуемая точность будет достигнута, когда очередное слагаемое станет по абсолютной величине меньше e.
2. Данная задача относится к классу итерационных задач, так как число повторений операторов тела цикла заранее неизвестно. Очевидно, что здесь надо использовать цикл типа «ПОКА». Выход из итерационного цикла осуществляется в случае выполнения заданного условия .
3. На каждом шаге вычислений происходит последовательное приближение к искомому результату и проверка условия достижения последнего.
4. При составлении алгоритма нужно учесть, что знаки слагаемых чередуются и степень числа х в числителях слагаемых возрастает.
5. Решая эту задачу «в лоб» путем вычисления на каждом i-ом шаге частичной суммы
S:=S+((-1)**(i-1))*(x**i)/i,
мы получим очень неэффективный алгоритм, требующий выполнения большого числа операций. Гораздо лучше организовать вычисления следующим образом: если обозначить числитель какого-либо слагаемого буквой р, то у следующего слагаемого числитель будет равен –р*х (знак минус обеспечивает чередование знаков слагаемых), а само слагаемое m будет равно p/i, где i — номер слагаемого.
6. Учитывая последнее замечание, изобразите схему алгоритма. Она должна быть подобна той, что приведена на рис. 1.3.
Алгоритм, в состав которого входит итерационный цикл, называется итерационным алгоритмом. Итерационные алгоритмы используются при реализации итерационных численных методов.
В итерационных алгоритмах необходимо обеспечить обязательное достижение условия выхода из цикла (сходимость итерационного процесса). В противном случае произойдет «зацикливание» алгоритма, т.е. не будет выполняться основное свойство алгоритма — результативность.
2. Алгоритмы сортировки и поиска данных
Задание № 3. Алгоритм определения максимального элемента вектора