ПОИСК Статьи Рисунки Таблицы Отладка программы из "Инженерные задачи в нефтепереработке и нефтехимии" Поскольку программирование является очень сложным и трудоемким процессом, неизбежны ошибки. Выявление и исправление этих ошибок происходит во время отладки программы, которая предшествует непосредственному решению задачи на машине. [c.43] Цель отладки — устранить ошибки, допущенные на всех предыдущих этапах подготовки задач для решения на ЦВМ и получить программу, дающую правильные результаты. К ошибкам, не позволяющим получить правильных результатов решения задачи на машине, относятся следующие неправильное нанесение программы и исходных данных на носитель информации неправильное написание команд и операторов программы некорректность алгоритма решения задачи. [c.43] Неправильное нанесение программы н исходных данных на носители информации. Обнаружение и устранение ошибок этого типа достигается путем внешнего осмотра носителя информации, распечатки программ и исходных данных на печатающих устройствах и последующего сравнения с программой и исходными данными, записанными на бланке. Они устраняются путем повторного нанесения всей программы или отдельных ее участков и исходных данных на носители информации. Если в качестве носителя информации используют перфокарты, то перфокарты с ошибками заменяют на новые при использовании перфоленты необходимо между отдельными блоками программы оставлять пропуски, которые позволяют вырезать неправильно отперфорированный участок и заменить его новым. [c.43] Устранение ошибок этого типа осуществляется либо до выхода на машину, либо сразу после ввода программы и исходных данных в машину. [c.43] Неправильное написание команд и операторов программы. Ошибки этого типа обычно обнаруживаются при переводе программы в код машинь (использование алгоритмических языков), а также в процессе решения задачи на машине. [c.43] Алгоритмические языки имеют набор формальных правил записи операторов, обеспечивающих однозначный перевод программ в код машины. Отступление от этих правил приводит к выявлению причины ошибки самой машиной и выдаче ею типа ошибки с указанием оператора программы и места в операторе, где она обнаружена. [c.44] Обнаруженные при трансляции ошибки исправляются с помощью корректировочных операторов или путем замены отдельных участков программы. После этого программа вновь транслируется в итоге получают программу в коде машины. [c.44] При трансляции могут быть обнаружены не все возможные типы ошибок. Поэтому при решении задачи возможна дальнейшая отладка программы, полученной после трансляции, а также программы, составленной в коде машины. [c.44] Перед решением задачи на машине вручную просчитывается один из ее вариантов, называемый контрольным, или отладочным. Отладочный вариант нужно просчитывать при тех значениях исходных данных, которые позволяют выявить по возможности большее число ошибок. Результаты, полученные при ручном счете, сравниваются с результатами машинного счета. Однако результаты машинного счета не всегда удается получить сразу, т. е. в программе могут содержаться ошибки в записи команд. Это в особенности относится к программам, составленным в коде машины. Наличие таких ошибок может привести к останову машины, переполнению разрядной сетки машины (аварийный останов), зацикливанию программы. [c.44] Ошибки в передаче управления и записи команд, которые не привели к останову, переполнению или зацикливанию, обусловливают получение неверных результатов. Ошибки в программе можно обнаружить путем сравнения результатов, полученных на машине, с результатами контрольного счета. Значительно труднее найти место в программе, где допущена ошибка и определить ее тип. Для этих целей используют следующие способы обнаружения ошибок. [c.44] Проверка правильности выполнения команд в однотактном режиме. В данном случае последовательно выполняются все команды программы, а правильность полученных результатов проверяется путем сравнения с результатами контрольного просчета. При этом легко проверить правильность выполнения команд передачи управления и команд, организующих цикл. Однако такой метод неэффективен, поскольку требует очень больших затрат машинного времени. Его применяют лишь для проверки отдельных небольших участков программы, на которых ожидается обнаружение ошибки. [c.44] Правильность программы проверяется путем сравнения выведенной из машины информации с соответствующими результатами ручного контрольного просчета. [c.45] В зависимости от типа машины контрольные остановы осуществляются либо программным путем (введение специальных команд, пометка контрольными знаками), либо включением специальных тумблеров на пульте управления машины. [c.45] Использование отладочных программ. Наибольший эффект дает автоматизация процесса отладки с помощью специальных отладочных программ. В этом случае после выполнения каждой команды автоматически вся необходимая информация, используемая для контроля правильности решения, выводится на печать. [c.45] Для различных машин и алгоритмических языков программирования существует много отладочных программ, различающихся как способом их использования, так и количеством выводимой на печать информации. [c.45] Ошибки в алгоритме решения задачи. Для проверки правильности алгоритма целесообразно вручную проверить его выполнение на упрощенном варианте, например уменьшив число рассматриваемых вариантов до двух-трех и взяв удобные для вычислений цифры. [c.45] Вернуться к основной статье