К Т П           План занятия                                                              1                                           Страницы  | 1 | | 2 | | 3 | | 4 | | 5 | | 6 | | 7 | | 8 | | 9 |

8. Основные использования ветвлений if/else

Ветвления if/else активно используются для проверки ошибок. Например, чтобы вычислить квадратный корень значения, параметр, который передается в функцию для вычисления, — обязательно должен быть положительным:

#include <iostream>
#include <cmath> // для функции sqrt()
void printSqrt(double value)
{
    if (value >= 0.0)
        std::cout << "The square root of " << value << " is " << sqrt(value) << "\n";
    else
        std::cout << "Error: " << value << " is negative\n";
}

Также операторы if используют для ранних возвратов — когда функция возвращает управление обратно в caller еще до завершения выполнения самой функции. В программе, приведенной ниже, если значением параметра является отрицательное число, то функция сразу же возвращает в caller символьную константу или перечислитель в качестве кода ошибки:

#include <iostream>
enum class ErrorCode
{
    ERROR_SUCCESS = 0,
    ERROR_NEGATIVE_NUMBER = -1
};
ErrorCode doSomething(int value)
{
    // Если параметром value является отрицательное число,
    if (value < 0)
       // то сразу же возвращаем код ошибки
        return ErrorCode::ERROR_NEGATIVE_NUMBER;
    // Что-нибудь делаем
    return ErrorCode::ERROR_SUCCESS;
}
int main()
{
    std::cout << "Enter a positive number: ";
    int a;
    std::cin >> a;
    if (doSomething(a) == ErrorCode::ERROR_NEGATIVE_NUMBER)
    {
        std::cout << "You entered a negative number!\n";
    }
    else
    {
        std::cout << "It worked!\n";
    }
    return 0;
}

Ветвления if/else также обычно используют для выполнения простых математических операций. Например, рассмотрим функцию min(), которая возвращает минимальное из двух чисел:

int min(int a, int b)
{
    if (a > b)
        return b;
    else
        return a;
}

Эта функция настолько проста, что её можно записать с помощью условного тернарного оператора:

int min(int a, int b)
{
    return (a > b) ? b : a;
}

 

Нулевые стейтменты

Также в C++ можно не указывать основную часть оператора if. Такие стейтменты называются нулевыми стейтментами (или «null-стейтментами»). Объявить их можно, используя точку с запятой вместо выполняемой операции. В целях улучшения читабельности кода, точка с запятой нулевого стейтмента обычно пишется с новой строки. Таким образом, мы явно указываем, что хотим использовать null-стейтмент, уменьшая вероятность не заметить его использования:

if (a > 15)
    ; // это нулевой стейтмент

 

 


Предыдущая        В начало страницы       Следующая
8