Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Оголошення одномірних масивів
Тема 11. Алгоритми роботи з одномірними масивами. Масив задає спосіб організації даних. Масивом називають упорядковану сукупність елементів одного типу. Кожен елемент масиву має індекси, що визначають порядок елементів. Число індексів характеризує розмірність масиву. Кожен індекс змінюється в деякому діапазоні [a, b]. У мові C#, як й у багатьох інших мовах, індекси задаються цілочиcельним типом. Діапазон [a, b] називається граничною парою, a - нижньою границею, b - верхньою границею індексу. При оголошенні масиву границі задаються виразами. Якщо всі границі задані константними виразами, то число елементів масиву відомо в момент його оголошення і йому може бути виділена пам'ять ще на етапі трансляції. Такі масиви називаються статичними. Якщо ж вирази, що задають границі, залежать від змінних, то такі масиви називаються динамічними, оскільки пам'ять їм може бути відведена тільки динамічно в процесі виконання програми, коли стають відомими значення відповідних змінних. Масиву, як правило, виділяється безперервна область пам'яті. Масиви в мові C# є дійсними динамічними масивами. Як наслідок цього, нагадаю, масиви ставляться до посилальних типів, пам'ять їм приділяється динамічно в " купі". На жаль, не зняте обмеження 0-базування, хоча, на мій погляд, у такому обмеженні вже немає логіки через відсутність в C# адресної арифметики. Було б набагато зручніше в багатьох завданнях мати можливість працювати з масивами, у яких нижня границя не дорівнює нулю. У мові C#, дотримуючи наступності, збережені одномірні масиви й масиви масивів. На додаток до них у мову додані багатомірні масиви. Динамічні багатомірні масиви мови C# є досить потужними, надійними, зрозумілими й зручними структурними даними, що сміло можна рекомендувати до застосування не тільки професіоналам, але й новачкам, що програмують на C#. Після цього короткого огляду давайте перейдемо до більше систематичного вивчення деталей роботи з масивами в C#. Оголошення масивів Розглянемо, як оголошуються одномірні масиви, масиви масивів і багатомірні масиви. Оголошення одномірних масивів Нагадаю загальну структуру оголошення: [< атрибути> ] [< модифікатори> ] < тип> < об'явники>;Забудемо поки про атрибути й модифікатори. Оголошення одномірного масиву виглядає в такий спосіб: < тип> [] < об'явники>;Що ж стосується границь зміни індексів, то ця характеристика до класу не ставиться, вона є характеристикою змінних - екземплярів, кожний з яких є одномірним масивом зі своїм числом елементів, що задають в об'явнику змінної. Як у випадку оголошення простих змінних, кожен об'явник може бути ім'ям або ім'ям з ініціалізацією. У першому випадку мова йде про відкладену ініціалізацію. Потрібно розуміти, що при оголошенні з відкладеною ініціалізацією сам масив не формується, а створюється тільки посилання на масив, що має невизначене значення Null. Тому поки масив не буде реально створений і його елементи ініціалізовані, використати його в обчисленнях не можна. От приклад оголошення трьох масивів з відкладеною ініціалізацією: int[] a, b, c;Найчастіше при оголошенні масиву використовується ім'я з ініціалізацією. І знов-таки, як у випадку простих змінних, можуть бути два варіанти ініціалізації. У першому випадку ініціалізація є явною й задається константним масивом. От приклад: double[] x= {5.5, 6.6, 7.7};Дотримуючись синтаксису, елементи константного масиву варто брати у фігурні дужки. У другому випадку створення й ініціалізація масиву виконується в об'єктному стилі з викликом конструктора масиву. І це найпоширеніша практика оголошення масивів. Приведу приклад: int[] d= new int[5];Отже, якщо масив оголошується без ініціалізації, то створюється тільки висяче посилання із значенням void. Якщо ініціалізація виконується конструктором, то в динамічній пам'яті створюється сам масив, елементи якого ініціалізуються константами відповідного типу (нуль для арифметики, порожній рядок для строкових масивів), і посилання зв'язується із цим масивом. Якщо масив ініціалізується константним масивом, то в пам'яті створюється константний масив, з яким і зв'язується посилання. Як звичайно задаються елементи масиву, якщо вони не задані при ініціалізації? Вони або обчислюються, або вводяться користувачем. Для доступу до елемента масиву вказується його ім'я й у квадратних дужках - індекс потрібного елемента. З елементом масиву можна працювати як зі звичайної змінної, тобто можна прочитати його значення або записати в нього нове значення. Приклади: a[3]: = 0; елементу масиву a з індексом 3 привласнюється значення 0; a[10]: = a[10]*2; елемент масиву a з індексом 10 подвоюється. В якості індексів елементів масиву можуть виступати цілі константи та цілі змінні. Використання цілих змінних дає можливість працювати з елементами масиву використовуючи цикли. Масив - це найважливіша конструкція алгоритмічної мови. Важливість масиву визначається тим, що пам'ять комп'ютера логічно являє собою масив (його можна розглядати як масив байтів або як масив чотирьохбайтових машинних слів). Індекс у цьому масиві звичайно називають адресою. Елементи масиву читаються й записуються винятково швидко, за одну дію, незалежно від розміру масиву й величини індексу. Більшість інших структур даних, використовуваних у програмуванні, моделюються на базі масиву.
|