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

Алгоритмизация как обязательный этап разработки программы

Содержание:

Введение

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

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

Сам по себе «алгоритм» как явление не является чем-то новым. Значение самого слова «алгоритм» весьма схоже со значениями слов «рецепт», «метод», «процесс». Одним из первых алгоритмов принято считать открытый около 2300 лет назад алгоритм Евклида — это был способ нахождения наибольшего общего делителя двух целых чисел.

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

1 История развития программирования.

В этой главе будут разобраны основные моменты в истории программирования.

Термин «программирование» означает процесс и искусство создания компьютерных программ с помощью специальных языков программирования.

Программное обеспечение — совокупность программ, выполняемых компьютером, а так же вся область деятельности по проектированию и разработке программ.[1]1

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

Языки программирования можно разделить на две большие группы — декларативные и императивные. Программы на императивных языках программирования содержат точную последовательность инструкций, выполняя которую, исполнитель получает результат. К этой группе относится большинство языков. Программы на декларативных языках (SQL, Prolog) содержать не точные последовательности инструкций, а цели, которые должны быть достигнуты, и описание средств, с помощью которых это следует делать. Точную последовательность действий в этом случае определяет сам исполнитель, анализируя эти сведения.[2]2

Первым программистом в истории была Ада Лавлейс. В 1843 году Ада разработала первые программы для аналитической машины вычислительной машины Чарльза Бэббиджа и заложила теоретические основы программирования. Она впервые ввела понятие "цикл операции". Высказала главную мысль, что аналитическая машина может решать задачи, которые из-за трудности вычислений практически невозможно решить вручную. В честь Ады Лавлейс был назван язык программирования, созданный в 1979-1980 годах и предназначавшийся в большей степени для систем управления автоматизированными комплексами военных объектов.

Технологией программирования называется совокупность методов и средств, используемых в процессе разработки программного обеспечения(ПО).[3]1

Программирование достаточно новая наука в нашем мире. Ее бурное развитие началось примерно в 1940-50 годах с появлением первых электронно-вычислительных машин(ЭВМ). Программирование в то время велось непосредственно в машинных кодах, а основным носителем информации были перфокарты и перфоленты. Программы были достаточно простыми т.к. были весьма ограничены возможностями ЭВМ и слишком сложны в разработке и отладке непосредственно на машинном языке.

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

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

Итак до середины 1960-х гг. использовалась неструктурированная, «стихийная» технология программирования. Структура первых простейших программ состояла из: программы, написанной на машинном языке(в двоичных или шестнадцатеричных кодах) и обрабатываемых ею данных. Это послужило причиной «кризиса программирования», который проявился в 1960 годах. т.к. при разработке сложного ПО стали срываться сроки разработки программ. Причиной являлось несовершенство неструктурированного программирования. В «стихийной» технологии программирования использовался метод программирования «снизу-вверх» - сначала разрабатывались подпрограммы, а затем строилась сложная программа путем их сборки. Это приводило к большому количеству ошибок согласования. Тестирование и отладка начали занимать до 80% времени разработки ПО. Так же остро стояла проблема специфичности первых языков программирования, часто они являлись узкоспециализированными и вымирали вместе с устройством, на котором использовались.

В последствии была разработана технология процедурного (структурного, модульного) программирования, внесшая ясность в написание программ, простоту тестирования и отладки, легкость модификации.

Процедурное программирование — дисциплинированный подход к написанию программ. В его основе используются следующие методы программирования:

  • метод декомпозиции (нисходящего проектирования) — разделение программы на процедуры простейшей структуры и представление программы в виде иерархии процедур.
  • метод модульной организации — группировка процедур и обрабатываемых ими данных в модули, которые программируются и компилируются отдельно. Преимущества данного метода заключаются в параллельной работе программистов, удобстве программирования, возможности создания библиотек.
  • метод структурного программирования процедур, который заключатся в следующем:
    1. разделение процедур на вложенные блоки, что позволяет локализовать переменные и операторы их обработки структурировать процедуру
    2. использование операторов ветвления и циклов, осуществляющих передачу управления только сверху вниз, что приводит к ясности алгоритма, к облегчению программирования и сопровождения программ.
    3. Форматирование текстов процедуры: использование отступов для отображения вложенности блоков, использование комментариев, что приводит к повышению читаемости программ и облегчению их сопровождения.[4]1

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

К процедурным языкам относятся FORTRAN, C, Ada, Pascal, BASIC и некоторые другие. Процедурные языки иногда также называются императивными языками.

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

Объектная структура программы впервые была использована в языке имитационного моделирования сложных систем Simula (60-е годы XX в.), в специализированном языке моделирования Smalltalk (70-е годы XX в.), а затем в новых версиях универсальных языков программирования, таких, как Pascal, C++, Modula, Java.

