билет 11 (Ответы на билеты)

2013-09-14СтудИзба

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

Файл "билет 11" внутри архива находится в папке "Bilety_s_otvetami-progr". Документ из архива "Ответы на билеты", который расположен в категории "". Всё это находится в предмете "программирование" из 3 семестр, которые можно найти в файловом архиве МПУ. Не смотря на прямую связь этого архива с МПУ, его также можно найти и в других разделах. Архив можно найти в разделе "к экзамену/зачёту", в предмете "программирование" в общих файлах.

Онлайн просмотр документа "билет 11"

Текст из документа "билет 11"

  • Заголовочный файл iostream.h содержит определения классов, которые вы можете проанализировать, чтобы лучше понять потоковый ввод/вывод.

  • Используя метод cout.width, ваши программы могут управлять шириной вывода.

  • Используя метод cout.fill, ваши программы могут заменить пустые выходные символы (табуляцию и пробелы) некоторым определенным символом.

  • Для управления количеством цифр, выводимых выходным потоком cout для значений с плавающей точкой, ваши программы могут использовать метод cout.setprecision.

  • Для вывода и ввода по одному символу за один раз ваши программы могут использовать потоковые методы cout.put и cin.get.

  • Используя метод cin.getline, ваши программы могут вводить целую строку за один раз.

Форматированный ввод/вывод

Для того чтобы организовать форматированный ввод и вывод , аналогичный тому , что предоставляют пользователю функции printf() и scanf() в языке C++ используются два способа.

Первый состоит в применении функций членов - класса ios.

При втором способе употребляется специальный вид функций, называемых манипуляторами.

Пример вывода и числа:

#include

void main(void)

{cout << "Мое любимое число равно " << 1001;}

Пример форматирования:

#include

#include

void main(void)

{ cout << "Мое любимое число" << setw(3) << 1001 << endl;
   cout << "Мое любимое число" << setw (4) << 1001 << endl;
   cout << "Мое любимое число" << setw (5) << 1001 << endl;
   cout << "Мое любимое число" << setw(6) << 1001 << endl;}

Подобным образом метод cout.width позволяет вам указать минимальное количество символов, которое будет использовать сои/для вывода следующего значения.

  1. Подпрограмма обработки прерывания от клавиатуры сканирует код клавиши. Если это цифровая клавиша, то записывает его в буфер, запускает таймер ожидания нажатой клавиши, проверяет, не переполнился ли буфер, рассчитанный на 6 цифровых клавиш. Если буфер переполнился, то подпрограмма очищает буфер. Если нажата клавиша #, то буфер очищается. Если нажата *, то подпрограмма проверяет количество нажатых клавиш (не менее 3), и производит поиск кода в EEPROM. Если код не найден, то буфер очищается. Очистка буфера сопровождается длинным писком и желтым светодиодом. Если код найден, то если это мастер-код выполняется подпрограмма входа в режим программирования, если код доступа, то открывается управляющее реле. Время открывания читается из EEPROM.

2)

Стандартная библиотека шаблонов STL (англ. standard template library) — набор шаблонов функций и классов в языке C++, включающий в себя различные контейнеры данных (список, очередь, множество, отображение, хэштаблица, очередь с приоритетами) и базовые алгоритмы (сортировка, поиск).

Контейнеры

STL контейнеры делятся на последовательные: vector, deque, list и ассоциативные: set, multiset, map, multimap.

Контейнер

Описание

последовательныее контейнеры (упорядоченные списки)

Vector

C-подобный динамический массив произвольного доступа с автоматическим изменением размера при добавлении/удалении элемента. Добавление-удаление элемента в конец vector занимает амортизированное О(1) время, та же операция в начале или середине vector- О(n). Существует специальный вариант vector для типа bool, уменьшающий потребную память за счет битового хранения .

List

