Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_Informatika_Net_16.doc
Скачиваний:
29
Добавлен:
19.04.2015
Размер:
442.88 Кб
Скачать
  1. Операторы цикла. Понятие составного оператора.

Циклы While

Цикл while (выражение) является универсальным видом цикла, включаемым во все языки программирования. Тело цикла выполняется до тех пор, пока остается истинным выражение while. В языке C# у этого вида цикла две модификации - с проверкой условия в начале и в конце цикла.

Первая модификация имеет следующий синтаксис:

while(выражение) оператор Эта модификация соответствует стратегии: "сначала проверь, а потом делай". В результате проверки может оказаться, что и делать ничего не нужно. Тело такого цикла может ни разу не выполняться. Конечно же, возможно и зацикливание. В нормальной ситуации каждое выполнение тела цикла - это очередной шаг к завершению цикла.

Цикл, проверяющий условие завершения в конце, соответствует стратегии: "сначала делай, а потом проверь". Тело такого цикла выполняется, по меньшей мере, один раз. Вот синтаксис этой модификации:

do

оператор

while(выражение);

Пример:

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

namespace _1

{ class Program {

static void Main(string[] args)

{ Console.WriteLine("Введите число");

int i = Convert.ToInt16(Console.ReadLine());

int j = 0, s;

Console.WriteLine("Цикл с постусловием");

do

{

s = i * j;

Console.WriteLine(i + "*" + j + "=" + s);

j++;

}

while (j < 10);

Console.WriteLine("Цикл с предусловием");

j = 0; while (j < 10)

{

s = i * j;

Console.WriteLine(i + "*" + j + "=" + s);

j++;

}

Console.ReadKey();

}

}

}

Цикл с параметром FOR

Цикл с параметром имеет следующую структуру:

for ( <инициализация>; <выражение>; <модификация>) <оператор>;

Инициализация используется для объявления и/или присвоения начальных значений величинам, используемым в цикле в качестве параметров (счетчиков). В этой части можно записать несколько операторов, разделенных запятой. Областью действия переменных, объявленных в части инициализации цикла, является цикл и вложенные блоки. Инициализация выполняется один раз в начале исполнения цикла. Выражение определяет условие выполнения цикла: если его результат истинен, цикл выполняется. Истинность выражения проверяется перед каждым выполнением тела цикла, таким образом, цикл с параметром реализован как цикл с предусловием. Модификация выполняется после каждой итерации цикла и служит обычно для изменения параметров цикла. В части модификация можно записать несколько операторов через запятую. Оператор (простой или составной) представляет собой тело цикла. Любая из частей оператора for (инициализация, выражение, модификация, оператор) может отсутствовать, но точку с запятой, определяющую позицию пропускаемой части, надо оставить.

Пример

static void Main()

{

Console.Write("N= ");

int n=int.Parse(Console.ReadLine());

for (int i=1; i<=n;) //блок модификации пустой

Console.Write(" " + i++);

}

С помощью фигурных скобок несколько операторов языка (возможно, перемежаемых объявлениями) можно объединить в единую синтаксическую конструкцию, называемую блоком или составным оператором:

{  оператор_1  …  оператор_N  }

  1. Массивы, синтаксис описания и использования в C#. Двумерные и многомерные массивы.

Можно объявить массив из пяти целых чисел, как показано в следующем примере:

int[] array = new int[5];

Массив содержит элементы с array[0] по array[4]. Оператор newслужит для создания массива и инициализации элементов массива со значениями по умолчанию. В данном примере элементы массива инициализируются значением 0.

Массив, в котором хранятся строковые элементы, можно объявить таким же образом. Пример.

string[] stringArray = new string[6];

Инициализация массива

Массив можно инициализировать при объявлении. В этом случае спецификация ранга не нужна, поскольку она уже предоставлена по числу элементов в списке инициализации. Пример.

int[] array1 = new int[] { 1, 3, 5, 7, 9 };

Строковый массив можно инициализировать таким же образом. Ниже приведено объявление строкового массива, в котором каждый элемент инициализируется названием дня:

string[] weekDays = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };

При инициализации массива при объявлении можно использовать следующие сочетания клавиш:

int[] array2 = { 1, 3, 5, 7, 9 };

string[] weekDays2 = { "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" };

Можно объявить переменную массива без инициализации, но при присвоении массива этой переменной нужно использовать оператор new. Пример.

int[] array3;

array3 = new int[] { 1, 3, 5, 7, 9 }; // OK

//array3 = {1, 3, 5, 7, 9}; // Error

Многомерные массивы

Помимо простых одномерных массивов C# поддерживает также многомерные массивы, которые в свою очередь делятся на две категории. К первой категории относятся массивы, количество элементов каждой строки которых состоит из одинакового количества элементов. Таким образом, массив можно рассматривать как прямоугольник, а сами такие массивы называют "прямоугольными". Ко второй категории относятся массивы, количество элементов в строках у которых не одинаково. Такие массивы образуют прямоугольник, у которого одна сторона представляет ломаную линию, поэтому такие массивы называют "ломаными" или “ступенчатыми”. Объявление и заполнение прямоугольного массива производится стандартным способом (для двумерного массива организуется два цикла, для 3-мерного – три и т.д.):

Random rnd = new Random();

int[,] Matrix = new int[5, 4]; // двумерный массив

for (int i = 0; i < 5; i++)

for (int j = 0; j < 4; j++)

Matrix[i, j] = rnd.Next(201) – 100; //случайное целое от -100 до 100

При необходимости вывода значений элементов массива на экран также организуются вложенные циклы, позволяющие последовательно перебирать все элементы массива:

for (int i = 0; i < 5; i++)

{

for (int j = 0; j < 4; j++)

Console.Write(Matrix[i, j].ToString() + " ");

Console.WriteLine();

}

Результат работы программы показан ниже.

60 50 48 98

45 25 12 36

15 75 85 65

22 40 89 53

12 35 55 69

Ступенчатые массивы объявляются так:

int[][] а = new int[3][]; // объявление массива из трех строк

(столбцы пока не определены)

а[0] = new int[5]; // в 0-й строке будет 5 элементов

а[1] = new int[3]; // в 1-й строке будет 3 элемента

а[2] = new int[4]; // в 2-й строке будет 4 элемента

К любому элементу ступенчатого массива обращаются так:

а[0][1] = ...

Особенностью ступенчатых массивов (кроме разного количества элементов в пределах одного измерения) является то, что можно производить их сечение, т.е. отбрасывая попарно справа квадратные скобки, можно получить массив меньшей размерности, например: Имеем вышеописанный ступенчатый массив из 3 строк и 5,3,4 элементов соответственно в строках. Доступ к элементу такого массива: y = а[1][2]; // переменная y типа int Сечение такого массива может быть таким: y=а[2]; // переменная y типа массив Таким образом, при сечении двумерного ступенчатого массива мы получили одномерный массив, состоящий только из элементов 2-й строки. Из-за этой особенности ступенчатый массив иногда называют массивом массивов.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]