Исходный код.Проект SimpleParams размещен в подкаталоге, соответствующем главе 3.
Все языки программирования предлагают конструкции обеспечивающие возможность повторения блоков программного кода, пока не выполнено условие завершения повторений. Если у вас есть опыт программирования, то операторы цикла в C# будут для вас понятными и не должны требовать пространных объяснений.
В C# обеспечиваются следующие четыре итерационные конструкции:
• цикл for;
• цикл foreach/in;
• цикл while;
• цикл do / while.
Давайте рассмотрим все указанные конструкции по очереди.
Когда требуется повторить блок программного кода определенное число раз, оператор for подходит для этого лучше всего. Вы можете указать, сколько раз должен повториться блок программного кода, а также условие окончания цикла. Без лишних объяснений, вот вам соответствующий образец синтаксиса.
// База для цикла.
static void Main(string[] args) {
// Переменная 'i' доступна только в контексте этого цикла for.
for(int i =0; i ‹10; i++) {
Console.WriteLine("Значение переменной: {0} ", i);
}
// Здесь переменная 'i' недоступна.
}
Все ваши привычные приемы использования циклов C, C++ и Java применимы и при построении операторов for в C#. Вы можете создавать сложные условия окончания цикла, строить бесконечные циклы, а также использовать ключевые слова goto, continue и break. Я думаю, что эта итерационная конструкция будет вам понятна. Если же вам требуются дальнейшие объяснения по поводу ключевого слова fоr в C#, используйте документацию .NET Framework 2.0 SDK.
Ключевое слово C# foreach позволяет повторить определенные действия для всех элементов массива без необходимости выяснения размеров массива. Вот два примера использования foreach, один для массива строк, а другой – для массива целых, чисел.
// Прохождение массива с помощью foreach.
static void Main(string[] args) {
string[] books = {"Сложные алгоритмы", "Классическая технология COM", "Язык C# и платформа .NET"};
foreach( strings in books) Console.WriteLine(s);
int[] myInts = {10, 20 , 30, 40};
foreach( inti in myInts) Console . Writeline(i);
}
В дополнение к случаю простых массивов, foreach можно использовать и для просмотра системных и пользовательских коллекций. Обсуждение соответствующих подробностей предполагается в главе 7, поскольку этот вариант применения ключевого слова foreach предполагает понимание интерфейсного программирования и роли интерфейсов IEnumerator и IEnumerable.
Конструкции while и do/while
Цикл while оказывается полезным тогда, когда блок операторов должен выполняться до тех пор, пока не будет достигнуто заданное условие. Конечно, при этом требуется, чтобы в области видимости цикла while было определено условие окончания цикла, иначе вы получите бесконечный цикл. В следующем примере сообщение "в цикле while" будет печататься до тех пор, пока пользователь не введет значение "да" в командной строке.
static void Main(string[] args) {
string userIsDone = "нет";
// Проверка на соответствие строке в нижнем регистре.
while(userIsDone.ToLower() != "да") {
Console.Write("Вы удовлетворены? [да] [нет]: ");
userIsDone = Console.ReadLine();
Console.WriteLine{"В цикле while");
}
}
Цикл do/while подобен циклу while. Как и цикл while, цикл do/while используется для выполнения последовательности действий неопределенное число раз. Разница в том, что цикл do/while гарантирует выполнение соответствующего блока программного кода как минимум один раз (простой цикл while может не выполниться ни разу, если условие его окончания окажется неверным с самого начала).
static void Main(string[] args) {
string userlsDone = "";
do{
Console.WriteLine("В цикле do/while");
Console.Write("Вы удовлетворены? [да] [нет]: ");
userIsDone = Console.ReadLine();
} while(userIsDone.ToLower() != "да"); // Обратите внимание на точку с запятой!
}
Конструкции выбора решений и операции сравнения
В C# определяются две простые конструкции, позволяющие изменить поток выполнения программы по набору условий:
• оператор if/else;
• оператор switch.
В отличие от C и C++, оператор if/else в C# может работать только с булевыми выражениями, а не с произвольными значениями -1, 0. Поэтому в операторах if/else обычно используются операции C#, показанные в табл. 3.6. чтобы получить буквальные булевы значения.
Читать дальше