Алгоритм -- это однозначно определенная последовательность действий, записанная на понятном исполнителюалгоритмическом языке и определяющая процесс перехода от исходных данных к результату.
В этом определении уже указаны основные свойства алгоритма. Во-первых, алгоритм состоит из конечного набора инструкций или шагов, во-вторых, каждый шаг трактуется исполнителем единственным образом, что позволяет гарантированно получить решение для некоторого набора входных данных, в-третьих, алгоритм всегда сводится к некоторому преобразованию исходных данных в результат или результаты. В этом смысле формулы для решения квадратного уравнения или даже четко составленную инструкцию по варке кофе можно считать алгоритмами, выполнимыми исполнителем-человеком. Для машины, разумеется, требуется более четкая формализация задачи, чем для человека, понимать естественный язык компьютеры пока неспособны, отсюда необходимость учета при составлении алгоритма ограниченного набора инструкций ЭВМ.
- определенность – в каждый момент исполнения алгоритма исполнитель всегда точно знает, что он должен делать;
- дискретность - прежде, чем выполнить определенное действие, надо выполнить предыдущее;
- массовость - по одному и тому же алгоритму решаются однотипные задачи и неоднократно;
- понятность - алгоритм строится для конкретного исполнителя (класса исполнителей) и должен быть ему понятен. В то же время исполнитель не обязательно должен понимать, по каким правилам строился алгоритм, в чем заключается смысл исполняемых инструкций. Должны быть понятны только сами инструкции;
- результативность - алгоритм всегда должен приводить к результату.
Графическая форма записи (блок-схема) характерна тем, что отдельные шаги алгоритма изображаются геометрическими фигурами, а последовательность выполнения шагов -- связями между этими фигурами. На рис. 1.1 указаны основные элементы блок-схем.
Рис. 1.1. Основные элементы блок-схем
Указанные на рис. 1.1 геометрические фигуры интерпретируются так:
Прямоугольник -- любая последовательность действий; внутри прямоугольника записываются формулы или словесное описание выполняемых действий;
Ромб -- блок проверки условия; так как любое условие может быть только истинно или ложно, у блока 1 вход и 2 выхода, соответствующие действиям, выполняемым в случаях, когда условие истинно и когда оно ложно. Выходы подписывают символами "+" и "-", "да" и "нет", "1" и "0" и т. п.
Параллелограмм -- блок ввода исходных данных. Внутри фигуры обычно пишется, какие именно данные должны быть введены;
Лист с разрывом -- блок вывода данных. Внутри блока указывается, какие данные или сообщения программа выводит для представления пользователю;
Закругленные прямоугольники -- необязательные блоки начала и конца программы, внутри блоков обычно указываются ключевые слова "нач" и "кон" соответственно;
Последняя фигура служит для изображения циклов, как правило, у нее 2 входа (первый и повторный вход в цикл) и 1 выход, соответствующий завершению циклического процесса.
Текстовая форма записи алгоритма (псевдокод) характерна тем, что шаги алгоритма и последовательность их выполнения задаются с помощью набора специальных ключевых слов. Эта форма ближе к реальным языкам программирования. Существует много различных вариантов псевдокода, например, в русскоязычной литературе по программированию распространен следующий вариант псевдокода:
· нач -- начало программы;
· кон -- конец программы;
· если ... то ...иначе -- проверка условия;
· ввод -- ввод данных;
· вывод -- вывод данных;
· для ... от .. до ... нц ... кц -- цикл со счетчиком (нц -- начало цикла, кц -- конец);
· пока ... нц ...кц -- цикл с предусловием;
· нц ... кц ... пока -- цикл с постусловием.
Программная форма (на языке программирования):
Program myprog;
Var
X,Y,Z:integer;
Begin
WriteLn (‘Введите два числа’);
Read (x,y);
Z:=x*y;
WriteLn (‘Результат:’,z);
End.
Группа шагов алгоритма, всегда выполняемых последовательно друг за другом без каких-либо условий, называется линейной последовательностью. Если весь алгоритм представляет собой линейную последовательность шагов, то его называют линейным.
На рисунке изображена блок-схема линейного алгоритма, состоящего из двух шагов.
^ | Алгоритмический язык | |
![]() | нач действие 1 действие 2 ................... кон |
Ветвление представляет собой алгоритмическую конструкцию, в которой выполнение того или иного шага зависит от истинности условия.
На рисунке приведена блок-схема ветвления
^ | Алгоритмический язык |
![]() | если условие то действия 1 иначе действия 2 все |
Если условие истинно, то будет выполнено только действие1, в противном случае будет выполнено только действие2.
Цикл представляет собой алгоритмическую конструкцию, в которой многократно выполняется одна и та же последовательность шагов, называемая телом цикла. Каждое однократное исполнение тела цикла называется итерацией. Если тело цикла было выполнено N раз, говорят, что было произведено N итераций.
Для того, чтобы определить момент прекращения выполнения тела цикла, используется условие цикла. Если при истинности условия цикл продолжается, то такое условие называется условием продолжения цикла. Иными словами, цикл продолжается, пока условие цикла истинно.
Если при истинности условия цикл завершается, то такое условие называется условием завершения цикла. В этом случае цикл продолжается до тех пор, пока условие цикла не станет истинным.
Различают циклы с проверкой условия перед выполнением очередной итерации и циклы с проверкой условия после выполнения очередной итерации. Первые называются циклами с предусловием, вторые – с постусловием.
![]() | ![]() |
^ | Блок-схема цикла с постусловием завершения |
Тело цикла с постусловием всегда выполнится хотя бы один раз.
![]() | ![]() |
Цикл типа Пока | Цикл типа Для |
нц пока условие тело цикла (последовательность действий) кц | нц для i от i1 до i2 тело цикла (последовательность действий) кц |
В языках программирования высокого уровня существуют различные операторы циклов (см. циклы в Паскале, циклы в Basic), в том числе реализующие циклы с заранее заданным количеством итераций, так называемые циклы со счетчиком.
Цикл со счетчиком состоит из заголовка и тела цикла. В заголовке указывается начальное и конечное значение счетчика. На каждой итерации значение счетчика автоматически увеличивается. Цикл завершается, когда счетчик достигнет конечного значения. Фактически, цикл со счетчиком представляет собой разновидность цикла с предусловием продолжения, заключающемся в том, что значение счетчика находится в заданных границах.
Ветвление | Линейный |
Программа, которая находит наибольшее из трех чисел | |
Program maximal; var a,b,c,d:word; begin write ('a,b,c''); read (a,b,c); if a>b then d:=a else d:=b; if c>d tnen d:=c then writeln ('наибольшее',d); end. | Program ploshad; var a,b,s:word; begin write('a='); read (a); write ('b='); read (b); s:=a*b; writeln ('площадь прямоугольника', s); end. |