Основными свойствами ООП являются:

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

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

Бурное развитие технологий программирования, основанных на объектном подходе, позволило решить многие проблемы. Так были созданы среды, поддерживающие визуальное программирование, например, Delphi, C++ Builder, Visual C++ и т.д. При использовании визуальной среды у программиста появляется возможность проектировать некоторую часть, например, интерфейсы будущего продукта с применением визуальных средств добавления и настройки специальных библиотечных компонентов. Результатом визуального проектирования является заготовка будущей программы, в которую уже внесены соответствующие коды.

Также существует ответвление от ООП в виде параллельного программирования. Данный подход является развитием процедурно-ориентированного подхода в программировании.

Параллельное программирование – раздел программирования, связанный с изучением и разработкой методов и средств для:

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

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

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

  • создавать и анализировать эффективные параллельные алгоритмы;
  • использовать программные инструменты и библиотеки для разработки, отладки, анализа и оптимизации параллельных программ.

К таким технологиям относятся технологии:

  • ориентированные на кластеры / суперкомпьютеры (технология MPI);
  • состоящие из вычислительных узлов на базе традиционных многоядерных центральных процессоров (технологии OpenMP, Intel Cilk Plus, Intel TBB, Intel ArBB, OpenCL);
  • состоящие из гетерогенных узлов с использованием графических процессоров (технологии NVIDIA CUDA, OpenCL).

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

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

Все это привело к появлению компонентных технологий программирования и CASE-технологий.

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

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

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

2 Понятие алгоритма. Свойства и виды алгоритмов

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

Алгоритм — понятное и точное предписание(указание) исполнителю совершить определенную последовательность действий для достижения поставленной цели за конечное число шагов.[5]1

Для того, чтобы последовательность команд можно было назвать алгоритмом она должна обладать тремя важными характеристиками:

  1. Алгоритм должен работать за конечное количество времени. Если ваш алгоритм не может разобраться с проблемой, для которой он был создан, за конечное количество времени, то он бесполезен.
  2. Он должен иметь чётко определённые инструкции. Каждый шаг алгоритма должен быть точно определён. Инструкции должны быть однозначны для каждого случая.
  3. Он должен быть пригодным к использованию. Алгоритм должен решать проблему, для решения которой он был написан.

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

  1. Дискретность — это разделение выполнения решения задачи на отдельные операции(выполняемые исполнителем по определенным командам). Анализ различных примеров алгоритмов показывает, что запись алгоритма распадается на отдельные указания исполнителю выполнить некоторое законченное действие. Каждое такое указание называется командой. Команды алгоритма выполняются одна за другой. После каждого шага исполнения алгоритма точно известно, какая команда должна выполнятся следующей.
  2. Элементарность (понятность) — каждый шаг алгоритма должен быть простым, чтобы исполнитель мог выполнить его одним действием.
  3. Определенность (детерминированность, точность) — свойство алгоритма, указывающее на то, что каждый шаг алгоритма должен быть строго определен и не допускал произвольной трактовки. Также строго должен быть определен порядок выполнения отдельных шагов. Алгоритм не должен быть рассчитан на принятие каких-либо самостоятельных решений исполнителем, не предусмотренных составленным алгоритмом.
  4. Массовость — алгоритм решения задачи разрабатывается в общем виде, т.е. гарантируется применимость алгоритма ко всем задачам рассматриваемого типа, различающихся только исходными данными. При этом исходные данные могут выбираться из некоторой области, которая называется «область применимости алгоритма».
  5. Результативность — свойство, подразумевающее, что любой алгоритм должен завершаться после конечного числа шагов, с указанием того, что считать результатом. Цель выполнения любого алгоритма состоит в получении конкретного результата, который имеет определенное отношение к исходным данным.[6]2

Теперь пришло время поговорить о видах алгоритмов. При всем многообразии различных задач, решаемых с помощью алгоритмов в них можно выделить три основных вида:

  1. Линейный
  2. Ветвящийся
  3. Циклический

В алгоритмах линейной структуры действия выполняются последовательно друг за другом.[7]1

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

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

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

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

Цикл с предусловием.

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

Цикл с постусловием.

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

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

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

Алгоритмы существуют не сами по себе. Они предназначены для определенного исполнителя (человека, робота, компьютера, языка программирования и т.д.). В связи с этим способы записи алгоритмов могут быть различны. Наиболее распространенными являются 3 типа записи алгоритмов:

  • Вербальный — алгоритм описывается на естественном человеческом языке. Этот способ подходит если необходимо приближенно описать суть алгоритма, но при такой записи не всегда получается точно и ясно выразить логику действий. Примером может являться любая инструкция по эксплуатации для электроприборов. Инструкция является словесным описанием алгоритма, по которому прибор должен использоваться. Правил в составлении словесных алгоритмов не существует. Алгоритм записывается в произвольной форме на естественном языке. Этот способ описания имеет ряд недостатков, так как строго не формализуем (то есть не учитывает все возможные ситуации, возникающие в процессе решения). допускает неоднозначность толкования при описании некоторых действий; страдает многословностью.

Примером вербальной записи алгоритма может являться рецепт приготовления шарлотки:

Продукты:

  • сахар — 1 стакан;
  • мука — 1 стакан;
  • яйца — 3 штуки;
  • разрыхлитель для теста — ½ ч.л.;
  • яблоки — 2 штуки;
  • масло сливочное — для смазывания формы.

Способ приготовления:

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

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

  • Графический — алгоритм описывается с помощью набора графических изображений (блок-схем). Описание алгоритма с помощью блок схем осуществляется рисованием последовательности геометрических фигур, каждая из которых подразумевает выполнение определенного действия алгоритма. Порядок выполнения действий указывается стрелками. Написание алгоритмов с помощью блок-схем регламентируется ГОСТом. Этот способ имеет ряд преимуществ. Благодаря наглядности, он обеспечивает «читаемость» алгоритма и явно отображает порядок выполнения отдельных команд. В блок-схеме каждой формальной конструкции соответствует определенная геометрическая фигура или связанная линиями совокупность фигур. Так же к графической записи алгоритма относят запись алгоритма с использованием диаграммы Нэсси Шнейдермана. Диаграмма Нэсси-Шнейдермана была предложена в сочетании со структурным программированием как средство борьбы с проблемой "клубка спагетти", присущей схемам алгоритмов. Эта диаграмма, бесспорно, заменяет одномерное представление вложенных операторов двумерным. Тем не менее, по мере роста сложности программного кода появляются проблемы отображения, поскольку элементы диаграммы быстро становятся все меньше и меньше.[8]3

Можно выделить несколько «типичных» действий (этапов), которые в различной последовательности выполняются при решении задач:

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

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

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

В качестве примера используем самую простую программу, которую пишут новички на их первом языке программирования — данная программа выводит надпись «Hello, World»:

#include <iostream>

#include <cstdlib>

using namespace std;

int main()

{

cout << "Hello, world!" << endl;

system("pause");

return 0;

}

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

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

для j от 1 до n-1

для i от 1 до n-j

если aᵢ < aᵢ₊₁ поменять их местами

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

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

Алгоритмизация – как ключевой этап программирования

Программа – это запись алгоритма на языке программирования, приводящая к конечному результату за конечное число шагов. Программа – это детальное и законченное описание алгоритма средствами языка программирования.[9]1

Транслятор (англ. translator – переводчик) – это программа-переводчик. Она преобразует программу, написанную на одном из языков высокого уровня, в программу, состоящую из машинных команд. Трансляторы реализуются в виде компиляторов или интерпретаторов. С точки зрения выполнения работы компилятор и интерпретатор существенно различаются.[10]2

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

Полное построение алгоритма предусматривает выполнение следующих этапов:

  • постановка задачи — подразумевает точную формулировку задачи, путем постановки вопросов к ней. Наличие точной формулировки задачи является одной из необходимых составляющих ее правильного понимания и решения. В случае неточной, непонятной формулировки затрудняется понимание смысла задачи, становится невозможным выделение системы входных данных и необходимого результата.
  • построение математической модели — после точной постановки задачи необходимо сформулировать для нее математическую модель, т.е. Формализовать задачу: нужно записать математические соотношения (формулы, уравнения, неравенства и т.д.), которые связывают результаты с исходными данными.
  • разработка алгоритма — этот этап называется ещё алгоритмизацией задачи. Он является первым этапом программирования. В процессе выполнения данного этапа разрабатывается алгоритм решения, т.е. устанавливается необходимая последовательность действий для реализации метода. Обычно предварительно анализируются несколько возможных вариантов алгоритмов. Затем выбирается тот вариант, который обеспечивает наиболее эффективное использование ЭВМ. Особенностью этого этапа является то, что алгоритм решения задачи разрабатывается в общем виде.[11]1 Построение алгоритма – это задача, не обладающая существованием единственного решения, что приводит к обязательной оценке эффективности разработанных алгоритмов.
  • проверка правильности алгоритма — данный этап является одним из сложных и продолжительных этапов разработки алгоритма. При доказательстве правильности алгоритма обычно применяется прогон его на различных тестовых задачах, решение которых известно, либо сравнение полученных результатов с существующими экспериментальными данными.
  • реализация, программирование алгоритма — алгоритм может быть реализован либо путем кодирования на конкретном языке программирования, либо с использованием специального программного приложения. Для программирования обычно применяются языки высокого уровня. Составленная программа переводится на машинный язык ЭВМ. После этого выполняется соответствующая машинная программа.
  • проверка (отладка) программы — эксплуатации программы предшествуют этапы её отладки и тестирования. Оба этапа сводятся к прогону программы на ЭВМ, но по своему назначению они имеют разные цели. Отладка позволяет выявить ошибки в программе, а тестирование показывает возможности программы при эксплуатации. Процесс отладки программы состоит из двух видов:
  • синтаксической отладки — в процессе синтаксического контроля программы транслятор выявляет сочетания символов и конструкции, которые недопустимы с точки зрения правил их построения или написания, принятых в используемом языке программирования.
  • отладки семантики и логической структуры.

