- •§ 1. Алгоритм і його властивості
- •1.1. Поняття алгоритму
- •1.2. Властивості алгоритму
- •1.3. Приклади алгоритмів
- •1.4. Формальне виконання алгоритмів
- •§2. Алгоритмічна мова
- •2.1. Поняття алгоритмічної мови
- •2.2. Алфавіт мови
- •2.3. Синтаксис мови
- •2.4. Елементи мови
- •2.5. Об’єкти мови
- •1.Константи, змінні.
- •2.6. Типи величин
- •Правильний вибір типу дає змогу заощаджувати пам’ять!
- •Заощаджуйте пам’ять комп’ютера – правильно повідомляйте тип комірок!
- •Правильно оголошений тип контролює дані! типізація величин визначає, які операції можна виконувати з величинами!
- •2.7. Відношення між величинами
- •2.8. Загальний вигляд алгоритму з використанням величин
- •Оголошення величин в алгоритмі здійснюється тільки один раз. Повторне оголошення комірок, як і збіг імен комірок, неприпустиме!
- •2.9. Загальний вигляд словесного алгоритму
- •2. 10. Команди алгоритмічної мови
- •При розміщенні значень у комірки їхні попередні значення автоматично замінюються новими!
- •If умова if умова
- •0 : Оператор 1; {константа}
- •1, 3, 5, 7, 9 : Оператор 2; {список констант}
- •10…20 : Оператор 3; {діапазон значень}
- •Зверніть увагу на використання оператора writeln. Він виводить необхідну інформацію на екран монітора!
- •У мові паскаль крок зміни змінної циклу завжди дорівнює 1, тому він не вказується!
- •§3. Блок-схеми алгоритмів
- •§4. Покрокове виконання алгоритму
- •§5.Складання алгоритмів для розв’язування найпростіших завдань
- •5.1. Обчислення значень алгебраїчних виразів
- •Пам’ятайте, що від правильного запису виразу залежить результат роботи програми!
- •5.2.Обчислення функцій
- •5.3. Обчислення суми членів числової послідовності
- •5.4.Обчислення добутку членів послідовності
- •5.5. Обчислення суми функціональної послідовності
- •§6.Табличні величини (масиви)
- •6.1. Поняття масиву
- •6.2. Оголошення одновимірного масиву
- •6.3. Оголошення двовимірного масиву
- •На двовимірний масив можна дивитися як на набір одновимірних масивів, розглядаючи їх по рядках або стовпчиках!
- •6.4.Основні класичні алгоритми для роботи з масивами
- •Можна зменшити кількість змінних та кількість операцій (а це прискорить виконання алгоритму), якщо запам’ятовувати тільки положення шуканого елемента (min або max) в масиві!
- •6.5. Приклади складання алгоритмів для роботи з масивами
5.4.Обчислення добутку членів послідовності
Розглянемо цей вид алгоритмів на прикладі обчислення значення функції n! (факторіал).
Факторіал – це функція натурального аргументу, значенням якої є добуток чисел від 1 до n. 1!=1; 2!=1*2; 3!=1*2*3; …, n!=1*2*3*4*…*(n – 1)*n. |
За означенням прийнято, що 0!=1. Хоча, як відомо, нуль не належить до натуральних чисел. Ця рівність була отримана в розділі математики комбінаторика. Відома формула знаходження кількості сполучень: При n=m одержимо звідси виходить, що 0!=1.
Справедлива рекурентна формула: n!=(n – 1)!*n.
Рекурентною називають формулу, що дозволяє на підставі попереднього значення функції одержати поточне значення. Наприклад, 5!=4!*5. |
Структура алгоритму для обчислення добутку членів послідовності загалом ідентична структурі алгоритму накопичення суми, за винятком того, що:
1.У комірку результату на початку вміщується одиниця.
2.У циклі повинна бути команда присвоювання: р:=р*ЗЧП, де р – комірка для накопичення добутку.
Алгоритм має вигляд: |
Алгоритм мовою Паскаль |
АЛГ Факторіал (ціл N, P) АРГ N РЕЗ P ПОЧ цілий і і:=1; Р:=1 поки i<=N пц Р:=Р*і і:=і+1 кц ДРУКУВАТИ Р КІН
|
Program Factorial; var I, N: byte; p:longint; begin write (‘ Введіть число, факторіал якого треба знайти ‘); readln(N); p:=1; for i:=1 to N do p:=p*i writeln(‘p=’, p); end.
|
5.5. Обчислення суми функціональної послідовності
Функціональна послідовність – це відображення множини натуральних чисел N у множину дійсних функцій однієї змінної х, дійсної на деякому інтервалі. |
З курсу вищої математики відомо, що всі елементарні функції можуть бути подані функціональною нескінченною послідовністю або, як кажуть, розкладені у функціональний ряд.
Наведемо кілька прикладів розкладань функцій у ряд:
1)
2)
3)
4)
При всіх значеннях х ряди (1 – 3) сходяться і дають відповідну функцію. Ряд (4) сходиться в інтервалі ( - 1, 1). Цими рядами користуються для обчислення значень функцій. Відомі вам таблиці Брадіса створювалися саме в такий спосіб.
Обчислимо, наприклад, sin100 з точністю до 10-5. Переведемо 100 в радіани за формулою: одержимо
Обмежимося першими двома членами: Одержимо:
Знаходження суми членів функціональною послідовністю або рядом простіше виконувати, використовуючи рекурентну формулу. Це дає можливість уникнути обчислення факторіала при одержанні чергового члена послідовності.
Розглянемо приклад обчислення значення cosx, використовуючи її розкладання в ряд за степенями х для N членів та із заданим степенем точності
Загальний член послідовності має вигляд рекурентної формули: де k – коефіцієнт , що обчислюється за формулою: Він знаходиться шляхом ділення поточного члена послідовності на попередній, причому вони повинні бути записані у загальному вигляді. Поточний член має вигляд: а попередній – , оскільки ми працюємо з парними числами, то:
Для виконання скорочень використовували рівність: (2і)!=(2і – 2)!(2і – 1)2і.
Алгоритм обчислення значення функції cosx має вигляд:
Обчислення заданої кількості доданків: |
Обчислення до досягнення заданої точності: |
АЛГ Cosx (цілий N, дійсн X, S) АРГ X, N РЕЗ S ПОЧ дійсн K, U; ціл і S:=0; U:=1; i:=1 поки i<=n пц S:=S+U
U:=U*K і:=i+1 кц
ДРУКУВАТИ S КІН |
АЛГ Cosx (дійсн X, E, S) АРГ X, E РЕЗ S ПОЧ дійсн K, U; ціл і S:=0; U:=1; i:=1 поки пц S:=S+U
U:=U*K і:=i+1 кц
ДРУКУВАТИ S КІН |
Алгоритм мовою Паскаль: |
|
Program Cosx1; var i, N: word; x, s, u, k: real; begin write(‘ Введіть кількість доданків ‘); readln(n); s:=0; u:=1; for i:=1 to N do begin s:=s+u; k:= - x*x/((2*i – 1)*2*i); u:=u*k; end; writeln(‘s=’, s:8:2); end. |
Program Cosx2; var i: word; x, s, Eps, k, u: real; begin write(‘ Введіть точність результату ‘); readln(Eps); s:=0; u:=1; i:=1; while abs(u)>Eps do begin s:=s+u; k:= - x*x/((2*I – 1)*2*i); u:=u*k; i:=i+1; end; writeln(‘s=’, s:8:2); end. |
Підсумки
1.Розглянули запис виразів мовою програмування Turbo Pascal:
1)вивчили операції, що використовуються при записі виразів;
2)розглянули відношення між величинами;
3)ознайомилися з набором стандартних математичних функцій;
4)засвоїли правила запису виразів.
2.Вивчили структуру алгоритму обчислення значень виразів.
3.Навчилися складати алгоритми обчислення значення кусочної функції, заданої на деякому проміжку.
4.Навчилися складати алгоритми обчислення значення кусочної функції, заданої на деякому проміжку з кроком h.
5.Навчилися складати алгоритми обчислення значення функції, використовуючи рекурентні формули.
6.Ввели визначення:
1)числової послідовності;
2)загального члена числової послідовності.
7.Розглянули кілька прийомів знаходження загального члена послідовності.
8.Вивчили структуру алгоритму обчислення суми членів числової послідовності.
9.Розглянули 3 способи обчислення суми членів числової послідовності:
1)керуюча змінна присутня у загальному члені послідовності;
2)шляхом використання рекурентної формули, керуюча змінна відсутня у загальному члені послідовності;
3)шляхом використання рекурентної формули керуюча змінна присутня у загальному члені послідовності.
10.Ввели визначення функції n!
11.Вивчили структуру алгоритму обчислення добутку членів числової послідовності.
12.Вивчили структуру алгоритму обчислення суми n членів функціональної послідовності.
13.Вивчили структуру алгоритму обчислення суми ряду членів функціональної послідовності.
Висновок
Ми навчилися складати алгоритми для обчислення виразів, кусочних і рекурентних функцій, а також суми і добутку членів числової і функціональної послідовностей. Закріпили роботу з командами розгалуження і повторення.
Контрольні запитання
1.Яку структуру мають алгоритми обчислення значень виразів?
2.Як записати алгоритм обчислення значення кусочної функції?
3.Як записати алгоритм обчислення значень функції на заданому проміжку [a, b] з кроком h?
4.Дайте визначення числової послідовності. Що таке загальний член послідовності?
5.Яку структуру мають алгоритми для обчислення суми членів числової послідовності?
6.Які вам відомі прийоми знаходження загального члена послідовності?
7.Які вам відомі способи обчислення суми членів числової послідовності?
8.Назвіть основні моменти в алгоритмі знаходження добутку членів послідовності.
9.Дайте визначення функціональної послідовності. Як скласти алгоритм знаходження її суми?
Вправи
Вправа 1. Складіть алгоритм знаходження значення виразу: , якщо , а значення х подвоюється.
Вправа 2. Складіть алгоритм обчислення кусочної функції:
Вправа 3. Складіть алгоритм обчислення кусочної функції на проміжку [a, b] з кроком h:
де a= - 5, b=5, h=0,5.
Вправа 4. Складіть алгоритм обчислення суми знакозмінної числової послідовності:
Вправа 5. Складіть алгоритм обчислення добутку числової послідовності:
Вправа 6. Складіть алгоритми обчислення суми функціональної послідовності:
а)
б)
Вправа 7. Складіть алгоритм обчислення числа використовуючи формулу: