На головну

Глава 8. Технологія підготовки і рішення задач за допомогою комп'ютера

  1. CASE-технологія створення інформаційних систем
  2. I. ЩОДЕННИЙ РАНКОВИЙ ЧАС ФІЗІЧЕСКОІ ПІДГОТОВКИ
  3. I. ЗАВДАННЯ АРТИЛЕРІЇ
  4. I. Причини звернення за допомогою до консультанта по роботі з персоналом
  5. I. Рішення логічних задач засобами алгебри логіки
  6. I. Технологія організованого спілкування школярів.
  7. I. Мета і завдання дисципліни

8.1. Які етапи включає в себе вирішення завдань за допомогою комп'ютера?

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

  1. Постановка задачі:
    • сбоp КВАЛІФІКАЦІЙНА про завдання;
    • фоpмуліpовка умови задачі;
    • визначених кінцевих цілей pешения завдання;
    • визначення форми видачі результатів;
    • опис даних (їх типів, діапазонів величин, структури і т.п.).
  2. Аналіз і дослідження задачі, моделі:
    • аналіз існуючих аналогів;
    • аналіз технічних і програмних засобів;
    • pазpаботка математичної моделі;
    • розробка структур даних.
  3. Розробка алгоритму:
    • вибір методу проектування алгоритму;
    • вибір форми запису алгоритму (блок-схеми, псевдокод та ін.);
    • вибір тестів і методу тестіpованія;
    • проектування алгоритму.
  4. пpогpаммиpования:
    • вибір мови програмування;
    • уточнення способів організації даних;
    • запис алгоpитмами на Вибрати мову пpогpаммиpования.
  5. Тестіpованіе і налагодження:
    • синтаксична налагодження;
    • налагодження семантики і логічної стpуктуp;
    • тестові pасчетов і аналіз pезультатов тестіpованія;
    • вдосконалення програмі.
  6. Аналіз результатів рішення задачі і уточнення в разі потреби математичної моделі з повторним виконанням етапів 2 - 5.
  7. Супровід програми:
    • доробка програми для вирішення конкретних завдань;
    • складання документації до pешением задачі, до математичної моделі, до алгоpитмами, до програмі, до набору тестів, до використання.

8.2. Що називають математичною моделлю?

Математична модель - Це система математичних співвідношень - формул, рівнянь, нерівностей і т.д., відображають суттєві властивості об'єкта або явища.

Будь-яке явище природи нескінченно у своїй складності. Проілюструємо це за допомогою прикладу, узятого з книги В.М. Очеретяна "Людина і інформація" (Видавництво "Наука", 1970).

... Обиватель формулює математику завдання наступним чином: "Скільки часу буде падати камінь з висоти 200 метрів?" Математик почне створювати свій варіант завдання приблизно так: "Будемо вважати, що камінь падає в порожнечі і що прискорення сили тяжіння 9,8 метра в секунду за секунду. Тоді ..."

- Дозвольте, - Може сказати "замовник", - мене не влаштовує таке спрощення. Я хочу знати точно, скільки часу буде падати камінь в реальних умовах, а не в неіснуючої порожнечі.

- Добре, - Погодиться математик. - Будемо вважати, що камінь має сферичну форму і діаметр ... Якого приблизно він діаметра?

- Близько п'яти сантиметрів. Але він зовсім не сферичний, а довгастий.

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

Якщо той, хто поставив завдання на "людському" мові не буде далі втручатися в хід думки математика, то останній через деякий час дасть чисельний відповідь. Але "споживач" може заперечувати і раніше: камінь насправді зовсім не еліпсоїдального, тиск повітря в тому місці і в той момент не було одно 760 мм ртутного стовпа і т.д. Що ж відповість йому математик?

Він відповість: "Точне рішення реальної завдання взагалі неможливо. Мало того, що форму каменю, Яка впливає на опір повітря, неможливо описати ніяким математичним рівнянням; його обертання в польоті також непідвладне математики через свою складність. далі, повітря не є однорідним, так як в результаті дії випадкових чинників в ньому виникають флуктуації коливання щільності. Якщо піти ще глибше, потрібно врахувати, що за законом всесвітнього тяжіння кожне тіло діє на кожне інше тіло. Звідси випливає, що навіть маятник настінного годинника зраджує своїм рухом траєкторію каменю.

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

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

Найбільш ефективно математичну модель можна реалізувати на комп'ютері у вигляді алгоритмічної моделі - так званого "обчислювального експерименту" (див. [1], параграф 26).

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

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

  1. виділити припущення, на яких ґрунтуватиметься математична модель;
  2. визначити, що вважати вихідними даними і результатами;
  3. записати математичні співвідношення, що зв'язують результати з вихідними даними.

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

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

8.3. Які основні етапи містить процес розробки програм?

Процес розробки програми можна виразити наступною формулою:

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

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

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

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

8.4. Як проконтролювати текст програми до виходу на комп'ютер?

Текст програми можна проконтролювати за столом за допомогою перегляду, перевірки і прокрутки.

  • Перегляд. Текст програми проглядається на предмет виявлення описок і розбіжностей з алгоритмом. потрібно переглянути організацію всіх циклів, Щоб переконатися в правильності операторів, які задають кратності циклів. Корисно подивитися ще раз умови в умовних операторах, аргументи в зверненнях до підпрограмі т.п.
  • Перевірка. При перевірці програми програміст по тексту програми подумки намагається відновити той обчислювальний процес, який визначає програма, після чого звіряє його з необхідним процесом. На час перевірки потрібно "Забути", Що повинна робити програма, і "Дізнаватися" про це по ходу її перевірки. Тільки після закінчення перевірки програми можна "Згадати" про те, що вона повинна робити і порівняти реальні дії програми з необхідними.
  • Прокрутка. Основою прокрутки є імітація програмістом за столом виконання програми на машині. Щоб скористатися функцією доводиться задаватися якимись вихідними даними і щоб між ними чинити необхідні обчислення. Прокрутка - трудомісткий процес, Тому її слід застосовувати лише для контролю логічно складних ділянок програм. Вихідні дані повинні вибиратися такими, щоб в прокрутку залучалося більшість гілок програми.

8.5. Для чого потрібні налагодження та тестування?

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

Налагодження і тестування - це два чітко помітних і несхожих один на одного етапу:

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

англійський термін debugging ( "налагодження") Буквально означає"виловлювання жучків". Термін з'явився в 1945 р, коли один з перших комп'ютерів -" Марк-1 "припинив роботу через те, що в його електричні ланцюги потрапив метелик і заблокував своїми останками одне з тисяч реле машини.

8.6. У чому полягає налагодження?

В сучасних програмних системах (Turbo Basic, Turbo Pascal, Turbo C та ін.) Налагодження здійснюється часто з використанням спеціальних програмних засобів, які називаються отладчиками. Ці засоби дозволяють досліджувати внутрішнє поведінку програми.

Програма-відладчик зазвичай забезпечує наступні можливості:

  • покрокове виконання програми з зупинкою після кожної команди (оператора);
  • перегляд поточного значення будь-якої змінної або знаходження значення будь-якого виразу, В тому числі, з використанням стандартних функцій; при необхідності можна встановити нове значення змінної;
  • установку в програмі "контрольних точок", Тобто точок, в яких програма тимчасово припиняє своє виконання, так що можна оцінити проміжні результати, і ін.

При налагодженні програм важливо пам'ятати наступне:

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

8.7. Що таке тест і тестування?

Як би не була ретельно налагоджена програма, вирішальним етапом, що встановлює її придатність для роботи, є контроль програми за результатами її виконання на системі тестів.

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

Але, як справедливо вказував відомий теоретик програмування Е. Дейкстра, тестування можетпоказать лише наявність помилок, але не їх відсутність. Нерідкі випадки, коли нові вхідні дані викликають "відмова" або отримання невірних результатів роботи програми, яка вважалася повністю налагоджена.

Для реалізації методу тестів повинні бути виготовлені або заздалегідь відомі еталонні результати.

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

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

8.8. Якими повинні бути тестові дані?

Тестові дані повинні забезпечити перевірку всіх можливих умов виникнення помилок:

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

приклад. Система тестів для задачі знаходження коренів квадратного рівняння ax2 + Bx + c = 0:

 номер тесту  перевіряється випадок  коефіцієнти  результати
a b c
 d> 0  -2  x1 = 1, x2 = - 2
 d = 0  Коріння рівні: x1 = - 1, x2 = - 1
 d <0  Дійсних коренів немає
 a = 0, b = 0, c = 0  Всі коефіцієнти дорівнюють нулю. х - будь-яке число.
 a = 0, b = 0, c <> 0  неправильне рівняння
 a = 0, b <> 0  Лінійне рівняння. Один корінь: x = - 0,5
 a <> 0, b <> 0, с = 0  x1 = 0, x2 = - 0,5

8.9. З яких етапів складається процес тестування?

Процес тестування можна розділити на три етапи.

1. Перевірка в нормальних умовах. Передбачає тестування на основі даних, які характерні для реальних умов функціонування програми.

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

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

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

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

8.10. Які характерні помилки програмування?

Помилки можуть бути допущені на всіх етапах виконання завдання - від її постановки до оформлення. Різновиди помилок і відповідні приклади наведені в таблиці:

 вид помилки  приклад
 Неправильна постановка задачі  Правильне рішення невірно сформульованої задачі
 невірний алгоритм  Вибір алгоритму, що приводить до неточного або ефективному вирішенню завдання
 Помилка аналізу  Неповний облік ситуацій, які можуть виникнути; логічні помилки
 семантичні помилки  Нерозуміння порядку виконання оператора
 синтаксичні помилки  Порушення правил, що визначаються мовою програмування
 Помилки при виконанні операцій  Занадто велике число, розподіл на нуль, витяг квадратного кореня з негативного числа і т. П.
 Помилки в даних  Невдале визначення можливого діапазону зміни даних
 помилки  Переплутані близькі за написанням символи, наприклад, цифра 1 і букви I, l
 Помилки введення-виведення  Неправильне зчитування вхідних даних, невірне завдання форматів даних

8.11. Чи є відсутність синтаксичних помилок свідченням правильності програми?

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

 Відсутність повідомлень машини про синтаксичних помилках є необхідним, але не достатньою умовою, щоб вважати програму правильною.

Приклади синтаксичних помилок:

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

8.12. Які помилки не виявляються транслятором?

Існує безліч помилок, які транслятор виявити не в змозі, якщо використовувані в програмі оператори сформовані правильно. Наведемо приклади таких помилок.

Логічні помилки:

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

Помилки в циклах:

  • неправильне зазначення початку циклу;
  • неправильне зазначення умов закінчення циклу;
  • неправильне зазначення числа повторень циклу;
  • безкінечний цикл.

Помилки введення-виведення; помилки при роботі з даними:

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

Помилки у використанні змінних:

  • використання змінних без вказівки їх початкових значень;
  • помилкове зазначення однієї змінної замість іншого.

Помилки при роботі з масивами:

  • масиви попередньо НЕ обнулені;
  • масиви неправильно описані;
  • індекси слідують в неправильному порядку.

Помилки в арифметичних операціях:

  • неправильне зазначення типу змінної (наприклад, целочисленного замість речового);
  • невірне визначення порядку дій;
  • поділ на нуль;
  • витяг квадратного кореня з негативного числа;
  • втрата значущих розрядів числа.

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

8.13. У чому полягає супровід програми?

супровід програм - Це роботи, пов'язані з обслуговуванням програм в процесі їх експлуатації.

Багаторазове використання розробленої програми для вирішення різних завдань заданого класу вимагає проведення наступних додаткових робіт:

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

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

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

Питання для самоконтролю

8.1. Які основні етапи включає в себе вирішення завдань на комп'ютері?

8.2. Які етапи комп'ютерного вирішення завдань здійснюються без участі комп'ютера?

8.3. Що називають математичною моделлю об'єкта чи явища?

8.4. Чому неможливо точне дослідження поведінки об'єктів або явищ?

8.5. Які способи моделювання здійснюються за допомогою комп'ютера?

8.6. З яких послідовних дій складається процес розробки програми?

8.7. Доводить чи отримання правдоподібного результату правильність програми?

8.8. Які помилки можуть залишитися невиявленими, якщо не провести перевірку (перегляд, прокрутку) програми?

8.9. Чим тестування програми відрізняється від її налагодження?

8.10. Яким чином програма-відладчик допомагає дослідити поведінку програми в процесі її виконання?

8.11. Як слід планувати процес налагодження програми?

8.12. Чи можна за допомогою тестування довести правильність програми?

8.13. На якій стадії роботи над програмою обчислюються еталонні результати тестів?

8.14. Назвіть основні етапи процесу тестування.

8.15. У чому полягає відмінність синта ксіческіх помилок від семантичних?

8.16. Про що свідчить відсутність повідомлень машини про синтаксичних помилках?

8.17. Які різновиди помилок транслятор не в змозі виявити?

8.18. Для чого програмами потрібно супровід?



Попередня   30   31   32   33   34   35   36   37   38   39   40   41   42   43   44   45   Наступна

Приклади. | I. Рішення логічних задач засобами алгебри логіки | II. Рішення логічних задач табличним способом | III. Рішення логічних задач за допомогою міркувань | На противагу цьому, операційна система або інструментальне ПЗ не вносять прямого внеску в задоволення кінцевих потреб користувача. | Функції та технічні характеристики мережевих операційних систем (ОС) | Основні службові слова | Приклад запису алгоритму на шкільному АЯ | Приклад вкладених циклів поки | Приклади запису арифметичних виразів |

© um.co.ua - учбові матеріали та реферати