Управляющие конструкции

Управляющие конструкции


if (условие) и ==, !=, <, > (операторы сравнения)

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

1
2
3
4
if (variableN > 50)
{
  // выполнить действия, если условие истинно
}

Этот код сравнивает значение variableN и число 50 - если текущее значение переменной действительно больше 50, выполняются определенные действия. Иначе говоря, если выражение в круглых скобках истинно, выполняются операторы внутри фигурных скобок. В противном случае, фрагмент в фигурных скобках будет пропущен.

Сами фигурные скобки лишь логически группируют несколько строк в один блок и могут отсутствовать. В этом случае только следующая за оператором if строка (до точки с запятой) становится оператором, выполняемым (или не выполняемым) по условию if.

1
2
3
4
5
6
7
8
9
10
11
if (x > 120) digitalWrite(LEDpin, HIGH); 
 
if (x > 120)
digitalWrite(LEDpin, HIGH); 
 
if (x > 120){ digitalWrite(LEDpin, HIGH); } 
 
if (x > 120){ 
  digitalWrite(LEDpin1, HIGH);
  digitalWrite(LEDpin2, HIGH); 
}                                 // различные способы записи условного оператора

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

Операторы сравнения

x == y (x равно y)

x != y (x не равно y)

x < y (x меньше y)

x > y (x больше y)

x <= y (x меньше или равно y)

x >= y (x больше или равно y)

Предупреждение

Отличайте знак простого равенства '=' от оператора сравнения '=='. Использование знака равенства в операторе if может дать совершенно другой результат - например, if (y = 40) совершенно не тоже самое, что if (y==40). Знак равенства – это оператор присваивания, который устанавливает значение переменной х равным 40 (заносит значение 40 в переменную y, а не проверяет ее значение на равенство 40!). Старайтесь не забывать всегда использовать в операторе if знак двойного равенства, который является оператором сравнения и проверяет в данном случае х на равенство 10. Выражение (y=10) всегда истинно, в то время как (y==10) истинно только при условии равенства значения переменной десяти.

к содержанию ->>

if/else

Конструкция if..else предоставляет больший контроль над выполнением скетча, чем простой оператор if, позволяя определить в одном месте действия не только для случая, когда выражение в скобках истинно, но и для противоположного (когда значение выражения ложно). В примере ниже, после сравнения переменной и числа 500 аналогового входа набор Действий ОДИН выполнится, если переменная меньше, а набор Действий ДВА - если она больше или равна 500:

1
2
3
4
5
6
7
8
if (pinSomeone < 500)
{
  // набор действий ОДИН
}
else
{
  // набор действий ДВА
}

за else может следовать еще один if, и таким образом можно создать цепочку последовательных взаимоисключающих проверок. В этом случае проверки будут выполняться одна за другой до тех пор, пока не встретится выражение со значением ИСТИНА. После этого будет выполнен следующий за ним блок кода, а проверка остальных условий будет пропущена - вплоть до завершения текущей конструкции if/else. Если не вычислено ни одного истинного выражения, исполняется самый последний блок else по умолчанию (если он существует).

Отметим, что конструкция else if может быть использована с или без заключительного else, и наоборот. Допускается неограниченное число таких переходов else if.

1
2
3
4
5
6
7
8
9
10
11
12
if (pinFiveInput < 500)
{
  // действие А
}
else if (pinFiveInput >= 1000)
{
  // действие Б
}
else
{
  // действие В
}

к содержанию ->>

switch / case

Подобно оператору ifswitch...case управляет ходом выполнения программы, позволяя исполнять разные операторы, в зависимости от текущих условий. Выражение, указанное в строке switch, последовательно сравнивается со значениями в строках case. Если значения совпадают, начинают выполняться следующие за этим case операторы.

Ключевое слово break завершает это выполнение, и обычно используется в конце каждого блока case. Если его опустить, выполнение будет продолжаться через все последующие блоки case до тех пор, пока где-нибудь не встретится break или не закончится сам оператор switch.

Пример

1
2
3
4
5
6
7
8
9
10
11
witch (var) {
  case 1:
    // сделать что-нибудь, если значение var равно 1
    break;
  case 2:
    // сделать что-нибудь, если значение var равно 2
    break;
  default: 
    // если ничего не совпало, выполняется default
    // default можно опускать
}

Синтаксис

1
2
3
4
5
6
7
8
9
10
switch (var) {
  case label:
    // операторы для выполнения
    break;
  case label:
    // операторы для выполнения
    break;
  default: 
    // операторы для выполнения
}

Параметры

var: переменная, чье значение будет сравниваться

label: конкретное значение для сравнения

к содержанию ->>

Оператор for

Описание

Оператор for обычно используется для многократного повторения блока операторов, заключенных в фигурные скобки. Для управления повторениями и выходом из цикла обычно используется переменная-инкрементальный счетчик. For пригоден для любой повторяющейся операции - например, при работе с массивами или инициализации группы универсальных пинов.

В круглых скобках после ключевого слова for указываются три секции:

1
2
3
for (инициализация; условие; инкремент) {
  //оператор(ы);
}

Сначала выполняется Инициализация, причем только один раз. Затем проверяется условие; если оно истинно, выполняется блок операторов в фигурных скобках, затем - выполняется секция инкремента. После этого снова проверяется условие - и так далее, пока условие не станет ложно - в этом случае цикл завершится. Обратите внимание, что если после инициализации условие ложно, то операторы в фигурных скобках не будут выполнены ни одного раза.

Инкремент ++ – это увеличение на единицу. Декремент -- – это уменьшение на единицу. Операции декремента и инкремента с лёгкостью заменяются арифметическими операциями или операциями присваивания.

Пример

1
2
3
// выключение пинов со 2-го по 7-ой
    for (int x = 2; x < 8; x++) {
      digitalWrite(x, LOW);}

к содержанию ->>

while

Описание

Цикл while будет непрерывно выполняться до тех пор, пока выражение в круглых скобках не станет false (ложно). Переменная, участвующая в выражении, должна меняться где-то в цикле, иначе он никогда не завершится. Это может быть, например, инкрементируемая переменная-счетчик или значение, прочитанное из датчика.

Синтаксис

1
2
3
while(выражение){
  // оператор(ы)
}

Пример

1
2
3
4
5
6
7
int p = 0;
while(p < 100){
  // набор действий которые будут выполняться пока p<100
  //в качестве операции внутри тела цикла переменная p может быть изменена
  // например:
  p=p+23-(p*0.2)
}

к содержанию ->>

do - while

Описание

Цикл do-while работает почти так же, как и while, за исключением того, что условие проверяется в конце цикла, и таким образом он выполняется хотя бы один раз.

Синтаксис

1
2
3
do{
 // набор действий (оператор или несколько операторов)
} while(усолвие);

к содержанию ->>

break

Описание

break используется для выхода из всех циклов (forwhiledo...while). Цикл сразу завершается, без проверки условий. Также применяется для выхода из оператора switch.

Пример

1
2
3
4
5
6
7
for (int i=P1;i<K;i++)
{
	if  (i==K-1&&nomer[i]>0){
		P2=i+1;break;}
	if (nomer[i]==0){
		P2=i;break;
}

к содержанию ->>

continue

Описание

Оператор continue пропускает оставшиеся операторы до завершения цикла (forwhiledo...while) и переходит к проверке условия и началу новой итерации (если значение условия подразумевает продолжение цикла).

Пример

1
2
3
4
5
6
7
8
for (i = 0; i < 55; i++)
{
    if (i < 20){  
        continue;
    }
    digitalWrite(9, i);
    delay(10);
}

к содержанию ->>





comments powered by Disqus