Операторы Break и continue

Для удобства реализации циклических структур на Паскале в последних версиях языка введены операторы break и continue, применяемые внутри циклов. Они расширяют возможности использования циклов и улучшают структуру программы.

В процессе выполнения тела цикла до полного завершения цикла могут возникнуть дополнительные условия, требующие завершения цикла. В этом случае цикл может быть прекращен оператором break.

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

Ходом выполнения цикла можно управлять с помощью двух операторов break и continue.

Break – прерывает выполнение цикла, управление передается операторам, следующим за оператором цикла.

Continue – прерывает выполнение очередного шага цикла и возвращает управление в начало цикла, начиная следующий шаг.

Например:

for n:=1 to 10 do

begin

if n mod 2 = 0 then continue;

if n = 7 then break;

writeln(n);

end;

Данная программа будет печатать только нечетные числа (из-за срабатывания continue). Цикл прекратит выполняться, когда n станет равно 7. В итоге будут напечатаны числа: 1, 3, 5.

Практическая часть работы

Пример №1_Вычисление значения суммы ряда (подсказка для решения задачи №2.1)

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

Например, в случае суммы ряда вида cos(x)+cos(2x)+cos(3x)+…+cos(7x)общий вид слагаемого с номером k будет иметь вид cos(k*x), где k изменяется от 1 до 7.

Накопление суммы при этом должно проводиться по шагам, на каждом шаге цикла к имеющемуся уже значению суммы должно прибавляться очередное слагаемое (в самый первый момент предполагается, что значение суммы равно 0).

Фрагмент программы нахождения указанной выше суммы ряда с помощью оператора FOR может иметь, например следующий вид: С помощью оператора While:   С помощью оператора Repeat:  
… s:=0; for k:=1 to 7 do s:=s+cos(k*x); writeln(‘сумма =’, s); end.   … s:=0; k:=1; while k<=7 do begin s:=s+cos(k*x); k:=k+1; end; writeln(‘сумма =’, s); end. … s:=0; k:=1; repeat s:=s+cos(k*x); k:=k+1; until k>7; writeln(‘сумма =’, s); end.

Пример №2 (Подсказка для решения задачи №3)

Вывести на экран таблицу значений функции y(x)=x*2+ при изменении аргумента от -10 до 10 с шагом 0.5

program f1;

uses crt;

var x,y,a,b,dx:real;

Begin

Clrscr;

Write(’Введите начальное значение аргумента:’);readln(a);

Write(’Введите конечное значение аргумента:’);readln(b);

Write(’Введите шаг табулирования:’);readln(dx);

Writeln(’-------------------------’:20);

Writeln(’x’:9’ | ’:4,’ y’:4); {шапка таблицы}

Writeln(’-------------------------’:20);

X:=a;

While (x<=b) do

Begin

 

If (5-x)<0 then Writeln(’ x:10:3,’ | функция не определена’:22)

Else

Begin

Y:=x*2+sqrt(5-x);

Writeln(x:10:3,’ | ’,y:7:3);

End;

X:=x+dx;

End;

Writeln(’-------------------------’:20);readln;

End.

Пример №3 Заставка к фильму «Матрица» (подсказка для решения задачи №4)

Демонстрируется заставка к известному фильму (фрагмент фильма “Матрица”) и говорится о том, что сегодня современный кинематограф не может существовать без применения компьютерных технологий. Например, как в данном фрагменте, для создания специальных эффектов. На основе полученных ранее знаний и новых мы попробуем создать аналогичную программу. Сообщается, что при решении данной задачи приходится использовать вложенные циклы.