Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ТЕМА 6. ОСНОВИ РОБОТИ З МАСИВАМИ.docx
Скачиваний:
7
Добавлен:
22.11.2019
Размер:
83.72 Кб
Скачать

Тема 6. Основи роботи з масивами.

  1. Поняття масиву даних.

  2. Одновимірні масиви.

  3. Багатовимірні масиви.

  4. Масиви масивів (рвані/різані масиви).

  5. Цикл foreach та масиви.

1.Поняття масиву даних.

Масив задає спосіб організації даних. Масивом називають впорядковану сукупність елементів одного типу. Кожен елемент масиву має індекси, що визначають порядок елементів. Число індексів характеризує розмір масиву. Кожен індекс змінюється в деякому діапазоні [а,b]. У мові C#, як і в багатьох інших мовах, індекси задаються цілочисельним типом. Діапазон [а,b] називається граничною парою, а – нижньою межою, b – верхньою межею. Якщо межі задані константними виразами, то число елементів масиву відоме у момент його оголошення і йому може бути виділена пам'ять ще на етапі трансляції. Такі масиви називаються статичними. Якщо ж вирази, які задають межі, залежать від змінних, то такі масиви називаються динамічними, оскільки пам'ять їм може бути відведена лише динамічно в процесі виконання програми, коли стають відомими значення відповідних змінних. Масиву, як правило, виділяється безперервна область пам'яті.

У мові C++ всі масиви є статичними.

У мові C# знято істотне обмеження мови C++ на статичність масивів. Масиви в мові C# є справжніми динамічними масивами. Як наслідок цього масиви відносяться до посилальних типів, пам'ять їм відводиться динамічно в "купі".

У мові C++ "класичних" багатовимірних масивів немає. Тут введені одновимірні масиви і масиви масивів. Останні є загальнішою структурою даних і дозволяють задати не лише багатовимірний куб, але і порізану, ступінчасту структуру.

У мові C# збережені одновимірні масиви і масиви масивів. На додаток до них в мову додані багатовимірні масиви. Динамічні багатовимірні масиви мови C# є потужною, надійною, зрозумілою і зручною структурою даних, яку сміливо можна рекомендувати до вживання не лише професіоналам, але і новачкам, що програмують на C#. Після цього короткого огляду давайте перейдемо до більш систематичного вивчення деталей роботи з масивами в C#.

2. Одновимірні масиви.

ОГОЛОШЕННЯ ОДНОВИМІРНИХ МАСИВІВ

У спрощеному вигляді оголошення одновимірного масиву виглядає таким чином:

тип[] ім’я_змінної;

Увага, на відміну від мови C++ квадратні дужки приписані не до імені змінної, а до типу. Вони є невід'ємною частиною визначення класу, так що запис T[] слід розуміти як клас одновимірний масив з елементами типу T.

Що ж до меж зміни індексів, то ця характеристика до класу не відноситься, вона є характеристикою змінних - екземплярів, кожен з яких є одновимірним масивом зі своїм числом елементів, що задаються в оголошенні змінної.

int[] а, b, с;

Найчастіше при оголошенні масиву використовується ім'я з ініціалізацією. І знову-таки, як і в разі простих змінних, можуть бути два варіанти ініціалізації. У першому випадку ініціалізація є явною і задається константним масивом. Ось приклад:

double[] x= {5.5, 6.6, 7.7};

Слідуючи синтаксису, елементи константного масиву слід брати у фігурні дужки.

У другому випадку створення і ініціалізація масиву виконується в об'єктному стилі з викликом конструктора масиву. І це найбільш поширена практика оголошення масивів. Наведу приклад:

int[] d= new int[5];

Отже, якщо масив оголошується без ініціалізації, то створюється лише висяче посилання із значенням void. Якщо ініціалізація виконується конструктором, то в динамічній пам'яті створюється сам масив, елементи якого ініціалізувалися константами відповідного типу, і посилання зв'язується з цим масивом. Якщо масив ініціалізувався константним масивом, то в пам'яті створюється константний масив, з яким і зв'язується посилання.

ІНІЦІАЛІЗАЦІЯ МАСИВІВ

Ініціалізувати масиви, наприклад, можна наступними способами:

  1. Літералами відповідного типу (приклад 1).

  2. Випадковими числами (приклад 3).

  3. Ввести з клавіатури (приклад 4).

Заповнення масиву літералами може відбуватися наступним чином:

Приклад 1. Заповнення масиву літералами.

1: int[] nums = { 99, 10, 100, 18, 78, 23, 63, 9, 87, 49 };

2:  

3: int[] nums;

4: nums = new int[ ] { 99, 10, 100, 18, 78, 23, 63, 9, 87, 49 };

5:  

6: int[] nums = new int[10] { 99, 10, 100, 18, 78, 23, 63, 9, 87, 49 };

Приклад програми на C#, яка заповнює масив випадковими числами:

Приклад 2. Програма "Заповнення масиву випадковими числами".

1: static void Main(string[] args)

2: {

3: int[] array = new int[10];

4: Random rand = new Random();

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

6: {

7: array[i] = rand.Next(0, 100);

8: Console.Write(" {0}", array[i]);

9: }

10: }

Рис. 1. Результат виконання прикладу 2.

Ввести з клавіатури значення масиву можна наступним чином:

Приклад 3. Програма "Заповнення масиву значеннями, введеними з клавіатури".

1: static void Main(string[] args)

2: {

3: int[] array;

4: Console.Write("\n Введіть розмір масиву >\t");

5: int size = Convert.ToInt32(Console.ReadLine());

6: array = new int[size];

7:

8: for (int i = 0; i < array.Length; ++i)

9: {

10: Console.Write("Введіть {0}-й елемент:\t", i+1);

11: array[i] = Convert.ToInt32(Console.ReadLine());

12: }

13: }

Рис. 2. Результат виконання прикладу 3.