Skip to content

Commit c25c5a0

Browse files
authored
Merge pull request #16 from VibrantFalcon/main
Исправления
2 parents 0249e78 + c061eb9 commit c25c5a0

File tree

5 files changed

+14
-14
lines changed

5 files changed

+14
-14
lines changed
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"title": "Стандартные потоки ввода и вывода в языке Си",
3-
"description": "В этом уроке обсуждаем как устроен ввода и вывода в языке Си. Стандартный поток ввода и стандартный поток вывода.",
3+
"description": "В этом уроке обсуждаем как устроены ввод и вывод в языке Си. Стандартный поток ввода и стандартный поток вывода.",
44
"keywords": "стандартный поток ввода и вывод, stdin, stdout, ввод и вывод в языке си",
55
"canonical_link": "https://youngcoder.ru/lessons/3/potoki_vvoda_i_vyvoda"
6-
}
6+
}

lang_c/3/2__formatnyi_vyvod_printf/article.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
Каким же образом функция `printf` управляет форматированием выводимых данных? Управление форматированием осуществляется с помощью =формат-строки=, которая передаётся в `printf` в качестве аргумента.
1616

17-
Давайте впомним, как выглядел вызов функции `printf` в программе «Hello, World!» из первого урока.
17+
Давайте вспомним, как выглядел вызов функции `printf` в программе «Hello, World!» из первого урока.
1818

1919
% **Важно!**
2020
В коде ниже указана только одна строчка, а не полный текст программы «Hello, World!». Чтобы превратить её в полноценную программу, необходимо добавить подключение заголовочного файла stdio.h, определение функции `main` и пр.

lang_c/6/1__otnosheniya_i_usloviya/article.md

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Отношения и логические операторы
22

3-
Как нам уже известно из вводного урока, инструкция `if-else` выполняет те или иные действия в зависимости результата проверки дополнительных условий. Прежде чем переходить к её подробному изучению, давайте разберёмся, какие возможности предоставляет язык Си для записи этих самых дополнительных условий.
3+
Как нам уже известно из вводного урока, инструкция `if-else` выполняет те или иные действия в зависимости от результата проверки дополнительных условий. Прежде чем переходить к её подробному изучению, давайте разберёмся, какие возможности предоставляет язык Си для записи этих самых дополнительных условий.
44

55
Самая базовая возможность -- это сравнение двух значений. Для этого в Си определены следующие =операторы сравнения=:
66

@@ -25,7 +25,7 @@
2525

2626
В нашем случае `10 > 3`, значение `10`, записанное слева от оператора, больше чем значение `3`, записанное от оператора справа, следовательно результат проверки положительный. В таких случаях ещё говорят логическое выражение истинно или отношение истинно.
2727

28-
Хорошо, мы выяснили, что выражение `10 > 3` истинно. Но каков его результат? Другими словами, каково значение этого логического выражения? Например, для выражения `3 + 7` результат `10`, а для каков результат для выражения `10 > 3`? Что такое истина для компьютера? Как её записать в виде числа?
28+
Хорошо, мы выяснили, что выражение `10 > 3` истинно. Но каков его результат? Другими словами, каково значение этого логического выражения? Например, для выражения `3 + 7` результат `10`, а каков результат для выражения `10 > 3`? Что такое истина для компьютера? Как её записать в виде числа?
2929

3030
А тут всё довольно просто. Если выражение истинно, то его результат равен `1`, а если выражение ложно, то его результат равен `0`.
3131

@@ -172,10 +172,10 @@ int main(void)
172172
Допустим, пользователь ввёл значение `22`. Программа начинает последовательно, слева направо вычислять значение выражения `18 <= 22 <= 100`.
173173

174174
Сначала вычисляется первая половинка выражения: `18 <= 22`. Т.к. это отношение истинно, то оператор `<=` вернёт значение `1`.
175-
Подставляя `1` вместо `18 <= 22`, мы получим новое выражение: `1 <= 100`. Оно тоже, конечно, истинно, а значит итоговый результат всего выражение будет `1`.
175+
Подставляя `1` вместо `18 <= 22`, мы получим новое выражение: `1 <= 100`. Оно тоже, конечно, истинно, а значит итоговый результат всего выражения будет `1`.
176176

177177
Самые внимательные уже догадались, что здесь притаилась проблема. Давайте проверим это же выражение при `x = 10`.
178-
Вычисляем первую часть: `10 <= 18` -- ложь, значит это выражение равно `0`. Подставляем `0` вместо `10 <= 18`, получаем: `0 <= 100`. Это отношение истинно, а значит итоговый результат всего выражения будет `1`.
178+
Вычисляем первую часть: `18 <= 10` -- ложь, значит это выражение равно `0`. Подставляем `0` вместо `18 <= 10`, получаем: `0 <= 100`. Это отношение истинно, а значит итоговый результат всего выражения будет `1`.
179179

