From Class_1 / лекции / Лекция 4
.docЛекция № 4
Основные этапы решения задач на компьютере
В основе решения любой инженерной или экономической задачи лежит понятие алгоритма.
Слово алгоритм произошло от имени узбекского математика Аль Хорезми, жившего в IX веке. Вплоть до 30-х годов прошлого века это понятие имело скорее методологическое, чем математическое значение. Под алгоритмом понимали конечную совокупность точно сформулированных правил, которые позволяют решать те или иные классы задач.
В настоящее время под алгоритмом принято понимать точное предписание, определяющее вычислительный процесс, ведущий от варьируемых исходных данных к искомому результату. Таким образом, алгоритм должен содержать конечную последовательность шагов или операций, однозначно определяющих процесс переработки исходных данных и промежуточных данных в искомом результате.
При составлении алгоритмов следует учитывать ряд требований, выполнение которых приводит к формированию необходимых свойств:
-
Алгоритм должен быть однозначным, исключающим произвольность толкования любого из предписаний. Это свойство алгоритма называется определенностью.
-
Реализация вычислительного процесса, предусмотренного алгоритмом должна через определенное число шагов привести к выдаче результатов или выдаче сообщения о невозможности решения задачи. Это свойство алгоритма называется результативностью.
-
Решение однотипных задач с различными исходными данными можно осуществить по одному и тому же алгоритму. Это дает возможность создавать типовые программы для решения задач при различных вариантах исходных данных. Это свойство алгоритма называется массовостью.
-
Предопределенный алгоритмом вычислительный процесс можно расчленить на отдельные этапы, элементарные операции. Это свойство алгоритма называется дискретностью.
Существует несколько способов описания алгоритмов:
-
словесное,
-
структурно-стилизованное (операторный способ),
-
графический способ (в виде схемы алгоритма),
-
программный способ (тексты на алгоритмических языках).
Словесное описание алгоритма применимо только для простейших алгоритмов, в которых нет сложных логических условий, разветвлений, циклов. Алгоритм, в соответствие с которым решение поставленной задачи сводится к арифметическим действиям, называется численным. На практике словесное описание алгоритма применяется крайне редко и, как правило, для численных алгоритмов.
Структурно-стилизованный способ описания алгоритмов реализован в операторном способе описания алгоритмов. Здесь каждая запись обозначается оператором (специальным символом). Операторы различных типов обозначаются русскими буквами, например:
А – арифметический оператор,
В – оператор ввода данных,
П – оператор вывода результатов на печать,
Л – логический оператор (условия),
Я – конец или оператор остановки.
К структурно- стилизованным описаниям алгоритмов относится способ описания алгоритмов с помощью АЯРН (алгоритмический язык в русской нотации). Он содержит систему обозначений для единообразной и точной записи алгоритмов, задания правил и их использования. Отличительной особенностью описания алгоритмов структурно-стилизованными способами является близость их к псевдокодам или к алгоритмическим языкам программирования. Достоинством структурно-стилизованных способов описания алгоритмов является их компактность.
При графическом способе описания алгоритмов, алгоритм представляется в виде последовательности блоков, выполняющих определенные функции. Форма блоков и правила их применения устанавливаются соответствующими стандартами.
Каждый блок изображается на бумаге в виде некоторой простейшей геометрической фигуры: прямоугольника, ромба, окружности и т.д. В левом верхнем углу блоку присваивается номер (метка) и он снабжается текстом внутри. При необходимости блок может быть снабжен также пояснительным текстом (комментарием).
Направление процесса обработки в схеме указывается путем соединения отдельных элементов линиями, иногда они имеют стрелки. Если один блок передает управление другим блокам в зависимости от выполнения определенных условий, то линии связи могут иметь стрелки, а также на линиях связи могут быть указаны условия. При построении схем сложных вычислительных процессов бывает целесообразно процесс решения задачи представить укрупненно. Для большей наглядности возможно представление в одном блоке целой группы этапов решения, т.е. в зависимости от сложности задачи составляют схему алгоритма с различной степенью детализации.
При построении схем алгоритмов принято использовать следующие изображения блоков:
Арифметический блок – изображает вычислительное действие или
последовательность вычислительных действий.
Блок ввода данных.
Логический блок – изображает проверку некоторого условия или условий.
Блок вывода результатов.
Блок, определяющий предопределенный процесс (подпрограмма или
процедура).
Блок цикла.
Блок начала или конца алгоритма.
Разрыв линии потока – в нем указывается номер блока, к которому осуществляется переход или из которого осуществляется переход.
Комментарий.
Стрелки на соединительных линиях между блоками сверху вниз не указываются. Стрелка указывает вход в блок цикла, а также в блоки, вход в которые осуществляется слева направо.
Правила применения символов и выполнения схем:
-
Символ предназначен для графической идентификации функции, которую он изображает независимо от текста внутри этого символа.
-
Символы в схемах должны быть расположены равномерно. Следует придерживать разумной длины соединений и минимального числа длинных линий.
-
Формы символов, установленные стандартом не должны быть изменены (не должны изменяться углы, размеры и другие параметры, влияющие на форму символов).
-
Символы могут быть вычерчены в любой ориентации, но по возможности, предпочтительной является горизонтальная ориентация.
-
Минимальное количество текста, необходимое для понимания функции данного символа следует помещать внутри символа. Текст для чтения должен записываться слева - направо и сверху - вниз в зависимости от направления потока.
-
Если объем текста, помещенный внутрь символа превышает его размеры, то следует использовать символ комментария.
-
В схемах может использоваться идентификатор символов. Это – связанный с данным символом идентификатор, который определяется для использования в справочных целях в других элементах документации (например, в листинге программы).
-
В качестве первого и последнего символа алгоритма должен быть использован символ указателя начала и конца.
Алгоритмы различаются по составу и структуре.
Алгоритм линейной структуры – алгоритм, блоки которого изображены в схеме в той последовательности, в какой должны быть выполнены предписываемые ими действия. Такой порядок выполнения действия называется естественным.
Алгоритм разветвленной структуры – это алгоритм, в котором предусмотрено разветвление выполняемой последовательности действий в зависимости от результата проверки выполнения какого-либо условия.
Алгоритм циклической структуры – это алгоритм, в котором содержатся многократно повторяющиеся участки вычислительного процесса, называемые циклами.
Циклический алгоритм позволяет существенно сокращать объем программы засчет многократного повторения ее циклического участка.
Различают следующие типы алгоритмов циклической структуры:
а) Цикл «повторять до» или цикл с постусловием;
б) Цикл «пока» или цикл с предусловием («по условию»);
в) Цикл счетный (с управляющей переменной).
а) б) в)
Для организации цикла необходимо:
-
Задать начальные значения переменной цикла, т.е. переменной, которая будет изменяться при прохождении цикла;
-
Задать шаг цикла, т.е. изменить значения переменной цикла перед каждым новым повторением цикла.
-
Задать проверку условий окончания повторений по значению параметра и переход к началу цикла, если повторения не закончены.
Рассмотрим в качестве примера задачу сортировки одномерного массива.
Задание: написать алгоритм упорядочения 100 чисел по возрастанию (или по убыванию).
Решение представлено на рисунке:
Рисунок. Схема алгоритма сортировки одномерного массива по возрастанию.