Обзор некоторых сведений о матрицах. Описание этапов работы с функциями. Проектирование программы для выполнения вычислений над матрицами в среде программирования MSVisualStudio 2008, при помощи языка программирования C . Проверка результатов в Mathcad.
Аннотация к работе
Пусть в линейном пространстве вектора представлены так: Тогда суммой векторов будет называться следующий вектор: 1.2 Разность двух векторов Добавим в класс функцию Vector(int sz) Vector(const Vector &А)называется конструктором копий. Кроме того, конструктор копии используется при инициализации формального параметра функции в случае передачи ей объекта по значению, и при возврате объекта из функции по оператору return. Чтобы объявить функцию дружественной некоторому классу, в определение этого класса включают ее прототип, перед которым ставится ключевое слово friend.
Введение
матрица программирование язык
На сегодняшний день математическое программирование - важная составляющая всего программирования. Большие и сложные вычисления благодаря простым программам становятся простыми.
В данной курсовой работе создавалась программа для вычислений над матрицами.
В качестве среды программирования выбрана MSVISUALSTUDIO 2008 и язык программирования C .
1.
Вектор
Матрица состоящая только из одного столбца или строки называется вектором. Размерностью вектора называется число его элементов.
1.1 Сумма двух векторов
Пусть в линейном пространстве вектора представлены так:
Тогда суммой векторов будет называться следующий вектор:
1.2 Разность двух векторов
Пусть в линейном пространстве вектора представлены так:
Тогда разностью векторов будет называться следующий вектор:
1.3 Произведение вектора на число
Если есть некоторое число x и вектор .
Тогда произведением вектора на число x будет называться следующий вектор
1.4 Скалярное произведение двух векторов
Скалярное произведение двух векторов и , заданных своими координатами, может быть вычислено по формулу .
2.
Классы
Класс - это тип структуры, позволяющий включать в описание типа не только элементы данных, но и функции (функции-элементы или методы).
Для ограничения доступа к элементам класса используются следующие спецификаторы доступа: public - ограничений доступа нет;
protected - доступны только в порожденных классах;
private - доступны только в своем классе.
2.1 Конструкторы и деструкторы
Добавим в класс функцию Vector(int sz)
Такая функция называется конструктором и служит для инициализации создаваемого объекта данных. Имя конструктора должно совпадать с именем класса, конструктор н должен возвращать значений и содержать оператор return.Тип его явно не описывается. Конструктор может быть перегружен, поэтому у любого нового типа данных могут быть несколько конструкторов.
~Vector()- специальный оператор, который называется деструктором. Он необходим для того, чтобы корректно завершить существование нашего объекта, то есть освободить память в куче.
Деструктор, как и конструктор, не должен возвращать значение и иметь явное описание типа. В отличие от конструкторов, которых может быть несколько у одного и того же класса, деструктор должен быть один и не должен иметь аргументов.
Vector(const Vector &А)называется конструктором копий. Он используется при создании объекта с инициализацией его объектом того же типа.
Кроме того, конструктор копии используется при инициализации формального параметра функции в случае передачи ей объекта по значению, и при возврате объекта из функции по оператору return. При передаче ссылок и указателей конструктор копии не используется.
Неявный конструктор копии обеспечивает простое поэлементное копирование одного объекта во второй. Такой вид копирования часто называют поверхностным.
2.2 Перегрузка операций
Большинство операций языка С для новых типов данных может быть перегружено. Для перегрузки операции необходимо создать функцию с названием, состоящим из ключевого слова operator и знака перегружаемой операции. Количество параметров этой функции определяется тем, одноместная или двухместная операция перегружается, а также наличием неявных элементов у методов класса.
Перегрузка операций предполагает введение в язык двух взаимосвязанных особенностей: возможности объявлять в одной области видимости несколько процедур или функций с одинаковыми именами и возможности описывать собственные реализации операций.
Например, чтобы перегрузить оператор сложения, нужно определить функцию с именем operator .
Операторные функции перегруженных операторов, за исключением new и delete,должны подчиняться следующим правилам: - операторная функция должна быть либо нестатической функцией-членом класса, либо принимать аргумент типа класса или перечислимого типа, или аргумент, который является ссылкой на тип класса или перечислимый тип;
- операторная функция не может изменять число аргументов или приоритеты операторов и порядок их выполнения по сравнению с использованием соответствующео оператора для встроенных типов данных;
- операторная функция унарного оператора, объявленная как функция-член, не должна иметь параметров; если же она объявлена как глобальная функция, она должна иметь один параметр;
- операторная функция не может иметь параметры по умолчанию и др.
2.3 Дружественные функции
Согласно концепции инкапсуляции данных С функция, не являющаяся членом класса, не может получить доступ к его закрытым (private) элементам. В языке С реализована возможность обойти данное ограничение с помощью друзей. С позволяет объявить 2 вида друзей класса: дружественную функцию или дружественный класс. Дружественные функции не являются членами класса, но тем не менее имеют доступ к его закрытым членам. Более того, одна такая функция может иметь доступ к закрытым членам нескольких классов. Чтобы объявить функцию дружественной некоторому классу, в определение этого класса включают ее прототип, перед которым ставится ключевое слово friend. friend ostream&operator<<(ostream& os, const Vector& A)
Дружественная функция не является членом класса, в котором она объявлена. Поэтому, вызывая дружественную функцию, не нужно указывать имя объекта или указатель на объект и операцию доступа к члену класса (точку или стрелку). Доступ к закрытым членам класса дружественная функция получает только через объект класса, который в силу этого должен быть либо объявлен внутри функции, либо передан ей в качестве аргумента.
Функция может быть дружественна сразу нескольким классам.
2.4 Неявный указатель this
Каждый метод класса содержит в качестве данного следующий указатель, передаваемый при вызове метода в качестве параметра: имя_типа *this;
Этот указатель представляет собой адрес конкретного объекта, для которого был вызван метод.
Использовать указатель this для доступа к элементам класса можно, но вряд ли целесообразно, поскольку это и так подразумевается по умолчанию. Явно использовать this необходимо только в тех случаях, когда требуется работа непосредственно с адресами объектов, например, при организации динамических структур данных.
Код программы
#include"stdafx.h"
#include
#include"conio.h"
#include"time.h" using namespace std;
// КЛАСС Vector class Vector
{ public: double *V;
int sz; // число строк public: // конструктор по умолчанию