From 2e727785fbbcf589c12d7418f80b6f296d054a17 Mon Sep 17 00:00:00 2001 From: Aleksei Aksenov Date: Thu, 8 Aug 2019 01:06:45 +0300 Subject: [PATCH] Update and fix riussian translation of switch statement (#34013) --- guide/russian/c/switch/index.md | 46 ++++++++++++++++----------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/guide/russian/c/switch/index.md b/guide/russian/c/switch/index.md index 487813bdfb..5c0477d869 100644 --- a/guide/russian/c/switch/index.md +++ b/guide/russian/c/switch/index.md @@ -1,38 +1,38 @@ --- -title: Switch Case -localeTitle: Корпус выключателя +title: switch case +localeTitle: switch case --- -# Корпус выключателя +# switch case -Оператор switch похож на набор `if statements` . +Оператор switch похож на набор операторов `if` . -Это список возможностей с действием для каждой возможности и необязательным действием по умолчанию, если ничто иное не оценивает значение true. +Он представляет собой список возможных вариантов, с действием для каждого варианта и необязательным действием по умолчанию, если ни один вариант не сработал. -Мы выходим из коммутатора на `break` . Если оператор `break` не будет достигнут до начала следующего случая, выполнение провалится и начнет выполнение кода в следующем случае. +Мы выходим из оператора switch с помощью `break` . Если оператор `break` не будет встречен до начала следующей метки case, программа начнет выполнять инструкции следующей метки case. -## Синтаксис переключателя ... case +## Синтаксис switch...case ```c switch (n) { case constant1: - // code to be executed if n is equal to constant1; + // код, который необходимо выполнить в случае, если n равно constant1; break; case constant2: - // code to be executed if n is equal to constant2; + // код, который необходимо выполнить в случае, если n равно constant2; break; . . . default: - // code to be executed if n doesn't match any constant + // код, который необходимо выполнить в случае, если n не равно ни одной из констант } ``` -## пример +## Пример -Использование оператора switch над несколькими операторами if / else может способствовать большей скорости и удобочитаемости. +Использование оператора switch вместо нескольких операторов if/else может способствовать большей скорости и удобочитаемости. ```c # include @@ -61,9 +61,9 @@ switch (n) case '/': printf("%.1lf / %.1lf = %.1lf",firstNumber, secondNumber, firstNumber/firstNumber); break; - // Operator is doesn't match any case constant (+, -, *, /) + // operator не равен ни одной из констант в case (+, -, *, /) default: - printf("Error! operator is not correct"); + printf("Error! Operator is not correct"); } return 0; @@ -72,18 +72,18 @@ switch (n) ## Вывод: -```c --> Enter an operator (+, -, *,): - +``` + -> Enter an operator (+, -, *,): - -> Enter two operands: 32.5 -> 12.4 -> 32.5 - 12.4 = 20.1 ``` -## Обзор: Switch vs if else +## Обзор: switch vs if/else -* Проверьте выражение тестирования: оператор if-then-else может тестировать выражения на основе диапазонов значений или условий, тогда как оператор switch проверяет выражения, основанные только на одном целочисленном, перечисляемом значении или объекте String. -* Лучше переключайтесь на многопоточность: когда компилятор компилирует оператор switch, он проверяет каждую из констант case и создает «таблицу перехода», которую он будет использовать для выбора пути выполнения в зависимости от значения выражения. Поэтому, если нам нужно выбрать среди большой группы значений, оператор switch будет работать намного быстрее, чем эквивалентная логическая кодировка с использованием последовательности if-elses. Компилятор может это сделать, потому что он знает, что константы case имеют одинаковый тип и просто должны сравниваться для равенства с выражением switch, тогда как в случае выражений компилятор не имеет таких знаний. -* if-else лучше для логических значений: If-else условные ветви отлично подходят для переменных условий, которые приводят к булевому, тогда как операторы switch отлично подходят для фиксированных значений данных. -* Скорость. Оператор switch может оказаться быстрее, чем если бы при условии, что количество дел является хорошим. Если есть только несколько случаев, это может не повлиять на скорость в любом случае. Переключатель предпочтений, если число случаев больше, чем 5, иначе вы можете использовать if-else. -* Если коммутатор содержит более пяти элементов, он реализуется с помощью таблицы поиска или хеш-листа. Это означает, что все элементы получают одинаковое время доступа по сравнению со списком if: s, где последний элемент занимает гораздо больше времени для достижения, поскольку он должен сначала оценивать каждое предыдущее условие. -* Ясность в удобочитаемости: коммутатор выглядит намного чище, когда вам приходится комбинировать случаи. Ifs также очень уязвимы для ошибок. Отсутствие заявления другого может нанести вам ущерб. Добавление и удаление меток также проще с помощью переключателя и делает ваш код значительно легче изменять и поддерживать. \ No newline at end of file +* Проверьте выражение тестирования: оператор if/else может тестировать выражения на основе диапазонов значений или условий, тогда как оператор switch проверяет выражения, основанные только на одиночном целом числе, перечисляемом значении или строке. +* switch более подходит для множественных ветвлений: когда компилятор компилирует оператор switch, он проверяет каждую из констант case и создает «таблицу переходов», которую он будет использовать для выбора пути выполнения в зависимости от значения выражения. Поэтому, если нам нужно выбрать среди большой группы значений, оператор switch будет работать намного быстрее, чем эквивалентная логика, реализованная с использованием последовательности операторов if/else. Компилятор может это сделать, потому что он знает, что константы case имеют одинаковый тип и просто должны сравниваться на равенство с выражением switch, тогда как в случае операторов if у компилятора нет таких сведений. +* if/else лучше для логических значений: условные ветви оператора if/else отлично подходят для переменных условий, которые вычисляются в булево значение, тогда как операторы switch отлично подходят для фиксированных значений данных. +* Скорость. Оператор switch может оказаться быстрее чем if/else, при условии, достаточно большого количества меток case. Если меток case мало, это может не оказать влияние на скорость. Отдавайте предпочтение switch в случае, когда количество меток case превышает 5, иначе можно также использовать if/else. +* Если switch содержит более пяти веток, он реализуется с помощью таблицы поиска или хеш-листа. Это означает, что все элементы получают одинаковое время доступа, в отличие от списка веток if/else, где достижение последнего элемента занимает гораздо больше времени, поскольку необходимо вычислить все предыдущие условия. +* Ясность и удобочитаемость: switch выглядит намного чище, если вам приходится комбинировать метки case. Операторы if помимо прочего очень уязвимы для ошибок. Пропущенное ключевое слово else может нанести вам большой ущерб. Добавление и удаление меток в операторе switch значительно проще и делает ваш код значительно легче модифицируемым и поддерживаемым.