Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laboratorni_S_4.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
2 Мб
Скачать
☆

Лабораторна робота № 16

Тема: Обробка виключних ситуацій у С# .

Мета роботи: Набуття навичок розробки стійких програм з аналізом виключних ситуацій.

Теоретичні відомості: матеріали лекцій (тема 24).

Завдання для самостійної роботи

Завдання 1.

Усі завдання потребують використання класів і успадкування.

  1. Обчислити суму векторів з генерацією виключних ситуацій під час виходу значень за заданий діапазон і у разі невірного розміру вектора.

  2. Обчислити суму матриць з генерацією виключних ситуацій під час виходу значень за заданий діапазон і невірному розмірі матриць.

  3. Здійснити пошук у списку. У разі відсутності потрібного значення ге-нерувати виключення, інакше повернути покажчик на знайдений елемент.

  4. Здійснити пошук файлу на диску та його зчитування. У разі відсутно-сті файлу або неможливості його відкриття та читання генерувати виклю-чення.

  5. Розробити базовий клас "Виключення" і похідні класи для конкрет-них виключних ситуацій (помилки перетворення рядка у число, неприпус-тиме приведення типів, переповнення тощо).

  6. Визначити клас int, що працює як вбудований тип int, але генерує ви-ключення у ситуаціях overflow, underflow.

  7. Продемонструвати послідовність викликів обробника виключень catch() при використанні вкладених блоків try-catch(). Протестувати на при-кладі обробки виключень виду: втрата значення у виразі з плаваючою точкою, ділення на нуль, переповнення значень з плаваючою точкою, неприпус-тима математична операція з плаваючою точкою.

  8. Використати ієрархію класів для обробки виключень, що викликаються стандартною бібліотекою математичних функцій (переповнення, ділення на нуль, значення за межами діапазону тощо).

  9. Створити клас "Рядок", в якому передбачити методи об’єднання двох і більше рядків у один. Передбачити виключну ситуацію, яка створюється під час недостачи пам'яті для розміщення об’єднаного рядка. Реалізувати обробку виключення, яке генерується у конструкторі.

  10. Створити клас "Матриця", в якому визначити методи генерації мат-риці генератором випадкових чисел, перевірки її на симетричність. Передба-чити обробку таких виключних ситуацій, як вихід значень матриці та її інде-ксів за межі діапазону, її несиметричність.

  11. Створити базовий та похідні класи виключень. За допомогою опера-тора catch() базового класу здійснити перехоплення виключень похідних класів.

  12. Розробити тестову програму, яка використовує усі можливі формати оператора throw (з параметрами та без параметрів) і демонструє послідов-ність передачі управління відповідному оператору catch().

  13. Представивши виключення у вигляді ієрархічного дерева, реалізува-ти їх обробку під час виконання математичних функцій над даними, що зчи-тані з потоку.

  14. Створити клас "Число", в якому значення числа, мантиса та порядок є його атрибутами. Реалізувати методи визначення мантиси та порядку числа по його значенню, формування матриці вимірності n*3, стовпчики якої міс-тять зчитане число, його мантису та порядок. Дані зчитати з потоку симво-лів. У випадку зчитування нецифрових символів сформувати виключення та здійснити його обробку.

  15. Використовуючи потоки введення-виведення, написати програму-фільтр, яка із зчитаного потоку, виділяє алфавітні символи та перетворює їх у символи верхнього регістру, а зчитані цифрові символи замінює на будь-який введений з клавіатури. Якщо зчитані символи пунктуації та арифметичних дій, то сформувати виключення та їх обробити.

  16. Визначити зворотну матрицю з генерацією виключних ситуацій під час виходу значень за заданий діапазон і неправильній вимірності матриці.

  17. Створити клас Complex, в якому визначити конструктор і методи додавання та множення комплексних чисел. Передбачити генерацію виклю-чних ситуацій у конструкторі під час ініціалізації атрибутів комплексного числа та під час виклику інших методів.

  18. Створити клас "Типові виключення", в якому визначити методи об-числення арифметичного виразу з генерацією виключень типів ділення на нуль, арифметичного переповнення, недостачі оперативної пам’яті для роз-міщення обчисленого результату, виходу значення за допустимі межі.

  19. Проаналізувати виключення, що генеруються у вкладених класах і конструкторах. Предметну область задати самостійно.

  20. Створити клас "Ціле число", в якому визначити методи, що можуть генерувати виключення типів переповнення зверху та знизу і ділення на нуль.

  21. Створити клас "Матриця", в якому визначити конструктор для гене-рації верхньої трикутної методи матриці та методи обчислення її визначника як добутку її діагональних елементів. Формувати виключні ситуації у випадках, коли визначник дорівнює нулю або не побудована верхня трикутна матриця.

  22. Написати програму для генерації та обробки помилки, яка пов’язана з нестачею оперативної пам’яті. Програма повинна видавати відповідне повідомлення при динамічному виділення пам’яті за допомогою оператора new.

  23. Розробити програму, яка формує виключення при перевищенні від-веденого для її роботи часу і зупиняється. Користувач може продовжити працювати, задавши відповідні дані з клавіатури.

  24. Визначити клас "Елементарні та обернені тригонометричні функції". У виключних ситуаціях (вихід аргументу за область допустимих значень) генерувати та обробляти відповідні виключення.

Контрольні запитання

  1. Який загальний формат опису фрагменту коду обробки виключної ситуації?

  2. Як згенерувати виключну ситуацію за бажанням користувача?

  3. Який клас є нащадком класів виключних ситуацій?

  4. Що відбувається у випадку, коли не обробити виключну ситуацію?

  5. Як здійснити контроль переповнення типів даних?

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]