1 семестр сессия / Bilet21
.docБилет №21. Оператор присваивания.
Важнейшим из простых операторов Паскаля является оператор присваивания. Он позволяет изменять значение переменных в процессе выполнения программы без чего не может обойтись почти ни один алгоритм. Синтаксическая структура этого оператора:
< переменная > := < выражение >;
Оператор присваивания состоит из левой и правой частей, которые разделяются знаками присваивания (:=). Левая часть - это переменная любого типа, правая часть - выражение, совместимое по типу с переменной левой части. При выполнении этого оператора вычисляется значение выражения правой части и это значение становится значением переменной левой части. Таким образом, присваивание, это - "передача значения" справа налево.
Следует усвоить, что присваивание не является обычным равенством (почему и используется знак присваивания, отличный от равенства). Действительно, пусть Х - переменная типа integer. Тогда при выполнении последовательности присваиваний Х:=2; Х:=Х+5; переменная Х получит значение 7, в то же время, очевидно, что второе присваивание не является равенством. Заметим, что присваивание такого вида часто используется в программах, и в Турбо Паскале предусмотрен сокращенный вариант записи этих присваиваний (стандартные процедуры inc и dec):
inc(X,j) ~ X:=X + j; dec(X,j) ~ X - j; где j - любое выражение типа integer.
Если j=1, возможна и ещё более короткая запись: inc(X) или dec(X).
Совместимость левой и правой частей присваивания по типу означает либо равенство типов, либо случаи, когда тип выражения правой части автоматически преобразуется к типу левой части. Эти случаи автоматического преобразования типов (для известных нам стандартных типов) исчерпываются следующими:
Тип переменной левой части real, а тип выражения правой части - integer, т.е. преобразование вида real integer.
Тип переменной левой части string, а тип выражения правой части - char, т.е. преобразование вида string char.
Для согласования типа выражения с типом переменной левой части присваивания иногда могут потребоваться явные преобразования типов, которые можно выполнить с помощью стандартных функций Паскаля.
Задача 4.2.6(21)
program Project21;
type mas=array[1..4,1..5] of Integer;
mass=array[1..5] of integer;
var a:mas;
b:mass;
i,j:Integer;
procedure p(x:mas; e:Integer; var y:integer);
var i,k:Integer;
begin
k:=0;
for i:=2 to 4 do
if x[i,e]<x[i-1,e] then k:=k+1;
if k=0 then y:=1
else y:=0;
end;
begin
for i:=1 to 4 do
for j:=1 to 5 do
read(a[i,j]);
writeln;
for i:=1 to 5 do
begin
p(a,i,b[i]);
write(b[i],' ');
end;
Readln;
end.