Мегаобучалка Главная | О нас | Обратная связь


Операторы передачи управления goto, continue, break , return .



2019-08-13 221 Обсуждений (0)
Операторы передачи управления goto, continue, break , return . 0.00 из 5.00 0 оценок




Формально к операторам передачи управления относятся:

– оператор безусловного перехода goto;

– оператор перехода к следующему шагу (итерации) цикла continue;

– выход из цикла, либо оператора switch – break;

– оператор возврата из функции return.

Ветвящийся алгоритм. Условный оператор if , условная операция «? :».

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

6.2. Условные операторы

Условный оператор if используется для разветвления процесса вы-полнения кода программы на два направления.

В языке Си имеется две разновидности условного оператора: про-стой и полный. Синтаксис простого оператора:

        if (выражение) оператор;

выражение – логическое или арифметическое выражение, вычисляемое перед проверкой, и, если выражение истинно (не равно нулю), то выполня-ется оператор, иначе он игнорируется; оператор – простой или состав-ной (блок) оператор языка Си. Если в случае истинности выражения необ-ходимо выполнить несколько операторов (более одного), их необходимо заключить в фигурные скобки.

Примеры записи условного оператора if:

if (x > 0) x = 0;

if (i != 1) j++, s = 1; – используем операцию «запятая»;

if (i != 1) {

j++; s = 1; – последовательность операций (блок);

if (getch() != 27) k = 0; – если нажата любая клавиша кроме “Esc”.

if (!x) exit (1); или if (x == 0) exit(1);

if (i>0 && i<n) k++; – если нужно проверить несколько условий, то их объединяют знаками логических операций и заключают в круглые скобки (для улучшения читаемости программы можно ставить круглые скобки и там где они необязательны);

if (a++) b++;      – необязательно в качестве выражения исполь-зовать логические выражения.

Синтаксис полного оператора условного выполнения:

        if (выражение) оператор 1 ;

                       else оператор 2 ;

Если выражение не равно нулю (истина), то выполняется оператор 1, иначе – оператор 2. Операторы 1 и 2 могут быть простыми или состав-ными (блоками).

Наличие символа «;» перед словом else в языке Си обязательно.

Структурная схема такого оператора приведена на рис. 6.2.

Примеры записи:

         if (x > 0) j = k+10;

                  else m = i+10;

         if ( x>0 && k!=0 ) {

j = x/k;

x += 10;

}

         else m = k*i + 10;

Операторы 1 и 2 могут быть любыми операторами, в том числе и условными. Тогда, если есть вложенная последовательность операторов if – else, то фраза else связывается с ближайшим к ней предыдущим if, не со-держащим ветвь else. Например:

         if (n > 0)

             if(a > b) z = a;

                  else z = b;

Здесь ветвь else связана со вторым if (a > b). Если же необходимо связать фразу else с внешним if, то используются операторные скобки:    

            if(n > 0) {

if(a > b) z = a;

}

else z = b;

В следующей цепочке операторов if – else – if выражения просматри-ваются последовательно:

         if (выражение 1) оператор 1;

             else

if (выражение 2) оператор 2;

                      else

if (выражение 3) оператор 3;

                               else оператор 4 ;

Если какое-то выражение оказывается истинным, то выполняется относя-щийся к нему оператор и этим вся цепочка заканчивается. Каждый опера-тор может быть либо отдельным оператором, либо группой операторов в фигурных скобках. Оператор 4 будет выполняться только тогда, когда ни одно из проверяемых условий не подходит. Иногда при этом не нужно предпринимать никаких явных действий, тогда последний else может быть опущен или его можно использовать для контроля, чтобы зафиксировать «невозможное» условие (своеобразная экономия на проверке условий).

Пример:

if (x < 0) printf("\n X отрицательное \n");

             else if(x==0) printf ("\n X равно нулю \n");

                            else printf("\n X положительное \n");

Замечание. Наиболее распространенной ошибкой при создании условных операторов является использование в выражении операции при-сваивания «=» вместо операции сравнения на равенство операндов «==» (два знака равно). Например, в следующем операторе синтаксической ошибки нет:

if (x = 5) a++;

но значение а будет увеличено на единицу независимо от значения пере-менной х, т.к. результатом операции присваивания х = 5 в круглых скоб-ках является значение 50 – истина. 

6.3. Условная операция «? :»

Условная операция – тернарная, т.к. в ней участвуют три операнда. Формат написания условной операции следующий:

          Выражение 1 ? выражение 2 : выражение 3;

если выражение 1 (условие) отлично от нуля (истинно), то результатом операции является значение выражения 2, в противном случае – значение выражения 3. Каждый раз вычисляется только одно из выражений 2 или 3.

На рис. 6.3 приведена схема вычисления результата, которая анало-гична схеме полного оператора if (см. рис. 6.2):

Условное вычисление применимо к арифметическим операндам и операндам-указателям.

Рассмотрим участок программы для нахождения максимального значения z из двух чисел a и b, используя оператор if и условную опера-цию.

1. Запишем оператор if :

         if (a > b) z = a;

         else z = b;

2. Используя условную операцию, получим

         z = (a > b) ? a : b;

Условную операцию можно использовать так же, как и любое другое выражение. Если выражения 2 и 3 имеют разные типы, то тип результата определяется по правилам преобразования. Например, если f имеет тип double, а n – int, то результатом операции

          (n > 0) ? f : n;

по правилам преобразования типов будет double, независимо от того, по-ложительно n или нет.

Использование условных выражений позволяет во многих случаях значительно упростить программу. Например:

int a, x;

...

x = (a < 0) ? –a : a;

printf("\n Значение %d %s нулевое !", x, (x ? "не" : " ") );



2019-08-13 221 Обсуждений (0)
Операторы передачи управления goto, continue, break , return . 0.00 из 5.00 0 оценок









Обсуждение в статье: Операторы передачи управления goto, continue, break , return .

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной...
Почему человек чувствует себя несчастным?: Для начала определим, что такое несчастье. Несчастьем мы будем считать психологическое состояние...
Организация как механизм и форма жизни коллектива: Организация не сможет достичь поставленных целей без соответствующей внутренней...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (221)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.006 сек.)