Оператор switch, оператор break, оператор goto

Цель работы: Научиться писать программы, используя операторы переключения switch в паре с операторомbreak,оператор перехода goto.

Теоретические сведения

Переключатели .Основным средством для организации мультиветвления служит оператор-переключатель, формат которого имеет вид:

switch (выражение)

{ case константа1: операторы_1;

case константа2: операторы_2;

.................

default: операторы;

}

В этом операторе используются три служебных слова: switch, case, default. Первое из них идентифицирует собственно оператор-переключатель. Служебное слово case с последующей константой является в некотором смысле меткой. Константы могут быть целыми или символьными и все должны быть различными (чтобы метки были различимы). Служебное слово default также обозначает отдельную метку. При выполнении оператора вычисляется выражение, записанное после switch, и его значение последовательно сравнивается с константами, которые помещены вслед за case. При первом же совпадении выполняются операторы, помеченные данной меткой. Если выполненные операторы не предусматривают какого-либо перехода (т.е. среди них нет ни goto, ни return, ни exit(), ни break), то далее выполняются операторы всех следующих вариантов, пока не появится оператор перехода или не закончится переключатель.

Операторы вслед за default выполняются, если значение выражения в скобках после switch не совпало ни с одной константой после case. Метка default может в переключателе отсутствовать. В этом случае при несовпадении значения выражения с константами переключатель не выполняет никаких действий. Операторы, помеченные меткой default, не обязательно находятся в конце (после других вариантов переключателя). Уточним, что default и "case константа" не являются метками в обычном смысле. К ним, например, нельзя перейти с помощью оператора goto.

Оператор break. Этот оператор прекращает выполнение оператора цикла и передает управление следующему за ним (за циклом) оператору.

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

{

операторы

if (условие) break;

операторы

}

Пример:

while(1)

{

printf ("\n Введите значение n=”);

scanf("%d",&n);

if( n > 0 ) break;

printf ("\n ошибка! n должно быть >0!\n”);

}

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

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

#include <stdio.h>

/* Сумма положительных чисел */

void main( )

{

double s,x;/*x - очередное число, s - сумма*/

int k; /*k - количество положительных */

printf("\nВведите последовательность чисел"

" с 0 в конце:\n");

for( х=1.0, s=0.0, k=0; x !> 0.0; )

{

scanf("%lf",&x);

if( х <= 0.0 ) continue;

k++;s+=x;

}

printf("\n Cyммa=%f,

количество положительных=%<d" rs,k) ;

}

Результат выполнения программы:

Введите последовательность чисел с 0 в конце:

б -3.0 14.0 -5 -4 10 0.0

Сумма=30.000000, количество положительных=3

Недостаток приведенной программы состоит в том, что нет защиты от неверно введенных данных. Например, не преду­смотрены действия, когда в последовательности отсутствует нулевой элемент. Обратите внимание на объединение двух строк в функции printf().

Ход работы

1 В соответствии с индивидуальным заданием разработать программу с применением операторов ветвления, выбора варианта, разрыва, перехода (при составлении программы использовать операторы if…else, switch, break, goto, операцию (?:)в двух-трех вариантах).

2 Набрать программу и устранить ошибки.

3 Изучить работу операторов, различные возможности их применения.

4 Получить результаты.

5 Оформить отчет и сделать выводы по работе, изучив контрольные вопросы по теме.

Задание к лабораторной работе

Используя оператор case, составьте программу для решения следующей задачи.

Вариант mn. Вычислите таблицу значений функции

Оператор switch, оператор break, оператор goto - student2.ru

для целочисленных значений аргумента x из интервала [Хн,Хк]. Множества Х1234 и функции f1,f2,f3,f4 заданы в таблицах 17,18.

Таблица 17

m X1 X2 X3 X4
-10 нечетные числа из интервала [6,12] четные числа из интервала [6,12] [-2,5] остальные числа
четные числа из интервала [10,20] нечетные числа из интервала [10,20] [1,8] остальные числа
числа, кратные 3 из интервала [10,20] числа, некратные 3 из интервала [10,20] [2,5] и [21,24] остальные числа

Таблица 18

n f1(x) f2(x) f3(x) f4(x)
px2+sinx 10x3-tg(x/5) cospx e-x/4
ln2(x2+1,5) e-2x sinpx arctg(3x)
e2x-5 cos2(px) ln(x2+2,5) arcsin(x/30
arccos(x/35) e2x-10 ln2(3x+1) sin(2px)
e-x/10 arctg(4x) Оператор switch, оператор break, оператор goto - student2.ru |8x3-20|
Оператор switch, оператор break, оператор goto - student2.ru tg2(x/5) 2sin(x/p) ex+2
e2x-15 Оператор switch, оператор break, оператор goto - student2.ru ln|x+1,5| sin3(x2)
5e-x sin(px2/2) Оператор switch, оператор break, оператор goto - student2.ru arctg(x/3)
psin(px/3) ex/10+2 Оператор switch, оператор break, оператор goto - student2.ru cos2|x|
Оператор switch, оператор break, оператор goto - student2.ru ln(x3+1,8) sin(3x+p) x2+5x

Лабораторная работа №9

Наши рекомендации