2011-gre-cs-practice-book.pdf/Q40 — различия между версиями
Urmat A (обсуждение | вклад) |
Urmat A (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
− | {{reserve-task|[[Участник:Urmat A|Urmat A]] 15:01, 19 декабря 2024 (UTC)}}== Вопрос: Q40-08c765 == | + | {{reserve-task|[[Участник:Urmat A|Urmat A]] 15:01, 19 декабря 2024 (UTC)}} |
+ | == Вопрос: Q40-08c765 == | ||
− | < | + | Рассмотрим следующий псевдокод: |
− | + | <source> | |
− | + | 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 () | ||
+ | } | ||
+ | </source> | ||
− | + | Каков будет вывод программы, если псевдокод использует либо статическую (лексическую) область видимости, либо динамическую область видимости?(Область видимости [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:26, 19 декабря 2024 (UTC)}} | |
− | + | ||
− | {{ | + |
Версия 17:26, 19 декабря 2024
Задача зарезервирована: Urmat A 15:01, 19 декабря 2024 (UTC)
Вопрос: Q40-08c765
Рассмотрим следующий псевдокод:
Указан неподдерживаемый язык.
Вы должны указать язык следующим образом: <source lang="html4strict">...</source>
Поддерживаемые языки:
4cs, 6502acme, 6502kickass, 6502tasm, 68000devpac, abap, actionscript, actionscript3, ada, algol68, apache, applescript, apt_sources, arm, asm, asp, asymptote, autoconf, autohotkey, autoit, avisynth, awk, bascomavr, bash, basic4gl, bf, bibtex, blitzbasic, bnf, boo, c, c_loadrunner, c_mac, caddcl, cadlisp, cfdg, cfm, chaiscript, cil, clojure, cmake, cobol, coffeescript, cpp, cpp-qt, csharp, css, cuesheet, d, dcl, dcpu16, dcs, delphi, diff, div, dos, dot, e, ecmascript, eiffel, email, epc, erlang, euphoria, f1, falcon, fo, fortran, freebasic, freeswitch, fsharp, gambas, gdb, genero, genie, gettext, glsl, gml, gnuplot, go, groovy, gwbasic, haskell, haxe, hicest, hq9plus, html4strict, html5, icon, idl, ini, inno, intercal, io, j, java, java5, javascript, jquery, kixtart, klonec, klonecpp, latex, lb, ldif, lisp, llvm, locobasic, logtalk, lolcode, lotusformulas, lotusscript, lscript, lsl2, lua, m68k, magiksf, make, mapbasic, matlab, mirc, mmix, modula2, modula3, mpasm, mxml, mysql, nagios, netrexx, newlisp, nsis, oberon2, objc, objeck, ocaml, ocaml-brief, octave, oobas, oorexx, oracle11, oracle8, oxygene, oz, parasail, parigp, pascal, pcre, per, perl, perl6, pf, php, php-brief, pic16, pike, pixelbender, pli, plsql, postgresql, povray, powerbuilder, powershell, proftpd, progress, prolog, properties, providex, purebasic, pycon, pys60, python, q, qbasic, rails, rebol, reg, rexx, robots, rpmspec, rsplus, ruby, sas, scala, scheme, scilab, sdlbasic, smalltalk, smarty, spark, sparql, sql, stonescript, systemverilog, tcl, teraterm, text, thinbasic, tsql, typoscript, unicon, upc, urbi, uscript, vala, vb, vbnet, vedit, verilog, vhdl, vim, visualfoxpro, visualprolog, whitespace, whois, winbatch, xbasic, xml, xorg_conf, xpp, yaml, z80, zxbasic
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 () }
Каков будет вывод программы, если псевдокод использует либо статическую (лексическую) область видимости, либо динамическую область видимости?(Область видимости [1]
Ответы
Статическое область видимости - Динамическое область видимости
- 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. Решено: Urmat A 17:26, 19 декабря 2024 (UTC)