Автор Анна Евкова
Преподаватель который помогает студентам и школьникам в учёбе.

Основные структуры алгоритмов: сравнительный анализ и примеры их использования (Алгоритмическая конструкция «Цикл»)

Содержание:

Введение

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

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

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

Цель данной курсовой работы научиться составлять алгоритмы разных структуры, уметь применять их при написании программ на алгоритмическом языке Pascal, использовать при составлении электронных таблиц Excel, решать различного рода задачи.

Глава 1. Теоретическая часть

Глава 1.1 Понятие алгоритма и его свойства

Алгоритм — это описанная на некотором языке точная конечная система правил, которая определяет содержание и порядок действий над некоторыми объектами, строгое выполнение которых дает решение поставленной задачи.

Слово «алгоритм» появилось в средние века, когда европейцы познакомились со способами выполнения арифметических действий в десятичной системе счисления, описанными узбекским математиком Муххамедом бен Аль-Хорезми («аль-Хорезми» - человек из города Хорезми; в настоящее время город Хива в Хорезмской области Узбекистана). Слово алгоритм – есть результат европейского произношения слов аль-Хорезми. Первоначально под алгоритмом понимали способ выполнения арифметических действий над десятичными числами. В дальнейшем это понятие стали использовать для обозначения любой последовательности действий, приводящей к решению поставленной задачи.

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

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

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

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

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

Определенность (детерминированность, точность) - свойство алгоритма, которое указывает на то, что каждый шаг алгоритма должен быть строго определен и не допускать различные толкований; также строго должен быть определен порядок выполнения отдельных шагов.

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

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

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

Глава 1.2 Способы описания алгоритмов

Существуют следующие способы описания алгоритма: словесное описание, псевдокод, блок-схема, программа.

Словесное описание представляет структуру алгоритма на естественном языке. Например, любой прибор бытовой техники (утюг, электропила, и т.п.) имеет инструкцию по эксплуатации, то есть словесное описания алгоритма, в соответствии которому данный прибор должен использоваться.

Никаких правил составления словесного описания не существует. Запись алгоритма осуществляется в произвольной форме на естественном языке. Этот способ описания не имеет широкого распространения, так как строго не формализуем (под «формальным» понимается то, что описание абсолютно полное и учитывает все возможные ситуации, которые могут возникнуть в ходе решения); допускает неоднозначность толкования при описании некоторых действий; страдает многословностью.

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

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

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

Рассмотрим некоторые основные конструкции, которые используются для построения блок-схем.

https://www.bestreferat.ru/images/paper/62/85/8618562.pnghttps://www.bestreferat.ru/images/paper/63/85/8618563.pngБлок, характеризующий начало/конец алгоритма (для

подпрограмм - вызов/возврат):

https://www.bestreferat.ru/images/paper/64/85/8618564.png

Блок — процесс, предназначенный для описания

отдельных действий:

https://www.bestreferat.ru/images/paper/65/85/8618565.pngБлок — предопределенный процесс, предназначенный для обращения к _______________________________________________________________________________________________________________________________вспомогательным алгоритмам (подпрограммам):

https://www.bestreferat.ru/images/paper/66/85/8618566.png

Блок — ввода/вывода с неопределенного носителя:

https://www.bestreferat.ru/images/paper/67/85/8618567.png

Блок - ввод с клавиатуры:

https://www.bestreferat.ru/images/paper/68/85/8618568.png

https://www.bestreferat.ru/images/paper/69/85/8618569.png

Блок — вывод на монитор:

https://www.bestreferat.ru/images/paper/70/85/8618570.png

Блок — вывод на печатающее устройство:

Блок — решение (проверка условия или условный блок):

https://www.bestreferat.ru/images/paper/71/85/8618571.png Нет Да

https://www.bestreferat.ru/images/paper/72/85/8618572.png

Блок, описывающий цикл с параметром:

https://www.bestreferat.ru/images/paper/73/85/8618573.pngБлок — границы цикла, описывающий циклические

процессы типа: «цикл с предусловием», «цикл

с постусловием»:

https://www.bestreferat.ru/images/paper/74/85/8618574.png

https://www.bestreferat.ru/images/paper/75/85/8618575.png

Соединительные блоки:

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

Программа — это описание структуры алгоритма на языке алгоритмического программирования.

Глава 2. Основные алгоритмические конструкции

Глава 2.1 Линейная алгоритмическая конструкция

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

Линейные вычислительные процессы имеют место, например, при вычислении арифметических выражений, когда имеются конкретные числовые данные и над ними выполняются соответствующие условию задачи действия. На рисунке 1 показан пример линейного алгоритма, определяющего процесс вычисления арифметического выражения у=(b2-ас):(а+с).

https://www.bestreferat.ru/images/paper/76/85/8618576.png

Рисунок 1 – Линейный алгоритм

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

https://www.bestreferat.ru/images/paper/77/85/8618577.png

Ложь (Нет) Истина (Да)

Рисунок 2 - Полное ветвление

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

https://www.bestreferat.ru/images/paper/78/85/8618578.png

Истина (Да)

Ложь (Нет)

Рисунок 3 - Неполное ветвление

В зависимости от типа и числа проверяемых условий различают:

- ветвление с простым условием (условие - выражение отношения);

- ветвление с составным условием (условие - логическое выражение);

- сложное ветвление (несколько условий).

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

Глава 2.3 Алгоритмическая конструкция «Цикл»

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

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

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

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

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

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

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

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

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

На приведенных ниже рисунках показаны примеры циклических процессов.

https://www.bestreferat.ru/images/paper/79/85/8618579.png

Рисунок 4 - Блок-схема цикла с предусловием

https://www.bestreferat.ru/images/paper/80/85/8618580.png

Рисунок 5 - Блок-схема цикла с постусловием

Глава 3. Сравнительный анализ алгоритмов

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

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

Для оперирования с формальной моделью алгоритма рассматривается абстрактная машина, которая включает:

• процессор, поддерживающий адресную память;

• набор элементарных операций, соотнесенных с языком высокого уровня. Допущения:

• каждая команда выполняется не более чем за фиксированное время;

• исходные данные алгоритма представляются N машинными словами по 𝛂 битов каждое.

На входе алгоритма:

𝐍𝜶 = 𝐍∗ 𝛂 бит информации

Программа, реализующая алгоритм состоит из 𝑴 машинных инструкций по 𝜷 битов:

𝐌𝜷 = 𝑴 ∗ 𝜷 бит информации

Дополнительные ресурсы абстрактной машины на реализацию алгоритма:

• 𝑺𝒅–– память для хранения промежуточных результатов;

• 𝑺𝜸 – память для организации вычислительного процесса (память, необходимая для реализации рекурсивных вызовов и возвратов).

При решении конкретной задачи, заданной 𝑵 + 𝑴 + 𝑺𝒅 + 𝑺𝜸 словами памяти, алгоритм выполняет конечное количество «элементарных» операций абстрактной машины. В связи с этим вводится определение трудоёмкости алгоритма.

Под трудоёмкостью алгоритма 𝑭𝒂(𝒏)

• для данного конкретного входа;

• для решения конкретной проблемы (задачи);

• в данной формальной системе понимается количество «элементарных» операций (𝑛), совершаемых алгоритмом.

Комплексный анализ алгоритма может быть выполнен на основе комплексной оценки ресурсов формальной машины, требуемых алгоритмом для решения конкретных задач. 𝜑𝐴 = 𝑐1𝐹𝑎

(𝑛) + 𝑐2𝑁𝑎 + 𝑐3𝑀𝛽 + 𝑐4𝑆𝑑 + 𝑐5𝑆𝜸

Для разных областей применения веса ресурсов 𝐜1 будут разными.

Заключение

Изобретение языка программирования высшего уровня позволило нам общаться с машиной, понимать её (если конечно Вам знаком используемый язык), как понимает американец немного знакомый с русским языком древнюю азбуку Кириллицы. Проще говоря, мы в нашем развитии науки программирования пока что с ЭВМ на ВЫ. Но если мы обратим внимание на темпы роста и развития новейших технологий в области программирования, то можно предположить, что в ближайшем будущем, человеческие познания в этой сфере, помогут произвести на свет языки, умеющие принимать, обрабатывать и передавать информации в виде слова, звука, жеста или мысли. Так и хочется назвать это детище компьютеризированного будущего: «языки программирования «высочайшего» уровня». Возможно, концепция решения этого вопроса проста, а ближайшее будущее этого проекта уже не за горами.

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

Единственный способ изучать новый язык программирования – писать на нём программы.

Список литературы

1. Основы алгоритмизации и программирования: учеб. пособие / Т.А.

Жданова, Ю.С. Бузыкова. – Хабаровск : Изд-во Тихоокеан. гос.ун-та, 2011.

– 56 с. Режим доступа:

http://pnu.edu.ru/media/filer_public/2013/02/25/book_basics.pdf.

2. Программирование и основы алгоритмизации: Для инженерных

специальностей технических университетов и вузов. /А.Г. Аузяк, Ю.А.

Богомолов, А.И. Маликов, Б.А. Старостин. Казань: Изд-во Казанского

национального исследовательского технического ун-та - КАИ, 2013, 153 с.

Режим доступа:

http://au.kai.ru/documents/Auzyak_Progr_osn_alg_C_2013.pdf.

3. Основы алгоритмизации и программирования : учебное пособие / Г.

Р. Кадырова. – Ульяновск : УлГТУ, 2014. – 95 с. . Режим доступа:

http://venec.ulstu.ru/lib/disk/2014/137.pdf

4. Белов П.М. Основы алгоритмизации в информационных системах:

Учебн. Пособие.- Спб.: СЗТУ, 2003. – 85с. Режим доступа:

http://www.ict.edu.ru/ft/005406/nwpi225.pdf

5. Основы алгоритмизации и программирования: Метод. указ. / Сост.:

И.П. Рак, А.В. Терехов, А.В. Селезнев. Тамбов: Изд-во Тамб. гос. техн. ун-

та.

Режим доступа: http://www.ict.edu.ru/ft/004758/terehov.pdf.

6. Макаров В.Л. Программирование и основы алгоритмизации.: учебн.

пособие.-Спб., СЗТУ, 2003, - 110с. Режим доступа:

http://window.edu.ru/resource/126/25126/files/nwpi223.pdf.

7. Б.В. Соболь [и др.] «Информатика и программирование»– Ростов н/Д:

Феникс, 2006 – 354 с.

8. Информатика. Базовый курс./С.В. Симонович и др. - СПб.: Питер, 2001

9. “Языки программирования”, Малютин Э.А., Малютина Л.В., 2005 г.;

10. “Новые языки программирования и тенденции их развития”, Ушкова

В., 2007 г.;

11. “Мир Лиспа” т.1, Хьювенен Э., Сеппенен Й., 1990 г.;

12. “Алгоритмические языки реального времени”, Янг С., 2005 г..