Головна

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

  1.  Case study: «глибинна» технологія отримання інформації про латентних процесах на соціальних об'єктах
  2.  CASE-технологія створення інформаційних систем
  3.  Chapter One (глава перша) The Eve of the War
  4.  I. ГЛАВА Про самадхи
  5.  I. Рішення логічних задач засобами алгебри логіки
  6.  I. Технологія організованого спілкування школярів.
  7.  I.1. Мета, завдання і предмет курсу

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

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

  1. Постановка задачі:
  2. Аналіз і дослідження задачі, моделі:
  3. Розробка алгоритму:
  4. пpогpаммиpования:
  5. Тестіpованіе і налагодження:
  6. Аналіз результатів рішення задачі і уточнення в разі потреби математичної моделі з повторним виконанням етапів 2 - 5.
  7. Супровід програми:

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. У чому полягає супровід програми?

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

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

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

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

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

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. Для чого програмами потрібно супровід?




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

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