Оператор присваивания

С помощью оператора присваивания в программе записываются действия, связанные с изменением значений переменных (рис. 2.9). При выполнении этого оператора вычисляется выражение, приведенное в правой части, и его результат заносится в переменную, имя которой указано слева.
Если оператор присваивания записывается в последовательности операторов, то после него ставится точка с запятой.

Например:

а) Var a, b, с . real;

Begin ...

c:=(a*a-sin(b))/(a+25.I); ...

б) Var v.boolean; a:integer; b.real;

Begin a:-8; b:=1.5;

v:=(a>5)and(b>=8); {v получит значение false}...


Для корректного выполнения операции присваивания результат выражения и переменная, записанная в правой части оператора присваивания, должны иметь одинаковые или совместимые типы.

Совместимыми считаются:

• все целые типы;

• все вещественные типы;

• отрезок некоторого базового типа и базовый тип;

• два отрезка одного базового типа;

• символ и строка.

При несовпадении типов правой и левой частей оператора присваивания для совместимых типов происходит неявное преобразование результата выражения к типу переменной, указанной в правой части. Например:

Var

L. longint; {переменная типа longint}

Е,х; extended; {переменные типа extended}

I:integer; {переменная типа integer}

R:real; {переменная типа real}

Begin ...

R:= I*E/(x+L);... {результат выражения, записанного в правой части оператора присваивания, будет иметь тип extended, однако, так как переменная R типа real, то результат будет преобразован в этот тип}

End.

Если типы правой и левой частей оператора присваивания не совместимы, то необходимо использовать явное преобразование типов.

Явное преобразование обычно выполняют посредством использования специальных функций:

Тгипс(х) - преобразует значение вещественного типа в значение целого типа, отбрасывая дробную часть;

Round(x) - преобразует значение вещественного типа в значение целого типа, округляя его до ближайшего целого;

Ord(x) - преобразует значение порядкового типа в его номер;

Chr(x) - преобразует номер символа по таблице ASCII в сам символ.

Например:

a) Var п,ni .integer; xn,xk,h:real;

Begin

xn:=1; xk: =5.7; h:=0.3;

n:=Round((xk-xn)/h); {n получит значение 16} ni:=Trunc((xk-xn)/h); ... {nl получит значение 15}

б) Var c:char; x,y:integer;

Begin x:=3;

у:- Ord(‘A ); {у получит значение 65 - код символа А

по таблице ASCII}

с:= Chr(Ord(‘A)+x); ... {с получит значение ‘D’}

Кроме того, для явного преобразования типов можно использовать функции, имена которых соответствуют идентификаторам стандартных или определенных пользователем типов. Этот вид преобразования иногда называют автоопределенным, например:

Var h. char;

... h:=Char(65); ... {h получит значение‘А’}

Следует отметить, что при данном виде преобразования изменения значения не происходит, выполняется просто изменение типа, связанного с данным значением. В результате может произойти усечение или увеличение размера значения по сравнению с исходным. В случае усечения значения (приведение к меньшему по размеру типу) возможно изменение знака преобразуемого числа. В случае же расширения значения (приведение к большему по размерам типу) знак числа всегда сохраняется.

Например:

Type Month=(Jan,Fab,Mar,Apr,May,Jun,Jul,Aug,Sep, Oct,Nov,Dec);

Var M:Month;

A, B:integer;

C:char;

L. longint;

Begin

A:-10; C: = ’E’;

B:=Integer(C); {число 69 - код символа E - длиной 2 байта}

M:=Month(A-2); {значение Sep}

L:=Longint(M);.... {значение 8}

0.4.

<< | >>
Источник: Иванова Г.С. Основы программирования. 2002

Еще по теме Оператор присваивания:

  1. ОШИБКА ОПЕРАТОРА
  2. ДЕЯТЕЛЬНОСТЬ ОПЕРАТОРА
  3. ОПЕРАТОР
  4. ОПЕРАТОР: ПРИЕМ ИНФОРМАЦИИ
  5. ОПЕРАТОР: НАДЕЖНОСТЬ
  6. ОПЕРАТОР: ПОМЕХОУСТОЙЧИВОСТЬ
  7. Профессия оператора: между техникой и искусством
  8. МЕСТО РАБОЧЕЕ: ПОЛЕ ИНФОРМАЦИОННОЕ
  9. СИСТЕМА ЭРРАТИЧЕСКАЯ
  10. МОДЕЛЬ ОБРАЗНО-КОНЦЕПТУАЛЬНАЯ
  11. Третий этап
  12. ТРЕНАЖЕР
  13. МОДЕЛЬ ИНФОРМАЦИОННАЯ
  14. Основные типы причин
  15. Первый этап
  16. МОДЕЛЬ КОНЦЕПТУАЛЬНАЯ