2011-gre-cs-practice-book.pdf/Q40 — различия между версиями

Материал из DISCOPAL
Перейти к: навигация, поиск
 
(не показаны 3 промежуточные версии этого же участника)
Строка 1: Строка 1:
{{reserve-task|[[Участник:Urmat A|Urmat A]] 15:01, 19 декабря 2024 (UTC)}}
 
 
== Вопрос: Q40-08c765 ==
 
== Вопрос: Q40-08c765 ==
  
Строка 26: Строка 25:
  
 
Каков будет вывод программы, если псевдокод использует либо статическую (лексическую) область видимости, либо динамическую [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. область видимости]?
 +
 +
Вариант приведены в формате «Статическая область видимости» | «Динамическая область видимости»
  
 
=== Ответы ===
 
=== Ответы ===
Статическая область видимости - Динамическая область видимости
+
* «3 2» | «3 2»
# 3 2 3 2
+
* «3 3» | «2 2»
# 3 3 2 2
+
* «3 3» | «2 3»
# 3 3 2 3
+
* Правильный ответ: «3 3» | «3 2»
# Правильный ответ: 3 3 3 2
+
* «3 3» | «3 3»
# 3 3 3 3
+
  
 
=== Объяснение ===
 
=== Объяснение ===
Строка 41: Строка 41:
 
*В статической области определения S() будет искать i в своей области видимости. Поскольку S() не имеет своей локальной переменной i, она будет использовать глобальную i, которая равна 3. Поэтому будет 3 3.
 
*В статической области определения S() будет искать i в своей области видимости. Поскольку S() не имеет своей локальной переменной i, она будет использовать глобальную i, которая равна 3. Поэтому будет 3 3.
 
*В динамической области определения, когда S() вызывается из R(), она будет искать i в контексте последнего вызова функции. Поскольку R() имеет локальную переменную i, равную 2, S() увидит это значение. Поэтому будет 3 2.
 
*В динамической области определения, когда S() вызывается из R(), она будет искать i в контексте последнего вызова функции. Поскольку R() имеет локальную переменную i, равную 2, S() увидит это значение. Поэтому будет 3 2.
{{question-ok|}}
 
  
{{checkme|[[Участник:Urmat A|Urmat A]] 17:27, 19 декабря 2024 (UTC)}}
+
{{question-ok|[[Участник:StasFomin|StasFomin]] 21:29, 19 декабря 2024 (UTC)}}
 +
 
 +
[[Категория:Понимание кода]]

Текущая версия на 21:29, 19 декабря 2024

Вопрос: 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 ()
} 

Каков будет вывод программы, если псевдокод использует либо статическую (лексическую) область видимости, либо динамическую область видимости?

Вариант приведены в формате «Статическая область видимости» | «Динамическая область видимости»

Ответы

  • «3 2» | «3 2»
  • «3 3» | «2 2»
  • «3 3» | «2 3»
  • Правильный ответ: «3 3» | «3 2»
  • «3 3» | «3 3»

Объяснение

Исходники — вопрос 40 на 34 странице книги «2011-gre-cs-practice-book.pdf»

  • В статической области определения S() будет искать i в своей области видимости. Поскольку S() не имеет своей локальной переменной i, она будет использовать глобальную i, которая равна 3. Поэтому будет 3 3.
  • В динамической области определения, когда S() вызывается из R(), она будет искать i в контексте последнего вызова функции. Поскольку R() имеет локальную переменную i, равную 2, S() увидит это значение. Поэтому будет 3 2.