Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
новый зачет.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
384.8 Кб
Скачать

23Алгоритм: определение, свойства и способы представления. Основные типы алгоритмических структур

АЛГОРИТМ  4.1. АЛГОРИТМ И ЕГО СВОЙСТВА 

Точного определения алгоритма не существует, также, как не существует определения информации, множества и т.д. Однако можно дать достаточно полное представление о таком понятии как алгоритм. 

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

1. Дискретность – команды, инструкции алгоритма представляют собой разделимую по-следовательность действий. 

2. Конечность – число шагов алгоритма должно быть конечно. 

3. Определенность (однозначность, детерминированность) – каждая команда алгоритма должна быть однозначно воспринята исполнителем. 

4. Массовость – алгоритм предназначен для решения множества задач заданного вида. 

5. Эффективности – интерес представляют в первую очередь такие алгоритмы, которые решают поставленную задачу в пределах допустимого времени с желательно меньшим расхо-дом ресурсов исполнителя. В учебном варианте эффективность можно понимать как требова-ние "ничего лишнего". То есть не производить повторных вычислений одинаковых выражений и т.д.  Существует большое количество известных примеров алгоритмов из математики. Напри-мер, алгоритм Евклида для нахождения наибольшего общего делителя двух целых чисел, алго-ритм решения квадратного уравнения и др. Немало алгоритмов действий используется в быту.  Любой алгоритм по существу перерабатывает информацию. Поэтому для каждого алго-ритма предполагается наличие множества входных и выходных данных. Такие множества и их обозначения будем называть параметрами или аргументами алгоритма. Множества входных и выходных данных могут быть либо пустыми, либо пересекаться, либо совпадать, либо не иметь пересечений. Выходные параметры иногда называют также аргументами-результатами.  Множества входных и выходных данных могут рассматриваться также как некоторые аб-страктные каналы (линии связи), по которым передается информация.

4.2. СПОСОБЫ ПРЕДСТАВЛЕНИЯ АЛГОРИТМОВ 

Отметим, что алгоритм может пониматься как некоторая функция со специальными свой-ствами, которые были описаны ранее. Эта функция существует как абстракция. Мы же всегда воспринимаем алгоритм в его некоторой записи, или, как говорят, в его представлении.  Очевидно также, что любой исполнитель может воспринимать алгоритм, исполнять его, только в том случае, когда алгоритм представлен в том виде, в каком он понятен исполнителю. Это означает, что любое представление алгоритма является некоторым информационным бло-ком, то есть представление алгоритма является информацией, и она расположена на некотором носителе информации.  Таким образом, сам алгоритм есть некоторая абстракция, но реальная его реализация воз-можна только в виде его представления. Очевидно также, что у любого алгоритма могут быть различные представления. Они могут быть похожими, однако могут и не иметь ничего общего, кроме как реализации одного алгоритма.  Представление алгоритма можно понимать как отображение множества алгоритмов для фиксированного исполнителя во множество некоторых данных, например, символов или ри-сунков.  Существует три основных способа представления алгоритмов: 

1) графический; 

2) неформальная языковая (алгоритмическая) нотация (запись); 

3) запись на алгоритмическом языке. 

Любая форма записи (представления) алгоритма должна обеспечивать свойства алгорит-ма: дискретности, конечности, определенности, массовости.  В графической форме алгоритм представлен в виде геометрических фигур. Обычно они связываются линиями, которые показывают направление передачи информации при исполне-нии алгоритма. Существует несколько вариантов графического представления алгоритмов, но широкую известность получило (и стало фактическим стандартом графического представления) представление в виде блок-схем. Метод блок-схем был предложен самим Фон Нейманом – одним из первых разработчиков вычислительной техники. 

Алгоритм может быть представлен в виде записей литературного языка, например, рус-ского. В этом случае последовательностью предложений описывается последовательность дей-ствий исполнителя, которым может быть в большинстве случаев только человек. Никаких спе-циальных правил и требований к таким записям алгоритмов не предъявляется. Главное, что бы выполнялись требования, предъявляемые к алгоритмам, о которых указывалось выше. В лите-ратуре, посвященной алгоритмам, иногда используется такой способ записи алгоритмов. В ка-честве примера можно привести трехтомную монографию известного специалиста по информатике Д.Кнута "Искусство программирования для ЭВМ". Такие записи на естественном языке называют иногда неформальной алгоритмической нотацией. 

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

Очевидно, способ представления алгоритмов на алгоритмических языках/языках про-граммирования играет ведущую роль. Существует большое количество языков программирова-ния. Одни из них широко распространены: Basic, Pascal, C/C++, Modula, Fortran. Другие же имеют специальное назначение: Prolog, Forth, Lisp. Некоторые языки сыграли заметную роль в программирования, но сейчас не используются. Примером является язык Algol. Именно этот язык послужил основой для разработки более совершенных языков, таких как Паскаль, Си и других. Алгол использовался также как алгоритмический язык для записи алгоритмов, в том числе в качестве автокода. Можно также отметить такой важный язык программирования для научно-технических расчетов: Фортран.  Существуют языки декларативного (логического) программирования, например Пролог. Здесь нет алгоритмических инструкций, а есть описания данных и связей между ними. Испол-няющая система производит поиск наилучшего способа решения поставленной задачи. На дру-гих принципах построены функциональные языки, например, Лисп. Основные управляющие структуры таких языков есть последовательность вызовов так называемых рекурсивных функ-ций. Это означает, что нет необходимости выполнять проверку логических условий, а выпол-нять только вычисления. Чтобы понять суть таких подходов, необходимо получить специаль-ные знания по теории алгоритмов и математической логике. Это касается глубинного понима-ния сути алгоритма, связанного с рекурсивными функциями и различными моделями машины Тьюринга.  В 1985 году основатель школьной информатики академик А.П.Ершов предложил для за-писи алгоритмов новый алгоритмический язык, который назвали школьным алгоритмическим языком. Иногда этот язык называют Е-языком, в честь его создателя. Но это называние является неформальным.  4.3. ПОНЯТИЕ ИСПОЛНИТЕЛЯ АЛГОРИТМА 

Будем всегда предполагать, что алгоритм предназначен для некоторого исполнителя алго-ритма. Исполнители можно разделить на два класса: неформальные и формальные. Неформаль-ные исполнители алгоритмов – это живые существа, прежде всего человек. Формальные исполнители – это автоматические программные и технические устройства. Например, интерпретатор языка BASIC является исполнителем алгоритмов, записанных на языке BASIC. Исполнитель алгоритмов некоторого класса можно называть также исполняющей системой.