Способы описания алгоритмов
Для эффективного использования компьютеров каждый пользователь должен уметь формулировать задачи, разрабатывать алгоритмы их решения и составлять программы, понятные компьютеру. Процесс составление алгоритмов для последующей реализации в виде программ для ЭВМ называется алгоритмизацией.
Понятие алгоритма, его свойства и виды
Л 5.2. Основы алгоритмизации
Ключевые слова: алгоритмизация, алгоритм, исполнитель алгоритма, среда исполнителя, система команд исполнителя, отказы исполнителя, дискретность алгоритма, определенность алгоритма, результативность алгоритма, массовость алгоритма, понятность алгоритма, алгоритм линейной, разветвленной и циклической структуры, цикл, способы записи алгоритмов, схема алгоритма, псевдокод, вспомогательный алгоритм, служебное слово, оператор присваивания, программные переменные.
Понятие алгоритма - одно из фундаментальных понятий информатики. Алгоритмизация наряду с моделированием выступает в качестве общего метода информатики. К реализации определенных алгоритмов сводятся процессы управления в различных системах, что делает понятие алгоритма близким и кибернетике.
Алгоритмы являются объектом систематического исследования пограничной между математикой и информатикой научной дисциплины, примыкающей к математической логике -теории алгоритмов.
Особенность положения состоит в том, что при решении практических задач, предполагающих разработку алгоритмов для реализации на ЭВМ, и тем более при использовании на практике информационных технологий, можно, как правило, не опираться на высокую формализацию данного понятия. Поэтому представляется целесообразным в настоящей лекции познакомиться с алгоритмами и алгоритмизацией на основе содержательного толкования сущности понятия алгоритма и рассмотрения основных его свойств, видов алгоритмов, а также показать возможные способы описания алгоритмов.
Алгоритмом называется точная инструкция исполнителю в понятной для него форме, определяющая процесс достижения поставленной цели на основе имеющихся исходных данных за конечное число шагов. Алгоритмами, например, являются правила сложения, умножения, решения алгебраических уравнений, умножения матриц и т.п.
Слово алгоритм происходит от algoritmi, являющегося латинской транслитерацией арабского имени хорезмийского математика IX века
аль-Хорезми. Благодаря латинскому переводу трактата аль-Хорезми европейцы в XII веке познакомились с позиционной системой счисления, и в средневековой Европе алгоритмом называлась десятичная позиционная система счисления и правила счета в ней.
В качестве устройства, которое реализует предписанный исследователем алгоритм, используется компьютер или в общем случае исполнитель алгоритма - некоторая абстрактная или реальная (техническая, биологическая или биотехническая) система, способная выполнить действия, предписываемые алгоритмом. После вызова команды исполнитель совершает соответствующее элементарное действие.
Применительно к ЭВМ алгоритм определяет вычислительный процесс, начинающийся с обработки некоторой совокупности возможных исходных данных и направленный на получение определенных этими исходными данными результатов. Термин вычислительный процесс распространяется и на обработку других видов информации, например, символьной, графической или звуковой. Если вычислительный процесс заканчивается получением результатов, то говорят, что соответствующий алгоритм применим к рассматриваемой совокупности исходных данных. В противном случае говорят, что алгоритм неприменим к совокупности исходных данных.
Исполнителя (компьютер) характеризуют: среда, элементарные действия, система команд, отказы.
Среда (или обстановка) - это «место обитания» исполнителя, определяемое пространственные, временные и другие условия существования объекта и ограничения.
Система команд - исполнитель выполняет команды только из некоторого строго заданного списка (системы команд исполнителя). Для каждой команды должны быть заданы условия применимости (в каких состояниях среды может быть выполнена команда) и описаны результаты выполнения команды.
Отказы исполнителя возникают, если команда вызывается при недопустимом для нее состоянии среды.
Для алгоритма характерны следующие основные свойства:
1. Дискретность (прерывность, раздельность) - алгоритм должен быть представлен как последовательное выполнение простых шагов. Шагом называется каждое действие алгоритма. При этом для выполнения каждого шага алгоритма требуется конечный отрезок времени, т.е. преобразование исходных данных в результат осуществляется во времени дискретно.
2. Определенность - каждое действие алгоритма должно быть четким и однозначным. Благодаря этому свойству, выполнение алгоритма носит механический характер и не требует никаких дополнительных указаний или сведений о решаемой задаче.
3. Результативность (или конечность) - алгоритм должен приводить к решению задачи за определенное число шагов.
4. Массовость - алгоритм составляется в общем виде, т.е. он должен быть применим к ряду задач, различающихся исходными данными. При этом исходные данные могут выбираться из некоторой области, которая называется областью применимости алгоритма.
5. Понятность - исполнитель алгоритма должен знать, как его выполнять.
В зависимости от последовательности выполнения действий в алгоритме выделяют алгоритмы линейной, разветвленной и циклической структуры.
Алгоритм линейной структуры – алгоритм, в котором шаги (команды) следуют один за другим, не повторяясь, действия происходят только в одной заранее намеченной последовательности.
Алгоритм разветвленной структуры - алгоритм, содержащий хотя бы одно условие, в результате которого обеспечивается переход на один из нескольких возможных шагов (ветвей). В основе организации разветвления лежит проверка логического условия, которое может быть истинно или ложно. Частный вид логического условия – это операции типа =, , , >, , <.
Алгоритм циклической структуры - алгоритм, в котором предусмотрено неоднократное выполнение одной и той же последовательности действий для различных значений данных. Эту последовательность называют циклом. Различают циклы, в которых условие прекращения проверяется в начале (циклы с предусловием) или в конце (циклы с послеусловием).
Для задания алгоритма необходимо описать следующие его элементы:
· набор объектов, составляющих совокупность возможных исходных данных, промежуточных и конечных результатов;
· правило начала;
· правило непосредственной переработки информации (описание последовательности действий);
· правило окончания;
· правило извлечения результатов.
Для записи алгоритмов, а именно для описания последовательности действий, используют самые разнообразные средства. Выбор средства определяется типом исполняемого алгоритма. Выделяют следующие основные способы записи алгоритмов:
· вербальный (словесный), когда алгоритм описывается на естественном (человеческом) языке;
· графический, когда алгоритм описывается с помощью набора графических изображений;
· символьный, когда алгоритм описывается с помощью набора символов (например, с помощью математической символики или с помощью алгоритмического языка (структурированной записи, псевдокода).
Схема алгоритма - это графический способ представления алгоритма, каждое действие при этом изображается в виде последовательности связанных блоков. Порядок выполнения действий указывается стрелками.
Данный способ по сравнению с другими способами записи алгоритма имеет ряд преимуществ. Он наиболее нагляден: каждая операция вычислительного процесса изображается отдельной геометрической фигурой. Кроме того, графическое изображение алгоритма наглядно показывает разветвления путей решения задачи в зависимости от различных условий, повторение отдельных этапов вычислительного процесса и другие детали.
Написание алгоритмов с помощью схем регламентируется: ГОСТ 19.701-90 - «ЕСПД. Схемы алгоритмов, программ, данных и систем. Обозначения условные и правила выполнения». Внешний вид основных символов, применяемых при написании схем алгоритмов, приведен в таблице 1.
Таблица 1
Название | Символ (рисунок) | Выполняемая функция (пояснение) | ||||||
1. Процесс | Символ отображает функцию обработки данных любого вида (выполнение определенной операции или группы операций, приводящее к изменению значения, формы или размещения информации или к определению, по которому из нескольких направлений потока следует двигаться). | |||||||
2. Решение | Символ отображает решение или функцию переключательного типа, имеющую один вход и ряд альтернативных выходов, один и только один из которых может быть активизирован после вычисления условий, определенных внутри этого символа. | |||||||
3. Данные | Символ отображает данные, носитель данных не определен. | |||||||
4. Документ | Символ отображает данные, представленные на носителе в удобочитаемой форме (машинограмма, документ для оптического или магнитного считывания, микрофильм, рулон ленты с итоговыми данными, бланки ввода данных). | |||||||
5. Граница цикла |
| Символ, состоящий из двух частей, отображает начало и конец цикла. Обе части символа имеют один и тот же идентификатор. Условия для инициализации, приращения, завершения и т.д. помещаются внутри символа в начале или в конце в зависимости от расположения операции, проверяющей условие. | ||||||
6. Предопределенный процесс | Символ отображает предопределенный процесс, состоящий из одной или нескольких операций или шагов программы, которые определены в другом месте (в подпрограмме, модуле). | |||||||
7. Соединитель | Символ отображает выход в часть схемы и вход из другой части этой схемы и используется для обрыва линии и продолжения ее в другом месте. | |||||||
8. Терминатор | Символ отображает выход во внешнюю среду и вход из внешней среды (начало или конец схемы программы, внешнее использование и источник или пункт назначения данных). | |||||||
9. Ручной ввод | Символ отображает данные, вводимые вручную во время обработки с устройств любого типа (клавиатура, переключатели, кнопки, световое перо, полоски со штриховым кодом). | |||||||
10. Дисплей | Символ отображает данные, пред-ставленные в человекочитаемой форме на носителе в виде отображающего устройства (экран для визуального наблюдения, индикаторы ввода информации). | |||||||
11. Подготовка | Символ отображает модификацию команды или группы команд с целью воздействия на некоторую последую-щую функцию (установка переключа-теля, модификация индексного регистра или инициализация программы). | |||||||
12. Линия | Символ отображает поток данных или управления. При необходимости или для повышения удобочитаемости могут быть добавлены стрелки-указатели. | |||||||
13. Канал связи | Символ отображает передачу данных по каналу связи. | |||||||
14. Пунктирная линия | Символ отображает альтернативную связь между двумя или более сим-волами. Кроме того, символ исполь-зуют для обведения аннотированного участка. | |||||||
15. Комментарий | Символ используют для добавления описательных комментариев поясни-тельных записей в целях объяснения или примечаний. Пунктирные линии в символе комментария связаны с соответствующим символом или могут обводить группу символов. Текст комментариев или примечаний должен быть помещен около ограничивающей фигуры. |