SlideShare a Scribd company logo
1 of 11
Download to read offline
Крос-платформне програмування
Лабораторна робота №2. Об’єкти та сервіси, що ними надаються. Стандартні класи
мови C#.
Мета роботи: набути навичок з розробки консольних застосувань у середовищі
Microsoft Visual Studio та навчитися використовувати об’єкти та сервіси, що ними надаються.
Зміст
 Загальні відомості
 Типи даних C#.
 Вирази та оператори C#.
 Класи та методи в C#.
 Порядок виконання роботи
 Варіанти індивідуальних завдань.
 Контрольні питання
Загальні відомості
Microsoft Visual Studio NET – це інтегроване середовище розробки для створення,
документування, запуску та налагодження програм, написаних на мовах .NET.
Ця середовище розробки є відкритим мовним середовищем. Поряд з мовами
програмування, включеними в середовище з самого спочатку – C++, C#, J#, Visual Basic, в
нього можна додавати будь-які мови програмування, компілятори яких створюються
сторонніми розробниками. Необхідною умовою для включення мов в середовище Visual
Studio .NET є використання єдиного каркаса – Платформи .Net Framework.
Платформа .NET Framework дозволяє:
• легко використовувати компоненти, розроблені на різних мовах;
• розробляти єдину програму з декількох частин на різних мовах;
Для розробки застосувань у Visual Studio .NET використовуються проекти.
Проект (Project) – це основна одиниця, з якою має справу розробник. Спочатку він
повинен вибрати тип проекту, після чого Visual Studio створює каркас проекту відповідно до
вибраним типом.
Проект складається з класів, зібраних в одному або декількох просторах імен.
Простори імен (name space) дозволяють структурувати проекти, що містять велику кількість
класів, об'єднуючи в одну групу близькі класи.
Кілька проектів можуть об'єднуватися в рішення (Solution), яке також може включати
ресурси, необхідні цим проектам.
З точки зору розробника кінцевим результатом його роботи, одержуваним після
компіляції вихідного програмного коду, є рішення, а з точки зору загальномовного
середовища виконання CLR (Common Language Runtime) – збірка (assembly), що містить
PE-файл, тобто модуль у форматі виконуваного файлу PE (Portable Executable) для 32-
розрядної ОС Windows, або DLL-файл (Dynamic Link Library).
Visual Studio .NET містить різноманітні типи проектів. Для ознайомлення з основами
мови С# у цій лабораторній роботі будуть використані консольні застосування без
залучення звичних у Windows можливостей користувацького інтерфейсу.
У C# немає глобальних функцій, тому за промовчанням при створенні консольного
застосування оголошується клас програм, який містить функцію статичного Main(), що
служить початковою точкою виконання програми. Функція Main()може бути оголошена
без параметрів або з параметром, що представляє собою масив рядків.
Також програма на C# може містити коментарі та атрибути.
У C# використовуються однорядкові та багаторядкові коментарі. Однорядковий
коментар починається з пари символів "//", і весь текст до кінця рядка є коментарем.
Багаторядковий коментар починається з пари символів /* і закінчується */.
Атрибут – засіб додавання до елементів програмного коду декларативної інформації.
Призначення атрибутів: організація взаємодії між програмними модулями, додаткова
інформація про умови виконання коду, управління сериалізацією (тобто правила збереження
інформації), налагодження тощо. Атрибути можуть бути як стандартними, так і заданими
користувачем. Стандартні атрибути використовуються CLR і впливають на те, як буде
виконуватися проект. Атрибут розміщується у дужках "[]".
Типи даних C#
Стандарт мови C++ включає наступний набір фундаментальних типів:
 Логічний тип (bool).
 Символьний тип (char).
 Цілі типи. Вони можуть відрізнятися розміром: short, int, long, а також можуть
бути знаковими (signed) або беззнаковими (unsigned).
 Типи з плаваючою крапкою. Вони також можуть відрізнятися розмірами: float,
double та long double.
Тип void вказує на відсутність інформації.
До конструйованих типів відносяться наступні:
 Показчики (наприклад, char*).
 Посилання (наприклад, char& ).
 Масиви (наприклад, char[] ).
Також мова дозволяє розробнику конструювати власні типи:
 Перерахування (enum).
 Структури (struct).
 Класи.
У мові C# усі типи можно розглядати ще в одному сенсі, разділивши їх на чотири
категорії:
 Типи-значення (value).
 Типи-посилання (reference).
 Показчики (pointer).
 Тип void.
Значення для типу-посилання задає посилання на область пам'яті у "купі" (heap), де
розташований відповідний об'єкт. Для типу-значення значенням є власне дані, а пам'ять для
них виділяється у стеці.
Логічний, арифметичний, структури, перерахування належать до типів-значень, а
масиви, рядки та класи – до типів-посилань.
І типи-посилання, і звичайні типи є похідними від базового класу object. У тих
випадках, коли звичайний тип повинен вести себе як об'єкт, створюється оболонка (wrapper),
яку можна розглядати як об'єкт типу-посилання, поміщений до купи, і в неї копіюється
значення змінної звичайного типу. Оболонка автоматично позначається таким чином, що
система знає, яке значення вона містить. Цей процес називется упаковкою (boxing), а
зворотній процес – розпаковуванням (unboxing).
Упаковка відбувається автоматично, для цього потрібно лише присвоїти значення
звичайного типу змінній типу object. Упаковка та розпакування дозволяють обробляти будь-
який тип як об'єкт. Наприклад, у виразі
7.ToString();
ціле число 7 упаковується шляхом виклику функції Int32.ToString ().
Масиви в C# можуть бути багатовимірними (multidimensional) або невирівняними
(jagged). Більш складні структури даних такі, як стек і хеш-таблиця, визначені в просторі
імен System.Collections.
Вирази та оператори C#
Вирази будуються з операндів – констант, змінних, функцій, – об'єднаних знаками
операцій і дужками. При обчисленні виразу визначається його значення і тип.
Нижче у таблиці наведено перелік операцій C#.
Категорія операцій Операції
Арифметичні + – * / %
Логічні ( boolean та побітні) & | ^ ! ~ && ||
Строкові +
Інкремент та декремент ++ --
Зсув >> <<
Порівняння == != < > <= >=
Присвоювання = += –= *= /= %= &= |= ^= <<= >>=
Звернення до члена класу .
Індексація []
Приведення типів (Cast) ()
Умова ?:
Створення об’єкта new()
Інформація про тип is sizeof typeof
Керування виключеннями checked unchecked
Ім'я та тип змінної задаються при її оголошенні і залишаються незмінними протягом
всього часу її життя. Особливістю мови C# є вимога обов'язкової ініціалізації змінної до
початку її використання. Спроба використання неініціалізуваної змінної призведе до
помилок, що виявиться ще на етапі компіляції.
Щодо використовуваних виразів та операторам C# схожий на C++. Так в програмах на
C# використовуються наступні оператори:
 Оператор присвоювання ( = )
 Складений оператор ( {} )
 Оператори вибору: if-else та switch
 Оператори циклу: for, while, оператор
 Оператори break та continue
 Оператор return
 Оператор переходу goto
Крім того, введені кілька нових інструкцій. Наприклад, оператор foreach дозволяє
отримати доступ до всіх елементів масиву або колекції по черзі, в порядку зростання
індексів. Його синтаксис:
foreach (тип ідентифікатор in контейнер) оператор
У C# процедури та функції існують тільки як методи деякого класу, вони не визначені
поза класом. Роль бібліотек процедур і функцій виконують бібліотеки класів. Доступна у
мові C# бібліотека класів FCL (Framework Class Library) істотно розширює можливості
мови.
Класи та методи у C#
У Visual Studio .Net, і зокрема у C#, будь-яка програмна система розглядається як
сукупність класів, об'єднаних у проекти, простори імен, рішення.
Опис класу має наступний синтаксис:
[атрибути][модифікатори]class ім’я_класу[:список_батьків] {тіло_класу}
У тілі класу можуть бути оголошені:
 константи;
 поля;
 конструктори та деструктори;
 методи;
 події;
 делегати;
 класи (структури, інтерфейси, перерахування).
