Арифметические операции. В Паскале определены следующие операции этой группы:
В Паскале определены следующие операции этой группы:
+ - сложение
- - вычитание
* - умножение
/ - деление вещественных чисел
div – деление целых чисел
mod - остаток от деления целых чисел
and – арифметическое И
shl – сдвиг влево целого числа на заданное число двоичных разрядов
shr - сдвиг вправо целого числа на заданное число двоичных разрядов
or – логическое сложение операндов
xor – исключающее ИЛИ
not – арифметическое отрицание
Операции сложения (+), вычитания (-), умножения (*) и деления (/) выполняются так же, как и в обычных арифметических выражениях.
Например,
123 + 456 = 579
456 – 123.0 = 333.0
12 * 34 = 408
123 / 4 = 30.75
Задание 4.1
1. Запишите на Паскале следующие формулы:
а) a + bx + cyz; б) [(ax – b) x + c] x – d;
в) + ; г) × ;
д) 104 a - 3 b; е) (1 + + ) / (1+ ).
2. Запишите в общепринятой форме:
а) (p + q) / (r + s) – p * q / (r * s);
б) 1E3 + beta / (x2 – gamma * delta.
Целочисленное деление (div)отличается от обычной операции деления тем, что возвращает целую часть частного, дробная часть отбрасывается. Результат целочисленного деления всегда равен нулю, если делимое меньше делителя.
Например,
11 div 5 = 2
10 div 3 = 3
2 div 13 = 0
Деление по модулю (mod) восстанавливает остаток, полученный при выполнении целочисленного деления.
Например,
11 mod 5 = 1
10 mod 3 = 1
14 mod 5 = 4
Пример 4.1Программа читает значение времени t, заданное в часах и минутах, а печатает t в часах и минутах.
program time;
var t, tm, th : integer;
Begin
write(‘Введите время в минутах’);
read(t);
th := t div 60; tm := t mod 60;
writeln(th:2, ‘час.’:5, tm:3, ‘мин.’:5)
End.
Задание 4.2
1. Вычислите значения выражений:
а) 20 div 6; б) 20 mod 6;
в) 20 div 4; г) 20 mod 4;
д) 2 div 5; е) 2 mod 5;
ж) 27 div 0; г) 7.0 mod 7.
2. Укажите порядок выполнения операций в выражении, расставив скобки: - а mod b + a div b*c.
Если типы переменных, участвующих в выражении, совпадают, то никаких преобразований не делается, и все вычисления происходят в том же типе. Вычисленный результат преобразуется (если это требуется) к типу переменной, стоящей в левой части оператора присваивания (преобразование возможно только из типа integer к типу real). Смешение типов integer и real допустимо только для операций + и -.
Операции сдвига shl и shr выполняются быстрее, чем соответствующие операции деления и умножения на степень двойки.
Например,
2 shl 7 = 256
256 shr 6 = 4
Логические операции
Результатом выполнения логического (булевского) выражения является логическое значение true или false. Операндами служат только данные булевского типа.
not – логическое отрицание
and – И (логическое умножение)
or – ИЛИ (логическое сложение)
xor – исключающее ИЛИ
Таблица – Логические операции
Выражение | А | В | Результат |
not A | true | false | |
false | true | ||
A and B | true | true | true |
true | false | false | |
false | true | false | |
false | false | false | |
A or B | true | true | true |
true | false | true | |
false | true | true | |
false | false | false | |
A xor B | true | true | false |
true | false | true | |
false | true | true | |
false | false | false |
Задание 4.3
1. Запишите на Паскале отношение, истинное при выполнении указанного условия и ложное в противном случае:
а) целое k делится на 7;
б) уравнение ax2 + bx + c = 0 (a ¹ 0) не имеет вещественных корней;
в) точка (x, y) лежит вне круга радиуса r с центром в точке (1, 0);
г) натуральное n является полным квадратом.
2. Вычислить значение выражений:
а) t and (p mod 3 = 0) при t = true, p = 101010;
б) (x*y <> 0) and (y > x) при x = 2, y = 1;
в) (x*y <> 0) or (y > x) при x = 2, y = 1;
г) a or (not b) при a = false, b = true.
3. Записать на Паскале выражение, истинное при выполнении указанного условия и ложное в противном случае:
а) 0 < x< 1;
б) x = max (x, y, z);
в) x ¹ max (x, y, z) (операцию not не использовать);
г) хотя бы одна из логических переменных а и b имеет значение true;
д) обе логические переменные а и b имеет значение true.
4. Доказать тождество: a and (not a) = false.
5. Вычислить:
а) true or (1/0 > 0);
б) (1/0 > 0) or true.
6. Указать порядок выполнения операций при вычислении выражения:
a and b or not c and d.
7. Вычислить следующие выражения при a = true и b = false:
а) a or b and not a; б) (a or b) and not a;
в) not a and b; г) not (a and b).
8. Записать на Паскале выражение, истинное при выполнении указанного условия и ложное в противном случае:
а) х принадлежит отрезку [2, 5] или [-1, 1];
б) х лежит вне отрезков [2, 5] или [-1, 1].
9. Нарисовать на плоскости (x, y) область, в которой и только в которой и только в которой истинно указанное выражение:
(y > = x) and (y + x > = 0) and (y < = 1).
10. Записать на Паскале выражение, истинное, если n и k имеют одинаковую четность, и ложное иначе.
Операция со строками
Операция со строками + (конкатенция) – сцепление строк. Если длина результирующей строки превышает 255 символов, то она усекается до 255 символов.
Операции отношения
Операции отношения =, <>, < , > , <= , > = , in применимы для всех стандартных типов string, real, integer, boolean, char, byte. При сравнении допустимо использовать операнды разных типов в одной операции, только если это целые и вещественные переменные.
Например,
var ch: char;
b : boolean;
x, y : real;
z : integer;
…..
if (x>z) and (ch in [‘Y’,’N’] or not b then writeln(‘Условие выполнено’);
4.1.5 Операция @
С помощью операции @ можно создать указатель на переменную. Операция @ является унарной операцией, в качестве операнда которой используется ссылка на переменную, процедура или идентификатор функции, и операнду возвращается указатель. Тип этого значения является таким же, как и тип указателя nil, и, таким образом, его можно присвоить любому указателю переменной.
- Дейкстры Э. Дисциплина программирования. М.: Мир, 1976
- Грис Д. Наука программирования: Пер.с англ. – М.: Мир, 1984