180180
Можете проверить самостоятельно:
181181
```c
@@ -202,7 +202,7 @@ printf("%d\n", 18 <= x <= 100); // выведет 1. ОШИБКА!
202202
```
203203

204204
### Оператор `!` логическое НЕ
205-
Оператор `!` используется для отрицания результат логического выражения, к которому он был применён. Истину он делает ложью, а ложь, наоборот, превращает в истину.
205+
Оператор `!` используется для отрицания результата логического выражения, к которому он был применён. Истину он делает ложью, а ложь, наоборот, превращает в истину.
206206

207207
Посмотрите на пример:
208208

@@ -330,4 +330,4 @@ int main(void)
330330
9. **логическое ИЛИ `||`**
331331
10. присваивание `=`
332332

333-
Из-за того, что оператор присваивание `=` имеет приоритет ниже, чем операторы `<=` и `&&`, а оператор `&&` в свою очередь имеет приоритет ниже, чем оператор `<=`, то в выражении `int res = (18 <= x) && (x <= 100);` из Листинга 10 мы можем убрать скобки и результат останется прежним. Но, как и прежде, я рекомендую вам не пренебрегать скобками и явно задавать порядок выполнения операций, чтобы не допустить случайных ошибок.
333+
Из-за того, что оператор присваивания `=` имеет приоритет ниже, чем операторы `<=` и `&&`, а оператор `&&` в свою очередь имеет приоритет ниже, чем оператор `<=`, то в выражении `int res = (18 <= x) && (x <= 100);` из Листинга 10 мы можем убрать скобки и результат останется прежним. Но, как и прежде, я рекомендую вам не пренебрегать скобками и явно задавать порядок выполнения операций, чтобы не допустить случайных ошибок.

lang_c/6/1__otnosheniya_i_usloviya/practice.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
### Исследовательские задачи для хакеров
1010

11-
В некоторых языках программирования есть встроенный логический тип данных. В языке Си логический тип данных было добавлен в стандарте C99.
12-
Это тип данных `_Bool`, который хранит только два значения: `0` (ложь) и `1` (истина). Кроме того, этим же стандартном введён заголовочный файл `stdbool.h`, который определяет значения `true` (истина, т.е. `1`) и `false` (ложь, т.е. `0`).
11+
В некоторых языках программирования есть встроенный логический тип данных. В язык Си логический тип данных был добавлен в стандарте C99.
12+
Это тип данных `_Bool`, который хранит только два значения: `0` (ложь) и `1` (истина). Кроме того, этим же стандартом введён заголовочный файл `stdbool.h`, который определяет значения `true` (истина, т.е. `1`) и `false` (ложь, т.е. `0`).
1313

14-
Изучите самостоятельно, как работает тип `_Bool` и заголовочный файл `stdbool.h`.
14+
Изучите самостоятельно, как работает тип `_Bool` и заголовочный файл `stdbool.h`.

lang_c/6/1__otnosheniya_i_usloviya/reference.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ fabs(x - y) < 0.001 // с точностью до одной тысячной (3
1010
fabs(x - y) < 0.0000001 // с точностью до одной десятимилионной (7 знаков)
1111
```
1212
13-
Но, конечно, не имеет смысла задавать точность большую, нежели используется в для хренения вещественных чисел в памяти компьютера, т.к. если в исходных числах точны только первые `15` знаков, то нет смысла сравнивать с точностью в `20` знаков, т.к. мы заранее знаем, что после `15` знака значения даже исходные значения неточны, что уж говорить о значениях, полученных из исходных в результате каких-либо вычислений.
13+
Но, конечно, не имеет смысла задавать точность большую, нежели используется для хранения вещественных чисел в памяти компьютера, т.к. если в исходных числах точны только первые `15` знаков, то нет смысла сравнивать с точностью в `20` знаков, т.к. мы заранее знаем, что после `15` знака даже исходные значения неточны, что уж говорить о значениях, полученных из исходных в результате каких-либо вычислений.
1414
1515
Обычно точности в 7-8 знаков достаточно для подавляющего большинства обыденных практических задач.
1616
@@ -32,4 +32,4 @@ fabs(x - y) < 0.0000001 // с точностью до одной десятим
3232
00000101
3333
=
3434
00000111
35-
```
35+
```

0 commit comments

Comments
 (0)