Поля класу синтаксично є звичайними змінними (об'єктами) мови. Їх опис
задовольняє звичайним правилам оголошення змінних. Поля характеризують властивості
об'єктів класу.
Методи класу синтаксично є звичайними процедурами і функціями мови. Методи
містять описи операцій, доступних над об'єктами класу. Методи, так звані властивості, є
спеціальною синтаксичною конструкцією, призначеною для забезпечення ефективної роботи
з класами.
Конструктор представляє собою спеціальний метод класу, що дозволяє створювати
об'єкти класу. Його ім'я повинне збігатися з ім'ям класу. Якщо розробник не визначає
конструктор класу, то до класу автоматично додається конструктор за промовчуванням –
конструктор без аргументів.
Делегат в C# є описом спеціального випадку класу і задає визначення
функціонального типу (класу) даних. Екземплярами класу є функції. Кожен делегат описує
безліч функцій із заданою сигнатурою. Кожна функція (метод), сигнатура якого збігається з
сигнатурою делегата, може розглядатися як екземпляр класу, заданого делегатом. Синтаксис
оголошення делегата має наступний вигляд:
[<специфікатор доступу>] delegate <тип результату> <ім’я класу> (<список
аргументів>);
Порядок виконання роботи
Для практичного вивчення прикладів в даній лабораторній роботі необхідно
встановити пакет Microsoft Visual Studio (версії не раніше 2003). У залежності від
встановленої версії можливі несуттєві відмінності в інтерфейсі середовища при створенні та
роботі з проектом консольного застосування.
1. Створення проекту консольного застосування.
Перший крок при розробці будь-якого застосування – створення проекту. Для цього
виберіть пункт меню File|New Gt Project, щоб відкрити панель створення нового проекту
наступного вигляду:
2. Зі списку запронованих шаблонів необхідно вибрати проект консольного
застосування (Console Application).
3. Після створення проекту повинно з'явитися наступне вікно, що містить текст
програми Program.cs на мові C#:
У даній програмі оголошення using System дає можливість посилатися на класи, які
знаходяться в просторі імен System, тому їх можна використовувати, не додаючи "System."
перед ім'ям типу.
Простір імен System містить багато корисних класів. Одним з них є клас Console, який
використовується при створенні консольних застосувань.
Клас проекту Program розміщений в просторі імен, що має за промовчанням те саме
ім'я (HelloWorldDemo), що і рішення, яке містить в даному прикладі єдиний проект.
Оскільки в C# немає глобальних функцій, тому в даному прикладі оголошується клас
Program, який містить функцію static Main(), що служить точкою входу у програму. Функція
Main може бути оголошена без параметрів або з параметром, який є масивом рядків.
Оскільки функція Main є точкою входу, вона повинна бути статичною (static) функцією,
тобто вона не пов'язана з конкретним об'єктом класу, в якому оголошена.
4. Додамо всередині функціїї Main() наступний рядок:
Console.WriteLine("Hello world!");
який використовує метод WriteLine класу Console для виводу рядка "Hello world!".
5. Компіляція проекту. Для цього необхідно вибрати пункт меню Build|Build
Ім’я проекта або натиснути комбінацію клавіш <Shift+F6>. За наявності повідомлень про
помилки необхідно їх виправити та скомпілювати проект знову.
6. Запуск застосування. Для запуску можна вибрати або пункт меню (Debug|Start
Without Debugging), або натиснути комбінацію клавіш <Ctrl+F5>. В результаті отримаємо
наступне консольне вікно:
7. Ускладнимо застосування. Для цього додамо до функції Main наступний код
для виведення у консольне вікно таблиці множення цілих чисел:
static void Main(string[] args)
{
int[] ArInt = { 0, 9, 1, 8, 2, 7, 3, 6, 4, 5 };
Console.WriteLine("Array contains elements:");
foreach(int item in ArInt)
Console.Write("{0} ", item);
Console.WriteLine("");
}
Після повторення кроків 5-6 одержимо наступне вікно:
8. Сортування елементів масиву
Всі масиви є нащадками класу System.Array, який у свою чергу успадковує ряд
інтерфейсів: ICloneable, IList, ICollection, IEnumerable, а, отже, реалізує усі їхні методи та
властивості. Крім того, клас Array має велику кількість власних методів і властивостей.
Завдяки спадкуванню від класу System.Array, для масивів визначені такі вбудовані
методи копіювання, пошуку, звернення, сортування (Sort – сортування масиву, Reverse –
сортування одновимірного масиву у зворотному порядку). Масиви можна розглядати також
як колекції і використовувати цикл foreach для перебору його елементів.
Додамо до функції наступний код:
// Сортування елементів
Array.Sort(ArInt);
Console.Write("n");
Console.WriteLine("Sorted array contains elements:");
for(int i = 0; i <= 9; i++)
{
for(int j = 0; j <= 9; j++)
Console.Write( ArInt[i]*ArInt[j] + "t");
Console.Write("n");
}
Console.WriteLine("");
Після повторення кроків 5-6 одержимо наступне вікно:
Завдання для самостійної роботи
1. Написати на C# консольне застосування, що реалізує функції відповідно до
варіанту індивідуального завдання.
2. При введенні вхідних даних з клавіатури перевіряти їх на допустимість значень.
Наприклад, якщо вводиться індекс матриці, перевіряти, що він більше за одиницю.
Допустимі значення вхідних даних описати у звіті. Проіюструвати скрін-шотами роботу
програми на допустимих та недопустимих значеннях вхідних даних (повідомлення про
помилки або невірно введені дані).
Зміст звіту:
1. Постановка завдання для індивідуального варіанту.
2. Список і призначення використовуваних змінних, діапазони їх допустимих
значень.
3. Текст програми.
4. Протокол роботи програми (на допустимих та недопустимих значеннях
вхідних даних).
5. Висновки.
Варіанти індивідуальних завдань
№ ва-
ріанту
Зміст завдання
1 1. Реалізувати функцію Copies(s, s1, n) копіювання рядка s у рядок s1 n раз.
2. Визначити номер рядка і стовпця елемента прямокутної матриці  NMA  , що
є найближчим до числа p . Матриця  NMA  і число вводяться користувачем.
2 1. Реалізувати функцію Words(s) для підрахунку слів в рядку s ("слово" –
послідовність символів, що не містить пробілів).
2. Знайти суму елементів прямокутної матриці  NMA  , що знаходяться в
обраному рядку j цієї матриці. Матриця  NMA  і номер рядка j вводяться
користувачем.
3 1. Реалізувати функцію центрування Center(s1, s2, l), що розміщує рядок s1 у
середині рядка s2 довжиною l.
2. Сформувати вектор  mdddD ,,, 21  , кожний елемент якого дорівнює
середньому арифметичному значень елементів рядків прямокутної матриці
 NMA  . Матриця A вводиться користувачем.
4 1. Реалізувати функцію Left(s ,l) для вирівнювання рядка s по лівому краю до
довжини l.
2. Знайти матрицю, зворотну заданій квадратній матриці  NNA  за формулою







 ija
A 1
, де 0 A – визначник матриці  NNA  . Матриця A вводиться
користувачем.
5 1. Реалізувати функцію Right(s, l) для вирівнювання рядка s по правому краю до
довжини l.
2. Обчислити елементи вектора  mgggG ,,, 21  , як добуток елементів
відповідних рядків заданої матриці A розмірністю NM  . Матриця A
вводиться користувачем.
6 1. Реалізувати функцію Reverse(s) для зміни порядку символів у рядку s на
протилежний.
2. Розрахувати елементи матриці  MKC  , що є добутком матриць  MNA 
і  NKB  , за формулою 

N
l
jlliij bac
1
. Матриці A та B вводяться
користувачем.
7 1. Реалізувати функцію WordIndex(s, n) визначення позиції початку в рядку s
слова з номером n ("слово" – послідовність символів, що не містить пробілів).
2. Розрахувати елементи матриці  NNC  за формулою   BATrC  , де
  

N
i
iiaATr
1
– слід матриці A ,  NNB  – вихідна матриця. Матриці A та B
вводяться користувачем.
8 1. Реалізувати функцію WordLength(s, n) визначення довжини слова з номером n
в рядку s ("слово" – послідовність символів, що не містить пробілів).
2. Підрахувати кількість нульових елементів матриці  MNA  , що лежать на
діагоналях і надрукувати їх індекси. Матриця A вводиться користувачем.
9 1. Реалізувати функцію SubWord(s, n, l) виділення з рядка s l-слів, починаючи зі
слова з номером n ("слово" – послідовність символів, що не містить пробілів).
2. Обчислити елементи матриці  MNA  за елементами вихідної матриці
 MNB  , використовуючи формулу 2
ijij ba  . Головну і побічну діагоналі
залишити незмінними. Матриця B вводиться користувачем.
10 1. Реалізувати функцію StrSpn(s, s1) визначення довжини тієї частини рядка s, яка
містить тільки символи з рядка s1.
2. Перетворити задану матрицю  MNA  в строго трикутну матрицю. Матриця
називається строго трикутною, якщо 0ija для ji  .
11 1. Реалізувати функцію StrCSpn(s, s1) визначення довжини тієї частини рядка s,
яка не містить символи з рядка s1.
2. Сформувати вектор  nxxxX ,,, 21  , кожний елемент якого
визначається як мінімальний елемент відповідного стовпця вихідної матриці
 MNA  . Матриця A вводиться користувачем.
12 1. Реалізувати функцію Compress(s, t), призначеної для заміни в рядку s
множинних входжень символу t на один символ t.
2. Перетворити вихідну матрицю  MNA  так, щоб останній елемент кожного
рядка був замінений сумою попередніх елементів того ж рядка. Матриця A
вводиться користувачем.
13 1. Реалізувати функцію StrType(s) для визначення типу рядка s (можливі типи –
рядок літер, десяткове число, шістнадцяткове число, двійкове число тощо).
2. Отримати вектор  msssS ,,, 21  , кожний елемент якого дорівнює сумі
елементів відповідного рядка заданої матриці  MNA  . Матриця A вводиться
користувачем.
14 1. Реалізувати функцію Translate(s, s1, s2), призначеної для перекладу символів
рядка s, які входять в алфавіт s1, у символи, що входять до алфавіту s2.
2. Сформувати вектор  nxxxX ,,, 21  , кожний елемент якого
визначається як добуток елементів відповідних стовпців вихідної матриці
 MNA  . Матриця A вводиться користувачем.
15 1. Реалізувати функцію Compul(s1, s2) для порівняння рядків s1 та s2 з
ігноруванням відмінностей у регістрах.
2. Перетворити задану матрицю  MNA  таким чином, щоб перший елемент
кожного стовпця був замінений добутком наступних елементів того ж стовпця.
Матриця A вводиться користувачем.
16 1. Реалізувати функцію Concat (s1, s2) для конкатенації рядків s1 та s2.
2. Перетворити матрицю  MNA  так, щоб усі елементи, розташовані нижче
головної діагоналі, були зменшені вдвічі, а елементи, розташовані вище головної
діагоналі, – збільшено вдвічі. Матриця A вводиться користувачем
17 1. Реалізувати функцію Parse(s, t) для поділу рядка s на дві частини: до першого
входження символу t та після нього.
2. Визначити кількість негативних елементів у лівій і правій чвертях заданої
матриці  MNA  . Матриця A вводиться користувачем.
18 1. Реалізувати функцію Delete(s,n,l) для видалення з рядка s підрядка, починаючи
з позиції n, довжиною l.
2. Знайти співвідношення мінімального та максимального елементів матриці
 MNA  . Матриця A вводиться користувачем.
19 1. Реалізувати функцію Insert(s,s1,n) для вставки у рядок s підрядка s1,
починаючи з позиції n.
2. Транспонувати задану матрицю  MNA  . Операція транспонування полягає у
тому, що рядки і стовпці у вихідній матриці міняються місцями. Наприклад,


















642
531
65
43
21
T
AA . Матриця A вводиться користувачем.
20 1. Реалізувати функцію Pos(s,s1) для пошуку першого входження підрядка s1 у
рядок s.
2. Сформувати вектор  myyyY ,,, 21  , кожний елемент якого
визначається як максимальний елемент відповідного рядка вихідної матриці
 MNA  . Матриця A вводиться користувачем.
21 1. Реалізувати функцію LastPos(s,s1) для пошуку останнього входження підрядка
s1 у рядок s.
2. У прямокутній матриці  MNA  поміняти місцями мінімальний елемент,
розташований на головній діагоналі, і максимальний елемент, розташований на
побічній діагоналі. Матриця A вводиться користувачем.
22 1. Реалізувати функцію Overlay(s,s1,n) для перекриття частини рядка s,
починаючи з позиції n, рядком s1.
2. У заданій матриці  MNA  знайти нульовий елемент з найбільшим значенням
індексу i та обнулити усі елементи стовпця, в якому знаходиться цей елемент.
Якщо в матриці немає нульових елементів, вивести відповідне повідомлення.
Матриця A вводиться користувачем.
23 1. Реалізувати функцію Replace(s,s1,s2) для заміни в рядку s комбінації символів
s1 на s2
2. Знайти відношення кількості позитивних елементів до кількості негативних
елементів заданої матриці  MNA  . Якщо матриця не містить негативних
елементів, вивести відповідне повідомлення. Матриця A вводиться
користувачем.
24 1. Реалізувати функцію Trim(s) для видалення пробілів на початку та наприкінці
рядка s.
2. У кожному рядку матриці  MNA  поміняти місцями елементи головної та
побічної діагоналей. Матриця A вводиться користувачем.
25 1. Реалізувати функцію StrSet(s,n,l,t) для установки l символів рядка s, починаючи
з позиції n, в значення t.
2. Для квадратної матриці  NNB  знайти відношення суми елементів,
розташованих вище головної діагоналі, до суми елементів, розташованих нижче
головної діагоналі. Якщо остання сума дорівнює нулю, вивести відповідне
повідомлення. Матриця B вводиться користувачем.
26 1. Реалізувати функцію Space(s,l) для доведення рядка s до довжини l шляхом
вставки пробілів між словами ("слово" – послідовність символів, що не містить
пробілів).
2. Визначити оцінки дисперсії для кожного рядка заданої матриці  MNQ  за
формулою
 
1
2




m
qq
D
m
j
iij
i , де
m
q
q
m
j
ij
i


1
. Матриця Q вводиться користувачем.
27 1. Реалізувати функцію Findwords(s,s1) для пошуку входження в рядок s заданої
фрази (послідовності слів) s1 ("слово" – послідовність символів, що не містить
пробілів).
2. Отримати масив  nxxxX ,,, 21  , кожен елемент якого дорівнює
середньому арифметичному значень елементів відповідного стовпця матриці
 MNA  . Матриця A вводиться користувачем.
28 1. Реалізувати функцію Word(s) для виділення першого слова з рядка s ("слово" –
послідовність символів, що не містить пробілів).
2. Перетворити задану прямокутну матрицю  MNA  в матрицю у рядок Z
розмірністю mn , розмістивши послідовно усі стовпці матриці. Наприклад,
 212431
24
13
21












 ZA . Матриця A вводиться користувачем.
29 1. Реалізувати функцію Exchange(s, s1, s2), призначеної для заміни в рядку s усіх
входжень підрядка s1 на підрядок s2.
2. У матриці  MNA  знайти суму позитивних елементів, розташованих у її
верхній і нижній чвертях. Матриця A вводиться користувачем.
30 1. Реалізувати функцію StrDel(s,s1) для видалення з рядка s усіх входжень
підрядка s1
2. У заданій матриці  MNA  знайти елемент baij  , з найбільшим значенням
індексу j та усі елементи стовпця, у котрому знаходиться цей елемент, крім
самго елементу, зробити рівними одиниці. Матриця A та значення b вводяться
користувачем.
Для даного застосування будуть потрібні наступні методи:
 string Console.ReadLine() – читання рядка символів з вхідного потоку.
 double Convert.ToDouble(string) – перетворення рядка символів у число з
плаваючою точкою подвійної точності.
Контрольні питання:
1. Які типи даних називаються примітивними у мові C#? Наведіть приклади.
2. Які типи даних називаються арифметичними у мові C#? Наведіть приклади.
3. Що таке явне та неявне перетворення? Що таке розширююче та зужуюче
перетворення? Коли і як їх використовувати?
4. Які оператори циклу наявні у мові C#?
5. Назвіть основні особливості типу System.String у мові C#. Які операції можна
виконувати з рядками?
6. Назвіть основні особливості одновимірних масивів у мові C#. Які дії можна
виконувати з масивом та його елементами?
7. Назвіть основні особливості двовимірних масивів у мові C#. Чим відрізняються
властивості Length та Rank?
8. Назвіть основні особливості ломаних масивів у мові C#. Як вони зберігаються
пам'яті?

More Related Content

What's hot

Net framework and C# module 17. Serialization
Net framework and  C# module 17. SerializationNet framework and  C# module 17. Serialization
Net framework and C# module 17. SerializationAndrii Hladkyi
 
System programing module 2. Threads
System programing module 2. ThreadsSystem programing module 2. Threads
System programing module 2. ThreadsAndrii Hladkyi
 
Net Framework and C# Module 3 4. Inheritance, Abstractions
Net Framework and C# Module 3 4. Inheritance, AbstractionsNet Framework and C# Module 3 4. Inheritance, Abstractions
Net Framework and C# Module 3 4. Inheritance, AbstractionsAndrii Hladkyi
 
Мови програмування
Мови програмуванняМови програмування
Мови програмуванняAlyona Tribko
 
Net framework і c# module 8
Net framework і c# module 8Net framework і c# module 8
Net framework і c# module 8Andrii Hladkyi
 
Net framework і c# module 17
Net framework і c# module 17Net framework і c# module 17
Net framework і c# module 17Andrii Hladkyi
 
Angular. presentation
Angular. presentationAngular. presentation
Angular. presentationeleksdev
 
.NET Platform. C# Basics
.NET Platform. C# Basics.NET Platform. C# Basics
.NET Platform. C# Basicseleksdev
 
Net framework і c# module 10
Net framework і c# module 10Net framework і c# module 10
Net framework і c# module 10Andrii Hladkyi
 
Net framework і c# module 9
Net framework і c# module 9Net framework і c# module 9
Net framework і c# module 9Andrii Hladkyi
 
NET Framework and C# Module 12.2. Garbage Collector
NET Framework and C# Module 12.2. Garbage CollectorNET Framework and C# Module 12.2. Garbage Collector
NET Framework and C# Module 12.2. Garbage CollectorAndrii Hladkyi
 
Вивчаємо мову програмування Lazarus
Вивчаємо мову програмування LazarusВивчаємо мову програмування Lazarus
Вивчаємо мову програмування LazarusЮлія Артюх
 

What's hot (12)

Net framework and C# module 17. Serialization
Net framework and  C# module 17. SerializationNet framework and  C# module 17. Serialization
Net framework and C# module 17. Serialization
 
System programing module 2. Threads
System programing module 2. ThreadsSystem programing module 2. Threads
System programing module 2. Threads
 
Net Framework and C# Module 3 4. Inheritance, Abstractions
Net Framework and C# Module 3 4. Inheritance, AbstractionsNet Framework and C# Module 3 4. Inheritance, Abstractions
Net Framework and C# Module 3 4. Inheritance, Abstractions
 
Мови програмування
Мови програмуванняМови програмування
Мови програмування
 
Net framework і c# module 8
Net framework і c# module 8Net framework і c# module 8
Net framework і c# module 8
 
Net framework і c# module 17
Net framework і c# module 17Net framework і c# module 17
Net framework і c# module 17
 
Angular. presentation
Angular. presentationAngular. presentation
Angular. presentation
 
.NET Platform. C# Basics
.NET Platform. C# Basics.NET Platform. C# Basics
.NET Platform. C# Basics
 
Net framework і c# module 10
Net framework і c# module 10Net framework і c# module 10
Net framework і c# module 10
 
Net framework і c# module 9
Net framework і c# module 9Net framework і c# module 9
Net framework і c# module 9
 
NET Framework and C# Module 12.2. Garbage Collector
NET Framework and C# Module 12.2. Garbage CollectorNET Framework and C# Module 12.2. Garbage Collector
NET Framework and C# Module 12.2. Garbage Collector
 
Вивчаємо мову програмування Lazarus
Вивчаємо мову програмування LazarusВивчаємо мову програмування Lazarus
Вивчаємо мову програмування Lazarus
 

Similar to лаб. роб. №2 обєкти та сервіси що ними надаються

календарне планування 11 клас. інформатика
календарне планування 11 клас. інформатикакалендарне планування 11 клас. інформатика
календарне планування 11 клас. інформатикаТетяна Шверненко
 
Lecture 06. iOS Programming. Основи Objective-C
Lecture 06. iOS Programming. Основи Objective-CLecture 06. iOS Programming. Основи Objective-C
Lecture 06. iOS Programming. Основи Objective-CMaksym Davydov
 
Основи алгоритмізації та програмування. Лекція 1
Основи алгоритмізації та програмування. Лекція 1Основи алгоритмізації та програмування. Лекція 1
Основи алгоритмізації та програмування. Лекція 1Dmitry Chabanenko
 
Using Metatags in Flex Developing
Using Metatags in Flex DevelopingUsing Metatags in Flex Developing
Using Metatags in Flex DevelopingRoman Shuper
 
Лекція №12 Передача параметрів у функцію.pptx
Лекція №12 Передача параметрів у функцію.pptxЛекція №12 Передача параметрів у функцію.pptx
Лекція №12 Передача параметрів у функцію.pptxssuserf57884
 
опорні схеми
опорні схемиопорні схеми
опорні схемиIrina Tabanets
 
основи програмування 1
основи програмування  1основи програмування  1
основи програмування 1CDN_IF
 
Net framework і c# module 4
Net framework і c# module 4Net framework і c# module 4
Net framework і c# module 4Andrii Hladkyi
 
iPhone Objective-C Development (ukr) (2009)
iPhone Objective-C Development (ukr) (2009)iPhone Objective-C Development (ukr) (2009)
iPhone Objective-C Development (ukr) (2009)Anatoliy Okhotnikov
 
Net framework і c# module 16
Net framework і c# module 16Net framework і c# module 16
Net framework і c# module 16Andrii Hladkyi
 
"Elements of functional programming in C# based on Language-Ext library as an...
"Elements of functional programming in C# based on Language-Ext library as an..."Elements of functional programming in C# based on Language-Ext library as an...
"Elements of functional programming in C# based on Language-Ext library as an...Fwdays
 
[Knowledge Sharing] - Microservices Step-by-Step
[Knowledge Sharing] - Microservices Step-by-Step[Knowledge Sharing] - Microservices Step-by-Step
[Knowledge Sharing] - Microservices Step-by-StepExoft LLC
 
скретч 3 клас
скретч 3 класскретч 3 клас
скретч 3 класTamara Emec
 
Основи програмування
Основи програмуванняОснови програмування
Основи програмуванняHelenSm007
 
мови програмування дроженець, лисица 11 б (2)
мови програмування дроженець, лисица 11 б (2)мови програмування дроженець, лисица 11 б (2)
мови програмування дроженець, лисица 11 б (2)raprap1
 

Similar to лаб. роб. №2 обєкти та сервіси що ними надаються (20)

календарне планування 11 клас. інформатика
календарне планування 11 клас. інформатикакалендарне планування 11 клас. інформатика
календарне планування 11 клас. інформатика
 
Lecture 06. iOS Programming. Основи Objective-C
Lecture 06. iOS Programming. Основи Objective-CLecture 06. iOS Programming. Основи Objective-C
Lecture 06. iOS Programming. Основи Objective-C
 
Конкурсна робота
Конкурсна роботаКонкурсна робота
Конкурсна робота
 
Основи алгоритмізації та програмування. Лекція 1
Основи алгоритмізації та програмування. Лекція 1Основи алгоритмізації та програмування. Лекція 1
Основи алгоритмізації та програмування. Лекція 1
 
Using Metatags in Flex Developing
Using Metatags in Flex DevelopingUsing Metatags in Flex Developing
Using Metatags in Flex Developing
 
Лекція №12 Передача параметрів у функцію.pptx
Лекція №12 Передача параметрів у функцію.pptxЛекція №12 Передача параметрів у функцію.pptx
Лекція №12 Передача параметрів у функцію.pptx
 
опорні схеми
опорні схемиопорні схеми
опорні схеми
 
основи програмування 1
основи програмування  1основи програмування  1
основи програмування 1
 
Net framework і c# module 4
Net framework і c# module 4Net framework і c# module 4
Net framework і c# module 4
 
iPhone Objective-C Development (ukr) (2009)
iPhone Objective-C Development (ukr) (2009)iPhone Objective-C Development (ukr) (2009)
iPhone Objective-C Development (ukr) (2009)
 
Net framework і c# module 16
Net framework і c# module 16Net framework і c# module 16
Net framework і c# module 16
 
"Elements of functional programming in C# based on Language-Ext library as an...
"Elements of functional programming in C# based on Language-Ext library as an..."Elements of functional programming in C# based on Language-Ext library as an...
"Elements of functional programming in C# based on Language-Ext library as an...
 
[Knowledge Sharing] - Microservices Step-by-Step
[Knowledge Sharing] - Microservices Step-by-Step[Knowledge Sharing] - Microservices Step-by-Step
[Knowledge Sharing] - Microservices Step-by-Step
 
m-9-10.pptx
m-9-10.pptxm-9-10.pptx
m-9-10.pptx
 
8
88
8
 
ASP.Net MVC
ASP.Net MVCASP.Net MVC
ASP.Net MVC
 
скретч 3 клас
скретч 3 класскретч 3 клас
скретч 3 клас
 
C#- Лекція 1
C#- Лекція 1C#- Лекція 1
C#- Лекція 1
 
Основи програмування
Основи програмуванняОснови програмування
Основи програмування
 
мови програмування дроженець, лисица 11 б (2)
мови програмування дроженець, лисица 11 б (2)мови програмування дроженець, лисица 11 б (2)
мови програмування дроженець, лисица 11 б (2)
 

More from cit-cit

лекція 5
лекція 5лекція 5
лекція 5cit-cit
 
лаборатор. 10
лаборатор. 10лаборатор. 10
лаборатор. 10cit-cit
 
лекція 19
лекція 19лекція 19
лекція 19cit-cit
 
лекція 18
лекція 18лекція 18
лекція 18cit-cit
 
лекція 17
лекція 17лекція 17
лекція 17cit-cit
 
лекція 16
лекція 16лекція 16
лекція 16cit-cit
 
лекція 12
лекція 12лекція 12
лекція 12cit-cit
 
лекція 11
лекція 11лекція 11
лекція 11cit-cit
 
лекція 10
лекція 10лекція 10
лекція 10cit-cit
 
лаборатор. 15
лаборатор. 15лаборатор. 15
лаборатор. 15cit-cit
 
лаборатор. 14
лаборатор. 14лаборатор. 14
лаборатор. 14cit-cit
 
лаборатор. 13
лаборатор. 13лаборатор. 13
лаборатор. 13cit-cit
 
лаборатор. 12
лаборатор. 12лаборатор. 12
лаборатор. 12cit-cit
 
лаборатор. 11
лаборатор. 11лаборатор. 11
лаборатор. 11cit-cit
 
лаборатор. 9
лаборатор. 9лаборатор. 9
лаборатор. 9cit-cit
 
лаборатор. 8
лаборатор. 8лаборатор. 8
лаборатор. 8cit-cit
 
лаборатор. 7
лаборатор. 7лаборатор. 7
лаборатор. 7cit-cit
 
лекція 15 (pdf.io)
лекція 15 (pdf.io)лекція 15 (pdf.io)
лекція 15 (pdf.io)cit-cit
 
лекція 14 (pdf.io)
лекція 14 (pdf.io)лекція 14 (pdf.io)
лекція 14 (pdf.io)cit-cit
 
лекція 13 (pdf.io)
лекція 13 (pdf.io)лекція 13 (pdf.io)
лекція 13 (pdf.io)cit-cit
 

More from cit-cit (20)

лекція 5
лекція 5лекція 5
лекція 5
 
лаборатор. 10
лаборатор. 10лаборатор. 10
лаборатор. 10
 
лекція 19
лекція 19лекція 19
лекція 19
 
лекція 18
лекція 18лекція 18
лекція 18
 
лекція 17
лекція 17лекція 17
лекція 17
 
лекція 16
лекція 16лекція 16
лекція 16
 
лекція 12
лекція 12лекція 12
лекція 12
 
лекція 11
лекція 11лекція 11
лекція 11
 
лекція 10
лекція 10лекція 10
лекція 10
 
лаборатор. 15
лаборатор. 15лаборатор. 15
лаборатор. 15
 
лаборатор. 14
лаборатор. 14лаборатор. 14
лаборатор. 14
 
лаборатор. 13
лаборатор. 13лаборатор. 13
лаборатор. 13
 
лаборатор. 12
лаборатор. 12лаборатор. 12
лаборатор. 12
 
лаборатор. 11
лаборатор. 11лаборатор. 11
лаборатор. 11
 
лаборатор. 9
лаборатор. 9лаборатор. 9
лаборатор. 9
 
лаборатор. 8
лаборатор. 8лаборатор. 8
лаборатор. 8
 
лаборатор. 7
лаборатор. 7лаборатор. 7
лаборатор. 7
 
лекція 15 (pdf.io)
лекція 15 (pdf.io)лекція 15 (pdf.io)
лекція 15 (pdf.io)
 
лекція 14 (pdf.io)
лекція 14 (pdf.io)лекція 14 (pdf.io)
лекція 14 (pdf.io)
 
лекція 13 (pdf.io)
лекція 13 (pdf.io)лекція 13 (pdf.io)
лекція 13 (pdf.io)
 

лаб. роб. №2 обєкти та сервіси що ними надаються

  • 1. Крос-платформне програмування Лабораторна робота №2. Об’єкти та сервіси, що ними надаються. Стандартні класи мови C#. Мета роботи: набути навичок з розробки консольних застосувань у середовищі Microsoft Visual Studio та навчитися використовувати об’єкти та сервіси, що ними надаються. Зміст  Загальні відомості  Типи даних C#.  Вирази та оператори C#.  Класи та методи в C#.  Порядок виконання роботи  Варіанти індивідуальних завдань.  Контрольні питання Загальні відомості Microsoft Visual Studio NET – це інтегроване середовище розробки для створення, документування, запуску та налагодження програм, написаних на мовах .NET. Ця середовище розробки є відкритим мовним середовищем. Поряд з мовами програмування, включеними в середовище з самого спочатку – C++, C#, J#, Visual Basic, в нього можна додавати будь-які мови програмування, компілятори яких створюються сторонніми розробниками. Необхідною умовою для включення мов в середовище Visual Studio .NET є використання єдиного каркаса – Платформи .Net Framework. Платформа .NET Framework дозволяє: • легко використовувати компоненти, розроблені на різних мовах; • розробляти єдину програму з декількох частин на різних мовах; Для розробки застосувань у Visual Studio .NET використовуються проекти. Проект (Project) – це основна одиниця, з якою має справу розробник. Спочатку він повинен вибрати тип проекту, після чого Visual Studio створює каркас проекту відповідно до вибраним типом. Проект складається з класів, зібраних в одному або декількох просторах імен. Простори імен (name space) дозволяють структурувати проекти, що містять велику кількість класів, об'єднуючи в одну групу близькі класи. Кілька проектів можуть об'єднуватися в рішення (Solution), яке також може включати ресурси, необхідні цим проектам. З точки зору розробника кінцевим результатом його роботи, одержуваним після компіляції вихідного програмного коду, є рішення, а з точки зору загальномовного середовища виконання CLR (Common Language Runtime) – збірка (assembly), що містить PE-файл, тобто модуль у форматі виконуваного файлу PE (Portable Executable) для 32- розрядної ОС Windows, або DLL-файл (Dynamic Link Library). Visual Studio .NET містить різноманітні типи проектів. Для ознайомлення з основами мови С# у цій лабораторній роботі будуть використані консольні застосування без залучення звичних у Windows можливостей користувацького інтерфейсу. У C# немає глобальних функцій, тому за промовчанням при створенні консольного застосування оголошується клас програм, який містить функцію статичного Main(), що служить початковою точкою виконання програми. Функція Main()може бути оголошена без параметрів або з параметром, що представляє собою масив рядків. Також програма на C# може містити коментарі та атрибути. У C# використовуються однорядкові та багаторядкові коментарі. Однорядковий коментар починається з пари символів "//", і весь текст до кінця рядка є коментарем. Багаторядковий коментар починається з пари символів /* і закінчується */. Атрибут – засіб додавання до елементів програмного коду декларативної інформації. Призначення атрибутів: організація взаємодії між програмними модулями, додаткова інформація про умови виконання коду, управління сериалізацією (тобто правила збереження
  • 2. інформації), налагодження тощо. Атрибути можуть бути як стандартними, так і заданими користувачем. Стандартні атрибути використовуються CLR і впливають на те, як буде виконуватися проект. Атрибут розміщується у дужках "[]". Типи даних C# Стандарт мови C++ включає наступний набір фундаментальних типів:  Логічний тип (bool).  Символьний тип (char).  Цілі типи. Вони можуть відрізнятися розміром: short, int, long, а також можуть бути знаковими (signed) або беззнаковими (unsigned).  Типи з плаваючою крапкою. Вони також можуть відрізнятися розмірами: float, double та long double. Тип void вказує на відсутність інформації. До конструйованих типів відносяться наступні:  Показчики (наприклад, char*).  Посилання (наприклад, char& ).  Масиви (наприклад, char[] ). Також мова дозволяє розробнику конструювати власні типи:  Перерахування (enum).  Структури (struct).  Класи. У мові C# усі типи можно розглядати ще в одному сенсі, разділивши їх на чотири категорії:  Типи-значення (value).  Типи-посилання (reference).  Показчики (pointer).  Тип void. Значення для типу-посилання задає посилання на область пам'яті у "купі" (heap), де розташований відповідний об'єкт. Для типу-значення значенням є власне дані, а пам'ять для них виділяється у стеці. Логічний, арифметичний, структури, перерахування належать до типів-значень, а масиви, рядки та класи – до типів-посилань. І типи-посилання, і звичайні типи є похідними від базового класу object. У тих випадках, коли звичайний тип повинен вести себе як об'єкт, створюється оболонка (wrapper), яку можна розглядати як об'єкт типу-посилання, поміщений до купи, і в неї копіюється значення змінної звичайного типу. Оболонка автоматично позначається таким чином, що система знає, яке значення вона містить. Цей процес називется упаковкою (boxing), а зворотній процес – розпаковуванням (unboxing). Упаковка відбувається автоматично, для цього потрібно лише присвоїти значення звичайного типу змінній типу object. Упаковка та розпакування дозволяють обробляти будь- який тип як об'єкт. Наприклад, у виразі 7.ToString(); ціле число 7 упаковується шляхом виклику функції Int32.ToString (). Масиви в C# можуть бути багатовимірними (multidimensional) або невирівняними (jagged). Більш складні структури даних такі, як стек і хеш-таблиця, визначені в просторі імен System.Collections. Вирази та оператори C# Вирази будуються з операндів – констант, змінних, функцій, – об'єднаних знаками операцій і дужками. При обчисленні виразу визначається його значення і тип. Нижче у таблиці наведено перелік операцій C#. Категорія операцій Операції Арифметичні + – * / % Логічні ( boolean та побітні) & | ^ ! ~ && || Строкові +
  • 3. Інкремент та декремент ++ -- Зсув >> << Порівняння == != < > <= >= Присвоювання = += –= *= /= %= &= |= ^= <<= >>= Звернення до члена класу . Індексація [] Приведення типів (Cast) () Умова ?: Створення об’єкта new() Інформація про тип is sizeof typeof Керування виключеннями checked unchecked Ім'я та тип змінної задаються при її оголошенні і залишаються незмінними протягом всього часу її життя. Особливістю мови C# є вимога обов'язкової ініціалізації змінної до початку її використання. Спроба використання неініціалізуваної змінної призведе до помилок, що виявиться ще на етапі компіляції. Щодо використовуваних виразів та операторам C# схожий на C++. Так в програмах на C# використовуються наступні оператори:  Оператор присвоювання ( = )  Складений оператор ( {} )  Оператори вибору: if-else та switch  Оператори циклу: for, while, оператор  Оператори break та continue  Оператор return  Оператор переходу goto Крім того, введені кілька нових інструкцій. Наприклад, оператор foreach дозволяє отримати доступ до всіх елементів масиву або колекції по черзі, в порядку зростання індексів. Його синтаксис: foreach (тип ідентифікатор in контейнер) оператор У C# процедури та функції існують тільки як методи деякого класу, вони не визначені поза класом. Роль бібліотек процедур і функцій виконують бібліотеки класів. Доступна у мові C# бібліотека класів FCL (Framework Class Library) істотно розширює можливості мови. Класи та методи у C# У Visual Studio .Net, і зокрема у C#, будь-яка програмна система розглядається як сукупність класів, об'єднаних у проекти, простори імен, рішення. Опис класу має наступний синтаксис: [атрибути][модифікатори]class ім’я_класу[:список_батьків] {тіло_класу} У тілі класу можуть бути оголошені:  константи;  поля;  конструктори та деструктори;  методи;  події;  делегати;  класи (структури, інтерфейси, перерахування). Поля класу синтаксично є звичайними змінними (об'єктами) мови. Їх опис задовольняє звичайним правилам оголошення змінних. Поля характеризують властивості об'єктів класу. Методи класу синтаксично є звичайними процедурами і функціями мови. Методи містять описи операцій, доступних над об'єктами класу. Методи, так звані властивості, є спеціальною синтаксичною конструкцією, призначеною для забезпечення ефективної роботи з класами.
  • 4. Конструктор представляє собою спеціальний метод класу, що дозволяє створювати об'єкти класу. Його ім'я повинне збігатися з ім'ям класу. Якщо розробник не визначає конструктор класу, то до класу автоматично додається конструктор за промовчуванням – конструктор без аргументів. Делегат в C# є описом спеціального випадку класу і задає визначення функціонального типу (класу) даних. Екземплярами класу є функції. Кожен делегат описує безліч функцій із заданою сигнатурою. Кожна функція (метод), сигнатура якого збігається з сигнатурою делегата, може розглядатися як екземпляр класу, заданого делегатом. Синтаксис оголошення делегата має наступний вигляд: [<специфікатор доступу>] delegate <тип результату> <ім’я класу> (<список аргументів>); Порядок виконання роботи Для практичного вивчення прикладів в даній лабораторній роботі необхідно встановити пакет Microsoft Visual Studio (версії не раніше 2003). У залежності від встановленої версії можливі несуттєві відмінності в інтерфейсі середовища при створенні та роботі з проектом консольного застосування. 1. Створення проекту консольного застосування. Перший крок при розробці будь-якого застосування – створення проекту. Для цього виберіть пункт меню File|New Gt Project, щоб відкрити панель створення нового проекту наступного вигляду: 2. Зі списку запронованих шаблонів необхідно вибрати проект консольного застосування (Console Application). 3. Після створення проекту повинно з'явитися наступне вікно, що містить текст програми Program.cs на мові C#:
  • 5. У даній програмі оголошення using System дає можливість посилатися на класи, які знаходяться в просторі імен System, тому їх можна використовувати, не додаючи "System." перед ім'ям типу. Простір імен System містить багато корисних класів. Одним з них є клас Console, який використовується при створенні консольних застосувань. Клас проекту Program розміщений в просторі імен, що має за промовчанням те саме ім'я (HelloWorldDemo), що і рішення, яке містить в даному прикладі єдиний проект. Оскільки в C# немає глобальних функцій, тому в даному прикладі оголошується клас Program, який містить функцію static Main(), що служить точкою входу у програму. Функція Main може бути оголошена без параметрів або з параметром, який є масивом рядків. Оскільки функція Main є точкою входу, вона повинна бути статичною (static) функцією, тобто вона не пов'язана з конкретним об'єктом класу, в якому оголошена. 4. Додамо всередині функціїї Main() наступний рядок: Console.WriteLine("Hello world!"); який використовує метод WriteLine класу Console для виводу рядка "Hello world!". 5. Компіляція проекту. Для цього необхідно вибрати пункт меню Build|Build Ім’я проекта або натиснути комбінацію клавіш <Shift+F6>. За наявності повідомлень про помилки необхідно їх виправити та скомпілювати проект знову. 6. Запуск застосування. Для запуску можна вибрати або пункт меню (Debug|Start Without Debugging), або натиснути комбінацію клавіш <Ctrl+F5>. В результаті отримаємо наступне консольне вікно:
  • 6. 7. Ускладнимо застосування. Для цього додамо до функції Main наступний код для виведення у консольне вікно таблиці множення цілих чисел: static void Main(string[] args) { int[] ArInt = { 0, 9, 1, 8, 2, 7, 3, 6, 4, 5 }; Console.WriteLine("Array contains elements:"); foreach(int item in ArInt) Console.Write("{0} ", item); Console.WriteLine(""); } Після повторення кроків 5-6 одержимо наступне вікно: 8. Сортування елементів масиву Всі масиви є нащадками класу System.Array, який у свою чергу успадковує ряд інтерфейсів: ICloneable, IList, ICollection, IEnumerable, а, отже, реалізує усі їхні методи та властивості. Крім того, клас Array має велику кількість власних методів і властивостей. Завдяки спадкуванню від класу System.Array, для масивів визначені такі вбудовані методи копіювання, пошуку, звернення, сортування (Sort – сортування масиву, Reverse –
  • 7. сортування одновимірного масиву у зворотному порядку). Масиви можна розглядати також як колекції і використовувати цикл foreach для перебору його елементів. Додамо до функції наступний код: // Сортування елементів Array.Sort(ArInt); Console.Write("n"); Console.WriteLine("Sorted array contains elements:"); for(int i = 0; i <= 9; i++) { for(int j = 0; j <= 9; j++) Console.Write( ArInt[i]*ArInt[j] + "t"); Console.Write("n"); } Console.WriteLine(""); Після повторення кроків 5-6 одержимо наступне вікно: Завдання для самостійної роботи 1. Написати на C# консольне застосування, що реалізує функції відповідно до варіанту індивідуального завдання. 2. При введенні вхідних даних з клавіатури перевіряти їх на допустимість значень. Наприклад, якщо вводиться індекс матриці, перевіряти, що він більше за одиницю. Допустимі значення вхідних даних описати у звіті. Проіюструвати скрін-шотами роботу програми на допустимих та недопустимих значеннях вхідних даних (повідомлення про помилки або невірно введені дані). Зміст звіту: 1. Постановка завдання для індивідуального варіанту. 2. Список і призначення використовуваних змінних, діапазони їх допустимих значень. 3. Текст програми. 4. Протокол роботи програми (на допустимих та недопустимих значеннях вхідних даних). 5. Висновки. Варіанти індивідуальних завдань № ва- ріанту Зміст завдання 1 1. Реалізувати функцію Copies(s, s1, n) копіювання рядка s у рядок s1 n раз. 2. Визначити номер рядка і стовпця елемента прямокутної матриці  NMA  , що є найближчим до числа p . Матриця  NMA  і число вводяться користувачем. 2 1. Реалізувати функцію Words(s) для підрахунку слів в рядку s ("слово" – послідовність символів, що не містить пробілів).
  • 8. 2. Знайти суму елементів прямокутної матриці  NMA  , що знаходяться в обраному рядку j цієї матриці. Матриця  NMA  і номер рядка j вводяться користувачем. 3 1. Реалізувати функцію центрування Center(s1, s2, l), що розміщує рядок s1 у середині рядка s2 довжиною l. 2. Сформувати вектор  mdddD ,,, 21  , кожний елемент якого дорівнює середньому арифметичному значень елементів рядків прямокутної матриці  NMA  . Матриця A вводиться користувачем. 4 1. Реалізувати функцію Left(s ,l) для вирівнювання рядка s по лівому краю до довжини l. 2. Знайти матрицю, зворотну заданій квадратній матриці  NNA  за формулою         ija A 1 , де 0 A – визначник матриці  NNA  . Матриця A вводиться користувачем. 5 1. Реалізувати функцію Right(s, l) для вирівнювання рядка s по правому краю до довжини l. 2. Обчислити елементи вектора  mgggG ,,, 21  , як добуток елементів відповідних рядків заданої матриці A розмірністю NM  . Матриця A вводиться користувачем. 6 1. Реалізувати функцію Reverse(s) для зміни порядку символів у рядку s на протилежний. 2. Розрахувати елементи матриці  MKC  , що є добутком матриць  MNA  і  NKB  , за формулою   N l jlliij bac 1 . Матриці A та B вводяться користувачем. 7 1. Реалізувати функцію WordIndex(s, n) визначення позиції початку в рядку s слова з номером n ("слово" – послідовність символів, що не містить пробілів). 2. Розрахувати елементи матриці  NNC  за формулою   BATrC  , де     N i iiaATr 1 – слід матриці A ,  NNB  – вихідна матриця. Матриці A та B вводяться користувачем. 8 1. Реалізувати функцію WordLength(s, n) визначення довжини слова з номером n в рядку s ("слово" – послідовність символів, що не містить пробілів). 2. Підрахувати кількість нульових елементів матриці  MNA  , що лежать на діагоналях і надрукувати їх індекси. Матриця A вводиться користувачем. 9 1. Реалізувати функцію SubWord(s, n, l) виділення з рядка s l-слів, починаючи зі слова з номером n ("слово" – послідовність символів, що не містить пробілів). 2. Обчислити елементи матриці  MNA  за елементами вихідної матриці  MNB  , використовуючи формулу 2 ijij ba  . Головну і побічну діагоналі залишити незмінними. Матриця B вводиться користувачем. 10 1. Реалізувати функцію StrSpn(s, s1) визначення довжини тієї частини рядка s, яка містить тільки символи з рядка s1. 2. Перетворити задану матрицю  MNA  в строго трикутну матрицю. Матриця називається строго трикутною, якщо 0ija для ji  . 11 1. Реалізувати функцію StrCSpn(s, s1) визначення довжини тієї частини рядка s, яка не містить символи з рядка s1. 2. Сформувати вектор  nxxxX ,,, 21  , кожний елемент якого визначається як мінімальний елемент відповідного стовпця вихідної матриці
  • 9.  MNA  . Матриця A вводиться користувачем. 12 1. Реалізувати функцію Compress(s, t), призначеної для заміни в рядку s множинних входжень символу t на один символ t. 2. Перетворити вихідну матрицю  MNA  так, щоб останній елемент кожного рядка був замінений сумою попередніх елементів того ж рядка. Матриця A вводиться користувачем. 13 1. Реалізувати функцію StrType(s) для визначення типу рядка s (можливі типи – рядок літер, десяткове число, шістнадцяткове число, двійкове число тощо). 2. Отримати вектор  msssS ,,, 21  , кожний елемент якого дорівнює сумі елементів відповідного рядка заданої матриці  MNA  . Матриця A вводиться користувачем. 14 1. Реалізувати функцію Translate(s, s1, s2), призначеної для перекладу символів рядка s, які входять в алфавіт s1, у символи, що входять до алфавіту s2. 2. Сформувати вектор  nxxxX ,,, 21  , кожний елемент якого визначається як добуток елементів відповідних стовпців вихідної матриці  MNA  . Матриця A вводиться користувачем. 15 1. Реалізувати функцію Compul(s1, s2) для порівняння рядків s1 та s2 з ігноруванням відмінностей у регістрах. 2. Перетворити задану матрицю  MNA  таким чином, щоб перший елемент кожного стовпця був замінений добутком наступних елементів того ж стовпця. Матриця A вводиться користувачем. 16 1. Реалізувати функцію Concat (s1, s2) для конкатенації рядків s1 та s2. 2. Перетворити матрицю  MNA  так, щоб усі елементи, розташовані нижче головної діагоналі, були зменшені вдвічі, а елементи, розташовані вище головної діагоналі, – збільшено вдвічі. Матриця A вводиться користувачем 17 1. Реалізувати функцію Parse(s, t) для поділу рядка s на дві частини: до першого входження символу t та після нього. 2. Визначити кількість негативних елементів у лівій і правій чвертях заданої матриці  MNA  . Матриця A вводиться користувачем. 18 1. Реалізувати функцію Delete(s,n,l) для видалення з рядка s підрядка, починаючи з позиції n, довжиною l. 2. Знайти співвідношення мінімального та максимального елементів матриці  MNA  . Матриця A вводиться користувачем. 19 1. Реалізувати функцію Insert(s,s1,n) для вставки у рядок s підрядка s1, починаючи з позиції n. 2. Транспонувати задану матрицю  MNA  . Операція транспонування полягає у тому, що рядки і стовпці у вихідній матриці міняються місцями. Наприклад,                   642 531 65 43 21 T AA . Матриця A вводиться користувачем. 20 1. Реалізувати функцію Pos(s,s1) для пошуку першого входження підрядка s1 у рядок s. 2. Сформувати вектор  myyyY ,,, 21  , кожний елемент якого визначається як максимальний елемент відповідного рядка вихідної матриці  MNA  . Матриця A вводиться користувачем. 21 1. Реалізувати функцію LastPos(s,s1) для пошуку останнього входження підрядка s1 у рядок s. 2. У прямокутній матриці  MNA  поміняти місцями мінімальний елемент, розташований на головній діагоналі, і максимальний елемент, розташований на
  • 10. побічній діагоналі. Матриця A вводиться користувачем. 22 1. Реалізувати функцію Overlay(s,s1,n) для перекриття частини рядка s, починаючи з позиції n, рядком s1. 2. У заданій матриці  MNA  знайти нульовий елемент з найбільшим значенням індексу i та обнулити усі елементи стовпця, в якому знаходиться цей елемент. Якщо в матриці немає нульових елементів, вивести відповідне повідомлення. Матриця A вводиться користувачем. 23 1. Реалізувати функцію Replace(s,s1,s2) для заміни в рядку s комбінації символів s1 на s2 2. Знайти відношення кількості позитивних елементів до кількості негативних елементів заданої матриці  MNA  . Якщо матриця не містить негативних елементів, вивести відповідне повідомлення. Матриця A вводиться користувачем. 24 1. Реалізувати функцію Trim(s) для видалення пробілів на початку та наприкінці рядка s. 2. У кожному рядку матриці  MNA  поміняти місцями елементи головної та побічної діагоналей. Матриця A вводиться користувачем. 25 1. Реалізувати функцію StrSet(s,n,l,t) для установки l символів рядка s, починаючи з позиції n, в значення t. 2. Для квадратної матриці  NNB  знайти відношення суми елементів, розташованих вище головної діагоналі, до суми елементів, розташованих нижче головної діагоналі. Якщо остання сума дорівнює нулю, вивести відповідне повідомлення. Матриця B вводиться користувачем. 26 1. Реалізувати функцію Space(s,l) для доведення рядка s до довжини l шляхом вставки пробілів між словами ("слово" – послідовність символів, що не містить пробілів). 2. Визначити оцінки дисперсії для кожного рядка заданої матриці  MNQ  за формулою   1 2     m qq D m j iij i , де m q q m j ij i   1 . Матриця Q вводиться користувачем. 27 1. Реалізувати функцію Findwords(s,s1) для пошуку входження в рядок s заданої фрази (послідовності слів) s1 ("слово" – послідовність символів, що не містить пробілів). 2. Отримати масив  nxxxX ,,, 21  , кожен елемент якого дорівнює середньому арифметичному значень елементів відповідного стовпця матриці  MNA  . Матриця A вводиться користувачем. 28 1. Реалізувати функцію Word(s) для виділення першого слова з рядка s ("слово" – послідовність символів, що не містить пробілів). 2. Перетворити задану прямокутну матрицю  MNA  в матрицю у рядок Z розмірністю mn , розмістивши послідовно усі стовпці матриці. Наприклад,  212431 24 13 21              ZA . Матриця A вводиться користувачем. 29 1. Реалізувати функцію Exchange(s, s1, s2), призначеної для заміни в рядку s усіх входжень підрядка s1 на підрядок s2. 2. У матриці  MNA  знайти суму позитивних елементів, розташованих у її верхній і нижній чвертях. Матриця A вводиться користувачем. 30 1. Реалізувати функцію StrDel(s,s1) для видалення з рядка s усіх входжень підрядка s1
  • 11. 2. У заданій матриці  MNA  знайти елемент baij  , з найбільшим значенням індексу j та усі елементи стовпця, у котрому знаходиться цей елемент, крім самго елементу, зробити рівними одиниці. Матриця A та значення b вводяться користувачем. Для даного застосування будуть потрібні наступні методи:  string Console.ReadLine() – читання рядка символів з вхідного потоку.  double Convert.ToDouble(string) – перетворення рядка символів у число з плаваючою точкою подвійної точності. Контрольні питання: 1. Які типи даних називаються примітивними у мові C#? Наведіть приклади. 2. Які типи даних називаються арифметичними у мові C#? Наведіть приклади. 3. Що таке явне та неявне перетворення? Що таке розширююче та зужуюче перетворення? Коли і як їх використовувати? 4. Які оператори циклу наявні у мові C#? 5. Назвіть основні особливості типу System.String у мові C#. Які операції можна виконувати з рядками? 6. Назвіть основні особливості одновимірних масивів у мові C#. Які дії можна виконувати з масивом та його елементами? 7. Назвіть основні особливості двовимірних масивів у мові C#. Чим відрізняються властивості Length та Rank? 8. Назвіть основні особливості ломаних масивів у мові C#. Як вони зберігаються пам'яті?