Cтраница 2
![]() |
Принципиальная схема построения сложных циклов. а - корректная схема. б - недопустимая схема. [16] |
Организация итерационных циклов требует особого внимания при их применении. Разработчик должен быть уверен, что значение проверяемого параметра признака окончания цикла будет неизбежно достигнуто в ходе исполнения циклического процесса. В противном случае циклический процесс будет исполняться бесконечно, т.е. произойдет зацикливание программы. [17]
Должно быть обеспечено независимое написание основных программ без внесения в них дополнительной информации по совместному выполнению данной программы и других программ. Программа, выполняемая на машине совместно с другими программами, не должна вносить ошибки в другие программы или чрезмерно задерживать их выполнение. Причиной вносимых ошибок могут быть неправильные адреса, а причиной чрезмерных задержек - зацикливание программ. [18]
Напомним, что аргументы предиката - простые элементы, за исключением второго аргумента гхп, который представляет собой список. Обратите внимание на то, что нужно использовать два различных имени при определении этих связей. Если употреблялось только одно имя, то могут возникнуть обычные трудности, связанные с зацикливанием программы. [19]
Ключевой параметр TIME позволяет задать время, которое процессор может затратить на выполнение задания. Если параметр TIME опущен, то время выполнения задания процессором не может превосходить значения, установленного в процедуре RDR обычно равного 30 минутам. Параметр TIME позволяет ограничить время выполнения задания, особенно при отладке, и полезен как средство борьбы с зацикливанием программ. [20]
Объект 1 является неопределенным объектом и представляет ошибочное состояние. Например, попытка вычислить выражение 1 / 0 даст - L, поскольку деление не определено, когда знаменатель равен нулю. Когда мы говорим, что при вычислении выражения получается 1, мы обычно имеем в виду, что на практике попытка вычислить данное выражение приведет к аварийному завершению программы с выдачей сообщения об ошибке или к зацикливанию программы. [21]
Как это обычно принято, прерывания делятся на внутренние, отражающие ситуации, возникшие в центральном процессоре, и внешние, связанные с работой внешних устройств и других процессоров, если в Системе работает их несколько. Прерывания делятся на управляемые и безусловные, которые обязательно прерывают работу программы. К такого рода безусловным неуправляемым, относятся прерывания, связанные со срабатыванием схем обнаружения сбоев оперативной памяти, связанные с попыткой выхода за пределы стека, связанные с сигналами времени ( с таймером), с появлением недопустимых команд и слов, связанные с зацикливанием программ. [22]
Читатель из этой информации может узнать, сколько времени считалась задача и сработала ли программа до конца. Если - да, то выдается сообщение КОНЕЦ ЗАДАЧИ. Если не хватило времени, указанного в Т1МЕ, то выдается диагностика ИСЧЕРПАН ЛИМИТ ВРЕМЕНИ. Такое окончание задачи часто свидетельствует о зацикливании программы. Остальная приведенная в примере информация может быть использована системным программистом. [23]
Хотя в программу включена команда стоп, но машина никогда не сможет ее выполнить. Ведь до этой команды машина выполняет команду № 4 - команду безусловного перехода. После выполнения команды № 4 управление передается команде № 1 и начинается новый цикл. Поэтому машина ни при каком цикле не сможет выполнить команду № 5 и автоматически не остановится. Это явление называется зацикливанием программы. [24]
Функция WHILE похожа на функцию REPEAT, однако число повторов не определено, а выход из цикла осушестатяется по условию. В отличие от структуры IF оператор WHILE не включает в себя выполнение какого-либо выражения в том случае, если условие не выполняется. Как COND, REPEAT и PROGN, WHILE позволяет включать в свое тело неограниченное число операторов. В начале выполнения каждого цикла проверяется условие и, если оно выполняется, выполняется тело цикла, после чего опять проверяется условие, и так до тех пор, пока выражение-условие не станет ложным. Будьте внимательными: неаккуратное использование никла WHILE может привести к зацикливанию программы. Цикл WHILE возвращает значение последнего вычисленного перед выходом из цикла выражения. Если выражение-условие изначально было ложным и вхождения в тело никла не было, WHILE возвращает nil. [25]
Перед решением задачи на машине вручную просчитывается один из ее вариантов, называемый контрольным или отладочным. Отладочный вариант нужно просчитывать при тех значейиях исходных данных, которые позволяют выявить по возможности большее число ошибок. Результаты, полученные при ручном просчете, сравниваются затем с результатами машинного счета. Это в особенности относится к программам, составленным в коде машины. Наличие таких ошибок может привести к останову машины, переполнению разрядной сетки машины ( аварийный останов), зацикливанию программы. [26]
Перед решением задачи на машине вручную просчитывается один из ее вариантов, называемый контрольным, или отладочным. Отладочный вариант нужно просчитывать при тех значениях исходных данных, которые позволяют выявить по возможности большее число ошибок. Результаты, полученные при ручном счете, сравниваются с результатами машинного счета. Это в особенности относится к программам, составленным в коде машины. Наличие таких ошибок может привести к останову машины, переполнению разрядной сетки машины ( аварийный останов), зацикливанию программы. [27]
Необходимость в выходе из цикла до исчерпания счетчика повторений цикла часто возникает при решении задач прикладной математики итерационными методами. Процесс аппроксимации продолжается до тех пор, пока не будет достигнута требуемая точность. Особенность таких методов заключается в том, что количество итераций обычно неизвестно заранее. Вычисления повторяются до тех пор, пока не будет удовлетворено некоторое условие. Недостаток построения циклов по условию состоит в том, что ошибки в программе или данных могут привести к зацикливанию программы. [28]
Наряду с модификацией таблиц данных часто существует желание допустить оперативную модификацию самих программ управления без отключения ЭВМ. Впрочем, это желание смягчается страхом перед последствиями ошибок, которых можно ожидать. В некоторых новейших программах найдены способы оперативного внесения изменений в программу с помощью языка высокого уровня. В будущем требование относительно оперативной модификации стратегий станет, вероятно, гораздо более насущным. Если такое требование включено в техническое задание, то должны быть предусмотрены средства для отказа от изменения величин, так чтобы можно было свести к минимуму последствия ошибок. Если программа модификации имеет более низкий уровень приоритета, чем программа управления, то она не может быть применена для остановки; например, если ошибка приводит к зацикливанию программы, запрос на модификацию не будет обслуживаться. Таким образом, при подобных обстоятельствах необходима какая-то другая процедура для блокировки управления. [29]