Все это поможет при написании, отладке, а также при чтении текста программы в дальнейшем вами и другими.
Далее, необходима проверка входных значений на допустимый диапазон. В случае неправильности – вывод сообщений, останов программы или возврат на ввод неправильно введенного значения.
Или охота на тараканов
Все программисты – оптимисты, т.к. хотя бы внутренне , набрав программу, надеются, что там нет ошибок. ОШИБКИ ЕСТЬ ВСЕГДА!!! И вот поиск этих ошибок и называется отладкой. Это искусство. Исследовательская, экспериментальная работа.
Основные методы отладки:
Понятно, что основным инструментом отладки является печать. Она должна быть достаточно информативной и ясной. В большинстве случаев необходимо выводить признак места печати, название переменной, ее значение. Также бывают необходимы дополнительные данные, например индекс цикла, кол-во повторений выполнения данного блока и др. Для этого может потребоваться введение дополнительных отладочных переменных (например, счетчиков).
В современных пакетах разработки программ обычно присутствуют средства для проведения отладки без внесения изменений в текст программы. Это, обычно, точки останова, просмотр значений переменных в ходе выполнения программы, пошаговая трассировка выполнения программы. Но для больших комплексов и для сложных ошибок их применение бывает затруднено. Существуют также и отдельные дебаггеры.
Искусство, опытность программиста определяются умением предвидеть ошибки, умением по косвенным признакам определить возможный тип и месторасположение ошибки. Например, перед выполнением выражения a=b/c необходимо проверить c!=0. Если компилятор не проверяет индексы, то стоит их проверять самому, например, при входе в подпрограмму.
Как вы понимаете, нет необходимости сохранять отладочную печать и отладочные переменные в рабочем варианте программы. Можно хранить два варианта – но это потенциальный источник ошибок. Это допустимо ТОЛЬКО для проверки одной конкретной гипотезы и возврата потом к основному варианту. Поэтому правильным будет внесение отладочных изменений в основной комплекс. Но для последующего их легкого обнаружения необходимо их выделять, например, форматированием и комментариями.
С only for DEBUG
if (vDebug) then
dCounter= dCounter+1
print *,’123 dCounter=’, dCounter
end if
С only for DEBUG
Здесь переменная vDebug логического типа, мы присваиваем ей значение ИСТИНА, если нужно провести отладку.
Возможно и более сложное решение – позиционный переключатель. Переменная vDebug может быть целой и принимать разные значения, в зависимости от необходимого уровня глубины отладки. Например, 1 – только печать значений переменных при выходе из подпрограмм, 2 – печать дополнительно значений в ключевых точках, 3 – печать на каждом шаге циклов и т.д.
Значение этих признаков – флагов можно ввести в исходные данные и менять уровень отладки не перекомпилируя программу. В исходную информацию можно ввести и имена подпрограмм, отладку которых нужно провести.
Также возможна отладка назад – откат от какой-то точки, в которой известны значения переменных. Программист просматривает исходный код в обратном порядке, чтобы определить, где эти значения были присвоены или изменены.
Важно помнить, что правильно составленный алгоритм отладить значительно проще и быстрее. Поэтому возникает правило:
БОЛЬШЕ ВРЕМЕНИ ДОЛЖНО ТРАТИТЬСЯ НА ОТЛАДКУ АЛГОРИТМА
Машинное время, память, внешняя память, время разработки.
Наибольшее время тратится на вычисления в циклах! Поэтому все, независящие от индекса цикла, операции надо выносить:
Do i=1,10000
A(i)=b(i)/(c**2- 4*d)
End do
rTmp=1/(c**2- 4*d)
Do i=1,10000
A(i)=b(i)*rTmp
End do
Потери времени могут возникнуть из-за преобразования типов
1 вариант
do i=1,1000000
r1=i*5.
Enddo
И 2 вариант – выполняется в 2 раза дольше!
do i=1,1000000
r1=i*5
enddo
Размерности массивов! – не больше 3!!!
Оптимизация компилятора – плюсы и минусы
Структурность программы