- •Мови програмування. Представлення даних.
- •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. Події та їх обробники.
- •Атрибути та їх використання
- •Рекомендована література
3. Використання асоційованого списку Hashtable та узагальненого словника Dictionary
Іншою групою методів є списки, ключами в яких не є цілі числа. Ці колекції призначені для збереження інформаційного значення, асоційованого з певним ключом (у вигляді пар ключ-значення). Унікальність гарантується за ключом.
Подібні структури даних часто використовуються в професійних програмах для створення пар «об’єкт-дія» або «об’єкт-атрибут». Перший приклад показує використання класу Hashtable:
using System;
// простір імен для використання Hashtable
using System.Collections;
namespace UsingHashTable
{
class Program
{
static void Main(string[] args)
{
// створюємо нетипізований асоційований список
Hashtable ht = new Hashtable();
// ключ та значення можуть бути довільними
ht[new int[] { 1, 2, 3 }] = 25;
ht[DateTime.Now] = "arbuz";
ht[1.2f] = 10;
// єдиним шляхом отримати дані є використання
// колекції ключів або значень
foreach (object o in ht.Keys)
{
Console.WriteLine("{0} ===> {1} ", o, ht[o]);
}
}
}
}
Другий приклад ілюструє використання класу Dictionary:
using System;
// простір імен для використання Dictionary
using System.Collections.Generic;
namespace UsingHashTable
{
class Program
{
static void Main(string[] args)
{
// створюємо нетипізований асоційований список
Dictionary<string, decimal> d =
new Dictionary<string, decimal>();
// компілятор перевіряє відповідність типів ключа та значення
d["Ivanov"] = 185;
d["Petrov"] = 180;
// єдиним шляхом отримати дані є використання
// колекції ключів або значень
foreach (string s in d.Keys)
{
Console.WriteLine("{0} ===> {1} ", s, d[s]);
}
}
}
}
Зауваження до обох прикладів:
-
І для типізованого і для нетипізованого асоційованих списків існує колекція ключів Keys.
-
І для типізованого і для нетипізованого асоційованих списків існує колекція значень Values.
-
Отримання значення в обох типах списків за певним ключем відбувається за допомогою оператора [ ].
-
Перевірка наявності ключа в обох типах списків відбувається за допомогою методу ContainsKey.
-
Перевірка наявності значення в обох типах списків відбувається за допомогою методу ContainsValue.
-
При додаванні нових значень елементів до колекції типу Hashtable перевірка відповідності типу значення та типу ключа відбуваються на етапі компіляції.
Класи в мові с#.
Концепція ООП реалізована в мові С# у формі класів. Клас – це тип даних, що містить власне дані та методи для маніпулювання ними. Специфікація класу дозволяє створювати об’єкти, які реалізують даний клас. Їх називають екземплярами класу або просто об’єктами. Похідні класи можуть спадкувати свої властивості від базових класів, підтримуючи їх інтерфейс, завдяки поліморфізму.
Насправді, всі елементи програми мовою С#, про які вже йшла мова: константи, змінні, блоки операторів, методи, тощо, – можуть існувати лише в рамках якогось класу. До цього часу ми використовували лише той клас, що створювався для нового проекту автоматично.