Главная » Просмотр файлов » И.Г. Головин - Варианты письменного экзамена

И.Г. Головин - Варианты письменного экзамена (1129118), страница 3

Файл №1129118 И.Г. Головин - Варианты письменного экзамена (И.Г. Головин - Варианты письменного экзамена) 3 страницаИ.Г. Головин - Варианты письменного экзамена (1129118) страница 32019-05-11СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 3)

Дайте определение абстрактного типа данных (АТД) и абстрактногокласса (АК). Перечислите сходства и различия этих понятий. Приведитепримеры АК и АТД на каких-нибудь языках программирования (толькоспецификации – тела процедур и функций писать не надо).156. В каких из перечисленных ниже языков есть понятие «перегрузкаимен» (или «перекрытие имен»)? Объясните, что оно означает (на примерекакого-либо языка).Чем перегрузка отличается от замещения?Ада 83, Ада 95,Си, Си++, Оберон, Оберон-2, Модула-2, Java, Delphi, C#7.

Объясните, чем отличается понятие «структура» от понятия «класс»в языке C#?8. Что означает ключевое слово override в языках C# и Delphi? Почемуэто ключевое слово (или аналогичное ему) отсутствует в языке Java?16III. ОТВЕТЫ, УКАЗАНИЯ И РЕШЕНИЯ3.1. Вариант 20031.B::fB::gB::hA::hB::fB::gB::hB::h----C::fC::gA::hC::fC::gB::h2.

Ада 83, Ада 95, Delphi, C#3. Конструкция языка Delphi «uses список_имен_модулей» служит дляимпорта всех имен, объявленных в интерфейсе модулей из списка. При этомимпортированные имена становятся непосредственно видимыми (если нетконфликтов с именами из других модулей).Конструкция языка Ада «use список_имен_пакетов» обеспечиваетнепосредственную видимость имен из спецификаций пакетов из списка (еслинет конфликтов).Сходство: конструкции обеспечивают непосредственную видимостьимен из интерфейсов (спецификаций) при отсутствии конфликтов.Различие: вDelphi «uses» импортирует имена из интерфейсовбиблиотечных модулей, в Аде импорт имен обеспечивается другимиконструкциями, а «use» служит только для разрешения непосредственнойвидимости.4. Си++.Пример динамического массива в языке Java (или C#):void f(int N) {byte [] dynArray = new byte [N];// ...обработка ...}Замечание: в языках Оберон и Модула-2 длина формальныхпараметров — открытых массивов является динамическим атрибутом.

Вдругих случаях длина массива — статический атрибут. В Аде формальные17параметры неограниченных типов-массивов также имеют динамическийатрибут-длину (равно как и динамические массивы-локальные переменные).5.Семантика возобновления: после обработки исключенияуправление может вернуться непосредственно в точку, где возниклоисключение (варианты: на следующий оператор или на любой оператор изтого же блока).Пример языка: Visual Basic.Семантика завершения: после возникновения исключения блок, вкотором оно возникло, обязательно завершается. Обработка исключенияпроисходит в блоках, вызвавших блок с исключением.Пример языка: Си++.6.

В языке Ада 83 подпрограммы не могут быть параметрамиподпрограмм (еще пример: Java).7. Классы памяти:• статическая;• квазистатическая;• динамическая.В языке C# объекты классов размещаются только в динамическойпамяти.8. Один из вариантов:template <typename T, int size> class Stack{public:Stack() {top = 0;}void Push(T x);T Pop(T& x);bool IsEmpty();bool IsFull();private:Stack (const Stack& s);T body[N];int top;};183.2. Вариант 20041.X::fX::gX::gY::fY::gY::f-----------------------------Y::fX::gZ::fY::gZ::f2.Ада 95, Си++, Оберон-2, Java, Delphi, C#.3. Полностью эквивалентный фрагмент написать нельзя, поскольку Адатребует полной инкапсуляции структуры типа, а Оберон позволяет открыватьполя структуры (в примере - I открыто, а J – закрыто).

Однако можно на Аденаписать написать подпрограммы доступа для I (get/set) и добиться того жеэффекта.type T is tagged private;type T1 is new tagged T with private;procedure P(X:T; L: integer);procedure P(X:T1; L: integer);Замечание: на языке Оберон процедуры P динамически привязаны ктипу (T и T1 соответственно), однако на Аде динамическая привязка — этосвойство не метода, а вызова. Поэтому разницы между динамически истатическими привязанными методами в Аде нет.4.Ада, Delphi, C#Язык C#:try {// блок try...} finally {// блок finally...}19Блок finally обязательно выполнится после завершения блока tryнезависимо от того, нормально или аварийно (с возбуждением исключения)произойдет это завершение.5.

Класс S имеет два конструктора:–явно описанный explicit S(int);–сгенерированный конструктор копирования S(const S&);Замечание: конструктор умолчания не генерируется, так как в классеесть явно описанный конструктор.6. Конструкция package имеет вид:package имя_пакета;Она может быть только первой в единице компиляции. Смысл состоитв том, что класс, описанный в единице компиляции, относится к указанномупакету. Пакет является единицей дистрибуции Java-классов, а такжеединицей контекста.7. Тип, имя которого экспортируется, но все поля — закрыты (неэкспортируются).TYPE OpaqueT* = RECORD I:TT; J: TTT END;8.void f(){try {}}}}g(); h();catch (E1){throw;catch (E2){throw;catch (E3){throw;catch (...) {unexpected();}}3.3. Вариант 20051.A::fA::gA::gB::fB::g20B::f-----------------------------B::fA::gC::fB::gC::f2.

Семантика возобновления: после обработки исключения управлениеможет вернуться непосредственно в точку, где возникло исключение(варианты: на следующий оператор или на любой оператор из того же блока).В языке Си++ реализована другая семантика: завершения, но в некоторыхслучаях семантика возобновления может быть смоделирована, например, вслучае выделения возобновляемого ресурса (типа динамической памяти):Resource GetResource() {for (;;)try {Resource r = … // попытка получить ресурс, например// выделить памятьif (success) return r;throw NoResourceException();} catch (NoResourceException) {// попытка найти дополнительные ресурсы (например,// динамически собрать мусор)if (!success) throw;}}3.

Язык Ада (реализация в виде двунаправленного списка):generictype T is private;package G_Deque istype Deque is limited private;procedure PushRight(Deq: inout Deque; X:T);procedure PushLeft(Deq: inout Deque; X:T);procedure PopRight(Deq: inout Deque; X: out T);procedure PopLeft(Deq: inout Deque; X: out T);procedure Init(Deq: out Deque);procedure Destroy(Deq: inout Deque);function IsFull(Deq: Deque);function IsEmpty(Deq: Deque);–- другие процедуры ...privatetype PLink is access;type Link is record inf : T; next, prev : PLink; end record;type PLink is access Link;type Deque is record Left, Right: PLink; end record;end G_Deque;21Язык Java;interface IDeque<T>{void PushLeft(T x);void PushRight(T x);T PopLeft();T PopRight();bool IsFull();bool IsEmpty();// другие функции}Замечания:а). Обобщенные конструкции употреблять не обязательно (надо тольконаписать, что тип Т должен быть непосредственно видимым в точкеописания типа Deque).

Хотя обобщения здесь подходят больше.б). Структуру типа в Аде полностью выписывать необязательно.Главное — указать наличие приватной части, например:private...type Deque is …; –- структура типа Dequeend G_Deque;в). Для языка Java можно выписать не инетерфейс, а конкретный классс приватной структурой и публичными функциями-операциями. Телафункций в этом случае можно не выписывать. Но интерфейс в данном случаебольше подходит к понятию абстрактного типа данных.4.

Языки;Ада 95, Си++, Java, Delphi, C#Например, в языке Си++ абстрактная функция — это чистаявиртуальная функция. Она не обязана иметь тела и должна быть обязательнозамещена в каком-либо производном классе.5. Ключевое слово super означает в языке Java ссылку на базовыйкласс. Такое же понятие есть в языке C#, но оно называется base.Пример на Java:class A{public A(int I) { … }...}class B extends A{public B() { super(0); … }...}22Пример на C#:class A{public A(int I) { … }...}class B : A{public B() : base(0) { … }...}6.Delphi, C#«Свойство» - это член класса, который с точки зрения обращения кнему выглядит как член-данное, но с точки зрения реализации представлендвумя методами, один из которых возвращает значение свойства, а второй —устанавливает его значение.

При этом один из методов может отсутствовать,делая недоступной соответствующую операцию над свойством.Пример для языка Delphi – целое свойство Prop:type PropSample = class…privateprocedure SetPropVal(V : integer);function GetPropVal:integer;publicproperty Prop: integer read SetPropVal write GetPropVal;…end;7. Ада 83, Ада 95, Си++, Java, Delphi, C#Понятие «перегрузка» означает, что одному имени в одной областивидимости может соответствовать несколько определений. В современныхязыках программирования перегружаться могут только имена подпрограмм,но не типов, переменных, модулей.8. Основное отличие деструктора языка C# от деструктора Си++состоит в том, что неизвестен момент его вызова.

Деструктор (вдействительности — финализатор) вызывается сборщиком мусора в моментутилизации памяти, занимаемой объектом. Для ряда объектов деструкторвообще может быть не вызван. В Си++ момент вызова деструкторадостаточно точно определен.233.4. Вариант 20061. Ада, Модула-2, ПаскальОбъединение типов (или запись с вариантами) — это конструкция,объединяющая в один тип несколько различных структур (вариантов). Всеварианты в объединении начинаются с одного адрес и занимают одну и ту жепамять.Размеченное объединение типов содержит одно выделенное поле(дискретного типа данных) — общее для всех вариантов. Такое поленазывается дискриминантом.

Значение дискриминанта определяетопределяет, по какому варианту выделена память в переменной-экземпляреразмеченного объединения.2. Указатели языка Ада 83 ссылаются только на объекты издинамической памяти. Указатель языка Си++ может ссылаться на любойобъект данных (динамический, локальный, статический), что можетприводить к труднообнаружимым ошибкам.Также в языке Ада отсутствует адресная арифметика (арифметическиеоперации над указателями), что также уменьшает вероятность появленияошибки работы с памятью.3. Си, Си++Раздельная трансляция означает то, что программа разбивается начасти — физические модули или единицы компиляции. Каждая единицаможет или обязана транслироваться отдельно от остальных.Независимая раздельная трансляция означает то, что транслятор необладает информацией об уже оттранслированных единицах и поэтому неможет проверить корректность межмодульных связей.4.

Конструкция where используется в языке C# для определенияограничений на параметры родовых (другое название - обобщенных)конструкций.Ее вид: where имя_типа : список_ограничений.Виды ограничений:–интерфейс — означает, что параметр-тип должен реализовыватьэтот интерфейс;–имя класса (может быть только одно такое ограничение в списке)— означает, что параметр-тип должен быть наследником этого класса;–struct или class – означает, что параметр-тип должен бытьструктурой или классом;–new() - означает, что параметр-тип должен иметь конструкторумолчания (без параметров).245.11212331122222222336.

Характеристики

Тип файла
PDF-файл
Размер
234,09 Kb
Высшее учебное заведение

Список файлов ответов (шпаргалок)

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