Class09':
1. Определить, что будет выдано на печать:
type натур=1..maxint;
var m,n:натур;
function Н О Д (a,b : натур) : натур;
begin while a<>b do
if a>b then a:=a-b
else b:=b-a;
Н О Д :=a
end;
begin
m:=8; n:=6;
writeln(Н О Д(m,n), m, n);
end.
2. Что будет напечатано программой:
var c,d: integer;
procedure РАЗ (x,y:integer);
begin y:=x+1 end;
procedure ДВА(x:integer; var y:integer);
begin y:=x+1 end;
procedure ТРИ(var x,y:integer);
begin y:=x+1 end;
begin
c:=2; d:=0; РАЗ (sqr(c)+c,d); writeln(d);
c:=2; d:=0; ДВА (sqr(c)+c,d); writeln(d);
end.
a) Почему при изменинии в процедуре параметра-значения фактический параметр
не меняет своего значения? Что надо сделать, чтобы он поменял значение?
b) Допустимы ли обращения ТРИ(sqr(c)+c,d) и ТРИ(c,d)? Почему не выгодно
объявлять параметр, не меняющийся в процедуре, параметром-переменной?
3. Пусть функция F(x) имеет вид:
Function F(x:real):real;
begin
v:=v*x;
F:=sqr(v)+x
end;
Какие результаты будут принимать два выражения F(x)+v и v+F(x).
4. Что будет напечатано программой?
а) программа ПЕЧАТЬ(результат);
var x,y:char;
процедура РАЗ(x:integer);
const y=true;
begin writeln(x,' ',y) end;
процедура ДВА;
var x:char;
begin x:=succ(y); y:='*'; writeln(x,' ',y) end;
begin x:='a'; y:='5';
РАЗ(8); writeln(x,' ',y);
ДВА; writeln(x,' ',y)
end.
b) программа ПЕЧАТЬ(результат);
var a,b,c,d:integer;
процедура РАЗ(var b:integer; c:integer);
var d: integer;
begin a:=5; b:=6; c:=7; d:=8;
writeln(a,b,c,d) end;
begin a:=1; b:=6; c:=3; d:=4;
РАЗ(a,b); writeln(a,b,c,d);
end.
5. type неотриц=0..maxint;
Найти значение: n!*m!/(n+m)!, где n и m - неотрицательные целые числа,
использовать функцию вычисления факториала.