Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
СОВРЕМЕННЫЕ МЕТОДЫ ПРОГРАММИРОВАНИЯ.docx
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
797.27 Кб
Скачать

П.2. Алгоритмы

П.2.1. Алгоритм и его свойства П.2.2. Способы описания алгоритмов П.2.3. Средства графического изображения алгоритмов

П.2.1. Алгоритм и его свойства

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

Основные свойства любого алгоритма:

     детерминированность – однозначность получаемых результатов при одних и тех же исходных данных;

     результативность – обязательное получение искомого результата либо сигнала ошибки;

     массовость – возможность получения искомого результата при различных исходных данных;

     дискретность – возможность разбиения на элементарные действия.

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

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

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

Третий тип алгоритмов предназначен не для поиска ответа на поставленную задачу, а для моделирования физических систем с помощью ЭВМ.

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

     последовательность действий;

     альтернативность действий;

     использование повторений действий;

     использование вспомогательных алгоримов.

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

П.2.2. Способы описания алгоритмов

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

К настоящему времени сложились пять наиболее употребительных способов записи: словесный, формульно-словесный, графический, при помощи псевдокодов и языков программирования.

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

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

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

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

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

Последним способом записи алгоритмов является язык программирования. Рассмотренные выше способы удобны для программиста, но не приемлемы для ЭВМ, поскольку они не могут быть однозначно поняты.

Язык программирования – это знаковая система, предназначенная для описания процессов решения задач и их реализации на ЭВМ. Реализация означает, что описания могут быть введены в ЭВМ и однозначно ею поняты. К языкам программирования относятся языки команд или машинные языки и языки высокого уровня.

Первая группа представляет собственный язык ЭВМ, и исполнение программы возможно только в том случае, если она записана на этом языке.

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

Эти недостатки послужили стимулом для создания языков программирования высокого уровня, не совпадающих с машинными.

Идея таких языков состоит в представлении программ в виде не только приемлемом для ЭВМ, но и удобном для пользователя.

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

Приемлемость означает, что программа может быть введена в ЭВМ и однозначно понята, т. е. однозначно переведена на машинный язык.

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