Хелпикс

Главная

Контакты

Случайная статья





lt;оператор 1>;. lt;оператор N>. Формат: WHILE <условие> DO <тело цикла>;



                                       <оператор 1>;

   ........

     <оператор N>

until <условие>;        { пока}

 

Условие - выражение булевского типа. При наличии условия допустимы булевские операции и операции отношения. Операторы, заключенные между словами repeat и until, являются телом цикла. Вначале выполняется тело цикла, затем проверяется условие выхода из цикла. Если результат булевского выражения FALSE, тело цикла активизируется еще раз, если результат TRUE - происходит выход из цикла.

Оператор REPEAT имеет три характерные особенности:

- выполняется по крайней мере один раз, т.к. условие повторяется после выполнения тела цикла;

- тело цикла выполняется, пока условие равно FALSE;

- в теле может находиться произвольное число операторов без операторных скобок begin...end, т.к. два зарезервированных слова Repeat и Until уже играют роль скобок.

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

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

 

Формат: WHILE <условие> DO <тело цикла>;

 

Условие - булевское выражение, а тело цикла - простой или составной оператор. Перед каждым выполнением тела цикла вычисляется значение выражения условия. Если результат равен TRUE, тело цикла выполняется и снова вычисляется выражение условия. Если результат равен FALSE, происходит выход из цикла и переход к первому после WHILE оператору. Если перед первым выполнением цикла значение выражения было FALSE, тело цикла вообще не выполняется и происходит переход на следующий оператор.

Пример: i:=30;

while i<0 do i:=i+1;

write (i);

В данном случае наращивания i не произойдет, т.к. условие с самого начала имеет значение false.

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

Пример  

While i<100 do

  begin

    ...

    i:=i+1; { Изменение переменной управления циклом}

    ...

    read (k,t);

    if t>1000 then i:=100+1 { Установка признака выхода}

  end;

В ряде случаев цикл изначально предполагается как бесконечный. Тогда в условии записывается константа TRUE или очевидный факт, который в любой ситуации возвращает значение TRUE

while true do write ('Бесконечный цикл');

 

 


 

Варианты заданий

Задание 1. Целочисленная арифметика.

Найти количество натуральных двузначных чисел, каждое из которых делится на 3 и на 13.

a) Найти все натуральные четырехзначные числа, каждое из которых не делится ни на 2, ни на 5.

b) Найти количество натуральных чисел, не превосходящих 1000, каждое из которых кратно 5 и не кратно 3.

c) Найти те натуральные числа, не превосходящие Х, которые при делении на 10 дают в остатке 5.

d) Определить, является ли введенное натуральное число Х простым.

Задание 2. Найти алгоритм решения задачи и реализовать его в виде Паскаль-программы.

a) Начальный вклад в банк составляет А рублей. Через сколько лет он станет больше В рублей? Каждый год вклад увеличивается на 3%.

b) Ежегодный прирост рыбы в пруду составляет 15%. Запасы рыбы оценены в А тонн. Ежегодный план отлова В тонн. Подсчитать, сколько лет можно выдерживать заданный план?

c) Каждая бактерия делится на две в течение одной минуты. В начальный момент имеется A бактерий. Сколько времени потребуется, чтобы количество бактерий превзошло X?

d) Определить количество посетителей салона, которых успеет обслужить мастер-стилист, если его рабочий день составляет t часов и известна продолжительность (в минутах) обслуживания каждого посетителя очереди (вводится пользователем).

Задание 3. Составить программу для решения следующей задачи:

a) Вычислить количество точек с целочисленными координатами, попадающими в круг радиуса R (R>0) с центром в начале координат.

b) Найти все натуральные числа от 1 до N, представимые в виде суммы кубов двух натуральных чисел.

c) Найти все натуральные числа от 1 до N, представимые в виде суммы квадратов трех натуральных чисел.

d) Даны натуральные M, N (M<N). Найти числитель и знаменатель несократимой правильной дроби p/q такой, что p/q = m/n.

Варианты заданий

1. 1а,2а,3а

2. 1b,2b,3b

3. 1c,2c,3c

4. 1d, 2d, 3d

5. 1a,2b,3c

6. 1d,2a,3b

7. 1b,2c,3d

8. 1c,2d,3d

9. 1d,2c,3d

10. 1b,2d,3a

11. 1c,2a,3a

12. 1b,2c,3c

13. 1a, 2d,3c

14. 1c,2a,3d

15. 1b,2a,3c

 

Содержание отчета

1. Постановка задачи.

2. Описание алгоритма.

3. Тестовые примеры и анализ результатов тестирования.

4. Вывод.

 

Контрольные вопросы

1. Как записывается и как работает оператор for?

2. Для организации каких циклов применим оператор for?

3. В чем отличие оператора while от оператора repeat?

4. Как программируются циклические алгоритмы с явно заданным числом повторений цикла?

5. Напишите пример оператора цикла, который не выполняется ни разу.

6. С какими ограничениями реализована конструкция цикла со счетчиком?

7. Замените оператор "repeat A until B" равносильным фрагментом программы с оператором while.

 



  

© helpiks.su При использовании или копировании материалов прямая ссылка на сайт обязательна.