Вопрос задан 24.05.2026 в 08:16. Предмет Информатика. Спрашивает Курнов Андрей.

Что напечатает следующая программа? program p3; var x,y:integer; procedure p1 (var a,b:integer); begin a:=sqr(a); b:=sqr(a)+a; end; procedure p2 (a,b:integer); begin a:=sqr(a); b:=sqr(b)+b; end; begin x:=2; y:=2; p1(x,y); writeln ('x=',x,' y=',y); p2(x,y); writeln ('x=',x,' y=',y); end.

Перейти к ответам

Ответы на вопрос

Отвечает Морський Макс.

Разберём пошагово, что делает эта программа на Pascal.


Исходный код программы:

pascal
program p3;
var x, y: integer;

procedure p1(var a, b: integer);
begin
a := sqr(a);
b := sqr(a) + a;
end;

procedure p2(a, b: integer);
begin
a := sqr(a);
b := sqr(b) + b;
end;

begin
x := 2;
y := 2;
p1(x, y);
writeln('x=', x, ' y=', y);
p2(x, y);
writeln('x=', x, ' y=', y);
end.

Пошаговый разбор

1. Начальные значения:

x = 2
y = 2

2. Вызов p1(x, y)

pascal
procedure p1(var a, b: integer);
begin
a := sqr(a); // a = 2^2 = 4
b := sqr(a) + a; // b = 4^2 + 4 = 16 + 4 = 20
end;

Важно, что параметры a и b объявлены как var, то есть передаются по ссылке. Это значит, что изменения внутри процедуры изменяют исходные переменные x и y.

После выполнения p1:

x = 4
y = 20

Вывод:

x=4 y=20

3. Вызов p2(x, y)

pascal
procedure p2(a, b: integer);
begin
a := sqr(a); // a = 4^2 = 16
b := sqr(b) + b; // b = 20^2 + 20 = 400 + 20 = 420
end;

Параметры a и b объявлены без var, то есть передаются по значению. Это значит, что изменения внутри процедуры не влияют на x и y в основной программе.

После выполнения p2:

x = 4
y = 20

Вывод:

x=4 y=20

Итоговый вывод программы:

x=4 y=20
x=4 y=20

Если кратко:

  • p1 изменяет x и y, потому что параметры var.

  • p2 не изменяет x и y, потому что параметры по значению.

Похожие вопросы

Топ вопросов за вчера в категории Информатика

Последние заданные вопросы в категории Информатика

Информатика 21.05.2026 10:15 7 Гафаров Александр
Задать вопрос