Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


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




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

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().


Поделиться:

Дата добавления: 2015-09-15; просмотров: 68; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты