Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


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



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

• цели и сроки применения каждой задачи;

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

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

• список сотрудников, выделенных для оперативного сопро­вождения задач и их комплексов;

69


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

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

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

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

Оперативное сопровождение задач и их комплексов осуществ­ляется выделенными для этой цели сотрудниками и включает:

• поддержание программ и средств их информационного обес­печения в работоспособном состоянии;

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

• подготовку рекомендаций по совершенствованию методики работы органа управления с использованием имеющихся (приня­тых в эксплуатацию) ИРЗ и их комплексов.

В процессе эксплуатации задач и их комплексов разработчик осуществляет научно-техническое сопровождение (авторский над­зор), которое включает совершенствование математических мето­дов, алгоритмов, программ и информационного обеспечения в целях повышения оперативно-технических характеристик ИРЗ и их комплексов.




ГЛАВА 6. ОСНОВЫ АЛГОРИТМИЗАЦИИ ЗАДАЧ

Л. Алгоритм

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

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

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

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

Элементарные операции, которые выполняет исполнитель, реализуя алгоритм, называются пунктами или шагами алгорит­ма. Процесс составления алгоритма называется алгоритмизаци­ей. В понятии «алгоритм» существенным является ряд особен­ностей.

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

2. Понятие алгоритма требует однозначного восприятия испол­нителем составляющих алгоритма (при выполнении алгоритма в

71


одних и тех же исходных условиях разными исполнителями дол­жен получаться один и тот же результат).

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

Понятие алгоритма не детализирует характер выполняемых в его рамках операций (действий). Эти операции могут проводиться как над материальными объектами, так и над данными (инфор­мацией). Алгоритмы последнего типа составляют основу инфор­мационных технологий и являются предметом последующего рас­смотрения.

В качестве первого примера представим алгоритм действий пе­шехода при переходе улицы. Данный алгоритм ориентирован на выполнение человеком и предусматривает осуществление как информационных операций, так и действий материальных объек­тов.

1. Определяют, является ли переход управляемым (т. е. установ­лен ли на нем светофор). Если светофор имеется, переходят к п. 3, если отсутствует — к п. 2.

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

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

4. После перехода продолжают запланированные действия (ал­горитм завершен).

Заметим, что приведенный алгоритм пригоден лишь при вы­полнении нескольких условий:

1) при использовании «в районе операции по переходу» пра­востороннего дорожного движения (см. п. 2);

2) при наличии такой регулировки светофора, которая позво­ляет пешеходу (успеть) перейти улицу до изменения цвета сигна­ла—в противном случае следует в п. 3 предусмотреть остановку на середине улицы («островке безопасности»);

3) наконец, при выполнении всеми участниками движения (прежде всего — водителями) правил дорожного движения.

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


72


 


Рис. 6.1. Алгоритм вычисления функции

Рис. 6.2. Алгоритм упорядочения массива чисел


73


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

На рис. 6.1 представлен второй пример — алгоритм для прове­дения расчетов, которые реализуют следующую математическую зависимость:

На рис. 6.2 представлен третий пример — алгоритм, который позволяет упорядочить по убыванию значений К чисел в массиве данных С(1: К).

Алгоритмы, представленные на рис. 6.1 и 6.2, могут быть реа­лизованы как человеком, так и техническим средством.

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

Таким образом, при разработке алгоритма возникает проблема выбора лучшего по какому-либо критерию (правилу) алгоритма из множества возможных.







Формы записи алгоритмов

К настоящему времени сформировались и нашли широкое рас­пространение шесть различных форм записи алгоритмов [5]:

1) табличная;

2) словесная;

3) в виде блок-схемы;

4) операторная;

5) использующая псевдокоды;

6) языки программирования.

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

Кроме того, такая форма записи алгоритмов получила новую жизнь с появлением и широким распространением табличных процессоров (Excel; Lotus 1 — 2 — 3). Примеры табличной формы записи алгоритма представлены в табл. 6.1 и 6.2.

74


Та б л и ц а 6.1

Табличная форма записи алгоритма в учетной документации (учет поступления моторного масла на склад)

 

Номер заказа Количество по­лученных бочек с моторным маслом, шт. Масса бочки с маслом, т Количество масла, полу­ченного без тары, т Всего масла, т Количество масла в таре, %
37/12/231 100 0,2 20 40 50

Таблица 6.2

Табличная форма записи алгоритма вычисления арифметического

выражения

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

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

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

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

75


Для записи действий внутри блоков используется естествен­ный язык или математическая символика.

Операторная форма — это запись алгоритма в виде условных буквенно-цифровых символов-операторов, графических знаков-стрелок и знаков препинания. Операторы подразделяются на ос­новные — арифметические, логические и вспомогательные — вво­да-вывода, останова и др. Для операторов определенных типов принимаются одинаковые обозначения в пределах всего алгорит­ма, например А — арифметический оператор, Р — логический оператор, П — оператор ввода-вывода, Я — оператор останова и т. д. Операторы в общем случае могут состоять из сочетания не­скольких букв.

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

• все операторы записываются в одну строку;

• каждый из операторов снабжается индексом, указывающим порядковый номер оператора (нумерация операторов сквозная);

• если символы операторов стоят рядом, это значит, что опе­ратор, стоящий справа, получает управление от оператора, сто­ящего слева;

• если оператор, стоящий справа, не получает управление от стоящего слева оператора, то между ними ставится точка с запя­той;

• передача управления оператору, не стоящему справа, обо­значается стрелкой.

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



Т 6 4.4

П,П2АзР4А5; А6П7Я8>,

П        Т 5

где 111 — оператор ввода исходных данных (а, Ь, с); П2 — опе­ратор печати исходных данных; А3 — оператор расчета величины D= b2- 4ас; Р4 — оператор проверки условия D > 0; А5 — оператор расчета действительных корней; А$ — оператор расчета мнимых корней; П7 — оператор вывода на печать значений корней; Я8 — оператор останова.

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

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

76


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

Рассмотрим пример записи с использованием псевдокода ал­горитма, реализующего подсчет числа символов в кодограмме:

Начало алгоритма

Записать в счетчик слов нуль; установить указатель на первую за­пись текста; ПОКА символ не есть «.» ПОВТОРЯТЬ

Начало повторения

ЕСЛИ символ есть пробел, ТО счетчик слов увеличить на единицу; перевести указатель на следующий символ

Конец повторения

Взять число в счетчике слов в качестве результата; Конец алгоритма

В настоящее время для записи сравнительно несложных алго­ритмов довольно часто используют языки программирования (как правило, высокого уровня). Очевидны по крайней мере два не­достатка такой формы записи: исключительно низкая нагляд­ность (кроме тривиально простых алгоритмов) и необходимость знания используемого языка программирования. Приведем про­стейший пример фрагмента программы перевода долларов в руб­ли, созданной в среде программирования Borland C++ Builder (язык C++):

/* Программа перевода долларов в рубли */

{

int DollarsNum; RateValue; // Исходные данные

int Result; // Результат

DollarsNum = StrToInt (Dollars->Text);

RateValue = StrToInt (Rate->Text);

Result = DollarsNum * RateValue;

Label l->Caption = IntToStr(Result);

}

В результате выполнения такой программы в поле надписи Label! появится сумма в рублях — результат перевода значения поля вво­да Editl Dollars (суммы в долларах) по курсу, заданному в поле ввода Edit2 Rate.

77




Структуры алгоритмов

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

Простая команда соответствует одному элементарному шагу алгоритма. Применительно к алгоритму на рис. 6.1 такими элемен­тарными командами являются команды Y = А + В и Y = А - В. Простые команды в блок-схемах изображаются в виде блока, име­ющего один вход и один выход.

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

1) команда следования;

2) команда ветвления;

3) команда повторения (цикла).

Команда следования образуется из простых команд, сле­дующих строго одна за другой. На рис. 6.3 представлена блок-схема команды следования.

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

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

1) с предусловием;

2) постусловием.

Рис. 6.3. Блок-схема команды следования

78


Рис. 6.4. Команды ветвления: а — в полной форме; б — сокращенной форме

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

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

Блок-схемы команд повторения с предусловием и постуслови­ем представлены на рис. 6.5.


Рис. 6.5. Команды повторения (цикла): а — с предусловием; б — постусловием


Этап технического проектирования программных систем завер­шается созданием алгоритмов. Затем следует этап рабочего проек­тирования; предназначенный для написания и отладки программ на ЭВМ в соответствии с разработанными алгоритмами.

75


В заключение отметим три важных обстоятельства. Во-первых, при создании информационных и расчетных задач, как правило, сначала разрабатываются обобщенные, а затем детальные алго­ритмы, по которым и осуществляется собственно программиро­вание (кодирование). При этом для записи обобщенных и деталь­ных алгоритмов могут использоваться разные формы. Во-вторых, перечисленные ранее типовые конструкции алгоритмов легли в основу одной из довольно широко применяемых технологий со­здания программ —- структурного программирования, позволя­ющего разрабатывать весьма наглядные древовидные архитектуры программ, которые легко читаются и при необходимости моди­фицируются. Наконец, в-третьих, существуют более современные средства алгоритмизации задач (CASE-средства), в которых для записи алгоритмов используются специальные диаграммы различ­ного вида (см. гл. 7).


Поделиться:



Последнее изменение этой страницы: 2019-05-08; Просмотров: 173; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.043 с.)
Главная | Случайная страница | Обратная связь