Операторы передачи управления

 

В С/C++ есть четыре оператора, изменяющих естественный порядок выполнения вычислении:

1) break - оператор прерывания цикла.

{

< операторы>

if (<выражение_условие>) break;

<операторы>

}

То есть оператор break целесообразно использовать, когда условие продолжения итераций надо проверять в середине цикла.

Пример:

// ищет сумму чисел вводимых с клавиатуры до тех пор, пока не будет введено 100 чисел или 0

for(s=0, i=1; i<100;i++)

{

cin>>x;

if( x==0) break; // если ввели 0, то суммирование заканчивается

s+=x;

}

2)continue - переход к следующей итерации цикла. Он используется, когда тело цикла содержит ветвления.

Пример:

//ищет количество и сумму положительных чисел

for( k=0,s=0,x=1;x!=0;)

{

cin>>x;

if (x<=0) continue;

k++;s+=x;

}

3) Оператор возврата из функции return завершает выполнение функции и передает управление в точку ее вызова. Вид оператора:

return [ выражение ];

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

4) Оператор безусловного перехода goto имеет формат:

 

goto метка;

 

В теле той же функции должна присутствовать ровно одна конструкция вида:

метка: оператор;

Оператор goto передает управление на помеченный оператор. Метка - это обычный идентификатор, областью видимости которого является функция, в теле которой он задан.

Использование оператора безусловного перехода оправдано в двух случаях:

принудительный выход вниз по тексту программы из нескольких вложенных циклов или переключателей;

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

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

В любом случае не следует передавать управление внутрь операторов if, switch и циклов. Нельзя переходить внутрь блоков, содержащих инициализацию переменных, на операторы, расположенные после нее, поскольку в этом случае инициализация не будет выполнена:

int k;

... goto metka;

{int a = 3, b = 4;

k = a + b;

metka: int m = k + 1; …

}

После выполнения этого фрагмента программы значение переменной m не определено.

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

 

Написать программу, которая, используя оператор цикла с параметром (for), находит сумму элементов, указанных в конкретном варианте.

Привести варианты решения этой задачи с использованием итерационных циклов (while, do..while).

Варианты

 

Задание 1. Составить программы вычисления значения функции f(x,y) для заданных значений a, b, c (из табл.1) и произвольного x с автоматическим выбором необходимой формулы:

 

Вариант 1

где .

 

Вариант 2

где .

 

Вариант 3

где

Вариант 4

где

 

Вариант 5

где

 

Вариант 6

где

 

Вариант 7

где .

 

Вариант 8

где

 

Вариант 9

где

 

Вариант 10

где

 

Вариант 11

где

 

Вариант 12

где

 

Вариант 13

где

 

Вариант 14

где

 

Вариант 15

где

 

 

Таблица 2.

№ Вар.
a 14,65 9,61 8,35 5,05 12,1 9,04 11,2 5,2
b 19,93 10,64 10,6 3,3 8,82 5,67 10,83 8,13
c 12,86 9,7 8,65 5,73 10,21 6,12 9,31 7,71
№ Вар.  
a 7,54 2,25 0,267 0,05 7,38 31,43 2,57  
b 8,49 2,99 0,173 0,04 6,43 24,93 2,31  
C 7,2 3,51 0,098 0,07 5,89 19,7 2,006  

 

Задание 2.

 

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

Параметры a, b, c, берутся из таблицы 1.

 

Вариант 1

 

Вариант 2

 

φ=45o

 

 

Вариант 3

 

 

Вариант 4

 

 

Вариант 5

 

Вариант 6

 

 

Вариант 7

 

 

Вариант 8

 

 

 

Вариант 9

 

 

Вариант 10

 

 

Вариант 11

 

Вариант 12

 

 

Вариант 13

 

Вариант 14

 

 

Вариант 15

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

Титульный лист.

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

Алгоритм решения.

Текст программы.

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

Алгоритм решения.

Текст программы.

Выводы.

Пример выполнения задания

Условие задания

Составить программу вычисления значения функции f(x,y) для заданных значений a, b, c и произвольного x с автоматическим выбором необходимой формулы:

где .