Б С Бусигін - Прикладна інформатика - страница 34

Страницы:
1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83 

На рисунку S.33 наведена схема розташування вищенаведених об'єктів у декартових осях координат X та Y.

t Y

Y = X

О

І

X0=l

2

Xl=2

3

X2=2

4

X3=4

5

X4=5

Рис. S.33. Розташування та значення абсцис X та значень ординат Y для заданих значень і виразів

Таким чином цикли можна конструювати, якщо визначені: О початкове X 0 та кінцеве XN значення аргументу; в крок h зміни аргументу;

© кількість N відрізків на ділянці поміж X0 та X n;

О кількість K=N+l значень аргументів X. Умовами виходу з циклу можуть бути:

О вичерпання кількості N обчислених значень функції Y=f(X) для усіх N значень аргументів X 0, Xl, ... , XN.

в перевищення поточним значенням аргументу X кінцевого значення аргументу X N , який моделюється.

Програмно цикл можна реалізувати за допомогою:

О операторів привласнення (:=);

в умовного оператору (if ... then ... else);

© оператору безумовного переходу (goto).

Але у мові ТП для цієї цілі існують спеціальні оператори циклу, котрі виключають необхідність конструювання програм за допомогою інших операторів.

Окрім того, оператори циклу забезпечують більш компактну, прозору, простішу форму запису алгоритмів, а також дають змогу створювати більш ефективні програми.

Отже, Ви повинні дуже чітко розуміти, що існують два типи циклів: О з наперед відомою кількістю повторень; в з невідомою наперед кількістю повторень.

Цикли першого типу називають також циклами з лічильником (рос. -счётчиком) або з параметром, маючи на увазі, що цей параметр повинен змінюватися у ході обчислювань. Число повторень тіла циклу у цьому випадку підраховується за допомогою спеціальної змінної (лічильника), для якої відомі початкове і кінцеве (порогове) значення та значення шагу її зміни. Управління цим циклом здійснюється за допомогою порівняння поточного значення лічильника з заданим пороговим (максимальним або мінімальним) значенням. Змінну-лічильник часто звуть параметром циклу, а самий цикл - циклом з параметром.

Оператор циклу з параметром у мові Турбо Паскаль є управляючою структурою, яка задає повторення процесу виконання одного оператора чи групи операторів у межах зміни значення деякого параметра поміж двох цілих чисел, з яких одне є початковим, а інше - кінцевим. Параметр, що пробігає у своїх значеннях від початкового до кінцевого, зветься управляючим параметром циклу (УПЦ). Тип УПЦ завжди цілий (і), а зміна його провадиться з шагом тільки І (або -і).

Загальний вигляд оператора циклу з параметром такий:

for ... to ... do (або for ... downto ... do). Сінтаксис цих двох форм даного оператора такий:

for <ім'я УПЦ := початкове значення> to <кінцеве значення> do

<оператор>;

for <ім'я УПЦ := кінцеве значення> downto <початкове значення> do

<оператор>;

При використовуванні циклу for . to . do потрібно мати на увазі наступне:

О у тілі циклу може стояти тільки один оператор, а при необхідності застосування більшої їх кількості, останні об'єднуються у складений операторними дужками begin та end;

в в середині тіла циклу не можна примусово (рос. - принудительно) змінювати значення УПЦ;

© у цикл можна входити тільки через його заголовок. Тобто, не можна передавати управління з поза його меж у його середину (рисунок S.34).

О змінна циклу може бути тільки перелічувального типу.

Так не можна!!!

Рис. 8.34 Неможливість передачі управління в середину

циклу з параметром

Наведемо приклад обчислення за допомогою циклу з параметром значення дійсного числа зведеного у цілу ступінь у = а". Для цього скористуємося

формулою a = а-а-а-... а. Додатково обчислимо суму

V        Y '

i4-у-'

(додавати n разів)

= а-а-

(помножити п разів)

{Обчислення ступеня дійсного числа a}

{  і суми цих ступенів}

Program Stupen;

Var

A,  Y,  S  : real; I, N : integer; Begin

Шгіге1п('Введемо основу а та ступінь n');

Readln(A, N);

Y:=1;

S:=0;

for I:=1 to N do

begin

Y:=Y*A; S:=S+Y;

end;

Write1n(N,   'Ступінь числа', А); Write1n('Дорівнює= ',Y,   сума ступенів',Б); End.

Як правило, цикли з параметром використовуються з структурами даних типу масивів. Це пов'язано в першу чергу з тим, що цей тип є статичним і з початку програми повинен бути описаним на визначену заздалегідь розмірність. А параметр циклу при своєї зміні проходячи від початкового значення індексу масиву до кінцевого його значення, яке співпадає з пороговою величиною цього параметру, дозволяє легко опрацьовувати його (масиву) елементи.

Вправи

1. Що таке цикл?

2. Для чого потрібен параметр циклу?

3. Для чого служить порогове значення параметру циклу?

4. Поясніть логіку виконання циклів for  ...  to ... do і for  ...  downto ..do.

5. Які змінні можуть використовуватися як параметр циклу For? Які змінні можуть використовуватися як границі діапазону для параметра циклу For?

6. Які фрагменти дій повинен містити алгоритм циклічної структури у найбільш загальному вигляді?

7. Побудувати   таблицю   значень   абсцис   і   ординат   для функції f(x) = x- sin(x) на відрізку [0,7г/2] з числом розбивок відрізка m=10 та вивести дані на екран.

8. Написати програму для вивіду на екран таблиці значень функції y=tg x - sin 2x на проміжку [-п/4; п/4] із кроком п/16.

9. Написати програму для виводу на екран таблиці значень функції y=x2 + 7x - 14 на проміжку [-3; 8] із кроком 0,55.

10. Написати програму для виводу на екран таблиці значень функції

sinx + sin2X         га    п ,n

y =- на проміжку [0; п] із кроком п/12.

cosx+cos2x

11. Обчислити Sn (суму N перших значень) виразів S, якщо

+....

12. Обчислити значення кінцевої суми S для виразу:.

5 12

S = Уn2 +Yn3 .

n=1 n=1

13. Обчислити значення кінцевої суми Б для кінцевого ряду -+-+•••+

З 8

nl -1

1

Значення n увести з екрану.

14. Обчислити   значення   кінцевого   добутку   для   виразу   суми Б

1 + —--1 •( 1 + —-—-][ 1 + —--1. Значення п увести з екрану. 1(1 + І    2(2 + 2у   І    л(л + 2)^ * р у

8.17. Оператор циклу з передумовою while. Оператор циклу з післяумовою repeat

Вище були розглянуті алгоритми з конструкцією циклічної структури типу:

for <УПЦ:=1> to <порогове значення N> do <оператор>,

яка працює з заздалегідь відомою кількістю повторень циклу N. Але, існують такі випадки, коли кількість повторень циклу взагалі невідома, але завдані деякі умови його завершення або продовження. Для програмної реалізації таких обчислювальних процесів у мові ТП існує два оператори:

О оператор циклу з передумовою (while ... do);

в оператор циклу з післяумовою (repeat  ... until). Оператор циклу з передумовою має таку загальну форму запису:

while <УМОВА> do <ОПЕРАТОР>;

Тут:

О слова while (поки) та do (робити) є службовими;

в УМОВА - логічний вираз будь якого ступеню складності;

© ОПЕРАТОР - будь який оператор мови ТП і у тому числі складений оператор. Зверніть увагу на те, що у цьому операторі може використовуватися тільки один(!) оператор (привласнення, умовний, вибору, і т. ін.), або сукупність операторів узята у операторні дужки begin ... end.

Важливо мати на увазі, що цикл з передумовою виконується тоді і тільки тоді, коли логічний вираз <УМОВА> дорівнює логічному значенню TRUE. Як тільки він приймає значення FALSE - цикл завершується і управління передається оператору, що слідує за цим циклом.

Якщо <УМОВА> має значення FALSE з самого початку, цикл не виконається ані одного разу. Тобто, не виконається ні одного оператору з тіла циклу.

Припустимо, що Вам потрібно обчислити за допомогою оператора циклу з передумовою функцію X для трьох різних випадків, що вказані у таблиці 8.39. Складність конструювання циклу витікає з тієї причини, що потрібно враховувати три логічних умови:

О змінна X повинна належати відрізку [-200, 200];

в значення ступеню функції X2 повинно не перевищувати 10З;

© у двох кінцевих варіантах завдання необхідно врахувати обчислення парних і непарних значень ступеню функції X2.

Складність вирішення цих задач полягає у тому, що Ви повинні урахувати початкове значення аргументу X, його участь у трьох вищевказаних логічних виразах та участь логічного виразу у операторі циклу while ... do. Нагадуємо, що для об'єднання декількох простих логічних виразів у один складний потрібно використовувати логічні операції (and, or, not).

Таблиця 8.39

Варіанти вирішення комплексних завдань

Умови трьох завдань

_2_

Обчислити значення Х для парних (рос.-

четньгх) значень змінної Х на відрізку (-200<Х>200), щоб максимальне значення степені Х не перевищувало 10

1

Обчислити значення Х2 для змінної Х (-200<Х>200), щоб максимальне значення степені Х не

перевищувало 10

З

Варіанти вирішення завдань 1,2 та 3 з циклом while 1 І 2 1

З

Обчислити значення Х2 для непарних (рос.-нечетньх) значень

змінної Х (-200<Х>200), щоб максимальне значення степені Х не перевищувало 10 . о!о

const tens = le3; var

x , st : Longint; begin

writeln('Vvedite X='); readln(x);

while ((x>=-200) and (x<=200)) and (x<=tens) do begin st := sqr(x); x := x +l; end; end.

const tens = le3; var

x , st : Longint; begin

writeln('Vvedite X='); readln(x);

while ((x>=-200) and (x<=200)) and (x<=tens)

do begin

If not (odd(x)) then st := sqr(x);

x := x +1; end;

end._

Зверніть увагу на те, що якщо будуть введені значення Х < -200, або X > 200 цикл в усіх трьох програмах не буде виконано ні жодного разу.

const tens = le3; var

x , st : Longint; begin

writeln('Vvedite X='); readln(x);

while ((x>=-200) and (x<=200)) and (x<=tens)

do begin If (odd(x)) then st := sqr(x); x := x +l; end; end._

Оператор циклу з післяумовою має наступний вигляд.

repeat

<ОПЕРАТОР-1>; <ОПЕРАТОР-2>;

<ОПЕРАТОРЧЯ> until <УМОВА>;

Де:

О repeat (повторяти), until (до тих пір, поки...) - службові слова;

в ОПЕРАТОР-i (і=1,2,    N) - будь який оператор мови ТП;

© УМОВА - логічний вираз, що побудований за правилами мови ТП.

25S

Дія оператора repeat ... until подібна до роботи оператора while ... do, але є деякі важливі різниці.

1. Перевірка значення логічного виразу <УМОВА> реалізується після одноразового виконання тіла циклу. Тобто оператори ОПЕРАТОР<1 ... N> будуть виконані хоча б раз за усякі умови.

2. Оператори repeat ... until подібні до операторних скобок begin ... end, тому поміж ними можна розміщувати групи операторів, відділяючи їх поміж собою точкою з комою.

3. Цикл repeat ... until виконується, на відміну від циклу while ... do, до тих пір, поки значення логічного виразу <УМОВА> дорівнює FALSE і завершує свою роботу коли він приймає значення TRUE.

Наведемо приклад використання цього циклу (див. табл.8.40) для вирішення попередньої задачі таблиці 16.1 обчислення функції Х .

Таблиця 8.40

_Варіанти вирішення комплексних завдань_

Завдання для вирішення

1                                2 З

Обчислити значення Х для змінної Х (-200<Х>200), щоб максимальне значення степені Х не перевищувало 10

Обчислити значення Х для парних (рос.-четньх) значень змінної Х (-200<Х>200), щоб максимальне значення степені Х не перевищувало 10

Обчислити значення Х для непарних (рос.-не-четньх) значень змінної Х (-200<Х>200), щоб максимальне значення степені Х не перевищувало 10

Варіанти вирішення завдань 1,2 і 3 з циклом repeat ... until

Страницы:
1  2  3  4  5  6  7  8  9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83 


Похожие статьи

Б С Бусигін - Прикладна інформатика