2011-gre-cs-practice-book.pdf/Q40 — различия между версиями
Материал из DISCOPAL
Urmat A (обсуждение | вклад) |
Urmat A (обсуждение | вклад) |
||
Строка 3: | Строка 3: | ||
Рассмотрим следующий псевдокод: | Рассмотрим следующий псевдокод: | ||
− | < | + | <code-pascal> |
int i | int i | ||
main () | main () | ||
Строка 22: | Строка 22: | ||
S () | S () | ||
} | } | ||
− | < | + | <.code-pascal> |
Каков будет вывод программы, если псевдокод использует либо статическую (лексическую) область видимости, либо динамическую область видимости?(Область видимости [https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C_%D0%B2%D0%B8%D0%B4%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8#:~:text=%D0%9E%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C%20%D0%B2%D0%B8%D0%B4%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8%20(%D0%B0%D0%BD%D0%B3%D0%BB.,%D0%BF%D0%BE%D1%81%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B2%D0%BE%D0%BC%20%D1%81%D0%B5%D0%B1%D1%8F%20%D0%BE%D0%B1%D1%80%D0%B0%D1%82%D0%B8%D1%82%D1%8C%D1%81%D1%8F%20%D0%BA%20%D0%BD%D0%B5%D0%B9.] ) | Каков будет вывод программы, если псевдокод использует либо статическую (лексическую) область видимости, либо динамическую область видимости?(Область видимости [https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C_%D0%B2%D0%B8%D0%B4%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8#:~:text=%D0%9E%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C%20%D0%B2%D0%B8%D0%B4%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8%20(%D0%B0%D0%BD%D0%B3%D0%BB.,%D0%BF%D0%BE%D1%81%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B2%D0%BE%D0%BC%20%D1%81%D0%B5%D0%B1%D1%8F%20%D0%BE%D0%B1%D1%80%D0%B0%D1%82%D0%B8%D1%82%D1%8C%D1%81%D1%8F%20%D0%BA%20%D0%BD%D0%B5%D0%B9.] ) |
Версия 17:42, 19 декабря 2024
Задача зарезервирована: Urmat A 15:01, 19 декабря 2024 (UTC)
Вопрос: Q40-08c765
Рассмотрим следующий псевдокод:
int i main () { i = 3 S () R () } void S () { print i // prints the value of i on the current line of output print " " // prints a blank space on the current line of output } void R () { int i i = 2 S () } <.code-pascal> Каков будет вывод программы, если псевдокод использует либо статическую (лексическую) область видимости, либо динамическую область видимости?(Область видимости [https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C_%D0%B2%D0%B8%D0%B4%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8#:~:text=%D0%9E%D0%B1%D0%BB%D0%B0%D1%81%D1%82%D1%8C%20%D0%B2%D0%B8%D0%B4%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D0%B8%20(%D0%B0%D0%BD%D0%B3%D0%BB.,%D0%BF%D0%BE%D1%81%D1%80%D0%B5%D0%B4%D1%81%D1%82%D0%B2%D0%BE%D0%BC%20%D1%81%D0%B5%D0%B1%D1%8F%20%D0%BE%D0%B1%D1%80%D0%B0%D1%82%D0%B8%D1%82%D1%8C%D1%81%D1%8F%20%D0%BA%20%D0%BD%D0%B5%D0%B9.] ) === Ответы === Статическая область видимости - Динамическая область видимости # 3 2 3 2 # 3 3 2 2 # 3 3 2 3 # Правильный ответ: 3 3 3 2 # 3 3 3 3 === Объяснение === {{cstest-source|2011-gre-cs-practice-book.pdf|34|40}} *В статической области определения S() будет искать i в своей области видимости. Поскольку S() не имеет своей локальной переменной i, она будет использовать глобальную i, которая равна 3. Поэтому будет 3 3. *В динамической области определения, когда S() вызывается из R(), она будет искать i в контексте последнего вызова функции. Поскольку R() имеет локальную переменную i, равную 2, S() увидит это значение. Поэтому будет 3 2. {{question-ok|}} {{checkme|[[Участник:Urmat A|Urmat A]] 17:27, 19 декабря 2024 (UTC)}}