Страница 9 из 188
С помощью условного оператора if в C# можно организовать выборочное выполнение части программы. Оператор if действует в C# практически так же, как и оператор IF в любом другом языке программирования. В частности, с точки зрения синтаксиса он тождествен операторам if в С, C++ и Java. Ниже приведена простейшая формаэтого оператора.if(условие) оператор;
Здесь условие представляет собой булево, т.е. логическое, выражение, принимающее одно из двух значений: "истина" или "ложь". Если условие истинно, то операторвыполняется. А если условие ложно, то выполнение программы происходит, минуяоператор. Ниже приведен пример применения условного оператора.if(10 < 11) Console.WriteLine("10 меньше 11");
В данном примере условное выражение принимает истинное значение, поскольку10 меньше 11, и поэтому метод WriteLine() выполняется. А теперь рассмотрим другой пример.if(10 < 9) Console.WriteLine("не подлежит выводу");
В данном примере 10 не меньше 9. Следовательно, вызов метода WriteLine() непроизойдет.
В C# определен полный набор операторов отношения, которые можно использоватьв условных выражениях. Ниже перечислены все эти операторы и их обозначения.
Операция Значение< Меньше<= Меньше или равно
Больше= Больше или равно== Равно!= Не равно
Далее следует пример еще одной программы, демонстрирующей применениеусловного оператора if.// Продемонстрировать применение условного оператора if.using System;class IfDemo { static void Main() { int a, b, c; a = 2; b = 3; if(a < b) Console.WriteLine("а меньше b"); // He подлежит выводу. if(a == b) Console.WriteLine("этого никто не увидит"); Console.WriteLine(); c = a - b; // с содержит -1 Console.WriteLine("с содержит -1"); if(с >= 0) Console.WriteLine("значение с неотрицательно"); if(с < 0) Console.WriteLine("значение с отрицательно"); Console.WriteLine(); с = b - а; // теперь с содержит 1 Console.WriteLine("с содержит 1"); if(с >= 0) Console.WriteLine("значение с неотрицательно"); if(с < 0) Console.WriteLine("значение с отрицательно "); }}
Вот к какому результату приводит выполнение данной программы.а меньше bс содержит -1значение с отрицательнос содержит 1значение с неотрицательно
Обратите внимание на еще одну особенность этой программы. В строкеint а, b, с;
три переменные, а, b и с, объявляются списком, разделяемым запятыми. Как упоминалось выше, если требуется объявить две или более переменные одного и того жетипа, это можно сделать в одном операторе, разделив их имена запятыми.Оператор цикла
Для повторного выполнения последовательности операций в программе можноорганизовать цикл. Язык C# отличается большим разнообразием циклических конструкций. Здесь будет рассмотрен оператор цикла for. Как и у оператора if, у оператора for в C# имеются аналоги в С, C++ и Java. Ниже приведена простейшая формаэтого оператора.for(инициализация; условие; итерация) оператор;
В самой общей форме в части инициализация данного оператора задается начальное значение переменной управления циклом. Часть условие представляет собойбулево выражение, проверяющее значение переменной управления циклом. Если результат проверки истинен, то цикл продолжается. Если же он ложен, то цикл завершается. В части итерация определяется порядок изменения переменной управленияциклом на каждом шаге цикла, когда он повторяется. Ниже приведен пример краткойпрограммы, демонстрирующей применение оператора цикла for.// Продемонстрировать применение оператора цикла for.using System;class ForDemo { static void Main() { int count; for(count = 0; count < 5; count = count+1) Console.WriteLine("Это подсчет: " + count); Console.WriteLine("Готово!"); }}
Вот как выглядит результат выполнения данной программы.Это подсчет: 0Это подсчет: 1Это подсчет: 2Это подсчет: 3Это подсчет: 4Готово!
В данном примере count выполняет роль переменной управления циклом. В инициализирующей части оператора цикла for задается нулевое значение этой переменной. В начале каждого шага цикла, включая и первый, проверяется условие count < 5.Если эта проверка дает истинный результат, то выполняется оператор, содержащийметод WriteLine(). Далее выполняется итерационная часть оператора цикла for,где значение переменной count увеличивается на 1. Этот процесс повторяется до техпор, пока значение переменной count не достигнет величины 5. В этот момент проверка упомянутого выше условия дает ложный результат, что приводит к завершениюцикла. Выполнение программы продолжается с оператора, следующего после цикла.
Любопытно, что в программах, профессионально написанных на С#, вы вряд ли увидите итерационную часть оператора цикла в том виде, в каком она представлена в приведенном выше примере программы, т.е. вы редко встретите следующую строку.count = count + 1;
Дело в том, что в C# имеется специальный оператор инкремента, выполняющийприращение на 1 значение переменной, или так называемого операнда. Этот операторобозначается двумя знаками +(++). Используя оператор инкремента, можно переписать приведенную выше строку следующим образом.count++;
Таким образом, оператор цикла for из приведенного выше примера программыобычно записывается в следующем виде.for(count = 0; count < 5; count++)
Опробуйте этот более краткий способ записи итерационной части цикла. Вы самиможете убедиться, что данный цикл выполняется так же, как и прежде.
В C# имеется также оператор декремента, обозначаемый двумя дефисами (--). Этотоператор уменьшает значение операнда на 1.Использование кодовых блоков
Еще одним важным элементом C# является кодовый блок, который представляетсобой группу операторов. Для его организации достаточно расположить операторымежду открывающей и закрывающей фигурными скобками. Как только кодовый блокбудет создан, он станет логическим элементом, который можно использовать в любомместе программы, где применяется одиночный оператор. В частности, кодовый блокможет служить адресатом операторов if и for. Рассмотрим следующий оператор if.if(w < h) { v = w * h; w = 0;}
Если в данном примере кода значение переменной w меньше значения переменной h, то оба оператора выполняются в кодовом блоке. Они образуют внутри кодовогоблока единый логический элемент, причем один не может выполняться без другого.Таким образом, если требуется логически связать два (или более) оператора, то дляэтой цели следует создать кодовый блок. С помощью кодовых блоков можно болееэффективно и ясно реализовать многие алгоритмы.
Ниже приведен пример программы, в которой кодовый блок служит для того, чтобы исключить деление на нуль.// Продемонстрировать применение кодового блока.using System;class BlockDemo { static void Main() { int i, j, d; i = 5 ; j = 10; // Адресатом этого оператора if служит кодовый блок. if(i != 0) { Console.WriteLine("i не равно нулю"); d = j / i; Console.WriteLine("j / i равно " + d); } }}
Вот к какому результату приводит выполнение данной программы.i не равно нулюj / i равно 2
В данном примере адресатом оператора if служит кодовый блок, а не единственный оператор. Если условие, управляющее оператором if, оказывается истинным, товыполняются три оператора в кодовом блоке. Попробуйте задать нулевое значениепеременной i, чтобы посмотреть, что из этого получится.
Рассмотрим еще один пример, где кодовый блок служит для вычисления суммы ипроизведения чисел от 1 до 10.// Вычислить сумму и произведение чисел от 1 до 10.using System;class ProdSum { static void Main() { int prod; int sum; int i; sum = 0; prod = 1; for(i=1; i <= 10; i++) { sum = sum + i; prod = prod * i; } Console.WriteLine("Сумма равна " + sum); Console.WriteLine("Произведение равно " + prod); }}
Ниже приведен результат выполнения данной программы.Сумма равна 55Произведение равно 3628800
В данном примере внутри кодового блока организуется цикл для вычисления суммы и произведения. В отсутствие такого блока для достижения того же самого результата пришлось бы организовать два отдельных цикла.