Разработка линейных программ на языке C#.
Реализация ветвящихся алгоритмов на языке C#.
Реализация циклических алгоритмов на языке C#.
Обработка одномерного массива на языке C#. Примеры.
Обработка матрицы на языке C#. Примеры.
Массивы хороший инструмент группировки данных. Для работы с С#
необходимо понимать как они работают. Существуют два пути группировки
связанных данных структуры и массивы. Структуры группируют данные
различных типов, массивы это последовательность данных одного типа.
Массивы разрешают произвольный доступ к любому элементу, причём он
одинаково быстр.
Синтаксис массивов в С#
type[ ] name; // правильно
type name[ ]; // не правильно в C#
type[4] name; // также неправильно C#
Для объявления двумерных массивов, используются пустые индексы
через запятую.
int[,] grid;
Для доступа к элементам массива используются индексы в квадратных
скобках. Нумерация начинается с нуля. Если размерность массива больше
одного, то индексы перечисляются через запятую.
long[] row; int[,] grid;
… …
row[3]; grid[1,2];
В С# индексы массива автоматически проверяются на удовлетворение
размерности, при выходе за интервал выдаётся исключение
IndexOutOfRangeException. Для проверки размерности можно использовать
свойство массива Length и метод GetLength.
36
Сравнение массивов с коллекциями. Коллекции гибче массивов, могут
хранить различные элементы, имеют переменную длину. Но в связи с этим
работа с коллекциями медленнее.
|
|
ArrayList flexible = new ArrayList( );
flexible.Add("one"); // Добавили строку...
flexible.Add(99); // Добавили int
Создание коллекции только для чтения
ArrayList flexible = new ArrayList( ); ...
ArrayList noWrite = ArrayList.ReadOnly(flexible);
noWrite[0] = 42; // Исключение при выполнении
Объявление массива не создает его, так как массив – это ссылочный тип.
При объявлении массива можно не знать его размерность. При создании это
необходимо. Память для массива выделяется последовательно.
long[] row = new long[4];
int[,] grid = new int[2,3];
Можно использовать список инициализации при создании массива.
Необходимо объявить все элементы, в качестве элементов можно использовать
выражения. Те же правила для многомерных массивов, необходимо определить
все строки и в каждой строке все элементы.
int[,] data = new int[2,3]{
{2,3,4},
{5,6,7} }
Размерность массива можно задавать как константами, так и
вычисляемыми значениями. Единственное ограничение при вычисляемой длине
нельзя использовать список инициализации.
string s = Console.ReadLine();
int size = int.Parse(s);
long[] row = new long[size];
При копировании переменной массива, не создается новый массив,
создается новая ссылка на тот же массив.
long [] row = new long[4];
long [] copy = row;
row[0]++; // изменит copy[0]
Рассмотрим некоторые свойства и методы класса System.Array.
|
|
• Свойство Rank - размерность массива.
• Свойство Length - общая длина массива, для многомерных
массивов количество всех ячеек.
System.Array – класс от которого неявно наследуют все массива в С#.
• Sort – сортировка массива, поддержка интерфейса IComparable
• Clear – очистка массива, все элементы устанавливаются в NULL.
• Clone – создаёт копию массива, копирует все элементы. Этот
метод не следит за значениями в элементах. Если там ссылки на
объекты,то он просто скопируются, новых объектов создано не
будет.
• GetLength – по номеру размерности получаем длину массива в
этой размерности.
• IndexOf – ищет значение в массиве, если нашел возвращает
индекс первого вхождения, иначе -1.
При возвращении массива из метода его размеры не задаются, скобки
остаются пустыми. Если задать, получим ошибку при компиляции. Также с
многомерными массивами.
static int[,] CreateArray( ) {
string s1 = System.Console.ReadLine( );
int rows = int.Parse(s1);
string s2 = System.Console.ReadLine( );
int cols = int.Parse(s2);
return new int[rows,cols];
}
При передаче массива в метод в качестве параметра, новый массив не
создается, передается ссылка на тот же массив. Все действия с массивом в
методе сохранятся для вызывающего метода. Если хотите избежать этого,
|
|
необходимо передавать копию массива при помощи метода Array.Copy
При вызове приложения из командной строки можно использовать
Для обработки массивов можно использовать foreach. Тогда не нужен
счетчик, проверка длины массива и обращение к элементу.
Две следующие контсрукции эквивалентны
for (int i = 0; i < args.Length; i++) {
System.Console.WriteLine(args[i]);
}
foreach (string arg in args) {
Дата добавления: 2018-05-12; просмотров: 771; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!