Основные задачи структурного программирования

Структурное программирование предназначено для решения трех основных задач:

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

2. Повышение надежности работы программ. Никому не нужна дешевая, мгновенно написанная и занимающая мало ресурсов программа, которая работает очень быстро, но с ошибками. Из программистского фольклора: “Беремся написать вам ПО : 1. Бысро 2.дешево 3.надежно. – Два из трех.

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

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

Понятие "алгоритм" так же, как и понятие "информация" относится к фундаментальным неопределяемым понятиям информатики, а также математики. Свое происхождение термин "алгоритм" берет от имени узбекского ученого, жившего в XII веке в Ташкенте – Абу Мухаммед ибн Муса аль-Маджус аль-Хорезми, который разработал правила письменных арифметических вычислений для чисел, записанных в позиционной десятичной системе счисления. В процессе перевода его научного труда на латинский язык имя автора было усечено до последней компоненты и трансформировано (в силу фонетических особенностей латиницы) в слово "Algorithmi", которым долгое время обозначались изобретенные им методы вычислений.

В наши дни этот термин имеет другое смысловое наполнение:

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

Исполнитель алгоритма – это некоторая абстрактная или реальная (техническая, биологическая или биотехническая) система, способная выполнить действия, предписываемые алгоритмом.

К числу основных свойств алгоритма относятся следующие:

· Понятность (доступность) – алгоритм должен учитывать специфику исполнителя и, при необходимости, ему должны предоставляться дополнительные сведения.

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

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

· Результативность (конечность) – либо решение задачи достигается за конечное, хотя бы и большое, число шагов, либо делается вывод о невозможности продолжения выполнения алгоритма по той или иной причине (есть алгоритмы, не обладающие этим свойством – например, вычисление иррационального числа p);

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

На практике используются следующие формы представления алгоритмов:

· Словесная запись (неформализованная запись алгоритма на естественном языке, например, рецепт приготовления манной каши);

· Блок-схема (наиболее наглядная графическая форма представления алгоритмов, используемая профессионалами особенно в тех случаях, когда алгоритм обладает изощренной логикой исполнения);

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

· Компьютерная программа (жестко формализованная запись алгоритма, ориентированная на исполнителя – ЭВМ). Для разработки компьютерных программ используются инструментальные средства, называемые языками программирования.

Алгоритмы будем представлять в виде структурных схем, т.е. графически. При выполнении схем алгоритмов и программ (с учетом их детализации) отображаются в виде условных графических обозначений – символов (ГОСТ 19.701-90). В таблице 1 приведены основные символы, используемые в схемах алгоритмов.

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

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

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

УСЛОВНЫЕ ГРАФИЧЕСКИЕ ОБОЗНАЧЕНИЯ СИМВОЛОВ, ИСПОЛЬЗУЕМЫХ ДЛЯ СОСТАВЛЕНИЯ БЛОК-СХЕМЫ АЛГОРИТМАпо ГОСТ 19.701-90

Таблица 1

СИМВОЛ СОДЕРЖАНИЕ ОБОЗНАЧЕНИЕ ПРАВИЛА ПРИМЕНЕНИЯ
R=0,5a     ПУСК-ОСТАНОВ Применяют в начале выполнения. Применяют в конце схемы.  
    ПРОЦЕСС Выполнение операций или групп операций, в результате которых изменяется значение, форма представления или расположения данных.
    РЕШЕНИЕ Выбор направления выполнения алгоритма или программы в зависимости от некоторых переменных условий.
  Предопределенный процесс Использование ранее созданных и отдельно описанных алгоритмов и программ.
    ВВОД – ВЫВОД Ввод данных или их вывод на любой носитель (например, монитор)
0,5a     СОЕДИНИТЕЛЬ Указание связи между прерванными линиями потока, связывающими символами.
    5 мм   КОММЕНТАРИЙ Для пояснений к блокам алгоритма (компьютером не исполняется)
  МОДИФИКАЦИЯ Выполнение операций, меняющих команды или группы команд, изменяющих программу.
    ЛИНИИ ПЕРЕХОДА Стрелки устанавливаются в конце пути. а = 10; 15; 20 . . . мм; b = 1,5а или 2а

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

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

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

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

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

Следование – эта управляющая конструкция означает, что управление передается от одного функционального блока (оператора) к другому последовательно.

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

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

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