Добавил:
Допоможу чим зможу) Відсигнальте якщо знайшли шось корисне) Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
73
Добавлен:
10.03.2018
Размер:
844.61 Кб
Скачать

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”

УСПАДКУВАННЯ. ІЄРАРХІЯ КЛАСІВ. ПОБУДОВА ІЄРАРХІЇ

КЛАСІВ

ІНСТРУКЦІЯ ДО ЛАБОРАТОРНОЇ РОБОТИ № 6

З КУРСІВ «ТЕХНОЛОГІЇ ПРОГРАМУВАННЯ, Ч. 2»

для студентів спеціальності 125 «Кібербезпека»

Львів – 2017

Успадкування. Ієрархія класів. Побудова ієрархії класів: інструкція до лабораторної роботи №6 з курсів «Технології програмування, част.2» для студентів спеціальності 125 «Кібербезпека». / Укл.: В.І. Отенко, А.І. Партика - Львів: НУЛП, 2017. - 16с.

Укладачі: В.І. Отенко, к.т.н., доцент,

А.І. Партика, к.т.н., асистент.

2

Мета роботи - вивчити інструкції мови C#. Навчитися складати та відлагоджувати розрахункові програми з розгалуженими та циклічними структурами.

1. ОСНОВНІ ТЕОРЕТИЧНІ ВІДОМОСТІ

1.1. Інструкція if

Повний формат запису інструкції if має наступний вигляд:

іf (умова) інструкція; else інструкція;

Тут під елементом інструкція розуміється одна інструкція мови С#. Частина еlsе є необов'язковою. Замість елемента інструкція може бути використаний блок інструкцій. В цьому випадку формат запису if-інструкції приймає такий вигляд:

if (умова)

{

послідовність інструкцій

}

else

{

послідовність інструкцій

}

Якщо елемент умова, який представляє собою умовний вираз, при обчисленні дасть значення ІСТИНА, буде виконана if-інструкція; в протилежному випадку — else-інструкція (якщо така існує). Обидві інструкції ніколи не виконуються. Умовний вираз, який керує виконанням if-інструкції повинен мати тип bool.

1.2. Вкладені if-інструкції

Вкладені if-інструкції утворюються в тому випадку, якщо як елемент інструкція використовується інша if-інструкція. Вкладені if-інструкції дуже популярні в програмуванні. Головне пам'ятати, що else-інструкція завжди відноситься до найближчої if-інструкції, яка знаходиться всередині того ж програмного блоку, але ще не зв'язана з будь-якою іншою else-інструкцією. Наприклад:

if (i == 10)

{

if (j < 20) а = b; if (k > 100) с = d;

else а = с; // Ця else-інструкція

// відноситься до if(k > 100).

3

}

else а = d; // Ця else-інструкція відноситься до if (i == 10).

Як стверджується в коментарях, остання else-інструкція не пов'язана з інструкцією if (j < 20), оскільки вони не знаходяться в одному блоці (не дивлячись на те що ця if-інструкція — найближча, яка не має при собі "elseпари"). Внутрішня else-інструкція пов'язана з інструкцією if (k > 100), оскільки вона найближча і знаходиться всередині того ж блоку.

1.3. Конструкція if - еlsе - if

Дуже поширеною в програмуванні конструкцією, в основі якої лежить вкладена if-інструкція, є конструкція наступного вигляду: if-else-if. Її можна представити в наступному вигляді:

if (умова) інструкція; else if (умова)

інструкція; else if (умова)

інструкція; else

інструкція;

Тут під елементом умова розуміється умовний вираз. Умовні вирази обчислюються зверху вниз. Як тільки в якій-небудь гілці виявиться істинний результат, буде виконана інструкція, пов'язана з цією гілкою, а вся решта частина конструкції опускається. Якщо виявилося, що жодна з умов не є істинною, буде виконана остання else-інструкція (можна вважати, що вона виконує роль умови, яка діє за умовчанням). Якщо остання else-інструкція не задана, а всі решта виявилися помилковими, то взагалі ніяка дія не буде виконана.

1.4. Інструкція switсh

Другою інструкцією вибору є switch. Інструкція switch забезпечує багатонаправлене розгалуження. Вона дозволяє проводити перевірку для багатьох значень змінної за один прохід замість того щоб перевіряти лише одну умову як у випадку з оператором if. Хоча багатонаправлене тестування можна реалізувати за допомогою послідовності вкладених if-інструкцій, для багатьох ситуацій інструкція switch виявляється більш ефективним розв’язком поставленої задачі. Вона працює наступним чином. Значення виразу послідовно порівнюється з константами із заданого списку. При виявленні збігу для однієї з умов порівняння виконується послідовність інструкцій, пов'язана з цією умовою.

Загальний формат запису інструкції switch такий:

4

switch (вираз)

{

case константа1: послідовність інструкцій; break;

case константа2: послідовність інструкцій; break;

case константаЗ: послідовність інструкцій; break;

default: послідовність інструкцій break;

}

Елемент вираз інструкції switch повинен мати цілочисельний тип (наприклад, char, byte, short або int ) або тип string. Вирази, що мають тип з плаваючою крапкою, не дозволені. Дуже часто в якості керуючого switchвиразу використовується просто змінна.

case-константи повинні бути літералами, тип яких сумісний з типом заданого виразу. При цьому ніякі дві case-константи в одній switch-інструкції не можуть мати ідентичних значень.

Кожна case конструкція повинна закінчуватись оператором break (або якою-небудь іншою командою виходу, наприклад return). Оператор break передає керування за межі конструкції switch.

Послідовність інструкцій default-гілки виконується в тому випадку, якщо жодна із заданих case-констант не співпаде з результатом обчислення switchвиразу. Гілка default необов'язкова. Якщо вона відсутня, то при неспівпадінні результату виразу не буде виконана жодна дія жодної з case-констант. Якщо такий збіг все ж таки буде, то виконуватимуться інструкції відповідні даній case-гілці до тих пір, поки не зустрінеться інструкція break.

Оператори switch не мають обмежень на кількість розділів case, які будуть в них міститись.

1.5. Цикли

Цикл – це частина коду, в якому оператори виконуються по декілька разів. Такий спосіб в багатьох випадках є дуже зручним, оскільки дозволяє повторювати необхідні дії стільки разів, скільки потрібно, без необхідності переписувати відповідний код таку ж кількість разів.

1.5.1. Цикл for

Він відноситься до того типу циклів, які виконуються наперед задану кількість разів і самі відповідають за організацію лічильника циклу.

Загальний формат запису циклу for для повторного виконання однієї інструкції має наступний вигляд:

for(ініціалізація; умова; ітерація) інструкція;

5

Якщо цикл for призначений для повторного виконання програмного блоку, то його загальний формат виглядає так:

for(ініціалізація; умова; ітерація)

{

послідовність інструкцій;

}

Елемент ініціалізація звичайно являє собою інструкцію присвоєння яка встановлює керуючу змінну циклу рівну початковому значенню.

Ця змінна діє як лічильник, який керує роботою циклу.

Елемент умова являє собою вираз типу bool, в якому тестується значення керуючої змінної циклу. Результат цього тестування визначає виконається цикл for ще раз або ні. Елемент ітерація – це вираз, який визначає, як змінюється значення керуючої змінної циклу після кожної ітерації. Зверніть увагу на те, що всі ці елементи циклу for повинні відділятися крапкою з комою. Цикл for буде виконуватися до тих пір, поки обчислення елемента умова дає істинний результат. Як тільки умова стане помилковою, виконання програми продовжиться з інструкції, наступної за циклом for.

Керуюча змінна циклу for може змінюватися як з додатнім, так і з від’ємним приростом, причому величина цього приросту також може бути довільною.

Важливо розуміти, що умовний вираз завжди тестується на початку виконання циклу for. Це значить, що якщо перша ж перевірка умови дасть значення Хибність код тіла циклу не виконається жодного разу. Ось приклад:

