1. Алгоритмы Если надо написать программу на каком-нибудь языке программирования, то сначала нужно составить алгоритм решения задачи. Алгоритм – это точное и простое описание последовательности действий для решения данной задачи. Алгоритм содержит несколько шагов, которые должны выполняться в определенной последовательности. Каждый шаг алгоритма может состоять из одной или нескольких простых операций. Свойства алгоритма: • дискретность - алгоритм состоит из отдельных пунктов или шагов; • определённость - каждый шаг алгоритма должен быть строго сформулирован (иметь точный смысл); • связанность - на каждом следующем шаге используются результаты предыдущего; • конечность – алгоритм должен завершаться после конечного числа шагов; • результативность – алгоритм должен приводить к получению конечных результатов за конечное число шагов; • массовость – пригодность для решения широкого класса задач; • эффективность – применение а. должно давать какой бы-то положительный результат за конечное время; • понятность для исполнителя – исполнитель алгоритма должен знать, как его выполнять. Важным свойством алгоритма является то, что результат его выполнения не должен зависеть от исполнителя. Поэтому выполнять алгоритм может ЭВМ. Способы представления алгоритмов: • словесно-формульный; • алгоритмические языки; • графический способ. Для составления алгоритмов чаще всего используют графический способ – блоксхемы. На блок-схеме каждый шаг алгоритма обозначается специальной геометрической фигурой, а внутри нее записываются простые операции. Направление выполнения алгоритма обозначается стрелками. Существует несколько типов алгоритмов. 1.1. Линейный алгоритм Алгоритм называется линейным, если он содержит N шагов и все шаги выполняются последовательно друг за другом от начала до конца. Блок-схема алгоритма дана на рис. 1.1. 1.2. Разветвляющийся алгоритм Алгоритм называется разветвляющимся, если последовательность выполнения шагов алгоритма изменяется в зависимости от некоторых условий. Условие – это логическое выражение, которое может принимать два значения: «да» – если условие верно, и «нет» – если условие неверно. Любое условие состоит из трех частей: левая часть, знак сравнения, правая часть. Начало Шаг 1 Шаг 2 Шаг N Конец Рис. 1.1. Примеры условий: A > 0, X < A + B, Z = 5. Общий вид разветвляющей части алгоритма представлен на рис.1.2. Условие Ветвь «да» Ветвь «нет» Рис. 1.2. Блок проверки условия обозначается на блок-схеме ромбом (один вход, два выхода). Если условие верно, то для решения задачи используется ветвь «да», в противном случае – ветвь «нет». Для примера на рис. 1.3 приведена блок-схема алгоритма «Как перейти на другую сторону улицы». Начало Подойти к перекрестку Посмотреть на светофор нет Свет зеленый ? да Перейти на другую сторону улицы Конец Рис. 1.3. 1.3. Циклический алгоритм Алгоритм называется циклическим, если определенная последовательность шагов выполняется несколько раз в зависимости от заданной величины. Эта величина называется параметром цикла. Рассмотренный нами пример алгоритма для перехода на другую сторону улицы содержит циклическую часть. Эта часть состоит из двух шагов: 1) посмотреть на светофор; 2) проверить: зеленый свет? Параметром в этом циклическом алгоритме является цвет светофора. В этом алгоритме условие проверяется в конце цикла, поэтому циклическая часть выполняется по крайней мере один раз. Если свет все время будет красный, то цикл не завершится (будет бесконечным). В любом циклическом алгоритме, для того чтобы он мог закончиться, должен быть параметр. Цикл заканчивается, когда параметр принимает определенное значение. Проверка значения параметра может выполняться и в начале цикла. Общий вид блок-схемы циклического алгоритма с проверкой условия для параметра в начале цикла приведен на рис. 1.4. Для этого алгоритма циклическая часть может не выполниться ни разу, если условие сразу имеет значение «нет». Начало цикла Условие для перехода да Шаг 1 Шаг N Конец цикла Рис. 1.4. нет