- •Декан автф
- •Рабочая программа учебной дисциплины Программирование на языке высокого уровня
- •Заведующий кафедрой
- •1. Внешние требования
- •(Гос) 1.3.4. Обобщенные задачи профессиональной деятельности
- •(Гос) 1.3.5. Квалификационные требования
- •2. Особенности (принципы) построения дисциплины
- •Междисциплинарные связи дисциплины
- •3. Цели учебной дисциплины
- •4. Содержание* и структура учебной дисциплины
- •Темы курсовых работ (семестр 3)
- •Темы курсовых проектов (семестр 4)
- •5. Учебная деятельность
- •6. Правила аттестации студентов по учебной дисциплине
- •7. Список литературы
- •8. Контролирующие материалы для аттестации студентов по дисциплине
- •Билет № 3
- •Билет № 16
8. Контролирующие материалы для аттестации студентов по дисциплине
Примеры экзаменационных билетов:
Билет № 3
1. Создайте класс samp. Включите в закрытую часть класса целочисленные переменные a и b, а в открытую часть класса – конструктор с параметрами, а также функции geta и getb, которые возвращают соответственно значения переменных a и b. Напишите функцию main, которая создает одномерный массив объектов класса samp размером 5 и одновременно инициализирует эти объекты значениями (1; 2), (3; 4), (5; 6), (7; 8) и (9; 10) соответственно, а затем печатает содержимое объектов из массива, начиная с конца массива и используя указатель на объект для доступа к данным-элементам объекта.
Ответ:
class samp { int a, b; public: samp(int m, int n) { a = m; b = n; } int geta() { return a; } int getb() { return b; } };
|
main() { samp ob[4] = { samp(1,2), ... , samp(9,10) }; samp *p; p = &ob[4]; for(int i=0; i<5; i++) { cout << p -> geta() << ’ ’ << p -> getb() << endl; p--; } return 0; } |
2. Как сделать базовый класс абстрактным ?
Ответ:
Надо включить в базовый класс чистую виртуальную функцию.
3. Создайте класс vector, представляющий векторы в трехмерном пространстве. Включите в закрытую часть класса целочисленные переменные x, y и z, представляющие координаты вектора. Включите в открытую часть класса конструктор с параметрами. Добавьте в программу перегруженный оператор > , который является функцией-другом класса vector и возвращает результат операции “больше” над модулями двух векторов, представляемых двумя объектами класса vector. Напишите функцию main, которая создает два объекта класса vector, представляющие векторы с координатами (1; 2; 3) и (4; 5; 6), а затем, применяя к этим объектам перегруженный оператор > , получает результат сравнения указанных векторов и печатает его.
Ответ:
class vector { int x, y, z; public: vector(int i, int j, int k) { x = i; y = j; z = k; } friend int operator>(vector, vector) };
|
int operator>(vector ob1, vector ob2) { return (ob1.x * ob1.x + ob1.y * ob1.y + ob1.z * ob1.z) > (ob2.x * ob2.x + ob2.y * ob2.y + ob2.z * ob2.z); }
int main() { vector o1(1,2,3), o2(4,5,6); if(o1 > o2) cout << ”o1 > o2”; else cout << ”o1 <= o2”; return 0; } |
Билет № 16
1. Создайте класс box, представляющий коробки. Закрытые данные-элементы (ДЭ) класса должны представлять ширину, длину, высоту, объем и цвет коробки. Включите в открытую часть класса следующие функции-элементы:
конструктор с параметрами;
конструктор копий, который устанавливает в копии для цвета коробки значение “зеленый ”, а для остальных ДЭ класса – значения одноименных ДЭ из объекта-оригинала;
функция show, печатающая содержимое объекта класса.
Напишите функцию main, которая создает объект класса box, представляющий коробку красного цвета с размерами 2 х 3 х 8, затем посредством конструктора копий создает копию этого объекта, представляющую коробку зеленого цвета, и в заключение печатает содержимое объекта и копии.
Ответ:
class box { int w, l, h, vol; char *col; public: box(int, int, int, char *); box(box &); void show(); };
box :: box(int x, int y, int z, char *c) { w = x, l = y, h = z; vol = w * l * h; strcpy(col, c); }
box :: box(box &ob) { w = ob.w, l = ob.l, h = ob.h; vol = ob.vol; strcpy(col, ”зеленый”); }
|
void box :: show() { cout << w << ’ ’ << l << ’ ’ << h << ’ ’ << vol << ’ ’ << col << endl; }
int main() { box x(2,3,8,”красный”); box y = x; x.show(); y.show(); return 0; } |
2. Как исправить в классе Time следующее объявление:
void ~Time(int ptr);
Ответ:
~Time();
3. Создайте иерархию классов:
Класс |
Базовый класс |
Абстрактный объект (АО), представляемый классом |
|
Название АО |
Свойства АО |
||
Food |
– |
продукт питания |
изготовитель, поставщик, оптовая цена, розничная цена |
Meat |
Food |
мясное изделие |
дата изготовления, срок годности |
Sausage |
Meat |
колбасное изделие |
тип, вид, % консервантов |
Drink |
Food |
напиток |
тип тары, емкость тары |
Juice |
Drink |
сок |
состав, % сахара, % консервантов |
Сделайте данные-элементы базовых классов защищенными, а производных классов – закрытыми. Включите в каждый класс виртуальную функцию show, которая печатает содержимое объекта класса. Напишите функцию main, которая создает объекты классов Fresh и Juice и печатает их содержимое. Сообщите, какой метод вызова функции show (статическое или динамическое связывание) вы применили, и обоснуйте свой ответ.
Ответ: