МБОУ "Лицей №57"

Адрес: г.Прокопьевск, ул.Институтская, 41


E-mail: lyceum57@mail.ru

Циклы с условием

Цикл с неизвестным числом шагов

Пример: требуется отпилить полено от бревна. Сколько раз надо сделать движения пилой?

Задача 1: Ввести целое число и определить число цифр в нем.

Идея решения: Отсекаем последовательно последнюю цифру, увеличиваем счетчик.

Проблема: Неизвестно, сколько шагов надо сделать.

Решение: Надо остановиться, когда n = 0, т.е. надо делать «пока n <> 0».
 program qq;

var n, k: integer;

begin

  writeln('Введите целое число');

  read(n);

  k := 0;

  while n <> 0 do begin

    k := k + 1;

    n := n div 10;

  end;

  writeln('В числе ', n, ' нашли ',  k, ' цифр');

end.

Цикл с предусловием

while <условие> do begin

   {тело цикла}     

 end;

Особенности цикла while:

          можно использовать сложные условия:

while (a < b) and (b < c) do begin

  {тело цикла}

end;

          если в теле цикла только один оператор, слова begin и end можно не писать:

while a < b do

 a := a + 1;

          условие пересчитывается каждый раз при входе в цикл

          если условие на входе в цикл ложно, цикл не выполняется ни разу

a := 4; b := 6;

while a > b do

a := a – b;

          если условие никогда не станет ложным, программа зацикливается

a := 4; b := 6;

while a < b do

d := a + b;

Задание 1. Сколько раз выполняется цикл?

а)      a := 4; b := 6;

while a < b do a := a + 1;

б)      a := 4; b := 6;

while a < b do a := a + b;

в)      a := 4; b := 6;

while a > b do a := a + 1;

г)       a := 4; b := 6;

while a < b do b := a - b;

д)      a := 4; b := 6;

while a < b do a := a - 1;

Цикл с постусловием

repeat

   {тело цикла}     

until  <условие>;

Особенности цикла repeat:

          можно использовать сложные условия

          цикл выполняется хотя бы один раз

          условие пересчитывается каждый раз при выходе из цикла

          цикл заканчивает выполнение когда условие становится верным

          если условие на выходе цикла всегда ложно, программа зацикливается

 

Задание 2. Сколько раз выполняется цикл?

а)      a := 4; b := 6;

repeat a := a + 1; until a > b;

б)      a := 4; b := 6;

repeat a := a + b; until a > b;

в)      a := 4; b := 6;

repeat a := a + b; until a < b;

г)       a := 4; b := 6;

repeat b := a - b; until a < b;

д)      a := 4; b := 6;

repeat a := a + 2; until a < b;

Решим задачу 1 с использованием цикла с постусловием:

program qq;

var n,k: integer;

Begin

Read(n); k:=0;

   repeat

     n:=n div 10;

              k:=k+1;

   until n = 0;

   writeln(‘k=‘,k);

end.

Задача 2. Ввести натуральное число и определить, верно ли, что сумма его цифр равна 10.

program qq;

var n, a, s: integer;

Begin

Read(n); s:=0;

   repeat

              a:= n mod 10;

              s:=s+a;

     n:=n div 10;

    until n = 0;

   if s=10 then writeln(‘верно‘);

end.

 Задание 3. Определить результат выполнения фрагмента программы:

а)

s: =0; i: =1;

repeat

s:= s +10 Div i;

i:=i+1;

until I>5;

б)

a: =1; b: =1;

While a <= 4 Do

begin

  a: =a + 1;

 b: = b + 5;

end;

Задача 3. Составить программу нахождения количества делителей числа n (значение n вводится с клавиатуры).

Решение: Делители числа n будут находиться в диапазоне от 1 до n. Чтобы найти количество делителей нужно проверить является ли число x делителем числа n. (x= 1, 2, 3, …, n).

Read(n);

k:=0; x:=1;

While x<=n do

Begin

If n mod x =0 then k:=k+1;

x:=x+1;

End;

Задача 4. Составить программу нахождения всех простых  чисел n  от 1 до 1000 (значение n вводится с клавиатуры). Число называется простым, если у него нет делителей кроме 1 и самого числа.

Решение: Нужно подсчитать делители в диапазоне от 2 до n-1 для числа n, если количество таких делителей равно  0, то число простое.

Алгоритм будет содержать  вложенный цикл. Исполнение вложенных циклов происходит так: для каждого значения параметра внешнего цикла происходит полная «прокрутка» внутреннего цикла.

Program z3;

Var  n, x, k:integer;

begin

For  n:=1 to 1000 do begin

K:=0; x:=2;

While x<=n-1 do

Begin

If n mod x =0 then k:=k+1;

X:=x+1;

End;

If k=0 then writeln (n, ‘-простое’);

End;

End.

Обратная связь

Имя отправителя *:
E-mail отправителя *:
Тема письма:
Текст сообщения *:
Код безопасности *:

Задачи для самостоятельной работы:

  1. Найти все делители натурального числа.
  2. Составьте программу проверки, является ли число простым. Число называется простым, если все его делители 1 и оно само.
  3. Составьте программу вычисления, является ли заданное число совершенным. Число называется совершенным, если оно равно сумме всех своих делителей, меньших, чем оно само. (28=1+2+4+7+14)
  4. Составьте программу проверки, являются ли два числа, введенных с клавиатуры «близнецами». Два числа являются «близнецами», если они простые и отличаются друг от друга на 2 (например, 41 и 43).
  5. Составьте программу проверки, являются ли два числа, введенных с клавиатуры дружественными. Два числа  - дружественные, если каждое из них равно сумме всех делителей другого, кроме самого числа. (220 и 284).
  6. Составьте программу определения всех простых чисел, меньших 1000.
Бесплатный хостинг uCoz