9d644aa122c76a202dcf4fb2b565c40f87b7143f программирование с нуля самоучитель,самоучитель по программированию - Оператор выбора if else
Рейтинг:   / 2
ПлохоОтлично 

Оператор выбора if else

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

Синтаксис записи оператора выбора if else:

1
2
3
4
5
6
7
if (/*проверяемое условие*/)
{
   /*тело оператора выбора 1*/;
else
      {
         /*тело оператора выбора 2*/;
      }

Читается так: «Если проверяемое условие истинно, то выполняется тело оператора выбора 1, иначе (то есть проверяемое условие ложно) выполняется тело оператора выбора 2«. Обратите внимание на то, как записан оператор if else. Слово else специально сдвинуто вправо для того чтобы программный код был понятен и его было удобно читать.

Рассмотрим задачу с предыдущей темы, с использованием if else. Напомню условие задачи: «Даны два числа, необходимо их сравнить».

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
// if_else.cpp: определяет точку входа для консольного приложения.
 
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int main(int argc, char* argv[])
{
    int a, b;
    cout << "Vvedite pervoe chislo: ";
    cin >> a;
    cout << "Vvedite vtoroe chislo: ";
    cin >> b;
    if ( a >= b) // если a больше либо равно b, то
    {
     cout << a << " >= " << b << endl;
    else  // иначе
         {
          cout << a << " <= " << b << endl;
         }
    system("pause");
    return 0;
}

В данном коде нас интересуют строки 14-20. Эти строки читаются так: если a (первое число) больше либо равно b (второе число), то выполнить оператор вывода в строке 16

1
cout << a << " >= " << b << endl;

иначе выполнить оператор вывода в строке 19

1
cout << a << " <= " << b << endl;

В данном ифе мы используем операции соотношений >= и <=. Условие перехода не совсем правильно, так как условие будет ложно только в том случае, если первое число будет меньше второго, во всех остальных случаях условие истинно. Значит, строку 19 нужно записать так

1
cout << a << " < " << b << endl; // в кавычках записать не меньше или равно, а просто меньше.

Оператор выбора if else

Покажу еще один пример использования операторов выбора if  else (так называемые вложенные операторы if  else для множественного выбора).

Условие задачи:
Составить алгоритм находящий значение y, если у=х, при х<0; у=0, при 0<=х<30; у=х2, при х>=30;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// inif_else.cpp: определяет точку входа для консольного приложения.
 
#include "stdafx.h"
#include <iostream>
using namespace std;
 
int main(int argc, char* argv[])
{
    int x, y;
    cout << "Vvedite x: ";
    cin >> x;
    if (x < 0)
    {
     y = x; // выполняется, если х меньше нуля
    else
           {
             if ( (x >= 0) && (x < 30) )
             {
                y = 0; // выполняется, если х больше либо равно нуля и меньше 30
             else
                     {
                       if (x >= 30)
                       {
                        y = x * x; // выполняется, если х больше либо равен 30
                       }
                     }
           }
    cout << "y=" << y << endl;
    system("pause");
    return 0;
}

В данной задаче возможны три случая:
1-й случай: х < 0;
2-й случай: х лежит в пределах от 0 (включая 0) до 30;
3-й случай: х больше или равен 30.

Заметьте новшество!! В 17 строке такую запись:  if ( ( x >= 0 ) && ( x< 30 ) )я использовал символы && — это логическое И. Операция логического И && необходима для объединения нескольких простых условий в одно составное. В нашем случае необходимо проверить истинность двух условий: первое – x >= 0, второе – х < 30. Все проверяемое условие будет истинно, если истинны два простых условия. В математике правильной записью считается такая запись: 0 <= x < 30, а в С++ правильной записью считается вот такая запись: ( x >= 0 ) && ( x < 30 )  или такая  0 <= x && x < 30. Кстати круглые скобочки () && () не обязательны, так как условия простые, но для уверенности, я прописываю, всегда, данные скобочки и вам советую.

Разбор частного случая:

Допустим, пользователь ввел число 31. Начиная со строки 12, выполняется проверка условий. Читается так: «Если х (31 в нашем случае) < 0, то выполнить оператор в строке 14». Но так как 31 > 0 условие ложно мы переходим к слову else (иначе) строка 15. Дальше проверяем, входит ли число 31 в заданный интервал. Читается так: если х>=0 и х<30 то выполнить оператор в строке 19. Но так как число 31 не входит в заданный интервал, то условие ложно. Подробно строка 17: программа сначала проверит первое простое условие х >= 0 – оно истинно, а если первое истинно, то программа перейдет к проверке второго простого условия х < 30 – оно ложно. Следовательно всё составное условие ложно, ведь в составном условии у нас используется логическая операция &&, а это значит, что все составное условие истинно только в том случае, когда истинны оба простых условия. Переходим к else (иначе ), здесь у нас последний if, (строка 22). Выполняется проверка х >= 30. Читается так: Если х >= 30 то выполнить оператор, находящийся в строке 24. Наконец-то условие истинно, итак выполнился оператор в строке 24. И строка 28 печатает получившееся значение. Ну, все, рассмотрели программу по мельчайшим деталям.

 

   
© программирование с нуля самоучитель | самоучитель по программированию | самоучитель по программированию с нуля | курсы программирования | курсы программирования с нуля