Тема 1.Основи програмування і алгоритмізації

Лекція 2

 

Постановка задачі для розв'язування на комп'ютері

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

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

Якщо ставиться задача розробки складної програмної системи слід також оцінити раціональність такої розробки. При цьому слід звернути увагу на такі питання:

·         Чи є вже на ринку готові програмні системи, які реалізують поставлену задачу? 

·         Якщо такі системи є, чи не краще буде купити готові, ніж витрачати гроші і час на розробку нової системи? 

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

·         Якщо готових систем немає, чи є реальним досягнення мети в принципі і для вашої організації зокрема? 

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

 

Поняття алгоритму

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

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

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

 У цьому означенні використовується поняття "виконавець". Що це означає? Під виконавцем алгоритму ми розуміємо будь-яку істоту (живу чи неживу), яка спроможна виконати алгоритм. Все залежить від того, якої мети ми намагаємося досягнути.

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

 Будь-який виконавець (і комп'ютер зокрема) може виконувати тільки обмежений набір операцій . Тому алгоритми повинні мати наступні властивості.

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

2. Визначеність (однозначність). Зрозумілий алгоритм все ж таки не повинен містити вказівки, зміст яких може сприйматися неоднозначно. Вказівки, що є неоднозначними, в різних випадках можуть призвести до різних результатів. Крім того, в алгоритмах неприпустимі такі ситуації, коли після виконання чергового розпорядження алгоритму виконавцю не зрозуміло, що потрібно робити на наступному кроці.  Отож, точність — це властивість алгоритму, що полягає в тім, що алгоритм повинен бути однозначно витлумачений і на кожному кроці виконавець повинен знати, що йому робити далі.

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

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

5. Результативність. Власне кажучи, очевидно, що виконання будь-якого алгоритму повинне завершуватися одержанням кінцевих результатів. Тобто ситуації, що в деяких випадках можуть призвести до так званого "зациклення", повинні бути виключені при написанні алгоритму. Наприклад, розглянемо таку ситуацію: роботу дано завдання залишити кімнату (замкнутий простір), не виконуючи руйнівних дій. У цьому випадку, якщо роботу не дати вказівки відкрити двері (що, можливо, закриті), то спроби залишити приміщення можуть бути безуспішними.

 

Контрольні запитання:

1. Постановка задачі.

2. Що таке алгоритм.

3. Властивості алгоритму.