Оглавление
Введение 2
Ход работы 3
Код программы 6
Введение
Для данной работы была взята программа, написанная мною на первом курсе бакалавриата по дисциплине: «Программирование». Так как она была написана, когда я только постигал азы программирования, то в ней наверняка были допущены ошибки в процессе написания программы. Именно по этому я выбрал данную программу.
Целью данной программы являлось закрепление теоретических знаний и отработка практических навыков программирования. Для реализации поставленной цели, были решены следующие задачи: разработка электронного справочника “Планеты солнечной системы” и программы психологического тестирования»
Разработанная программа включает в себя следующие элементы:
меню;
заставка;
информация об авторе;
электронный справочник;
психологическое тестирование.
Выполнение каждого элемента осуществляется выбором соответствующего пункта в меню. Заставка содержит в себе динамическое изображение, построенное с помощью элементов графики. Информация об авторе содержит сведения о студенте, выполнившем данный проект. Электронный справочник «Планеты солнечной системы» содержит в себе информацию о планетах. Пользователь выбирает категорию поиска, затем программа формирует вывод информации. В программе психологического тестирования собраны тестирования на разные тематики: Эмоциональная стойкость, Уверенность в себе, Легкий ли у вас характер?
Для создания данной программы выбран язык программирования C++. Программа разработана в соответствии со СА, представленными выше. Данный курсовой проект был разработан в среде Microsoft Visual Studio 2013 и пересобран в Microsoft Visual Studio 2019, так как этот редактор кода зарекомендовал себя как стабильный и универсальный компилятор. Также он является лицензионным продуктом, который находится в свободном доступе на официальном сайте Microsoft.
Ход работы
Д ля анализа кода был выбран плагин для Visual Studio – PVS Studio. После запуска анализа кода, были показаны ошибки, представленные на рисунке 1.
Рисунок 1 – Ошибки, показанные PVS Studio
В таблице 1 представлены все ошибки после анализа кода через PVS Studio
Таблица 1
V560 |
A part of conditional expression is always true: summ <= 30. LOLwork.cpp 163 |
V779 |
Unreachable code detected. It is possible that an error is present. LOLwork.cpp 167 |
V560 |
A part of conditional expression is always true: summ >= 0. LOLwork.cpp 390 |
V560 |
A part of conditional expression is always true: summ >= 8. LOLwork.cpp 393 |
V560 |
A part of conditional expression is always true: summ >= 13. LOLwork.cpp 396 |
V560 |
A part of conditional expression is always true: summ >= 17. LOLwork.cpp 399 |
V560 |
A part of conditional expression is always true: summ <= 20. LOLwork.cpp 399 |
V576 |
Incorrect format. Consider checking the third actual argument of the 'fscanf' function. It's dangerous to use string specifier without width specification. Buffer overflow is possible. LOLwork.cpp 422 |
V576 |
Incorrect format. Consider checking the third actual argument of the 'fscanf' function. It's dangerous to use string specifier without width specification. Buffer overflow is possible. LOLwork.cpp 423 |
V576 |
Incorrect format. Consider checking the third actual argument of the 'fscanf' function. It's dangerous to use string specifier without width specification. Buffer overflow is possible. LOLwork.cpp 424 |
V576 |
Incorrect format. Consider checking the second actual argument of the 'scanf' function. The pointer to string of char type symbols is expected. LOLwork.cpp 454 |
Продолжение Таблицы 1
Что бы понять какие ошибки были допущены в процессе написания программы необходим перевод с английского языка на русский язык. В таблице 2 представлен перевод ошибок
Таблица 2
V560 |
Часть условного выражения всегда верна: summ <= 30. LOLwork.cpp 163 |
V779 |
Обнаружен недоступный код. Возможно, что ошибка присутствует. LOLwork.cpp 167 |
V560 |
Часть условного выражения всегда верна: summ> = 0. LOLwork.cpp 390 |
V560 |
Часть условного выражения всегда верна: summ> = 8. LOLwork.cpp 393 |
V560 |
Часть условного выражения всегда верна: summ> = 13. LOLwork.cpp 396 |
V560 |
Часть условного выражения всегда верна: summ> = 17. LOLwork.cpp 399 |
V560 |
Часть условного выражения всегда верна: summ <= 20. LOLwork.cpp 399 |
V576 |
Неверный формат. Попробуйте проверить третий действительный аргумент функции 'fscanf'. Опасно использовать спецификатор строки без указания ширины. Возможно переполнение буфера. LOLwork.cpp 422 |
V576 |
Неверный формат. Попробуйте проверить третий действительный аргумент функции 'fscanf'. Опасно использовать спецификатор строки без указания ширины. Возможно переполнение буфера. LOLwork.cpp 423 |
V576 |
Неверный формат. Попробуйте проверить третий действительный аргумент функции 'fscanf'. Опасно использовать спецификатор строки без указания ширины. Возможно переполнение буфера. LOLwork.cpp 424 |
V576 |
Неверный формат. Рассмотрите возможность проверки второго фактического аргумента функции scanf. Ожидается указатель на строку символов типа char. LOLwork.cpp 454 |
После исправления ошибок и повторного анализа кода через PVS Studio, получилось следующее:
Рисунок 2 – Повторный анализ кода
После этого пробуем заново скомпилировать программу. Программа скомпилировалась. Результат проедставлен на рисунке 3
Рисунок 3 – Скомпилированная программа