ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ В C++ (4-Е ИЗДАНИЕ) (часть 3) онлайн

Конструкция else...if

Вложенные ветвления if...else в программе ADIFELSE выглядят несколько неук- люже и могут представлять трудность для восприятия, особенно если глубина вложенности больше, чем показано в примере. Существует еще один вариант запи- си этих же действий. Необходимо только немного изменить последовательность записи кода программы. В результате получим следующий пример ADELSEIF:

 

// приключенческая игра с применением else...if

#include <iostream>

using namespace std;

#include <conio.h>           // для getche()

int main()

{

  char dir='a';

  int x=10,y=10;

  cout << "Нажмите Enter для выхода...\n";

  while( dir != '\r' )       // пока не нажата клавиша Enter

  {

    cout << "\nВаши координаты: " << x << ", " << y;

    cout << "\nВыберите направление (n,s,e,w): ";

    dir = getche();          // ввод символа

    if ( dir == 'n' )        // движение на север

      y--;

    else if(dir=='s' )       // движение на юг

                               y++;

    else if(dir=='e' )       // движение на восток

                               x++;

    else if(dir=='w' )       // движение на запад

                               x--;

  }                          // конец цикла while

  return 0;

}    

 

Компилятор воспринимает эту программу как идентичную программе ADIFELSE, но здесь мы поменяли местами блоки if и else в ветвлениях. У вас может соз- даться впечатление, что мы использовали новый вид ветвления else...if. Про- грамма последовательно исполняет блоки else...if до тех пор, пока не выполнит- ся хотя бы одно из проверяемых условий. Затем исполняется соответствующий оператор и производится выход из ветвлений. Такой способ представления вло- женных ветвлений гораздо проще и удобнее для понимания, чем обычная по- следовательность конструкций if...else.

 

32