
- •Кафедра Iнформатики
- •«Наука вся - лишь море заблуждений, где нету дна, а правды нет и тени»
- •«Складні проблеми завжди мають прості, легкі для розуміння невірні розв'язання» (закон Гросмана) Формалізація алгоритму
- •«Ускладнювати просто. Спрощувати складно» (закон Мейера) Алгоритмічні системи
- •... Sk0 skj1 skj2 ... Qi sjk ... Skjr-1 skjr sk0 ..., k[1;n]
- •Відлагодження алгоритму
- •«Якщо факти не підтверджують теорію, то їх треба позбутися» (Закон Майєрса) Етапи розв’язання задач на комп’ютері
- •Математична модель
- •Інформаційна модель
- •«Перед тим, як увійти, подумай, як вийти» (Китайське прислів'я) Техноогії проектування алгоритмів
- •«Створіть систему, якою зможе скористатися навіть дурень, і тільки дурень захоче нею користуватися»
- •(Принцип Шоу)
- •Блок-схема алгоритму лінійної структури
- •Алгоритм розгалуженої структури
- •Блок-схема алгоритму розгалуженої структури
- •Алгоритми циклічної структури
- •Алгоритм циклічної структури (параметр циклу змінюється з кроком у заданому сегменті)
- •Блок-схема алгоритму циклічної структури (параметр циклу змінюється з кроком у заданому сегменті)
- •Алгоритм циклічної структури (параметр циклу є елементом масиву)
- •Блок-схема алгоритму циклічної структури (параметр циклу є елементом масиву)
- •Алгоритм складної циклічної структури
- •Блок-схема алгоритму складної циклічної структури
- •Алгоритм обліку суми і добутку
- •Блок-схема алгоритму обліку суми і добутку
- •Алгоритм пошуку мінімуму і максимуму
- •Блок-схема алгоритму пошуку мінімуму і максимуму
- •Алгоритми сортування наданих
- •«Маленька практика краща за велику теорію» (закон Букера)
- •Алгоритми розв’язання інженерних задач
- •Ізоляція кореня
- •Уточнення значення кореня
- •Блок-схема алгоритму методу хорд
- •Початок циклу
- •Кінець циклу
- •Алгоритм розв’язання системи лінійних рівнянь
- •1. Прямий хiд
- •2. Зворотній хiд
- •Блок-схема алгоритму методу Гауса
- •Алгоритми розв’язання диференціального рівняння
- •Алгоритми до методу Эйлера
- •Алгоритми до методу Рунге - Кутта
- •Блок-схеми алгоритмів розв’язання диференціальних рівнянь першого порядку
- •Блок-схеми алгоритмів розв’язання диференціальних рівнянь другого порядку
- •Алгоритм обліку визначеного інтегралу
- •Алгоритм до методу Ньютона - Котеса
- •Блок-схема алгоритму обліку визначеного інтегралу методом Ньютона - Котеса Функція «Інтеграл»
- •Алгоритми апроксимації і інтерполяції функції
- •Алгоритм до методу інтерполяції поліномами Лагранжа
- •Алгоритм до методу апроксимації та інтерполяції в-сплайнами
- •Блок-схеми алгоритмів інтерполяції і апроксимації функції
- •Алгоритм статистичної обробки результатів експерименту
- •Перспективи розвитку теорії алгоритмів «Як тільки теорія стає зрозумілою всім, її пора змінювати» (закон Джексо на)
Блок-схема алгоритму складної циклічної структури
3
4
5
Так
1
8
9
2
6
7
Ні
Так
Ні
10
11
12
Мал. 9
(i>n)
(X>Xk)
(i>n)
Алгоритм обліку суми і добутку
Розрахувати суму і добуток елементів Xi масиву {Xi}n:
n n
S = ∑ Xi, P = ∏ Xi, Xi {Xi}n (i [1; n])
i=1 i=1
Аналіз задачі.
Для обліку суми можна використати ітераційну формулу S = S + Xi і передусім покласти S = 0 для того, щоби під час ітераційного процесу (i = 1, 2, ..., n) не додавати черговий елемент Xi множини {Xi}n до комірки S із невизначеним значенням (бо динамічна неініційована абияким значенням комірка оперативної пам’яті містить «сміття»).
Для обліку добутку можна використати ітераційну формулу P = P · Xi і передусім покласти P = 1 для того, щоби під час ітераційного процесу (i = 1, 2, ..., n) на найпершій ітерації (при i = 1) отримати P = 1 · X1 = X1.
Алгоритм (блок схему див. на мал. 10):
Початок.
Крок 1. Введення значення змінної n.
Крок 2. i = 1 (тут i - параметр циклу введення елементів масиву {Xi}n).
Крок 3. Введення елементу Xi масиву {Xi}n.
Крок 4. i = i + 1.
Крок 5. Якщо і n, то перехід до кроку 3 ().
Крок 6. Присвоювання: S = 0; P = 1.
Крок 7. i = 1.
Крок 8. S = S + Xi.
Крок 9. P = P · Xi.
Крок 10. i = i + 1.
Крок 11. Якщо і n, то перехід до кроку 8 ().
Крок 12. Виведення значень S i P .
Кінець.
Для зменшення кількості ітерацій можна об’єднати цикли введення елементів масиву {Xi}n і обліку S i P. Можна також на кроці 6 покласти S = X1 i P = X1, а тоді ітерації починати зі значення i = 2 (на кроці 7 покласти i = 2).
Блок-схема алгоритму обліку суми і добутку
1
2
3
(i>n)
6
7
4
5
8
9
Мал. 10
Алгоритм пошуку мінімуму і максимуму
Знайти мінімальний і максимальний елементи серед усіх елементів Xi множини {Xi}n:
min ≤ Xi, (min {Xi}n)
max ≥ Xi, (max {Xi}n) i [1; n].
Аналіз задачі.
Для розв’язання задачи треба насамперед ініціювати початкові значення мінімуму (min) і максимуму (max). Для цього підходить значення першого елементу масиву {Xi}n. Далі на кожній i-ій ітерації (i [1; n]) циклу перебору елементів масиву {Xi}n треба попарно порівнювати поточний елемент із поточними значеннями min i max. Якщо абиякий елемент масиву {Xi}n є меншим за min чи більшим за max, то запам’ятовувати його значення відповідно у min чи у max.
Алгоритм (блок схему див. на мал. 11):
Початок.
Крок 1. Введення значення змінної n.
Крок 2. i = 1 (тут i - параметр циклу введення елементів масиву {Xi}n).
Крок 3. Введення елементу Xi масиву {Xi}n.
Крок 4. i = i + 1.
Крок 5. Якщо і n, то перехід до кроку 3 ().
Крок 6. Присвоювання: min = X1; max = X1.
Крок 7. i = 2.
Крок 8. Якщо Xi ≤ min, то покласти min = Xi і перейти до кроку 10.
Крок 9. Якщо Xi ≥ max, то покласти max = Xi.
Крок 10. i = i + 1.
Крок 11. Якщо і n, то перехід до кроку 8 ().
Крок 12. Виведення значень min i max .
Кінець.
Для зменшення кількості ітерацій можна об’єднати цикли введення елементів масиву {Xi}n і обліку min i max.
Інший варіант алгоритму передбачає ініціювання min найбільшим можливим значенням MAX_VAR дійсного числа на комп’ютері, max - найменшим можливим значенням (-MAX_VAR), але тоді ітерації треба починати зі значення i = 1 (на кроці 7 покласти i = 1) і у кроці 8 не переходити до кроку 10.