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