Литмир - Электронная Библиотека
A
A

10. string s = "ape"; if (s=="fool") cout << "Success!\n";

11. string s = "ape"; if (s=="fool") cout < "Success!\n";

12. string s = "ape"; if (s+"fool") cout < "Success!\n";

13. vector<char> v(5); for (int i=0; 0<v.size(); ++i);

    cout << "Success!\n";

14. vector<char> v(5); for (int i=0; i<=v.size(); ++i);

    cout << "Success!\n";

15. string s = "Success!\n"; for (int i=0; i<6; ++i) cout << s[i];

16. if (true) then cout << "Success!\n"; else cout << "Fail!\n";

17. int x = 2000; char c = x; if (c==2000) cout << "Success!\n";

18. string s = "Success!\n"; for (int i=0; i<10; ++i) cout << s[i];

19. vector v(5); for (int i=0; i<=v.size(); ++i);

    cout << "Success!\n";

20. int i=0; int j = 9; while (i<10) ++j;

    if (j<i) cout << "Success!\n";

21. int x = 2; double d = 5/(x–2); if (d==2*x+0.5) cout << "Success!\n";

22. string<char> s = "Success!\n"; for (int i=0; i<=10; 
++i) cout << s[i];

23. int i=0; while (i<10) ++j; if (j<i) cout << "Success!\n";

24. int x = 4; double d = 5/(x–2); if (d=2*x+0.5) cout << "Success!\n";

25. cin << "Success!\n";

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

1. Назовите четыре основных вида ошибок и кратко опишите их.

2. Какие виды ошибок в студенческих программах можно проигнорировать?

3. Что должен гарантировать любой законченный проект?

4. Перечислите три подхода к исключению ошибок в программе и разработке правильного программного обеспечения.

5. Почему мы ненавидим отладку?

6. Что такое синтаксическая ошибка? Приведите пять примеров.

7. Что такое ошибка типа? Приведите пять примеров.

8. Что такое ошибка этапа редактирования связей? Приведите три примера.

9. Что такое логическая ошибка? Приведите три примера.

10. Перечислите четыре источника потенциальных ошибок, рассмотренных в тексте.

11. Как распознать разумные результаты? Какие методы используются для ответа на этот вопрос?

12. Сравните обработку ошибки во время выполнения программы в модуле, вызывающем функцию, и в самой функции.

13. Почему использование исключений лучше, чем возврат признака ошибки?

14. Как выполнить тестирование при последовательном вводе данных?

15. Опишите процесс генерирования и перехвата исключений.

16. Почему выражение

v[v.size()]
относительно вектора
v
порождает ошибку диапазона? Каким может быть результат такого вызова?

17. Дайте определение пред- и постусловия; приведите пример (который отличается от функции

area()
из этой главы), предпочтительно использовать вычисления, требующие применения цикла.

18. В каких ситуациях можно не проверять предусловие?

19. В каких ситуациях можно не проверять постусловие?

20. Назовите этапы отладки.

21. Чем комментарии могут помочь при отладке?

22. Чем тестирование отличается от отладки?

Термины

Программирование. Принципы и практика использования C++ Исправленное издание - _047.png

Упражнения

1. Выполните задание из раздела ПОПРОБУЙТЕ, если вы его еще не сделали.

2. Следующая программа вводит температуру по шкале Цельсия и преобразует ее в шкалу Кельвина. Этот код содержит много ошибок. Найдите ошибки, перечислите их и исправьте программу.

double ctok(double c) // преобразует шкалу Цельсия в шкалу Кельвина

{

  int k = c + 273.15;

  return int

}

int main()

{

  double c = 0;         // объявляем переменную для ввода

  cin >> d;             // вводим температуру в переменную ввода

  double k = ctok("c"); // преобразуем температуру

  Cout << k << endl;    // выводим температуру на печать

}

3. Самой низкой температурой является абсолютный нуль, т.е. –273,15°C, или 0 K. Даже после исправления приведенная выше программа выводит неверные результаты для температуры ниже абсолютного нуля. Поместите в функцию

main()
проверку, которая выводит сообщение об ошибке, если температура ниже –273,15°C.

4. Повторите упр. 3, но на этот раз ошибку обработайте в функции

ctok()
.

5. Измените программу так, чтобы она преобразовывала шкалу Кельвина в шкалу Цельсия.

6. Напишите программу, преобразовывающую шкалу Цельсия в шкалу Фаренгейта и наоборот (по формуле из раздела 4.3.3). Для того чтобы распознать разумные результаты, используйте оценку из раздела 5.8.

7. Квадратное уравнение имеет вид

Программирование. Принципы и практика использования C++ Исправленное издание - _048.png

Для решения этого уравнения используется формула

Программирование. Принципы и практика использования C++ Исправленное издание - _049.png

Тем не менее есть одна проблема: если b2–4ac меньше нуля, возникнет ошибка. Напишите программу, вычисляющую решение квадратного уравнения. Напишите функцию, которая выводит на печать все корни квадратного уравнения при заданных коэффициентах a, b и c. Вызовите эту функцию из модуля

main()
и перехватите исключение, если возникнет ошибка. Если программа выявит, что уравнение не имеет действительных корней, она должна вывести на печать соответствующее сообщение. Как распознать разумные результаты? Можете ли вы проверить, что они являются правильными?

73
{"b":"847443","o":1}