Конструирование программ и языки программирования

Автор работы: Пользователь скрыл имя, 26 Февраля 2012 в 21:45, курсовая работа

Краткое описание

С++ был создан в начале 80-х Бьерном Страуструпом. Страуструп имел перед собой две цели: (1) оставить С++ совместимым с обычным С и (2) расширить С конструкциями объектно-ориентированного программирования (ООП), основанными на понятии класса в Simula 67.
Конечная цель создания С++ - предоставить профессиональному программисту язык, который можно использовать при создании объектно-ориентированного программного обеспечения, не жертвуя эффективностью или переносимостью С.

Содержание работы

Введение 3
1. Техническое задание 6
2. Рабочий проект 7
2.1.Общие сведения (среда функционирования (ОС), способ загрузки,
способ инсталляции, требования к ПО, требования к ТО) 7
2.2. Алгоритм программы 8
2.2.1.Классы 8
2.2.2.Диаграмма классов 13
2.2.3.Модули 14
2.2.4.Схема алгоритма 15
2.2.5.Диаграмма последовательности 16
2.2.6.Обработка исключений 17
2.3.Руководство пользователя 18
Заключение……………………………..……………………………………….........23
Список используемой литературы…………………..……..…………....…..…….. 24

Содержимое работы - 1 файл

Пояснительная записка.doc

— 628.00 Кб (Скачать файл)


Министерство образования Республики Беларусь

 

Учреждение образования

“Белорусский государственный университет информатики и радиоэлектроники”

 

Кафедра электронных вычислительных машин

 

Факультет компьютерных систем и сетей

 

 

 

 

 

 

 

 

ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

к курсовой работе

на тему: «Калькулятор для матриц»

по курсу: «Конструирование программ и языки программирования»

 

 

 

 

 

 

 

Выполнил:

студент гр. 810901

Скурат В.В.

Проверил:

Сасин Е.А.

 

 

 

 

 

 

Минск 2010


Содержание

 

Введение              3

1. Техническое задание              6

2. Рабочий проект              7

2.1.Общие сведения (среда функционирования (ОС), способ загрузки,

способ  инсталляции, требования к ПО, требования к ТО)              7

2.2.  Алгоритм программы              8

2.2.1.Классы              8

2.2.2.Диаграмма классов              13

2.2.3.Модули              14

2.2.4.Схема алгоритма              15

2.2.5.Диаграмма последовательности              16

2.2.6.Обработка исключений              17

2.3.Руководство пользователя              18

Заключение……………………………..……………………………………….........23

Список используемой литературы…………………..……..…………....…..…….. 24

ПРИЛОЖЕНИЕ А………………….………..……….……………………..….....….25

 

 

 

 

 

 

 

 

 

 

 

 

Введение

С++ был создан в начале 80-х Бьерном Страуструпом. Страуструп имел перед собой две цели: (1) оставить С++ совместимым с обычным С и (2) расширить С конструкциями объектно-ориентированного программирования (ООП), основанными на понятии класса в Simula 67.

   Конечная цель создания С++ - предоставить профессиональному программисту язык, который можно использовать при создании объектно-ориентированного программного обеспечения, не жертвуя эффективностью или переносимостью С. Первые шаги на этом пути были сделаны Деннисом Ричи, а продолжили его Бьерн Страуструп и растущее сообщество современных практикующих программистов. Высокая совместимость с языком C, позволяет использовать весь существующий C-код (код на C может быть с минимальными переделками скомпилирован компилятором C++; библиотеки, написанные на C, обычно могут быть вызваны из C++ непосредственно без каких-либо дополнительных затрат, в том числе и на уровне функций обратного вызова, позволяя библиотекам, написанным на C, вызывать код, написанный на С++).

Два аспекта, связанных с С++.  Во-первых, он превосходен как язык общего назначения, благодаря своим новым свойствам. Во-вторых, он удачен и как объектно-ориентированный язык программирования.

ООП – это программирование, сфокусированное на данных, причем данные и поведение неразрывно связаны, представляя собой класс. Центральным элементом ООП является инкапсуляция совокупности данных и соответствующих им операций. Понятие класса с его функциями-членами и членами данных представляет программисту подходящий для реализации инкапсуляции инструмент. Переменные класса являются объектами, которыми можно управлять.

Кроме того, классы обеспечивают сокрытие данных. Права доступа могут устанавливаться или ограничиваться для любой группы функций, которым необходим доступ к деталям реализации. Тем самым обеспечивается модульность и надежность.

Еще одной важной концепцией ООП является поощрение повторного использования кода с помощью механизма наследования. Суть этого механизма – получение нового произвольного класса из существующего, называемого базовым. При создании производного класса базовый класс может быть дополнен или изменен. Таким путем могут создаваться иерархии родственных типов данных, которые используют общий код.

ООП зачастую более сложно, чем обычное процедурное программирование, как оно выглядит на С. Существует по крайней мере один дополнительный шаг на этапе проектирования, перед алгоритмизацией и кодированием. Он состоит в разработке таких типов данных, которые соответствовали бы поставленной проблеме.

Есть уверенность, что использование ООП принесет дивиденды в нескольких отношениях. Решение будет более модульным, следовательно, более понятным и простым для модификации и обслуживания. Кроме того, такое решение будет более пригодно для повторного использования.

C++ — чрезвычайно мощный язык, содержащий средства создания эффективных программ практически любого назначения, от низкоуровневых утилит и драйверов до сложных программных комплексов самого различного назначения, поддерживает различные стили и технологии программирования, включая традиционное директивное программирование, ООП, обобщённое программирование, метапрограммирование (шаблоны, макросы).

 

Что касается данного проекта, можно сказать, что практически на любом современном компьютере сейчас установлена программа Excel из  пакета Microsoft Office. В этой программе можно выполнять все основные и дополнительные операции над матрицами. Но для выполнения всех этих операции необходимо иметь довольно обширную математическую базу и немалые навыки работы в Excel.

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1.Техническое задание

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

1) Для определения данных должен использоваться отдельный класс – класс матриц.

2) Операции изменения размеров матриц.

3) Операции преобразования матриц (транспонирование).

4) Операции инициализации матриц (инициализация единичной, нулевой, случайной матриц).

5) Операции сложения, и умножения матриц.

6) Операции умножения матрицы на скаляр и возведение в скалярную степень.

7) Удобная память калькулятора (буфер).

Интерфейс должен обеспечивать пользователю возможность:

1)    Удобного ввода данных с клавиатуры;

2)     Изменять размер вычисляемых матриц и контролировать текущие    размеры рабочих матриц и результирующей;

3)     Производить все операции, перечисленные в «Функциональных требованиях» интуитивно понятным и удобным способом;

4)     Визуально контролировать содержимое буферной памяти калькулятора;

5)    Не допускать обработки исходных данных, противоречащих логике работы программы путем вывода сообщений об ошибке;

 

 

 

 

 

 

2.Рабочий проект

 

2.1.Общие сведения (среда функционирования (ОС), способ загрузки, способ  инсталляции, требования к ПО, требования к ТО)

 

Среда функционирования:

Borland C++ Builder – это среда быстрой разработки, в которой в качестве языка программирования используется язык C++ Builder (C++ Builder Language).

Запуск программы:

Стандартный, т.е. двойной клик на иконке программы.

Способ инсталляции:

Копирование исполняемого файла программы на нужный носитель.

Требования к ПО и к ТО:

      операционная система Windows 9x/ME/2000/XP/2003

      16 Мб оперативной памяти

      1 Мб свободного пространства на жестком диске

      Pentium 133 MHz

 

 

 

 

 


2.2.  Алгоритм программы

2.2.1.Классы

 

В данном проекте реализованы 4 класса:

class TMatrix {...}

              класс матриц;

class TForm1 : public TForm {...}

              главная форма

class TAboutBox1 : public TForm {...}

              форма окна About;

class TAboutBox1 : public TForm {...}

              форма окна ошибок;

 

Класс TMatrix:

Переменные:

                            Квадратный массив целых чисел **_mat;

                            Беззнаковые целые _NNUM1 и _NNUM2 определяющие размеры массива _mat;

Методы:

                            Изменение размера:

                                          1) void DeleteOldMatrix()

                                                        Удаляет старую матрицу;

                                          2) void InitNewMatrix1()

                                                        Выделяет память под новую матрицу размером 3x3;

                                          3) void InitNewMatrix1(int M, int N)

                                                        Выделяет память под новую матрицу размером MxN;

             

Инициализация:

                                          1) void InitRandom()

                                                        Заполняет матрицу случайными числами;

                                          2) void InitZero()

                                                        Заполняет матрицу нулями;

                                          3) void InitE()

                                                        Если матрица квадратная, то инициализирует                                                                       единичную матрицу;

Действия с одним элементом:

                                          1) void InitElem(int i, int j, int NewInt)

                                                        Присваивает элементу с индексом [i][j] значение                                                         NewInt;

                                          2) int  GetElem(int, int)

                                                        Возвращает значение элемента с индексом [i][j];

Операции с двумя матрицами:

                                          1) void MSumm(TMatrix &A, TMatrix &B)

                                                        Возвращает значение суммы матриц A и B;

                                          2) void MDiff(TMatrix &A, TMatrix &B)

                                                        Возвращает значение разности матриц A и B;

                                          3) void MMult(TMatrix &A, TMatrix &B)

                                                        Возвращает значение произведения матриц A и B;

Операции с одной матрицей:

                                          1) void MScalMult(int ScalInt)

                                                        Возвращает значение умножения матрицы на скаляр                                                         ScalInt;

                                                2) void MNegative()

                                                        Возвращает значение умножения матрицы на -1;

                                          3) void MTrans()

                                                        Возвращает значение транспонированной матрицы;

 

Класс TForm1:

Переменные:

                            Элементы интерфейса программы в форме указателей на                                           объект;

                            Четыре переменные матрицы типа TMatrix:

                                          - _Mat1, _Mat2 – Матрицы привязанные к таблицам строк                                                                       StringGrid 1 и 2 соответственно;

                                          - _Res - Матрица привязанная к таблице StringGrid3                                           (хранит результат выполнения операций);

                                          - _Mem – Матрица являющаяся памятью калькулятора;

                            Четыре переменные целого типа, хранящие размеры таблиц                             строк StringGrid1 и 2:                    

                                          _SG1_R, _SG1_C, _SG2_R, _SG2_C;

                            Указатель типа TStringGrid *_SGFocus, определяющий какая                             таблица строк              StringGrid активна в данный момент;

                            Указатель типа TMatrix *_MatFocus, определяющий какая                                           матрица соответствует активной таблице строк StringGrid;             

                      Переменная целого типа _Edit1Num хранящая значение поля                             Edit1(поля для значения какого-то целого скаляра);

                      Переменная целого типа _SGFocusInt определяющая номер                                           активной таблицы StringGrid;             

                            Переменная целого типа _Memory определяющая, используется                             ли память калькулятора;                                          

 

Методы:

                            Конструктор:

                                          __fastcall TForm1(TComponent* Owner);

 

Функции нажатия на кнопки формы;

Функции чтения формы:

                                          1) ReadMemory()

                                                        Заносит значения из активной StringGrid в                                                                       матрицу памяти;

                                          2) ReadForm()

                                                        Заполняет матрицы _Mat1 и _Mat2 значениями из                                                         соответствующих StringGrid;

                                          3) ReadMatrix();

                                                        Заполняет соответствующую матрицу значениями из                                                         активной               StringGrid;

Информация о работе Конструирование программ и языки программирования