Назначение. Netframework
Скачать 107.32 Kb.
|
Цикл whileПодобно for, while также является циклом с предварительной проверкой. Синтаксис его аналогичен, но циклы while включают только одно выражение: while(условие) оператор (операторы); где оператор — это единственный оператор или же блок операторов, а условие означает конкретное условие управления циклом и может быть любым логическим выражением. В этом цикле оператор выполняется до тех пор, пока условие истинно. Как только условие становится ложным, управление программой передается строке кода, следующей непосредственно после цикла. Как и в цикле for, в цикле while проверяется условное выражение, указываемое в самом начале цикла. Это означает, что код в теле цикла может вообще не выполняться, а также избавляет от необходимости выполнять отдельную проверку перед самим циклом. Пример: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { // Пример возведения числа в несколько степеней byte l = 2, i = 0; int result = 1; while (i < 10) { i++; result *= l; Console.WriteLine("{0} в степени {1} равно {2}",l,i,result); } Console.ReadLine(); } } } Цикл do. . . whileЦикл do...while в C# — это версия while с постпроверкой условия. Это значит, что условие цикла проверяется после выполнения тела цикла. Следовательно, циклы do...while удобны в тех ситуациях, когда блок операторов должен быть выполнен как минимум однажды. Ниже приведена общая форма оператора цикла do-while: do { операторы; } while (условие); При наличии лишь одного оператора фигурные скобки в данной форме записи необязательны. Тем не менее они зачастую используются для того, чтобы сделать конструкцию do-while более удобочитаемой и не путать ее с конструкцией цикла while. Цикл do-while выполняется до тех пор, пока условное выражение истинно. В качестве примера использования цикла do-while можно привести следующую программу, расчитывающую факториал числа: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { try { // Вычисляем факториал числа int i, result = 1, num = 1; Console.WriteLine("Введите число:"); i = int.Parse(Console.ReadLine()); Console.Write("\n\nФакториал {0} = ", i); do { result *= num; num++; } while (num <= i); Console.Write(result); } catch (FormatException ex) { Console.WriteLine("Вы ввели не число. {0}",ex.Message); } finally { Console.ReadLine(); } } } } Цикл foreachЦикл foreach служит для циклического обращения к элементам коллекции, представляющей собой группу объектов. В C# определено несколько видов коллекций, каждая из которых является массивом. Ниже приведена общая форма оператора цикла foreach: foreach (тип имя_переменной_цикла in коллекция) оператор; Здесь тип имя_переменной_цикла обозначает тип и имя переменной управления циклом, которая получает значение следующего элемента коллекции на каждом шаге выполнения цикла foreach. А коллекция обозначает циклически опрашиваемую коллекцию, которая здесь и далее представляет собой массив. Следовательно, тип переменной цикла должен соответствовать типу элемента массива. Кроме того, тип может обозначаться ключевым словом var. В этом случае компилятор определяет тип переменной цикла, исходя из типа элемента массива. Это может оказаться полезным для работы с определенного рода запросами. Но, как правило, тип указывается явным образом. Оператор цикла foreach действует следующим образом. Когда цикл начинается, первый элемент массива выбирается и присваивается переменной цикла. На каждом последующем шаге итерации выбирается следующий элемент массива, который сохраняется в переменной цикла. Цикл завершается, когда все элементы массива окажутся выбранными. Цикл foreach позволяет проходить по каждому элементу коллекции (объект, представляющий список других объектов). Формально для того, чтобы нечто можно было рассматривать как коллекцию, это нечто должно поддерживать интерфейс IEnumerable. Примерами коллекций могут служить массивы C#, классы коллекций из пространства имен System.Collection, а также пользовательские классы коллекций. Пример использования цикла foreach: using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { // Объявляем два массива int[] myArr = new int[5]; int[,] myTwoArr = new int[5, 6]; int sum = 0; Random ran = new Random(); // Инициализируем массивы for (int i = 1; i <= 5; i++) { myArr[i-1] = ran.Next(1, 20); for (int j = 1; j <= 6; j++) myTwoArr[i - 1, j - 1] = ran.Next(1, 30); } // Вычисляем квадрат каждого элемента одномерного массива foreach (int fVar in myArr) Console.WriteLine("{0} в квадрате равно {1}",fVar,fVar*fVar); Console.WriteLine(); // Вычислим сумму элементов многомерного массива foreach (int fTwoVar in myTwoArr) sum += fTwoVar; Console.WriteLine("Сумма элементов многомерного массива: {0}",sum); Console.ReadLine(); } } } 10 |