20 груд. 2015 р.

Оператор повторення. Цикл з передумовою

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

while <умова> do 
  begin 
    <серія команд>
  end;
Тобто, поки твердження істинне, то вказівка буде повторюватись, це відбуватиметься доти, доки твердження, що лежить в умові циклу не стане хибним.



Розглянемо приклад задачі з використанням оператора циклу while (поки).

Задача 1. Мама купила Катрусі деяку кількість цукерок. Першого дня Катруся з'їла 1 цукерку, наступного - 2, потім - 3 тощо. Якого дня Катруся з'їсть останню цукерку, якщо спочатку їх у неї було N? Число N ввести з клавіатури.
Аналіз умови: N - загальна кількість цукерок. К - номер дня.
Кількість цукерок, які з'їдає дівчинка, збігається з порядковим номером дня, який дорівнює К.
Реалізація на Pascal:
var N,K: byte;
begin
  read(N); {вводиться значення N - кількість цукерок, які придбано}
  while N>0 do {поки кількість цукерок N більше нуля, виконувати цикл}
    begin
      K:=K+1; {до порядкового номера дня додати 1, початкове значення К = 0}
      N:=N-K; {від загальної кількості цукерок відняти кількість цукерок, яка дорівнює порядковому номеру дня}
   end;
 write (K) {вивести останній порядковий номер дня}
end.
Задача 2. Підрахувати кількість цифр заданого натурального числа N.
var m, n, k: integer;
begin
  write ('Введіть натуральне число: ');
  read(n);
  k:=0;
  while n<>0 do
    begin
     k:= k+1;
     n:= n div 10;
    end;
  writeln ('Кількість цифр у числі - ', k);
end.
Задача 3. Підрахувати суму цифр натурального числа N.
var n, S, a: integer;
begin
 write ('Введіть натуральне число: ');
 Read(n);
 S:=0;
 while n<>0 do
  begin
  a:= n mod 10;
  S:= S+a;
  n:= n div 10;
  end;
  writeln ('Сума цифр становить - ', S);
end.

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

Дописати коментар