
- •1 Структура курсової роботи
- •2 Оформлення пояснювальної записки
- •2.9 Додатки
- •3 План виконання курсової роботи
- •4 Основні етапи виконання курсової роботи
- •4.1.4.1 Вибір мови та середовища програмування
- •Додаток 1
- •Додаток 2
- •Додаток 6
- •Додаток 3
- •Додаток 4
- •Список літератури
- •Видано________________________
- •Додаток 5
4.1.4.1 Вибір мови та середовища програмування
Мова та середовище програмування можуть бути вказані в завданні на курсову роботу. В іншому разі необхідно здійснити їхній вибір.
Вибір мови та середовища програмування повинен бути обґрунтований, виходячи з характеру (природи, типу, виду) розв’язуваної задачі (навчальна, дослідницька, розрахункова і т.д.), а також з наявності в мові структур і операторів, що виконують типову для даної задачі роботу, трудомісткості обчислень; необхідності одержання швидкодіючої програми з невеликим об'ємом використовуваної пам'яті, з наявності відповідного програмного забезпечення у вигляді машинних бібліотек стандартних процедур і функцій (підпрограм); особливості трансляторів, операційних систем, програмних засобів підтримки периферійного обладнання; зручності середовища програмування для написання тексту програми, його редагування, налагодження, тестування програми та одержання (в разі необхідності) завантажуваних для виконання файлів і т.д.
4.1.4.2 Методика розробки програми
По суті програма являє собою запис алгоритму мовою програмування, тому процес написання програми - це продовження розробки алгоритму з подальшою деталізацією його кроків.
При розробці програми рекомендується використовувати метод структурного програмування.
Основна ідея структурного програмування полягає в систематичному застосуванні принципу спадного проектування та в обмеженні набору допустимих у програмі конструкцій. Спадне проектування полягає в послідовній розробці рівнів визначень програми, кожен з яких являє собою деталізацію попереднього. Таким чином, кожний етап - це покрокова легалізація задачі. У результаті підстановки цих визначень одне в одне одержують детальний опис програми. Застосування даної методики потребує ретельної проробки ранніх етапів роботи, оскільки наслідки помилок, допущених на ранніх етапах, обов'язково впливають на подальші етапи, часто зберігаючись у готовій програмі.
При розробці великих програм необхідно використовувати принцип модульності, який логічно доповнює ідею структурування програм. У відповідності з цим принципом програма ділиться на декілька незалежно оформлених частин - модулів, зв'язок між якими може бути ієрархічним або має іншу, більш складну структуру й тип (динамічні, оверлейні).
Модульна організація програми має такі переваги:
- дозволяє виконувати . розробку великих програм паралельно декількома виконавцями, вимагаючи тільки узгодження зовнішніх зв'язків програм;
- полегшує внесення змін у програму;
- забезпечує живучість та мобільність великих програм;
- зменшує витрати на тестування та налагодження програми, забезпечуючи виявлення основної маси помилок.
Другий аспект структурного програмування полягає в цілеспрямованому обмеженні конструкцій (базових структур), що використовуються при створенні програм. Об'єднання та суперпозиція цих конструкцій забезпечують побудову будь-якої програми. Такий набір базових структур повинен утворювати алгоритмічний базис мови, тобто бути достатнім для опису будь-якого алгоритму. Найчастіше в якості базових структур використовуються оператори присвоєння, умовний оператор та оператор циклу. Обмежений набір базових структур у цьому разі скорочує кількість помилок у програмі за рахунок відмови від застосування складних структур з недостатньо ясними ефективністю використання та властивостями, а також за рахунок покращення зовнішнього вигляду програм.
4.1.4.3 Стиль програмування
Щоб оволодіти мистецтвом програмування на будь-якій мові, недостатньо вивчити її граматику. Метою є не лише створення програми, а створення хорошої програми. Добре написані програми короткі, елегантні, чіткі і, що найголовніше, вони працюють. Погано написані програми довгі, безладні звичайно не працюють.
Які ж ознаки хорошої програми?
Відповідь на це запитання не є тривіальною, оскільки існують різні критерії якості програм.
Наступні критерії є загальноприйнятими для хорошої програми:
- Правильність. В першу чергу, мас бути правильною, тобто повинна виконувати те, для чого була створена. Ця вимога є начебто очевидна, виключно важлива, бо правильність саме складних програм досягається не дуже часто.
- Ефективність. Оптимальне використання машинного часу, пам'яті комп'ютера.
- Простота, читабельність. Не повинна бути занадто складною, - щоб її легко було читати й розуміти. Ці самі вимоги стосуються її організації та розміщення тексту
- Зручність модифікації. Повинна легко модифікуватись та розширюватись. Простота та модульна організація програми полегшують внесення змін до неї.
- Живучість. Має бути "живучою", тобто не відмовляти, якщо користувач введе в неї невірні або непередбачені дані. У разі подібних помилок програма повинна зберігати працездатність та повідомляти про помилки.
- Документованість. Повинна бути добро документована. Мінімум документації - лістінг з достатньо детальними коментарями. Програма складається з орієнтиром на те, щоб її змогла прочитати в першу чергу людина, а не машина; передає логіку та структуру алгоритму настільки, наскільки це можливо. Пам'ятайте: програми читаються людиною.
Оздоблення пояснювальними коментарями, що значно полегшує налагодження програми, оскільки вони містять додаткову інформацію щодо роботи з нею.
Гарні коментарі написати нелегко. Оскільки мета коментарів – полегшити розуміння програми, їх необхідно добре продумати та проробити. Коментарії необхідні як на стадіях проектування та налагодження програми, так і на більш пізніх стадіях. Тому недоцільно вставляти коментарі після завершення роботи з програмою. Коментарі бувають трьох типів: ввідні, заголовки та пояснювальні.
Ввідні коментарі. Кожну програму або процедуру слід починати з коментарів, які пояснюють, що вона робить. Мінімальна інформація повинна містити: назву, вказівки до виклику програми та її використання, список та призначення основних змінних або масивів, вказівки до вводу - виводу, список усіх файлів, список використовуваних підпрограм, необхідний об'єм пам'яті, відомості про автора, а також дату написання програми.
Заголовки. Якщо програма дуже велика, то доцільно на її початку розміщувати заголовок у вигляді коментарів. Заголовок повинен інформувати про назву, розміщення та функцію кожного програмного модуля. Модулі мають імена або коментарі, що вказують на їхні функції.
Пояснювальні коментарі. Поясненнями необхідно супроводжувати ті частини програми, які важко зрозуміти без коментарів. Супроводжують дії, що, з погляду програміста, можуть бути не зовсім зрозумілі користувачеві програми (ця інформація завжди буде знаходитися разом з програмою). За середню норму можна вважати один рядок коментарів на десять рядків програми. Це не означає, що після кожного з десяти рядків обов'язковий один рядок коментарів. Коментувати треба кожний логічно виділений модуль програми.
Дуже важливим є зміст коментарів. Коментарі повинні містити деяку додаткову інформацію, а не перефразовувати програму, пояснювати мету групи операторів програми, а не описувати дії, що виконують ці оператори. Інакше кажучи, не має необхідності перекладати з англійської кожен оператор програми.
Про якість коментарів можна судити виходячи з того, чи є зрозумілою логіка програми тільки на підставі коментарів (без звернення до будь-якої іншої документації).
Коментарі треба розміщувати таким чином, щоб це не впливало на наочність програми.
Безумовно, коментарі мають бути правильними, наявність неправильних коментарів набагато гірша, ніж їхня відсутність.
Існує декілька методів поліпшення зручності читання програм: пропуск рядка, вставка пробілів тощо. Так, наприклад, пропуском одного рядка можна відокремлювати кожну групу логічно зв'язаних операторів, пропуском двох рядків - окремі процедури та функції. Пропуск рядків до і після коментарів допомагає виділити останні. Використання пустих рядків полегшує пошук окремих частин у програмі.
У мовах програмування пробіли дуже часто роблять довільно.
Вони доцільні в тому разі, якщо це поліпшує читабельність програми: наприклад, між елементами списку даних, до та після операцій +, -, =. Використовують їх і для вказівки на пріоритет операцій. Так, запис виразу 1 + А*В є кращим, ніж запис 1+А * В.
Робіть пробіли для покращання читабельності програми.
Важливу роль у створенні програми відіграє вибір імен для типів, змінних, типізованих, іменованих констант тощо. Імена повинні бути обрані таким чином, щоб найкраще визначити величини, які вони представляють. Якщо обмеження на довжину імені відсутні, слід використовувати імена належної довжини. Правильний вибір імен - запорука зручного читання програм. Не рекомендується вживати однакові на вигляд імена (наприклад, АХ10 та АХIO). Якщо в імена включаються цифри, краще писати їх наприкінці імені.
Наведені правила слід використовувати при виборі імен для програм, процедур, функцій та підпрограм.
У деяких мовах програмування допускається розміщення в одному рядку декількох операторів. Однак це вважається недоцільним з двох причин. По-перше, погіршується зручність читання програми, а по-друге, утруднюється використання таких засобів, як розподіл програми на фрагменти. Ще одна з причин порядкового розміщення операторів полягає в тому, що повідомлення про синтаксичну помилку завжди вказує на номер рядка. Таким чином, при розміщенні у рядку одного оператора легше знайти синтаксичну помилку.
Одного оператора в рядку достатньо.
Поліпшує зручність читання програми правильне використання дужок. Основне правило відносно цього таке: в сумнівних випадках необхідно ставити дужки, це не тільки зробить програму більш зрозумілою, але й попередить помилки, бо дужки коштують дешевше, ніж помилки.
Записуючи оператори, для вказівки на зв'язок між ними роблять однаковий відступ від початку рядка, що значно полегшує читання програми.
Введення абзацу до тексту програми сприяє більш ефективному сприйняттю її користувачем Програма повинна бути приємною для очей. Для виявлення структури даних та програми використовуйте відступи.
Програми мають тенденцію до життя та використання протягом довшого часу, ніж було заплановано, тому треба навчатися писати хорошу програму з самого початку проектування, крім того, це заощадить час при налагодженні та модифікації її.
4. 1.5 Налагодження та тестування програми.
Після введення в комп'ютер дуже рідко програма починає видавати бажані результати, оскільки спроектовані структури даних, алгоритм і програма звичайно мають помилки. Процес виявлення та виправлення всіх помилок у програмі, які були допущені на попередніх етапах розробки, а також і встановлення факту правильності роботи програми носить назву налагодження програми. Основна задача налагодження полягає в локалізації та виправлення всіх помилок при мінімальних витратах машинного часу. Оскільки це процес, дуже трудомісткий він повинен бути ретельно продуманим і спланованим.
Практично процес налагодження складається з таких основних кроків:
1. Перевірка синтаксичної правильності тексту програми.
2. Автономне налагодження частин програми.
3. Комплексне налагодження програми й алгоритму в цілому.
Синтаксичний контроль тексту програми здійснює транслятор з вхідної мови програмування, який видає на екран комп'ютера повідомлення про місце та характер формальної помилки (наприклад, порушення кількісних обмежень вхідної мови, невірне використання синтаксичних конструкцій та ін.). Після усунення всіх синтаксичних помилок необхідно перейти до пошуку та усунення семантичних й алгоритмічних.
Автономне налагодження використовується для перевірки роботи алгоритму. Налагодження складної програми суттєво спрощується при розбитті підпрограми на більш-менш незалежні частини (модулі, сегменти), оскільки мови високого рівня дозволяють транслювати та налагодити такі автономні частини окремо, до об’єднання в загальну програму.
При налагодженні частин програми спочатку перевіряються лінійні ділянки, тобто послідовність операторів мови без циклів та переходів, потім логіка, тобто вибір потрібних гілок алгоритму, коли є альтернатива, керування числом повторень у циклах, умовні й безумовні переходи тощо.
При проведенні автономного налагодження необхідно підготувати набір контрольних прикладів тестів налагодження, які є зразками для порівняння. Звичайно тести обчислюються з використанням або відповідних математичних таблиць, або калькуляторів. Підготовлені тести, будучи простими, в той же час повинні забезпечувати перевірку всіх логічних особливостей алгоритму.
Комплексне налагодження програми полягає в перевірці правильності виконання всіх її автономних частин, об`єднання в одне ціле за допомогою головної програми. При цьому перевіряються правильність виклику всіх програмних одиниць (підпрограм) та обмін даними між ними, а також операції введення/виведення інформації.
Як правило, автономне налагодження забезпечує виявлення біля 80% помилок, а витрати часу на пошук решти помилок зростають в 10 і більше разів, тому трудомісткість комплексного налагодження набагато вища, ніж автономного.
Автономне і комплексне налагодження спрощуються, якщо використовувана система програмування має набір спеціальних програм для редагування, налагодження та тестування.
Завершує комплексне налагодження розрахунок одного чи двох тестів (контрольних варіантів) задачі, що моделюються на, ЕОМ, для яких частинні розв’язки відомі або можуть бути легко прогнозовані. Головна мета тепер переконатися в повній працездатності програми та ефективності використаного методу розв'язування задачі. При цьому можуть бути виявлені такі помилки:
- невірна оцінка точності вхідних даних, проміжних та вихідних результатів;
- неадекватна (тобто така, що не відповідає фізичному розумінню) формалізація умов постановки задачі;
- неповний облік діапазону змінювання змінних.
Для знаходження помилок подібного роду рекомендується вводити непрямі перевірки або умови, яким повинні задовольняти результати розв'язування. Результати даних перевірок безпосередньо в програмі можуть не використовуватися, але повинні відображати деякі додаткові зв'язки серед шуканих величин, наприклад показувати суму не зв’язок правих частин при розв'язуванні систем лінійних алгебраїчних рівнянь, точність виконання інтегральних співвідношень при їхній чисельній реалізації тощо. Якщо такі умови не виконуються, то необхідно припинити обчислення та виконати пошук помилок в алгоритмі або чисельному методі розв'язування.
З іншого боку, використовуваний метод або алгоритм може здатися малоефективним, що виявляється у вигляді повільної збіжності до розв'язку задачі, чисельної нестійкості або поганої обумовленості розв'язку, частого звертання до зовнішніх пристроїв, повільного виводу інформації на екран монітора або друк тощо. У цьому разі необхідно розглянути шляхи їхнього покращання або оптимізації та принаймні, корінної заміни.
Результати тестів виводяться на друк у зручній для сприйняття формі та розміщуються у додатках.
4.1.6 Аналіз одержаних результатів
Завершальними етапами у виконанні курсової роботи є підготовка початкових даних задачі, виконання розрахунків та аналіз одержаних результатів.
Початкові дані до задачі готуються згідно із завданням на курсову роботу. При цьому повинні враховуватися відповідні формати вводу, достатні для забезпечення вимог щодо точності подання вхідної інформації в ЕОМ.
У деяких випадках підготовка вхідної інформації може бути пов'язана з розв'язуванням проміжних завдань (наприклад, сканування зображень, отримання даних у ході фізичних або чисельних експериментів та ін.). Тоді необхідно описати джерело вхідних даних та ті перетворення, що забезпечують формування початкової інформації для розв'язуваної задачі.
Після підготовки початкових даних до задачі виконується її розрахунок.
Отримані результати розрахунку повинні бути проаналізовані. Аналіз полягає в оцінюванні їхньої відповідності змісту задачі, у вивченні причин їхнього кількісного відхилення від розв'язку, що прогнозувався, у якісному та кількісному порівнянні з іншими результатами, відомими з літературних джерел. Результатом аналізу є формулювання висновків щодо ступеня достовірності отриманих результатів, їхньої практичної цінності та в цілому повноти виконаної курсової роботи відносно завдання. При виконанні аналізу доцільне використання наочних та зручних для сприйняття форм видачі результатів: текстів, таблиць, графіків, схем, діаграм тощо. Копії основних отриманих результатів виконуються у друкований спосіб та розміщуються у додатках до курсової роботи.