logo search
Информатика_ЗО

Алгоритмизация.

Алгоритм" является базовым основополагающим понятием информатики, а алгоритмизация (программирование) – основным разделом курса информатики (ядром курса). Понятие алгоритма, как и понятие информации, точно определить невозможно. Поэтому встречаются самые разнообразные определения – от "наивно-интуитивных" ("алгоритм – это план решения задачи") до "строго формализованных" (нормальные алгоритмы Маркова).

В качестве рабочего определения алгоритма возьмем следующее определение.

Алгоритм – это упорядоченная совокупность точных (формализованных) и полных команд исполнителю алгоритма (человек, ЭВМ), задающих порядок и содержание действий, которые он должен выполнить над исходными и промежуточными данными для нахождения решения любой задачи из рассматриваемого класса задач.

Приведенное определение алгоритма не является точным математически, а лишь объясняет смысл данного слова. До появления ЭВМ алгоритмы представляли лишь теоретический интерес. В связи с развитием вычислительной техники и методов вычислительной математики появилась необходимость в уточнении понятия алгоритма как объекта математической теории. Это объясняется тем, что возникли потребности в общих способах формализации и единообразного решения целых классов задач на базе мощных универсальных алгоритмов. Теоретическими возможностями разработки эффективных алгоритмов вычислительных процессов занимается самостоятельная научная дисциплина – теория алгоритмов.

При разработке алгоритма необходимо формализовать процесс решения задачи, сведя ее к применению конечной последовательности достаточно простых правил.

Название "алгоритм" произошло от латинской формы имени величайшего среднеазиатского математика Мухаммеда ибн Муса ал-Хорезми (Alhorithmi), жившего в 783—850 гг. В своей книге "Об индийском счете" он изложил правила записи натуральных чисел с помощью арабских цифр и правила действий над ними "столбиком", знакомые теперь каждому школьнику. В XII веке эта книга была переведена на латынь и получила широкое распространение в Европе.

Свойства алгоритма.

В математике для решения типовых задач мы используем определенные правила, описывающие последовательности действий. Например, правила сложения дробных чисел, решения квадратных уравнений и т. д. В повседневной жизни инструкции и правила представляют собой последовательность действий, которые необходимо выполнить в определенном порядке. Для решения любой задачи надо знать, что дано, что следует получить, какие действия и в каком порядке следует для этого выполнить.

Суть состоит в том, что если алгоритм разработан, то его можно вручить для выполнения любому исполнителю, не знакомому с решаемой задачей, и точно следуя правилам алгоритма, исполнитель получит ее решение.

Алгоритм удовлетворяет следующим основным свойствам:

Конечность (дискретность) команд и выполняемых по ним действий алгоритма.

Выполнимость в определенной операционной среде (в определенном классе исполнителей).

Результативность отдельных команд и всего алгоритма.

Применимость алгоритма ко всем возможным входным данным конкретного класса задач.

Определенность (детерминированность) команд и всего алгоритма для всех входных данных.

Формализованное, конструктивное описание (представление) команд алгоритма.

Минимальная полнота системы команд алгоритм.

Непротиворечивость любых команд алгоритма на любом наборе входных данных.

Любой алгоритм ориентирован на некоторый общий метод решения класса задач и представляет собой формализованную запись метода, процедуры.

Алгоритм, записанный на некотором алгоритмическом, формальном языке, состоит из заголовка алгоритма (описания параметров, спецификаций класса задач) и тела алгоритма (последовательности команд исполнителя, преобразующих входные параметры в выходные).

Для записи, исполнения, обмена и хранения алгоритмов существуют различные средства: языки (словесный способ), псевдокоды, блок-схемы, структурограммы (схемы Нэсси-Шнайдермана), Р-схемы, школьный алгоритмический язык (ШАЯ), различные языки программирования.

Словесный способзаписи алгоритмов использует средства обычного языка, но с тщательно отобранным набором слов, фраз, не допускающим повторений, синонимов, двусмысленностей, лишних слов. Недостатком такого способа записи алгоритма является отсутствие более или менее строгой формализации и наглядности вычислительного процесса. Вместе с тем с помощью данного способа можно описывать алгоритмы с произвольной степенью детализации.

Формульно-словесный способзаписи алгоритма основан на задании инструкций о выполнении конкретных действий с использованием математических символов и выражений в сочетании со словесными пояснениями.

Графический способпредставления алгоритма использует элементы блок-схем.Блок-схемойназывается графическое изображение структуры алгоритма, в котором каждый этап процесса переработки данных представляется в виде геометрических фигур (блоков), имеющих определенную конфигурацию в зависимости от характера выполняемых операций. Последовательность выполнения пунктов алгоритма, описываемого блок-схемой, устанавливается путем упорядоченного размещения блоков на схеме и объединения их линиями потока информации.

В таблице приведены наиболее часто употребляемые символы.

Название символа

Обозначение и пример заполнения

Пояснение

Процесс

Вычислительное действие или последовательность действий

Решение

Проверка условий

Модификация

Начало цикла

Предопределенный процесс

Вычисления по подпрограмме, стандартной подпрограмме

Ввод-вывод

Ввод-вывод

Пуск-останов

Начало, конец алгоритма, вход и выход в подпрограмму

Документ

Вывод результатов на печать

Блок-схема является исключительно наглядным и простым способом записи алгоритма. При этом не накладывается никаких ограничений на степень детализации в изображении алгоритма. Выбор ее целиком лежит на программисте. Однако необходимо иметь в виду, что излишне общий характер блок-схемы нежелателен из-за малой информативности, а очень детальная блок-схема проигрывает в наглядности. Поэтому для сложных и больших алгоритмов целесообразно составлять несколько блок-схем разной степени детализации. Блок-схема первого уровня отображает весь алгоритм целиком. Блок-схемы второго уровня раскрывают логику отдельных блоков схемы первого уровня. При необходимости могут быть составлены блок-схемы последующих уровней с еще большей степенью детализации.