Оператор условного перехода if

Оператор условного перехода if


Содержание


1. Какую функцию выполняет оператор условного перехода if в программах на C++?

Оператор условного перехода if позволяет организовать выбор хода выполнения программы. Выбор осуществляется по некоторому условию. Если условие выполняется, тогда выполнение программы происходит одним путем. Иначе, программа выполняется другим путем.
Оператор условного перехода осуществляет ветвление в программе.

2. Какие формы (представления) имеет оператор условного перехода if в языке C++?

Оператор условного перехода может иметь следующие представления:

  • полную форму ‘if … else’;
  • сокращенную форму ‘if’;
  • конструкцию вида ‘if … else … if’.

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

3. Какой вид имеет полная форма оператора if?

Общий вид полной формы оператора условного перехода if:

if (выражение)
{
    // несколько операторов (инструкций)
    // ...
}
else
{
    // несколько операторов (инструкций)
    // ...
}

где выражение – условное выражение (условие) согласно синтаксису языка C++.

Оператор if работает следующим образом. Если элемент выражение дает значение true (истина), тогда выполняются операторы сразу после слова if. В противном случае (значение выражения равно false) выполняются операторы, следующие после слова else.

Если после слова if или после слова else нужно выполнить только один оператор (а не несколько), тогда фигурные скобки { } можно опустить.

Общая форма оператора, в котором после слов if и else нужно выполнить только один оператор, может быть следующей:

if (выражение)
    оператор1;
else
    оператор2;

4. Примеры использования полной формы оператора условного перехода if

Пример 1. Написать фрагмент кода, в котором вычисляется значение следующего выражения:

C++ задача формула

float f, x;

// ввод x
// ...

if ((-8<=x)&&(x<=5))
    f = x*x+2*x-4;
else
    f = x-5;

В вышеприведенном примере на основе значения x вычисляется результирующее значение f.

Пример 2. Дано значение n = 1..7, которое есть номером дня недели. По значению n определить, выходной этот день или рабочий. Результат записать в переменную fDayOff типа bool.

Фрагмент кода, который решает данную задачу.

int n;
bool fDayOff;

n = 5;

if ((n>=1) && (n<=5))
    fDayOff = false; // fDayOff = false
else
    fDayOff = true;

5. Какой вид имеет сокращенная форма оператора if?

Иногда в программах на C++ полную форму оператора if целесообразно заменить на сокращенную форму. Это необходимо в случаях, если после слова else не нужно выполнять никаких инструкций. В сокращенной форме оператора if ключевое слово else опускается.

Общий вид сокращенной формы оператора if:

if (выражение)
{
    // несколько операторов
    // ...
}

где выражение – условное выражение (условие) согласно синтаксису языка C++.

Если после слова else нужно выполнить только один оператор, тогда фигурные скобки { } можно опустить:

if (выражение)
    оператор;

6. Примеры использования сокращенной формы оператора if

Пример 1. Даны три целых числа a, b, c. Разработать программу, которая находит минимальное значение между этими числами.

Фрагмент кода, который решает данную задачу:

int a, b, c;
int min; // искомое минимальное значение

a = 8;
b = -5;
c = 12;

// поиск минимального значения
min = a;
if (min > b) min = b;
if (min > c) min = c; // min = -5

Пример 2. Дано целое число n = 1..3, которое есть номером функции. По значению переменной n вычислить значения соответствующей функции:

1) x2+8; 2) -5x-1; 3) 10-x.

Фрагмент кода, который решает данную задачу с помощью сокращенной формы оператора if.

int n;
int x, f;

// ввод значений n, x
// ...

if (n==1) f = x*x + 8;
if (n==2) f = -5*x - 1;
if (n==3) f = 10 - x;

7. Составная форма оператора условного перехода if … else … if

Оператор условного перехода if может иметь более сложную форму, которая имеет следующий общий вид:

if (выражение1)
{
    // операторы
    // ...
}
else
if (выражение2)
{
    // операторы
    // ...
}
else

...

if (выражениеN)
{
    // операторы
    // ...
}
else
{
    // операторы
    // ...
}

где выражение1, выражение2, …, выражениеN – условные выражения.

Условные выражения вычисляются сверху вниз. Если в одном из выражений будет найден истинный результат (true), тогда будут выполняться операторы, которые связаны с этой ветвью, а выполнение всех других «ветвей» опускается.

8. Примеры использования составной формы if … else … if

Пример 1. Дан номер месяца года n. По номеру месяца определить, сколько дней в этом месяце.
Фрагмент кода, который решает данную задачу. Принять, что в феврале 28 дней.

int n;
int days;

// ввод n
// ...

if ((n==4)||(n==6)||(n==9)||(n==11)) days = 30;
else
if (n==2) days = 28;
else
    days = 31;

Пример 2. Дано вещественное число x. Вычислить значение функции.

C++ задача формула

Фрагмент кода, который решает данную задачу.

float x;
float f;

x = 5;

if (x<-2)
    f = 3*x*x - 8;
else
if ((-2<=x)&&(x<=4))
    f = -9*x*x - 12;
else
    f = 32 + x; // f = 37

9. Что такое вложенные операторы if?

Операторы if могут быть вложенными. Это означает, что вместо операторов (см. п.п. 2, 4, 6) может быть другой оператор if. В языке C++ допускается до 256 вложений операторов if.

Здесь возникает правило относительно последней else-инструкции. Последняя else-инструкция относится к ближайшей if-инструкции, которая находится внутри того же программного блока (фигурные скобки { }) но еще не связана с любой другой else-инструкцией. Во избежание невидимых логических ошибок, рекомендуется выделять нужные «ветви» выполнения оператора if фигурными скобками { }.

Простейший общий вид вложенного оператора if:

if (выражение)
{
    // вложенный оператор if
    if (выражение)
    {
        // операторы
        // ...
    }
    else
    {
        // операторы
        // ...
    }

    // ...
}

10. Пример вложенных операторов if

Пример. Фрагмент решения квадратного уравнения с учетом всех возможных значений коэффициентов уравнений a, b, c.

float a, b, c; // коэффициенты уравнения
float d; // дискриминант
float x1, x2; // корни уравнения

a = -1;
b = 1;
c = 5;

d = b*b - 4*a*c;

if (a==0)
{
    if (b!=0)
    {
        label1->Text = "Уравнение имеет 1 корень";
        x1 = -c/b;
        label2->Text = x1.ToString();
    }
    else
    {
        label1->Text = "Неверно введенны данные";
    }
}
else
{
    // a!=0
    if (d<0)
        label1->Text = "Уравнение не имеет корней";
    else
    {
        if (d==0)
        {
            label1->Text = "Уравнение имеет 1 корень";
            x1 = -b/(2*a);
            label2->Text = "x = " + x1.ToString();
        }
        else
        {
            label1->Text = "Уравнение имеет 2 корня";
            x1 = (-b - Math::Sqrt(d))/(2*a);
            x2 = (-b + Math::Sqrt(d))/(2*a);
            label2->Text = "x1 = " + x1.ToString();
            label3->Text = "x2 = " + x2.ToString();
        }
    }
}


Связанные темы