
- •Лекція 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 a,b,c,d,e,f: byte;
k: word;
begin
k:=0; {ініціалізація к }
for a:=0 to 9 do
for b:=0 to 9 do
for c:=0 to 9 do
for d:=0 to 9 do
for e:=0 to 9 do
for f:=0 to 9 do
if a + b + c= d + e + f then k:=k+1;
writeln(‘кількість щасливих білетів’, k);
end.
Тепер розглянемо такі регулярні цикли, для яких використання оператору forне є раціональним. Звичайно це в тому випадку, коли параметр циклу не є скалярною величиною. Тоді доцільно використовувати оператори WHILE та REPEAT. Як приклад візьмемо задачу складання таблиці значень функції w:=sin(x) +a для заданих значень х, яка була розглянута в прикладі 2.8. Тоді була складенаблок-схема алгоритму.Напишемопрограму для циклу з передумовою з використанням оператораwhile:
Приклад 3.17.
Var a, X, w: real;
begin
readln(a);
x:=1;
while x<= 6 do
begin
w:=sin(x) +a;
writeln(x,w);
x:=x+1;
end;
end.
Спочатку комп’ютер перевіряє істинність умови, зазначеної після слова While. Якщо x<= 6, то виконується оператор, який стоїть після слова Do. Далі знову перевіряється умова і все повторюється. Якщо умова хибна, то цикл припиняє роботу і управління передається до оператора, який стоїть наступним після оператора циклу.
Для цієї ж задачі використання циклу з післяумовою через оператор REPEAT приводить до такої програми:
Приклад 3.18.
Var a, X, w: real;
begin
readln(a);
x:=1;
repeat
w:=sin(x) +a;
writeln(x,w);
x:=x+1;
until x>6;
end.
Спочатку виконуються оператори, які записані між словами Repeat та Until. Далі перевіряється умова, що записана після слова Until. Якщо умова істина, то цикл закінчується, якщо хибна, то цикл повторюється.
Оператори WHILE та REPEAT відрізняються між собою за дією. Оператор WHILE може ні разу не виконати оператор, що стоїть після слова DO, а оператор REPEAT виконує оператори тіла циклу хоч би раз. Крім цього, слід зауважити, що оператор WHILE іноді доцільніше використовувати, ніж оператор REPEAT. Це залежить від математичної моделі, яку ви складаєте для своєї задачі.
Увага! Слідкуйте за тим, щоб поставлена умова в операторах циклу була правильна. Помилка може привести або до нескінченого циклу, або до виконання програми без циклічного повторення. Крім того, не забувайте нарощувати параметр циклу, інакше це приведе до нескінченного циклу. В такому разі зупинити програму можна за допомогою сукупності клавіш Ctrl+Break.
Приклад 3.19.
Визначити найбільше значення функції
у= f(x),де f(x)=на
відрізку
.
Нехай змінна maxбуде найбільшим значенням
функції. Присвоюємо max
значення дуже малої величини, наприклад
-1.0*1020.
Після цього переглядаємо значення
функції f(x),
порівнюючи його з значенням змінної
max. Якщо
значення функції перевищує значення
змінної max,
то змінній max
присвоюється знайдене значення. При
цьому можна занести в спеціальну
комірчину пам’яті xmax
значення x,
яке відповідає знайденому значенню
функції f(x).
Якщо таким чином переглянути весь
відрізок з
визначеним кроком, обов’язково
запам’ятаємо найбільше
значення функції f(x)=
.
Для розв’язання задачі треба використати цикли «з передумовою» або «з післяумовою», але не цикл «для», тому що крок зростання x не обов’язково є цілою величиною.
Величина |
ідентифікатор |
тип |
початкове значення аргументу х |
a |
дійсний |
останнє значення аргументу х |
b |
дійсний |
крок зміни аргументу х |
hx |
дійсний |
значення функції f(x) |
y |
дійсний |
найбільше значення функції |
max |
дійсний |
значення аргументу х, при якому функція приймає найбільше значення |
xmax |
дійсний |
Побудуємо блок- схему алгоритму (рис.3.4).
Складемо програму: