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

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

Содержание:

ВВЕДЕНИЕ

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

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

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

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

Для достижения цели следует выполнить следующие задачи:

  • рассмотреть понятие программы;
  • охарактеризовать процесс разработки программы;
  • проанализировать этапы разработки программного обеспечения;
  • рассмотреть алгоритмизацию как обязательный процесс разработки программного обеспечения.

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

В качестве теоретической базы исследования используются научные труды известных исследователей алгоритмизации и программирования. В частности, при работе над исследованием использовались работы таких авторов как Голицына О. Л., Зыков С. В., Рудаков А. В. Соколова В. В. и др. Данные авторы на протяжении многих лет осуществляют свою научную деятельность в вопросах создания программного обеспечения, в связи с чем использование результатов их научных изысканий более чем целесообразно в ключе данной работы.

Глава 1. Программа. Основы разработки программ

1.1 Понятие программы

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

Программа (program, routine) – упорядоченная последовательность команд (инструкций) компьютеру для решения задачи [12]. Конечная цель любой компьютерной программы – управление аппаратными средствами.

Основные элементы программирования:

  • ввод данных;
  • вычисления, действия;
  • ветвление;
  • условный и безусловный переход;
  • цикл;
  • вывод результатов;
  • массивы;
  • подпрограммы и т.д. [3]

Программное обеспечение – совокупность программ обработки данных.

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

Термин «компьютерная программа» в зависимости от своего контекста, может применяться также к исходным текстам (или кодам) программы. Вместе с правилами и процедурами, а также с документацией по функционированию программных систем обработки данных, компьютерные программы составляют понятие программного обеспечения [8].

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

Различают четыре уровня программного обеспечения:

  • базовый уровень;
  • системный уровень;
  • служебный уровень (инструментальное обеспечение);
  • прикладной уровень.

Основная классификация программного обеспечения представлена на рисунке 1 [20].

Компьютерные программы

Рис. 1 Общая классификация программного обеспечения

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

Процесс создания компьютерной программы называется «программированием», а люди, занимающиеся этим видом деятельности, называются программистами. При разработке компьютерных программ в них довольно часто возникают ошибки. Считается, что в программе содержатся ошибки, если для каких–то данных программа дает неправильные результаты, сбои или отказы. Если программа выдает правильные результаты обработки для всех возможных входных данных, то можно считать, что она не содержит ошибок [18].

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

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

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

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

В большинстве распространенных ЯП исходные тексты программ состоят из списков инструкций, описывающих заложенный в программе алгоритм. Такой подход называется императивным. Но применяются и иные методологии программирования. Так, например, в декларативном программировании описываются исходные и требуемые характеристики обрабатываемых данных, а выбор подходящего алгоритма решения описанной задачи поручается специализированной программе–интерпретатору. Применяются также логическое и функциональное программирование [4].

1.2 Характеристика процесса разработки программы

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

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

Процесс создания ПО – совокупность процессов, приводящих к созданию программного продукта.

Фундаментальные процессы, присущие любому проекту создания ПО:

  1. Разработка спецификации требований на ПО (Определяют функциональные характеристики системы и обязательны для выполнения).
  2. Создание программного обеспечения (создание ПО согласно спецификации).
  3. Аттестация ПО (Созданное ПО должно пройти аттестацию для подтверждения соответствию требованиям заказчика).
  4. Модернизация ПО (совершенствование ПО согласно измененным требованиям потребителя) [7].

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

Модели процесса разработки ПО:

  1. Каскадная модель.
  2. Эволюционная модель.
  3. Формальное преобразование.
  4. Сборка программных продуктов из ранее созданных компонентов (модель сборки).
  5. Итерационная (спиральная) модель [16].

Методы создания ПО представляют собой структурный подход к созданию ПО, который способствует производству ПО эффективным, с экономической точки зрения, способом.

Все методы основаны на использовании моделей системы в качестве спецификации ее структуры:

  1. Функционально–ориентированные (структурный анализ, JSD, 70–е годы) основаны на определении основных функциональных компонент системы.
  2. Объектно–ориентированные (Booch, Rumbaugh) используют подходы, основанные на использовании унифицированного языка моделирования UML.
  3. Computer–Aided Software Engineering – автоматизированная разработка ПО [11].

Базовые процессы создания ПО можно представить в виде следующей последовательности:

  1. Разработка спецификации.
  2. Проектирование и реализация.
  3. Аттестация.
  4. Эволюция [15].

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

Каскадная модель (рисунок 2)

Картинки по запросу каскадная модель создания по

Рис. 2 Каскадная модель разработки программного обеспечения

Достоинства:

  • документирование каждого этапа.

Недостатки:

  • «негибкое» разбиение процесса создания на отдельные этапы.

Применение:

  • требования сформулированы достаточно четко;
  • повсеместно для разработки небольших систем, входящих в состав крупного проекта [12].

Эволюционная модель (рисунок 3)

Картинки по запросу эволюционная модель создания по

Рис. 3 Эволюционная модель разработки программного обеспечения

Прототип – действующий программный модуль, реализующий отдельные функции создаваемого ПО.

Достоинства:

  • спецификация разрабатывается постепенно, по мере требования заказчика.

Недостатки:

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

Применение:

  • разработка небольших систем (<100 000 строк) или средних (<500 000 строк) с относительно коротким сроком жизни [1].

Формальная разработка

Достоинства:

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

Недостатки:

  • требуют специальных знаний и опыта использования;
  • не дают существенного выигрыша в стоимости разработки;
  • большинство сложных систем с трудом поддаются формальному описанию [1].

Модель пошаговой разработки (рисунок 4)

Картинки по запросу модель пошаговой разработки создания по

Рис. 4 Модель пошаговой разработки программного обеспечения

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

Достоинства:

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

Недостатки:

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

Спиральная модель (рисунок 5).

Картинки по запросу спиральная модель  создания по

Рис. 5 Спиральная модель разработки программного обеспечения

Достоинства:

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

Недостатки:

  • сложная автоматизация процессов разработки;
  • огромная роль при разработке системы отводится управлению проектом [12].

Базовые процессы создания ПО

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

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

Два уровня детализации:

  • требования, предъявляемые конечными пользователями;
  • системная спецификация для разработчиков [13].

Реализация ПО – процесс перевода системной спецификации в работоспособную систему. Включает в себя процессы проектирования и программирования.

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

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

Методы проектирования – множество формализованных нотаций и нормативных документов для проектирования ПО.

Структурные методы поддерживают модели системы:

  • модель потоков данных;
  • модель «сущность–связь»;
  • структурная модель;
  • объектно–ориентированные иерархическая модель системы, модель отношений между объектами, модель взаимодействия объектов;
  • диаграммы переходов или сценарии жизни сущностей [11].

Программирование и отладка:

Тестирование – процесс установления программных ошибок.

Отладка – установление местоположения ошибок и их устранение.

Аттестация и верификация – процесс установления соответствия ПО ее спецификации, а также ожиданиям и требованиям пользователей и заказчика.

Сопровождение системы – это внесение изменений в систему, которая находится в эксплуатации [8].

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

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

2.1 Этапы разработки программного обеспечения

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

Анализ требований

Самым первым этапом разработки программного обеспечения по праву называется процедура проведения всестороннего анализа выдвинутых заказчиком требований к создаваемому ПО, чтобы определить ключевые цели и задачи конечного продукта. В рамках этой стадии происходит максимально эффективное взаимодействие нуждающегося в программном решении клиента и сотрудников компании–разработчика, в ходе обсуждения деталей проекта помогающих более четко сформулировать предъявляемые к ПО требования. Результатом проведенного анализа становится формирование основного регламента, на который будет опираться исполнитель в своей работе – технического задания на разработку программного обеспечения. ТЗ должно полностью описывать поставленные перед разработчиком задачи и охарактеризовать конечную цель проекта в понимании заказчика [5].

Проектирование

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

В рамках данного этапа стороны должны осуществить:

  • оценку результатов проведенного первоначально анализа и выявленных ограничений;
  • поиск критических участков проекта;
  • формирование окончательной архитектуры создаваемой системы;
  • анализ необходимости использования программных модулей или готовых решений сторонних разработчиков;
  • проектирование основных элементов продукта – модели базы данных, процессов и кода;
  • выбор среды программирование и инструментов разработки, утверждение интерфейса программы, включая элементы графического отображения данных;
  • определение основных требований к безопасности разрабатываемого ПО [11].

Кодирование

Следующим шагом становится непосредственная работа с кодом, опираясь на выбранный в процессе подготовки язык программирования. Описывать особенности и тонкости самого трудоемкого и сложного этапа вряд ли стоит, достаточно указать, что успех реализации любого проекта напрямую зависит от качества предварительного анализа и оценки конкурирующих решений, с которыми создаваемой программе предстоит «бороться» за право называться лучшей в своей нише. Если речь идет о написании кода для выполнения узкоспециализированных задач в рамках конкретного предприятия, то от грамотного подхода к этапу кодирования зависит эффективность работы компании, заказавшей разработку. Кодирование может происходить параллельно со следующим этапом разработки – тестированием программного обеспечения, что помогает вносить изменения непосредственно по ходу написания кода. Уровень и эффективность взаимодействия всех элементов, задействованных для выполнения сформулированных задач компанией–разработчиком, на текущем этапе является самым важным – от слаженности действий программистов, тестировщиков и проектировщиков зависит качество реализации проекта [12].

Тестирование и отладка

После достижения задуманного программистами в написанном коде следуют не менее важные этапы разработки программного обеспечения, зачастую объединяемые в одну фазу – тестирование продукта и последующая отладка, позволяющая ликвидировать огрехи программирования и добиться конечной цели – полнофункциональной работы разработанной программы. Процесс тестирования позволяет смоделировать ситуации, при которых программный продукт перестает функционировать. Отдел отладки затем локализует и исправляет обнаруженные ошибки кода, «вылизывая» его до практически идеального состояния. Эти два этапа занимают не меньше 30% затрачиваемого на весь проект времени, так как от их качественного исполнения зависит судьба созданного силами программистов программного обеспечения. Нередко функции тестировщика и отладчика исполняет один отдел, однако самым оптимальным будет распределить эти обязанности между разными исполнителями, что позволит увеличить эффективность поиска имеющихся в программном коде ошибок [8].

Внедрение

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

  • первоначальная загрузка данных;
  • постепенное накопление информации;
  • вывод созданного ПО на проектную мощность.

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

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

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

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

Алгоритмом называется точное и понятное предписаниe исполнителю совершить последовательность действий, направленных на решение поставленной задачи. Слово «алгоритм» происходит от имени математика Аль Хорезми, который сформулировал правила выполнения арифметических действий. Первоначально под алгоритмом понимали только правила выполнения четырех арифметических действий над числами. В дальнейшем это понятие стали использовать вообще для обозначения последовательности действий, приводящих к решению любой поставленной задачи. Говоря об алгоритме вычислительного процесса, необходимо понимать, что объектами, к которым применялся алгоритм, являются данные. Алгоритм решения вычислительной задачи представляет собой совокупность правил преобразования исходных данных в результатные [12].

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

  • детерминированность (определенность). Предполагает получение однозначного результата вычислительного процecca при заданных исходных данных. Благодаря этому свойству процесс выполнения алгоритма носит механический характер;
  • результативность. Указывает на наличие таких исходных данных, для которых реализуемый по заданному алгоритму вычислительный процесс должен через конечное число шагов остановиться и выдать искомый результат;
  • массовость. Это свойство предполагает, что алгоритм должен быть пригоден для решения всех задач данного типа;
  • дискретность. Означает расчлененность определяемого алгоритмом вычислительного процесса на отдельные этапы, возможность выполнения которых исполнителем (компьютером) не вызывает сомнений [22].

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

В ходе разработки общего алгоритма используется некоторый специальный язык, который по своему характеру является промежуточным, переходным между неформальным, словесным способом изложения метода решения задачи на этапе 1 (формулировка требований) и формальным алгоритмическим языком для программирования на этапе 3 (непосредственно программирование). Промежуточный язык должен сочетать в себе, с одной стороны, наглядность для отображения содержания и смысла, выполняемых в алгоритме действий (что делается) и, с другой стороны, формализм для указания конкретных операций и последовательности их выполнения (как делается) [7].

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

Блок–схемой называется графическое изображение логической структуры алгоритма, в котором каждый этап процесса обработки информации представляется в виде геометрических символов (блоков), имеющих определенную конфигурацию в зависимости от характера выполняемых операций. Перечень символов, их наименование, отображаемые ими функции, форма и размеры определяются ГОСТами [2].

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

  • линейный;
  • ветвящийся;
  • циклический [9].

Линейным называется такой вычислительный процесс, при котором все этапы решения задачи выполняются в естественном порядке следования записи этих этапов. Пример линейного алгоритма представлен в таблице 1 [9].

Таблица 1

Пример линейного алгоритма

Блок–схема

Элементы программы

https://sites.google.com/site/415ict/_/rsrc/1472850923201/textbooks/prog-9/02-linejnyj-algoritm/1.png?height=320&width=217

1. Заголовок

2. Объявление переменных

3. Начало блока операторов

4. Ввод исходных данных

5. Вычисление по формуле

6. Вывод результата

7. Конец блока операторов

Ветвящимся называется такой вычислительный процесс, в котором выбор направления обработки информации зависит от исходных или промежуточных данных (от результатов проверки выполнения какого–либо логического условия). Пример представлен в таблице 2 [9].

Таблица 2

Пример ветвящегося алгоритма

Блок–схема

Элементы программы

https://sites.google.com/site/415ict/_/rsrc/1472850924702/textbooks/prog-9/03-razvetvlennyj-algoritm/1.png

1. Заголовок

2. Объявление переменных

3. Начало блока операторов

4. Ввод исходных данных

5. Вычисление по формуле

6. Объявление условия

7. Проверка условия

8. Вывод результата

9. Конец блока операторов

Циклом называется многократно повторяемый участок вычислений. Вычислительный процесс, содержащий один или несколько циклов, называется циклическим. По количеству выполнения циклы делятся на циклы с определенным (заранее заданным) числом повторений и циклы с неопределенным числом повторений. Количество повторений последних зависит от соблюдения некоторого условия, задающего необходимость выполнения цикла. При этом условие может проверяться в начале цикла – тогда речь идет о цикле с предусловием, или в конце – тогда это цикл с постусловием. Наглядно циклические алгоритмы рассмотрены в таблице 3 [9].

Таблица 3

Пример циклического алгоритма

Задается количество повторений

Задается условие продолжения/окончания повторений

Цикл с параметром

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

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

https://sites.google.com/site/415ict/_/rsrc/1472850925422/textbooks/prog-9/04-repetition/1.png?height=168&width=200

https://sites.google.com/site/415ict/_/rsrc/1472850921664/textbooks/prog-9/04-repetition/2.png?height=169&width=200

https://sites.google.com/site/415ict/_/rsrc/1472850923623/textbooks/prog-9/04-repetition/3.png?height=148&width=200

...

2. Определение параметра проверки

3.Выполнение операций в теле цикла

...

...

2. Проверка выполнения условия

3.Выполнение операций в теле цикла/возврат к проверке условия

...

...

2. Выполнение операций в теле цикла

3.Проверка выполнения условия/возврат к операциям в теле цикла

...

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

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

В ходе разработки алгоритма, возможно, придется уточнять или изменять решения, принятые на этапе 1, и в этом случае такие изменения обязательно вносятся в проект, который всегда должен соответствовать разрабатываемому алгоритму [11].

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

ЗАКЛЮЧЕНИЕ

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

Для этого были выполнены следующие задачи:

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

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

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

СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ

  1. Гагарина, Л. Г. Введение в архитектуру программного обеспечения. Учебное пособие / Л. Г. Гагарина, А. Р. Федоров, П. А. Федоров. – М.: Инфра–М, Форум, 2016. – 320 c.
  2. Голицына, О. Л. Программное обеспечение / О. Л. Голицына, И. И. Попов, Т. Л. Партыка. – М.: Форум, 2015. – 448 c.
  3. Гончаров, В. А. Методы оптимизации. Учебное пособие / В. А. Гончаров. – М.: Юрайт, 2015. – 192 c.
  4. Добрынин, В. Ю. Технологии компонентного программирования / В. Ю. Добрынин. – Москва: Гостехиздат, 2014. – 216 c.
  5. Долгов, А. И. Алгоритмизация прикладных задач / А. И. Долгов. – М.: Флинта, 2017. – 136 c.
  6. Емельянова, Н. З. Проектирование информационных систем / Н. З. Емельянова, Т. Л. Партыка, И. И. Попов. – М.: Форум, 2018. – 432 c.
  7. Затонский, А. В. Программирование и основы алгоритмизации / А. В. Затонский, Н.В. Бильфельд. – М.: Дрофа, 2014. – 176 c.
  8. Зыков, С. В. Основы современного программирования / С. В. Зыков. – М.: Горячая линия – Телеком, 2016. – 448 c.
  9. Канцедал, С. А. Алгоритмизация и программирование. Учебное пособие. Гриф МО РФ / С. А. Канцедал. – М.: Инфра–М, Форум, 2018. – 206 c.
  10. Карпенко, А. П. Современные алгоритмы оптимизации. Учебное пособие / А. П. Карпенко. – М.: МГТУ им. Н. Э. Баумана, 2014. – 448 c.
  11. Колдаев, В. Д. Основы алгоритмизации и программирования / В. Д. Колдаев. – М.: Форум, Инфра–М, 2018. – 416 c.
  12. Колдаев, В. Д. Основы логического проектирования / В. Д. Колдаев. – Москва: РГГУ, 2017. – 448 c.
  13. Лукин, В. В. Технология разработки программного обеспечения. Учебное пособие / В. В. Лукин, В. Н. Лукин, Т. В. Лукин. – Москва: Гостехиздат, 2015. – 286 c.
  14. Милов, А. В. Основы программирования в задачах и примерах / А. В. Милов. – М.: Фолио, 2017. – 400 c.
  15. Новичков, В. С. Алгоритмизация и программирование на Турбо Паскале. Гриф УМО ВУЗов России / В. С. Новичков. – М.: Горячая линия – Телеком, 2014. – 967 c.
  16. Панюкова, Т. А. Проектирование программных средств / Т. А. Панюкова. – Москва: Гостехиздат, 2017. – 364 c.
  17. Потопахин, В. В. Искусство алгоритмизации / В. В. Потопахин. – М.: ДМК Пресс, 2014. – 372 c.
  18. Рудаков, А. В. Технология разработки программных продуктов. Учебник / А. В. Рудаков. – М.: Академия, 2015. – 208 c.
  19. Сафонов, В. О. Аспектно–ориентированное программирование / В. О. Сафонов. – Москва: Высшая школа, 2016. – 104 c.
  20. Семакин, И. Г. Основы алгоритмизации и программирования / И. Г. Семакин, А. П. Шестаков. – М.: Academia, 2017. – 304 c.
  21. Соколова, В. В. Вычислительная техника и информационные технологии. Разработка мобильных приложений. Учебное пособие / В. В. Соколова. – Москва: Высшая школа, 2016. – 176 c.
  22. Фалина, И. Н. Алгоритмизация и программирование (+ CD–ROM) / И. Н. Фалина и др. – М.: КУДИЦ–Пресс, 2018. – 280 c.