top of page

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

    

WHILE  Условие выполнения цикла   DO
     Тело цикла

Оператор цикла WHILE состоит из заголовка и тела цикла. Ключевые слова  WHILE и DO обозначают «до тех пор, пока» и «выполняй» соответственно.

 Подавляющее большинство задач с циклами можно решать разными способами, используя при этом один из трех операторов цикла. Часто решения, использующие различные операторы цикла, оказываются равноценными. В некоторых случаях все же предпочтительнее использовать какой-то один из  операторов. Цикл WHILE. Цикл, который реализуется данным оператором, называют также циклом с предусловием

Небходимо решить следующую задачу: Распечатать квадраты чисел, находящихся в диапазоне от 0 до 1 с шагом 0,2.

Решая поставленную задачу, в процессе рассуждений нужно сделать вывод о том, что оператор цикла с параметром (оператор FOR) не позволяет решить задачу, поскольку он изменятся  с шагом 1 или -1.

Принцип выполнения оператора WHILE и примеры решения некоторых задач «Оператор цикла WHILE»:

 

       Проверка условия выполнения цикла производится в самом начале оператора – если значение условия истинно, то выполняется тело цикла и снова вычисляется выражение условия выполнения цикла. Так продолжается до тех пор, пока значение условия выполнения цикла не станет ложным.

     Следует знать:

  • число повторений операторов цикла WHILE определяется в ходе работы программы и как, правило, заранее неизвестно;

  • в операторе цикла WHILE точка с запятой никогда не ставится после зарезервированного слова DO;

  • для успешного завершения цикла WHILE в его теле обязательно должны присутствовать инструкции, оказывающие влияние на условие выполнения инструкций цикла;

  • инструкции тела цикла WHILE вообще могут быть не выполнены, если проверяемое условие ложно с самого начала;

  • исходя из последнего утверждения, цикл WHILE считают самым универсальным  видом цикла.

 

     Задача: распечатать квадраты чисел, находящихся в диапазоне от 0 до 1 с шагом 0,2. Составим блок-схему и программу решения задачи:      

 

var  k, s : integer;
begin
s := 0;
while s <= 1 do

begin
k := sqr(s);
writeln (k);
s := s + 0.2;
end;

readln;
end.

 

 

 

 

 

 

 

 

   Следующая задача: для проверки физического развития проверяют рост школьников. Составьте программу, запрашивающую рост очередного школьника и вычисляющую после завершения медосмотра средний рост прошедших осмотр.  Количество школьников, подлежащих медосмотру заранее не известно.

Решение. Чтобы получить средний рост С, надо знать количество школьников К и их суммарный рост S. Для вычисления величин K и S воспользуемся циклом WHILE. Однако здесь возникает проблема, какое условие следует выбрать для завершения цикла. Проще всего договориться – в конце рабочего дня в ответ на запрос о росте школьника ввести какое-либо фиктивное значение, например, 0.


var  k, s, r : integer; c : real;
begin

s := 0; k := 0;
write (‘введите рост школьника’);
readln (r);
while r <> 0 do

begin
k := k + 1;
s := s + r;
write (‘введите рост школьника’);
readln (r);
end;

c := s/k;
writeln (‘средний рост школьников’,c)
readln;
end.

   Задача 1. Вычислить у=х2 при х=2, 4, 6, 8, 10.

Program cikl1;

Var  X,Y:Integer;

Begin

X:=2;

While x<=10 Do

  Begin

Y:=Sqr(X);

Writeln(‘X=’,X:3, ‘Y=’,Y:5);

X:=X+2;

  End;

        End.

 

    Задача 2. Вычисление квадратного корня из вводимых чисел.

Program cikl2;

Var

X,Y:Integer;

C:Char;

B:Boolean;

  Begin

B:=True;

While B Do

Begin

Write(‘Введите число: ’);

Readln(X);

If X>=0 Then Writeln(‘Корень из ’, Х, ‘ равен ’, Sqrt(X))

            Else Writeln(‘Действительного ответа нет’);

While Not((C=’Y’)Or(C=’N’) Do

   Begin

        Write(‘Желаете ввести еще одно число? (Y/N) ’);

        Readln(C);

   End;

If C= ‘N’ Then B:=False;

End;

  End.

     Задача 3.  Сколько слагаемых должно быть в сумме 2+4+6+8+…., чтобы эта сумма оказалась больше некоторого   данного     натурального числа N.

 

Программа решения задачи может иметь вид:

Program Kol_slag;

var i,x,sum,n:integer; {i - счетчик слагаемых, в переменную x

будут записываться слагаемые, в переменной sum будет накапливаться сумма}

begin

x:=2;     {первое слагаемое равно 2}

i:=1;     {начальное значение счетчика слагаемых равно 1}

sum:=2;

write ('n=');

readln(n); {ввод числа n}

while sum<=n do {пока sum<=n выполнить тело цикла}

    begin

     x:=x+2;{следующее слагаемое на 2 больше

                                        предыдущего}

     i:=i+1;  {увеличение счетчика слагаемых на 1}

    sum:=sum+x; {прибавление очередного слагаемого к сумме}

     end;

writeln (i,' слагаемых');

end.

      Задача 4. Вычислить сумму всех четных чисел до 50.

Program Number;

Var sum: integer;

n: integer;

begin

sum:=0;

n:=2;

while n <= 50 do

begin

sum:= sum + n;

n:= n + 2;

end;

writeln ('Сумма равна: ',sum);

end.

      Задача 5.  Задано натуральное число n.  Вычислить  сумму  цифр числа.

program zadacha5;

     var n,sum,cif:integer;

Begin

   writeln('Введите  n'); readln(n);

   sum:=0;

   while n>0 do

          begin

cif:=n mod 10;

sum:=sum+cif;

n:=n div 10;

          end;

   writeln('Сумма  цифр введённого числа = ',sum);

End.

     Задача 6. Найти минимальное натуральное число, которое при делении на 2 даёт  в остатке 1, при делении на 3 даёт в остатке 2, при делении на 4 - в остатке 3, при делении на 5 - в остатке 4, при делении на 6 - в остатке 5 а при делении на 7 дают в остатке 6.

 

program zadacha6;

 var i, kl:longint;

Begin

  kl:=0;  i:=0;

  while kl=0 do

     begin

i:=i+1;

if (i mod 2=1) and (i mod 3=2) and (i mod 4=3) and (i mod 5=4) and (i mod 6=5) and (i mod 7=6) then  kl:=1;

    end;

  writeln(i);

End.

      Составьте блок-схему и программу решения задач:

  1. Распечатать произведения чисел А и В, изменяющихся от 17 и -25 с шагом -3 и 5 соответственно до тех пор, пока это произведение – отрицательное число.

  2. Сколько слагаемых должно быть в сумме 1 + ½ + 1/3 + …+ 1/N, чтобы сумма оказалась больше 5.

​                                      Для самостоятельной работы на компьютере предлагаются  три варианта заданий.

Вариант 1.  

  1. Температура С в градусах Цельсия изменяется от 0 до 100 с шагом 5. Напечатать таблицу перевода температуры из градусов Цельсия в градусы Фаренгейта (F). Формула перевода: F = 1,8 C + 32. Составьте блок-схему и программу решения задачи.

  2. Составьте таблицу значений функции y = 5x – 2 на отрезке [1; 20]  с шагом b = 2.

  3. * В первый день пловец проплыл 3 км. В каждый следующий день он проплывал на 10% больше, чем в предыдущий.

    • а) В какой по счету день пловец начнет проплывать более 5 км?

    • б) К какому дню он суммарно проплывет более 30 км?

Вариант 2.  

  1. Напечатать таблицу соответствия между весом в фунтах и весом в кг для значений от 1 до 10 фунтов с шагом  0,5 фунта. Формула перевода: 1 фунт = 400 г. Составьте блок-схему и программу решения задачи.

  2. Составьте таблицу значений функции y = 5x2 – 2x + 1 на отрезке [-5; 5]  с шагом     b = 2.

  3. * Урожай яблок в 1990 году составил 20 тонн. Далее каждые два года урожай уменьшался на 20%.

    • а) Начиная с какого года, будет собрано менее 5 тонн?

    • б) В каком году суммарный урожай яблок превысит 90 тонн?     

Вариант 3. 

  1. Напечатать таблицу  перевода расстояний из дюймов в сантиметры для значений от 1 до 10 дюймов  с шагом 0,5 дюйма. Формула перевода: 1дюйм = 2,54 см.

  2. Составьте таблицу значений функции y = 4x2 – 5x – 10 на отрезке [-9; 9]  с шагом   b = 3.

  3. * Концентрация хлорной извести в бассейне V м3 составляет 10 г/л. Через одну трубу в бассейн вливают чистую воду со скоростью Q м3/час, через другую трубу с такой же скоростью вода выливается. При условии идеального перемешивания концентрация хлорной извести изменятся по закону C = C0e-Qt/V , где t – время,    C0 – начальная концентрация.

    • а)  Определить, через какое время концентрация хлорной извести в бассейне достигнет безопасной для человека величины. Задачу решить при Q = 150 м3/час, V = 10000 л,  C0 = 10 г/л,  t изменяется с шагом 0,5.

    • б) Напечатать таблицу изменения концентрации хлорной извести для интервала времени от 0 до 5 часов с шагом 0,5 часа.

Задание

  1. Вычислить последнюю сумму членов ряда, при которой модуль разности между текущим и предыдущим членами ряда остается меньше 1. Кроме суммы вывести на экран значение последнего слагаемого и его номер. Составьте блок-схему и программу решения задачи.

  2. Творческое задание. Составьте задачу на использование оператора цикла WHILE и решите ее (Составьте блок-схему и программу решения задачи.)

 

* Данные задачи являются задачами повышенной сложности.

bottom of page