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