Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
програмирование 17-20.docx
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
82.57 Кб
Скачать

2. Проектирование и этапы разработки

2.1 Постановка задачи

Задача заключается в создании динамического класса для работы с матрицами.

Чтение матриц происходит из файлов в котором они находятся, и после решений все полученные результаты выводятся в другой файл.

Интерфейс.

Интерфейс представлен примитивным меню в котором пользователь выбирает действие. При не открытии одного из файлов выводится ошибка, при успешное выполнение выводится сообщение об успехе.

2.2 Средства разработки

В качестве средства разработки выбран MS Visual Studio 2008 Express.

2.3 Описание процесса компиляции и запуска программы

Для компиляции программы используется IDE MS Visual Studio. В папке с проектом должны присутствовать файлы: file1.txt, file2.txt, file3.txt

Скомпиллированная программа состоит из следующих файлов:

1) папка cnf (конфигурационные файлы);

2) matrix.exe (исполняемый файл);

3. Реализация

3.1 Структура программы

Программа содержит компоненты, отвечающие за:

1) интерфейс,

2) математическую логику,

3) взаимодействие объектов класса,

4) перегрузку операторов.

3.2 Структура класса

Заключение

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

В ходе разработке были проанализированы и использованы следующие технологии:

1) Stl;

2) потоков данных;

3) перегрузка операторов;

В качестве дальнейшего совершенствования программы представляется возможным увеличение функциональности класса и интерфейса (с целью увеличения информативности)

18.Обработка ошибок в языке С++.

СЛОЖНОСТЬ ЗАДАЧИ ОБРАБОТКИ ОШИБОЧНЫХ СИТУАЦИЙ

Концепция программирования с защитой от ошибок предполагает

включение в код программного модуля средств контроля его нормального

выполнения. Это обеспечивает живучесть и корректную работу программ.

Проверить успешность того или иного действия в модуле обычно легко, но как

поступить, если возникла ошибка? Пусть, например, при выполнении функции

конкатенации строк строка-результат не может полностью вместить все

символы присоединяемой строки. Не составит труда запрограммировать эту

проверку, но что делать? Возможны, например, следующие варианты решения:

• Ситуация фатальная. Следует прервать выполнение программы.

• Ничего особенного. Операция выполняется. Сигнализировать о

происшествии не требуется. Строка-результат формируется в пределах

уместившихся символов.

• Ничего особенного. Аргументы остаются без изменения, операция не

выполняется. Сигнализировать о происшествии не требуется.

• Ситуация неприятная. Требуется сигнализировать о ее возникновении.

Перечень возможных решений, очевидно, может быть продолжен,

поскольку вопрос о том, как оценивать данную ситуацию, зависит от

программируемой задачи.

Главная проблема обработки исключительных ситуаций состоит в

том, что разработчик библиотеки классов может легко

обнаружить возникновение ошибки при выполнении программы, но

ему сложно принять решение, как с ней поступить. Пользователь

наоборот знает, что предпринять в случае ошибки, но не имеет

возможности ее обнаружить (иначе ошибка была бы обработана в

пользовательском коде, и от библиотеки ничего бы не

потребовалось) [1].

В языке С++ предусмотрены специальные средства для решения этой

проблемы, базирующиеся на понятии исключения. Стандарт ANSI С

формулирует концепцию и описывает интерфейс языка для обнаружения и

обработки исключительных ситуаций, определяя тем самым стиль надежного

программирования на С++. Главная идея состоит в том, что функция,

сталкивающаяся с неразрешимой проблемой, порождает (вызывает, генерирует,

выбрасывает, заявляет) исключение в надежде на то, что вызвавшая ее (прямо

или косвенно) функция распознает и решит эту проблему (перехватит и

обработает исключение). Исключение есть способ идентификации ситуации.

(Для этой цели в С++ может использоваться имя типа (встроенного или

пользовательского) и, возможно, имя переменной). Функция, способная

обработать определенный тип ситуаций, должна быть соответствующим

образом оформлена.

4

Рассмотрим, например, как может быть определена и обработана ошибка,

связанная с выходом индекса за границы массива в классе Vector:

template<class T>

class Vector {

private:

T* v;