Главная » Все файлы » Просмотр файлов из архивов » PDF-файлы » 2015 экзамен ответы вариант 1

2015 экзамен ответы вариант 1 (Решённые задачи прошлых лет)

PDF-файл 2015 экзамен ответы вариант 1 (Решённые задачи прошлых лет) Языки программирования (53659): Ответы (шпаргалки) - 7 семестр2015 экзамен ответы вариант 1 (Решённые задачи прошлых лет) - PDF (53659) - СтудИзба2019-09-19СтудИзба

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

Файл "2015 экзамен ответы вариант 1" внутри архива находится в папке "Решённые задачи прошлых лет". PDF-файл из архива "Решённые задачи прошлых лет", который расположен в категории "". Всё это находится в предмете "языки программирования" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Просмотр PDF-файла онлайн

Текст из PDF

Ответы на вопросы экзамена по курсу«Языки программирования» 09.01.2016В ответах курсивом выделены необязательные пояснения, которые можно опустить(особенно на экзамене)Вариант 1Задача 1-1Объясните, что означает понятие «виртуальное множественное наследование» в языкеС++. Объясните, какие проблемы возникают при реализации этого понятия (неперечисляйте общих для множественного наследования проблем, а ограничьтесь толькоспецифическими проблемами виртуального наследования)?ОтветЕдиничное виртуальное наследование — это наследование виртуальной базы, котороепроисходит с помощью ключевого слова virtual:class VBase { … };class Der : public virtual VBase {...};Множественное виртуальное наследование – это наследование нескольких виртуальныхбаз.

Особенностью виртуальной базы является то, что при виртуальном множественномнаследовании одинаковые виртуальные базы объединяются а один экземпляр базы. Темсамым реализуется так называемое ромбовидное (diamond) наследование.Здесь должен быть рисунок ромба ABCD…На лекциях мы разбирали одну специфичную для виртуального наследования проблему, аименно, организацию доступа к виртуальной базе при виртуальном множественномнаследованииПроблема состоит в том, что функции наследника виртуальной базы Der должнытранслироваться СПЕЦИАЛЬНЫМ образом при единичном виртуальном наследовании.Множественного наследования еще в помине нет, а его уже нужно учитывать…Специфика проявляется при доступе функций класса Der к унаследованным членамданным из виртуальной базы.

Проблема в том, что при трансляции функций-членов классаDer реальное размещение (и, следовательно, смещения) членов-данных виртуальной базыVBase неизвестны.Так при размещении переменнойDer x;виртуальная база VBase может находиться непосредственно перед частью от Der. А принаследовании:class Der1 : public virtual VBase {...};class W : public Der1, public Der {...};при размещении переменнойW y;получается такая ситуация: пусть виртуальная база размещеается сразу перед частью отDer1, тогда между виртуальной базой и частью от Der в переменной y находитсяпромежуток (то, что унаследовано от Der1).

А функции из класса Der должны бытьоттранслированы так (без всякого знания о деталях будущего множественногонаследования), чтобы работать с виртуальной базой и для this=&x и для this=&y.Хотя относительные смещения от виртуальной базы до части Der в этих случаяхсовершенно разные. И это, конечно, проблема, которую надо решать.На этом можно и закончить — ведь проблема объяснена. Но можно (хотя инеобязательно) добавить и про возможные решения проблемы. Стандартный подходсостоит в том, что при единичном виртуальном наследовании добавляется еще односкрытое поле — указатель (ссылка) на виртуальную базу. Это указатель определяетсяпри размещении конкретной переменной (инициализируется, конечно, системной частьюконструктора).

Смещение этого поля от указателя this всегда фиксировано и неменяется при множественном наследовании. Функции производного класса никогда неработают с виртуальной базой напрямую, а только косвенно — через эту ссылку.Конечно, это требует некоторых дополнительных накладных расходов.Задача 1-2Объясните, что означают термины «семантика возобновления» и «семантика завершения».Приведите примеры языков, в которых реализована семантика завершения. Опишитепример моделирования семантики возобновления через семантику завершения.ОтветСемантика возобновления: после обработки исключения управление может вернутьсянепосредственно в точку, где возникло исключение (варианты: на следующий операторили на любой оператор из того же блока).Семантика завершения: после возникновения исключения блок, в котором оно возникло,обязательно завершается.

Обработка исключения происходит в блоках, вызвавших блок сисключением.Примеры языков: С++, Ада, Java, C#, Python, JavaScript.в некоторых случаях семантика возобновления может быть смоделирована, например, вслучае выделения возобновляемого ресурса (типа динамической памяти):Resource GetResource() {for (;;)try {Resource r = … // попытка получить ресурс, например// выделить памятьif (success) return r;throw NoResourceException();} catch (NoResourceException) {// попытка найти дополнительные ресурсы (например,// динамически собрать мусор)if (!success) throw;}}Задача 1-3Дайте определение языковой конструкции «интерфейс».

Что означает термин «интеграцияинтерфейсов в язык программирования»? Приведите два различных примера интерфейсов,интегрированных с языком Java.ОтветИнтерфейс можно рассматривать как абстрактный класс, доведенный до «абсолюта».Интерфейс состоит только из публичных абстрактных методов. Поскольку реализацииметодов нет (равно как нет и невиртуальных методов), то интерфейс не имеетнестатических членов (статические члены, например, константы допустимы). Вобъявлении интерфейса присутствуют только сигнатуры методов (а также свойств вязыках, где есть это понятие), и, возможно, статических членов и вложенных интерфейсов.Интерфейс представляет собой «чистый» контракт. Производный класс, наследуяинтерфейс, «подписывается» под контрактом.

Производный класс, наследующийинтерфейс и замещающий все его методы, называют реализацией интерфейса.Интеграция интерфейсов в язык означает, что язык (компилятор) поддерживает рядстандартных интерфейсов, позволяющих интегрировать семантику языковых конструкцийи пользовательские классы, реализующие эти интерфейсы. Например, в языке Javaстандартный интерфейс Iterable используется в цикле for-each для прохода поколлекциям. Если пользовательский класс реализует этот интерфейс, то он тоже можетиспользоваться в цикле for-each, как это можно делать со стандартными массивами иколлекциями.Другой пример — интерфейс Cloneable.

Если класс реализует интерфейс-маркерCloneable, то это означает, что класс будет реализовывать открытый метод сlone()создания своей копии:class CloneAttack implements Cloneable{public Object сlone(){// возвращает свою копию}}Тут следует отметить, что любой класс уже содержит версию метода сlone(),унаследованную от класса Object. Этот метод возвращает поверхностную копиюобъекта. Однако проблема в том, что этот метод - защищенный, поэтому можетиспользоваться только из производных классов или из классов своего пакета.

Для того,чтобы позволить копирование себя внешним классам и используется интерфейсCloneable.Задача 1-4Дайте определение «пространства имен» в языке C# и пакета в языке Java. В чем состоитосновное сходство и основное отличие этих понятий?ОтветЗадача 1-5Что будет напечатано в результате работы следующей программы на языке Python?s= range(1,5)sqr = TrueprocessFunc = sqr and (lambda s: s*s) or (lambda s: s)print([processFunc(i) for i in s])Что будет напечатано, если sqr = True заменить на sqr = False?ОтветБудет напечатан список квадратов чисел от 1 до 4: [1, 4, 9, 16].

Если sqr = Trueзаменить на sqr = False, то список самих чисел [1, 2, 3, 4]. Вспомним, чтофункция range работает с полуоткрытым диапазоном и не включает правую границу вдиапазон. Особенность выполнения логических операций в Python состоит в том, чторезультат логической операции — это всегда значение одного из операндов. В случае,если значения всех операндов — логические, то, конечно, резултат тоже будетлогическим (True или False). Если операнд не логический, то его значения 0, '', [], (),{} и None интерпретируются как ложь, все остальные значения — как истина.

Приэтом результатом выражения является не интерпретация значения соотвествующегооперанда, а его значение. Поэтому результатом операции «and» в операторе вышебудет либо False (в случае, если первый операнд - False), либо значение ее второгооперанда БЕЗ ПРЕОБРАЗОВАНИЯ ТИПА (Python вообще не любит преобразования) — тоесть лямбда-функция возведения в квадрат. Аналогично результатом операции «or» воператоре выше будет либо лямбда-функция возведения в квадрат (если sqr есть True),либо (если значение sqr - False) значение второго операнда также безпреобразования типа, то есть тождественная лямбда-функция.

Далее эта функцияприменяется для генерации списка квадратов (sqr – True), либо списка самих чисел (sqr –False).Задача 1-6Переписать программу из задачи №5 на языке С# с использованием механизма лямбдафункций и обобщенных делегатов так, чтобы она выдавала в стандартный вывод те жесамые значения.ОтветЗдесь требуется написать эквивалентный фрагмент программы, который делает то жесамое. Особенность этого искусственного примера в том, что он демонстрируеттехнику, которая позволяет экономить на проверке условия sqr – True или False длякаждого элемента списка (в C# аналогом питоньего списка будет, конечно, массив).

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