2001-gre-vs-practice.pdf/Q07 — различия между версиями
Материал из DISCOPAL
(→Вопрос: Q07-e5724f) |
|||
Строка 1: | Строка 1: | ||
− | |||
{{reserve-task|[[Участник:Tiniakov.ad|Tiniakov.ad]] 13:27, 20 декабря 2024 (UTC)}} | {{reserve-task|[[Участник:Tiniakov.ad|Tiniakov.ad]] 13:27, 20 декабря 2024 (UTC)}} | ||
Строка 5: | Строка 4: | ||
<blockquote> | <blockquote> | ||
− | + | Рассмотрим следующий фрагмент кода на языке Pascal | |
− | + | ||
− | + | ||
− | + | ||
− | + | <source lang="pascal"> | |
− | + | var i, j: integer; | |
+ | procedure P(k, m: integer) | ||
+ | begin | ||
+ | k := k - m; | ||
+ | m := k + m; | ||
+ | k := m - k; | ||
+ | end; | ||
+ | i := 2; | ||
+ | j := 3; | ||
+ | P(i, j) | ||
+ | </source> | ||
− | + | Какими будут значения переменных i, j после выполнения этого фрагмента, если переменные i, j передаются в P по ссылке? | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
=== Ответы === | === Ответы === | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
+ | * i = 0, j = 2; | ||
+ | * i = 1, j = 5; | ||
+ | * i = 2, j = 3; | ||
+ | * Правильный ответ: i = 3, j = 2; | ||
+ | * среди ответов нет верного. | ||
=== Объяснение === | === Объяснение === | ||
− | + | {{cstest-source|2001-gre-vs-practice.pdf|15|7}} | |
− | {{cstest-source|2001-gre-vs-practice.pdf| | + | |
− | + | Рассмотрим вызов процедуры P. На вход ей подаются числа k = 2 и m = 3. Рассмотрим тело процедуры: | |
+ | 1) k := k - m; -- k := 2 - 3 -> в k теперь лежит -1; | ||
+ | 2) m := k + m; -- m := -1 + 3 -> в m теперь лежит 2; | ||
+ | 3) k := m - k; -- k := 2 - (-1) -> в k теперь лежит 3; | ||
+ | 4) на конец выполнения процедуры параметры k и m содержат значения 3 и 2 соответственно. | ||
+ | Поскольку i и j передавались в процедуру по ссылке, то в процессе исполнения процедуры изменяются не локальные копии i и j, а они сами. Следовательно, в конце данного фрагмента кода переменные i и j содержат значения 3 и 2 соответственно. Верный ответ - D. | ||
− | + | {{question-ok|}} | |
− | + | ||
− | + | ||
− | + | {{checkme|[[Участник:Tiniakov.ad|Tiniakov.ad]] 13:43, 20 декабря 2024 (UTC)}} | |
− | + | ||
− | {{ | + | |
[[Категория:Надо не забыть выбрать тему]] | [[Категория:Надо не забыть выбрать тему]] |
Версия 13:43, 20 декабря 2024
Задача зарезервирована: Tiniakov.ad 13:27, 20 декабря 2024 (UTC)
Вопрос: Q07-e5724f
Рассмотрим следующий фрагмент кода на языке Pascal
var i, j: integer; procedure P(k, m: integer) begin k := k - m; m := k + m; k := m - k; end; i := 2; j := 3; P(i, j)Какими будут значения переменных i, j после выполнения этого фрагмента, если переменные i, j передаются в P по ссылке?
Ответы
- i = 0, j = 2;
- i = 1, j = 5;
- i = 2, j = 3;
- Правильный ответ: i = 3, j = 2;
- среди ответов нет верного.
Объяснение
Исходники — вопрос 7 на 15 странице книги «2001-gre-vs-practice.pdf»
Рассмотрим вызов процедуры P. На вход ей подаются числа k = 2 и m = 3. Рассмотрим тело процедуры: 1) k := k - m; -- k := 2 - 3 -> в k теперь лежит -1; 2) m := k + m; -- m := -1 + 3 -> в m теперь лежит 2; 3) k := m - k; -- k := 2 - (-1) -> в k теперь лежит 3; 4) на конец выполнения процедуры параметры k и m содержат значения 3 и 2 соответственно.
Поскольку i и j передавались в процедуру по ссылке, то в процессе исполнения процедуры изменяются не локальные копии i и j, а они сами. Следовательно, в конце данного фрагмента кода переменные i и j содержат значения 3 и 2 соответственно. Верный ответ - D. Решено: Tiniakov.ad 13:43, 20 декабря 2024 (UTC)