DP Delphi / Pascal  ·  20 вопросов  ·  ~55 мин  ·  ⏱ Таймер 55:00  ·  Лёгкий  · 

Массивы, записи и множества

Задания проверяют практическое понимание темы «Массивы, записи и множества»: что гарантирует язык, где начинается ответственность проекта и какой тест отличит исправление от маскировки. Всего 20 вопросов, среди них 12 кодовых. Оценка разбита по разделам: «Статические массивы», «Динамические массивы», «Записи record» и «Множества set».

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: В каждом вопросе выберите один ответ из пяти. На весь тест отведено 55 минут. Код лучше сначала разобрать вручную: правильный вариант должен объяснять механизм, а не только совпадать с одним запуском.
Вопрос 1 из 20
Определите наблюдаемый результат в StaticArrayBounds: в `StaticArrayBounds` сначала встречается `TWeek = array[1..7] of Integer;`, а затем `for I := Low(Values) to High(Values) do`. Какой вывод можно сделать только после чтения обеих строк?
PascalDelphi / Pascal · Статические массивы
// Определите реальную гарантию в StaticArrayBounds.
program StaticArrayBounds;
{$APPTYPE CONSOLE}
type
  TWeek = array[1..7] of Integer;
var
  Values: TWeek;
  I, Total: Integer;
begin
  Total := 0;
  for I := Low(Values) to High(Values) do
  begin
    Values[I] := I * 2;
    Inc(Total, Values[I]);
  end;
  Writeln(Total);
end.
Вопрос 2 из 20
Две реализации темы «Динамические массивы» совпадают на обычном примере. Какое различие всё же меняет их договор?
Вопрос 3 из 20
В практическом сценарии по теме «Записи record» меняются входные данные и порядок действий. Какой вывод остаётся корректным?
Вопрос 4 из 20
Какое свойство темы «Множества set» становится решающим на граничном входе или при другом порядке действий? Рассмотрите вариант, где меняется состояние, но внешний интерфейс остаётся прежним.
Вопрос 5 из 20
Обычный пример по теме «Статические массивы» проходит, но после изменения состояния возникает дефект. Какое условие объясняет его источник?
Вопрос 6 из 20
Реализацию темы «Динамические массивы» заменяют без изменения интерфейса. Какое наблюдаемое свойство обязано сохраниться?
Вопрос 7 из 20
Обычный пример по теме «Записи record» проходит, но после изменения состояния возникает дефект. Какое условие объясняет его источник?
Вопрос 8 из 20
В теме «Множества set» есть две независимые границы поведения. Какой внешний договор не смешивает их в одно расплывчатое правило?
Вопрос 9 из 20
Правка по теме «Статические массивы» должна сохранить полезное поведение и убрать риск на соседнем сценарии. Какое требование она обязана выполнить?
Вопрос 10 из 20
Какой сценарий по теме «Динамические массивы» отличит исправную реализацию от версии со скрытым дефектом?
Вопрос 11 из 20
В теме «Записи record» есть две независимые границы поведения. Какой внешний договор не смешивает их в одно расплывчатое правило?
Вопрос 12 из 20
Какое наблюдение должен зафиксировать тест именно для последовательности `TDays = set of TDay;` → `Include(Weekend, Fri);` в `SetDemo`?
PascalDelphi / Pascal · Множества set
// Отделите правило языка от удачного запуска SetDemo.
program SetDemo;
{$APPTYPE CONSOLE}
type
  TDay = (Mon, Tue, Wed, Thu, Fri, Sat, Sun);
  TDays = set of TDay;
var
  Weekend: TDays;
begin
  Weekend := [Sat, Sun];
  Include(Weekend, Fri);
  Writeln(Ord(Fri in Weekend), ' ', Ord(Mon in Weekend));
end.
Вопрос 13 из 20
Какое свойство темы «Статические массивы» становится решающим на граничном входе или при другом порядке действий?
Вопрос 14 из 20
В теме «Динамические массивы» есть две независимые границы поведения. Какой внешний договор не смешивает их в одно расплывчатое правило?
Вопрос 15 из 20
Что напечатает `RecordCopy` после изменения полей копии `B`?
PascalDelphi / Pascal · Записи record
// Проследите фактическое поведение RecordCopy.
program RecordCopy;
{$APPTYPE CONSOLE}
type
  TUser = record
    Name: string;
    Scores: array of Integer;
  end;
var
  A, B: TUser;
begin
  A.Name := 'Ada';
  A.Scores := [1, 2];
  B := A;
  B.Name := 'Grace';
  B.Scores[0] := 9;
  Writeln(A.Name, ' ', A.Scores[0]);
end.
Вопрос 16 из 20
Правка по теме «Множества set» должна сохранить полезное поведение и убрать риск на соседнем сценарии. Какое требование она обязана выполнить?
Вопрос 17 из 20
В теме «Статические массивы» есть две независимые границы поведения. Какой внешний договор не смешивает их в одно расплывчатое правило?
Вопрос 18 из 20
В `DynamicAlias` сначала встречается `TIntArray = array of Integer;`, а затем `SetLength(B, 2);`. Какое наблюдаемое следствие относится именно к сценарию DynamicAlias?
PascalDelphi / Pascal · Динамические массивы
// Отделите правило языка от удачного запуска DynamicAlias.
program DynamicAlias;
{$APPTYPE CONSOLE}
type
  TIntArray = array of Integer;
var
  A, B: TIntArray;
begin
  A := [10, 20, 30];
  B := A;
  B[1] := 99;
  SetLength(B, 2);
  Writeln(A[1], ' ', Length(A), ' ', Length(B));
end.
Вопрос 19 из 20
Модуль, использующий тему «Записи record», передают другой команде. Какую ответственность нужно закрепить во внешнем договоре?
Вопрос 20 из 20
Какое свойство темы «Множества set» становится решающим на граничном входе или при другом порядке действий?

Ответьте на все 20 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу