русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


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


Дата додавання: 2014-11-27; переглядів: 2160.


 

Мета роботи: Вивчити основи роботи з одновимірними масивами, навчитись оголошувати й ініціалізовувати масиви. Оволодіти навичками запису та зчитування даних з масивів.

Прості змінні, що використовувались у попередніх лабораторних роботах, призначені для зберігання одного значення, та їх можливостей недостатньо. Наприклад, для збереження десяти значень чисел потрібно використовувати десять змінних. Проте це викликає певні незручності при організації обчислень. Мова C# пропонує два типи змінних, що можуть зберігати кілька об’єктів одночасно: масиви (array) та клас колекції (collection class). Масив – це колекція елементів одного й того ж типу, доступ до елементів якої можна отримати, використовуючи числовий індекс.Основні властивості:· Усі дані, що зберігаються в масиві, мають однаковий тип.· Індекси масивів починаються з 0.· Число індексів характеризує розмір масиву.Залежно від кількості заданих вимірів масиви поділяються на:· одновимірні;· багатовимірні;· ступеневі (масиви масивів);Одновимірний масив можна схематично зобразити наступним так:
Індекс Значення
0 A
1 B
2 C
N Z
Оголосити масив можна декількома способами:

тип ім’я_масива [розмірність];

Наприклад:

int masuv1 [10];

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

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

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

int[] d= new int[5];

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

Багатовимірний масив – це масив, елементи якого є також масивами. Розглянемо двовимірний масив. Двовимірний масив складається з N рядків і M стовпців.

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

int[,] array;

Приклад ініціалізації:

int[,] matrix = {1,2},{3,4};

Ще одним видом масивів у C# є масиви масивів (jagged arrays). Такий масив масивів можна розглядати як одновимірний масив, елементи якого є масивами, елементи яких, у свою чергу, знову можуть бути масивами, і так може тривати до деякого рівня вкладеності. Ці масиви можуть застосовуватися для представлення дерев, в яких вузли можуть мати довільне число нащадків. Таким може бути, наприклад, генеалогічне дерево. Вершини першого рівня – Fathers, що представляють батьків, можуть задаватися одновимірним масивом, так що Fathers[i] – це i-й батько. Вершини другого рівня представляються масивом масивів Children так, що Children[i] – це масив дітей i-го батька, а Children[i][j] – це j-е дитя i-го батька. Для представлення внуків знадобиться третій рівень. GrandChildren [i][j][k] який представлятиме k-го внука j-го дитяти i-го батька. Є деякі особливості в оголошенні й ініціалізації таких масивів. Якщо при оголошенні багатовимірних масивів для зазначення розмірності використовувалися коми, то для ступеневих масивів застосовується ясніша символіка – сукупності пар квадратних дужок. Наприклад, int[][] задає масив, елементи якого - одновимірні масиви елементів типу int.

Складніше зі створенням самих масивів і їх ініціалізацією. Тут не можна викликати конструктор new int[3][5], оскільки він не задає ступеневий масив. Фактично потрібно викликати конструктор для кожного масиву на нижньому рівні. У цьому і полягає складність оголошення таких масивів. Наприклад:

int[][] jagmas = new int[3][]

{

new int[] {5,7,9,11},

new int[] {2,8},

new int[] {6,12,4}

};

Масив jagmas має всього два рівні. Можна вважати, що у нього три елементи, кожен з яких є масивом. Для кожного такого масиву необхідно викликати конструктор new, щоб створити внутрішній масив. У даному прикладі елементи внутрішніх масивів набувають значення, будучи явно ініціалізовані константними масивами. Звичайно, допустиме і таке оголошення:

int[][] jagger1 = new int[3][]

{

new int[4],

new int[2],

new int[3]

};

Для звернення до елемента масиву необхідно знати його індекс, тобто його порядковий номер у масиві. Наприклад:

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

double i = x[0];

double j = x[1];

Зауважимо, що при використанні неправильного значення індексу, якому не відповідає жоден елемент, викликається виняткова подія типу IndexOutOfRangeException.

Розширює можливості роботи з масивами у C# клас Array. Він надає методи для створення, зміни, пошуку й сортування масивів, тобто виступає в ролі базового класу для всіх масивів.

Розглянемо його основні методи та властивості (табл. 4.1, 4.2)

Таблиця 4.1. Методи

Назва Призначення

 

Array.Clear задає діапазон елементів масиву Array рівним нулю, false або null, залежно від типу елементу
Array.Copy копіює діапазон елементів з одного масиву Array в інший масив Array і, при необхідності, виконує приведення типів і упаковку-перетворення
Array.CopyTo копіює всі елементи поточного одновимірного масиву Array в заданий одновимірний масив Array
Array.Equals визначає, чи дорівнює заданий об'єкт Object поточному об'єкту Object (успадковано від Object)
Array.FindIndex виконує пошук елементу вказаного предиката, що задовольняє умови, і повертає відлічуваний з нуля індекс першого знайденого входження в межах масиву Array або його частини
Array.FindLastIndex виконує пошук елементу, вказаного предиката, що задовольняє умови, і повертає відлічуваний від нуля індекс останнього знайденого входження в межах усього масиву Array або його частини
Array.GetLength повертає 32-розрядне ціле число, що представляє кількість елементів у заданому вимірі масиву Array
Array.GetValue повертає значення заданого елементу в поточному масиві Array
Array.IndexOf повертає індекс першого екземпляра значення в одновимірному масиві Array або в частині масиву Array
Array.Reverse змінює порядок елементів в одновимірному масиві Array або в частині масиву Array на зворотний
Array.Sort Сортує елементи в одновимірних об'єктах Array

 

Таблиця 4.2. Властивості

Назва Призначення
Array.IsFixedSize повертає значення, що дозволяє визначити, чи має колекція Array фіксований розмір
Array.IsReadOnly повертає значення, що дозволяє визначити, чи доступна колекція Array лише для читання
Array.Length повертає 32-розрядне ціле число, що представляє загальне число елементів у всіх вимірах об'єкта Array
Array.Rank повертає ранг (розмірність) об'єкта Array  
Наприклад, щоб відсортувати масив, можна використати метод Sort:

int[] mas = {11, -23, 1, -3, 21 , 10, 10, 5, 100};

Array.Sort(mas);

Використання масивів.Масиви можна використовувати різними способами. Наприклад, масив можна передати як аргумент або параметр для методу:

static void WriteArr (int[] numbers);

Копіювання масивів.Оскільки масиви – це типи посилання, присвоєння змінної масиву іншій змінній створює дві змінні, що посилаються на один і той самий об’єкт. Для копіювання масивів передбачений метод Clone(). Також можна використовувати метод Copy(). Компонент CheckedListBox відображає список елементів і дає можливість користувачу вибрати кілька елементів, установивши прапорці, що розміщені поряд з елементами. Обрати можна потрібну кількість елементів, проте тільки по одному за раз. Деякі найбільш використовувані властивості компоненту можна побачити в таблиці 4.3.

Таблиця 4.3. Властивості класу CheckedListBox

Властивість Призначення

 

BackColor Повертає або задає колір фону для елементу управління
BorderStyle Отримує або задає тип межі,що зображується навколо ListBox
CheckedIndices Колекція позначених індексів у даному елементі управління CheckedListBox
CheckedItems Колекція позначених елементів у даному елементі управління CheckedListBox
ColumnWidth Отримує або задає ширину стовпців у ListBox з декількома стовпцями
Font вертає або задає шрифт тексту, що відображається елементом управління
Height Повертає або задає висоту елемента управління
Items Отримує колекцію елементів, які знаходяться в даному елементі управління CheckedListBox
MultiColumn Отримує або задає значення, що визначає, чи підтримує елемент управління ListBox кілька стовпців
SelectedIndex Отримує або задає індекс виділеної зараз позиції в елементі управління ListBox (індекс починається з нуля)
SelectedIndices Отримує колекцію, яка містить індекси всіх виділених тепер позицій в елементі управління ListBox (індекси починаються з нуля)
SelectedItem Отримує або задає вибраний у даний момент елемент у полі зі списком ListBox
SelectedItems Отримує колекцію, яка містить виділені тепер позиції елемента керування ListBox
SelectionMode Отримує або задає значення, що вказує режим вибору
Width Повертає або задає ширину елемента управління

 

Нехай на формі розміщений деякий checkedListBox. Тоді для очищення всього списку елементів, що містить checkedListBox, використовується код:

checkedListBox1.Items.Clear();

Для додавання одного елементу до checkedListBox потрібно ввести такий код:

checkedListBox1.Items.Add(ЗНАЧЕННЯ);

Для заповнення списку елементів програмно можна використати такий код:

checkedListBox1.Items.AddRange(

new object[]

{

"Економічна кібернетика",

"Маркетинг",

"Менеджмент",

"Міжнародна економіка"

});

Щоб зробити елемент позначеним або непозначеним, можна використати метод:

checkedListBox1.SetItemChecked(ІНДЕКС, ЗНАЧЕННЯ);

де ІНДЕКС – порядковий номер елемента у списку checkedListBox, а ЗНАЧЕННЯ – відповідно або True, або False.

Для проходження по колекції позначених елементів можна використати такий код:

for(int x = 0; x <= checkedListBox1.CheckedItems.Count - 1 ; x++)

{

...

}

Для проходження по всій колекції елементів можна використати такий код:

for(int i = 0; i <= checkedListBox1.Items.Count - 1 ; i++)

{

...

}

Для звернення до елемента з порядковим номером ІНДЕКС використовують такий код:

checkedListBox1.Items[ІНДЕКС];

Для вилучення елемента з порядковим номером ІНДЕКС:

checkedListBox1.Items.RemoveAt[ІНДЕКС]

Компонент ComboBox схожий на CheckedListBox, але він дає можливість не тільки обирати елементи зі списку, але й надає місце для введення та вибору елемента зі списку. Крім того, елемент управління ComboBox можна налаштувати так, щоб він відображав список варіантів або представляв випадаючий список варіантів. Його зручно використовувати тоді, коли користувачу необхідно вибрати одне значення із запропонованого набору. Деякі найбільш використовувані властивості можна побачити в таблиці 4.4.

 

Таблиця 4.4. Властивості класу ComboBox

Властивість Призначення

 

DataSource Повертає або задає джерело даних для цього об'єкта ComboBox.
DropDownHeight Повертає або задає висоту в пікселях частині поля зі списком, що розкривається.
DropDownStyle Повертає або задає значення, що вказує стиль поля зі списком.
DropDownWidth Повертає або задає ширину розкривається частині поля зі списком.
DroppedDown Повертає або задає значення, яке вказує, чи відображається в полі зі списком частина, що розкривається.
Font Повертає або задає шрифт тексту,що відображається елементом управління.
Items   Отримує об'єкт, що представляє колекцію елементів, які містяться в даному полі зі списком ComboBox.
SelectedItem Повертає або задає виділений елемент у полі зі списком ComboBox.
SelectedText Повертає або задає текст, виділений у редагованій частині поля зі списком ComboBox.
SelectionLength Повертає або задає число знаків, виділених у редагованій частині поля зі списком.
SelectionStart Повертає або задає початковий індекс тексту, виділеного в полі зі списком.
Sorted   Повертає або задає значення, яке вказує, чи сортуються елементи в полі зі списком.

Доступ до елементів ComboBox такий самий, як і в checkedListBox. Тому можна використовувати аналогічні методи.


Завдання для самостійної роботиСтворити форму для проведення різних дій з елементами масиву. Приклад зовнішнього вигляду зображено на рис. 4.1. Рис. 4.1. Зовнішній вигляд форми За допомогою компонента Button і TextBox реалізувати введення елементів у ListBox та їх запис у масив. Використовуючи компонент ComboBox додати можливість обирати дію, яку необхідно виконати. Набір дій додавати згідно з варіантом:1) Обчислити середнє арифметичне значення.2) Обчислити середнє гармонічне значення.3) Обчислити середнє квадратичне значення.4) Обчислити середнє геометричне значення.5) Обчислити середнє хронологічне значення.6) Обчислити моду.7) Обчислити медіану.8) Максимальне значення.9) Мінімальне значення.10) Середнє значення максимального та мінімального елементів.11) Вивести елемент з індексом і у квадраті.12) Сума елементів, з індексами i-1,i,i+1.13) Сума елементів з парними індексами.14) Сума елементів з непарними індексами.15) Добуток першого й останнього елементів масиву.
№ варіанта 1 2 3 4 5
Показники 1, 8, 13 2, 10, 12 3, 9, 11 4, 8, 10 5, 7, 12
№ варіанта 6 7 8 9 10
Показники 15, 5, 7 4, 6, 13 2, 8, 14 1, 9, 13 3, 6, 14


<== попередня лекція | наступна лекція ==>
Умовний оператор | Робота з рядками.


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн