- •1. За яких обставин виникають помилки часу виконання? Наведіть приклади
- •2. Яким чином виявляються та усуваються логічні помилки?
- •3. Переваги об’єктно-орієнтованого підходу до обробки виняткових ситуацій.
- •4. Яке призначення обробника виняткової ситуації? Типи підключення обробника
- •5. Які дії може виконувати обробник виняткової ситуації?
- •6. Призначення відлагодження програм та його зв’язок із тестуванням
- •7. Які помилки не виявляють інтерактивні засоби від лагодження?
- •8. Використання механізму стверджень у мові с#
- •9. Використання механізму стверджень у мові Java
- •10. Як застосовується ітератор для проходження по колекції?
- •11. Порівняйте застосування ітератора і циклу for-each для проходження по колекції.
- •12. Наведіть приклад реалізації інтерфейсу Comparable та використання реалізації у відсортованих колекціях
- •13. Як створюється і для чого використовується у каркасі колекцій компаратор?
- •14. Що розуміється під коректністю програмного забезпечення?
- •15. Як визначаються передумови у с# Code Contracts?
- •16. Як визначаються постумови у с# Code Contracts?
- •17. Які методи використовуються в посту мовах для перевірки значень, що повертаються, у с# Code Contracts.
- •18. Як визначаються інваріанти об’єктів у с# Code Contracts.
- •19. Які символи та правила можуть використовуватися в узгодженнях щодо вибору
- •20. Доцільність використання узгоджень щодо вибору позначень типів та об’єктів
- •21. Які узгодження використовуються для позначення простору імен, класів, методів, полів, властивостей, змінних у мові с#?
- •22. Які узгодження використовуються для позначення класів, методів, полів, змінних у мові
- •23. Які узгодження використовуються для позначення класів, методів, полів, змінних у мові с?
- •24. Які узгодження використовуються для позначення програмних об’єктів в угорській нотації?
1. За яких обставин виникають помилки часу виконання? Наведіть приклади
Помилки часу виконання
Операції, які неможливо виконати; виявляються від час виконання програми і розглядаються як виняткові ситуації.
Наприклад, ділення на нуль, вихід індексу масиву за його межі, використання нульового покажчика, неправильне перетворення форматів.
2. Яким чином виявляються та усуваються логічні помилки?
Це найважчі для обробки помилки, що виявляються за допомогою тестування і від лагодження.
Програма компілюється та виконується без помилок, але генерує неочікуваний результат. При виконанні деяких операцій програма може переходити у некоректний стан. Можуть призводити до помилок часу виконання (або ні).
Причини появи: проблеми у проекті або реалізації алгоритмів, невідповідність специфікації.
Наприклад, обчислення некоректного арифметичного значення, невідповідність специфікації. Найбільш «популярні»: безкінечний цикл і помилки у арифметичних виразах.
3. Переваги об’єктно-орієнтованого підходу до обробки виняткових ситуацій.
Об’єктно-орієнтований підхід дає можливість групувати помилки у вигляді ієрархії; програмний код, який оброблює помилки відділяється від основного коду програми і поміщається у обробник виняткової ситуації.
Розділення помилок за їх типами відповідає типу об’єкта.
4. Яке призначення обробника виняткової ситуації? Типи підключення обробника
Виняткові ситуації – події часу виконання, що переривають виконання програми.
Типи підключення обробника виняткових ситуацій:
Не структурна полягає у прив’язці (визначенні переходу до коду) обробника та процедури відключення прив’язки обробника.
Структурна полягає у використанні структури, яка містить виняткові ситуації, ізольовані блоки коду та фільтри для створення механізму обробки виняткових ситуацій. Це дозволяє коду розрізняти різні типи помилок і реагувати на них у залежності від обставин.
5. Які дії може виконувати обробник виняткової ситуації?
Дії обробника:
Зареєструвати виняткову ситуацію та зберегти всю необхідну інформацію
Інформація про помилку може бути потрібна при тестуванні, від лагодженні та відновленні системи. Для реєстрації: записати дані у стандартний вихідний потік або стандартний потік помилок; створити користувацький клас реєстрації; використати програмний інтерфейс реєстрації мови програмування.
Попросити користувача або застосування ввести додаткові дані
Використати значення за умовчуванням або альтернативні значення
Передати виняткову ситуацію іншій частині застосування
Перетворити виняткову ситуацію у іншу форму
Ігнорувати проблему
Повторити дію
Виконати альтернативну або відновлюючу дію
6. Призначення відлагодження програм та його зв’язок із тестуванням
Засоби від лагодження програм
Факти:
Приблизно 22% поломок ПК і 25% ноутбуків кожен рік;
Дефекти ПЗ коштують економіці США приблизно 59.5mln $ щорічно
…. Коротше, дорого.
Тестування – визначає, чи містить код помилки.
Відлагодження – процес визначення і усунення причин помилки; задача – пошук (90%) і виправлення дефекту.
Жаргончик
Борбаг (боровська помилка за принципом Бора у квантовій фізиці) – помилка проявляється завжди у певних умовах, строго визначених, але причина її появи абсолютно незрозуміла – стійка помилка.
Гейзенбаг (принцип невизначеності) – системна помилка, що зникає або видозмінюється при спробі її виявлення – плаваюча помилка.
Мандельбаг (складна)
Шрьодинбаг
Науковий метод відладки
Дослідити збій (збираються дані за допомогою повторних експериментів)
Висунути гіпотезу, яким чином збій привів до стану, що ми спостерігаємо
Розробити експеримент, що підтверджує чи спростовує гіпотезу
Протестувати гіпотезу, використовуючи експеримент чи спостереження: при «успіху» (експеримент виконав умову) – уточнити гіпотезу, інакше – створити альтернативну
Повторювати кроки 3 і 4, уточнюючи гіпотезу, поки не буде знайдено джерела дефекту.