Вопросы к ЛР ответы (Вопросы по ЛР с ответами)

2018-01-10СтудИзба

Описание файла

Файл "Вопросы к ЛР+ответы" внутри архива находится в папке "Вопросы по ЛР с ответами". Документ из архива "Вопросы по ЛР с ответами", который расположен в категории "". Всё это находится в предмете "объектно-ориентированное программирование (ооп)" из 3 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "объектно-ориентированное программирование (ооп)" в общих файлах.

Онлайн просмотр документа "Вопросы к ЛР ответы"

Текст из документа "Вопросы к ЛР ответы"

Контрольные вопросы к ЛР №1

  1. Что такое проект в BC++? Для чего нужны проекты и в чем из преимущество?

  2. Что такое CIN и COUT?

  3. В каких файлах, и как описаны CIN и COUT?

  4. Что такое манипуляторы как элементы программы?

  5. Что нужно сделать для вызова функции, расположенной в другом объектном модуле?

  6. Какие основные действия можно предпринять в процессе отладки программы на TD? Перечислите основные операции и возможности, которые можно использовать при отладке программных проектов.

  7. Каково назначение функций (методов): setf, width, fill и precision ?

  8. Для чего нужны элементы программы dec, hex, oct? Где и как описаны? Что они представляют с точки зрения языка программирования СИ++?

  9. Что такое endl и где этот элемент описан?

  10. В каких файлах дано определение элемента языка hex ? Нужно указать два определения и два файла.

  11. В чем заключаются требования к функциям, вызываемым из потока COUT? Где можно уточнить эти требования (файл и место - класс);

  12. Для чего нужны в СП проекты? Как создать новый проект в BC 3.1?

  13. Что включается в проекты для DOS и WINDOWS приложений и чем они отличаются?

  14. Какие стандартные объекты классов потокового ввода вывода Вы знаете (четыре объекта)?

  15. Поясните полную диаграмму классов потокового ввода вывода (наследование и разновидности классов и связей), показанную в броузере классов. Какие связи отражены в этой диаграмме, а какие нет.

  16. Объясните назначение и отличие классов, входящих в диаграмму классов потокового ввода вывода.

  17. Поясните следующую запись на языке СИ++: cout.setf(ios::showpoint);

  18. В каком классе описаны следующие методы: setf, width, fill и precision.

  19. В каких классах потокового ввода вывода перегружены операции: “<<” и “>>”.

1.

2. Стандартные потоки ввода, вывода соответственно, являются объектами класса iostream_withassign и ostream_withassign соответственно:

extern istream_withassign _Cdecl cin;

extern ostream_withassign _Cdecl cout;

3. Описаны в файле iostream.h:

extern istream_withassign _Cdecl cin;

extern ostream_withassign _Cdecl cout;

4. Манипуляторы – специальные функции, позволяющие изменять состояние и флаги потока. Способ изменения формата основан на применении специальных функций, называемых манипуляторами, их можно включать в операторы ввода- вывода.

5. Если данный объектный модуль является одним из файлов проекта – в модуле, вызывающем данную функцию, необходимо объявить прототип данной функции.

6.

7. setf - // for reading/setting format flags – для установки флагов форматирования

long _Cdecl setf(long _setbits, long _field);

long _Cdecl setf(long);

width – // reading/setting field width – ширина поля вывода

int _Cdecl width();

int _Cdecl width(int);

fill – // reading/setting padding character – заполняющий пустые позиции символ

char _Cdecl fill();

char _Cdecl fill(char);

precision – // reading/setting digits of floating precision – точность представления вещественных чисел

int _Cdecl precision(int);

int _Cdecl precision();

8. class ios -

// formatting flags

enum {...

dec = 0x0010, // decimal conversion

oct = 0x0020, // octal conversion

hex = 0x0040, // hexadecimal conversion

... };

манипуляторы, преобразовывающие число к заданной системе счисления.

представляют собой перечислимые константы

// constants for second parameter of seft()

static const long basefield; // dec | oct | hex

------------

ios _FAR & _Cdecl dec(ios _FAR &); // set conversion base to decimal

ios _FAR & _Cdecl hex(ios _FAR &); // set conversion base to hexadecimal

ios _FAR & _Cdecl oct(ios _FAR &); // set conversion base to octal

Представляют собой функции.

9. Описан в файле iostream.h

/*

* Manipulators

*/

ostream _FAR & _Cdecl endl(ostream _FAR &); // insert newline and flush

Представляет собой манипулятор, действующий только выводе, обеспечивает включение в выходной поток символа новой строки и сбрасывает в в буфер (выгружает содержимое) этого потока.

10. iostream.h

class ios -

// formatting flags

enum {...

hex = 0x0040, // hexadecimal conversion

... };

ios _FAR & _Cdecl hex(ios _FAR &); // set conversion base to hexadecimal

sthex.cpp

#include <ioconfig.h> #include <iostream.h>

ios _FAR & hex(ios _FAR & s) {s.setf(ios::hex, ios::basefield); return s;}

11.

12. Создать проектный файл для объединения исходных программ лабораторной работы (Project-> Open Project -> <новое имя>, Project-> Add Item -> <выбор модуля> и кнопка Add)

13.

14.

extern istream_withassign _Cdecl cin; - ввода

extern ostream_withassign _Cdecl cout; - вывода

extern ostream_withassign _Cdecl cerr; - вывод для сообщения об ошибках

extern ostream_withassign _Cdecl clog; - буфферизованный вывод для сообщения об ошибках

15.

Наследник ios и далее стрелками, streambuf – отношение включения в класс ios.

streambuf _FAR * bp; // the associated streambuf

streambuf _FAR * _Cdecl rdbuf() {return bp}; // get the assigned streambuf

16. Класс streambuf (и два класса, производных от него – filebuf и strstreambuf), – обеспечивают буферизацию потокового ввода-вывода и абстрагируют обращение к физическим устройствам ввода-вывода.

Класс ios дает начало семейству классов, предназначенных для реализации форматированного и неформатированного ввода-вывода на высоком уровне с возможностью контроля и изменения состояния потока. ios содержит член ios::bp – указатель на streambuf, – посредством которого и «общается» с устройствами ввода-

вывода.

Среди классов, производных от ios, следует назвать следующие:

  • istream – ввод из стандартного устройства ввода. Содержит перегруженный опе-

ратор форматированного ввода >> и ряд функций неформатированного ввода;

  • ostream – вывод на стандартное устройство вывода. Содержит перегруженный

оператор форматированного вывода << и ряд функций неформатированного вы-

вода;

  • iostream – объединяет классы istream и ostream для двунаправленных операций, в которых один поток действует и как источник, и как приемник.

  • производные классы withassign – обеспечивают четыре предопределенных "стандартных" потока: cin, cout, cerr и clog.

  • iostream_withassign – iostream с перегруженным оператором присваивания(аналогично 2 других).

17. При выводе вещественных чисел печатать десятичную точку и следующие за ней нули.

18. class ios

19. istream, ostream

Контрольные вопросы к ЛР №2

  1. Поясните структуру классов для ARRAY?

  2. Какие данные и методы определены в этом классе?

  3. Для чего используется класс ARRAYITERATOR? Его методы?

  4. В чем различие классов ARRAY и SORTARRAY?

  5. В каком отношении находятся классы ARRAY и SORTARRAY?

  6. В каком отношении находятся классы ARRAY и ARRAYITERATOR?

  7. Поясните требования к объектам, включаемым в объект ARRAY?

  8. Как добавить объект в массив?

  9. Можно ли включить в объект класса ARRAY переменную типа FLOAT, INT?

  10. Какой ответ в этом случае даст отладчик? Компилятор С++?

  11. Почему сложно удалить объект из массива?

  12. Назначение и использование методов restart и current?

  13. Поясните запись – “MAI.current().printOn(cout);”?

  14. Поясните запись – “MB.add(*new String( (String &) MA[i]));”?

  15. Как запустить и настроить отладчик в BC 3.1?

  16. Какие режимы отладки вы знаете? Перечислите.

  17. Что можно делать с данными программы в процессе отладки?

  18. Чем отличаются классы ARRAY и Collection?

  19. В каком отношении находятся классы ARRAY и ABSTRACTARRAY?

  20. В каком отношении находятся классы ARRAY и COLLECTION?

1.

Object – абстрактный базовый класс для всех объектов

Container – абстрактный класс родитель всех классов, включает все классы способные содержать 0 или более элементов

Collection – абстрактный класс “коллекционных” структур

AbstractArray – абстрактный класс с произвольным доступом к элементам

возвращает верхнюю границу

Array – класс массива

ContainerIterator – абстрактный класс итераторов

ArrayIterator – итератор массива (локальный (внутренний) класс AbstractArray)

2. class _CLASSTYPE Array : public AbstractArray

{

public:

Array( int upper, int lower = 0, sizeType aDelta = 0 ) :

AbstractArray( upper, lower, aDelta ) {}

virtual void add( Object _FAR & );

void addAt( Object _FAR &, int );

virtual classType isA() const {return arrayClass;}

virtual char _FAR *nameOf() const {return "Array";}

};

3. ArrayIterator – класс итераторов для массива, является внутренним классом для AbstractArray. (Итератор позволяет перебирать элементы массива).

ArrayIterator( const AbstractArray _FAR & );

virtual ~ArrayIterator();

virtual operator int();

virtual Object _FAR & current();

virtual Object _FAR & operator ++( int );

virtual Object _FAR & operator ++();

virtual void restart();

Для произвольного доступа к элементам классов, входящих в иерархию Abstract Array

4. Добавляет элементы в массив, таким образов, чтобы сохранялось отсортированность массива – добавить на данную позициюент нельзя.

В SortedArray элементы упорядочены по возрастанию, и должна быть определена операция сравнения этих элементов. Здесь отсутствует метод AddAt.

Кроме того, в SortedArray оператор [] не выдаёт выражение, которое может находиться в выражениях в левой части (lvalue).

5. Оба класса – наследники класса AbstractArray.

6. Связаны отношение включения, так как ArrayIterator класс AbstractArray, а ArrayIterator – предок класса Array.

7. Данные объекты должны являться экземплярами классов, производных от класса Object.

8. Воспользовавшися методами

virtual void add( Object _FAR & );

void addAt( Object _FAR &, int );

Например:

String* str;

  1. add(*str);

9. Нет, так как переменные данного типа не являются экземплерами классов, производных от класса Object.

10. int * a=new int(11);

A.add(*a);

Error PROB.CPP 11: Cannot create instance of abstract class 'Object'

Error PROB.CPP 11: Could not find a match for 'Object::Object(int)'

Error PROB.CPP 11: Type mismatch in parameter 1 in call to 'Array::add(Object &)'

11. Массив представляет собой структуру данных, элементы которой расположенных в памяти непосредственно друг за другом (в отличие от списка), доступ к которым осуществляется по индексу, поэтому для удаления одного элемента из массива, другие, стоявшие после него требуется сдвигать к началу массива.

12.   current() – возвращает ссылку на текущий объект

restart() – перемещает итератор в первую непустую точку массива

13. “MAI.current().printOn(cout);” – вывести на экран элемент массива, определяемый итератором MAI как текущий.

14. “MB.add(*new String( (String &) MA[i]));” – в массив MB добавляется новый элемент, построенный на основе i-го элемента массива MA.

15.

16. Отладчик позволяет выполнять пошаговую трассировку, отслеживать, устанавливать или изменять значения переменных в процессе выполнения программы, устанавливать и удалять контрольные точки или условия остановки и т. д.

Пошаговое выполнение, заход в функцию\цикл, перешагивание через функции\циклы, начало выполнения с определённого места, выполнение до контрольной точки.

17.

Свежие статьи
Популярно сейчас
Зачем заказывать выполнение своего задания, если оно уже было выполнено много много раз? Его можно просто купить или даже скачать бесплатно на СтудИзбе. Найдите нужный учебный материал у нас!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Нашёл ошибку?
Или хочешь предложить что-то улучшить на этой странице? Напиши об этом и получи бонус!
Бонус рассчитывается индивидуально в каждом случае и может быть в виде баллов или бесплатной услуги от студизбы.
Предложить исправление
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5138
Авторов
на СтудИзбе
443
Средний доход
с одного платного файла
Обучение Подробнее