- •1.7. Алгоритмы. Основные понятия
- •1.7.1. Определение алгоритма. Запись алгоритма. Свойства алгоритмов
- •1.7.3. Примеры алгоритмов. Способы, используемые при записи алгоритмов: рекурсия, итерация, разбор случаев, иерархическое построение
- •1.7.5. Объекты, типы объектов
- •1.7.7. Псевдокод для записи алгоритмов
- •1.7.9. Неструктурированная форма записи алгоритмов
- •1.7.11. Структурированная форма записи алгоритмов
- •1.7.13. Последовательный оператор
- •1.7.15. Условный оператор
- •1.7.17. Оператор цикла
-
1.7.9. Неструктурированная форма записи алгоритмов
Рассмотрим задачу отыскания корней линейного уравнения ax+b=0 с действительными коэффициентами. Для ее решения может быть использован алгоритм, записанный в следующем виде.
Пункт 1. Присвоить объекту с именем a значение a
и объекту с именем b значение b
Перейти к пункту 2.
Пункт 2. Сравнить значение объекта с именем a с нулем.
Если значение объекта с именем a равно нулю,
то перейти к пункту 4, иначе перейти к пункту 3.
Пункт 3. Выдать ответ: решением является число -b/a.
Перейти к пункту 7.
Пункт 4. Сравнить значение объекта с именем b с нулем.
Если значение объекта с именем b равно нулю,
то перейти к пункту 6, иначе перейти к пункту 5.
Пункт 5. Выдать ответ: решений нет.
Перейти к пункту 7.
Пункт 6. Выдать ответ: решением является любое действительное
число.
Перейти к пункту 7.
Пункт 7. Завершить работу.
Алгоритм описывает действия исполнителя над значениями двух объектов (a, a) и (B, b), обладающих соответственно именами a и b. Приведенный алгоритм обладает всеми характерными для алгоритмов свойствами.
· Дискретность и определенность. Алгоритм состоит из 7 пунктов, каждый из которых состоит из выполнимого оператора и оператора перехода к следующему пункту записи. Операторы сформулированы таким образом, что понятны и недвусмысленны.
· Результативность. Данный алгоритм всегда приводит к результату (хотя, может быть, и отрицательному - когда выдается ответ об отсутствии решения) за конечное число шагов (в данном случае не более 5 шагов).
· Массовость. Алгоритм позволяет решать задачи для любых сочетаний значений a и b.
Из примера видно, что для получения результата необходимы не только вычислительные действия, но и действия по управлению последовательностью выполнения вычислительных действий. Из общей теории алгоритмов - составной части информатики - следует, что любой алгоритм может быть записан в вышеприведенной форме, именуемой неструктурированной формой записи алгоритмов.
-
1.7.11. Структурированная форма записи алгоритмов
Практика алгоритмизации и программирования показала, что для сложных алгоритмов, состоящих из большого числа пунктов, неструктурированная форма записи становится плохо обозримой и ненаглядной. Вследствие этого в записи алгоритма появляются различные неточности и ошибки. Они обнаруживаются с большим трудом и приводят при выполнении к неправильным результатам. Поэтому в настоящее время применяется так называемая структурированная форма записи алгоритмов.
Основными элементами нашего языка (псевдокода) в структурированной форме являются базовые операторы, задающие действия, которые исполнитель способен выполнить за один его шаг (такт работы). Базовые операторы могут включать в себя:
· условия - логические выражения, истинность или ложность которых может определить исполнитель;
· выражения - математические выражения;
· ключевые слова - слова специального вида, используемые как некоторые "рамки" при конструировании из базовых операторов и условий новых составных элементов языка. Для различия ключевых слов от прочих слов будем в записи алгоритма выделять их каким-либо образом, например, подчеркиванием.
В записи алгоритма необходимо указывать все объекты, действия с которыми он задает. Для этого служит базовый оператор, именуемый оператором объявления объекта и имеющий в псевдокоде вид
имяТипа объект имяОбъекта
Здесь, слово объект является ключевым. К примеру, оператор вида
числовой объект A
объявляет объект, способный принимать числовые значения и обладающий именем A.
Базовым является часто используемый оператор, именуемый оператором присваивания. Оператор имеет вид:
присвоить объекту с именем имяОбъекта значение выражения
Будем использовать сокращенную форму оператором присваивания:
имяОбъекта ¬ выражение
Справа от знака присваивания (¬) можно использовать любое математическое выражение.
Конструируемые из базовых операторов, условий и ключевых слов новые составные элементы именуются составными операторами. Используются 3 основных вида составных операторов:
-
последовательный оператор,
-
условный оператор,
-
циклический оператор (оператор цикла).
Применяя к составным и базовым операторам те же способы построения операторов, можно получить новые составные операторы последовательной, условной, циклической структуры. Построение может продолжаться любое количество раз. Уровень вложенности различного рода управляющих структур друг в друга неограничен.
В следующих пунктах рассматриваются основные способы конструирования составных операторов. Далее как базовые, так и составные операторы языка записи алгоритмов будем называть просто операторами.