- •Мови програмування. Представлення даних.
- •1. Вступ. Про обчислювальну техніку.
- •2. Історія мов програмування.
- •3. Поняття про платформу .Net
- •4. Створення мови програмування с#.
- •5. Представлення даних. Необхідність типізації. Двійкова арифметика.
- •6. Основні поняття програмування.
- •Поняття про інтегроване середовище розробки VisualStudio (на прикладі Visual Studio 2005). Структура c#-програми.
- •1. Основні можливості інтегрованого середовища розробки VisualStudio .Net.
- •2. Структура програми мовою с#.
- •Int I; // Визначили цілу змінну
- •Основні елементи мови с#.
- •1. Основні вбудовані типи мови с#
- •2. Визначення та ініціалізація змінних, область їх видимості.
- •3. Приведення типів.
- •Інакше обидва операнди перетворюються до типу int;
- •4. Літерали (константи) мови с#.
- •5. Операції мови с#.
- •5.1. Арифметичні операції.
- •5.2. Операції інкременту та декременту.
- •5.3. Операції відношення (порівняння).
- •5.4. Логічні операції.
- •5.5. Порозрядні (бітові) операції.
- •5.6. Умовна (тернарна) операція.
- •5.7. Операції присвоєння.
- •5.8. Пріоритет операцій.
- •Основні інструкції керування мови с# – розгалуження та цикли.
- •1. Розгалуження у мові с#
- •2. Цикли у мові с#
- •2.1. Цикл for.
- •2.2. Цикл while.
- •2.3. Цикл do-while.
- •3. Керування виходом із циклів с#
- •Масиви в мові с#.
- •1. Визначення та ініціалізація масиву.
- •2. Цикл foreach
- •3. Багатовимірні масиви.
- •4. Використання деяких методів класу System.Array.
- •5. Масиви масивів. Непрямокутні масиви.
- •Структуровані типи даних (колекції) в мові c#
- •1. Основні структури даних та їх призначення
- •2. Використання списку ArrayList та узагальненого списку List
- •3. Використання асоційованого списку Hashtable та узагальненого словника Dictionary
- •Класи в мові с#.
- •1. Визначення класу.
- •2. Методи класу.
- •3. Методи з параметрами.
- •4. Конструктор класу.
- •Методи в мові с#.
- •1. Передача об’єктів методам.
- •2. Використання модифікаторів для параметрів методів.
- •3. Методи, що повертають об’єкти.
- •Перевантаження методів в мові с#.
- •1. Перевантаження методів.
- •2. Перевантаження конструкторів.
- •3. Використання ключового слова this.
- •4. Деструктор класу.
- •5. Метод Main ().
- •Статичні члени класу.
- •1. Статичні дані-члени класу.
- •2. Статичні методи-члени класу.
- •3. Статичний конструктор класу.
- •4. Статичні класи, локалізація та глобалізація
- •Властивості та індексатори.
- •1. Властивості.
- •2. Індексатори.
- •Спадкування в мові с#.
- •1. Поняття про спадкування та ієрархію класів.
- •2. Спадкування та правила доступу до членів класів.
- •3. Конструктори базового та похідних класів.
- •4. Посилання на екземпляри базового та похідних класів.
- •5. Поняття про поліморфізм.
- •6. Віртуальні функції – більш детальний погляд.
- •7. Абстрактні методи та класи.
- •Перевантаження операцій в мові с#.
- •1. Загальні відомості.
- •2. Перевантаження бінарних арифметичних операцій.
- •3. Перевантаження унарних операцій.
- •4. Перевантаження операцій відношення.
- •5. Перевантаження логічних операцій.
- •6. Підсумкові зауваження.
- •Структури та переліки в мові с#.
- •1. Структури.
- •2. Переліки.
- •Делегати, події та обробники подій
- •1. Делегати (delegate).
- •2. Події та їх обробники.
- •Атрибути та їх використання
- •Рекомендована література
Структуровані типи даних (колекції) в мові c#
1. Основні структури даних та їх призначення
Часто виникає програмна необхідність у певній структуризації інформації та організації методів доступу до таких структур даних. Програміст, наприклад, може мати справу із переліком назв деяких товарів, або з більш складними наборами даних. Використання масивів в цьому випадку може бути зручним підходом, проте, по-перше, звертання до елементу за індексом не завжди зручне (наприклад, товари треба вибирати за ціною), по-друге масиви мають один дуже суттєвий недолік – їх розмір фіксований і у випадках, коли кількість елементів наперед невідома, необхідно створювати масив іншого розміру перед зміною кількості елементів. Таку операцію можна виконувати наступним чином:
using System;
namespace LabDemo
{
class Program
{
static void Main(string[] args)
{
const int NEWSIZE = 10; // кількість елементів
int[] arr1 = { 1, 2, 3, 4, 5 };
// створюємо та ініціалізуємо новий масив
int[] arr2 = new int[NEWSIZE];
for (int i = 0; i < arr1.Length; i++)
{ arr2[i] = arr1[i]; }
}
}
}
За допомогою вбудованого статичного методу Copy() класу System.Array зробити все набагато простіше та правильніше, як показано у наступному прикладі. Параметри методу Copy()наступні: вихідний масив; індекс вихідного масиву, з якого починається копіювання; масив, у який відбувається копіювання; індекс масиву-призначення у який відбудеться копіювання та кількість елементів для копіювання.
using System;
namespace LabDemo
{
class Program
{
static void Main(string[] args)
{
const int NEWSIZE = 10; // кількість елементів
int[] arr1 = { 1, 2, 3, 4, 5 };
// створюємо та ініціалізуємо новий масив
int[] arr2 = new int[NEWSIZE];
// копіюємо arr1.Length елементів масиву arr1 у масив
// arr2, починаючи з індексу 0
Array.Copy(arr1, 0, arr2, 0, arr1.Length);
}
}
}
Отже масив є найпростішою уже знайомою нам структурою даних. Крім масивів для організації різноманітних структур інформації в мові C# існують спеціальні класи об’єктів, що спрощують роботу із структурами даних зі змінною кількістю елементів. Для таких структур даних використовується термін «колекція» - це набір об’єктів, всі елементів якого можуть бути перебрані по черзі. Для ідентифікації кожного елементу використовується унікальне значення деякого ключа – у найпростішому випадку це може бути просто ціле число, власне, аналог індексу у масиві. Існують два основних підходи до організації структур даних: коли всі дані є довільними об’єктами (мають тип object – такі класи з’явились в .NET версії 1.1) та коли дані є типізованими (узагальнені колекції (Generic), що з’явились їм на зміну в версії .NET 2.0).
Нижче будуть розглянуті 4 типи структур даних:
-
Набір даних із цілими ключами
-
ArrayList – масив-список, елементи такої структури даних належать до типу object.
-
List<Т> – типізований масив-список, всі елементи такої структури даних належать до типу Т.
-
-
Набір даних у вигляді пар значення-ключ із нецілими ключами
-
Hashtable – дані та ключі даних є довільними (належать до типу object)
-
Dictionary <Т1,Т2> – дані та ключі є типізованими і належать до типів Т1 та Т2.
-