Changes to Switch. Not explained fully. (#29595)

This commit is contained in:
mshokarimo
2019-04-12 19:25:14 +02:00
committed by Gregory Gubarev
parent 8d6ebe675e
commit a2be188158

View File

@ -1,259 +1,270 @@
--- ---
title: Conditional Statements title: Conditional Statements
localeTitle: Условные заявления localeTitle: Условные заявления
--- ---
# Условные утверждения в C # Условные утверждения в C
Условные утверждения также известны как ветвящиеся заявления. Они так называются, потому что программа выбирает следовать одной ветке или другой. Условные утверждения также известны как ветвящиеся заявления. Они так называются, потому что программа выбирает следовать одной ветке или другой.
## 1\. если утверждение ## 1\. если утверждение
Это самая простая форма условных утверждений. Он состоит из булевого выражения, за которым следуют одно или несколько операторов. Если выражение Boolean оценивается как **true** , тогда будет выполняться блок кода внутри оператора if. Если выражение Boolean оценивается как **false** , тогда будет выполнен первый набор кода после завершения оператора if (после закрытия фигурной скобки). Это самая простая форма условных утверждений. Он состоит из булевого выражения, за которым следуют одно или несколько операторов. Если выражение Boolean оценивается как **true** , тогда будет выполняться блок кода внутри оператора if. Если выражение Boolean оценивается как **false** , тогда будет выполнен первый набор кода после завершения оператора if (после закрытия фигурной скобки).
C язык программирования **_принимает любые ненулевые и ненулевые значения как истинные,_** а если он равен **_нулю или нулю, то он принимается как ложное_** значение. C язык программирования **_принимает любые ненулевые и ненулевые значения как истинные,_** а если он равен **_нулю или нулю, то он принимается как ложное_** значение.
#### Синтаксис #### Синтаксис
```C ```C
if(boolean_expression) if(boolean_expression)
{ {
//Block of Statements executed when boolean_expression is true //Block of Statements executed when boolean_expression is true
} }
``` ```
#### пример #### пример
```C ```C
int a = 100; int a = 100;
if(a < 200) if(a < 200)
{ {
printf("a is less than 200\n" ); printf("a is less than 200\n" );
} }
``` ```
#### Результат #### Результат
`a is less than 200` `a is less than 200`
## 2\. если ... else statement ## 2\. если ... else statement
Если логическое выражение оценивается как **true** , тогда будет выполняться блок if, иначе будет выполняться блок else. Если логическое выражение оценивается как **true** , тогда будет выполняться блок if, иначе будет выполняться блок else.
#### Синтаксис #### Синтаксис
```C ```C
if(boolean_expression) if(boolean_expression)
{ {
//Block of Statements executed when boolean_expression is true //Block of Statements executed when boolean_expression is true
} }
else else
{ {
//Block of Statements executed when boolean_expression is false //Block of Statements executed when boolean_expression is false
} }
``` ```
#### Пример
#### Пример
```C
int a = 300;
if(a < 200) ```C
{ int a = 300;
printf("a is less than 200\n" ); if(a < 200)
} {
else printf("a is less than 200\n" );
{ }
printf("a is more than 200\n"); else
} {
``` printf("a is more than 200\n");
}
#### Результат ```
`a is more than 200` #### Результат
## 3\. if...else if...else утверждения `a is more than 200`
При использовании if ... else if..else утверждений следует иметь в виду несколько моментов -
## 3\. if...else if...else утверждения
* **if** может иметь **нуль или одно else** , оно **должно появиться после любого другого else if** .
* **Если if** может иметь **ноль для многих других if** , и они **должны прийти перед else** . При использовании if ... else if..else утверждений следует иметь в виду несколько моментов -
* Как только **else, если это** удастся, ни одно из оставшихся else if или else не будет проверено.
* **if** может иметь **нуль или одно else** , оно **должно появиться после любого другого else if** .
#### Синтаксис * **Если if** может иметь **ноль для многих других if** , и они **должны прийти перед else** .
* Как только **else, если это** удастся, ни одно из оставшихся else if или else не будет проверено.
```C
if(boolean_expression_1) #### Синтаксис
{
//Block of Statements executed when boolean_expression_1 is true ```C
} if(boolean_expression_1)
else if(boolean_expression_2) {
{ //Block of Statements executed when boolean_expression_1 is true
//Block of Statements executed when boolean_expression_1 is false and boolean_expression_2 is true }
} else if(boolean_expression_2)
else if(boolean_expression_3) {
{ //Block of Statements executed when boolean_expression_1 is false and boolean_expression_2 is true
//Block of Statements executed when both boolean_expression_1 and boolean_expression_2 are false and boolean_expression_3 is true }
} else if(boolean_expression_3)
else {
{ //Block of Statements executed when both boolean_expression_1 and boolean_expression_2 are false and boolean_expression_3 is true
//Block of Statements executed when all boolean_expression_1, boolean_expression_2 and boolean_expression_3 are false }
} else
``` {
//Block of Statements executed when all boolean_expression_1, boolean_expression_2 and boolean_expression_3 are false
#### пример }
```
```C
int a = 300;
if(a == 100) #### Пример
{
printf("a is equal to 100\n" );
} ```C
else if(a == 200) int a = 300;
{ if(a == 100)
printf("a is equal to 200\n"); {
} printf("a is equal to 100\n" );
else if(a == 300) }
{ else if(a == 200)
printf("a is equal to 300\n"); {
} printf("a is equal to 200\n");
else }
{ else if(a == 300)
printf("a is more than 300\n"); {
} printf("a is equal to 300\n");
``` }
else
#### Результат {
printf("a is more than 300\n");
`a is equal to 300` }
```
## 4\. Вложенное выражение if
#### Результат
В программировании на языке C всегда разрешено вставлять операторы if-else, что означает, что вы можете использовать один оператор if или else if внутри другого if if else if statement (s).
`a is equal to 300`
#### Синтаксис
## 4\. Вложенное выражение if
```C
if(boolean_expression_1) В программировании на языке C всегда разрешено вставлять операторы if-else, что означает, что вы можете использовать один оператор if или else if внутри другого if if else if statement (s).
{
//Executed when boolean_expression_1 is true #### Синтаксис
if(boolean_expression_2)
{ ```C
//Executed when both boolean_expression_1 and boolean_expression_2 are true if(boolean_expression_1)
} {
} //Executed when boolean_expression_1 is true
``` if(boolean_expression_2)
{
#### пример //Executed when both boolean_expression_1 and boolean_expression_2 are true
}
```C }
int a = 100; ```
int b = 200;
if(a == 100)
{ #### Пример
printf("a is equal to 100\n" );
if(b == 200)
{ ```C
printf("b is equal to 200\n"); int a = 100;
} int b = 200;
} if(a == 100)
``` {
printf("a is equal to 100\n" );
#### Результат if(b == 200)
{
```bash printf("b is equal to 200\n");
a is equal to 100 }
b is equal to 200 }
``` ```
## 5\. Заключение #### Результат
Оператор switch часто быстрее, чем вложенный, если ... else (не всегда). Кроме того, синтаксис оператора switch более понятен и понятен. ```bash
a is equal to 100
### Синтаксис корпуса коммутатора b is equal to 200
``` ```
switch (n)
{ ## 5\. Заключение
case constant1:
// code to be executed if n is equal to constant1;
break; Оператор switch часто быстрее, чем вложенный, if ... else (не всегда). Кроме того, синтаксис оператора switch более чист и понятен.
case constant2: ### Синтаксис switch
// code to be executed if n is equal to constant2;
break; ```
. switch (n)
. {
. case constant1:
default: // code to be executed if n is equal to constant1;
// code to be executed if n doesn't match any constant break;
}
``` case constant2:
// code to be executed if n is equal to constant2;
Когда найдена константа случая, которая соответствует выражению switch, управление программой переходит к блоку кода, связанному с этим случаем. break;
.
В приведенном выше псевдокоде предположим, что значение n равно константе2. Компилятор выполнит блок кода, ассоциированный с оператором case, до конца блока переключателя или до тех пор, пока не будет встречен оператор break. .
.
Оператор break используется для предотвращения использования кода в следующем случае. default:
// code to be executed if n doesn't match any constant
### Пример: }
``` ```
// Program to create a simple calculator
// Performs addition, subtraction, multiplication or division depending the input from user
Когда найдена константа случая, которая соответствует выражению switch, программа переходит к блоку кода, связанному с этим случаем.
# include <stdio.h>
В приведенном выше псевдокоде предположим, что значение n равно constant2. Компилятор выполнит блок кода, ассоциированный с оператором case, до конца блока переключателя или до тех пор, пока не будет встречен оператор break.
int main()
{
Оператор break используется для предотвращения использования кода в следующем случае.
char operator;
double firstNumber,secondNumber; ### Пример:
```
printf("Enter an operator (+, -, *, /): "); // Program to create a simple calculator
scanf("%c", &operator); // Performs addition, subtraction, multiplication or division depending the input from user
printf("Enter two operands: "); # include <stdio.h>
scanf("%lf %lf",&firstNumber, &secondNumber);
int main()
switch(operator) {
{
case '+': char operator;
printf("%.1lf + %.1lf = %.1lf",firstNumber, secondNumber, firstNumber+secondNumber); double firstNumber,secondNumber;
break;
printf("Enter an operator (+, -, *, /): ");
case '-': scanf("%c", &operator);
printf("%.1lf - %.1lf = %.1lf",firstNumber, secondNumber, firstNumber-secondNumber);
break; printf("Enter two operands: ");
scanf("%lf %lf",&firstNumber, &secondNumber);
case '*':
printf("%.1lf * %.1lf = %.1lf",firstNumber, secondNumber, firstNumber*secondNumber); switch(operator)
break; {
case '+':
case '/': printf("%.1lf + %.1lf = %.1lf",firstNumber, secondNumber, firstNumber+secondNumber);
printf("%.1lf / %.1lf = %.1lf",firstNumber, secondNumber, firstNumber/secondNumber); break;
break;
case '-':
// operator is doesn't match any case constant (+, -, *, /) printf("%.1lf - %.1lf = %.1lf",firstNumber, secondNumber, firstNumber-secondNumber);
default: break;
printf("Error! operator is not correct");
} case '*':
printf("%.1lf * %.1lf = %.1lf",firstNumber, secondNumber, firstNumber*secondNumber);
return 0; break;
}
``` case '/':
printf("%.1lf / %.1lf = %.1lf",firstNumber, secondNumber, firstNumber/secondNumber);
### Вывод break;
```
Enter an operator (+, -, *,): - // operator is doesn't match any case constant (+, -, *, /)
Enter two operands: 32.5 default:
12.4 printf("Error! operator is not correct");
32.5 - 12.4 = 20.1 }
```
return 0;
Оператор '-', введенный пользователем, сохраняется в переменной оператора. И два операнда 32.5 и 12.4 хранятся в переменных firstNumber и secondNumber соответственно. }
```
Затем управление программой переходит к
``` ### Вывод
printf("%.1lf / %.1lf = %.1lf",firstNumber, secondNumber, firstNumber/firstNumber); ```
``` Enter an operator (+, -, *,): -
Enter two operands: 32.5
Наконец, оператор break завершает оператор switch. 12.4
32.5 - 12.4 = 20.1
Если инструкция break не используется, все случаи после правильного случая выполняются. ```
Оператор '-', введенный пользователем, сохраняется в переменной оператора. И два операнда 32.5 и 12.4 хранятся в переменных firstNumber и secondNumber соответственно.
Затем управление программой переходит к
```
printf("%.1lf / %.1lf = %.1lf",firstNumber, secondNumber, firstNumber/firstNumber);
```
Наконец, оператор break завершает оператор switch.
Если инструкция break не используется, все случаи после правильного случая выполняются.