Главная » Просмотр файлов » 2008-2003 экзамен (из методички)

2008-2003 экзамен (из методички) (1161195), страница 2

Файл №1161195 2008-2003 экзамен (из методички) (Решённые задачи прошлых лет) 2 страница2008-2003 экзамен (из методички) (1161195) страница 22019-09-19СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

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

B::f

B::g

B::h

A::h

B::f

B::g

B::h

B::h

-----

C::f

C::g

A::h

C::f

C::g

B::h

2. Ада 83, Ада 95, Delphi, C#

3. Конструкция языка Delphi «uses список_имен_модулей» служит для импорта всех имен, объявленных в интерфейсе модулей из списка. При этом импортированные имена становятся непосредственно видимыми (если нет конфликтов с именами из других модулей).

Конструкция языка Ада «use список_имен_пакетов» обеспечивает непосредственную видимость имен из спецификаций пакетов из списка (если

нет конфликтов).

Сходство: конструкции обеспечивают непосредственную видимость имен из интерфейсов (спецификаций) при отсутствии конфликтов.

Различие: в Delphi «uses» импортирует имена из интерфейсов библиотечных модулей, в Аде импорт имен обеспечивается другими конструкциями, а «use» служит только для разрешения непосредственной видимости.

4. Си++.

Пример динамического массива в языке Java (или C#):

void f(int N) {

byte [] dynArray = new byte [N];

// ...обработка ...

}

Замечание: в языках Оберон и Модула-2 длина формальных параметров — открытых массивов является динамическим атрибутом. В других случаях длина массива — статический атрибут. В Аде формальные параметры неограниченных типов-массивов также имеют динамический атрибут-длину (равно как и динамические массивы-локальные переменные).

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;

};

3.2. Вариант 2004

1.

X::f

X::g

X::g

Y::f

Y::g

Y::f

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

Y::f

X::g

Z::f

Y::g

Z::f

2. Ада 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

...

}

Блок 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. Вариант 2005

1.

A::f

A::g

A::g

B::f

B::g

20

B::f

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

B::f

A::g

C::f

B::g

C::f

2. Семантика возобновления: после обработки исключения управление может вернуться непосредственно в точку, где возникло исключение (варианты: на следующий оператор или на любой оператор из того же блока).

В языке Си++ реализована другая семантика: завершения, но в некоторых случаях семантика возобновления может быть смоделирована, например, в случае выделения возобновляемого ресурса (типа динамической памяти):

Resource GetResource() {

for (;;)

try {

Resource r = … // попытка получить ресурс, например

// выделить память

if (success) return r;

throw NoResourceException();

} catch (NoResourceException) {

// попытка найти дополнительные ресурсы (например,

// динамически собрать мусор)

if (!success) throw;

}

}

3. Язык Ада (реализация в виде двунаправленного списка):

generic

type T is private;

package G_Deque is

type 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);

–- другие процедуры ...

private

type 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 …; –- структура типа Deque

end 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); … }

...

}

Пример на C#:

class A

{

public A(int I) { … }

...

}

class B : A

{

public B() : base(0) { … }

...

}

6. Delphi, C#

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

Пример для языка Delphi – целое свойство Prop:

type PropSample = class

private

procedure SetPropVal(V : integer);

function GetPropVal:integer;

public

property Prop: integer read SetPropVal write GetPropVal;

end;

7. Ада 83, Ада 95, Си++, Java, Delphi, C#

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

8. Основное отличие деструктора языка C# от деструктора Си++ состоит в том, что неизвестен момент его вызова. Деструктор (в действительности — финализатор) вызывается сборщиком мусора в момент утилизации памяти, занимаемой объектом. Для ряда объектов деструктор вообще может быть не вызван. В Си++ момент вызова деструктора достаточно точно определен.

3.4. Вариант 2006

1. Ада, Модула-2, Паскаль

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

Размеченное объединение типов содержит одно выделенное поле (дискретного типа данных) — общее для всех вариантов. Такое поле называется дискриминантом. Значение дискриминанта определяет определяет, по какому варианту выделена память в переменной-экземпляре размеченного объединения.

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

3. Си, Си++

Раздельная трансляция означает то, что программа разбивается на части — физические модули или единицы компиляции. Каждая единица может или обязана транслироваться отдельно от остальных. Независимая раздельная трансляция означает то, что транслятор не обладает информацией об уже оттранслированных единицах и поэтому не может проверить корректность межмодульных связей.

4. Конструкция where используется в языке C# для определения ограничений на параметры родовых (другое название - обобщенных) конструкций.

Ее вид: where имя_типа : список_ограничений.

Виды ограничений:

– интерфейс — означает, что параметр-тип должен реализовывать этот интерфейс;

– имя класса (может быть только одно такое ограничение в списке) — означает, что параметр-тип должен быть наследником этого класса;

– struct или class – означает, что параметр-тип должен быть структурой или классом;

– new() - означает, что параметр-тип должен иметь конструктор умолчания (без параметров).

5.

11212

3 3

1 1 2 2

2 2 2 2

2 2 3 3

6. Си++, Ада 83, Ада 95, Visual Basic, C#, Delphi

Пример для языка Delphi:

if ptr = nil then

raise Exception.Create('Invalid pointer');

7. Конкретизация на языке Си++:

Matrix<float> b,c;

Matrix<float> a = MatMult(b,c);

Язык Ада:

generic

type T is private;

with function “+”(x,y:T) return T (<>);

with function “*”(x,y:T) return T (<>);

type Matrix is private;

function G_MatMult(A,B: Matrix) return Matrix;

8. Объекты классов языка Си++ могут быть размещены в статической, квазистатической, динамической памяти.

3.5. Вариант 2007

1. Семантика возобновления при обработке исключений состоит в том, что после обработки исключения управление может вернуться непосредственно в точку, где возникло исключение (варианты: на следующий оператор или на любой оператор из того же блока, где возникло исключение). В перечисленных в условии языках используется другая семантика: завершения, либо вообще отсутствует понятие реакции на исключение.

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

Тип файла
Документ
Размер
41,38 Kb
Высшее учебное заведение

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

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