HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <p>Условные конструкции позволяют изменить поведение программы в зависимости от проверяемых условий. Благодаря им у нас появляется возможность писать сложные программы, ведущие себя по-разному в зависимости от ситуации.</p>
1 <p>Условные конструкции позволяют изменить поведение программы в зависимости от проверяемых условий. Благодаря им у нас появляется возможность писать сложные программы, ведущие себя по-разному в зависимости от ситуации.</p>
2 <h2>if</h2>
2 <h2>if</h2>
3 <p>Напишем, для примера, функцию, которая определяет тип переданного предложения. Для начала она будет отличать обычные предложения от вопросительных.</p>
3 <p>Напишем, для примера, функцию, которая определяет тип переданного предложения. Для начала она будет отличать обычные предложения от вопросительных.</p>
4 <p>if - конструкция языка, управляющая порядком выполнения инструкций. В скобках ей передается выражение-предикат, а затем описывается блок кода в фигурных скобках. Этот блок кода будет выполнен, только если предикат - истина.</p>
4 <p>if - конструкция языка, управляющая порядком выполнения инструкций. В скобках ей передается выражение-предикат, а затем описывается блок кода в фигурных скобках. Этот блок кода будет выполнен, только если предикат - истина.</p>
5 <p>Если предикат - ложь, то блок кода в фигурных скобках пропускается, и функция продолжает свое выполнение дальше. В нашем случае следующая строчка кода - return 'general'; - заставит функцию вернуть строку и завершиться. Как видите, return может находиться где угодно в функции. В том числе внутри блока кода с условием.</p>
5 <p>Если предикат - ложь, то блок кода в фигурных скобках пропускается, и функция продолжает свое выполнение дальше. В нашем случае следующая строчка кода - return 'general'; - заставит функцию вернуть строку и завершиться. Как видите, return может находиться где угодно в функции. В том числе внутри блока кода с условием.</p>
6 <p>Если в фигурных скобках после if содержится только одна строчка кода, то фигурные скобки можно не писать и сделать так:</p>
6 <p>Если в фигурных скобках после if содержится только одна строчка кода, то фигурные скобки можно не писать и сделать так:</p>
7 <p>Советуем не делать так и<strong>всегда писать фигурные скобки</strong>. В таком случае явно видно, где начинается и заканчивается тело условия. Код становится более четким и понятным.</p>
7 <p>Советуем не делать так и<strong>всегда писать фигурные скобки</strong>. В таком случае явно видно, где начинается и заканчивается тело условия. Код становится более четким и понятным.</p>
8 <h2>else</h2>
8 <h2>else</h2>
9 <p>Напишем функцию getTypeOfSentence(), которая анализирует текст и возвращает описание его тона: для обычных предложений -<em>General sentence</em>, для вопросительных -<em>Question sentence</em>.</p>
9 <p>Напишем функцию getTypeOfSentence(), которая анализирует текст и возвращает описание его тона: для обычных предложений -<em>General sentence</em>, для вопросительных -<em>Question sentence</em>.</p>
10 <p>Реализация функции:</p>
10 <p>Реализация функции:</p>
11 <p>Мы добавили ключевое слово else и новый блок с фигурными скобками. Этот блок выполнится, только если условие в if - ложь.</p>
11 <p>Мы добавили ключевое слово else и новый блок с фигурными скобками. Этот блок выполнится, только если условие в if - ложь.</p>
12 <p>Существует два способа оформления конструкции<em>if-else</em>. С помощью отрицания можно изменить порядок блоков:</p>
12 <p>Существует два способа оформления конструкции<em>if-else</em>. С помощью отрицания можно изменить порядок блоков:</p>
13 <p>Какой способ предпочтительнее? Человеческому мозгу проще мыслить прямолинейно, а не через отрицание. Старайтесь выбирать проверку, которая не содержит отрицаний, и подстраивайте содержимое блоков под нее.</p>
13 <p>Какой способ предпочтительнее? Человеческому мозгу проще мыслить прямолинейно, а не через отрицание. Старайтесь выбирать проверку, которая не содержит отрицаний, и подстраивайте содержимое блоков под нее.</p>
14 <h2>Конструкция else if</h2>
14 <h2>Конструкция else if</h2>
15 <p>Функция getTypeOfSentence() из предыдущего примера различает только вопросительные и обычные предложения. Давайте попробуем добавить поддержку восклицательных предложений:</p>
15 <p>Функция getTypeOfSentence() из предыдущего примера различает только вопросительные и обычные предложения. Давайте попробуем добавить поддержку восклицательных предложений:</p>
16 <p>Мы добавили еще одну проверку ("exclamation" переводится "восклицание"). Технически функция работает, но с точки зрения семантики есть проблемы:</p>
16 <p>Мы добавили еще одну проверку ("exclamation" переводится "восклицание"). Технически функция работает, но с точки зрения семантики есть проблемы:</p>
17 <ul><li>Проверка на наличие вопросительного знака происходит в любом случае, даже если уже был обнаружен восклицательный знак.</li>
17 <ul><li>Проверка на наличие вопросительного знака происходит в любом случае, даже если уже был обнаружен восклицательный знак.</li>
18 <li>Ветка else описана именно для первого условия, но не для второго.</li>
18 <li>Ветка else описана именно для первого условия, но не для второго.</li>
19 </ul><p>Правильнее будет воспользоваться еще одной возможностью условной конструкции:</p>
19 </ul><p>Правильнее будет воспользоваться еще одной возможностью условной конструкции:</p>
20 <p>Теперь все условия выстроены в единую конструкцию. else if - это "если не выполнено предыдущее условие, но выполнено текущее". Получается такая схема:</p>
20 <p>Теперь все условия выстроены в единую конструкцию. else if - это "если не выполнено предыдущее условие, но выполнено текущее". Получается такая схема:</p>
21 <ul><li>если последний символ это ?, то 'question'</li>
21 <ul><li>если последний символ это ?, то 'question'</li>
22 <li>иначе, если последний символ это !, то 'exclamation'</li>
22 <li>иначе, если последний символ это !, то 'exclamation'</li>
23 <li>иначе 'normal'</li>
23 <li>иначе 'normal'</li>
24 </ul><p>Выполнится только один из блоков кода, относящихся ко всей конструкции if.</p>
24 </ul><p>Выполнится только один из блоков кода, относящихся ко всей конструкции if.</p>