ОПЕРАТОР ПРИСВАИВАНИЯ
Действие оператора присваивания заключается в вычислении значения выражения и присваивании этого значения переменной. Например, после выполнения операторов i:=5;i:=i+3 значение переменной iбудет равно 8.
Тип переменной в левой части оператора присваивания должен быть совместим по присваиванию с типом выражения в правой части. Для разных типов требования совместимости по присваиванию различны. Любой целый тип совместим по присваиванию только с целым. Вещественный совместим по присваиванию и с целым, и с вещественным. После описания varj:integer; оператор j:=6/2 недопустим, так как операция деления формирует результат вещественного типа, который не может быть присвоен целому.
Оператор присваивания используется как для инициализации переменных, так и для изменения их значений.
9. Символьный тип
Имя символьного типа char. Значениями символьного типа являются символы из определенного набора символов, который зависит от конкретной реализации языка. В этот набор входят некоторые символы алфавита и, возможно, другие символы. Среди них могут быть символы, не имеющие графических изображений (например, символ перехода к новой строке). Все символы пронумерованы. Их номера - коды. Множество значений символьного типа является упорядоченным множеством (чем больше код, тем больше символ). В различных реализациях символы могут быть упорядочены по-разному, но обязательно выполнение следующих условий:
Коды цифр последовательные числа и '0' < '1'< '2' < ...< '9'.
Прописные и строчные буквы должны быть упорядочены по алфавиту, но не требуется, чтобы коды были последовательными числами.
В ТР множеством значений символьного типа является множество символов из расширенной таблицы ASCII, состоящей из 256 символов. Первая половина таблицы (с кодами от 0 до 127) неизменяемая, вторая (с кодами от 128 до 255)альтернативная. Символы с кодами меньше 32 являются управляющими, пробел имеет код 32. Цифры, латинские буквы, некоторые знаки операций, разделители находятся в первой половине таблицы. Важная особенность: строчные латинские и прописные латинские буквы имеют последовательные коды. Альтернативная часть таблицы содержит буквы русского алфавита, символы псевдографики.
Над данными символьного типа не определены никакие операции, кроме операций сравнения. Поэтому выражениями символьного типа являются константы, переменные и функции, возвращающие значения типа char.
Стандартные функции, используемые при работе с символами:
chr(i) возвращает символ по его кодуi
ord(c) возвращает код символас
Примеры:
Значением выражения ord(‘7’)-ord(‘0’) является число 7.
Значением выражения chr(ord(‘A’)+5) является шестая буква латинского алфавита.
10. Логический тип
Имя логического типа boolean. Множество значений: false и true. Значение логического типа занимает 1 байт.False (ложь) и true (истина) хранятся в памяти как 0 и 1 соответственно. Тип упорядочен: false<true.
10.1.Логические операции
Название |
Знак операции |
Запись на Паскале |
Приоритет операции |
Отрицание |
not |
not a |
1 |
Конъюнкция |
and |
a and b |
2 |
Дизъюнкция |
or |
a or b |
3 |
Исключающее или (сложение по модулю 2) |
xor
|
a xor b
|
3 |
Типы операндов и тип результата boolean.
Результат логической операции определяется в соответствии с таблицей истинности (1 true, 0false).
Таблица истинности
-
x
y
not x
x and y
x or y
x xor y
1
1
0
1
1
0
1
0
0
0
1
1
0
1
1
0
1
1
0
0
1
0
0
0
Два выражения, соединенные одним из знаков сравнения, образуют логическое выражение, которое называется отношением. Все шесть операций сравнения (>, <, >=, <=, =, <>) определены над числовыми, символьным, логическим, перечисляемым, строковым типами.
Если операндами логических операций являются отношения, то в Паскале они должны быть заключены в круглые скобки, так как операции сравнения имеют более низкий приоритет, чем логические операции.
Примеры логических выражений на Паскале:
Неравенство 2x<5 имеет вид (2<=x) and (x<5).
Условие x[2; 5) имеет вид (x<2)or(x>=5).
Высказывание «с латинская буква» имеет вид
(с>=’A’) and (c<=’Z’) or (с>=’a’) and (c<=’z’).
В ТР по умолчанию, то есть если не указано иначе, при вычислении логического выражения операнды вычисляются до тех пор, пока значение логического выражения не станет определенным. Например, если значение первого операнда дизъюнкции истина, то значение второго операнда вычисляться не будет. Если значение первого операнда конъюнкцииложь, то значение второго операнда вычисляться не будет. С учетом сказанного, несмотря на то, что бинарные логические операции коммутативны, следует обращать внимание на последовательность операндов в логических выражениях.
Значение выражения (b<>0)and(a/b>10) определено при любыхb, при перестановке операндов этого выражения значение не может быть вычислено приb=0, и при выполнении программы произойдет аварийный останов.