Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Otvety_Informatika_Net_16.doc
Скачиваний:
34
Добавлен:
19.04.2015
Размер:
443 Кб
Скачать
☆
  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-й строки. Из-за этой особенности ступенчатый массив иногда называют массивом массивов.

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