Державне освітня установа
вищого професійної освіти
Ульяновський Державний Університет
Факультет Математики та Інформаційних технологій
Кафедра інформаційних технологій
КУРСОВА РОБОТА
Програмування дій над матрицями на мові С + +.
Прикладна інформатика 08.08.01
Проект виконав студент
Русин Віктор Олександрович
Ульяновськ
2010 м.
Зміст
Введення
1. Теоретична частина
1.1 Опис програми, матриці
1.2 C + +
1.3 Microsoft Visual Studio Express
1.4 Стандартна бібліотека шаблонів (STL)
1.5 Vector
1.6 Перевантаження операторів
2. Проектування та етапи розробки
2.1 Постановка завдання
2.2 Засоби розробки
2.3 Опис процесу компіляції і запуску програми
3. Реалізація
3.1 Структура програми
3.2 Структура класу
Висновок
Література
Додаток. Вихідний код програми. Заголовки
Введення
На сьогоднішній день математичне програмування - важлива складова всього програмування. Великі і складні обчислення завдяки простим програмам стають простими.
В даній курсовій роботі створювалася програма для обчислень над матрицями.
В якості середовища програмування обрана MS Visual Studio 2008 і мова програмування C + +.
1. Теоретична частина
1.1 Опис програми, матриці
Матриця - Математичний об'єкт, записується у вигляді прямокутної таблиці чисел (або елементів кільця) і допускає алгебраїчні операції (додавання, віднімання, множення) між ним та іншими подібними об'єктами. Зазвичай матриці представляються двовимірними (прямокутними) таблицями. Іноді розглядають багатовимірні матриці або матриці непрямокутної форми.
Операції над матрицями
Нехай a ij - елементи матриці A, а b ij - елементи матриці B.
Лінійні операції:
Множення матриці A на число О» (позначення: О»A) полягає в побудові матриці B, елементи якої отримані шляхом множення кожного елемента матриці A на це число, тобто кожен елемент матриці B дорівнює
b ij = О»a ij
Додавання матриць A + B є операція знаходження матриці C, всі елементи якої дорівнюють попарной сумі всіх відповідних елементів матриць A і B, тобто кожен елемент матриці C дорівнює
c ij = a ij + B ij
Віднімання матриць A - B визначається аналогічно додаванню, це операція знаходження матриці C, елементи якої
c ij = a ij - B ij
Додавання і віднімання допускається тільки для матриць однакового розміру.
Існує нульова матриця О? така, що її збільшення до іншої матриці A не змінює A, тобто
A + О? = A
Всі елементи нульовий матриці дорівнюють нулю.
Множення матриць (позначення: AB, рідше зі знаком множення) - Є операція обчислення матриці C, елементи якої дорівнюють сумі добутків елементів у відповідному рядку першого множника і стовпці другого.
У першому множнику має бути стільки ж стовпців, скільки рядків у другому. Якщо матриця A має розмірність, B -, то розмірність їх твори AB = C є.
Зводити в ступінь можна тільки квадратні матриці.
Транспонування матриці (позначення: A T ) - операція, при якій матриця відбивається відносно головної діагоналі, тобто
Якщо A - матриця розміру, то A T - матриця розміру.
1.2 C + +
C + + (Сі + +) - компільований статично типізований мова програмування загального призначення. Підтримує різні парадигми програмування, але, в порівнянні з його попередником - мовою Сі, - найбільшу увагу приділено підтримці об'єктно-орієнтованого і узагальненого програмування.
Назва В«C + +В» походить від Сі (C), в якому унарний оператор + + позначає інкремент змінної.
У 1990-х роках мову став одним з найбільш широко вживаних мов програмування загального призначення.
При створенні C + + прагнули зберегти сумісність з мовою Сі. Більшість програм на Сі будуть справно працювати і з компілятором C + +. C + + має синтаксис, заснований на синтаксисі Сі.
1.3 Microsoft Visual Studio Express
Microsoft Visual Studio Express - лінійка безкоштовних інтегрованих середовищ розробки, полегшена версія Microsoft Visual Studio, розробленої компанією Microsoft. Згідно з твердженням Microsoft, В«ExpressВ»-редакції пропонують налагоджену, просту в навчанні і використанні середовище розробки користувачам, які не є професійними розробниками ПЗ, - любителям та студентам. Остання версія була випущена 19 листопада 2007, пакет оновлення SP1 - 11 серпня 2008. З квітня 2009 року Microsoft припинила підтримку всіх попередніх версій Visual Studio Express. У квітні 2010 випущена Visual Studio 2010 Express
1.4 Стандартна бібліотека шаблонів (STL)
STL (англ. Standard Template Library) - набір узгоджених узагальнених алгоритмів, контейнерів, засобів доступу до їхнього вмісту і різних допоміжних функцій.
Стандартна бібліотека шаблонів до включення в стандарт C + + була сторонньою розробкою, в початку - фірми HP, а потім SGI. Стандарт мови не називає її В«STLВ», оскільки ця бібліотека стала невід'ємною частиною мови, проте багато людей досі використовують цю назву, щоб відрізняти її від решти частини стандартної бібліотеки (потоки введення/виводу (iostream), підрозділ Сі та ін.)
Проект під назвою STLPort, заснований на SGI STL, здійснює постійне оновлення STL, iostream і строкових класів. Деякі інші проекти також займаються розробкою приватних застосувань стандартної бібліотеки для різних конструкторських завдань. Кожен виробник компіляторів C + + обов'язково поставляє якусь реалізацію цієї бібліотеки, оскільки вона є дуже важливою частиною стандарту і широко використовується.
Архітектура STL була розроблена Олександром Степановим і Менг Лі.
1.5 Vector
Вектор (vector) нагадує нам масив, тільки він здатний рости до довільного розміру, підтримує інформацію про розмір. Як і масив до вектора можна звернути скориставшись операцією індексування []. Ось характеристики:
В· Доступ до даних з однаковою швидкістю
В· Вставка призводить до переміщення елементів
В· При розширенні дані копіюються в інший блок
Як бачите вектор оптимальний для отримання інформації, але при великій кількості вставок краще скористатися іншими контейнерами, наприклад, списками. Проблема в тому, що фізично вектор розташовується в безперервної пам'яті. На C це реалізовували функціями malloc.
Можливо ви вже стикалися з такою проблемою, що масиви в с + + мають обмежений розмір, а ми точно не знаємо кількість елементів, необхідне в масиві. У таких випадках необхідно використовувати динамічне програмування. Тобто виділяти пам'ять під елементи масиву при необхідності додати який-небудь елемент. В принципі, в з + + це можна реалізувати вручну, але навіщо? якщо є спеціальний клас - vector. Він дозволяє створювати нам масиви змінної довжини в залежності від ситуації.
Для роботи з вектором необхідно підключити заголовний файл:
# include "Vector"
Оголосити робочу область:
Після цього вектор необхідно оголосити, це можна зробити двома способами.
vector vArray1; vector vArray2 (30);
У першому випадку вказується порожній вектор, а в другому початковий розмір.
Можна отримувати інформацію про параметри вектора:
В· size () - Скільки даних зберігатися
В· capacity () - Скільки може зберігатися до зміни розміру
В· max_size () - Максимальний розмір з...