Основные структуры алгоритмов: сравнительный анализ и примеры их использования

Цели и задачи

Цель работы — провести сравнительный анализ основных алгоритмических структур.

Введение и актуальность


Каждый шаг алгоритма, это определенная команда исполнителю. Для того, чтобы она была выполнена компьютером, необходимо записать программу на языке программирования. В любом языке высокого уровня существуют команды соответствующие командам из данного алгоритма. Если программа будет записана правильно, то каждая команда будет воспринята транслятором однозначно. Таким образом, алгоритм обладает свойством однозначности.
Алгоритм обладает свойством дискретности. Он разбит на три этапа, обозначенных соответствующими цифрами.
Любая часть приведенного алгоритма может быть выполнена за конечное число шагов, так как за конечное число шагов может быть выполнены соответствующие команды [3].

Формы описания алгоритмов
Алгоритмы могут быть записаны самыми разными способами. Мы будем рассматривать способы записи алгоритмов для вычислительных машин, то есть вычислительных алгоритмов.
Первый способ записи – это запись на естественном языке. Под естественными языками понимаются языки, на которых общаются люди в разных странах мира. Например, английский, немецкий, китайский языки. В качестве основных особенностей, важных для записей алгоритмов, можно отметить следующее:
многозначность слов и выражений;
огромное количество слов, грамматических и синтаксических конструкций;
неоднозначность применения этих конструкций.
Благодаря этим особенностям такой способ записи становится не очень удобным. Такие особенности языков появляются от того, что развитие естественных языков происходит под влиянием различных культурных, социальных и общественных явлений. Для записи алгоритмов нужно добиться полной однозначности для исполнителя тех действий, которые ему необходимо выполнить. Поэтому для записи вычислительных алгоритмов предпочтительнее использовать другие способы [5].
Записи с помощью, так называемого, псевдокода являются более предпочтительными по сравнению с естественным языком. Это запись алгоритмов с помощью условного алгоритмического языка, общепринятых формул и математических обозначений, элементов какого-нибудь языка программирования. Понятно, что записи принципиально одного и того же алгоритма разными людьми на псевдокоде могут очень сильно отличаться. Скажем так, псевдокод, используемый конкретными программистами для записи алгоритмов, это результат их договоренности о том, как этот язык должен выглядеть. Тот псевдокод, который использует конкретная группа программистов, есть результат их владения некоторыми языками программирования, опыта, их представления о том, какие детали алгоритма важны, а какие (обычно машинно-зависимые) детали можно опустить. Основная цель использования псевдокода, это облегчить понимание человеком алгоритма, сделать его максимально независимым от конкретного языка программирования. Синтаксис языка псевдокод не формализован.
Например, конструкции псевдокода, используемые в статьях, как минимум могут зависеть от того языка (естественного) на котором они написаны. Обычно, в псевдокоде, для стандартных команд (начало алгоритма, конец алгоритма, условные операторы) используют слова естественного языка, на котором написана статья вообще. Хотя это является совсем необязательным. Одним из частых применений псевдокода является разработка алгоритма программы до кодирования (записи программы на конкретном языке программирования)[6].
С точки зрения качества получаемой программы только такой подход является единственно правильным. Именно псевдокод служит средством обмена кодом между программистами, владеющими разными языками программирования. Конечно блок-схемы, о которых речь пойдет далее, являются значительно более стандартизированными записями, по сравнению с записями на псевдокоде, однако программы, имеющие сложную структуру и (или) большой объем исходного кода (именно такие программы появляются при решении реальных, а не учебных задач) получаются на псевдокоде слишком громоздкими.
Таким образом, вычислительный алгоритм должен обладать определенными свойствами для того, чтобы его использование было эффективным. Выбор формы записи зависит от задач, которые решает алгоритм, особенностей исполнителя и навыков программиста.
Алгоритмические структуры
Основные алгоритмические структуры
Практически любую структурную программу можно записать с помощью основных алгоритмических конструкций. Такими конструкциями являются линейные алгоритмы, циклы и ветвления.
Если в алгоритме действия выполняются одно за другим, то такие алгоритмы называют линейным. Блок-схема таких алгоритмов представлена на рисунке 1.
Рисунок 1 — Линейная алгоритмическая конструкция
Начало
Действие 1
...
Действие 2
Конец