Двух-связанный список, элементы которого в произвольных кусках памяти, в отличие от непрерывной памяти vector. Медленный поиск и доступ (О(n)), быстрая вставка и удаление (О(1)).

Deque

vector с возможностью быстрой вставки-удаления не только в конец, но и в начало.

basic_string

контейнер заточенный на обработку строк - хранит в памяти элементы в последовательно, что даёт быстрый доступ ко всей последовательности

ассоциативные контейнеры (неупорядоченные списки)

Set

сортированнoe множество, такой что вставка/удаление нового элемента не приводит к компрометации итератора указывающего на него. Обеспечивает стандартные операции над множествами типа объединения, пересечения, вычитания.Тип элементов set должен реализовывать оператор сравнения operator <. Реализован на основе технологии само-балансирующего поиска по двоичному дереву.

Multiset

то же что и set, кроме того позволяет хранить одинаковые элементы.

Map

сортированный ассоциативный массив пар элементов, позволяющий установить соответствие между элементами пары. Один из элементов пары принято называть ключем, другой - величиной. При этом тип ключа должен реализовывать оператор сравнения <, либо перегружать функцию сравнения.

multimap

то же что и map, плюс возможность хранить разные величины под одним и тем же ключем.

hash_set

hash_multiset
hash_map
hash_multimap

подобны set, multiset, map, multimap, соответственно, но реализованы на основе хеш таблицы. Ключи не сортированы, для типа ключа должна существовать хэш функция. Эти контейнеры не входят в стандарт C++, однако включены в SGI STL расширение, и в ряд распространённых библиотек, в частности в GNU C++ Library.

другие типы контейнеров

Bitset

Похож на vector фиксированного размера. Предназначен для хранения последовательностей битов. Минимизирован по размеру памяти.

Valarray

C-подобный массив в духе vector. Разработан для скоростных численных расчетов, оптимизирован для векторных супер компьютеров. Пригоден для скалярных процессоров работающих на основе идеологии SIMD

Итератор (англ. iterator) — объект, предназначенный для предоставления доступа к элементам некоторой последовательности. В таких языках, как Оберон и Глагол, называется также бегуно́к и представлен как тип данных. В простейшем случае итератором в низкоуровневых языках является указатель.

Использование итераторов в обобщённом программировании позволяет реализовать универсальные алгоритмы работы с контейнерами или любыми последовательностями.

3) Наследование – это свойство объекта, которое заключается в том, что характеристики одного объекта (объекта-предка) могут передаваться другому объекту (объекту-потомку) без их повторного описания. Наследование упрощает описание объектов.

Типы наследования

Простое наследование

Класс, от которого произошло наследование, называется базовым или родительским (англ. base class). Классы, которые произошли от базового, называются потомками, наследниками или производными классами (англ. derived class).

Класс, от которого произошло наследование, называется базовым или родительским (англ. base class). Классы, которые произошли от базового, называются потомками, наследниками или производными классами (англ. derived class).

В некоторых языках используются абстрактные классы. Абстрактный класс — это класс, который описан в программе, имеет поля, функции, но не используется для создания объекта. Объекты создаются только на основе производных классов, наследованных от абстрактного. Например, абстрактным классом может быть базовый класс «сотрудник ВУЗа», от которого наследуются классы «аспирант», «профессор» и т.д. Т.к. производные классы имеют общие поля и функции (например, поле «год рождения»), то эти члены класса могут быть описаны в базовом классе. В программе создаются объекты на основе классов «аспирант», «профессор», но нет смысла создавать объект на основе класса «сотрудник вуза».

Множественное наследование

При множественном наследовании у класса может быть более одного предка. В этом случае класс наследует методы всех предков. Достоинства такого подхода в большей гибкости. Множественное наследование реализовано в C++. Из других языков, предоставляющих эту возможность, можно отметить Python. Множественное наследование поддерживается в языке UML.

Множественное наследование — потенциальный источник ошибок, которые могут возникнуть из-за наличия одинаковых имен методов в предках. В языках, которые позиционируются как наследники C++ (Java, C# и др.), от множественного наследования было решено отказаться в пользу интерфейсов.

Большинство современных объектно-ориентированных языков программирования (C#, Java, Delphi и др.) поддерживает возможность одновременно наследоваться от класса-предка и реализовать методы нескольких интерфейсов одним классом. Этот механизм позволяет во многом заменить множественное наследование — методы интерфейсов необходимо переопределять явно, что исключает ошибки при наследовании функциональности одинаковых методов различных классов-предков.

Виртуальное наследование

Виртуальное наследование – это частный случай множественного наследования.

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

Виртуальная функция (virtual function) является членом класса. Она объявля-

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

того, чтобы функция стала виртуальной, перед объявлением функции ста-

вится ключевое слово virtual. Если класс, содержащий виртуальную функ-

цию, наследуется, то в производном классе виртуальная функция

переопределяется. По существу, виртуальная функция реализует идею "один

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

Виртуальная функция внутри базового класса определяет вид интерфейса

этой функции. Каждое переопределение виртуальной функции в производ-

ном классе определяет ее реализацию, связанную со спецификой производ-

ного класса. Таким образом, переопределение создает конкретный метод.

При переопределении виртуальной функции в производном классе, ключе-

вое слово virtual не требуется.



Наследование в языке C++

«Наследование» в C++:

class A{ //базовый класс

};

class B : public A{ //public наследование

}

class C : protected A{ //protected наследование

}

class Z : private A{ //private наследование

}

В C++ существует три типа наследования: public, protected, private. Спецификаторы доступа членов базового класса меняются в потомках следующим образом:

  • при public-наследовании все спецификаторы остаются без изменения.

  • при protected-наследовании все спецификаторы остаются без изменения, кроме спецификатора public, который меняется на спецификатор protected (то есть public-члены базового класса в потомках становятся protected).

  • при private-наследовании все спецификаторы меняются на private.

Одним из основных преимуществ public-наследования является то, что указатель на классы—наследники может быть неявно преобразован в указатель на базовый класс, то есть для примера выше, можно написать

A* a = new B;

Эта интересная особенность открывает возможность динамической идентификации типа.

У этого термина существуют и другие значения, см. Класс.

Класс наряду с понятием «Объект », является важным понятием объектно-ориентированного подхода в программировании (хотя существуют и беcклассовые объектно-ориентированные языки, например, JavaScript). Под классом подразумевается некая сущность, которая задает некоторое общее поведение для объектов. Таким образом, любой объект может принадлежать или не принадлежать определенному классу, то есть обладать или не обладать поведением, которое данный класс подразумевает. Класс определяет для объекта контракт, то есть правила, с помощью которых с объектом могут работать другие объекты (обычно это делается с помощью определения методов класса). Кроме того классы могут находиться друг с другом в различных отношениях, таких как Наследование или Агрегация.

Виды классов

  • Базовый (родительский) класс

  • Производный класс (наследник, потомок)

  • Абстрактный (виртуальный) класс

Эти виды классов описаны в статье Наследование, так как связаны именно с этим отношением.

Члены классов

Класс определяется как список своих членов. К членам класса относятся его поля (свойства) и функции (методы) .

Каждому члену класса можно установить его область доступа (access control level). Область доступа члена класса определяет участки кода, из которых к этому члену будет возможно обращаться. В большинстве объектно-ориентированных языков программирования поддерживаются следующие области доступа:

  • private (закрытый, внутренний член класса) — обращения к члену допускаются только из кода методов класса, в котором этот член определён. Любые наследники класса уже не смогут получить доступ к этому члену;

  • protected (защищённый, внутренний член иерархии классов) — обращения к члену допускаются из кода методов класса, в котором этот член определён, или из любых его классов-наследников;

  • public (открытый член класса) — обращения к члену допускаются из любого кода.

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