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

Процедуры, функции и параметры

Этот тест проверяет не память на названия, а способность разбирать код, видеть границы механизма и выбирать исправление, которое не ломает соседние сценарии. Внутри 20 вопросов, из них 12 с фрагментами Object Pascal. Отдельные результаты показываются по разделам: «Параметры по значению», «Параметры var и out», «Значение функции» и «Перегрузка».

Отвечено: 0 из 20
⏱ --:--
0%
💡 Инструкция: В каждом вопросе выберите один ответ из пяти. На весь тест отведено 55 минут. Код лучше сначала разобрать вручную: правильный вариант должен объяснять механизм, а не только совпадать с одним запуском.
Вопрос 1 из 20
В `ValueParameter` сначала встречается `A[0] := 99;`, а затем `Writeln(Data[0], ' ', Length(Data));`. Какой вывод можно сделать только после чтения обеих строк?
PascalDelphi / Pascal · Параметры по значению
// Проследите фактическое поведение ValueParameter.
program ValueParameter;
{$APPTYPE CONSOLE}
type
  TIntArray = array of Integer;
procedure Change(A: TIntArray);
begin
  A[0] := 99;
  SetLength(A, 1);
end;
var
  Data: TIntArray;
begin
  Data := [1, 2, 3];
  Change(Data);
  Writeln(Data[0], ' ', Length(Data));
end.
Вопрос 2 из 20
Правка по теме «Параметры var и out» должна сохранить полезное поведение и убрать риск на соседнем сценарии. Какое требование она обязана выполнить?
Вопрос 3 из 20
Какой сценарий по теме «Значение функции» отличит исправную реализацию от версии со скрытым дефектом?
Вопрос 4 из 20
Правка по теме «Перегрузка» должна сохранить полезное поведение и убрать риск на соседнем сценарии. Какое требование она обязана выполнить?
Вопрос 5 из 20
Модуль, использующий тему «Параметры по значению», передают другой команде. Какую ответственность нужно закрепить во внешнем договоре?
Вопрос 6 из 20
Какое свойство темы «Параметры var и out» становится решающим на граничном входе или при другом порядке действий?
Вопрос 7 из 20
Модуль, использующий тему «Значение функции», передают другой команде. Какую ответственность нужно закрепить во внешнем договоре?
Вопрос 8 из 20
В теме «Перегрузка» есть две независимые границы поведения. Какой внешний договор не смешивает их в одно расплывчатое правило?
Вопрос 9 из 20
В практическом сценарии по теме «Параметры по значению» меняются входные данные и порядок действий. Какой вывод остаётся корректным?
Вопрос 10 из 20
Две реализации темы «Параметры var и out» совпадают на обычном примере. Какое различие всё же меняет их договор?
Вопрос 11 из 20
В теме «Значение функции» есть две независимые границы поведения. Какой внешний договор не смешивает их в одно расплывчатое правило?
Вопрос 12 из 20
В `OverloadByModifier` сначала встречается `procedure Save(Value: Integer); overload;`, а затем `procedure Save(var Value: Integer); overload;`. Какое наблюдаемое следствие относится именно к сценарию OverloadByModifier?
PascalDelphi / Pascal · Перегрузка
// Разберите, почему объявления OverloadByModifier конфликтуют.
program OverloadByModifier;
{$APPTYPE CONSOLE}
procedure Save(Value: Integer); overload;
begin
end;
procedure Save(var Value: Integer); overload;
begin
end;
begin
end.
Вопрос 13 из 20
Обычный пример по теме «Параметры по значению» проходит, но после изменения состояния возникает дефект. Какое условие объясняет его источник?
Вопрос 14 из 20
В теме «Параметры var и out» есть две независимые границы поведения. Какой внешний договор не смешивает их в одно расплывчатое правило?
Вопрос 15 из 20
Две версии `FunctionResult` сохраняют порядок `Result := 'negative'` → `Writeln(Classify(0));`. Какое свойство останется общим для обеих?
PascalDelphi / Pascal · Значение функции
// Проследите фактическое поведение FunctionResult.
program FunctionResult;
{$APPTYPE CONSOLE}
function Classify(N: Integer): string;
begin
  if N < 0 then
    Result := 'negative'
  else if N = 0 then
    Result := 'zero'
  else
    Result := 'positive';
end;
begin
  Writeln(Classify(0));
end.
Вопрос 16 из 20
В практическом сценарии по теме «Перегрузка» меняются входные данные и порядок действий. Какой вывод остаётся корректным?
Вопрос 17 из 20
В теме «Параметры по значению» есть две независимые границы поведения. Какой внешний договор не смешивает их в одно расплывчатое правило?
Вопрос 18 из 20
Какой граничный результат следует ожидать в `VarOutDemo`, когда после `procedure Parse(const S: string; var Attempts: Integer; out Value: Integer);` выполняется `Writeln(Tries, ' ', N);`?
PascalDelphi / Pascal · Параметры var и out
// Определите реальную гарантию в VarOutDemo.
program VarOutDemo;
{$APPTYPE CONSOLE}
procedure Parse(const S: string; var Attempts: Integer; out Value: Integer);
begin
  Inc(Attempts);
  Value := Length(S);
end;
var
  N, Tries: Integer;
begin
  N := 777;
  Tries := 0;
  Parse('abc', Tries, N);
  Writeln(Tries, ' ', N);
end.
Вопрос 19 из 20
Обычный пример по теме «Значение функции» проходит, но после изменения состояния возникает дефект. Какое условие объясняет его источник?
Вопрос 20 из 20
Обычный пример по теме «Перегрузка» проходит, но после изменения состояния возникает дефект. Какое условие объясняет его источник?

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

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

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

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