Файл: Основные структуры алгоритмов: сравнительный анализ и примеры их использования (Понятие алгоритма)..pdf
Добавлен: 31.03.2023
Просмотров: 65
Скачиваний: 2
СОДЕРЖАНИЕ
1.Основные понятия теории алгоритмов
2.Базовые структуры алгоритмов
2.1.Методы описания алгоритмов
2.2.Основные структуры алгоритмов
3.Практическая реализация базовых структур алгоритмов
3.1.Операторы языка С++ для реализации базовых структур алгоритмов
3.2.Примеры использования основных структур алгоритмов на языке программирования С++
ВВЕДЕНИЕ
В нашей повседневной жизни встречаются очень часто действия, которые могут выполняться по четко определенному сценарию – алгоритму. Это может быть обычная последовательность операций, действия, которые зависят от условий, циклические операции. Повторяя их при этом, тратится много времени, а как-то выполнить упрощение такого алгоритма не всегда получается стандартными методами.
В мире на данный момент существует огромное множество языков программирования, но при этом более половины из них имеет разницу между другими лишь по методе компиляции и синтаксисе написания команд.
Период высоких технологий дает свои плоды, и теперь при помощи разных языков программирования имеются возможности для описания и упрощения любых алгоритмов. Например, нет необходимости описывать действия при этом, которые шаг за шагом могут повторятся, достаточно только описать один из нескольких циклических алгоритмов.
Актуальность темы исследования состоит в применении разного рода алгоритмов, ведь они являются базовыми составляющими всех программ, а также изучение их является краеугольным камнем для подготовки квалифицированных программистов.
Объект исследования – теория алгоритмов и структур данных.
Предмет исследования – структуры алгоритмов.
Основной целью работы является проведение анализа базовых структур алгоритмов, их использования при обработке данных.
В соответствии с поставленной целью выделены такие задания:
– рассмотреть основные понятия об алгоритмах, их свойства;
– описать методы подачи алгоритмов;
– охарактеризовать базовые структуры алгоритмов и провести их сравнительный анализ;
– провести рассмотрение операторов для реализации основных структур алгоритмов на языке С++;
– привести примеры использования базовых структур алгоритмов.
В работе используется язык С++, так как он на данное время является одним из самых используемых.
Проблему использования базовых структур алгоритмов изучали разные ученые: Б. Страуструп, Дж.Прата, Г Шилдт. Как результат исследования ими были выпущены учебники по изучению языка программирования С++.
1.Основные понятия теории алгоритмов
1.1.Понятие алгоритма
В жизнедеятельности постоянно нужно сталкиваться с различными правилами, что описывают последовательности действий с целью достичь какого-то определенного результата. Такие правила являются многочисленными. К примеру, мы придерживаемся каких-то правил, чтобы приготовить лекарство, позвонить, сварить суп или же решить какое-то математическое уравнение. Рассмотренные примеры можно объединять под понятием «алгоритм». [1]
Понятие алгоритма – это фундаментальная концепция информатики и математики. Оно возникло задолго до создания персональных компьютеров и на данный момент стало главным понятием. [2]
Термин «алгоритм» происходит от фамилии индийского математика Мугаммада аль-Хорезми (рис.1). [4]
Рис.1. Мугаммад аль-Хорезми
Это – один из крупнейших ученых Средневековья. Его родина – Хорезм. Свои знания аль-Хорезми совершенствовал в «Доме мудрости» в Багдаде. Это учреждение было своего рода Академией наук, в которой работали многие ученые арабского Востока. «Дом мудрости» славился своей богатой библиотекой старинных рукописей и астрономической обсерваторией.[3]
Исследователи установили, что аль-Хорезми был автором 9 сочинений:
- Книга об индийской арифметике;
- Краткая книга об исчислении алгебры и алмукабалы;
- Астрономические таблицы (зидж);
- Книга картины Земли;
- Книга о построении астролябии;
- Книга о действиях с помощью астролябии;
- Книга о солнечных часах;
- Трактат об определении эры евреев и их праздниках;
- Книга истории.[11]
Сочинение аль-Хорезми об арифметике сыграло важнейшую роль в истории математики и хотя его арабский подлинный текст утерян, содержание известно по латинскому переводу XII в. В этом сочинении впервые дано систематическое изложение арифметики, основанной на десятичной позиционной системе счисления.
Алгебраическая книга аль-Хорезми (Китаб мухтасаб ал-джабр и ва-л-мукабала) состоит из двух частей – теоретической (теория решения линейных и квадратных уравнений, некоторые вопросы геометрии) и практической (применение алгебраических методов в решении хозяйственно-бытовых, торговых и юридических задач – дележ наследства, составление завещаний, раздел имущества, различные сделки, измерение земель, строительство каналов). Благодаря арабскому слову «ал-джабр» возник такой научный термин как «алгебра». Унаследованное от восточных математиков учение о линейных и квадратных уравнениях стало основой развития алгебры в Европе. Латинизированное имя ученого вошло в науку под термином «алгоритм».[13]
Геометрическая часть трактата посвящена измерению площадей и объемов геометрических фигур (треугольник, квадрат, ромб, параллелограмм, круг, сегмент круга, четырехугольник с разными сторонами и углами, параллелепипед, круговой цилиндр, призма, конус).[20]
Огромен вклад ученого и в астрономию, которая была необходима для орошаемого земледелия, морской и сухопутной торговли. Зидж (сборник астрономических и тригонометрических таблиц) аль-Хорезми посвящен хронологии и календарю (важное научное направление, так как разные народы пользовались различными системами временного счета). Большую важность для астрономии того времени представляла его книга об астролябии.[14]
Algorithmi – латинское транскрипция его фамилии, это слово применялось для обозначения правил по таким арифметическим действиям: [1]
– сложение;
– вычитание;
– умножение;
– деление.
Совокупность таких правил в Европе начали называть «алгоризм». В следующих периодах это слово переродилось в термин «алгоритм» и стало при этом собирательным названием некоторых правил определенного вида, а не лишь правил арифметических действий.
На протяжении длительного времени слово употребляли только математики, которые обозначали ним правила решения разных задач.
Алгоритм – точное правило, которое определяет процесс преобразования начальных данных для получения результатных при решении определенного вида задач. [1]
В таком правиле задаются указания по выполнению некоторой системы операторов в определенном порядке, правила их применения для начальных данных.
Алгоритм – фундаментальное понятие программирования. Ученые выделяют 3 основных класса алгоритмов:
– информационные;
– вычислительные;
– управляющие [3].
Вычислительные алгоритмы – алгоритмы, что работают со сравнительно простыми форматами данных.
Информационные алгоритмы дают возможность использовать набор простых процедур, что обрабатывают большие объемы имеющейся информации. Примером процедуры может быть проведение поиска необходимой символьной или числовой информации, что подпадает под определенные критерии.
Эффективность работы таких алгоритмов прямо зависит от организации информации в программе.
Управляющие алгоритмы характеризуются тем, что информация для них поступает от внешних источников, которыми они и управляют. Результатами выполнения этих алгоритмов является создание своевременной управляющей реакции на изменение начальных данных.[2]
Попытки сформулировать в жесткой терминологии приемы и формы создания алгоритмов привели к появлению самостоятельных дисциплин – теории алгоритмов, структуры данных и алгоритмов, в которых раскрываются теоретические возможности по разработке эффективных алгоритмов для реализации вычислительных процессов, их применению в прикладных программах.
1.2.Свойства алгоритмов
Любые алгоритмы обладают такими свойствами:[6]
1. Массовость – возможность применить алгоритм к любым задачам четко определенного класса.
Данное свойство обеспечивает решение практически любой задачи из перечня однотипных задач для любых начальных данных. Так, алгоритм вычисления для площади треугольника применяется к любым треугольникам. Также существуют и алгоритмы, которые используются только к единому перечню исходных данных. [9]
К их числу можно отнести алгоритмы, которые используются различными автоматами, например, машиной для продажи газет, телефоном-автоматом.
2. Детерминированность или определенность – набор указаний должен не зависеть от исполнителя алгоритма и быть точен. Такая характеристика обеспечивает однозначность и определенность результата процесса, который описан при заданных начальных данных. [14]
Каждый из шагов должен быть четко описан и недвусмысленно определен. Также он не должен допускать собственной и произвольной трактовки исполнителем алгоритма.
3. Дискретность – разбиение процесса, что определяется алгоритмом, на некоторое число отдельных элементарных операций, возможность выполнения которых обычным человеком или машиной не вызовет никаких сомнений.
Процесс, что определяется алгоритмом, должен быть с дискретным характером, то есть представляться в виде последовательности отдельных шагов.
4. Ясность – это понимание исполнителя алгоритма о том, что нужно сделать для выполнения поставленного алгоритма. [15]
При этом исполнитель, выполняя алгоритм, действует «механически», а формулировка алгоритма должна быть точной и однозначной.
5. Формальность– это когда результат выполнения алгоритмов не должен зависеть от любого рода факторов, что не являются частью рассматриваемого алгоритма. [2]
Все исполнители, способные воспринимать и выполнять некоторые указания алгоритма (даже при этом не понимая их), действуя по нему, могут выполнить поставленную ранее задачу. [4]
6. Результативность – завершение процесса преобразования начальной информации в конечную. Это свойство указывает применение алгоритма к всем допустимым наборам исходных данных за некоторое число шагов обеспечивает получение результата. [1]
7. Корректность – означает, что если алгоритм создан для решения определенной задачи, то для всех исходных данных он должен всегда давать правильный результат и ни для каких исходных данных не будет получен неправильный результат. [11]
Если хотя бы один из полученных результатов противоречит хотя бы одному из ранее установленных и получивших признание фактов, алгоритм нельзя признать корректным.
2.Базовые структуры алгоритмов
2.1.Методы описания алгоритмов
Чтобы довести суть алгоритма к пользователю, он должен быть формализованными по имеющимся правилам конкретных изобразительных или графических средств.
Методы, которые используются для этого, определяют квалификацию исполнителя, в значительной степени. К базовым методам для записи алгоритма относятся: [7]
– блок-схемы;
– формульно-словесный метод;
– языки программирования алгоритмов.
Формульно-словесный метод базируется на инструкциях по реализации в определенной последовательности действий с использованием символов, выражений, математическими пояснениями или выражениями на естественном языке.[8]
В словесной записи все операции в виде правил формулируются на обычном языке. Правила нумеруются, а также указывается их порядок при выполнении.
Блок-схема алгоритма – это графическое изображение процесса реализации задачи в виде совокупности блоков специального вида, которые отражают специфику преобразования информации и соединенных линиями или стрелками.
Внутри блока описывается конкретный этап реализации алгоритма.
Рассмотрим базовые фигуры, применимые в создании блок-схем:[19]
1. Процесс. Выполнение операций, в результате чего может измениться значение, форма представления, расположения данных в программе. Внутри символа или в виде комментария на обычном языке или в виде формул одиночной операции.
Рис.2. Блок «Процесс»
2.Решение. Выбор направления алгоритма или программы в зависимости от условий. [6]