Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Як скласти алгоритм?






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

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

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

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

При індивідуальному вирішенні завдань студент мовчки, " про себе" здійснює і утілює його в рішенні, і часто навіть не помічає приховану роботу думки на етапі прогнозу. Обговорення процесу пошуку рішення і, зокрема, прогнозування рішення при активній участі групи - могутній засіб розвитку навиків логічного мислення студентів. Час, витрачений на таку роботу, не є " втраченим дарма", а приводить до підвищення рівня алгоритмічного мислення.

Починати рішення задачі необхідно з осмислення її умови. Завдання необхідно зрозуміти: Що свідчить завдання? Що дане? Що слід знайти? Першим кроком у вирішенні цих питань є запис заголовка алгоритму. Заголовок алгоритму відповідає на питання " Що дане? ", " У якому вигляді дано? ", " Що знайти? ", " У якому вигляді представити результат? ". Фактично ми виконаємо частину етапу формалізації завдання (щодо структури даних).

Можна вважати, що завдання ми зрозуміли, якщо вдається записати алгоритм в наступному вигляді:

АЛГ < Назва> (< Список аргументів і результатів з описом типів, розмірностей масивів і тому подібне>) АРГ < Список аргументів>

РЕЗ < Список результатів>

НАМ < Короткий словесний опис того, що слід зробити>

КОН

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

Якщо пошук " схожого" вирішеного завдання не увінчався успіхом, то можна спробувати сформулювати завдання інакше. Спробувати вирішити частину завдання, використовуючи тільки частину умови і відкинувши решту частини умов. Перевірити, чи не можна змінити невідоме, або дані, або і те і інше так, щоб нове невідоме і нові дані виявилися ближчими один до одного. Переконатися в тому, що всі умови і обмеження завдання ми врахували. Які початкові дані допустимі, чи може бути ситуація, що завдання нерозв'язне і так далі.

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

Такий метод конструювання алгоритмів прийнято називати " низхідним" (зверху вниз - від більш загального, складнішого завдання до приватних, простіших і легко вирішуваних завданням) або методом послідовного уточнення алгоритму.

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

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

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

 

Приклад 1. Скласти алгоритм, в результаті виконання якого величина А прийняла б значення величини В, а В прийняла б значення А.


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.008 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал