
- •ВВЕДЕНИЕ
- •1. ТЕОРЕТИЧЕСКИЙ МАТЕРИАЛ К ЛАБОРАТОРНЫМ РАБОТАМ И КОНТРОЛЬНЫМ ЗАДАНИЯМ
- •1.1. Основные проблемы и ошибки при написании программного кода
- •1.2. Написание корректного программного кода. Версионирование
- •1.3. Рефакторинг кода
- •1.4. Оптимизация кода
- •1.5. Дебаггинг
- •2. ЛАБОРАТОРНЫЕ РАБОТЫ
- •2.1. Лабораторная работа № 1 «Модифицирование программного кода»
- •2.2 Лабораторная работа №2 «Рефакторинг программного кода»
- •2.3 Лабораторная работа №3 «Оптимизация программного кода»
- •2.4 Лабораторная работа №4 «Отладка программного кода»
- •3. ТЕМЫ ДЛЯ ПОДГОТОВКИ К ЗАЧЕТУ
- •4. ТИПОВЫЕ ТЕСТОВЫЕ ЗАДАНИЯ
- •4.1. Типовой вариант по теме «Основные проблемы и ошибки при написании программного кода»
- •4.2. Типовой вариант по теме «Написание корректного программного кода. Версионирование»
- •4.3. Типовой вариант по теме «Рефакторинг кода»
- •4.4. Типовой вариант по теме «Оптимизация кода»
- •5. КОМПЛЕКТ ЗАДАНИЙ ДЛЯ КОНТРОЛЬНОЙ РАБОТЫ
- •СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ
- •ПЕРЕЧЕНЬ РЕСУРСОВ СЕТИ «ИНТЕРНЕТ», РЕКОМЕНДУЕМЫХ ДЛЯ ОСВОЕНИЯ ДИСЦИПЛИНЫ
паттерны проектирования, соглашения об именовании и прозрачное поведение отдельных блоков кода — чтобы объявить себе и другим, каким образом должна вести себя та или иная функция.
–Широкое использование проверенных внешних библиотек.
2.ЛАБОРАТОРНЫЕ РАБОТЫ
2.1. Лабораторная работа № 1 «Модифицирование программного кода»
Рекомендуемая литература: 2.
Перечень дополнительных ресурсов: 2 ,3, перечень ресурсов в сети Интернет.
Цель: Изучить технологию модифицирования программного
кода
Задание:
Модифицируйте 2 программы, реализованные на C++:
1 программа
#include <iostream> #include <locale.h>
using namespace std;
int main()
{
int number; setlocale(LC_CTYPE,"Russian"); cout << "Введите число: "; cin >> number;
cin.ignore();
cout << "Вы ввели: "<< number <<"\n"; cin.get();
}
Описание: пользователю предлагаеться ввести цифру, но если он введет например: b6, то ему выдаст - "Вы ввели: 5 (Только номер). Необходимо добиться, чтобы программа различала отрицательные и положительные значения, цифры и буквы, а также автоматически выдавала значение введенного числа в квадрате.
2 программа
#include <stdio.h> /* Стандартный заголовочный файл ввода-вывода */ #include <iostream> /* Библиотека (стандарт) */
#include <locale.h> /* Русификатор */ #include <windows.h> /* Русификатор */ using namespace std;
int main(int argc, char* argv[])
{
setlocale(LC_CTYPE,"Russian");
double plus, minus, pow, div; // объявление переменных через запятую double a1; // отдельное объявление переменной a1
double a2; // отдельное объявление переменной a2 cout << "Введите первое число: ";
cin >> a1;
cout << "Введите второе число: "; cin >> a2;
plus = a1 + a2; // операция сложения minus = a1 - a2; // операция вычитания pow = a1 * a2; // операция умножения div = a1 / a2; // операция деления
cout << a1 << "+" << a2 << "=" << plus << endl; cout << a1 << "-" << a2 << "=" << minus << endl; cout << a1 << "*" << a2 << "=" << pow << endl; cout << a1 << "/" << a2 << "=" << div << endl; system("pause");
return 0;
}
Описание: простой калькулятор, который может: добавлять, вычитать, умножать и делить.
Необходимо реализовать функцию возведения числа в любую степень, а также умножение отрицательных чисел.
2.2 Лабораторная работа №2 «Рефакторинг программного кода»
Рекомендуемая литература: 1.
Перечень дополнительных ресурсов: 2, 3, перечень ресурсов в сети Интернет.
Цель: Изучить технологию рефокторинга программного кода
Задание: Задание 1:
В рамках лабораторной работы приведите примеры реализации рефакторинга в следующих системах:
−Visual Studio.
−Visual Assist X.
−Refactor.
−JustCode
−ReSharper
−CodeIt
Для поиска информации используйте сеть Интернет.
Задание 2:
Построить схему с признаками плохого кода, также, графически отразите и опишите причины применения рефакторинга.
Результаты работы представить в MS Word. Минимальное количество анализируемых систем – 5.
2.3 Лабораторная работа №3 «Оптимизация программного кода»
Рекомендуемая литература: 1, 2.
Перечень дополнительных ресурсов: 2, перечень ресурсов в сети Интернет.
Цель: Изучить технологию оптимизации программного кода
Задание:
−Решите задачу оптимизации кода (файл с кодом возьмите у преподавателя), используя только элементарные конструкции (последовательность, ветвления, циклы). Программа должна быть рабочей.
−Оптимизировать программу (можно использовать процедуры или функции).
−Оптимизированная программа должна содержать проверки всех переменных, которые вводятся с клавиатуры.
−Для созданных программ оценить метрические характеристики по Холстеду;
−Сравнить полученные результаты. Оформить результаты в таблицу. Сделать соответствующие выводы.
Расчет метрики Холстеда:
Метрика Холстеда относится к метрикам, вычисляемым на
основании анализа числа строк и синтаксических элементов исходного кода программы.
Метрика Холстеда позволяет оценить размер (в словах) и объем в битах программы на стадии анализа требований. Используя нормы выработки операторов в день можно оценить время на разработку.
Основу метрики Холстеда составляют четыре измеряемые характеристики программы: n1 — число уникальных операторов

программы, включая символы-разделители, имена процедур и знаки операций (словарь операторов); n2 — число уникальных операндов программы (словарь операндов); N1 — общее число операторов в программе; N2 — общее число операндов в программе.
+, *, /, - это операторы
x, у, z, 999, -25, number1 - это операнды
На основании этих характеристик рассчитываются оценки:
Словарь программы (Halstead Program Vocabulary, HPVoc): n = n1 + n2;
Длина программы (Halstead Program Length, HPLen): N = N1 +
N2;
Объем программы (Halstead Program Volume, HPVol): V = N
log2 n;
Сложность программы (Halstead Difficulty, HDiff): D = (n1/2) × (N2 / n2);
На основе показателя HDiff предлагается оценивать усилия программиста при разработке при помощи показателя HEff (Halstead Effort): H = D × V.
Пример метрики: