- •Лекція 3. Програмування основних алгоритмічних структур.
- •Алгоритми процесів з розгалуженнями та їх програмування. Оператор вибору case. Алгоритми циклічних процесів: «до», «поки», «для». Регулярні та ітераційні цикли. Програмування циклів.
- •Програмування процесів з розгалуженнями.
- •Алгоритми з розгалуженням.
- •Умовний оператор.
- •Var a, b, y: real;
- •Var X, y, k: real;
- •Оператор вибору.
- •Var a:byte;
- •X, y, c:real;
- •Оператор безумовного переходу.
- •1: Write (‘*’);
- •Програмування циклічних процесів. Алгоритми циклічних процесів.
- •Var і, s: integer;
- •Var I,n, y :integer;
- •Var a,b,c,d,e,f: byte;
- •Var a, X, w: real;
- •Var a, X, w: real;
- •Var X, y, a, b, hx, max, xmax: real;
- •Алгоритми ітераційних процесів.
Var X, y, a, b, hx, max, xmax: real;
begin
writeln(‘ввести a, b, hx’);
readln(a, b, hx);
max:= -1.0e20;
x:= a;
while x<=b do
begin
y:= sqr(sin(x- pi))-sqr(x);
if y> max then
begin
max:= y;
xmax:=x;
end;
x:=x+hx;
end;
writeln (max,xmax);
end.
Оператори WHILEтаREPEAT використовуються як для регулярних, так і ітераційних циклів.
Алгоритми ітераційних процесів.
Не завжди можна наперед точно вказати, скільки повторень у циклі. В цьому випадку цикл закінчується, коли виконується поставлена умова. Такі цикли мають назву ітераційні.
Розглянемо задачу:
Приклад 2.13.: Деяка послідовність чисел будується за правилом
; де n=1,2,3,....
Вивести на екран перше число, яке менше за задане число x (0x1).
Числа, які утворюють послідовність: 1, 0.14285, 0.05882,.... Якщо задане число х=0.101, то на екран треба вивести 0.05882, якщо х=0.5, то на екран треба вивести 0.14285. Неможливо наперед вказати, скільки таких чисел буде обчислено. Як тільки буде одержано число a, що менше за задане х, то треба закінчити одержання послідовності чисел a, та вивести на екран останнє одержане число.
Складемо алгоритм:
Обчислення значень функцій у математиці часто замінено обчисленням наближеного значення деякої нескінченної суми.
Приклад 2.14. Обчислити з точністю >0
Обчислення завершити, коли наступний доданок стане менше за .
Введемо позначення:
величина |
ідентифікатор |
тип |
сума |
y |
дійсний |
доданок |
a |
дійсний |
факторіал |
f |
дійсний |
степінь |
st |
дійсний |
точність |
e |
дійсний |
проміжний лічильник |
i |
цілий |
Складемо блок-схему:
Приклад 2.15. Наближене обчислення кореня рівняння.
Нехай задане рівняння f(x)=0. Треба знайти його корені. Відомо з математики, що, якщо немає точних формул розв’язання рівняння, то існують методи наближеного обчислення його коренів. Таких методів декілька: метод поділу пополам, метод дотичних, метод хорд, ітераційний метод. Розглянемо метод поділу пополам.
Першим кроком до знаходження кореня рівняння треба знайти відрізок, в якому є один такий корінь. Для цього існують спеціальні математичні дослідження. Якщо значення функції змінює свій знак на якомусь відрізку, то в його середині існує хоча б один корінь. Далі треба за допомогою першої похідної зробити уточнення, чи дійсно існує саме один корінь на позначеному відрізку.
Далі робота складається з дуже простих дій.
Крок 1. Відрізок [a, b] треба поділити навпіл .
Крок 2. Одержимо два відрізка: [a, x] та [x, b]. В тому з них, де значення функції змінює свій знак, знаходиться корінь. Відрізок [a, b] замінюємо вибраним новим відрізком. Для цього або а замінюємо на х, або b на х.
Крок 3. Точне значення кореня дорівнює х, якщо значення f(x) дорівнює нулю. Але це буває дуже рідко. Тому повторюємо крок 1 для вибраного нового відрізку [a, b] до тих пір, поки довжина відрізка не стане менше заданого значення похибки (|b - a| ).
Введемо позначення:
величина |
ідентифікатор |
тип |
Корінь |
X |
дійсний |
нижній кордон |
A |
дійсний |
верхній кордон |
B |
дійсний |
точність |
E |
дійсний |
проміжний покажчик |
Zt |
логічний |
Складемо алгоритм.
zt:=f(x)*f(b)<0
a=x
b=x - + - +
-
+
-
+ -
+
рис. 3.3 Блок-схема алгоритму до прикладу 3.6.
-
+
-
+
рис. 3.4 Блок-схема алгоритму до прикладу 3.19.