2.18.2017

Урок 43-44

Цикл з передумовою та цикл з післяумовою

Під час розв'язування багатьох задач обчислювальний процес має циклічний характер, тобто частина операторів багаторазово виконується при різних значеннях змінних. Для організації повторення дій (циклів) під час запису алгоритмів мовою Lasurus використовуються три різновиди операторів циклу: з параметром, з передумовою і з післяумовою.
Цикл з передумовою як фрагмент алгоритму починається з команди перевірки умови й результатом виконання цієї команди може бути:
Істина (Так, true)                       Хиба (Ні, false)
І залежно від результату виконання цієї команди – виконуватимуться:
Команди  тіла циклу       або      Команда алгоритму, наступна за циклом
У загальному випадку у цій команді визначається значення певного логічного виразу, яке може бути:
True або False
Загальний вигляд блок-схеми циклу з передумовою такий:
Команда циклу з передумовою в мові програмування Object Pascal має такий вигляд:
While <логічний вираз>
Then begin
  <команди тіла циклу>
  end;
(англ. while - поки)
Виконання цієї команди відбувається так: 
- обчислюється значення логічного виразу; 
- якщо це значення true, то виконуються команди тіла циклу, після чого знову обчислюється значення логічного виразу, і якщо це значення знову true, то знову виконуються команди тіла циклу, після чого знову обчислюється значення логічного виразу;
- якщо значення логічного виразу дорівнює false, то команди тіла циклу не виконуються, а виконується команда, наступна за циклом.
Звертаємо вашу увагу:
- якщо в тілі циклу лише одна команда, то операторні дужки begin і end можна не ставити;
- серед команд тіла циклу можуть бути й лінійні фрагменти, і розгалуження, й інші цикли.

Алгоритм обчислення суми n членів числової послідовності
Алгоритм обчислення n-го члена послідовності натуральних чисел і суми n членів складається з таких дій:
1) задаються початкові значення А, — першого члена послідовності, n — кількості членів, які потрібно обчислити;
2) задаються початкові значення лічильника членів послідовності (і := 0) і суми (S := 0); 
3) поки номер і-то члена послідовності, який обчислено, не досягне значення n— заданої кількості членів, повторюються дії: номер поточного доданка збільшується на 1; 
4) обчислюється значення наступного доданка А, обчислене значення А додається до суми S.

Наприклад: 
1. Знайти суму 20 елементів послідовності чисел 2,5; 3,0; 3,5; 4,0... 
2. Знайти суму всіх елементів послідовності  1, 1/2, 1/3, 1/4, 1/5…, значення яких не менше за 0,01.
Під час складання програми будемо вважати, що точність досягнуто, якщо черговий доданок менший за значення точності.

Під час складання циклічної програми важливо правильно вибрати варіант оператора циклу.
Якщо цикл продовжує роботу, поки значення змінних, що використовуються в тілі циклу, є допустимими для обчислень, то можна використовувати тільки цикл з передумовою.
Якщо значення обчислюються доти, поки вони не задовольняють деякої умови, то потрібен цикл із післяумовою.
Оператор циклу Repeat використовують у тих випадках, коли потрібно спочатку виконати деяку послідовність дій, а потім визначити, чи є потреба повторювати ці дії ще раз. Синтаксис оператора Repeat:
Виконання оператора циклу Repeat починається з виконання вказівок, які входять у тіло циклу, після чого обчислюється вираз умова. Якщо умова:
Блок операторів між Repeat і Until обов'язково виконується хоча б один раз.
Наприклад: 
1. Вивести парні числа від 2 до 12. 
Останнім надруковано число 12, оскільки при: k = 10 умова ще була хибною, відбулась ще одна ітерація, і в тілі циклу k отримало значення 12.

2. Знайти найменшу кількість перших натуральних чисел, потрібну для того, щоб одержати суму, більшу за 1000. 

3. Знайти суму цифр натурального числа N, кількість цифр у якому невідома.
Полічити кількість слів у введеному користувачем тексті. Вважатимемо, що слова відокремлюються виключно одним пробілом, а перший і останній символи текста (рядка S) не є пробілами. Отже, кількість слів у рядку S на 1 більша за кількість пробілів. Для    введення   текстового   рядка   використовується   компонент Memo (вкладка Standard на палітрі компонентів): він дозволяє вводити багаторядковий текст із клавіатури як значення властивості Text типу String.
Домашнє завдання за підручником ст.217 - 220





Немає коментарів: