Современное программирование предлагает пользователям использовать самые разнообразные языки программирования. Но основой основ является Паскаль.Данный язык был разработан в 1971 году в Университете Цюриха профессором Никлаусом Виртом. Его предназначение изначально было учебным. Имея достаточно четко выраженную структуру и систему предоставления данных Паскаль имел ограничения в функциях ввода - вывода, при создании подпрограмм.

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

С помощью оператора присваивания в программме записывают действия, связанные с изменеием значений переменных.

Синтаксическая диаграмма конструкции <Оператор присваивания>

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

A) Var a, b, c:real;

Begin ...

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

B) Var v:boolean; a:integer; b:real;

Begin a:=8; b:=1.5;

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

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

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

  • все целые типы;
  • все вещественные типы;
  • отрезок базового типа и базовый тип;
  • два отрезка базового типа;
  • символ и строка.

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

Var

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

E, x:extended; {переменная типа extended}

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

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

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

End.

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

1. Trunc (x) - преобразует значение вещественного типа в значение целого типа, отбрасывая дробную часть.

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

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

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

Например:

A) Var n, n1:integer; xn, xk, h:real;

Begin

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

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

n1:=Trunc ((xk-xn)/h); {n1 получит значение 15}

B) Var c:=char; x, y:integer;

Begin x:=3

y:=Ord(`A`); {y получит значение 65 - код символа A по таблице ASCII}

c:=chr(Ord(`A`)+x);... {c получит значение `D`}

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

Var h:char;

...h:=char(65);... {h получит значение `A`}

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

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}

Hosted by uCoz