Рубрики

ВОРОТА | GATE-CS-2003 | Вопрос 73

Следующий фрагмент программы написан на языке программирования, который допускает переменные и не допускает вложенных объявлений функций.

global int i = 100, j = 5;

void P(x)

{

    int i = 10;

    print(x + 10);

    i = 200;

    j = 20;

    print(x);

}
main()
{

    P(i + j);

}

Если язык программирования использует статическую область видимости и механизм передачи параметров по требованию, значения, напечатанные вышеуказанной программой:

(А) 115, 220
(Б) 25, 220
(С) 25, 15
(D) 115, 105

Ответ: (D)
Пояснение: Фон:
Call-by-Need — это декларативная и функциональная парадигма языка. В отличие от вызова по значению, он только оценивает аргумент, переданный функции, когда это необходимо, и кэширует его для дальнейшего использования. Вызов по имени немного отличается от запроса по необходимости в том смысле, что он оценивает только ленивым образом, но не кэширует вычисленное значение. Следовательно, для вызова по требованию требуется один раз оценить, используется ли аргумент, для вызова по значению требуется его оценка независимо от того, используется этот аргумент или нет, а вызов по имени оценивает один и тот же аргумент несколько раз, как и когда это используется.

Рекомендуемые посты:

ВОРОТА | GATE-CS-2003 | Вопрос 73

0.00 (0%) 0 votes