Тема: Програма роботи з матрицями

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Украинский
  • Формат файла:
    MS Word
  • Размер файла:
    176,18 Кб
Програма роботи з матрицями
Програма роботи з матрицями
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

ЧЕРНІГІВСЬКИЙ НАЦІОНАЛЬНИЙ ТЕХНОЛОГІЧНИЙ УНІВЕРСИТЕТ

КОЛЕДЖ ТРАНСПОРТУ ТА КОМПЮТЕРНИХ ТЕХНОЛОГІЙ

Циклова комісія дисциплін професійної підготовки

спеціальностей 5.05010201 і 5.05010101






КУРСОВИЙ ПРОЕКТ

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

на тему: Програма роботи з матрицями


Студента IV курсу, групи

напряму підготовки 6.050102

спеціальності 5.05010201

Іванова В.А.

Керівник викладач Пирогова В.І.





м. Чернігів - 2016 рік

Зміст

Вступ

1. Загальні відомості

1.1 Позначення та назва програми

1.1.1 Програмне забезпечення, необхідне для її функціонування

1.2 Мови програмування, на яких написана програма

2. Функціональне призначення

2.1 Призначення програми

2.2 Функціональні обмеження на застосування

3. Опис логічної структури

3.1 Алгоритм програми

3.2 Методи та елементи, що використовуються

3.3 Структура програми з описом функцій складових частин і зв'язків між ними

3.4 Зв'язок програми з іншими програмами

4. Необхідні технічні засоби

4.1 Типи комп'ютерів та пристроїв, що використовуються при роботі програми

5. Виклик і завантаження

5.1 Способи виклику програми

5.2 Адреса завантаження програми

5.3 Відомості про використання оперативної пам'яті

5.4 Обсяг програми

6. Вхідні дані

6.1 Характер вхідних даних

6.2 Організація вхідних даних

6.3 Попередня підготовка вхідних даних

7. Вихідні дані

7.1 Характер вихідних даних

7.2 Організація вихідних даних

7.3 Формат, описання та спосіб кодування даних

8. Опис програми і тестування програми

Висновок

Список використаної літератури

Додатк

Вступ

Курсовий проект (робота) - це самостійно виконана і відповідно оформлена творча робота студента з вирішення конкретного практичного завдання з однієї або декількох загально-технічних чи спеціальних дисциплін на основі набутих теоретичних знань та умінь.

Курсовий проект виконується протягом навчального семестру у відповідності з навчальним планом спеціальності

Основною метою курсового проектування є:

навчання та набуття навиків практичного застосування теоретичних знань для вирішення конкретних практичних задач;

розвиток творчого мислення, виявлення та формування професійних навиків студентів;

набуття навиків конструювання виробів, виконання розрахунків, письмового викладу технічних рішень та аналізу одержаних результатів;

закріплення, поглиблення та систематизація отриманих студентами в процесі навчання теоретичних знань з різних дисциплін;

набуття навиків узагальнення та аналізу результатів, отриманих іншими розробниками та дослідниками;

навчання та набуття студентами досвіду користування довідковою літературою і нормативними документами.

Мета курсового проектування з дисципліни "Основи програмування та алгоритмічні мови":

закріпити знання, одержані під час вивчення дисципліни "Основи програмування та алгоритмічні мови;

засвоїти основні етапи розробки програмних виробів;

набути навиків при оформлення документів на програмні вироби;

одержати практичні навички з розробки програм і програмних документів.

Постановка завдання

Завданням курсового проекту є розробити програму автоматизації роботи з матрицями. Дані необхідно оформити у вигляді матриць цілих чисел. В програмі повинні бути реалізовано наступні операції над матрицями:

·Додавання

·Множення

·Порівняння

Програма повинна бути реалізована на довільну кількість елементів. Всі дані, які будуть вводитися користувачем повинні бути підготовлені до обробки.

Отже наша програма повинна бути зручною у використанні і забезпечувати ряд безперебійних операцій по обробці вхідних даних і відображення вихідних. Алгоритм програми повинен мати чітку послідовність, забезпечуючи прямий порядок дій. Інтерфейс програми має бути простим і зрозумілим простому користувачу

1. Загальні відомості

1.1 Позначення та назва програми


1.1.1 Програмне забезпечення, необхідне для її функціонування

Для використання програми не треба специфічного програмного забезпечення. Для виконання приграми вистачає будь-якої ОС сімейства Windows та мінімальних системних частин компютера.

1.2 Мови програмування, на яких написана програма

Програма написана мовою С в середовищі Borland C++ Builder. C++ Builder - програмний продукт, інструмент швидкої розробки додатків <https://uk.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BC%D0%BF%27%D1%8E%D1%82%D0%B5%D1%80%D0%BD%D0%B0_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%B0> (RAD <https://uk.wikipedia.org/wiki/%D0%A8%D0%B2%D0%B8%D0%B4%D0%BA%D0%B0_%D1%80%D0%BE%D0%B7%D1%80%D0%BE%D0%B1%D0%BA%D0%B0_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B7%D0%B0%D0%B1%D0%B5%D0%B7%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%BD%D1%8F>), інтегроване середовище розробки <https://uk.wikipedia.org/wiki/%D0%86%D0%BD%D1%82%D0%B5%D0%B3%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B5_%D1%81%D0%B5%D1%80%D0%B5%D0%B4%D0%BE%D0%B2%D0%B8%D1%89%D0%B5_%D1%80%D0%BE%D0%B7%D1%80%D0%BE%D0%B1%D0%BA%D0%B8> (IDE), система, яка використовується програмістами для розробки програмного забезпечення на мові програмування C++ <https://uk.wikipedia.org/wiki/C%2B%2B>.

Спочатку розроблявся компанією Borland Software, а потім її підрозділом CodeGear <https://uk.wikipedia.org/w/index.php?title=CodeGear&action=edit&redlink=1> [ru] <https://ru.wikipedia.org/wiki/CodeGear>, який сьогодні належить компанії Embarcadero Technologies <https://uk.wikipedia.org/wiki/Embarcadero_Technologies>.++ Builder об'єднує в собі комплекс об'єктних бібліотек <https://uk.wikipedia.org/wiki/%D0%91%D1%96%D0%B1%D0%BB%D1%96%D0%BE%D1%82%D0%B5%D0%BA%D0%B0_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC> (STL <https://uk.wikipedia.org/wiki/Standard_Template_Library>, VCL <https://uk.wikipedia.org/wiki/Visual_Component_Library>, CLX <https://uk.wikipedia.org/wiki/CLX>, MFC <https://uk.wikipedia.org/wiki/MFC> та ін.), компілятор <https://uk.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BC%D0%BF%D1%96%D0%BB%D1%8F%D1%82%D0%BE%D1%80>, зневаджувач <https://uk.wikipedia.org/wiki/%D0%97%D0%BD%D0%B5%D0%B2%D0%B0%D0%B4%D0%B6%D1%83%D0%B2%D0%B0%D1%87>, редактор коду <https://uk.wikipedia.org/wiki/%D0%A2%D0%B5%D0%BA%D1%81%D1%82%D0%BE%D0%B2%D0%B8%D0%B9_%D1%80%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%BE%D1%80> та багато інших компонентів. Цикл розробки аналогічний Delphi <https://uk.wikipedia.org/wiki/Embarcadero_Delphi>. Більшість компонентів, розроблених в Delphi, можна використовувати і в C++ Builder без модифікації, але зворотнє твердження не вірне.++ Builder містить інструменти, які за допомогою drag-and-drop <https://uk.wikipedia.org/wiki/Drag-and-drop> дійсно роблять розробку візуальною <https://uk.wikipedia.org/wiki/%D0%92%D1%96%D0%B7%D1%83%D0%B0%D0%BB%D1%8C%D0%BD%D0%B5_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F>, спрощує програмування завдяки вбудованому WYSIWYG <https://uk.wikipedia.org/wiki/WYSIWYG>-редактору інтерфейсу <https://uk.wikipedia.org/w/index.php?title=%D0%A0%D0%B5%D0%B4%D0%B0%D0%BA%D1%82%D0%BE%D1%80_%D0%B3%D1%80%D0%B0%D1%84%D1%96%D1%87%D0%BD%D0%BE%D0%B3%D0%BE_%D0%BA%D0%BE%D1%80%D0%B8%D1%81%D1%82%D1%83%D0%B2%D0%B0%D1%86%D1%8C%D0%BA%D0%BE%D0%B3%D0%BE_%D1%96%D0%BD%D1%82%D0%B5%D1%80%D1%84%D0%B5%D0%B9%D1%81%D1%83&action=edit&redlink=1>

2. Функціональне призначення

2.1 Призначення програми

На сьогоднішній день математичне програмування - важлива складова всього програмування. Великі і складні обчислення завдяки простим програмами стають простими. У цій роботі створювалася програма для обчислень над матрицями.

В якості середовища програмування обрана Borland C++ Builder.

Матриця - безліч чисел, що утворюють прямокутну таблицю, яка містить m-рядків і n-стовпців. Для позначення матриці використовується напис:

ij, I - номер рядка, j - номер стовпця.

Елементи матриці, що стоять на діагоналі, що йдуть з верхнього лівого кута називають головною діагоналлю, іншу діагональ називають побічної.

Додавання і віднімання матриць зводиться до відповідних операцій над їх елементами. Найголовнішим властивістю цих операцій є те, що вони визначені тільки для матриць однакового розміру. Таким чином, можливо визначити операції додавання матриць:

Сумою матриць є матриця, елементами якої є відповідно сума елементів вихідних матриць

Операція множення матриці будь-якого розміру на довільне число зводиться до множення кожного елемента матриці на це число.

Множення матриці А на матрицю В має сенс у тому випадку, коли число стовпців матриці А збігається з числом рядків у матриці В.

В результаті множення двох прямокутних матриць виходить матриця, що містить стільки рядків, скільки рядків було в першій матриці і стільки стовпців, скільки стовпців було у другій матриці.

2.2 Функціональні обмеження на застосування

Функціональних обмежень на застосування програми немає.

3. Опис логічної структури

3.1 Алгоритм програми

Для комп'ютерних програм <https://uk.wikipedia.org/wiki/%D0%9A%D0%BE%D0%BC%D0%BF%27%D1%8E%D1%82%D0%B5%D1%80%D0%BD%D0%B0_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%B0> алгоритм є списком деталізованих інструкцій, що реалізують процес обчислення, який, починаючи з початкового стану, відбувається через послідовність логічних станів, яка завершується кінцевим станом. Перехід з попереднього до наступного стану не обов'язково детермінований - деякі алгоритми можуть містити елементи випадковості.

Поняття алгоритму належить до підвалин математики <https://uk.wikipedia.org/wiki/%D0%9C%D0%B0%D1%82%D0%B5%D0%BC%D0%B0%D1%82%D0%B8%D0%BA%D0%B0>. Обчислювальні процеси алгоритмічного характеру (як-то арифметичні дії над цілими числами <https://uk.wikipedia.org/wiki/%D0%A6%D1%96%D0%BB%D1%96_%D1%87%D0%B8%D1%81%D0%BB%D0%B0>, знаходження НСД <https://uk.wikipedia.org/wiki/%D0%9D%D0%B0%D0%B9%D0%B1%D1%96%D0%BB%D1%8C%D1%88%D0%B8%D0%B9_%D1%81%D0%BF%D1%96%D0%BB%D1%8C%D0%BD%D0%B8%D0%B9_%D0%B4%D1%96%D0%BB%D1%8C%D0%BD%D0%B8%D0%BA> двох чисел тощо) відомі людству з глибокої давнини. Проте, чітке поняття алгоритму сформувалося лише на початку XX ст <https://uk.wikipedia.org/wiki/20_%D1%81%D1%82%D0%BE%D0%BB%D1%96%D1%82%D1%82%D1%8F>.

Наша програма повинна мати чіткий, сформований алгоритм, який дозволить швидко працювати програмі і безперебійно оброблювати вхідні і вихідні дані.

Алгоритм нашої програми виглядає наступним чином:

.Початок роботи програми. Запуск скомпільованого нами файлу.

2.Ініціалізація обєктів програми.

.Задання розмірів матриці

.Обчислення матриць

.Виведення результатів

.Завершення алгоритму

Для кращого розуміння алгоритму програми складемо його блок-схему (див. рис. 3.1.1)

програма матриця алгоритм

.

Рис. 3.1.1 Блок-схема програми

3.2 Методи та елементи, що використовуються

Для реалізації алгоритму програми використовуються стандартні методи середовища програмування Borland C++ Builder, зокрема:

1.Label

Для відображення різних написів на формі використовуються в основному компоненти Label, StaticText і Panel. Перші два з цих компонентів - мітки, спеціально призначені для відображення текстів. Основне призначення панелі Panel - компоновка компонентів у вікні форми, проте можна використовувати і для виведення текстів.

Тексти, які відображаються в компонентах, визначаються значенням їх властивості Caption. Його можна встановлювати в процесі проектування або задавати і змінювати програмно під час виконання програми. Наприклад:

Label1-> Caption = "Новий текст";

Властивість Caption має тип рядка AnsiString. При присвоєнні цього типу числової інформації відбувається її автоматичне перетворення в рядок. Тому ви можете безпосередньо здійснювати подібні присвоювання. Наприклад:

Label1-> Caption = 5.1;

Оператор призведе до появи в мітці напису "5,1". Але якщо ви хочете занести в мітку змішану інформацію, що складаються з рядків символів і чисел, ви повинні скористатися функціями FloatToStr і IntToStr, що переводять відповідно числа з плаваючою комою і цілі в рядок. Для формування тексту, що складається з декількох фрагментів, можна використовувати операцію "+", яка для рядків означає їх склеювання (конкатенацію). Наприклад, якщо в програмі є ціла змінна I, що відображає число співробітників деякої організації, то вивести в мітку Label1 інформацію про це можна оператором:-> Caption = "Число співробітників: " + IntToStr (I);

У всіх компонентах колір фону визначається властивістю Color, а колір напису подсвойством Color властивості Font. Якщо колір спеціально не задавати, то колір фону зазвичай зливається з кольором контейнера, що містить мітку, так що фон просто не помітний.

Для мітки Label колір і шрифт - єдино доступні елементи оформлення напису. Компоненти StaticText і Panel мають крім того властивість Border - Style, визначальне рамку тексту - бордюр. При стилі sbsNone мітка StaticText по виду не відрізняється від мітки Label. Ймовірно, якщо вже використовувати бордюр, то найбільш приємний стиль sbsSunken.

Компонент Panel крім властивості BorderStyle має ще властивості Bevellnner, BevelOuter, BevelWidth, BorderWidth, які надають багаті можливості оформлення напису. Таким чином, з точки зору оформлення виведеного тексту максимальні можливості дає Panel і мінімальні Label.

Розміщення всіх текстових компонентів на формі визначається, зокрема, властивостями Top, Left, Height, Width, Aline, спільними для всіх віконних компонентів. Ці властивості, що визначають координати компонента, його розміри і їх зміну при зміні користувачем розмірів батьківського компонента.

Розмір міток Label і StaticText визначається також властивістю AutoSize. Якщо ця властивість встановлено в true, то вертикальний і горизонтальний розміри компонента визначаються розміром напису. Якщо ж AutoSize одно false, то вирівнювання тексту всередині компонента визначається властивістю Alignment, яке дозволяє вирівнювати текст по лівому краю, правому краю або центру клієнтської області мітки. У панелі Panel також є властивість AutoSize, але воно не відноситься до розмірів написи Caption. Однак властивість вирівнювання Alignment працює і для панелі.

У мітці Label є властивість WordWrap - допустимість переносу слів довгою написи, що перевищує довжину компонента, на нову сходинку. Щоб такий перенос міг здійснюватися, треба встановити властивість WordWrap в true, властивість AutoSize в false (щоб розмір компоненту не визначався розміром напису) і зробити висоту компонента такий, щоб у ньому могло поміститися кілька рядків. Якщо WordWrap не встановлено у true при AutoSize рівному false, то довгий текст, що не міститься в рамці мітки, просто обрізається.

2. StringGrid

Компонент StringGrid являє собою таблицю, що містить рядки. Дані таблиці можуть бути тільки для читання або редагування. Таблиця може мати смуги прокрутки, причому задане число перших рядків і стовпців може бути фіксованим і не прокручуватися. Таким чином, можна задати заголовки стовпців і рядків, постійно присутні у вікні компонента. Кожній клітинці таблиці може бути поставлений у відповідність деякий об'єкт.

Компонент StringGrid призначений в першу чергу для відображення таблиць текстової інформації. Однак компонент може відображати і графічну інформацію.

Всі ці властивості доступні під час виконання. Задавати тексти можна програмно або за окремими осередкам, або відразу по стовпцях і рядках за допомогою методів класу TStrings.

Властивості ColCount і RowCount визначають відповідно число стовпців і рядків, властивості FixedCols і FixedRows - число фіксованих, що не прокручуваних стовпців і рядків. Колір фону фіксованих осередків визначається властивістю FixedColor.

Властивості LeftCol і TopRow визначають відповідно індекси перший видимого на екрані в даний момент прокручуваного стовпця і першою видимою прокручуваному рядка.

Властивість ScrollBars визначає наявність в таблиці смуг прокрутки. Причому смуги прокрутки з'являються і зникають автоматично залежно від того, поміщається таблиця у відповідний розмір чи ні.

Властивість Options є множиною, визначальним багато властивостей таблиці: наявність розділових вертикальних і горизонтальних ліній у фіксованих (goFixedVertLine і goFixedHorzLine) і не фіксованих (goVertLine і goHorzLine) осередках, можливість для користувача змінювати за допомогою миші розміри стовпців і рядків (goCoISizing і goRowSizing), переміщати стовпці і рядки (goColMoving і goRowMoving) і багато іншого. Важливим елементом у властивості Options є goEditing - можливість редагувати вміст таблиці.

В основному компонент StringGrid використовується для вибору користувачем якихось значень, відображених в осередках.

Властивості Col і Row показують індекси стовпця і рядка виділеної комірки. Можливо також виділення користувачем безлічі осередків, рядків і стовпців.

Серед безлічі подій компонента StringGrid слід відзначити подію OnSelectCell, що виникає в момент вибору користувачем осередки. У обробник цієї події передаються цілі параметри ACol і ARow - стовпець і рядок виділеного осередку, і булеві параметр CanSelect - допустимість вибору.

Параметр CanSelect можна використовувати для заборони виділення комірки, задавши його значення false. А параметри ACol і ARow можуть використовуватися для якоїсь реакції програми на виділення користувача.

3. Button

Найпростішою і, мабуть, найбільш часто використовуваної кнопкою є кнопка Button, розташована на сторінці бібліотеки Standard. Рідше використовується кнопка BitBtn, знана, насамперед, можливістю відобразити на її поверхні зображення. Більшість властивостей, методів і подій у цих видів кнопок однакові.

Основне з точки зору зовнішнього вигляду властивість кнопки - Caption (напис). У написах кнопок можна передбачати використання клавіш прискореного доступу, виділяючи для цього один із символів напису. Перед символом, який повинен відповідати клавіші прискореного доступу, ставиться символ амперсанда "&". Цей символ не з'являється в написи, а наступний за ним символ виявляється підкресленим. Тоді користувач може замість клацання на кнопці натиснути в будь-який момент клавішу Alt спільно з клавішею виділеного символу.

Наприклад, якщо у вашому додатку є кнопка виконання якоїсь операції, ви можете задати її властивість Caption рівним "& Start". На кнопці цей напис буде мати вигляд "Start". І якщо користувач натисне клавіші Alt + S, то це буде еквівалентно клацанню на кнопці.

Основна подія будь кнопки - OnClick, що виникає при натисканні на ній. Саме в обробнику цієї події записуються оператори, які повинні виконуватися при клацанні користувача на кнопці. Крім цього є ще ряд подій, пов'язаних з різними маніпуляціями клавішами і кнопками миші. Писати обробник події OnClick треба, якщо ви не пов'язуєте властивістю Action дану кнопку з якимось дією.

Властивість Cancel, якщо встановити його в true, визначає, що натискання користувачем клавіші Esc буде еквівалентно клацанню на даній кнопці. Ця властивість доцільно ставити рівним true для кнопок Скасувати в різних діалогових вікнах, щоб можна було вийти з діалогу, клікнувши на цю кнопку або натиснувши клавішу Esc.

Властивість Default, якщо його встановити в true, визначає, що натискання користувачем клавіші введення Enter буде еквівалентно натисканню на дану кнопку, навіть якщо дана кнопка в цей момент не перебуває у фокусі. Правда, це спрацює, якщо у фокусі знаходиться якийсь віконний компонент. Якщо ж у момент натискання Enter у фокусі знаходиться інша кнопка, то все-таки спрацює саме кнопка у фокусі. Якщо у декількох кнопок на формі властивість Default задано рівним true, то при натисканні Enter спрацює та з них, яка знаходиться раніше в послідовності табуляції.

if ( (Кеу == 'С') || (Кеу == 'з'))-> Click ();

Якщо користувач ввів символ "С" або "з", то в результаті буде виконаний обробник клацання кнопки Button1.

4. Edit

Компонент Edit призначений для введення тексту. Розташований він на вкладці Standard Палітри компонентів:

Основна його властивість - це Text. Воно дозволяє читати і записувати деякий текст в Edit. Зверніть увагу, що ця властивість має строковий тип (вірніше тип AnsiString, але зараз це уточнення не настільки важливо). Це означає, що якщо користувач вводить в edit деяке число, то необхідно додаткове перетворення. Робиться це пріблізітетльно так:

int z = StrToInt (Edit1-> Text);

Крім функції StrToInt є обернена до неї IntToStr. Вони переводять рядок в ціле число і ціле число в рядок відповідно. Крім цієї пари функцій є пара StrToFloat і FloatToStr, котрі працюють з речовими числами.

Основна подія для edit'а - це Change. Виникає при зміні властивості Text.

Крім того, часто використовуються такі події як KeyPress (виникає при введенні кожного символу), KeyDown і KeyUp (виникають при натисканні та відпусканні клавіші).

3.3 Структура програми з описом функцій складових частин і зв'язків між ними

Структура програми являє собою набір функцій. Наша програми містить 5 функцій.

.void __fastcall TForm1:: FormCreate (TObject *Sender)

Стандартна функція середовиша Borland C++ Builder. Під час виконання цієї функції відбувається створення обєктів програми і початок відображення форми для взаємодії з користувачем. Тут ми описуємо два методи->DataSet->Active=true; - активуємо зв'язок програми з зовнішнім файлом->Height=460; - задаємо висоту вікна програми

.void __fastcall TForm1:: Button1Click (TObject *Sender)

Функція викликається шляхом натиснення клавішою миші на кнопку Пошук, розміщеної у вікні програми. Під час виконання цієї функції ми здійснюємо збільшення висоти вікна і відображаємо додаткові елементи, необхідні для виконання наступної функції.

.void __fastcall TForm1:: Button4Click (TObject *Sender)

Функція активізується шляхом натиснення клавішою миші на кнопку Знайти, розміщеної у вікні програми. Під час виконання даної функції відбувається виконання SQL запита за допомогою компонента ADOQuery бібліотеки ADO.

.void __fastcall TForm1:: Button3Click (TObject *Sender)

Ця функція повертає початкові розміри вікна і скриває додаткові компоненти.

.void __fastcall TForm1:: Button2Click (TObject *Sender)

Функція закриває вікно програми і припиняє виконання алгоритму

3.4 Зв'язок програми з іншими програмами

Програма не має зв'язки з іншими програмами.

4. Необхідні технічні засоби

4.1 Типи комп'ютерів та пристроїв, що використовуються при роботі програми

При роботі програми використовується IBM-сумісний комп'ютер. Будь-яких інших специфічних чи додаткових пристроїв програма не потребує

5. Виклик і завантаження

5.1 Способи виклику програми

Виклик програми виконується завантаженням на виконання файлу Project1. exe

5.2 Адреса завантаження програми

Адреса завантаження визначається операційною системою автоматично.

5.3 Відомості про використання оперативної пам'яті

Програма при роботі не ініціює запити на виділення оперативної памяті, крім тої, що виділена їй для роботи операційною системою.

5.4 Обсяг програми

Файл Project1. cpp має обсяг 4 Кб, файл Project1. exe - 31 Кб

6. Вхідні дані

6.1 Характер вхідних даних

Вхідні дані для роботи програми являють дві цілочисельні матриці

6.2 Організація вхідних даних

Вхідні дані організовуються у вигляді матриць чисел.

6.3 Попередня підготовка вхідних даних

Попередня підготовка вхідних даних не обовязкова.

7. Вихідні дані

7.1 Характер вихідних даних

Вихідними даними є обчислена вихідна матриця чисел

7.2 Організація вихідних даних

Вихідні дані організовані у вигляді цілочисельної матриці

7.3 Формат, описання та спосіб кодування даних

Текстові повідомлення, що виводяться на екран.

8. Опис програми і тестування програми

Після програмування нашого проекту його необхідно відкомпілювати. Для цього натискаємо клавішу F9. Якщо програма не містить помилок то компілятор видасть повідомлення про успішне завершення і запустить наш проект на виконання. Тут ми вже зможемо протестувати створену програму. Тестування повинне забезпечити перевірку працездатності функцій для всіх варіантів вхідних даних.

Тестування програмного забезпечення (англ. <https://uk.wikipedia.org/wiki/%D0%90%D0%BD%D0%B3%D0%BB%D1%96%D0%B9%D1%81%D1%8C%D0%BA%D0%B0_%D0%BC%D0%BE%D0%B2%D0%B0> Software Testing) - це процес технічного дослідження, призначений для виявлення інформації про якість продукту відносно контексту, в якому він має використовуватись. Техніка тестування також включає як процес пошуку помилок <https://uk.wikipedia.org/wiki/%D0%91%D0%B0%D2%91> або інших дефектів, так і випробування програмних складових з метою оцінки. Може оцінюватись:

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

·правильна відповідь для усіх можливих вхідних даних

·виконання функцій за прийнятний час

·практичність

·сумісність з програмним забезпеченням та операційними системами

·відповідність задачам замовника.

Оскільки число можливих тестів навіть для нескладних програмних компонент практично нескінченне, тому стратегія тестування полягає в тому, щоб провести всі можливі тести з урахуванням наявного часу та ресурсів. Як результат програмне забезпечення (ПЗ) тестується стандартним виконанням програми з метою виявлення баґів <https://uk.wikipedia.org/wiki/%D0%91%D0%B0%D2%91> (помилок або інших дефектів).

Тестування ПЗ може надавати об'єктивну, незалежну інформацію про якість ПЗ, ризики відмови, як для користувачів так і для замовників.

Тестування може проводитись, як тільки створено виконуваний код (навіть частково завершено). Процес розробки <https://uk.wikipedia.org/wiki/%D0%9C%D0%B5%D1%82%D0%BE%D0%B4%D0%BE%D0%BB%D0%BE%D0%B3%D1%96%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F> зазвичай передбачає коли та як буде відбуватися тестування. Наприклад, при поетапному процесі, більшість тестів відбувається після визначення системних вимог і тоді вони реалізуються в тестових програмах. На противагу цьому, відповідно до вимог гнучкої розробки ПЗ <https://uk.wikipedia.org/wiki/%D0%93%D0%BD%D1%83%D1%87%D0%BA%D0%B0_%D1%80%D0%BE%D0%B7%D1%80%D0%BE%D0%B1%D0%BA%D0%B0_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B7%D0%B0%D0%B1%D0%B5%D0%B7%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%BD%D1%8F>, програмування і тестування часто відбувається одночасно.

Тестування - це одна з технік контролю якості, що включає в себе

·Планування робіт (Test Management)

·Проектування тестів (Test Design)

·Виконання тестування (Test Execution)

·Аналіз отриманих результатів (Test Analysis).

Верифікація (Verification) <https://uk.wikipedia.org/wiki/%D0%92%D0%B5%D1%80%D0%B8%D1%84%D1%96%D0%BA%D0%B0%D1%86%D1%96%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B7%D0%B0%D0%B1%D0%B5%D0%B7%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%BD%D1%8F> - це процес оцінки системи або її компонентів з метою визначити чи задовольняють результати поточного етапу розробки умовам, сформованим на початку цього етапу. Тобто чи виконуються цілі, терміни, завдання з розробки проекту, визначені на початку поточної фази. Валідація (Validation) <https://uk.wikipedia.org/wiki/%D0%92%D0%B0%D0%BB%D1%96%D0%B4%D0%B0%D1%86%D1%96%D1%8F_%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BD%D0%BE%D0%B3%D0%BE_%D0%B7%D0%B0%D0%B1%D0%B5%D0%B7%D0%BF%D0%B5%D1%87%D0%B5%D0%BD%D0%BD%D1%8F> - це визначення відповідності розроблюваного програмного забезпечення між очікуваннями і потребами користувача, вимогам до системи.

План Тестування (Test Plan) - це документ, що описує весь обсяг робіт з тестування, починаючи з опису об'єкта, стратегії, розкладу, критеріїв початку і закінчення тестування, до необхідного в процесі роботи обладнання, спеціальних знань, а також оцінки ризиків з варіантами їх вирішення.

Тест дизайн (Test Design) - це етап процесу тестування програмного забезпечення, на якому проектуються і створюються тестові випадки (тест кейси), відповідно до визначених раніше критеріями якості та цілями тестування.

Тестовий випадок (Test Case) - це документ, що описує сукупність кроків, конкретних умов і параметрів, необхідних для перевірки реалізації тестованої функції або її частини.

Тестове Покриття (Test Coverage) - це одна з метрик оцінки якості тестування, що представляє із себе щільність покриття тестами вимог або коду, що виконується.

Деталізація Тест Кейсів (Test Case Specification) - це рівень деталізації опису тестових кроків і необхідного результату, при якому забезпечується розумне співвідношення часу проходження до тестового покриття.

Час Проходження Тест Кейса (Test Case Pass Time) - це час від початку проходження кроків тест кейса до отримання результату тесту.

Отже перейдемо до безпосередньої перевірки нашої програми на працездатність.

Наша програма розпочинатиметься виводом на екран монітора компютера головного вікна (див рис. 8.1).

Рис. 8.1 Головне вікно програми

Після відкриття головного вікна нашої програми нам потрібно задати розмірності вхідних матриць. Після введення розмірності натискаємо кнопку Задати і програма відобразить матрицю з заданими розмірами (див. рис. 8.2)

Рис. 8.2 Задання розмірів

Далі ми можемо вводити дані в нашу матрицю вручнк, за допомогою клавіатури або ж рандомно за допомогою кнопки Заповнити. Длч прикладу скористаємось рандомним заповненням. На рисунку 8.3 зображено приклад заповнення матриць.

Рис. 8.3 Заповнення матриць

Далі ми можемо виконати три операції над матрицями. Протестуємо першу з них - додавання. Як ми знаємо для додавання матриць потрібно, щоб вони були одинакового розміру. Так як ця умова задовільняється то програма повинна виконати додавання. Для перевірки натиснемо кнопку Додати (див. Рис. 8.4.)

Рис. 8.4 Вікно Додавання

Як видно з вище показаного рисунку програма виконала додавання. Але потрібно також перевірити що буде, якщо розміри матриць не співпадають (див. рис. 8.5)

Рис. 8.5 Помилка

Програма видала повідомлення про те, що додавання неможливе. Далі протестуємо наступну операцію порівняння. Вона виконується аналогічним чином, що і попередня (див. рис. 8.6)

Рис. 8.6 Вікно Порівняння

Наступним етапом тестування є тестування операції множення. Для цієї операції є свої особливості:

·Множення матриці А на матрицю В має сенс у тому випадку, коли число стовпців матриці А збігається з числом рядків у матриці В.

·В результаті множення двох прямокутних матриць виходить матриця, що містить стільки рядків, скільки рядків було в першій матриці і стільки стовпців, скільки стовпців було у другій матриці.

Отже давайте протестуємо її. (див. рис. 8.7)

Рис. 8.7 Множення матриць

Отже при правильно заданих параметрах програма працює. Але потрібно перевірити і при неправильно заданих параметрах (див. рис. 8.8)

Рис. 8.8 Помилка

Після завершення роботи з програмою натискаємо на хрестик в правому верхньому куті робочого вікна.

Провівши тестування створеної програми можна зробити висновок, що програма працює без помилок і забезпечує повноцінну роботу при будь-яких вхідних даних. А також здійснює обробку даних без збоїв.

Висновок

В ході виконання завдання курсової роботи мною було розроблено проект програми автоматизації роботи з матрицями. В програмі реалізовано наступні операції роботи над матрицями:

Додавання

Множення

Порівняння

Програма повноцінно працює при будь-яких вхідних даних і може бути впроваджена у виробництво і застосовуватись навчальними закладами або студентами, для полегшення обчислень.

Список використаної літератури

1.Інформатика. Мова програмування С++. Спецкурс.10-12 класи. Навчальний посібник / Лєхан С.А. - Шепетівка, "Аспект", 2007 - 160 с.

2.Обєтно-орієнтоване програмування мовою С++, Навчальний посібник, Т. Є. Рак, Львів, 2011 - 401с

.Борис Пахомов - C C++ и MS Visual С++ 2010 для начинающих - БХВ-Петербург, 2011 - 736 с.

4.Сайт: www.google.com <#"center">Додатк

Додаток А

// ---------------------------------------------------------------------------

#include <vcl. h>

#pragma hdrstop

#include "Unit1. h"

// ---------------------------------------------------------------------------

#pragma package (smart_init)

#pragma resource "*. dfm"*Form1;

// ---------------------------------------------------------------------------

__fastcall TForm1:: TForm1 (TComponent* Owner)

: TForm (Owner)

{

}

// ---------------------------------------------------------------------------__fastcall TForm1:: Button1Click (TObject *Sender)

{->RowCount=StrToInt (Edit1->Text);->ColCount=StrToInt (Edit2->Text);->RowCount=StrToInt (Edit3->Text);->ColCount=StrToInt (Edit4->Text);

}

// ---------------------------------------------------------------------------__fastcall TForm1:: Button3Click (TObject *Sender)

{( (StringGrid1->RowCount== StringGrid2->RowCount) && (StringGrid1->ColCount==StringGrid2->ColCount))

{->Width=810;->Visible=True;->Visible=True;->RowCount=StringGrid1->RowCount;->ColCount=StringGrid1->ColCount;(int i=0; i<StringGrid3->ColCount; i++)

{(int j=0; j<StringGrid3->RowCount; j++)

{->Cells [i] [j] =IntToStr (StrToInt (StringGrid1->Cells [i] [j]) +StrToInt (StringGrid2->Cells [i] [j]));

}

}

}

{("Ці матриці не можна додати");

}

// ---------------------------------------------------------------------------__fastcall TForm1:: FormCreate (TObject *Sender)

{->Width=385;

}

// ---------------------------------------------------------------------------__fastcall TForm1:: Button5Click (TObject *Sender)

{r;( (StringGrid1->RowCount== StringGrid2->RowCount) && (StringGrid1->ColCount==StringGrid2->ColCount))

{->RowCount=StringGrid1->RowCount;->ColCount=StringGrid1->ColCount;(int i=0; i<StringGrid3->ColCount; i++)

{=1;(int j=0; j<StringGrid3->RowCount; j++)

{(! (StrToInt (StringGrid1->Cells [i] [j]) ==StrToInt (StringGrid2->Cells [i] [j])))

{=0;;

}

}

}(r==1)("Матриці рівні");("Матриці не рівні");

}

}

// ---------------------------------------------------------------------------__fastcall TForm1:: Button4Click (TObject *Sender)

{(StringGrid1->ColCount== StringGrid2->RowCount)

{->Width=810;->Visible=True;->Visible=True;->RowCount=StringGrid1->RowCount;->ColCount=StringGrid2->ColCount;(int i=0; i<StringGrid3->RowCount; i++) {(int l=0; l< StringGrid3->ColCount; l++) {s = 0;(int j=0; j<StringGrid1->ColCount; j++) {+= StrToInt (StringGrid2->Cells [i] [j]) *StrToInt (StringGrid1->Cells [j] [l]);

}->Cells [i] [l] =IntToStr (s);

}

}

}

{("Ці матриці не можна помножити");

}

}

// ---------------------------------------------------------------------------__fastcall TForm1:: Button2Click (TObject *Sender)

{(int i=0; i<StringGrid1->ColCount; i++)

{(int j=0; j<StringGrid1->RowCount; j++)

{->Cells [i] [j] =rand () %10;

}

}(int i=0; i<StringGrid2->ColCount; i++)

{(int j=0; j<StringGrid2->RowCount; j++)

{->Cells [i] [j] =rand () %10;

}

}

}

// ---------------------------------------------------------------------------

Похожие работы

 
  • Майстер функцій, його призначення та порядок роботи з ним
    Саме по цього дана програма як не можна краще підходить для відстеження інформації про що...
    Наприклад, у множину вбудованих функцій входять функції для роботи з матрицями : обчислення добутку матриць , оберненої матриці . Можна записати і свої власні...
    СкачатьСкачать документ Читать onlineЧитать online
  • Розробка засобів моделювання програмного продукту
    Також програма забезпечує додаткові функції роботи з матрицями , такі як знаходження визначника та зворотної матриці . Це буде досягатися за допомогою сучасних різних технологій в галузі ІТ-технологій.
    СкачатьСкачать документ Читать onlineЧитать online
  • Розв’язування економетричних задач
    2. Ознайомитися з функціональними можливостями професійних пакетів прикладних програм статистичної обробки даних STATGRAFICS, SPSS. Хід роботи .
    ...функції ТРАНСП, МУМНОЖ, МОБОР, виконати дії з матрицями (завдання 1.2). Вихідні дані для розрахунків
    СкачатьСкачать документ Читать onlineЧитать online
  • Розрахунок норм вектору
    Модулі дозволяють використання функцій, процедур й типів для роботи з матрицями і векторами у інших програмах . Отже модульне програмування додає універсальності.
    СкачатьСкачать документ Читать onlineЧитать online
  • Розробка програми для алгоритму знаходження власних векторів і власних...
    Вже зараз є потреба у вирішенні систем лінійних алгебраїчних рівнянь з матрицями повного заповнення порядку декількох тисяч.
    1. Постановка задачі. Завдання даної курсової роботи полягає в розробці програми для алгоритму знаходження власних...
    СкачатьСкачать документ Читать onlineЧитать online
  • Калькулятор для матриць
    ... матриць А і В однакових розмірів, називається третя матриця С = тих же розмірів, яка в сумі з матрицею В дає А . Добутком матиці А = на матрицю В...
    Мета роботи – створення програми за допомогою якої можна розв’язувати деякі задачі лінійної...
    СкачатьСкачать документ Читать onlineЧитать online
  • Економічна інформатика
    ЗАВДАННЯ 5. Обчислення з матрицями в електронних таблицях. ЗАВДАННЯ 6. Оптимальне планування.
    На неї написати: назву дисципліни, номер контрольної роботи , прізвище та ініціали студента, його шифр, номер варіанту.
    СкачатьСкачать документ Читать onlineЧитать online

Не нашел материала для курсовой или диплома?
Пишем качественные работы
Без плагиата!