Алгоритми з повтореннями. Цикл з післяумовою


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

Оператор  циклу  Repeat  використовують  у  тих випадках,  коли  потрібно  спочатку  виконати  деяку послідовність  дій,  а  потім  визначити,  чи  є  потреба повторювати  ці  дії  ще  раз. 

Синтаксис  оператора 
Repeat:

Repeat<оператор>
Untіl
<умова>;  

Тут <умова>  —  логічний  вираз,  що  є  умовою 
виходу  з  циклу; 
<оператор>  —  оператор,  який  виконується  при 
кожній  ітерації  (тіло  циклу).
Порядок  виконання  циклу 
Repeat: 
  1)   виконується 
<оператор> —  вказівки,  які  входять  у  тіло  циклу;
  2)   перевіряється 
<умова>. Якщо умова хибна, то оператори тіла циклу  повторюються,  якщо  ж  умова  істинна  —  цикл  Repeat  припиняє свою роботу і виконується наступний оператор програми.
Тіло циклу — блок операторів між Repeat і Untіl — обов’язково виконується  хоча  б  один  раз.

Типові задачи:
1. Вивести  парні  числа  від  2  до  12  

vark: Integer;begink := 0;
Repeat
k := k + 2;
Label1.Caption := IntToStr(k);
Until k >= 12;
end; 


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

varn, S: Integer;beginn := 0; S := 0;        
Repeat
n := n + 1; S := S + n;
Until S > 1000;
Edit1.Text := IntToStr(n);end;

3. Знайти  суму  цифр  натурального  числа  n
varn, d, S: Integer;begin
n := StrToInt(Edit1.Text);
S := 0;
Repeat
d := n mod 10; { знайдено останню цифру числа}
S := S + d; // цифра d додається до суми
n := n div 10; // відкидається остання цифра числа n
Until n=0; { Якщо n = 0, цикл припиняє роботу, оскільки всі цифри
числа розглянуто }
Edit2.Text := IntToStr(S);
end;

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

varS: String;
i, count: Integer;
begin
S := Memo1.Text;
i := 0;
If  length(S) > 0 
Then 
begin // Якщо довжина рядка S не нульова,
      count := 1; // є хоч одне слово
      Repeat
          i := i + 1; // Перевіряється кожен символ рядка S
          If S[i] = ‘ ‘ // Якщо знайдено пропуск,
          Then count := count + 1; // то збільшується лічильник слів на 1
     Until i >= length(S);
 endElse count := 0;
Edit2.Text := IntToStr(count);
end;
  
Домашнє завдання:
1. Чахлик Невмирущій має А скринь із золотом, і кожного року додається ще В скринь. Василиса Премудрая пообіцяла, що вийде за нього заміж, якщо він матиме  D скринь. Скільки років буде тоді нареченій, якщо ій зараз 18?

2. Виконайте тестове завдання 40 з автоматичною перевіркою на сайті 
interactive.ranok.com.ua

 
 

Комментариев нет:

Отправить комментарий