Інформатики. 10 клас (Підвищений рівень)
Для запису оператора циклу з передумовою використовується команда while. Формат команди:
while . Формат команди:
Умова запису оператора циклу може бути простою і складною. Фігурні дужки можуть бути опущені, якщо тіло циклу складається з однієї команди.
Приклад 5.1. Написати програму, яка визначить кількість цифр у натуральному числі n.
Етапи виконання завдання
I. Вихідні дані: n (задане число).
ІІ. Результат: k – кількість цифр у числі.
ІІІ. Алгоритм розв'язання задачі.
1. Введення вихідних значень.
2. Початкове значення змінної k = 0.
3. Щоб порахувати кількість цифр у числі, ділитимемо число на 10 доти, доки число більше 1. Оскільки умова продовження роботи невідома, то будемо використовувати цикл while .
4. У циклі зменшуватимемо число n у 10 разів і збільшуватимемо значення k на 1.
5. Виведення результату.
Цикл while працює доти, доки умова циклу істинна. Щоб цикл завершив свою роботу, у тілі циклу мають бути команди, виконання яких призведе до того, що умова циклу стане хибним. Якщо таких команд немає, цикл виконується безкінечно. Таку ситуацію називають зациклюванням. У разі зациклювання потрібно перервати виконання програми. У Code::Blocks можна використовувати кнопку .
using
namespace
std ;
ЦП Автоматизовані системи управління та промислова безпека
Якщо програмі виникає необхідність неодноразового виконання деяких операторів, то використовуються оператори повтору (цикла).У мові Паскаль різниці три види операторів циклу: while , repeat , for . Вони використовуються для організації циклів різних типів. Вираз, що управляє повтореннями, повинен мати булевський тип.
Якщо кількість повторень оператора (складеного оператора) заздалегідь невідома, а задана лише умова його повторення (або закінчення), використовуються оператори while, repeat. Оператор for використовується, якщо кількість повторень заздалегідь відома.
Оператор
while
Оператор while (поки що) часто називають оператором циклу з передумовою за те, що перевірка умови виконання тіла циклу проводиться на початку оператора.
Синтаксична діаграма для даного оператора виглядає так:
Умова - Булівський вираз, тіло циклу - простий або складовий оператор. Перед кожним виконанням тіла циклу обчислюється значення вираження умов. Якщо результат дорівнює True , тіло циклу виконується і обчислюється вираз умови. Якщо результат дорівнює False , відбуваються вихід із циклу і перехід до першого після while оператору.
Оператор повтору
repeat
Оператор повтору repeat аналогічний оператору while , але відрізняється від нього, по-перше, тим, що умова перевіряється після чергового виконання операторів тіла циклу (чергової ітерації) і таким чином гарантується хоча б одноразове виконання циклу, а по-друге, тим, що Критерієм припинення циклу є рівність виразу константі True. За цей цикл repeat часто називають циклом з постумовою, або циклом "ДО", тому що він припиняє виконуватися, як тільки значення висловлювання умови, записаного після слова until, дорівнює True (істина).
Оператор повтору repeat складається з заголовка repeat, тіла та умови закінчення until.
Синтаксична діаграма для даного оператора виглядає так:
Оператори, укладені між словами repeat і until є тілом циклу. Спочатку виконується тіло циклу, потім перевіряється умова виходу із циклу. Саме тому цикл, організований за допомогою оператора repeat, у будь-якому випадку виконається хоча б один раз. Якщо результат булевського виразу дорівнює False, тіло циклу активізується ще раз; якщо результат True , відбувається вихід із циклу.
Оператор повтору
for
У випадках, коли число повторень може бути заздалегідь відоме, для організації циклічної обробки інформації застосовується оператор повтору for . Часто цей оператор повтору називають оператором циклу з параметром, так як число повторень задається змінною, званої парою метром циклу, або змінною, що управляє.
Оператор повтору for складається із заголовка та тіла циклу.
Синтаксична діаграма для даного оператора виглядає так:
Як видно з діаграми, він може бути представлений у двох форматах:
де S 1 і S 2 - вирази, що визначають відповідно початкове та кінцеве значення параметра циклу.
Тіло циклу може бути простим чи складовим оператором. Оператор for забезпечує виконання тіла циклу доти, доки не будуть перебрані всі значення параметра циклу від початкового до кінцевого.
Заголовок оператора повтору for визначає:
• діапазон зміни значень керуючої змінної (параметра циклу) та одночасно число повторень оператора, що міститься в тілі циклу;
• напрямок зміни значення параметра циклу (зростання - to або спадання - downto).
При першому зверненні до оператора спочатку обчислюються вирази S 1, S 2 і здійснюється присвоєння : = Sl .
Після цього циклічно повторюються такі дії.
3. значення керуючої змінної змінюється на +1 ( to ) або -1 ( downto ) і далі з п. 1. Зверніть увагу, що крок зміни змінної керуючої - одиниця.
На використання керуючої змінної (параметра циклу) у циклі for накладаються такі обмеження.
1. як параметр має використовуватися проста змінна, описана в поточному блоці.
2. керуюча змінна повинна мати дискретний тип.
3. початкові та кінцеві значення діапазону повинні мати тип, сумісний з типом керуючої змінної. При цьому допустимо будь-який скалярний тип, крім речового.
4. у тілі циклу забороняється явна зміна значення керуючої змінної (наприклад, оператором присвоєння).
5. після завершення оператора значення керуючої змінної стає невизначеним, якщо виконання оператора не було перервано оператором переходу.
Цикли. Оператори циклу for, while-do, repeat-until. Оператори завершення циклу break, continue
Іноді алгоритм розв'язання задачі може бути реалізований таким чином, що потрібно виконувати одні й самі операції кілька разів. Алгоритм, у якому певна послідовність команд повторюється кілька разів, називається циклічним.
Оператори циклу використовуються для зручної організації циклічного процесу у програмі.
2. Які є види операторів циклу у мові Паскаль?
У мові Паскаль передбачено три різновиди операторів циклу:
- цикл з параметром (for-to-do);
- цикл з передумовою (while-do);
- цикл із післяумовою (repeat-until).
3. Який загальний вигляд оператора циклу з параметром for?
Цикл із параметром має два варіанти реалізації.
Варіант 1 Загальний вид циклу з параметром:
for
Лічильник := ПочатковеЗначення
to
КінцевеЗначення
do
begin
// Інструкції, оператори
end;
де Лічильник - Змінна перечислювального типу, яка в циклі має крок приросту рівний 1 ; ПочатковеЗначення - Початкове значення параметра Лічильник ; КінцевеЗначення - Кінцеве значення параметра Лічильник .
Якщо ПочатковеЗначення більше за КінцевеЗначення , то інструкції між begin та end не виконуються. Якщо між begin та end є лише одна інструкція (оператор), то ключові слова begin та end можна опустити.
Варіант 2 Загальний вид циклу з параметром:
for
Лічильник := ПочатковеЗначення
downto
КінцевеЗначення do
begin
// Інструкції, оператори
end;
У цьому випадку значення параметра Лічильник не зростає на 1, а зменшується на 1 (крок зміни дорівнює -1).
приклад застосування оператора циклу із параметром.
Скласти програму для обчислення факторіалу. Факторіал обчислюється за такою формулою:
n! = 1 * 2 * 3 * ... * n.
. var
i,n:integer; f:real; . begin
// n - задається f:=1; for
i:=1 to
n do f:=f*i; // f – результат факторіалу
end.
4. Який вид має оператор циклу з передумовою while-do?
Загальний вигляд оператора циклу з передумовою:
while
умова
do
begin
// деякі інструкції
end;
Приклад застосування оператора циклу з передумовою. Фрагмент коду, в якому здійснюється обчислення суми:
S = 2 + 4 + 6 + … + 200
s := 0; i := 0; while
i200 do
begin i:=i+2; s:=s+i; end;
5. Який вид має оператор циклу з умовою repeat-until?
Загальний вигляд оператора циклу з умовою:
repeat
// деякі інструкції
until
умова;
Оператори, розміщені між ключовими словами repeat і until будуть виконуватися доти, доки логічний вираз, вказаний після until , не прийме значення true .
6. Приклад обчислення суми за допомогою різних операторів циклу.
Завдання.
За допомогою оператора циклу обчислити суму:
S = 1 + 2 + … + 100
Рішення 1. Використання оператора циклу з параметром for.
// опис змінних
var s, i: integer; begin . s:=0; for
i := 1
to
100
do s: = s + i; . end.
Рішення 2. Використання оператора циклу з передумовою while.
// опис змінних
var s, i: integer; begin . s := 0; i := 0; while
i100 do
begin i := i + 1; s: = s + i;
end; . end.
Рішення 3. За допомогою оператора циклу з умовою repeat .
// опис змінних
var s, i: integer; begin . s := 0; i := 0; repeat i := i + 1; s: = s + i; until
i>=100; . end.
7. Які є оператори завершення циклу?
Для всіх операторів циклу вихід із циклу здійснюється як внаслідок природного завершення оператора циклу, так і за допомогою операторів переходу та виходу.
У стандартному Паскалі визначені стандартні оператори Break та Continue.
Оператор Break виконує безумовний вихід із циклу. Оператор Continue забезпечує перехід на початок нової ітерації циклу.
8. Приклад використання оператора break.
Іноді буває зручно вийти з циклу не за результатом перевірки, яка здійснюється на початку або наприкінці циклу, а якимось іншим способом. Таку можливість надає інструкція break.
Фрагмент програмного коду, який визначає наявність заданого елемента масиві m1 . Значення елемента описується у змінній x . Якщо елемент є, то недоцільно здійснювати пошук у масиві далі. У цьому випадку використовується операція break .
. f_is := false; // змінна, визначальна чи є елемент x масиві m1
for
i := 1
to
100
do
begin
if
m1[i]=x then
begin f_is := true; // Елемент x є в масиві чисел break; // вихід із циклу, недоцільно проводити пошук далі,
// оскільки елемент вже знайдено
end; end; .
9. Приклад використання оператора continue.
Інструкція continue використовується, якщо потрібно зупинити поточну ітерацію та перейти до наступної ітерації.
Приклад фрагмента коду, який множить на 2 усі позитивні елементи масиву m1 із 100 цілих чисел. Якщо зустрічається негативний елемент, він пропускається.
. for
i := 1
to
100
do
begin
if m1[i]0 then
// пропустити негативний елемент continue; // і перейти до наступної ітерації m1[i] := m1[i]*2; end; .