КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Циклічні алгоритми
Алгоритм називається циклічним, якщо одна і та ж послідовність дій виконується кілька разів, доки не виконається задана умова. Організація циклу вимагає встановлення початкових значень тим змінним, які використовуються в циклі. Такі дії зображуються блоком «початкові надання» (блоком ініціалізації). Дії, описані блоком «початкові надання», виконуються тільки один раз і в подальшій роботі циклу участі не беруть. Команда або група команд, виконання яких повторюється при кожному проходженні циклу, називається тілом циклу. Кожного разу після виконання тіла циклу робиться перевірка умови виходу з циклу за допомогою блоку «умова». Вихід з циклу відбувається після досягнення лічильником циклів заданого значення або після виконання заданої умови Блоки «початкові надання», «тіло циклу» та «умова» є складовими частинами циклу. Дії всередині тіла циклу можуть бути досить складними. Це може бути велика послідовність команд або ще один алгоритм, зокрема циклічний. Цикли бувають двох видів: · цикл «До» (з післяумовою); · цикл «Поки» (з передумовою); Цикл «До». Застосовується при необхідності виконати «тіло циклу» кілька разів до виконання заданої «умови». Особливість цього циклу полягає в тому, що він виконується хоча б один раз і цикл закінчується, як тільки умова виконається (стане істинною). Цикл «Поки». Застосовується при необхідності спочатку перевірити «умову» і, можливо, потім виконати «тіло циклу». Якщо при першій перевірці «умови» вона не виконається (виявиться хибною), то «тіло циклу» не виконається ні разу, а виконуватись «тіло циклу» буде доти, поки умова істинна. Цикл закінчиться, коли умова стане хибною (не виконається). При логічних помилках в циклічних алгоритмах може виникнути ситуація, коли тіло циклу виконується раз за разом, а умова припинення циклу не настає. Така ситуація називається «зациклювання». Роботу таких програм доводиться припиняти штучно і шукати помилку. При конструюванні алгоритмів усі їх операції можна подати у вигляді комбінації трьох типів простих операцій, так званих базових алгоритмічних структур. В залежності від використовуваної структури розглядаються такі алгоритми: 1. Лінійний алгоритм – алгоритм, в якому використовується тільки структура «слідування». 2. Алгоритмом з розгалуженням – алгоритм, в основі якого лежить структура «розгалуження». 3. Циклічний алгоритм – алгоритм, в основі якого лежить структура «повторення». Складні алгоритми можуть будуватися, як у дитячому конструкторі, із найпростіших елементів – базових структур. А для полегшення роботи з такими задачами користуються принципами структурного програмування. Структурне програмування – це процес побудови алгоритмів та програм, що виконується в такій послідовності: 1. Попередній аналіз задачі з метою розбиття її на окремі прості частини (модулі). Для цього спочатку складають загальну схему алгоритму, а потім кожну частину деталізують. 2. Послідовна (зверху донизу) деталізація частин та складання програм для кожного змодулів. Виділяють основну частину та частини нижнього рівня. Кожну частину розробляють окремо: спочатку частини верхнього рівня, а потім – нижнього. У кінці частини з’єднують між собою. Покрокова деталізація – можливість рухатися від великих задач до більш дрібних. Велика задача буде розчленовуватися на менші блоки, ті, у свою чергу, на ще менші блоки і т.д. Кожен блок алгоритму повинен бути максимально самостійним і логічно завершеним. Розбивка на блоки повинна визначатися внутрішньою логікою задачі. Спочатку потрібно сконцентрувати свої зусилля на визначенні глобальних задач, а потім займатися їхньою детальною розробкою. Метод покрокової деталізації має важливе значення не лише в інформатиці. Одна людина може керувати розробкою великого алгоритму (створенням бюджету держави, будівництвом космічної станції тощо), доручаючи багатьом виконавцям деталізацію допоміжних алгоритмів (виконання окремих робіт). Принципом покрокової деталізації варто керуватися під час розв’язування задач з інформатики, з математики та фізики, з інших предметів, а також у побуті. Про цей принцип не варто забувати в майбутньому. Модуль – це послідовність логічно зв’язаних операцій, яка оформлена у вигляді окремої частини програми. Великі алгоритми проектують так. Спочатку аналізують умову задачі. Складають загальний план її розв’язування. Якщо задача складна, то її розбивають на декілька простіших підзадач. Проектують модульну структуру алгоритму: описують призначення головного та допоміжних алгоритмів, дають їм назви. Потім деталізують (створюють, уточнюють) необхідні допоміжні алгоритми для розв’язування підзадач. Маючи допоміжні алгоритми, записують головний алгоритм, який складатиметься з команд викликів допоміжних. Отже, великі алгоритми утворюють з готових модулів подібно до того, як будинки будують з готових блоків, а машини збирають з окремих деталей. Аналіз алгоритму – це структурний контроль правильності алгоритму: виділення основних складових елементів, їх структури і взаємозв’язку.
Створення алгоритму Будь-який алгоритм треба розглядати як опис процедури, яка обробляє вхідні дані й отримує вихідні дані. Вхідні дані ще називають входом алгоритму, або його аргументами, а вихідні дані − виходом алгоритму, або результатом. Алгоритми створюються для розв’язування задач, умови яких містять вимоги до їх розв’язування. У свою чергу при розробці алгоритмів, що розв’язують поставлені задачі, треба визначити модель, якій відповідає ця задача, та обрати метод, що задовольняє сформульовані вимоги. Алгоритм вважається правильним, якщо при будь-якому допустимому для даної задачі наборі вхідних даних він завершує свою роботу і отримує результат, що задовольняє вимоги задачі. У цьому випадку кажуть, що алгоритм розв’язує дану задачу. Неправильний алгоритм може або не зупинитися, або дати неправильний результат. Виникає запитання: а як дізнатися, правильний чи неправильний алгоритм ми створили? Як перевірити, зупиниться він чи ні? Можна проаналізувати алгоритм, виконуючи по кроках записані у ньому дії. Але це реально лише для невеликих вхідних даних. Однак не завжди така перевірка дасть остаточну відповідь. Інший вихід полягає в тому, щоб записати алгоритм обраною мовою програмування і виконати програму на комп’ютері. Усі алгоритми поділяються на два великі класи. Це алгоритми з повтореннями та рекурсивні алгоритми. В основі алгоритмів з повтореннями лежать операції переходу та умовні вирази, аналіз яких і виконує відповідні переходи. Для аналізу таких алгоритмів треба оцінити кількість операцій усередині циклу та кількість повторень цих циклів. Рекурсивні алгоритми поділяють велику задачу на підзадачі, до кожної з яких окремо знову застосовуються ці самі алгоритми. Такі алгоритми ще відносять до алгоритмів, основою створення яких є ідея «розділяй і володарюй». Перевагою таких алгоритмів є невеликий, простий і зрозумілий запис. Аналіз рекурсивних алгоритмів вимагає підрахунку кількості операцій, необхідних для поділу задачі на підзадачі, виконання алгоритму в кожній із них та об’єднання отриманих результатів для розв’язування задачі в цілому. Отже, створення алгоритму − це один з етапів розв’язування поставленої задачі. Але він не відокремлений від усіх інших етапів, таких як: ü визначення моделі задачі, що розв’язується; ü запис алгоритму мовою програмування; ü тестування програми на комп’ютері; ü отримання розв’язку поставленої задачі шляхом виконання завершеної програми.
Математична модель, вибір структури даних Якщо сформульовану задачу можна описати термінами деякої формальної моделі, то це треба обов’язково зробити, оскільки саме в рамках цієї формальної моделі можна дізнатися, чи існують методи й алгоритми розв’язування даної задачі. Навіть якщо ще не існує таких методів і алгоритмів, то використання властивостей формальної моделі допоможе в побудові близького розв’язку поставленої задачі. Практично будь-яку галузь математики або інших наук можна застосувати до побудови моделі певного кола задач. Наприклад, для задач, які по суті своїй є обчислювальними, можна побудувати моделі на основі загальних математичних конструкцій, таких як розв’язування рівнянь, систем рівнянь тощо. Для задач із символьними або текстовими даними можна застосувати моделі, що базуються на формальних граматиках, символьних послідовностях тощо. Як приклад можна навести задачі розпізнавання певних слів у списках. Крім вибору моделі для сформульованої задачі, визначення найоптимальнішого алгоритму її розв’язування, не менш важливим є вибір структури вхідних і вихідних даних. Під структурою даних будемо розуміти спосіб представлення інформації, що обробляється й отримується в результаті виконання алгоритму. Інколи вибір структури даних визначений у самій постановці задачі. Наприклад, якщо треба упорядкувати послідовність елементів, то зрозуміло, що структурою вхідної та вихідної інформації буде одновимірний масив. Якщо ж умова задачі передбачає обробку елементів деякої таблиці, то вибір структури даних є однозначним: двовимірний масив. Прикладом такої задачі може бути визначення рейтингу студентів групи за семестр з інформатики. Є і складніші структури даних. Знання всіх можливих структур даних значно розширить коло задач, які ви зможете розв’язувати.
Дата добавления: 2013-12-13; Просмотров: 9254; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |