![]() |
|
Программирование >> Обработка исключительных ситуаций
Операторы ветвления Операторы ветвления if и switch применяются для тою чтобы в зависимости от конкретных значений исходных данных обеспечить выполнение разных последовательностей операторов. Оператор if обеспечивает передачу управления на одну из двух ветвей вычислений, а оператор switch - на одну из произвольного чиста ветвей. Условный оператор if Условный оператор if используется для разветвления процесса вычислений па два направления. Структурная схема оператора приведена на рис. 4.1. ![]() Рис. 4.1. Структурная схема условного оператора Формат оператора: if ( логическоевыражение ) оператор 1; [ else оператора; ] false ![]() Выражения, блоки и пустые операторы Любое выражение, завершающееся точкой с занятой, рассматривается как оператор, выполнение которого заключается в вычислении выражения. Частным случаем выражения является пустой оператор : (он используется, когда по синтаксису оператор требуется, а по смыслу - нет). Примеры: 1-й; выполняется операция инкремента а * b + с; выполняется умножение с присваиванием fu!)( i. k ): выполняется вызов функции while( true ): цикл из пустого оператора (бесконечный) Блок, или составной оператор, - это последовательность описаний и операторов, заключенная в фигурные скобки. Блок воспринимается компилятором как один оператор и может использоваться всюду, где синтаксис требует одного оператора, а алгоритм - нескольких. Блок может содержать один оператор или быть пустым. начала вычисляется логическое выражение. Если оно имеет значение trjt, вы-олняется первый оператор, иначе - второй. После этого управление передается а оператор, следующий за условным. Ветвь else может отсутствовать. 1РИМЕЧАНИЕ- Операторы, входящие в условный, не должны иметь метку и не могут быть описаниями. 7.ти в какой-либо ветви требуется выполнить несколько операторов, их необхо-лмо заключить в блок, иначе компилятор не сможет понять, где заканчивается етвление. Блок может содержать любые операторы, в том числе описания и другие словные операторы (но не может состоять из одних описаний). Необходимо учи ывать, что переменная, описанная в блоке, вне блока не существует. Трпмеры условных операторов: а < 0 )b = 1: ,7 1 а<b&&(а>d11а==0)) b+ + : else { b *= а: а = 0: } 2 а<b)lffа<с)m = a: else т = с: If ( b <с ) m = b: else m = с: /. 3 - b >a ) max = b: else max - a: 4 } примере 1 отсутствует ветвь else. Подобная конструкция реализует пропуск ператора, поскольку присваивание либо выполняется, либо пропускается в за-иснмости от выполнения условия. Если требуется проверить несколько условий, их объединяют знаками логиче-ких условных операций. Например, выражение в примере 2 будет истинно в том лучае, если выполнится одновременно условие а <b и одно из условий в скобах. Если опустить внутренние скобки, будет выполнено сначала логическое И, . потом - ИЛИ. Оператор в примере 3 вычисляет наибольшее значение из трех неременных. Обратите внимание на то, что компилятор относит часть else к ближайшему ключе- iONiy слову 1 f . \онструкции, подобные оператору в примере 4 (вычисляется наибольшее значение из двух переменных), проще и нагляднее записывать в виде условней) опера щи, в данном случае следующей: ;. = b>a?b:a; ПРИМЕЧАНИЕ- Распространенная ошибка начинающих - неверная запись проверки на принадлежность диапазону. Например, чтобы проверить условие 0 < х < 1, нельзя записать его в условном операторе непосредственно, так как каждая операция отношении должна иметь два операнда. Правильный способ записи: if( 0 < X && х < 1)... 3 качестве примера подсчитаем количество очков после выстрела по мишени, тзображенной на рис. 4.2. Глава 4. Операторы I 2очка \ 0/1 2 У ! / Рис. 4.2. Мишень Как уже говорилось, тип переменных выбирается, исходя из их назначения. Координаты выстрела нельзя представить целыми величинами, так как это приведет к потере точности результата, а счетчик очков не имеет смысла описывать как вещественный. Программа приведена в листинге 4.1. Листинг4.1 . Выстрел по мишени using System; namespace ConsoleApplicationl { class Classl { static void MainO Console.WriteLineC Введите координату x ); string buf = Console.ReadLineO; double x = Convert.ToDoubleC buf ); Console.WriteLineC Введите координату у ); buf = Console.ReadLineO: double у = double.ParseC buf ); int kol = 0: if (x*x + y*y<l)kol=2; else if ( x * x + у * у < 4 ) kol = 1; Console.WriteLineC Результат = {0} очков , kol ); Даже такую простую программу можно еще упростить с помощью промежуточной переменной и записи условия в виде двух последовательных, а не вложенных, операторов if: double ![]() очко ![]()
|
© 2006 - 2025 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |