Съдържание

 

  1. Условен оператор if-else
  2. Условен оператор switch-case

В случай, че четете уроците подред, силно препоръчвам преди да започнете с този урок да прочетете C++ Стандартен Вход / Изход, тъй като този и следващите уроци изхождат от това, че вече имате познания по темата.

Условен оператор if-else

Условният опрератор if се използва за сравняване на стойностите на променливи и извършване на действия спрямо резултата. Например може да сравним дали стойността въведена от потребителя е равна на дадена стойност. В следващия пример ще започнем имплементацията на мини-игра, в която потребителят трябва да познае предварително зададеното число между 0 и 10.

  1. #include <iostream>
  2. using namespace std;
  3. #define GUESS_IT 7 // сложете число между 0 и 10
  4. int main()
  5. {
  6.      int guess;
  7.      cout << „Enter a number (0-10): „;
  8.      cin >> guess;
  9.      if (guess == GUESS_IT)
  10.      cout << „You win!“;
  11.      return 0;
  12. }


Искам да се възползвам от ситуацията и да наблегна още веднъж на разликата между = и ==. Първото е оператор за присвояване, второто за сравняване! Често срещана грешка е да се напише if(guess = GUESS_IT), проблемът в случая е, че това условие ще бъде винаги вярно (True), тъй като if проверява дали стойността GUESS_IT е успешно присвоена в променливата guess. Тоест, каквото и число да въведе потребителят, винаги ще изписва на екрана „You win!“. Но нека се върнем обратно към примера. Ако потребителят въведе числото 7, тогава на екрана ще се отпечата „You win!“, в противен случай няма да се отпечата нищо.

Синтаксисът на if e следният:

  1. if (условие) {
  2. // изпълнява се само, ако условието е вярно
  3. }

Скобите { } са задължителни, само ако искате да напишете повече от една команда за изпълнение в if израза (на мястото на многоточието), в противен случай не е необходимо.

Ако искаме да съобщим на потребителя, че въведеното от него число е грешно, трябва да добавим код, който да се изпълнява, само когато условието в if-а е грешно. Това става с помощта на ключовата дума else по следния начин:

  1. #include <iostream>
  2. using namespace std;
  3. #define GUESS_IT 7 // сложете число между 0 и 10
  4. int main()
  5. {
  6.      int guess;
  7.      cout << „Enter a number (0-10): „;
  8.      cin >> guess;
  9.      if (guess == GUESS_IT)
  10.      cout << „You win!“;
  11.      else
  12.      cout << „You lose!“;
  13.      return 0;
  14. }

Сега вeче, когато потребителят въведе грешно число (в случая всяко число различно от 7), условието в if ще върне „false“ и кодът под него ще бъде прескочен, но ще влезе в сила условието else, което се изпълнява винаги, когато горното условие е грешно. На екрана ще се отпечата „You lose!“.

В условието на if могат да се пишат и по-сложни изрази, това става посредством операторите && (и) или || (или) (Справка C++ Оператори). Например ако между 2 условия сложите && за да върне „true“, трябва и двете да са изпълнени, ако едното или и двете не са изпълнени връща „false“, докато ако сложите || е нужно само едно от 2-те условия да е изпълнено, за да върне „true“, в този случай ще върне „false“, само ако и двете условия са неизпълнени.

Освен това комбинацията от if и else може да се прилага безкрайно много пъти по-следния начин:

  1. if (условие1)
  2. // изпълнява се, ако условие1 е вярно
  3. else if (условие2)
  4. // изпълнява се, ако условие1 е грешно И условие2 е вярно
  5. else if (условие3)
  6. // изпълнява се, ако двете предходни условия са грешни И условие3 е вярно
  7. else
  8. // изпълнява се, ако всички предходни условия са грешни

Знаейки това, можем допълнително да подобрим нашата игра, добавяйки допълнителни проверки, например проверка дали въведеното число е между 0 и 10:

  1. #include <iostream>
  2. using namespace std;
  3. #define GUESS_IT 7 // сложете число между 0 и 10
  4. int main()
  5. {
  6.      int guess;
  7.      cout << „Enter a number (0-10): „;
  8.      cin >> guess;
  9.      if (guess < 0 || guess > 10)
  10.      cout << „The number must be between 0 and 10!“;
  11.      else if (guess == GUESS_IT)
  12.      cout << „You win!“;
  13.      else
  14.      cout << „You lose!“;
  15.      return 0;
  16. }

 

Условен оператор switch-case

С условния оператор switch може да проверявате много стойности за една и съща променлива. За всяка възможна стойност може да изпълнявате различен код, като накрая e необходимо да слагате „break;“, за да прекратите действието. Също така има и default случай, който е аналогичен на else при if. Default се изпълнява, само ако нито един от другите случаи не е изпълнен. Синтаксисът е следният:

  1. switch(variable) // variable e някаква променлива
  2. {
  3. case a: // a e стойност, която може да се съдържа в променливата variable
  4. ;
  5. break;
  6. case b:
  7. ;
  8. break;
  9. default:
  10. ;
  11. // тук break не е необходим
  12. }

Ето как би изглеждала нашата игра, ако използвахме switch-case:

  1. #include <iostream>
  2. using namespace std;
  3. #define GUESS_IT 7 // сложете число между 0 и 10
  4. int main()
  5. {
  6.      int guess;
  7.      cout << „Enter a number (0-10): „;
  8.      cin >> guess;
  9.      switch(guess){
  10.      case GUESS_IT:
  11.      cout << „You win!“;
  12.      break;
  13.      default:
  14.      cout << „You lose!“;
  15. }
  16. return 0;
  17. }

Автор: Мартин Михайлов