Краткие теоретические и учебно-методические материалы 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Краткие теоретические и учебно-методические материалы



По теме лабораторной работы


  Огромную роль в программировании играет процесс отладки программ, а потому данная тема не зря нами затронута и должна быть подробно рассмотрена. Если при отладки программы возникла ошибка, вы должны знать, как её исправить. Можно хорошо знать язык программирования, но не знать как исправить случайно появившуюся ошибку. В итоге — неграмотно потраченное время на отлавливание ошибок и не законченная программа. Ошибки делают все, начинающие и даже самые искусные программисты, это лишь дело времени. Чаще всего ошибки появляются из-за не внимательности, где-то запятую пропустили или не поставили скобочку и т.д. Но даже такие банальные ошибки необходимо отлавливать и исправлять. Данная статья не является набором правил для отладки программ, моя цель — ввести Вас в суть проблемы и дать несколько рекомендаций, которые позволят вам сэкономить драгоценное время.

Есть два типа ошибок:

синтаксические ошибки - ошибки, которые компилятор может отловить при сборке проекта. Хотя уже сейчас такого типа ошибки компилятор отлавливает ещё до сборки проекта.

ошибки времени выполнения, эти ошибки не всегда легко определить. Проект будет собран компилятором, и даже на первый взгляд нормально работать.

Ошибки времени выполнения появляются при определённых условиях (частные случаи). В силу того, что эти ошибки отлавливаются во время работы программы, а не при компиляции, они имеют такое название.

Рассмотрим несколько простых примеров, в которых специально допустим по одной ошибке.

1 2 3 4 5 6 7 // синтаксическая ошибка int main(// специально пропущена закрывающая скобочка main функции { return 0; }

Компилятор должен сгенерировать ошибку типа:

Ошибка 1 error C2143: синтаксическая ошибка: отсутствие «)» перед «{» e:\install\c++\snake\snake\snake.cpp 7 1 snake

Тут всё предельно ясно, кстати в сгенерированном сообщении об ошибке указывается строка и даже столбец, с ошибкой.

1 2 3 4 5 6 7 // синтаксическая ошибка int main() { return 0 // ошибка тут, пропущен символ точки с запятой }

Сообщение компилятора об ошибке:

Ошибка 1 error C2143: синтаксическая ошибка: отсутствие «;» перед «}» e:\install\c++\snake\snake\snake.cpp 10 1 snake.

Сообщения об ошибках могут различаться, в зависимости от используемой IDE. Например данные сообщения были сгенерированы MVS2010, где C2143 - код ошибки, описание которой можно найти на сайте MSDN. Стало быть, в сообщении указываются:

код ошибки - C2143

тип ошибки - синтаксическая ошибка

суть ошибки - отсутствие ";" перед "}"

адрес исполняемого файла - e:\install\c++\snake\snake\snake.cpp

номер строки - 10

столбец - 1

имя файла - snake

По большому счёту, такие ошибки и отлавливать не требуется, это делает за нас компилятор. Наша же задача — понять сообщение об ошибке и исправить её. Что касается ошибок времени выполнения, то компилятор не может их поймать. Поэтому эта задача полностью ложится на программиста. Но вам, мои читатели, по секрету скажу, что есть инструмент отладки Valgrind, который хорошо справляется с этой работой.

Как бы то ни было, и такие ошибки можно легко отлавливать. Вот, к примеру, рассмотрим нередкий случай возникновения логической ошибки.

1 2 3 4 5 int counter = 1; while (counter = 1) // ОШИБКА { counter--; }

В этом фрагменте кода допущена ошибка в условии цикла while, вместо знака сравнения ==, стоит знак присваивания =. Такую ошибку компилятор не заметит, да и программисту трудно будет её отловить. Как только начнёт работать цикл, программа перестанет нормально функционировать, просто зависнет. а всё потому, что цикл бесконечный, то есть выхода из него нет. В данном фрагменте кода, ошибку найти легко, но вот когда программа большая и в цикле выполняется несколько десятков операторов, то понять почему не работает код не просто. Для этого мы добавляем одну строку в тело цикла while.

1 2 3 4 5 6 int counter = 1; while (counter = 1) // ОШИБКА { counter--; cout << counter << endl; // вывод на экран значения переменной counter }

В этом случае, после запуска программы мы увидим, что значение переменной counter < 1, а точнее, равно 0, но работа цикла не завершается. Почему? Ведь в условии counter должен быть равен 1. Проверяем условие и находим ту самую ошибку, исправляем и удаляем строку с оператором вывода.

1 2 3 4 5 int counter = 1; while (counter == 1) // исправленная ошибка { counter--; }

Суть данного метода — проанализировать значения переменных по ходу работы программы и понять, в чём ошибка. Узнать более подробно о стратегиях отладки, советах и приемах, помогающих ускорить этот процесс.

Пример экранная форма

Рисунок 1 – Экранная форма вывод банков

 

Задания для лабораторной работы:

Провести отладку и запуск программы.

 

Контрольные вопросы

 

1. Ошибки - их причины появления и последствия. Классы ошибок.

2. Первичные и вторичные ошибки. Синтаксические и семантические ошибки. Защитное программирование. Программирование без ошибок.

3. Отладка ПО. Этапы, методы и инструменты отладки программ.

4.Ошибки времени выполнения.


Лабораторная работа №15-16

«Генерация программного кода диаграммы активности

на языке программирования Си++»

Цель работы: получение навыков при генерации кода выбранной диаграммы

Образовательные результаты, заявленные во ФГОС третьего поколения:

Студент должен

уметь:

- владеть основными методологиями процессов разработки программного обеспечения;

- использовать методы для получения кода с заданной функциональностью и степенью качества.

 

знать:

-модели процесса разработки программного обеспечения;

-основные принципы процесса разработки программного обеспечения;

-основные подходы к интегрированию программных модулей;

-основные методы и средства эффективной разработки;



Поделиться:


Последнее изменение этой страницы: 2021-12-07; просмотров: 27; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.118.200.197 (0.011 с.)