You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: lang_c/6/2__operator_if_else/article.md
+8-8Lines changed: 8 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -24,11 +24,11 @@ int main(void)
24
24
}
25
25
```
26
26
27
-
Эта программа работае никак не проверяет данные, введённые пользователем. Поэтому, если ввести, например, числа `3.14 2.71`, то получим следующий результат:
27
+
Эта программа никак не проверяет данные, введённые пользователем. Поэтому, если ввести, например, числа `3.14 2.71`, то получим следующий результат:
28
28
29
29

30
30
31
-
Проблема, как мы уже понимаем, возникает из-за того, что формат входные данные не соответствует формат-строке `"%d %d"`. Поэтому функция `scanf` запишет значение в переменую `a` и завершится. Давайте это проверим.
31
+
Проблема, как мы уже понимаем, возникает из-за того, что формат входных данных не соответствует формат-строке `"%d %d"`. Поэтому функция `scanf` запишет значение в переменную `a` и завершится. Давайте это проверим.
32
32
33
33
Надеюсь, вы помните, что функция `scanf` в результате своей работы возвращает целое число -- количество переменных, в которые она успешно записала значения из входного потока. Модифицируем наш код, чтобы программа выводила значение, возвращаемое функцией `scanf`, на экран.
34
34
@@ -124,10 +124,10 @@ int main(void)
124
124
}
125
125
```
126
126
127
-
Эта программа тоже выведет `TRUE!`. В этом примере управляющее выражения вычислять не требуется, т.к. оно уже записано в виде числового значения `3.14`. Т.к. это не нулевое значение (т.е. истина), то будет выполнена основная ветка конструкции `if-else`.
127
+
Эта программа тоже выведет `TRUE!`. В этом примере управляющее выражение вычислять не требуется, т.к. оно уже записано в виде числового значения `3.14`. Т.к. это не нулевое значение (т.е. истина), то будет выполнена основная ветка конструкции `if-else`.
128
128
129
129
130
-
Возвращаемся к программе `sum2`. Добавим в неё инструкцию `if-else`, которая будет проверять значение в переменной `values_read`.
130
+
Возвращаемся к программе `sum2`. Добавим в неё инструкцию `if-else`, которая будет проверять значение переменной `values_read`.
Чувствую, что у вас возник немой вопрос: "В ветке `else` всего одна инструкция. Зачем её оборачиваться в фигурные скобки?"
183
+
Чувствую, что у вас возник немой вопрос: "В ветке `else` всего одна инструкция. Зачем её оборачивать в фигурные скобки?"
184
184
185
185
С формальной точки зрения, конечно, скобки в этой ветке не нужны. Программа будет корректно работать и без них. Но я всё-таки рекомендую вам всегда использовать фигурные скобки в конструкции `if - else`, даже если в них нет необходимости.
186
186
@@ -203,7 +203,7 @@ if (управляющее_выражение)
203
203
204
204
Эта инструкция работает аналогично `if-else`, но с небольшим изменением, связанным с отсутствием побочной ветки `else`.
205
205
206
-
Вычисляется значение управляющего выражения. Если получается ИСТИНА, то выполняется `инструкция_1` из основной ветки, а если ложь, то инструкции из основной ветки игнорируются. А выполняется переходи к следующей инструкции, расположенная после инструкци`if`.
206
+
Вычисляется значение управляющего выражения. Если получается ИСТИНА, то выполняется `инструкция_1` из основной ветки, а если ложь, то инструкции из основной ветки игнорируются. А выполнение переходит к следующей инструкции, расположенной после инструкции`if`.
Эта программа яркая иллюстрация того, когда сокращённая форма более удобна, нежели полная форма `if-else`.
235
235
236
-
Если пользователь ввёл отрицательное число, то у него надо заменить знак, что и происходит в основной ветке `if`. А вот если он ввёл нуль или положительное число, то с числом ничего делать не нужно, а значит ветвь `else` в данном конкретном случае нам вовсе не нужна. Программа же в этом случае пропускает всё, что записано в основной ветке, и переходит к выполнению следующей инструкции.
236
+
Если пользователь ввёл отрицательное число, то у него надо изменить знак, что и происходит в основной ветке `if`. А вот если он ввёл нуль или положительное число, то с числом ничего делать не нужно, а значит ветвь `else` в данном конкретном случае нам вовсе не нужна. Программа же в этом случае пропускает всё, что записано в основной ветке, и переходит к выполнению следующей инструкции.
237
237
238
238
Можно было бы использовать и полную форму, но получилась бы менее изящная программа.
239
239
@@ -291,7 +291,7 @@ int main(void)
291
291
## Вложенные инструкции if-else
292
292
293
293
% **Важно!**
294
-
В ветках `if-else` можно использовать любые инструкции языка Си, в том числе и инструкции `if-else`.
294
+
В ветках `if-else` можно использовать любые инструкции языка Си, в том числе и `if-else`.
295
295
296
296
Для демонстрации этой возможности, давайте решим [задачу про Квадранты](https://stepik.org/lesson/57210/step/13) из прошлого урока.
0 commit comments