Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » Лабораторная работа #2. Отладка

Лабораторная работа #2. Отладка (Лабораторные работы)

Описание файла

Файл "Лабораторная работа #2. Отладка" внутри архива находится в папке "Лабораторные работы". PDF-файл из архива "Лабораторные работы", который расположен в категории "лабораторные работы". Всё это находится в предмете "вычислительная гидрогазодинамика (численные методы мжг)" из девятого семестра, которые можно найти в файловом архиве МГТУ им. Баумана. Не смотря на прямую связь этого архива с МГТУ им. Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "вычислительная гидрогазодинамика (численные методы мжг)" в общих файлах.

Просмотр PDF-файла онлайн

Текст из PDF

Лабораторная работа №2Основы отладки программПринаписаниипрограммногообеспеченияпрограммистсистематически сталкивается с ошибками трех основных типов.К первому типу относятся ошибки компиляции, т.е. синтаксическиеошибки, препятствующие работе компилятора. Устранение этих недочетовобычно представляет собой простую задачу, решаемую путем внимательногочтения диагностических сообщений компилятора и документации.Ко второму типу относятся ошибки времени выполнения (run-timeerror), т.е. ошибки, возникающие при работе успешно скомпилированнойпрограммы, приводящие к аварийному завершению ее работы.К третьему типу относятся логические ошибки, т.е.

некорректноеповедение программы, ложные результаты ее работы. Такие ошибкинаиболее сложны в выявлении и устранении.Отладка предназначена для устранения ошибок второго и третьеготипов. Она может выполняться вручную с помощью диагностическоговывода или с помощью специальных программ – отладчиков. На практикеобычно используется комбинация этих двух способов.Основные рекомендации для отладки кода можно свести к следующимтезисам:- Предотвращайте ошибки. Осмысленное структурирование кода исоблюдение стилистических правил программирования всегда оправдываетзатраченное время, так как снижает количество возникающих ошибок иупрощает их устранение.- Сводите ошибки 2 и 3 типа к ошибкам 1 типа. Всегда изучайте нетолько ошибки (Error), но и предупреждения (Warning) компилятора.Работайте на предельно жестких настройках компилятора, или, по крайнеймере, периодически включайте их.

Не используйте без веских на то причинпрограммную обработку вычислений с «не числами» (NaN – Not a Number).17- Систематически используйте диагностический вывод и файлы логов.- Не оставляйте незаконченные ветви алгоритма без диагностическогопредупреждения о попадании в них программы.- Используйте отладчик.Для некоторых конкретных типов ошибок начинающим можно датьследующие рекомендации.Ошибки доступа к памяти. Если не используются приемы ООП, данныеошибки обычно связаны с неправильной индексацией массивов. Послевыявления места возникновения следует проверить индексы массивов идиапазоны циклов, в которые они вложены.Ошибки работы с файлами. В первую очередь следует проверитьналичие доступа к этим файлам и соответствие их содержимого требуемому.Ошибки могут возникать при наличии в пути к файлам кириллическихсимволов и (значительно реже) пробелов.

Если используемые файлыоткрыты на чтение в третьих программах (например, редакторах), это тожеможет вызывать ошибки.Ошибки математических операций. После выявления проблемногоместа, двигаясь вверх по коду, почленно рассматривают компоненты формул,пока не будет обнаружен источник ошибки.ЗаданиеНаберите или скопируйте следующий код:Program Debug_Example;var log:textfile;m, g, d, A, dt, p0, k, dx: real;p, x, V, Vol, F: array of real;i: integer;st: string;BeginAssignFile(log, 'log.csv');rewrite(log);SetLength(p,501);SetLength(x,501);SetLength(V,501);SetLength(Vol,501);SetLength(F,501);18x[0]:=1;p0:=1E5;k:=1.4;d:=0.05;p[0]:=1E5;g:=9.81;A:=pi*d*d/4;dt:=0.2;V[0]:=0;for i:=0 to 501 dobeginVol[i-1]:=x[i-1]*A;F[i-1]:=-m*g+p0*A+p[i]*A;V[i]:=V[i-1]+dt*F[i-1]/m;dx:=V[i]*dt;x[i]:=x[i-1]+dx;p[i]:=p[i-1]*power(x[i-1]/x[i],k);end;writeln(log,'x, m;p, Pa;V, m/s;F, N');for i:=0 to 500 dobeginst:=floattostr(x[i])+';'+floattostr(p[i])+';'+floattostr(V[i])+';'+floattostr(F[i]);st:=st.Replace('.',',');writeln(log,st);end;CloseFile(log);SetLength(p,0);SetLength(x,0);SetLength(V,0);SetLength(Vol,0);SetLength(F,0);End.1.

Изучите предложенный код и определите, что он должен делать.Сделайте предположение о том, как должен выглядеть результат расчета.Совместно с группой выявите стилистические недостатки (не менее 5)- Отсутствие комментариев- Волшебные числа- не указаны размерности- Нет отступов- Смешано задание констант и начальных условий192. Устраните выявленные недостатки.3. Добавьте диагностический вывод в консоль в соответствии соструктурными фрагментами кода.4. Запустите программу на выполнение и изучите список ошибок.Исправьте диапазоны цикла, чтобы ошибка доступа к памяти пересталавозникать.5.

Запустите программу и изучите содержимое файла результатовlog.csv. Обратите внимание, что ошибка возникает сразу же после первогоцикла расчета. Установите точку останова в начало цикла по i, (Для этогонужно нажать на серое поле слева от соответствующей строчки, при этом тамдолжна появиться большая красная точка) и запустите расчет подотладчиком (F9). Используя клавишу F8 дойдите до конца первого захода вцикл. Используя всплывающие подсказки, возникающие при наведениикурсора на переменные, и окно «Просмотр выражений» изучите содержимоепеременных и массивов, участвующие в вычислениях. Найдите и устранитепричину, вызывающую появление неопределенностей в результатах расчета.6. Запустите программу и откройте файл log.csv в Excel. Не закрываяExcel, запустите программу повторно и изучите возникающую при этомошибку.7.

Запустите программу на исполнение и изучите полученные графики.Констатируйте ошибочность результата и сделайте предположения о еевозможных причинах.Установите точку останова на выражение, пересчитывающее давление,и запустите расчет под отладчиком (F9). Используя всплывающие подсказки,возникающие при наведении курсора на переменные, и окно «Просмотрвыражений» изучите содержимое переменных и массивов, участвующие ввычислениях. Проверьте физическую корректность формул.

Найдите иисправьте ошибку, вызывающую вылетание поршня в стратосферу. Послевыполнения данного этапа график перемещения поршня должен быть таким,как показано на рисунке 1.20Рисунок 1 – График перемещения поршня после устранения логической ошибкиИзучите и прокомментируйте полученный результат. Найдите искорректируйтефактор,Окончательныйрезультат,вызывающийкоторыйтакиедолжнарезультатывыдаватьрасчета.исправленнаяпрограмма, показан на рисунке 2. Изучите и прокомментируйте поведениеостальных физических параметров системы.Рисунок 2 – Результат расчета окончательно отлаженной программы21.