
- •18.Классы для работы с векторами и матрицами.
- •1.1 Описание программы, матрицы
- •1.3 Microsoft Visual Studio Express
- •1.4 Стандартная библиотека шаблонов (stl)
- •1.5 Vector
- •1.6 Перегрузка операторов
- •2. Проектирование и этапы разработки
- •2.1 Постановка задачи
- •Int lbound;
- •Int ubound;
- •1) Создается и запоминается копия объекта (переменной). Это означает, что
- •2) Разматывает стек, вызывая деструкторы локальных объектов, выходящих
- •3) Передается управление ближайшему catch-обработчику, совместимому с
- •Void f1(void) {
- •Void f2( Vector& V ) {
- •Void f() {
- •Void g() {
- •Void use_file( const char* filename ) {
- •Void use_file( const char* filename ) {
- •Void get_resources( ) {
- •Void use_file( const char* filename )
- •X( const char* aa, const char* bb )
- •Init(), то выделенная память не будет освобождена, поскольку объект полностью
- •X( int s ) : ip( s ) { init( ); }
- •Void f( int a ) throw( Range, Size, int, char* )
- •Void f( int a ) {
- •Int g( void ) throw( ); // функция не заявляет каких-либо исключений
- •Void f( void ) throw( int ){ throw “This error message has type char* ”; }
- •Void rethrow( ) { throw; }
- •Void network_g( )
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;