Биохимия спиртового брожения: Основу технологии получения пива составляет спиртовое брожение, - при котором сахар превращается...
Опора деревянной одностоечной и способы укрепление угловых опор: Опоры ВЛ - конструкции, предназначенные для поддерживания проводов на необходимой высоте над землей, водой...
Топ:
Когда производится ограждение поезда, остановившегося на перегоне: Во всех случаях немедленно должно быть ограждено место препятствия для движения поездов на смежном пути двухпутного...
Оценка эффективности инструментов коммуникационной политики: Внешние коммуникации - обмен информацией между организацией и её внешней средой...
Интересное:
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Мероприятия для защиты от морозного пучения грунтов: Инженерная защита от морозного (криогенного) пучения грунтов необходима для легких малоэтажных зданий и других сооружений...
Дисциплины:
2018-01-03 | 219 |
5.00
из
|
Заказать работу |
|
|
Оператор switch имеет следующий вид:
switch (выражение) {
case значение1:
действие1;
case значение2:
действие2;
...
default: // Необязательный фрагмент
фрагментN;
}
Выражение должно быть дискретного типа (целое число или указатель). Значения должны быть константами того же типа, что и выражение в заголовке. Оператор switch работает следующим образом:
1. сначала вычисляется значение выражения в заголовке switch;
2. затем осуществляется переход на метку "case L:", где константа L совпадает с вычисленным значением выражения в заголовке;
3. если такого значения нет среди меток внутри тела switch, то
· если есть метка "default:", то осуществляется переход на нее;
· если метка "default:" отсутствует, то осуществляется переход на оператор, следующий за switch.
Подчеркнем, что после перехода на метку "case L:" текст программы выполняется последовательно. Например, при выполнении фрагмента программы
int n, k;
n = 2;
switch (n) {
case 1:
k = 2;
case 2:
k = 4;
case 3:
k = 8;
}
переменной k будет присвоено значение 8, а не 4. Дело в том, что при переходе на метку "case 2:" будут выполнена сначала строка
k = 4;
и затем строка
k = 8;
что делает приведенный фрагмент совершенно бессмысленным. Чтобы исправить этот фрагмент, следует использовать оператор
break;
Этот оператор приводит к выходу из фигурных скобок, обрамляющих тело оператора switch. Приведенный фрагмент надо переписать следующим образом:
int n, k;
n = 2;
switch (n) {
case 1:
k = 2;
break;
case 2:
k = 4;
break;
case 3:
k = 8;
break;
}
В результате выполнения этого фрагмента переменной k будет присвоено значение 4. Если бы значение n равнялось 1, то k было бы присвоено значение 2, если n равнялось бы 3, то 8. Если n не равно ни 1, ни 2, ни 3, то k останется неопределенным.
|
Оператор цикла while
Цикл while является циклом с предусловием, т.е. условие проверяется перед выполнением тела цикла. В Си для определения цикла while используется следующаий оператор:
while (условие)
действие;
Сначала проверяется условие. Если оно истинно, то выполняется действие. Затем снова проверяется условие; если оно истинно, то снова повторяется действие, и т.д. Цикл завершается, когда условие становится ложным. Пример:
int n, p;
...
p = 1;
while (2*p <= n)
p *= 2;
В результате выполнения этого фрагмента в переменной p будет вычислена максимальная степень двойки, не превосходящая целого положительного числа n.
Если условие ложно с самого начала, то действие не выполняется ни разу.
Тело цикла может состоять из одного или нескольких операторов. В последнем случае их надо заключить в фигурные скобки.
Оператор цикла for
Цикл for как цикл while является циклом с предусловием. В Си для определения цикла for используется следующаий оператор:
for (инициализация; условие продолжения; итератор)
действие;
Инициализация выполняется один раз перед первой проверкой условия продолжения и первым выполнением тела цикла. Условие продолжения проверяется перед каждым выполнением тела цикла. Если условие истинно, то выполняется действие, иначе цикл завершается. Итератор выполняется после каждого выполнения тела цикла (перед следующей проверкой условия продолжения).
Рассмотрим пример суммирования массива с использованием цикла for:
double a[100]; // Массив a содержит не более 100 эл-тов
int n; // Реальная длина массива a (n <= 100)
double sum; // Переменная для суммы эл-тов массива
int i; // Переменная цикла
...
sum = 0.0;
for (i = 0; i < n; ++i)
sum += a[i]; // Увеличиваем сумму на a[i]
Здесь целочисленная переменная i используется в качестве переменной цикла. В операторе инициализации переменной i присваивается значение 0. Условием продолжения цикла является условие i<n. Итератор ++i увеличивает переменную i на единицу. Таким образом, переменная i последовательно принимает значения 0, 1, 2,..., n-1. Для каждого значения i выполняется оператор sum += a[i];.
|
В большинстве других языков программирования арифметический цикл жестко связан с использованием переменной цикла, которая должна принимать значения из арифметической прогрессии. В Си это не так, здесь инициализация, условие продолжения и итератор могут быть произвольными выражениями, что обеспечивает гораздо большую гибкость программы. Конструкцию цикла for можно реализовать с помощью цикла while:
Например, фрагмент с суммированием массива
for (i=0; i < n; ++i)
sum += a[i];
реализуется с использованием цикла while следующим образом:
i = 0;
while (i < n) {
sum += a[i];
++i;
}
Кроме того, что в цикле for в качестве инициализации и итератора можно использовать любые выражения, можно выполнить несколько действий при инициализации или в итераторе. Для этого язык Си предоставляет операцию "запятая", которая позволяет объединить несколько выражений в одно. Например, фрагмент суммирования массива
sum = 0.0;
for (i = 0; i < n; ++i)
sum += a[i];
можно переписать следующим образом:
for (sum = 0.0, i = 0; i < n; sum += a[i], ++i);
Здесь тело цикла вообще пустое, все действия вынесены в заголовок цикла. Лучше избегать такого стиля программирования: он ничего не добавляет в смысле эффективности готовой программы, но делает текст менее понятным и, таким образом, увеличивает вероятность ошибок.
3.4.6.Оператор цикла do...while
Цикл do...while является циклом с постусловием. Сначала выполняется тело цикла и только после этого проверяется условие продолжения цикла. В Си для определения цикла do...while используется следующаий оператор:
do
действие;
while (условие);
Вначале выполняется действие. Далее проверяется условие и если условие истинно, то снова выполняется действие и так до тех пор пока условие не станет ложным. Таким образом, действие будет выполнено 1 раз, даже если условие ложно с самого начала. Это является потенциальным источником ошибок. Лучше всегда использовать цикл с предусловием while.
|
|
Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...
Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...
История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!