Foreach (type identifier in expression) statement
type – тип идентификатора.
identifier– переменная, в которую считывается элемент массива; переменная только для чтения, изменению не подлежит.
expression – массив.
statement– выполняемые действия.
Применим эту стратегию и построим еще одну версию процедуры печати. Эта версия будет самой короткой и самой универсальной, поскольку подходит для печати массива, независимо от его размерности и типа элементов:
public void Print(string name, Array A)
{
Console.WriteLine(name);
foreach (object item in A )
Console.Write(" "+item);
Console.WriteLine();
}
Многомерный массив печатается как одномерный без разделения элементов на строки.
Методы класса Array позволяют решать самые разнообразные задачи. Некоторые из них представлены в приложении 5. Все методы перегружены и имеют ряд модификаций. Большинство из этих методов применимо только к одномерным массивам.
Класс Random
Бывают ситуации, когда требуется, чтобы результат работы программы был случайным в определенных пределах. Для реализации такой возможности во многих языках программирования присутствуют встроенные функции, код которых выдает случайные числа. На самом деле числа не совсем случайные, а псевдослучайные. Дело в том, что искусственно реализовать случайность невозможно. Обычно берется некоторый коэффициент, и с его помощью вычисляется каждое последующее «случайное» число.
Генератор псевдослучайных чисел – алгоритм, порождающий последовательность чисел, элементы которой почти независимы друг от друга и подчиняются заданному распределению (обычно равномерному).
Класс Random содержит необходимые для этого методы. Для того, чтобы вызывать методы класса, нужно вначале создавать экземпляр (объект, переменную) класса. Этим Random отличается от класса Math, у которого все поля и методы - статические, что позволяет обойтись без создания экземпляров класса Math. Таким образом, методы класса Random не являются статическими.
Рассмотрим методы класса Random, необходимые для генерирования последовательностей случайных чисел.
Начнем рассмотрение с конструктора класса. Объявление экземпляра класса выглядит следующим образом:
Random r = new Random();
где Random() – конструктор класса Random (определение и назначение конструктора будет вводиться далее в курсе). Он перегружен и имеет две реализации.
Одна из них позволяет генерировать неповторяющиеся при каждом запуске серии случайных чисел. Начальный элемент такой серии строится на основе текущей даты и времени, что гарантирует уникальность серии
Другой конструктор с параметром - public Random (int) обеспечивает возможность генерирования повторяющейся серии случайных чисел. Параметр конструктора используется для построения начального элемента серии, поэтому при задании одного и того же значения параметра серия будет повторяться.
Перегруженный метод public int Next()при каждом вызове возвращает положительное целое, равномерно распределенное в некотором диапазоне. Диапазон задается параметрами метода. Три реализации метода отличаются набором параметров:
public int Next ()– метод без параметров выдает целые положительные числа во всем положительном диапазоне типа int;
public int Next (int max) – выдает целые положительные числа в диапазоне [0,max);
public int Next (int min, int max)– выдает целые числа со знаком в диапазоне [min,max).
public double NextDouble() – при каждом вызове этого метода выдается новое случайное число в интервале [0,1).
Приведем пример работы со случайными числами:
Random r = new Random();
int[] mas = new int[4];
for (int i = 0; i < 4; i++)
{
mas[i] = r.Next(10);
Console.WriteLine(mas[i]);
}
На самостоятельное изучение Вам выносится генерирование уникальных идентификационных номеров.
Контрольные вопросы:
1.Что такое Генератор псевдослучайных чисел?
2.Методы класса Random статические или нет? Почему?
3.В каких случаях целесообразно использовать ступенчатые массивы?
4.Когда целесообразно использовать оператор цикла foreach?
5.Чему равно значение свойства массива Length (для одномерных, двумерных и ступенчатых массивов)?
6.Какое значение возвращает функция GetUpperBound(i) в зависимости от значения i?
Дата добавления: 2015-10-26; просмотров: 1081;