for(а=15; а < 10; а++)

х += а; // Ця інструкція не буде виконана зовсім.

Цей цикл ніколи не виконається, оскільки вже при вході в нього значення його керуючої змінної а більше десяти. Це робить умовний вираз (а < 10) помилковим із самого початку. Тому навіть одна ітерація цього циклу не буде виконана.

Цикл for особливо корисний в тих випадках, коли відома кількість його повторень.

Можливі наступні варіанти на тему циклу for

Використання декількох керуючих змінних циклу

Для управління циклом for можна використовувати дві або більше змінних. У цьому випадку інструкції ініціалізації і ітерації для кожної з цих змінних відокремлюються комами. Наприклад:

// Використання ком в циклі for. using System;

class Comma

{

6

public static void Main()

{

int i, j ;

for(i=0, j=10; i < j; i++, j--)

Console.WriteLine("i і j: " + i + " " + j);

}

}

От як виглядають результати виконання цієї програми:

i

і

j:

0

10

i

і

j:

1

9

i

і

j:

2

8

i

і

j:

3

7

i

і

j:

4

6

Тут комами відділяються дві інструкції ініціалізації і два ітераційних вирази. При вході в цикл ініціалізувалися обидві змінні — i і j . Після виконання кожної ітерації циклу змінна i інкрементується, а змінна j декрементується. Використання декількох керуючих змінних в циклі іноді дозволяє спростити алгоритми. В розділах ініціалізації і ітерації циклу for можна використовувати будь-яку кількість інструкцій, але зазвичай їхнє число не перевищує дві.

Умовний вираз. Умовним виразом, який управляє циклом for, може бути довільний допустимий вираз, що генерує результат типу bool.

1.5.2. Цикл whilе

Цикл while є найбільш фундаментальним. Загальна форма циклу while має наступний вигляд:

whilе (умова) інструкція;

Тут під елементом інструкція розуміється або одиночна інструкція, або блок інструкцій. Роботою циклу управляє елемент умова, який представляє собою будь-який допустимий вираз типу bool. Елемент інструкція виконується до тих пір, поки умовний вираз повертає значення ІСТИНА. Як тільки ця умова стає помилковою, управління передається інструкції, яка слідує за цим циклом. Якщо при першому звертанні до циклу умова хибна, то тіло циклу не виконується жодного разу

1.5.3. Цикл do-whilе

Третім циклом в С# є цикл do-while. На відміну від циклів for і while в яких умова перевіряється при вході, цикл do-while перевіряє умову при виході з циклу. Це значить, що цикл do-while завжди виконується хоча б один раз.

Його загальний формат має наступний вигляд:

7

do

{

послідовність інструкцій;

}

while (умова);

Не дивлячись на те що фігурні дужки необов'язкові, якщо елемент інструкції складається тільки з однієї інструкції, вони часто використовуються для покращення читабельності конструкції do-while, не припускаючи тим самим плутанину з циклом while.

Цикл do-while виконується до тих пір, поки залишається істинним елемент умова який представляє собою умовний вираз.

1.5.4. Вихід з циклу

Використання інструкції break для виходу з циклу

За допомогою інструкції break можна організувати негайний вихід з циклу опустивши виконання коду, що залишився в його тілі, і перевірку умовного виразу.

При виявленні всередині циклу інструкції break цикл завершується, а управління передається інструкції, наступній після циклу.

Використання інструкції continue

Крім засобу "дострокового" виходу з циклу, існує засіб "дострокового" виходу з поточної його ітерації. Цим засобом є інструкція continue. Вона примусово виконує перехід до наступної ітерації, опускаючи виконання коду що залишився, в поточній. Інструкцію continue можна розцінювати як доповнення до більш "радикальної" інструкції break.

Інструкція rеturn

Інструкція return забезпечує повернення з методу. Її можна використовувати для повернення методом значення.

1.6. Наслідування

Наслідування виконує ряд важливих функцій. Основна з них – це можливість повторного використання, тобто немає потреби починати кожен проект з нуля, якщо можна скористатися готовими програмними компонентами. Старі класи можуть бути адаптовані для використання в нових програмах без внесення в них кардинальних змін. Існуючий клас успадковується – з розширенням його можливостей – новим підкласом, який містить всі необхідні добавлення та зміни. Якщо базовий клас написаний кимнебудь іншим, то у вас немає можливості вносити в нього зміни, а наслідування виявляється єдиним способом його використання.

Приклад програми, в якому продемонстровано як клас SubClass наслідується від класу BaseClass.

8

using system;

namespace InteritanceExample

{

public class BaseClass

{

public int nDataMember; public void SomeMethod()

{

Console.WriteLine(“SomeMethod()”);

}

}

public class SubClass : BaseClass

{

public void SomeOtherMethod()

{

Console.WriteLine(“SomeOtherMethod()”);

}

}

public class Programm

{

public static void Main(string[] args)

{

//Створення об’єкту базового класу

Console.WriteLine(Робота з об’єктом базового класу:); BaseClass bc = new BaseClass();

bc.nDataMember = 1; bc.SomeMethod();

//Створення об’єкту підкласу

Console.WriteLine(“Робота з об’єктом підкласу:”); SubClass sc = new SubClass(); sc.nDataMember = 2;

sc.SomeMethod();

sc.SomeOtherMethod();

//Очікуємо підтвердження користувача

Console.WriteLine(“Для завершення натисніть Enter”);

Console.Read();

}

}

}

9

ЗАВДАННЯ

Домашня підготовка до роботи

1.Вивчити синтаксис, призначення, принцип роботи і використання операторів мови С# та основних функцій введення-виведення.

2.Вивчити правила побудови ідентифікаторів, виразів та присвоєння значень змінним мови С#.

3.Скласти блок-схеми алгоритмів та програми мовою С# для табулювання функцій. Забезпечити ввід значень інтервалу, кроку і похибки табулювання з клавіатури і вивід результатів на дисплей. Дані для роботи

беруться з таблиць 1 і 2 за вказівкою викладача:

 

 

а)

табулювання функції

(див. табл.1), що вибирається

залежно від

значення аргумента, на проміжку [a, b] з кроком табуляції h.

 

 

 

 

 

 

 

 

 

 

 

Таблиця 1

Функції

Умови для вибору

Крок,

Інтервал,

п/п

функцій

h

[a,b]

 

 

 

 

 

 

 

1

cos

 

 

 

x 0.6

0.02

[0.5, 0.9]

x

 

ctg x2

0.6 x 0.7

 

 

 

arctg x3

x 0.7

 

 

2

ln x3

x 3

0.2

[2, 4]

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

3 < x < 4.5

 

 

 

 

 

 

 

 

 

 

 

 

 

| sin x |

 

 

 

x 4

 

 

 

sec 1/x

 

 

 

 

 

 

 

 

 

 

 

3

cosec x2

x 4.5

0.2

[4, 6]

 

x + ln

 

 

4.5 x 5

 

 

 

x7

 

 

 

lg ex + 4

x 5

 

 

4

cos ln x2

x < 2.5

0.2

[2, 4]

 

sec x4

2.5 x 3.5

 

 

 

tg sin x

x > 3.5

 

 

 

 

 

 

 

5

log 5 3x +1

x 0.2

0.05

[0.1, 0.7]

 

xcos x

0.2 x 0.4

 

 

 

cosec ln x

x 0.4

 

 

 

 

 

 

 

6

e x sin x

x 0.6

0.02

[0.5, 0.8]

 

tg | ln x |

0.6 x 07

 

 

 

arctg x7

x 0.7

 

 

7

ln x cos x

x 4

0.2

[3, 6]

 

ctg ex 3

4 x 5

 

 

 

5x x

x 5

 

 

10

Соседние файлы в папке Лаби (умови)