Разработка линейных программ на языке 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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!