Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мет_2 часть_укр.doc
Скачиваний:
1
Добавлен:
09.11.2019
Размер:
938.5 Кб
Скачать

НАЦІОНАЛЬНИЙ ТЕХНІЧНИЙ УНІВЕРСИТЕТ УКРАЇНИ "КИЇВСЬКИЙ ПОЛІТЕХНІЧНИЙ ІНСТИТУТ"

МЕТОДИЧНІ ВКАЗІВКИ до лабораторних занять з дисципліни

"ІНФОРМАЦІЙНІ ТЕХНОЛОГІЇ І ПРОГРАМУВАННЯ"

Частина ІІ. "ОБ'ЄКТНО-ОРІЄНТОВАНЕ ПРОГРАМУВАННЯ"

Київ

"ПОЛIТЕХНIКА"

2006

Гриф надано Методичною радою НТУУ «КПІ»

(Протокол № від 2006 р.)

МЕТОДИЧНІ ВКАЗІВКИ ДО ЛАБОРАТОРНИХ ЗАНЯТЬ З ДИСЦИПЛІНИ "ІНФОРМАЦІЙНІ ТЕХНОЛОГІІ І ПРОГРАМУВАННЯ". ЧАСТИНА ІІ. " ОБ'ЄКТНО-ОРІЄНТОВАНЕ ПРОГРАМУВАННЯ"

Укладач: Гаєвський Олександр Юлійович, к.ф.-м.н

Рецензент: О.Г. Снежко, доц., к.т.н.

Оригінал-макет в авторській редакції

Toc

Зміст

Вступ…………………………………………………………………………….5Toc

1. Лабораторна робота 1. "Структури: складені типи даних" 5

1.1.Теоретичні відомості 5

1.1.1. Структури 5

1.1.2. Робота з масивом структур 6

1.2. Постановка задачі 7

1.3. Варіанти 8

1.4. Методичні вказівки 9

1.5. Зміст звіту 9

2. Лабораторна робота 2 "Динамічні структури даних" 10

2.1. Теоретичні відомості 10

2.1.1. Списки 10

2.1.2. Стеки 13

2.1.3. Черги 15

2.2. Постановка задачі 16

2.3. Варіанти завдань 16

2.4. Методичні вказівки 19

2.5. Зміст звіту 19

3. Лабораторна робота 3 "Класи. Черги й стеки на основі масивів" 20

3.1. Теоретичні відомості 20

3.1.1. Визначення класу 20

3.1.2. Члени класу 20

3.1.3. Доступ до членів класу 21

3.1.4. Черги-масиви 22

3.1.5. Стеки-масиви 23

3.2. Постановка задачі 25

3.3. Варіанти завдань 25

3.4. Методичні вказівки 27

3.5. Зміст звіту 27

4. Лабораторна робота 4. "Перезавантаження конструкторів" 28

4.1. Теоретичні відомості 28

4.1.1. Перезавантаження конструкторів 28

4.1.3. Операції з матрицями 29

4.2. Постановка задачі 29

4.3. Варіанти завдань 29

4.4. Методичні вказівки 32

4.5. Зміст звіту 32

5. Лабораторна робота 5. "Перезавантаження операторів. Дружні функції" 33

5.1. Теоретичні відомості 33

5.1.1. Дружні функції 33

5.1.1. Перезавантаження операторів 34

5.1.2. Операторні функції для комплексних чисел 34

5.2. Постановка задачі 36

5.3. Варіанти завдань 36

5.4. Методичні вказівки 38

5.5. Зміст звіту 38

6. Лабораторна робота 6. "Спадкування. Віртуальні функції" 39

6.1 Теоретичні відомості 39

6.1.1. Спадкування й модифікатори спадкування 39

6.1.2. Віртуальні функції 40

6.1.3. Відділення інтерфейсу від реалізації 41

6.2. Постановка задачі 42

6.3. Варіанти завдань 42

6.4. Методичні вказівки 44

6.5. Зміст звіту 44

7. Лабораторна робота 7. "Шаблони" 45

7.1. Теоретичні відомості 45

7.1.1. Шаблони функцій 45

7.1.2. Шаблони класів 46

7.1.3. Приклад. Методи шаблона вектора 47

7.1.4. Приклад. Шаблон класу зв'язного списку 48

7.2. Постановка задачі 49

7.3. Варіанти завдань 49

7.4. Методичні вказівки 51

7.5. Зміст звіту 51

8. Лабораторна робота 8. "Файлове введення-виведення" 52

8.1. Теоретичні відомості 52

8.1.1. Система введення-виведення С++ 52

8.1.2. Потоки й файли 53

8.1.3. Текстові файли. Форматоване введення-виведення 54

8.1.4. Неформатоване двійкове введення-виведення 56

8.1.5. Файли довільного доступу 58

8.2. Постановка задачі 58

8.3. Варіанти завдань 59

8.4. Методичні вказівки 60

8.5. Зміст звіту 60

Література 60

Вступ

Дана, друга частина методичних вказівок до лабораторних робіт з курсу «Інформаційні технології і програмування» присвячена об'єктно-орієнтованому програмуванню (ООП) на мові С++. Технологія ООП дозволяє досягти простоти структури й керованості великих програмних систем. Ця технологія дає спосіб розгляду процесу програмування як моделювання реально існуючих об'єктів, їхніх атрибутів і поведінки, а також зв'язків між об'єктами.

Виконуючи роботи відповідно даного посібника, студенти повинні навчитися створювати структури (у тому числі динамічні) і використовувати їх у роботі з різними інформаційними даними; придбати навички по створенню класів, застосуванню основних принципів ООП (інкапсуляції, спадкування й поліморфізму) до розв'язання конкретних математичних і інформаційних завдань; а також навчитися працювати з файлами й потоками. Посібник містить теоретичні відомості, методичні вказівки, варіанти завдань до 7 лабораторних робіт

1. Лабораторна робота 1. "Структури: складені типи даних"

Ціль роботи: Освоєння прийомів роботи із структурами й складання програм, що дозволяють уводити дані в структуру й виводити їх на екран, змінювати й обробляти дані, записані в структуру.

    1. Теоретичні відомості

1.1.1. Структури

Структури – це складені типи даних, які побудовані з використанням інших типів. Наприклад,

struct person {

char name[100];

int age; };

де struct – службове слово; person – ім'я (ідентифікатор, тег) структури; name і age – два елементи, що становлять структуру (масив змінних char і ціле число). Оголошення структури повинне закінчуватися крапкою з комою.

Змінні структури оголошуються так само, як змінні інших типів, наприклад,

person fath, ladies[5], *Pfath;

тут ladies[5] – масив структур, *Pfath – покажчик на структуру типу person.

Доступ до елементів структури здійснюється операцією . (крапка) для імені структури й -> (стрілка) – для покажчика на структуру, наприклад:

fath.age=12;

ladies[3].age=27;

cout<<fath.name;

cout<< ladies[3].age;

cout<<Pfath->name;

Вираз Pfath->name еквівалентний виразу (*Pfath).name, що розіменовує покажчик і робить доступним елемент через операцію «крапка».

1.1.2. Робота з масивом структур

Після визначення структури можна оголосити масив структур. Наприклад, щоб оголосити масив з 30 елементів типу name_struct, досить записати:

name_struct elem[30];

Для одержання доступу до конкретного елемента масиву структур потрібно проіндексувати ім'я структури. Наведемо приклад створення масиву структур, Введення даних у структури й відображення даних на екрані:

#include <iostream.h>

//Константна змінна зберігає розмір масиву

const int size=10;

//----Визначення структури---------

struct person {

char name[20];

int age;

} osob[size]; //Оголошення масиву структур

//-------Функція Введення даних у структуру------

void enter(int k){

cout<<"Enter name: ";

cin>>osob[k].name;

cout<<"Enter age: ";

cin>>osob[k].age; }

//-----Функція виведення даних структури----------

void display(int k) {

cout<<'\n'<<osob[k].name<<" "<<osob[k].age; };

//-------Головна функція------

int main(){

//Ініціалізація масиву структур - запис 0 у поле name

for (int i=0; i<size; i++)

*osob[i].name='\0';

int opt = 0;

//Меню вибору операції

for(;;) {

cout << "0. Exit the program" << endl;

cout << "1. Enter data" << endl;

cout << "2. Display data" << endl;

cin >> opt;

int flag=0;

switch (opt) {

case 1:

for (i=0; i<size; i++){

//Якщо знайдено перший вільний елемент

if(!*osob[i].name &&!flag) {

enter(i);

//Встановлюється прапорець, щоб не зробити ще один запис

flag=1;

break;

};

};

//Якщо вільних елементів немає (масив повний)

if(i==size) cout<<"Array is full!\n";

break;

case 2:

for (i=0; i<size; i++)

//Виведення тільки ненульових елементів

if(*osob[i].name) display(i);

cout<<endl;

break;

case 0:

return(0);

default:

cout << "I do not know how to do it!" << endl; }

};

}

1.2. Постановка задачі

Скласти програму, що створює масив структур і дозволяє вводити дані в масив, виводити дані на екран і виконувати інші дії. Управління структурами повинне здійснюватися за допомогою меню. У меню присутні опції:

– вихід із програми

– введення даних

– виведення даних,

а також додаткові опції, зазначені у варіанті завдання (див. наступний розділ).