Алгоритмы
По результатам математической проработки задачи формируется алгоритм программы - конечная последовательность однозначных правил, исполнение которых позволяет с помощью конечного числа шагов получить решение задачи из некоторого класса однотипных задач, однозначно определяемое исходными данными. Подразумевается, что исходные данные могут изменяться в определенных пределах и процесе применения правил к исходным данным (путь решения задачи) определен вполне однозначно; на каждом шаге процесса применения правил известно, что нужно считать результатом этого процесса.
Лри создании алгоритма программы по результатам математи ческого анализа задачи обычно проводят оптимизацию для учетv дополнительных условий, важнейшими из которых являются слr дующие:
технические характеристики ЭВМ (объем ОЗУ, матнитног~~ диска, производительность процессора и т.д.);
имеющиеся в наличии инструменты программирования (транс ляторы или интерпретаторы языков программирования, библиа~ теки стандартных подпрограмм, текстовые редакторы, отладчn кИ, оболочки и т.д.);
степень универсальности программы и соответствующие трс бования к надежности и модифицируемости программы и форл~r диалога с ней.
Эти правила противоречивы, и поиск разумного компромиссv требует разносторонней квалификации специалиста (в крупнi>w vlсреждениях, занимающихся созданием программ, предусмотре~~ целый штат алгоритмистов). Разработан свод правил, облегчакv щих построение эффективных алгоритмов. Например, алгоритn~ должен по иозможности решать именно поставленную задачу, ;~ не серию отдельных задач. Использование циклических, итерацv онных процедур позволяет сократить размер программы, сделаnn ее понятнее при программировании и надежнее при эксплуата ции. Максимально используются тотовые отлаженные и провс ренные блоки и подлрограммы.
Именно при составлении алгоритма следует предусмотретn проверки на соответствие исходных данных и результатов pas личным отраничениям. Например, при вычислениях делитель г{а должен быть близок к нулю, детерминант не должен быть мен~ ше нуля; при программировании операции точения для станка автомата программа должна проверитъ наличие и закрепленност заготовки, установить суппорт в искодное положение; при со здании протокола обмена между управляющей ЭВМ и програv мируемым контроллером еледует разработать удобный и компак тный набор условных кодов, подлежаших передаче по линии cвsv ЗИ, И Т. Д.
Понятие алгоритма было сформировано и широко применяеn ся в математике для описания последовательности действий прn решении задач; оно бьио заимствовано специа,~тистами в обласгn программирования. Алгоритм есть пусть не точная, но понятнаs~ программисту форма постановки задачи, наглядно иллюстрирук~ цtая исходные данные программы, логику решения задачи и трс буемьае результаты. В алгоритме обычно олускаются несуществеv ные или очевидные детали, прорабатываемые на следующем этг~ пе во время программирования по алгоритму.
Степень детализации алгоритма определяется уровнем квалисjw кации потребителя алгоритма. Например, требуется создать про
грамму вычисления среднего арифметического по результатам замеров. Возможны различнъте формы представления алгоритма расчета.
Это, например, могут бътть формулы для вычисления среднего:
Однако эта форма предполагает обычно въiсокую квалификацию потребителя алгоритма и примениется в основном в специальной литературе.
Для повышения наглядности часто используют блок-схему алгоритма (рис. 3.60). При усложнении алгоритма блок-схемы теряют наглядность, поэтому их применяют главным образом для изображения укрупненного алгоритма, которое отражает его логику.
трудоемкой и квалифицированной работой. Требование сокращения затрат на программирование обусловило создание инструментов, позволяющих программировать на языках высокого уровнл, перерабатывать исходную программу в задачу, пригодную для данной ОС, и выполнять задачу в ОС.
Существует два основных подхода к решению этой проблемы. Первым из них является создание и запуск задачи-интерпретатора. Интерпретатор принимает из исходной программы по одному оператору языка высокого уровня, расшифровывает содержанис оператора и запускает один из своих модулей, ответственный за выполнение этого оператора. При выполнении операторов интерпретатор общается с ОС: вы,дает системные вызовы, получает ответы на них, реагирует на сигналы от ОС.
Программа для интерпретатора с языка BASIC, составленнаs~ по рассмотренному выше алгоритму, имеет следующий вид:
Тексты программ, оформленные таким образом, не нуждаются в дополнительном описании и блок-схемах, понятны не только автору, но и его коллегам, что уменьшает число ошибок, повышает производительность и качество программирования и снижает стоимость программ. Комментарии не учитываются при выполнении программы и не влияют на скорость обработки данных.
Особенностью интерпретаторов является независимое выполнение отдельных операторов. При выполнении приведенной программы интерпретатор N раз расшифрует операторы ввода Х и сложения чисел и выполнит их, причем основная часть времени
`, уйдет на многократную расшифровку одних и тех же операторов. Интерпретаторы широко используются ввиду простоты их создания и малой требовательности к ресурсам ЭВМ. '~'ак ~ервые микроЭВМ вместо громоздкой ОС имели только ~стро~нный в ;, ПЗУ интерпретатор с языка BASIC, вполне удовлетворявший нуж, ды обычного пользователя. Работа УЧПУ также базируется на поi следовательной интерпретации команд управляющей программы. Не будет преувеличением утверждать, что основой управления `~ на базе микропроцессоров является именно интерпретация программ. Для решения сложных задач обработки данных, требующих р; много времени работы ЦП, интерпретация неприемлема. Програм;{ му на языке высокого уровня типа FORTRAN или С подвергают С предварительной переработке - трансляции или компиляции, во ~ время которой выполняется анализ программы как единого цело~: го, производится ее эквивалентное преобразование с целью со~` кращения повторов, оптимизации последовательности выполне~ ния операций и т. д., после чего программа переводится в коды ~ команд процессора. Результатом трансляции является задача, об~ щающаяся с ОС без посредников, например расчетная задача, или интерпретатор BASIC, или интерпретатор команд ОС.
После перевода алгоритма в операторы языка программирования начинается наиболее трудоемкий этап создания программы -
ее отладка. Ошибки, допущенные в операторах, могут быть грубыми, нарушающими правила написания операторов (такие ошибки находит интерпретатор или транслятор и указывает на них программисту). Значительно сложнее найти и исправить ошибки, связанные с логикой работы программы, так как здесь требуется творческое участие самого программиста. Кроме того, сами трансляторы и интерпретаторы, являющиеся также программами, содержат недоработки, документация к ним, как правило, неполная.
Поэтому наиболее ответственным этапом создания программ является их тестирование, во время которого программа испытывается на наиболее «неудобных» исходных данных или в наиболее «неудобных» условиях для выявления скрытых ошибок и дефектов (а не для демонстрации работоспособности программы, как принято считать). Завершающим этапом является создание инструкций и другой документации для пользователей программы.
Качество документации во многом определяет эффективность использования программы. Так как пользователями программ являются, как правило, люди, далекие от программирования, все большее значение принимает простой, понятный сценарий общения с программой - интерфейс пользователя. Так, на экран системы управления должен вы,даваться лишь необходимый минимум сообщений, ввод команд оператора по возможности должен осуществляться путем выбора пунктов меню, а не вводом текста с клавиатуры. Дополнительные возможности предоставляют цве~ ~ авук, но чрезмерное их исполь~ование утомляет оператора, и ;д~ожет п-ривести к авариям.
- Глава 2 автоматизация производства в машиностроении. Общие понятия и определения
- Роль и значение автоматизации
- Автоматизация производственных и технологических процессов
- Уровни автоматизации производственных процессов.
- Современные черты автоматизации производства машин
- Основные направления развития автоматизации производства
- Автоматизация управления и контроля в производстве
- Первичные преобразователи (датчики)
- Свойства и разновидности измерительных преобразователей
- Измерительные цепи
- Контактные резистивные преобразователи
- Реостатные и потенциометрические преобразователи
- Электромагнитные первичные преобразователи
- Емкостные первичные преобразователи
- Пьезоэлектрические преобразователи
- Тензометрические преобразователи
- Оптические преобразователи
- Тепловые преобразователи
- Терморезисторы
- Усилители
- Электромашинные усилители
- Гидро- и пневмоусилители
- Корректирующие устройства
- Переключающие устройства и распределители
- Электромагнитные реле.
- Электромеханические муфты
- Логические элементы
- Аналого-цифровые и цифроаналоговые преобразователи
- Задающие устройства
- Исполнительные устройства
- Управляемые исполнительные электродвигатели постоянного тока
- Двигатели переменного тока
- Электромагниты
- Синхронные шаговые двигатели
- Гидравлические серводвигатели
- Пневматические серводвигатели
- Исполнительные механизмы
- Электропривод
- Гидропривод
- Пиевмопривод
- Системы автоматического регулироваиия
- Регуляторы
- Средства управления
- Микропроцессоры и эвм в системах управления
- Устройства сопряжения эвм с объектом управления
- Программное обеспечение систем управления
- Математическое обеспечение эвм
- Алгоритмы
- Операционная система.
- Программы.
- Программируемые логические контроллеры
- Системы числового программного управления
- Автоматизация производства на базе гибких производственных систем и робототехники
- Технологические предпосылки автоматизации на базе гибких производственных систем и робототехники
- Современные гибкие производственные системы
- Автоматизироваиные рабочие места
- Системы управления промышлениыми роботами