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>