Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Екзамен. Програмування -l-.doc
Скачиваний:
7
Добавлен:
13.03.2016
Размер:
411.65 Кб
Скачать

Білет № 7

  1. Цикл з передумовою while та після умовою do while. Оператори керування циклами break та continue. Циклічні програми з заздалегідь відомим та невідомим числом повторення. Оператор виходу з процедури або функції return та переривання програми break.

  2. Пошуку мінімуму багатовимірної функції методом Хука-Дживса, методом Нелдера-Міда.

  1. Оператор циклу з передумовою while виконується, якщо умова перевіряється до початку циклу, і має

вигляд:

while (вираз-умова) оператор; ,

де оператор — тіло циклу, що може бути представлено прос­тим або складеним оператором.

Реалізується оператор while таким чином: якщо значення виразу-умови не дорівнює нулю («істина»), то виконується тіло циклу, а в протилежному випадку, тобто коли значення виразу дорівнює нулю («неправда»), — цикл не працює і керування передається наступному за циклом while оператору. Цикл з пере­думовою може не виконуватися жодного разу.

Оператор while зручно застосовувати у випадках, коли кількість ітерацій заздалегідь не відома.

Оператор циклу з післяумовою do while звичайно застосовується у випадках, коли тіло циклу виконується хоча б один раз, і має таку форму запису:

do оператор

while (вираз-умова);

У процесі виконання оператора do while спочатку здійснюється вхід до тіла циклу і виконується оператор, що являє собою тіло циклу (цей оператор може бути простим або склади ним); далі перевіряється вираз і, якщо він правдивий («істина»), — цикл повторюється, а коли вираз помилковий («неправда») — здійснюється вихід з циклу.

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

Можна сказати, що оператор continue трохи схожий на break. Оператор break викликає переривання циклу, a continue - переривання поточної ітерації циклу і здійснює перехід до наступної ітерації. При цьому всі оператори до кінця тіла циклу пропускаються. У циклі for оператор continue викликає виконання операторів збільшення і перевірки умови циклу. У циклах while і do-while оператор continue передає управління операторам перевірки умов циклу.

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

Загальна форма оператора return наступна:

return вираз;

Усередині функції може бути присутнім довільну кількість операторів return. Вихід з функції відбувається тоді, коли зустрічається один з них. Закривається фігурна дужка} також викликає вихід з функції. Вихід програми на неї еквівалентний оператору return без значення. У цьому випадку функція, тип якої відмінний від void, повертає невизначене значення.

Функція, визначена з специфікатором void, не може містити return зі значенням.

  1. Метод Хука - Дживса так само, як і алгоритм Нелдера - Міда , служить для пошуку безумовного

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

На початковому етапі задається стартова точка (позначимо її 1) і кроки h i за координатами. Потім заморожуємо значення всіх координат крім 1-й, обчислюємо значення функції в точках x 0 + h 0 і x 0 -h 0 (де x 0 - перша координата точки, а h 0 - відповідно значення кроку по цій координаті) і переходимо в точку з найменшим значенням функції. У цій точці заморожуємо значення всіх координат крім 2-й, обчислюємо значення функції в точках x 1 + h 1 і x 1 -h 1, переходимо в точку з найменшим значенням функції і т. Д. Для всіх координат. У випадку, якщо для якої-небудь координати значення у вихідній точці менше, ніж значення для обох напрямів кроку, то крок цією координаті зменшується. Коли кроки по всіх координатах h i стануть менше відповідних значень e i, алгоритм завершується, і точка 1 визнається точкою мінімуму.

Метод Нелдера – Міда.

Будується початковий симплекс - множина з n+1 допустимих точок аргументів, де n- розмірність завдання. Назву цей симплекс гіперпірамідою (трикутник, якщо на площині). Далі точки сортуються в порядку погіршення значення функції. Найгіршу точку пробуємо замінити на іншу, отриману як її відображення по прямій з неї через центр мас кращих точок (грубо кажучи, по напряму туди, де функція потенційно покращується), що залишилися. Якщо відображення не дають поліпшення функції, то увесь симплекс пропорційно стискається до кращої з точок. Все повторюється до тих пір, поки або симплекс не вироджується (починають співпадати точки або стягується в маленьку область), або розкид значень функції стає несуттєвим.