Professional Documents
Culture Documents
Курсова
Курсова
Вступ.........................................................................................................................4
РОЗДІЛ 1 Постановка задачі..................................................................................6
1.1 Уточнена постановка задачі на розробку програмного забезпечення.......6
РОЗДІЛ 2 Розробка програмного продукту..........................................................7
2.1 Метод розв’язку задачі...................................................................................7
2.2 Алгоритм розв’язку задачі...........................................................................10
РОЗДІЛ 3 Опис розробленого програмного продукту.......................................14
3.1 Опис головних структур і змінних програми............................................14
3.2. Опис головних функцій програми.............................................................15
3.3. Опис інтерфейсу..........................................................................................16
3.4. Результати роботи програмного продукту................................................17
ВИСНОВКИ...........................................................................................................18
СПИСОК ЛІТЕРАТУРИ.......................................................................................19
Додаток А Текст програми
Н.контр.
Затв. К 4-1
Вступ
Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
Сі увібрав у нього найкращі якості даної мови, а завдяки розвитку,
оновленню та поліпшенню інструментів даної мови можна вирішити
практично будь-які завдання, що стоять перед програмістом.
У світлі розвитку інформаційних технологій все більше потрібні
грамотні фахівці в галузі об'єктно-орієнтованого програмування. Але навіть з
розвитком технологій виростити грамотного спеціаліста в галузі ООП мов
досить трудомісткий процес і вивчити самостійно вивчити С++ представляє
велику проблему.
Метою роботи є створення динамічної матриці цілих чисел та створення
функцій для роботи з даними програми.
Актуальність вивчення основ С++ завжди грає велику роль у навчанні
ООП, так як на даному етапі закладатися базові знання за основними
напрямками ООП без яких не вийде якісного розуміння програмування в
цілому.
Об'єкт дослідження: можливості об'єктно-орієнтованої мови
програмування С++ полягає у дослідженні можливостей мови програмування
С++ при створенні навчальних програм.
Завданнями є:
1) Вивчить основи мови програмування С++;
2) Написати функції для вирішення задач.
Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
РОЗДІЛ 1 Постановка задачі
1.1 Уточнена постановка задачі на розробку програмного
забезпечення
Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
РОЗДІЛ 2 Розробка програмного продукту
2.1 Метод розв’язку задачі
Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
#include це директива «препроцесору», яка повідомляє компілятору
помістити код із заголовного файлу iostreamв програму перед тим як
створити виконуваний файл, яка повідомляє компілятору помістити код із
заголовного файлу iostream в програму перед тим як створити виконуваний
файл.
Підключивши до програми заголовний файл, отримуємо доступ до
безлічі різних функцій. Наприклад, оператору потрібно ioistream. Рядок using
namespace std; повідомляє компілятору, що потрібно використовувати групу
функцій, які є частиною стандартної бібліотеки std. У тому числі цей рядок
дозволяє програмі використовувати оператори, такі як cout. Крапка з комою є
частиною синтаксису C++. Вона повідомляє компілятору, що це кінець
команди.
Наступний важливий рядок програми int main (). Цей рядок повідомляє
компілятору, що є функція з ім'ям main, і що функція повертає ціле число
типу int. Фігурні дужки { і } сигналізують про початок {і кінці} функції.
Фігурні дужки використовуються і в інших блоках коду, але позначають
завжди одне - початок і кінець блоку, відповідно. Він використовує символи,
відомі як «оператор зсуву», щоб вказати, що відправляється до виведення на
екран. Результатом виклику функції cout << є відображення тексту на екрані.
Послідовність \n фактично розглядається як єдиний символ, який позначає
новий рядок. Символ \n переміщає курсор на екрані на наступний рядок.
Точка з комою, додається до кінця, після кожного оператора С++.
Наступна команда cin.get(). Це ще один виклик функції, яка зчитує дані
із вхідного потоку даних та очікує натискання клавіші ENTER. Ця команда
зберігає консольне вікно від закриття, доки не буде натиснута клавіша
ENTER. Це дає час для того, щоб переглянути результат виконання
програми.
Після досягнення кінця головної функції (закриває фігурна дужка),
програма поверне значення 0 для операційної системи. Це значення, що
Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
повертається, є важливим, оскільки, проаналізувавши його, ОС може судити
про те, успішно завершилася програма чи ні. Значення 0, що повертається,
означає успіх і повертається автоматично (але тільки для типу даних int, інші
функції, вимагають вручну повертати значення).
Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
2.2 Алгоритм розв’язку задачі
Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
алгоритму є механічним і не вимагає додаткових інструкцій або інформації
про задачу, що вирішується.
Ефективність (кінцевість) - алгоритм повинен призводити до розв'язання
задачі за кінцеве число кроків.
Масовий - алгоритм розв'язання задачі розробляється у загальному
вигляді, тобто. він має бути застосовним до класу завдань, що відрізняються
лише вихідними даними. У цьому випадку вихідні дані можуть бути вибрані
з діапазону, який називається областю дії алгоритму.
Наприклад, іноді алгоритм визначається на основі цих властивостей:
"Алгоритм - це послідовність математичних, логічних або комбінованих
операцій, що відрізняються детермінованістю, масою та орієнтацією і
призводять до вирішення всіх завдань даного класу за кінцеве число кроків".
Ця інтерпретація терміна «алгоритм» є неповною та неточною.
По-перше, неправильно пов'язувати алгоритм із розв'язанням проблеми.
Алгоритм може взагалі вирішити проблему.
По-друге, термін «маса» відноситься не до алгоритмів як таких, а до
математичних методів загалом. Вирішення завдань, поставлених практикою
математичних методів, засноване на абстракції — привласнюється набір
суттєвих ознак, характерних для певного набору явищ, і будуємо на основі
цих ознак математичну модель, з огляду на незначні ознаки кожного
конкретного явища. У цьому сенсі кожна математична модель має
властивість маси. Якщо вирішити задачу в рамках побудованої моделі, а
рішення представляємо як алгоритм, то рішення буде масовим завдяки
природі математичних методів.
Перше правило у тому, що у створенні алгоритму необхідно спочатку
вказати набір об'єктів, із якими алгоритм працюватиме. Формалізоване
(закодоване) уявлення цих об'єктів називається даними. Алгоритм починає
працювати з певним набором даних, званим Input, й у його роботи видає дані,
звані Output. Таким чином, алгоритм перетворює вхідні дані у вихідні. Це
Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
дозволяє відразу відокремити алгоритми від «методів» і «процедур». Поки ми
не маємо формалізованих вхідних даних, ми не можемо створити алгоритм.
Друге правило у тому, що алгоритму необхідна пам'ять для роботи.
Пам'ять містить вхідні дані, з якими починає працювати алгоритм, проміжні
дані та вихідні дані, що є результатом роботи алгоритму. Пам'ять дискретна,
тобто складається з окремих осередків. Іменована комірка пам'яті називається
змінною. Теоретично алгоритмів обсяг пам'яті не обмежений, тобто
передбачається, що можна надати алгоритму будь-який обсяг пам'яті,
необхідний його роботи. Ці два правила не розглядаються у школі «теорії
алгоритмів». У той самий час практична робота з алгоритмами
(програмування) починається з цих правил.
У мовах програмування виділення пам'яті здійснюється декларативними
операторами (операторами опису змінних). У мові Basic описані в повному
обсязі змінні, зазвичай описують лише масиви. Але при запуску програми
транслятор мови аналізує всі ідентифікатори в тексті програми і виділяє
пам'ять для відповідних змінних.
Третє правило – розсуд. Алгоритм складається з окремих кроків (дій,
операцій, команд). Багато кроків, у тому числі алгоритм природно складено.
Четверте правило - ув'язнення. Після кожного кроку ви повинні вказати,
за яким кроком слід наступний, або дати команду зупинки. П'яте правило –
конвергенція (ефективність). Алгоритм повинен припинити працювати після
остаточної кількості кроків. І тут необхідно зазначити, що слід вважати
результатом роботи алгоритму.
Алгоритм роботи програми «Динамічна матриця» зображено на рисунку
2.1.
Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
Початок
Оголошення змінних,
функцій
Меню
0
1
Функція
1
1 0
Введення
елементів Функція
2
1 0
Кількість
елементів Функці
я3
0
1
Сума елементів Функці
головної діагоналі я4
Виведення Продовжи
елементів ти роботу?
1
Вихід з
програми
Кінець
Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
РОЗДІЛ 3 Опис розробленого програмного продукту
3.1 Опис головних структур і змінних програми
Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
- пам‘ять виділяється в міру необхідності програмним шляхом;
- немає зайвих витрат невикористаної пам‘яті. Виділяється стільки
пам‘яті скільки потрібно і коли потрібно;
- можна виділяти пам‘ять для масивів інформації, розмір яких наперед
невідомий. Визначення розміру масиву формується у процесі виконання
програми;
- зручно здійснювати перерозподіл пам‘яті. Або іншими словами, зручно
виділяти новий фрагмент для того самого масиву, якщо потрібно
виділити додаткову пам‘ять або звільнити непотрібну;
- при статичному способі виділення пам‘яті важко перерозподіляти
пам‘ять для змінної-масиву, оскільки вона вже виділена фіксовано. У
випадку динамічного виділення, це здійснюється легко і зручно.
Переваги статичного способу виділення пам‘яті:
- статичне (фіксоване) виділення пам‘яті краще використовувати, коли
розмір масиву інформації наперед відомий і є незмінний протягом
виконання усієї програми;
- статичне виділення пам‘яті не потребує додаткових операцій
звільнення з допомогою оператора delete. Звідси випливає зменшення
помилок програмування. Кожному оператору new має відповідати
оператор delete;
- природність (натуральність) представлення програмного коду, що
оперує статичними масивами.
В залежності від поставленої задачі, програміст має вміти правильно
визначити, який спосіб виділення пам‘яті підходить для тієї чи іншої змінної
(масиву).
Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
рядків та чотирьох стовпців. Рядки в ньому вважаються першим виміром, а
стовпці другим. Для доступу до даних, що зберігаються в цьому масиві,
необхідно вказати ім'я масиву та два індекси, перший повинен відповідати
номеру, а другий номер стовпця, в якому зберігається необхідний елемент.
Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
3.2. Опис головних функцій програми
Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
int i, j, n;
Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
Оператор if - це умовний оператор, який використовується для
організації розгалужених алгоритмів. Підчас виконання оператора if спочатку
обчислюється логічний вираз. Якщо результат не дорівнює нулю, то
виконується перший оператор, який записаний після виразу, якщо результат
дорівнює нулю – виконується другий оператор, який записаний за ключовим
словом else.
Оператор for – це оператор вибору, з допомогою якого також
відбувається перебір всіх елементів у списку по циклу.
for (i=0; i<n; i++)
В дужках задаються початковий i=0 і кінцевий i<n елемент для циклу.
При застосуванні операції ++ до змінної просто додається одиниця. Перша
частина оператора for не обов'язково повинна бути описом, вона може
бути будь-яким оператором.
Дуже часто в процесі написання програми потрібно писати довгі if-else
конструкції, наприклад, коли ми отримуємо будь-який ключ від користувача;
якщо ви пишете гру, то доведеться перевіряти на яку кнопку натиснув
гравець (вправо, вліво, пробіл тощо).
Для зручного оформлення можна використати конструкції за
допомогою switch case.
Конструкція switch-case - це зручна заміна довгої if-else конструкції,
яка порівнює змінну з декількома константними значеннями, наприклад, int
або char.
Синтаксис
switch (<змінна>) {
case значення1:
Виконати якщо <змінна> == значення1
break;
case значення2:
Виконати якщо <змінна> == значення2
Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
break;
...
default:
виконати, якщо жоден варіант не підійшов
break;
}
Змінна дужка порівнюється зі значеннями, описаними після ключового
слова case. Після двокрапки знаходиться код, який буде виконаний у разі
якщо змінна дорівнювала поточному значенню. break необхідний для того,
щоб перервати виконання switch.
В програмі передбачено 4 оператора case: для реалізації поставленого
на початку роботи завдання:
switch (menu)
{
- введення елементів динамічної матриці
case 1:
{ vved_MAS(MAS, n); vived_MAS(MAS, n);
}; break;
Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
В програмі курсової роботи «Динамічна матриця» створені функції
користувача:
- для введення даних матриці
void vved_MAS(int** MAS, int n)
{
std::cout << "\nВведення елементiв матрицi\n\n\n";
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
{
std::cout << "\nВведiть елемент " << "[" << i << "]" << "[" <<
j << "]=";
std:cin >> MAS[i][j];
//std::cout << MAS[i][j];
}
std::cout << "________________________________________________";
std::cout << "\nЕлементи масиву успiшно введено\n\n\n";
}
Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
for (int j = 0; j < n; j++)
Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
3.3. Опис інтерфейсу
Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
Рисунок 3.4 – Введення елементів динамічної матриці
Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
Рисунок 3.6 – Знаходження кількості елементів у заданому діапазоні
Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
Рисунок 3.8 – Введення елементів динамічної матриці
Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
3.4. Результати роботи програмного продукту
Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
Висновки
Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
Список літератури
Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
Додаток А
(Лістинг програми)
///Курсова робота «Обробка матриці» студента групи К-4-1 Гречки Дениса
#include <iostream>
int i, j, n;
std::cout << "\n Вкажiть розмiр матрицi n x n n=";
std::cin >> n;
int** MAS = new int* [n];
for (i = 0; i < n; i++)
MAS[i] = new int[n];
Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
label:
std::cout << " --------------------------------------------------------\n";
case 1:
{ vved_MAS(MAS, n); vived_MAS(MAS, n);
}; break;
case 2: {
}; break;
Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
default: std::cout << "Ви помилились……\n";
}
int sum = 0;
for (int i = 0; i < n; i++)
Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата
//Функція користувача визначення елементи діапазону
void kilk_MAS(int** MAS, int n)
{
int kilk_ = 0;
for (int i = 0; i < n; i++)
for (int j = 0; j < n; j++)
}
//виведення матриці
void vived_MAS(int** MAS, int n)
{
cout << "Елементи матрицi\n";
for (int i = 0; i < n; i++)
{
for (int j = 0; j < n; j++)
{
std::cout << "[" << i << "]" << "[" << j << "]=" << MAS[i]
[j]<<"\n";
}
}
Арк.
ВСП РФК КНЕУ СП КР 000 005 ПЗ
Вим Арк. № докум. Підпис Дата