Операторы безусловного перехода

Цикл

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

На псевдокоде цикл записывается следующим образом:

<операторы_тела_цикла>

пока <условие>

Правила работы цикла с постусловием:

1. Выполняется тело цикла.

2. Проверяется истинность <условие>: если <условие> истинно, то выполняется тело цикла. Если оно ложно, то цикл завершает свою работу.

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

 

2. Операторы циклов в С++

Цикл с параметром for()

Стандартный вид цикла:

for(<список1>; <список2>; <список3>)

{

<операторы_тела_цикла>

}

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

<список1> содержит операторы, задающие начальное значение параметру или параметрам цикла, и операторы, задающие начальные значения переменным, которые участвуют в работе цикла; <список2> – условие, определяющее, в какой момент цикл должен завершить работу; <список3> – операторы, позволяющее изменить значение параметра цикла.

Эти три списка должны быть разделены точкой с запятой.

Правила работы цикла с параметром:

1. Выполняется <список1> один раз за всё время работы цикла.

2. Выполняется <список2>. Если условие окончания работы цикла ложно, то цикл завершает свою работу. В противном случае выполняются операторы тела цикла.

3. После выполнения последнего оператора тела цикла выполняется <список3>, затем происходит переход на пункт 2.

4. Если среди операторов тела цикла встретится оператор continue, то происходит переход на пункт 3.

5. Если среди операторов тела цикла встретится оператор break, то произойдёт выход из цикла и управление передастся оператору, следующему за циклом.

Цикл for() работает до тех пор, пока условие истинно. Когда условие становится ложным, выполнение программы продолжается с оператора, следующего за циклом. В языке С++ в качестве параметра может выступать переменная либо арифметического, либо символьного типа. Например, фрагмент программы позволяет распечатать весь латинский алфавит в одной строке:

char ch;

for (ch=’a’;ch<=’z’;ch++)

{

printf ("%c ",ch);

}

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

while(<условие>)

{

<тело_цикла>

}

После заголовка цикла точка с запятой не ставится.

Цикл с постусловием do – while()

do

{

<тело_цикла>

}

while(<условие>);

Правила работы циклов с предусловием и постусловием описаны выше.

В языке С++ есть четыре оператора перехода: return, goto, break, continue. Оператор goto не будем рассматривать, так как другие операторы позволяют заменить его, а применение этого оператора в программе довольно сильно запутывает алгоритм.

Оператор return используется для выхода из функции, в том числе и из главной – main(). Общая форма записи оператора:

return <выражение>;

Подробно работа этого оператора будет рассмотрена в разделе «Функции».

Оператор break применяется для выхода из оператора выбора switch() или для прекращения работы цикла любого типа без проверки условия окончание работы этого цикла. Это означает, что если в теле цикла встречается оператор break, то произойдет безусловный переход на оператор, следующий за этим циклом.

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

Пример. Вывести на экран таблицу из n значений функции .

Ход выполнения работы

1. Алгоритм решения задачи строится следующим образом. Из условий задачи видно, что значения x изменяются от a до b. Шаг h, на который изменяются значения x, вычисляется по формуле . Формула для изменения значений x выглядит следующим образом:

Т

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

Каждый раз при получении нового значения x будем вычислять значение y по заданной формуле. Таким образом, необходимо повторить одну и ту же последовательность действий известное (это важно) число раз (в данной задаче количество повторений равно n). Для решения такого типа задач как раз и используются циклические вычислительные процессы. В нашей задаче будет использован цикл с параметром.

 

 

2. Написать программу, соответствующую алгоритму:

Алгоритм Программа
объявление вещ: а,b,x,y,h, цел: n,i // ввод концов отрезка ввод a ввод b // задаем количество вычисляемых // значений функции ввод n // вычисление шага h=(b-1)/n // задаем начальное значение аргумента x=a // цикл для построения таблицы значений для i=1 до n шаг 1 // вычисляется значение функции y=|cos(x)|+|x-1| печать x,y // вычисляем новое значение // аргумента x=x+h всё_для i   #include "stdio.h" #include "math.h" int main ( ) { float a, b, x, y, h; int n, i; // ввод концов отрезка printf("a="); scanf("%f",&a); printf("b="); scanf("%f",&b); // задаем количество //вычисляемых значений функции printf("n="); scanf("%i",&n); // вычисление шага h=(b-a)/n; // задается начальное значение аргумента x=a; //печатается заголовок таблицы printf("x\ty\n"); // цикл для построения таблицы значений for (i=1; i<=n; i++) { // вычисляется значение функции y=fabs(cos(x))+fabs(x-1); printf("%7.3f\t%7.3f\n",x,y); // вычисляется новое значение //аргумента x=x+h; } return 1; }

3. Создать проект и реализовать данную задачу в среде Visual C++ 6.0.