При этом прогон программы можно осуществить на простом примере, который может быть проверен вручную.

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

По сути все эти этапы и являются алгоритмом для полного построения алгоритма программы.

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

Таким образом алгоритмизация имеет огромное влияние на процесс написания программы, она также даёт представления о том, как эффективно организовать данные, как писать код с максимальной производительностью.

Знание и использование алгоритмов необходимо для того, чтобы эффективно решать поставленные задачи, и с максимальными возможностями использовать язык, на которым пишется программа.

Заключение

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

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

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

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

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

  1. Перова В.И., Сабаева Т.А., Чекмарев Д.Т. Разработка алгоритмов для решения задач на ЭВМ: учебное пособие. – Нижний Новгород: Нижегородский гос.университет, 2015. – 136 с.
  2. Гниденко И.Г., Павлов Ф.Ф., Федоров Д.Ю. Технология разработки программного обеспечения: учебное пособие для СПО. – Издательство Юрайт, 2019. – 235 с.
  3. В.Г. Давыдов Программирование и основы алгоритмизации: учебное пособие. – М.: Высш. шк., 2003. – 447 с
  4. Трофимов В.В., Павловская Т.А. Основы алгоритмизации и программирования: учебник для СПО – Издательство Юрайт, 2019. – 235 с.
  5. Ахмедханлы Д.М., Ушмаева Н.В. Основы алгоритмизации и программирования : электрон. учеб.-метод. пособие – Тольятти: Изд-во ТГУ, 2016. – 123 с.
  6. Дудаков С.М., Карлов Б.Н. Математическое введение в информатику: учебник. – Тверь: Твер. гос. ун-т, 2017. – 320 с.
  7. Колдаев В.Д.-Численные методы и программирование: учебное пособие – М.: ИД «ФОРУМ»: ИНФРА-М, 2009 – 336 с.
  8. Гагарина Л.Г., Колдаев В.Д. Алгоритмы и структуры данных: учебное пособие – М.: Финансы и статистика; ИНФРА-М, 2009 – 304 с.
  9. Голицина О.Л., Попов И.И. Основы алгоритмизации и программирования: учебное пособие. – М: ФОРУМ, 2008. – 432 с.
    1. 1 Колдаев В.Д.-Численные методы и программирование: учебное пособие – М.: ИД «ФОРУМ»: ИНФРА-М, 2009 – 332 с.

    1. 2 Дудаков С.М., Карлов Б.Н. Математическое введение в информатику: учебник. – Тверь: Твер. гос. ун-т, 2017. – 18 с.

    1. 1 Гниденко И.Г., Павлов Ф.Ф., Федоров Д.Ю. Технология разработки программного обеспечения: учебное пособие для СПО. – Издательство Юрайт, 2019. – 11 с.

    1. 1 Гниденко И.Г., Павлов Ф.Ф., Федоров Д.Ю. Технология разработки программного обеспечения: учебное пособие для СПО. – Издательство Юрайт, 2019. – 13 с.

    1. 1 Гагарина Л.Г., Колдаев В.Д. Алгоритмы и структуры данных: учебное пособие – М.: Финансы и статистика; ИНФРА-М, 2009 – 295 с.

    1. 2 Трофимов В.В., Павловская Т.А. Основы алгоритмизации и программирования: учебник для СПО – Издательство Юрайт, 2019. – 8-9 с.

    1. 1 Голицина О.Л., Попов И.И. Основы алгоритмизации и программирования: учебное пособие. – М: ФОРУМ, 2008. – 14 с.

    1. 3 В.Г. Давыдов Программирование и основы алгоритмизации: учебное пособие. – М.: Высш. шк., 2003. – 19 с

    1. 1 Ахмедханлы Д.М., Ушмаева Н.В. Основы алгоритмизации и программирования : электрон. учеб.-метод. пособие – Тольятти: Изд-во ТГУ, 2016. – 122 с.

    1. 2 Там же

    1. 1 Перова В.И., Сабаева Т.А., Чекмарев Д.Т. Разработка алгоритмов для решения задач на ЭВМ: учебное пособие. – Нижний Новгород: Нижегородский гос.университет, 2015. – 7 с.