Оператор присваивания. Запись арифметических выражений — КиберПедия 

История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...

Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...

Оператор присваивания. Запись арифметических выражений

2017-11-18 324
Оператор присваивания. Запись арифметических выражений 0.00 из 5.00 0 оценок
Заказать работу

В блок-схемах обычная математическая запись , означающая, что переменная y принимает значение выражения , представляется в виде . При выполнении этого оператора переменная y теряет свое предыдущее значение и получает новое значение.

В машинном представлении выполнение оператора сводится к следующему. В памяти ЭВМ отведены поля (ячейки) с именами a, x, b, y. Вначале читаются из памяти в процессор значения a, x, b (содержимое полей памяти с именами a, x, b), затем в процессоре выполняются арифметические действия a * x + b, после чего полученное значение выражения a*x+b записывается в ячейку y.

В обычной математической записи знак «=» имеет два смысла. Запись можно рассматривать как описанное выше присваивание переменной y нового значения, а можно рассматривать, как проверку на равенство значения переменной y результату вычисления выражения, стоящего в правой части.

Чтобы избежать двусмысленностей при компиляции программы, простой знак «=» в Паскале используется для проверки на равенство левой и правой частей (логический оператор отношения), а для присваивания используется символ, состоящий из двоеточия и знака равенства (без пробелов между ними!) «:=» (оператор присваивания).

Использование операции присваивания позволяет записывать такие конструкции, которые в обычной математической интерпретации бессмысленны. Например, i:= i + 1. Это означает, что к текущему значению переменной i добавляется 1, после чего полученное значение присваивается той же переменной i. Следовательно, значение переменной i увеличивается на единицу.

Пример. Обменять значения переменных a и b.

Если мы перешлем содержимое поля a в поле b, т.е. выполним оператор b:= a, то прежнее значение переменной b будет уничтожено. При выполнении оператора a:= b будет уничтожено текущее содержимое поля a. Поэтому обмен содержимого двух полей памяти необходимо делать с помощью дополнительного буферного поля. Это может иметь следующий вид:

 

R:= a; a:= b; b:= R;

 

В Паскале оператор присваивания имеет такое же обозначение, как и на блок-схеме. Его синтаксическая диаграмма:

переменная:= выражение;

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

Старшинство операций:

1) not;

2) *, /, div, mod, and;

3) +, -, or, xor;

4) =, <>, <, <=, >, >=;

5) in.

Выражения могут быть арифметические, логические и строковые.

Как было сказано выше, в Паскале существуют различные типы данных. Чтобы оператор присваивания был синтаксически правильным, переменная и выражение должны быть совместимы по типу. Это значит, что они должны быть либо одного и того же типа, либо тип переменной должен быть таким, чтобы выражение мог без потерь преобразоваться к нему. Для пояснения последнего свойства приведём несколько примеров:

если выражение целого типа, а переменная вещественного, они совместимы, потому что целое число может быть без потерь представлено в вещественном формате;

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

Пример.

Var

a, b: real;

m, n: integer;

Begin

a:= 55.85; m:= 15;

b:= m;

n:= a;

В операторе n:= a не выполняется требование совместимости по типу. Если бы допустить выполнение такого оператора, то имела бы место потеря точности, так как переменной n можно присвоить только целую часть значения переменной a (при присваивании b:= m потери точности не происходит). Если в программе действительно нужно присвоить переменной n значение переменной a, то это нужно сделать следующим образом:

n:= Trunc(a) или n:= Round(a).

Другие варианты совместимости по типу будут рассмотрены позже.


Поделиться с друзьями:

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

Особенности сооружения опор в сложных условиях: Сооружение ВЛ в районах с суровыми климатическими и тяжелыми геологическими условиями...

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

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.008 с.