
- •ВВЕДЕНИЕ
- •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. КОМПЛЕКТ ЗАДАНИЙ ДЛЯ КОНТРОЛЬНОЙ РАБОТЫ
- •СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ
- •ПЕРЕЧЕНЬ РЕСУРСОВ СЕТИ «ИНТЕРНЕТ», РЕКОМЕНДУЕМЫХ ДЛЯ ОСВОЕНИЯ ДИСЦИПЛИНЫ
4.4.Типовой вариант по теме «Оптимизация кода»
1.Верно ли утверждение, что между эффективностью и опти-
мизацией программы существует связь?
2.Что такое оптимизация программ:
a)улучшение работы существующей программы
b)создание удобного интерфейса пользователя
c)разработка модульной конструкции программы
d)применение методов объектно-ориентированного программирования
3.Критерии оптимизации:
a)время выполнения или размер требуемой памяти
b)размер программы и ее эффективность
c)независимость модулей
d)качество программы, ее надежность
4.Возможна ли оптимизация программ без участия програм-
миста?
5.Оптимизация программы это:
a)модификация
b)отладка
c)повышение сложности программы
d)уменьшение сложности программы
4.5.Типовой вариант по теме
«Дебаггинг»
8.Отладка программы – это
a)работы, связанные с обслуживанием программы в процессе
ееэксплуатации
b)контроль логически сложных участков программы
c)испытание, проверка правильности работы программы в целом либо ее составных частей
d)процесс поиска и устранения ошибок в программе, производимый по результатам ее прогона на ПК
e)определение функциональных возможностей системы
9.Какой этап выполняется раньше:

a)отладка
b)тестирование
10.Процедура поиска ошибки, когда известно, что она есть это:
a)отладка
b)тестирование
c)компоновка
d)транзакция
e)трансляция
11.Верно ли утверждение, что между отладкой и тестированием
существует различие?
12.Инструментальные средства отладки (НЕ правильный от-
вет):
a)компиляторы
b)отладчики
c)трассировка
13.Как называется процесс преобразования кода программы в
машинный код?
a)трансляция
b)отладка
c)тестирование
d)компиляция
e)компоновка
5. КОМПЛЕКТ ЗАДАНИЙ ДЛЯ КОНТРОЛЬНОЙ РАБОТЫ
Контрольная работа № 1 «Рефакторинг и технологии управления программным кодом»
Задание 1. Подготовьте письменные ответы на следующие вопросы:
1.2 Основные причины и предпосылки рефакторинга
2.2Основные принципы и методы рефакторинга
2.3Признаки “плохого” кода
2.4Возможности рефакторинга кода, которые распознаются в Visual Studio (заполните таблицу)
Прием рефакторинга |
Описание |
Укажите источники информации, используемые при подготовке ответов на задание.
Задача 2. Существует программа на языке C++
#include <iostream> using namespace std;
//Structure for a bank certificate of deposit: struct CDAccount
{
double balance; double interest_rate;
int term;//months until maturity
};
void get_data(CDAccount& the_account);
//Postcondition: the_account.balance and the_account.interest_rate //have been given values that the user entered at the keyboard.
int main( )
{
CDAccount account; get_data(account);
double rate_fraction, interest; rate_fraction = account.interest_rate/100.0;
interest = account.balance*rate_fraction*(account.term/12.0); account.balance = account.balance + interest;
cout.setf(ios::fixed);
cout.setf(ios::showpoint);
cout.precision(2);
cout << "When your CD matures in "
<<account.term << " months,\n"
<<"it will have a balance of $"
<<account.balance << endl; system("Pause");
return 0;
}
//Uses iostream:
void get_data(CDAccount& the_account)
{
cout << "Enter account balance: $"; cin >> the_account.balance;
cout << "Enter account interest rate: "; cin >> the_account.interest_rate;
cout << "Enter the number of months until maturity\n" << "(must be 12 or fewer months): ";
cin >> the_account.term;
}
Перепишите данную программу так, чтобы:
−переопределить CDAccount, чтобы это был класс а не
structure;
−member variable - были бы private;
−включить member functions для: to return the initial balance, to return the balance at maturity, to return the rent interest rate, to return term.
−включить конструктор который опрелит все member variables to any specified values, как же как default constructor.
Задача 3. Решите задача на С++/С#. Проведите оптимизацию полученного кода.
В городе M строятся N новых микрорайонов, между которыми запланировано M магистральных дорог. Каждая дорога имеет свою стоимость строительства Pij. В прошлом году из этих M дорог муниципалитет успел построить K штук. К сожалению, в этом году финансирование строительства решено было сократить, и теперь из запланированных, но не построенных M-K дорог нужно оставить такие, чтобы из любого микрорайона в любой другой существовал хотя бы один путь, но при этом стоимость их строительства была минимальной (гарантируется, что такой набор существует).
Какова минимальная стоимость P завершения строительства дорожной сети по новому плану, и сколько новых дорог по нему предстоит построить?