Файл: Алгоритмизация как обязательный этап разработки программы (Устройство современных компьютеров).pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 12.03.2024

Просмотров: 22

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

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

В результате каскадная модель жизненного цикла информационных систем получила свое развитие в итерационной модели жизненного цикла ИС. Итерационная система модели жизненного цикла информационной системы представлена на рисунке 7.

Рисунок 7 – Итерационная модель жизненного цикла программного обеспечения

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

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

Рисунок 8 - Спиральная модель жизненного цикла программного обеспечения

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

Рисунок 9 – Этапы разработки компьютерной программы

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

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

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


2 АЛГОРИТМИЗАЦИЯ КАК ВАЖНЫЙ ЭТАП РАЗРАБОТКИ ПРОГРАММНОГО ПРОДУКТА

2.1 Понятие алгоритма

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

Исполнителя характеризуется несколькими описаниями:

  • среда;
  • система команд;
  • элементарные действия;
  • отказы.

Среда (или обстановка) представляет собой «место обитания» исполнителя.

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

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

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

Универсальным исполнителем алгоритмов в информатике является компьютер.

Алгоритм должен обладать рядом свойств (рисунок 10).

Рисунок 10 – Свойства алгоритма

Алгоритмы могут быть описаны одним из нескольких способов: словесным, графическим (при помощи блок-схем) и на алгоритмическом языке. Способы описания алгоритмов представлены на рисунке 11.

Рисунок 11 – Способы описания алгоритмов

Компьютерная программа является алгоритмом, записанным на алгоритмическом языке программирования.

Наиболее популярным способом описания алгоритмов является язык блок-схем. Графическое представление алгоритма является наглядным и ясно демонстрирует логику решения задачи. Изображение символов схем алгоритмов закреплено стандартом ГОСТ 19.701 – 90. Обозначение и назначение основных элементов графических схем алгоритмов приведено на рисунке 12.

Рисунок 12 – Основные элементы блок-схемы

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


2.2 Базовые алгоритмические конструкции

Нидерландский ученый, с именем которого связано превращение программирования из хаотичного интуитивного процесса в упорядоченный научный процесс, — нидерландский ученый Эдсгер Дейкстра (рисунок 7). Он сумел доказать, что программирование является интеллектуальным творчеством и высоким искусством.

Именно Дейкстра для обеспечения легкости и гибкости программ предложил проектировать и записывать компьютерные программы в соответствии с определенной дисциплиной, названной им структурным программированием. Свои предложения Дейкстра основывал на известной теореме Бема-Якопини, которая утверждает, что любой алгоритм (а, значит, и программу) программу можно построить с использованием трех конструкций:

  • следование;
  • ветвление;
  • повторение.

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

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

Блок-схема линейного алгоритма представлена на рисунке 13.

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

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

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

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

Блок-схема разветвляющегося алгоритма в полной и неполной форме представлена на рисунке 14.

Рисунок 14 – Разветвляющийся алгоритм в полной (слева) и неполной (справа) формах

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


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

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

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

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

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

  • цикл с предусловием;
  • цикл с постусловием;
  • цикл с параметром.

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

пока < условие > повторять

< команда >;

Блок-схема цикла с предусловием представлена на рисунке 15.

Рисунок 15 – Цикл с предусловием

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

В отличие от цикла с предусловием, цикл с постусловием (цикл – до) предусматривает выполнение команды как минимум один раз:

повторять

< команда >

до < условие >;

Блок-схема цикла с предусловием представлена на рисунке 16.

Рисунок 16 – Цикл с постусловием

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

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

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

< команда >;

для х принадлежащего М пока < условие > повторять

< команда >;

для х от m до n повторять

< команда >;

для х от m до n шаг h повторять

< команда >;

Блок-схема цикла с предусловием представлена на рисунке 17.

Рисунок 17 – Цикл с параметрами

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


2.3 Структурный подход к программированию

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

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

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

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

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

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

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

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

Пример структурной схемы программы с использованием подпрограмм представлен на рисунке 18.

Рисунок 18 – Пример построения структурной программы

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

  • подпрограммы (рисунок 19);
  • модули.

Рисунок 19 – Подпрограммы в Pascal

В практической части курсовой работы рассмотрены подпрограммы.

2.4 Пример разработки алгоритма решения задачи

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