Лабораторно упражнение n 1 Динамична памет



Дата10.01.2017
Размер89.61 Kb.

Лабораторно упражнение N 1
Динамична памет


I. Цел на лабораторното упражнение

Целта на упражнението е запознаване с динамичната памет, с функциите за работа с динамичната памет (malloc, calloc, realloc, free), както и с оператори new и delete.



II. Структура на упражнението

1. Динамична памет

2. Функции за динамично разпределение от стандарта UNIX

2.1. Динамично отпускане на блок памет

2.2. Промяна размера на блок памет

2.3. Освобождаване на блок памет

3. Оператори new и delete

III. Задачи за изпълнение

1. Да се състави алгоритъм и програма за транслация на затворен контур, описан чрез поредица от точки, като програмата включва следните функции:



  • въвеждане от клавиатурата на затворен контур, описан чрез набор точки;

  • извеждане на екрана на точките, описващи контура;

  • запис на данните във файл;

  • четене на данните от файл;

  • транслация на контур.

Управлението на програмата да се извършва чрез потребителско меню за избор. Данните да се съхраняват в паметта в динамичен буфер. Да се използват функциите за динамично разпределение на паметта.

2. Модифицирайте програмата така, че да се използват оператори new и delete.



IV. Контролни въпроси

1. Кои са предимствата за използването на динамични буфери пред организирането на данните като статични масиви?

2. Каква е схемата на разпределение на паметта при изграждането на програма на С?

3. Какво е предназначението на функция malloc()?

4. Какво е предназначението на функция calloc()?

5. Какво е предназначението на функция realloc()?

6. Какво е предназначението на функция free()?

7. Какво е действието на оператор new?

8. Какво е действието на оператор delete?

Лабораторно упражнение N 2
Класове и обекти


I. Цел на лабораторното упражнение

Целта на упражнението е въведение в принципита на обектно-ориентираното прогваниране и запознаване на студентите с дефинирането на класове и обекти.



II. Структура на упражнението

1.Дефиниране на класове

2.Дефиниране на обекти. Достъп до компоненти на обект

2.1.Дефиниране на обекти

2.2. Достъп до компоненти на обект

III. Задачи за изпълнение

1. Да се дефинира клас, описващ точка чрез нейните координати x, y. Класът да съдържа следните член-функции:



  • въвеждане на стойности за координатите;

  • извеждане на стойностите на координатите;

  • транслация на точка;

  • ротация на точка;

  • мащациране на точка;

  • осева симетрия, спрямо ос X;

  • осева симетрия, спрямо ос Y;

  • осева симетрия, спрямо координатното начало.

2. Въз основа на дефинирания клас да се напише програма за намиране разстоянието между две точки в равнината.

3. Като се използва дефинирания клас, да се напише програма, която да въвежда n точки в равнината и която дава възможност за извършване на графични трансформации върху избрана от потребителя точка.

IV. Контролни въпроси

1. Какво представлява класът като абстрактен тип данни?

2. Какъв е достъпа до членове на клас в секция private?

3. Какъв е достъпа до членове на клас в секция public?

4. Какъв е достъпа до членове на клас в секция protected?

5. Какви са разликите при дефиниране на метод в тялото на клас и извън тялото да класа?

6. Как се достига до член-данна от клас?

7. Как се извиква член-функция на даден клас?


Лабоаторно упражнение N 3
Конструктори и деструктори


I. Цел на лабораторното упражнение

Целта на упражнението е запознаване с инициализацията на обектите като програмни единици и методите конструктори и деструктори.



II. Структура на упражнението

1. Инициализация на обекти

2. Дефиниране на конструктори и деструктори

3. Предефиниране на конструктори

4. Конструктор по подразбиране

5. Конструктор с подразбиращи се параметри

III. Задачи за изпълнение

1. Дефинирайте клас Card, който да имитира библиотечен картон и съдържа следните компоненти: автор, заглавие, година на издаване; наличен брой книги. Класът също да съдържа метод за извеждане на данните. Дефинирайте конструктор, който да въвежда данни за обект, като заделя динамично памет за член-данните автор и заглавие. Дефинирайте и деструктор, който да премахва динамично заделената памет.


2. Създайте програма, която използва клас Card и съдържа следните функции:

  • въвеждане на нова книга;

  • извеждане на всички налични заглавия на книги;

  • премахване на книга от списъка;

  • търсене на книга по първите две думи от заглавието;

3. Дефинирайте клас, описващ затворен контур от точки, който съдържа като компоненти: n – брой точки от масива и техните координати, както и методи за въвеждане и извеждане на стойностите на точките. Дефинирайте конструктор, който заделя динамична памет за точките и деструктор, който премахва заделената памет.

IV. Контролни въпроси

1. Какво представлява метод конструктор?

2. Какво представлява метод деструктор?

3. Колко конструктора и деструктора може да има даден клас?

4. Възможно ли е явното извикване на конструкторите и деструкторите?

5. Възможно ли е в даден клас едновременно да бъдат дефинирани конструктор по подразбиране и конструктор с подразбиращи се параметри?


Лабораторно упражнение N 4
Указатели и обекти. Указатели към членове на клас. Указател this


I. Цел на лабораторното упражнение

Целта на упражнението е запознаване с възможностите за използване на указателите за достъп до обекти и членове на клас, както и със служебния указател this.



II. Структура на упражнението
1. Дефиниране и използване на указатели към обекти

2. Указател this

3. Указатели към функции

4. Указатели към членове на клас

III. Задачи за изпълнение

1. Да се дефинира клас, който имитира линия, описана с координатите на две точки. Класът да съдържа методи за: въвеждане на координатите на точките; извеждане координатите на точките; намиране дължината на отсечката, заключена между двете точки. Достъпът до член-данните да се осъществи чрез указатели.

2. Въз основа на дефинирания клас да се състави програма за въвеждане на n отсечки и намиране на тяхната дължина. Методите да се извикват чрез указатели към обекти.

3. Да се дефинира клас, който имитира буфер. Класът да съдържа методи за четене на символ от буфера и запис на символ в буфера.

4. Въз основа на дефинирания клас в задача 3, да се състави програма, която демонстрира съхраняване и извличане на данни от буфер. Методите на класа да се извикват чрез указатели към тях.

5. Да се модифицира метод add на клас complex, като за връщания резултат се използва указател this.



IV. Контролни въпроси

1. Как се дефинира указател към обект?

2. Как се дефинира указател към член-данна на клас ?

3. Как се дефинира указател към член-функция на клас ?

4. Какво е предназначението на указател this?

5. Какво е действието на операции .* и ->* ?



Лабораторно упражнение N 5
Структури, обединения, класове. Масиви от обекти


I. Цел на лабораторното упражнение

Целта на упражнението е запознаване с възможностите за използване на абстрактните типове данни структури и обединения, като частен случай на класовете.



II. Структура на упражнението

1. Масиви и обекти

2. Структури в С++

3. Обединения в С++

III. Задачи за изпълнение

1. Да се състави програма за въвеждане на произволен контур от точки, като се използва class dot и се предостави възможност на потребителя за извършване на различни графични трансформации.

2. Да се модифицира задача 1, като се използва структура dot. Програмата да въвежда точки, описващи затворен контур и да предоставя възможност за извършване на различни графични трансформации.

3. Да се състави структура, описваща линеен списък. Структурата да съдържа методи за добавяне на нов елемент, търсене на елемент и премахване на елемент от списъка.


IV. Контролни въпроси


1. Как се инициализират масиви от обекти?

2. Какви са разликите между клас (class) и структура (struct)?

4. Какви са особеностите на структурите като частен случай на класовете?

3. Какви са особеностите на обединенията като частен случай на класовете?



Лабораторно упражнение N 6
Предефиниране на операции


I. Цел на лабораторното упражнение

Целта на упражнението е запознаване с операторните функции и предефинирането на операциите чрез използване методите на класовете и приятелските функции. Засяга се и преобразуването на типове.


II. Структура на упражнението

1. Механизъм "предефиниране на операции"

2. Дефиниране на нови операции

3. Преобразуване на типове

4. Преобразуване на типове чрез конструктор
III. Задачи за изпълнение

1. Да се предефинират операции: изваждане, умножение, деление, инкрементиране, декрементиране за клас complex.

2. Предефинирайте операция = за обекти от клас Card, представящ библиотечен картон.

3. Дефинирайте клас Matrix, описващ матрица - двумерен масив. Предефинирайте операции събиране и изваждане за посочения клас.


IV. Контролни въпроси

1. Каква е разликата при предефиниране на операции чрез използване методи на клас и на приятелски функции?

2. Кои операции в С++ не могат да бъдат предефинирани?

3. Кои операции в С++ могат да бъдат приложени върху обекти, без да се налага тяхното предефиниране?

4. Как се осъществява преобразуване на стандартен тип в тип клас?

5. Как се осъществява преобразуване на тип клас в стандартен тип?



Лабораторно упражнение N 7
Наследяване на класове


I. Цел на лабораторното упражнение

Целта на упражнението е запознаване с механизма на наследяване и дефинирането на производни класове.



II. Структура на упражнението

1. Механизъм "наследяване на класовете"

2. Дефиниране на производни класове при просто наследяване

3. Достъп до наследени компоненти на производни класове

3.1. Правила за достъп до компонентите на основния и наследения клас

3.2. Атрибути на основния клас

III. Задачи за изпълнение

1. Да се дефинира клас dot, описващ точка с координати x,y; производен клас circle, описващ окръжност и производен клас conus, описващ прав, кръгов конус. В класовете да се включат методи за намиране лице на кръг и обем на конус.

2. Да се денинира клас person, описващ лични данни на пресона: имена, ЕГН, лична карта и производен клас student, описващ студент с данни – специалност, група, факултетен номер.

IV. Контролни въпроси

1. Какво представлява механизма наследяване на класове?

2. По какъв начин се наследяват private членовете на основния клас от производния?

3. Как ще бъдат наследени членовете на основния клас от производния, ако атрибута на основния клас е private?

4. Как ще бъдат наследени членовете на основния клас от производния, ако атрибута на основния клас е protected?

5. Как ще бъдат наследени членовете на основния клас от производния, ако атрибута на основния клас е public?

6. По какъв начин методите на наследения клас имат достъп до локалните членове на основния клас?


Лабораторно упражнение N 8
Множествено наследяване. Конструктори на основни и производни класове.


I. Цел на лабораторното упражнение

Целта на упражнението е запознаване с механизма на множественото наследяване, дефинирането на производни класове и използването на конструктори при наследяването на класовете.



II. Структура на упражнението

1. Множествено наследяване

2. Конструктори и деструктори на производни класове

III. Задачи за изпълнение

1. Дефинирайте клас Dot, описващ точка с нейните координати, клас Color, описващ цвят на графичен обект. Въз основа на двата класа дефинирайте клас Pixel, описващ точка с координати и цвят. Класовете на съдържат методи за задаване на стойности на членовете данни и показване на тези стойности.

2. Дефинирайте клас Person, описващ персона с лични данни: имена, ЕГН, лична карта. Дефинирайте клас Car, описващ автомобил - марка, цвят, номер. Въз основа на двата класа дефинирайте клас CarPassport, описващ регистрационен талон на автомобил.

IV. Контролни въпроси

1. Какво представлява множественото наследяване на класове?

2. Какво определя последователността от базови класове при декларацията на производния?

3. Как се инициализират наследената и собствената части на производния клас?



4. Как се изпълняват конструкторите и деструкторите на базовите и производния клас?


База данных защищена авторским правом ©obuch.info 2016
отнасят до администрацията

    Начална страница