|
Начинаем управлять или условные операторы в С++
Рассмотрим операторы выбора (или как их еще называют, условные операторы). Представим себе такую ситуацию, что наша программа выполняет различные операции: складывает числа, запоминает результаты, выводит какую-нибудь информацию на экран, и все это выполняется последовательно, строчка за строчкой (последовательность построчного выполнения кода программы заложена изначально в программирование). Что же у нас получится? А получится у нас то, что наша программа не будет иметь гибкости - она не сможет принимать никаких решений в зависимости от ситуации. Это, как вы понимаете, неправильно и толка с такой программы мало. На помощь приходят условные операторы, которые способны в зависимости от ситуации принимать различные решения. Рассмотрим на примере простейший вариант применения оператора выбора, составим программу: наша программа будет запрашивать у пользователя число и, если это число положительное, то программа выводит сообщение о том, что число положительное, в противном случае - ничего не выводит. Смотрим код ниже:
//Используем условный оператор if
#include <iostream>
using namespace std;
int main()
{
int value;
cout << "Enter number: " << endl;
cin >> value;
if (value > 0)
cout << "Number positive" << endl;
return 0;
}
Как видите, здесь мы используем условный оператор if, который в себе содержит условие и, если это условие выполнится, то будет выполнена строчка кода, относящаяся к этому оператору (т.е. следующая строчка кода). Если нужно, чтобы выполнялось несколько строчек кода, при выполнении условия, то их нужно обязательно заключать в фигурные скобки, иначе будет выполнена только одна, первая, строчка кода. Также не забывайте в своих программах использовать табуляцию для лучшей видимости.
Синтаксис условного оператора выглядит так:
if (условие)
оператор;
либо так, в случае нескольких операторов
if (условие)
{
оператор 1;
оператор 2;
.......
оператор n;
}
Давайте теперь запишем данную программу на языке, приближенном к человеческому (на, так называемом, псевдокоде). Вот что у нас получится:
Выделяем память для переменной целого типа;
Выводим сообщение, в котором пользователю предлагаем ввести целое число;
Считываем это число и запоминаем в переменной;
Если (введенное число больше нуля), то
Выводим на экран сообщение о том, что число положительное;
Как видите, ничего сложного!
Ниже приведен пример, в котором при выполнении условия в операторе if, выполняется более одной строчек кода (в нашем случае их две):
//Используем условный оператор if
#include <iostream>
using namespace std;
int main()
{
int value;
cout << "Enter number: " << endl;
cin >> value;
if (value > 0)
{
cout << "Number positive" << endl;
cout << "You have entered number: " << value << endl;
}
return 0;
}
Откомпилируем и запустим программу. В появившемся окне консоли программа выводит сообщение и ждет ввода пользователя. Попробуйте поэксперементировать с различными числами. Вы увидите, что наша программа уже стала способной принимать решения в зависимости от условия (нашим условием является введенное число). Если мы вводим положительное число, то программа выводит строки о том, что число положительное и печатает нам его. Иначе, когда число отрицательное, либо ноль, программа ничего не выводит, а просто завершается.
Иногда нужно, чтобы программа и в противном случае (если не выполнилось условие после if) выполняла какие-либо строчки кода. Для этого в языке С++ предусмотрена, так называемая, расширенная версия условного оператора if, в которую добавлено ключевое слово else (иначе). Рассмотрим пример использования, модифицировав предыдущую программу:
//Используем условный оператор if - else
#include <iostream>
using namespace std;
int main()
{
int value;
cout << "Enter number: " << endl;
cin >> value;
if (value > 0)
{
cout << "Number positive" << endl;
cout << "You have entered number: " << value << endl;
}
else
{
cout << "Number negative or a zero" << endl;
cout << "You have entered number: " << value << endl;
}
return 0;
}
Теперь программа и в случае условия, обратного указанного в скобках после if, будет производить действия, описанные после оператора else (иначе). В нашем случае для выполнения обратного условия наше число должно быть отрицательным, либо ноль - т.е. все оставшиеся варианты. Вот синтаксис:
if (условие)
{
оператор 1;
оператор 2;
.......
оператор n;
}
else
{
оператор 1;
оператор 2;
.......
оператор n;
}
Как же быть в случае, если нам нужно предусмотреть три условия:
В таком случае у нас имеется гибридный условный оператор. Вот его синтаксис:
if (условие 1)
{
оператор 1;
оператор 2;
.......
оператор n;
}
else if (условие 2)
{
оператор 1;
оператор 2;
.......
оператор n;
}
else
{
оператор 1;
оператор 2;
.......
оператор n;
}
Модифицировав предыдущий листинг, получим следующий код:
//Используем условный оператор if - else if
#include <iostream>
using namespace std;
int main()
{
int value;
cout << "Enter number: " << endl;
cin >> value;
if (value > 0)
{
cout << "Number positive" << endl;
cout << "You have entered number: " << value << endl;
}
else if (value == 0)
{
cout << "The number is not neither positive, nor negative" << endl;
cout << "You have entered number: " << value << endl;
}
else
{
cout << "Number negative" << endl;
cout << "You have entered number: " << value << endl;
}
return 0;
}
Разберем работу программы подробнее. Как вы уже знаете из предыдущих глав, работа программы начинается с главной функции main(). Код выполняется построчно, если не указано иного. Первая строка объявляет переменную целого типа - value, в котором мы будем хранить введенное пользователем число. Затем выводится на экран запрос числа и программа ожидает ввода пользователя, запоминает число в переменную value. Далее начинает свою работу оператор выбора if: если выполняется условие, указанное в нем,
if (value > 0)
то управление переходит к операторам этого блока,
{
cout << "Number positive" << endl;
cout << "You have entered number: " << value << endl;
}
иначе этот блок игнорируется и управление переходит к следующей строке условного оператора,
else if (value == 0)
в которой также проверяется условие и при его выполнении выполняется блок операторов этого if
{
cout << "The number is not neither positive, nor negative" << endl;
cout << "You have entered number: " << value << endl;
}
В случае, если не выполняется и это условие, то выполняется блок
{
cout << "Number negative" << endl;
cout << "You have entered number: " << value << endl;
}
Если все это записать на языке понятном человеку, то получиться примерно так:
Резервируем место в памяти компьютера под целое число;
Запрашиваем у пользователя целое число;
Сохраняем это число в памяти компьютера;
Если это число больше нуля, то
{
Выводим сообщение, что число - положительное;
Выводим это число;
}
Иначе Если это число равно ноль, то
{
Выводим сообщение, что это число ни положительное, ни отрицательное;
Выводим это число;
}
Иначе
{
Выводим сообщение, что это число - отрицательное;
Выводим это число;
}
Условные операторы могут также быть и вложенными в друг друга. Это тоже очень часто применяется на практике. Для того, чтобы разобраться с вложениями, приведем такой пример, для его реализации мы несколько модифицируем предыдущий листинг. А добавим вот что: наша программа будет не только сообщать нам о том, что число положительное или отрицательное, но и будет сообщать - это число больше 100 или меньше (соответственно и с отрицательным числом). Вот что у нас получится:
//Используем условный оператор if
#include <iostream>
using namespace std;
int main()
{
int value;
cout << "Enter number: " << endl;
cin >> value;
if (value > 0)
{
cout << "Number positive" << endl;
cout << "You have entered number: " << value << endl;
if (value >= 100)
cout << "This number is more or equally 100" << endl;
else
cout << "This number is less 100" << endl;
}
else if (value == 0)
{
cout << "The number is not neither positive, nor negative" << endl;
cout << "You have entered number: " << value << endl;
}
else
{
cout << "Number negative" << endl;
cout << "You have entered number: " << value << endl;
if (value >= -100)
cout << "This number is more or equally -100" << endl;
else
cout << "This number is less -100" << endl;
}
return 0;
}
Синтаксис таков (это лишь пример, вы можете подстраивать вложенность под свои требования):
if (условие)
{
if (условие)
{
оператор 1;
оператор 2;
.......
оператор n;
}
else
{
оператор 1;
оператор 2;
.......
оператор n;
}
}
else
{
оператор 1;
оператор 2;
.......
оператор n;
if (условие)
{
оператор 1;
оператор 2;
.......
оператор n;
}
}
Вложенность может быть и более многоуровневой, если это требуется.
И наконец у нас подошла очередь ко второму оператору выбора в языке С++ и называется он switch. Синтаксис его таков:
switch (выражение)
{
case константное_выражение:
оператор 1;
оператор 2;
.......
оператор n;
break;
case константное_выражение:
оператор 1;
оператор 2;
.......
оператор n;
break;
default:
оператор 1;
оператор 2;
.......
оператор n;
break;
}
Рассмотрим применение данного условного оператора на примере: пользователь вводит число, а программа идентифицирует его (если 0, то программа сообщает, что введен ноль и т.д.). Если число не идентифицировано, то выводится соответствующее сообщение.
//Используем оператор выбор case
#include <iostream>
using namespace std;
int main()
{
int value;
cout << "Enter number: " << endl;
cin >> value;
switch (value)
{
case 0:
cout << "You have entered number 0" << endl;
break;
case 5:
cout << "You have entered number 5 " << endl;
break;
case 21:
cout << "You have entered number 21 " << endl;
break;
default:
cout << "The number is not identified" << endl;
break;
}
return 0;
}
Запомнить:
Условные операторы позволяют программе на конкретных этапах выполнения делать выбор и принимать решения, в зависимости от каких-либо обстоятельств, что несоизмеримо важно для любой серьезной программы. Были рассмотрены пять конструкций:
оператор 1;
оператор 2;
.......
оператор n;
}
оператор 1;
оператор 2;
.......
оператор n;
}
else
{
оператор 1;
оператор 2;
.......
оператор n;
}
оператор 1;
оператор 2;
.......
оператор n;
}
else if (условие 2)
{
оператор 1;
оператор 2;
.......
оператор n;
}
else
{
оператор 1;
оператор 2;
.......
оператор n;
}
if (условие)
{
оператор 1;
оператор 2;
.......
оператор n;
}
else
{
оператор 1;
оператор 2;
.......
оператор n;
}
}
else
{
оператор 1;
оператор 2;
.......
оператор n;
if (условие)
{
оператор 1;
оператор 2;
оператор n;
}
}
case константное_выражение:
оператор 1;
оператор 2;
.......
оператор n;
break;
case константное_выражение:
оператор 1;
оператор 2;
.......
оператор n;
break;
default:
оператор 1;
оператор 2;
.......
оператор n;
break;
}
Дата добавления: 2015-08-29; просмотров: 16 | Нарушение авторских прав
<== предыдущая лекция | | | следующая лекция ==> |
срединно-океанический хребет | | |