Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
34
Добавлен:
07.02.2016
Размер:
342.02 Кб
Скачать

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).

Складемо програму:

Соседние файлы в папке конспект лекцій 1 паск