Отправляет email-рассылки с помощью сервиса Sendsay

Си/Си++ с нуля!

  Все выпуски  

Этот и следующий выпуски будут посвящены управляющим операторам,


Доброго времени суток, Уважаемые Подписчики.

Этот и следующий выпуски будут посвящены управляющим операторам, которые почти всегда используются совместно с условными операциями. Для того чтобы узнать, что такое условные операции, я рекомендую дополнительно ознакомиться вот с этой статьей. А тут рассказывается что такое алгебра логики, понимание основных принципов которой крайне важно для изучения логических операций и понимания приципов работы управляющих операторов.

Управляющие операторы

Управляющие операторы используются для реализации ветвления и циклов в алгоритме программ, а также в некоторых случаях и для реализации подпрограмм (оператор goto). Все управляющие операторы можно разделить на три категории:

  • Условные операторы if, if-else и switch-case
  • Операторы цикла for, while и do-while
  • Оператор безусловного перехода goto

Условные операторы if и switch

Выражения с использованием условных операторов имеют несколько базовых синтаксических форм. Первая из них это:

if (<условие>)

{

//-- блок из одного или более операторов

}

Если условие (выражение в круглых скобках) верно, то выполняется заданный внутри фигурных скобок блок операторов. Второй вариант это:

if (<условие>)
{

// блок 1, из одного или более операторов

}
else
{

// блок 2, из одного или более операторов

}

Если условие истинно, выполняется блок 1, иначе блок 2. В качестве условия применяются выражения с использованием операций отношения, либо логических операций, возможно в сочетании с другими операциями.

Примеры:

#include<cstdio>

#include<cstdlib>

using namespace std;

int main(int argc, char *argv[])
{

// объявим переменные i и j, присвоив им значения 1 и 5, соответственно.

int i=1;

int j=5;

// Вариант 1

if(i>j){

// этот блок не выполнится никогда,

// тк 1>5 ложное высказывание (выражение)

printf("1>5 о_О\n");

}

if(i<j){

// будет выполняться этот блок заместо предыдущего

// тк выражение 1<5 истинно

printf("1<5 Ok!\n");

}

// Вариант 2 почти тоже самое, но немного короче и понятнее

// Следует только заметить, что оператор else означает любой

// другой случай, те он будет выполнен также если i == j.

if(i>j){

// этот блок не выполнится никогда,

// тк 1>5 ложное высказывание (выражение)

printf("1>5 о_О\n");

}

else{

// выполняется этот блок, как альтернатива первому

// тк выражение 1<5 истинно

printf("else 1<5 Ok!\n");

}

system("PAUSE");

}

Третий вариант немного сложнее чем два предыдущих. Здесь условие может принимать более двух значений таких как истина/ложь, в зависимости от этого может выполниться один из нескольких блоков в данном случае a, b или с или блок по-умолчанию default. Однобайтовая переменная символ может принимать значения от 0 до 255, соответственно может быть использованно столько же блоков case. Пример:

switch(<переменная-символ>){

case 'a':

// случай а

break;

case 'b':

// случай b

break;

case 'c':

// случай с

break;

default:

// случай по-умолчанию

}

Блок по-умолчанию default может отсутствовать если в нем нет необходимости, его содержимое выполняется только тогда, когда не найдено других соответствий значению переменной-символу в операторе switch. Оператор break прерывает дальнейшую проверку на соответствие другим значениям case сразу после первого совпадения, к примеру для того, чтобы не выполнялся блок default если значение уже было найдено.

Напоследок хочется заметить, что операторы if-else и switch-case выглядят похожим образом в самых разных языках, например в javascript используется синтаксическая конструкция полностью соответствующая описанным конструкциям для языка Си.

Продолжение следует...


С уважением, Владимир Чистов - ведущий рассылки.
До встречи в следующем выпуске!

Если у вас возникли какие-нибудь вопросы, обязательно пишите мне или заходите на сайт рассылки.


В избранное