Вопросы к ЛР ответы (1077229)
Текст из файла
Контрольные вопросы к ЛР №1
-
Что такое проект в BC++? Для чего нужны проекты и в чем из преимущество?
-
Что такое CIN и COUT?
-
В каких файлах, и как описаны CIN и COUT?
-
Что такое манипуляторы как элементы программы?
-
Что нужно сделать для вызова функции, расположенной в другом объектном модуле?
-
Какие основные действия можно предпринять в процессе отладки программы на TD? Перечислите основные операции и возможности, которые можно использовать при отладке программных проектов.
-
Каково назначение функций (методов): setf, width, fill и precision ?
-
Для чего нужны элементы программы dec, hex, oct? Где и как описаны? Что они представляют с точки зрения языка программирования СИ++?
-
Что такое endl и где этот элемент описан?
-
В каких файлах дано определение элемента языка hex ? Нужно указать два определения и два файла.
-
В чем заключаются требования к функциям, вызываемым из потока COUT? Где можно уточнить эти требования (файл и место - класс);
-
Для чего нужны в СП проекты? Как создать новый проект в BC 3.1?
-
Что включается в проекты для DOS и WINDOWS приложений и чем они отличаются?
-
Какие стандартные объекты классов потокового ввода вывода Вы знаете (четыре объекта)?
-
Поясните полную диаграмму классов потокового ввода вывода (наследование и разновидности классов и связей), показанную в броузере классов. Какие связи отражены в этой диаграмме, а какие нет.
-
Объясните назначение и отличие классов, входящих в диаграмму классов потокового ввода вывода.
-
Поясните следующую запись на языке СИ++: cout.setf(ios::showpoint);
-
В каком классе описаны следующие методы: setf, width, fill и precision.
-
В каких классах потокового ввода вывода перегружены операции: “<<” и “>>”.
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
-
Поясните структуру классов для ARRAY?
-
Какие данные и методы определены в этом классе?
-
Для чего используется класс ARRAYITERATOR? Его методы?
-
В чем различие классов ARRAY и SORTARRAY?
-
В каком отношении находятся классы ARRAY и SORTARRAY?
-
В каком отношении находятся классы ARRAY и ARRAYITERATOR?
-
Поясните требования к объектам, включаемым в объект ARRAY?
-
Как добавить объект в массив?
-
Можно ли включить в объект класса ARRAY переменную типа FLOAT, INT?
-
Какой ответ в этом случае даст отладчик? Компилятор С++?
-
Почему сложно удалить объект из массива?
-
Назначение и использование методов restart и current?
-
Поясните запись – “MAI.current().printOn(cout);”?
-
Поясните запись – “MB.add(*new String( (String &) MA[i]));”?
-
Как запустить и настроить отладчик в BC 3.1?
-
Какие режимы отладки вы знаете? Перечислите.
-
Что можно делать с данными программы в процессе отладки?
-
Чем отличаются классы ARRAY и Collection?
-
В каком отношении находятся классы ARRAY и ABSTRACTARRAY?
-
В каком отношении находятся классы 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;
-
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.
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.