Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
30
Добавлен:
04.01.2020
Размер:
2.97 Mб
Скачать

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

Оператор присваивания является наиболее употребимым при написании программ. С помощью этого оператора вновь вычисленное значение запоминается в области памяти. Знаком операции присваивания является «:=». Присваивание является двухместной операцией .

Слева от знака «: = » располагается область памяти, представленная именем, справа – значение, которое должно быть ей присвоено. В общем случае присваиваемое значение может быть задано выражением, вычисляющим значение требуемого типа. Действие оператора присваивания заканчивается знаком «;».

Значения могут быть получены с помощью выражений. Приведем несколько простейших примеров присваиваний:

  1. X:=10; /* ОБЛАСТИ ПАМЯТИ X ПРИСВАИВАЕТСЯ КОНКРЕТНЫЙ ЛИТЕРАЛ */

  2. Y:=X; /* ОБЛАСТИ ПАМЯТИ Y ПРИСВАИВАЕТСЯ ЗНАЧЕНИЕ, ХРАНЯЩЕЕСЯ В X */

  3. J:=J+1;

  4. НОМ:= ВВОД_НОМ ( );

Смысл операций в строках 1 и 2 раскрыт в комментариях. В строке 3 области памяти J присваивается значение, которое является результатом вычисления арифметического выражения. Конкретно в строке 3 к содержимому области памяти с именем J прибавляется единица. В дальнейшей программе именно это новое значение будет фигурировать под именем J. В строке 4 области памяти НОМ присваивается значение, полученное в результате выполнения процедуры ВВОД_НОМ ( ). Здесь и в ряде примеров, приводимых ниже, используются значения, полученные в результате выполнения процедур. Значения могут быть получены с помощью процедур.

При использовании оператора присваивания необходимо помнить, что тип, заданный оператором описания для области памяти слева от «: = », должен совпадать с типом присваиваемого значения.

В CHILL предусмотрена возможность производить присваивания начальных значений областям памяти одновременно с их описанием.

Например:

  1. DСL НОМ_ЛИН INT : = 0;

  2. DСL X,Y,Z BOOL: = TRUE;

В строке 5 области памяти, описываемой именем НОМ_ЛИН имеющей тип INT, присвоено нулевое начальное значение. В строке 6 каждой из областей памяти X, Y, Z булевского типа присвоено начальное значение TRUE.

7.2.6 Области памяти с режимом «только для чтения»

Совмещение описания областей памяти с одновременной инициализацией используется также для создания специфической области памяти, из которой допускается только считывание значений. Попытка записи в нее блокируется, при этом выдается сообщение об ошибке. Создание области памяти с режимом «только для чтения» обеспечивается словом READ, которое следует поместить непосредственно перед указанием типа. Например:

DCL ЧИСЛО_ЛИНИЙ READ INT : = 100 000;

Описанную таким образом область памяти, предназначенную только для чтения, рекомендуется использовать в тех случаях, когда вычисленное один раз значение заданного типа, запоминаемое в области памяти, не должно меняться. Режим «только для чтения» может быть реализован не только для трех рассмотренных простейших типов INT, BOOL, CHAR, но и для других, определяемых в CHILL типов.

7.2.7 Выражение

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

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

В CHILL предусмотрены следующие стандартные операции:

  • арифметические операции;

  • операции отношения;

  • булевские (или логические) операции;

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

Из приведенного следует, что наивысшим приоритетом из числа приведенных обладают одноместные операции арифметического и логического отрицания (– (минус) и NOT), но еще более высоким приоритетом обладает скобочная конструкция, поэтому во всех сомнительных случаях или для того, чтобы нарушить правила приоритета, следует использовать скобки, пример I* (X + J), операция «+» заключена в скобки, позволяет выполнить сложение X и J раньше, чем операцию умножения, имеющую более высокий приоритет.

В CHILL кроме различных операций определены следующие стандартные функции (встроенные подпрограммы):

ABC (X) – вычисляет абсолютное значение.

PRED (X) – результатом является предшествующее X значение упорядоченного ряда, если оно существует, например результатом PRED (С) с учетом строки 4 является значение

'Е';

SUCC (X) – результатом является следующее за X значение упорядоченного ряда, если оно существует, например результатом SUCC (С) является значение 'G';

NUM (X) – результатом является порядковый номер (X) в упорядоченном ряде.

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

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

Следует также отметить, что функция PRED (X) невыполнима, если аргументом является наименьшее значение упорядоченного ряда, а функция SUCC (X) невыполнима, если аргументом является наибольшее значение упорядоченного ряда.

Соседние файлы в папке ЯМСЭ