Заключение и вывод


Мы рассмотрели общие принципы построения алгоритмов, основные алгоритмические структуры и их реализацию на языках программирования высокого уровня.
Мы описали общие принципы построения алгоритмов, сравнили основные алгоритмические структуры, выявили особенности построения основных алгоритмических структур, их достоинства и недостатки, привели примеры реализации основных алгоритмических структур на различных языках программирования высокого уровня.
Мы ввели понятие алгоритмов, указали, что алгоритм должен отвечать требованиям детерминированности, результативности, массовости, дискретности и конечность для того, чтобы они могли быть эффективно использованы для решения вычислительных, прикладных и системных задач.
Затем мы рассмотрели основные используемые формы записи алгоритмов, указали основные достоинства и недостатки каждой из них. Чаще всего для записи алгоритмов до этапа кодирования используются блок-схемы или псевдокод. Для разработки программ на компьютере чаще всего используются языки программирования высокого уровня.
Затем мы проанализировали основные алгоритмические структуры, такие как линейный алгоритм, ветвление и цикл. Следование является основой для более сложных программ, в которых одновременно используется различные алгоритмические структуры, возможно вложенные друг в друга.
Ветвление позволяет реализовывать нелинейную логику выполнения программ. При использовании полного ветвления необходимо учитывать, что оператор, стоящий сразу после выхода из ветвления будет выполнен в любом случае. При использовании неполного ветвления необходимо учитывать, что в ветвлении явно не указывается, что будет сделано в случае, если условие не выполняется (ложно). Цикл с предусловием стоит использовать в случае, если неизвестно точное количество повторений. Цикл с постусловием стоит использовать в случае, если необходимо, чтобы цикл был выполнен хотя бы один раз. Цикл с параметром является самым компактным способом записи циклической структуры.
Далее была описана реализации основных конструкций в языках программирования Pascal и С++. Отметим, что конструкции C++ более компактные и универсальные. Например, мы можем инициализировать переменную-счетчик в самом цикле, что не допускается в Pascal. Вообще, в правилах записи и использования основных алгоритмических конструкций отчетливо видна разница в данных языках программирования. Язык Pascal характеризуется четкой структурой составных частей программы. При использовании С++ программист получает больше свободы в использовании переменных, данных, правилах записи программ. Кроме того конструкции языка краткие, однако требуют большей подготовки от пользователя, так как могут быть менее понятны, чем конструкции для Pascal.
В последней главе приводится решение вычислительных задач с помощью языков программирования. В начале дается решение задачи на принадлежность точке к некоторой области, являющейся пересечением геометрических фигур. Затем представляются решения сложных уравнений (логарифмических, степенных) с помощью численных методов. Далее представлено вычисление интегралов.
Отметим, что решение задач численными методами является одним из основных приложений структурного программирования. Такая необходимость возникает, так как многие технические и научные задачи просто не решаются аналитически. Кроме того, численное решение задач позволяет проверить результаты, получаемые другими методами.
В курсовой работе были достигнута поставленная цель и решены все определенные во введении задачи.
В современном программировании используется, прежде всего, объектно-ориентированный подход. Популярность такого подхода связана с упрощением разработки программ с графическим пользовательским интерфейсом, значительным сокращением объема исходного кода программ при разработки сложных приложений. Однако и для объектно-ориентированного программирования (ООП) общие принципы программирования остаются актуальными, так как методы, определенные для классов объектов всегда содержат те или иные алгоритмические конструкции.
Не менее важными остаются базовые конструкции для функционального и модульного программирования. Стоит ожидать, что в подходы к программированию и дальше будут меняться, однако основные алгоритмические конструкции будут неотъемлемой частью этих подходов.
.

Нужна похожая работа?

Оставь заявку на бесплатный расчёт

Смотреть все Еще 421 дипломных работ