Арифметические операции
К арифметическим относятся бинарные операции + , — , * , / для вещественных и целых чисел, бинарные операции div и mod для целых чисел и унарные операции + и — для вещественных и целых чисел. Тип выражения x op y , где op — знак бинарной операции + , — или * , определяется из следующей таблицы:
shortint | byte | smallint | word | integer | longword | int64 | uint64 | BigInteger | single | real | decimal | |
shortint | integer | integer | integer | integer | integer | int64 | int64 | uint64 | BigInteger | single | real | decimal |
byte | integer | integer | integer | integer | integer | longword | int64 | uint64 | BigInteger | single | real | decimal |
smallint | integer | integer | integer | integer | integer | int64 | int64 | uint64 | BigInteger | single | real | decimal |
word | integer | integer | integer | integer | integer | longword | int64 | uint64 | BigInteger | single | real | decimal |
integer | integer | integer | integer | integer | integer | int64 | int64 | uint64 | BigInteger | single | real | decimal |
longword | int64 | longword | int64 | longword | int64 | longword | uint64 | uint64 | BigInteger | single | real | decimal |
int64 | int64 | int64 | int64 | int64 | int64 | uint64 | int64 | uint64 | BigInteger | single | real | decimal |
uint64 | uint64 | uint64 | uint64 | uint64 | uint64 | uint64 | uint64 | uint64 | BigInteger | single | real | decimal |
BigInteger | BigInteger | BigInteger | BigInteger | BigInteger | BigInteger | BigInteger | BigInteger | BigInteger | BigInteger | — | — | — |
single | single | single | single | single | single | single | single | single | — | single | real | — |
real | real | real | real | real | real | real | real | real | — | real | real | — |
decimal | decimal | decimal | decimal | decimal | decimal | decimal | decimal | decimal | — | — | — | decimal |
То есть, если операнды — целые, то результатом является самый короткий целый тип, требуемый для представления всех получаемых значений.
При выполнении бинарной операции с uint64 и знаковым целым результирующим типом будет uint64 , при этом может произойти переполнение, не вызывающее исключения.
Для операции / данная таблица исправляется следующим образом: результат деления любого целого на целое имеет тип real .
Для операций div и mod выполняются эти же правила, но операнды могут быть только целыми. Правила вычисления операций div и mod — следующие:
x div y — результат целочисленного деления x на y . Точнее, x div y = x / y , округленное до ближайшего целого по направлению к 0;
x mod y — остаток от целочисленного деления x на y . Точнее, x mod y = x — (x div y) * y .
Унарная арифметическая операция + для любого целого типа возвращает этот тип. Унарная арифметическая операция — возвращает для целых типов, меньших или равных integer , значение типа integer , для longword и int64 — значение типа int64 , к uint64 унарная операция — не применима, для типов single и real — соответственно типы single и real . То есть так же результатом является самый короткий тип, требуемый для представления всех получаемых значений.
Умножение, деление, сложение, вычитание вещественных чисел в Pascal.
С вещественными числами можно производить операции умножения, сложения, вычитания, а также операцию деления. Причем операция деления отличается от операции Div. Деление вещественных чисел — это обычное математическое деление, в результате которого может получится как дробное, так и целое число.
program number11; uses crt; var a, b, c:real; begin clrscr; a:=17.3; b:=3.4; c:=a*b; writeln('a*b=',c:4:1); c:=a/b; writeln('a/b=',c:4:1); c:=a+b; writeln('a+b=',c:4:1); c:=a-b; writeln('a-b=',c:4:1); readln end.
В строке №8 записываем операцию умножения.
В строке №10 записываем операцию деления. Ее отличие от операции «Div» в том, делить можно дробные числа и результате операции могут получаться дробные числа. Запомните, что операция деления «/» не производится над переменными целого типа integer, т.к. в результате такой операции могут получиться дробные числа, и программа выдаст ошибку.
Строка №12 — операция сложения.
Строка №14 — операция вычитания.
В строках вывода сообщения на экран (№9, 11, 13, 15) для переменной «C» мы записали формат вывода «:4:1». (должно выводиться максимум 4 цифры и одна цифра после запятой).
Дополнение к материалу.
Действия над разными типами данных.
- Если мы складывает, вычитаем или умножаем 2 числа, одно из которых вещественное (REAL), то и результат будет иметь тип REAL.
- При делении ( / )получается вещественное число (REAL).
- При целочисленном делении (DIV) или при вычислении остатка от целочисленного деления (MOD), получается целое число (INTEGER).
- Функции Abs и Sqr определены для обоих типов данных, поэтому для целого аргумента результат будет INTEGER, а для вещественного аргумента – REAL.
Деление на Pascal
Program help_my_1;
Var a, b, d: real;
begin
Writeln(‘Введите два числа через пробел’);
readln(a,b);
d:=a/b;
writeln(a,’:’,b,’=’,d);
Writeln(‘Нажмите Enter’);
Readln;
end.
Похожие вопросы
Ваш браузер устарел
Мы постоянно добавляем новый функционал в основной интерфейс проекта. К сожалению, старые браузеры не в состоянии качественно работать с современными программными продуктами. Для корректной работы используйте последние версии браузеров Chrome, Mozilla Firefox, Opera, Microsoft Edge или установите браузер Atom.
Div, Mod, сложение, вычитание в Pascal.
Помимо операций умножения и сложения, над целочисленными переменными производятся операции Div (операция целочисленного деления), Mod (вычисление остатка от целочисленного деления), операция вычитания «-».
program number7; uses crt; var A,B,C: integer; begin clrscr; A:=17; B:=3; C:=A div B; writeln ('17 div 3 = ',C); C:=A mod B; writeln ('17 mod 3 = ',C); C:=A-B; writeln ('17-3 =',C); readln end.
В строке №8 используется операция Div. Это операция деления нацело, т. е. в результате получится целое число без остатка. Если 17 разделить на 3, то получится 5,66666… Здесь — целое число 5, оно и будет результатом операции div.
Строка №10. Операция Mod вычисляет остаток от целочисленного деления. Если мы разделим 17 на 3, то получится 5 – целое число и 2 – остаток. Таким образом, результатом операции Mod будет число 2
Теперь запишем нашу программу в Паскале и и запустим ее.
Дополнение к материалу.
Правила приоритета при выполнении операций в Паскале.
- Сначала выполняются действия над переменными, которые стоят в скобках.
- Затем вычисляются функции.
- Затем умножение и деление.
- Затем сложение и вычитание.
Операции, которые имеют одинаковый приоритет (сложение и вычитание, деление и умножение) выполняются слева направо, т.е. в порядке очереди.
Комментарии
+9 # Irzorg 04.04.2012 17:46
помогите решить задачу 1811 mod 32 = 19! Как получается этот ответ, все испробывал, не могу получить!
+2 # Евгений 09.01.2015 18:56
Достаточно в выше показанной программе переменную А определить как 1811,а переменную В как 32 то переменная С (C:=A mod B) и определит искомые 19.
+67 # Administrator 05.04.2012 08:29
Делишь 1811 на 32, получается 56,59375. Из этого числа берем целое число, т.е. 56 и умножаем его на 32. Получится 1792. 1811-1792=19 Это и есть остаток от целочисленного деления.
+9 # Евгений 09.01.2015 13:08
Этому можно придать и иной смысл. Достато чно вспомнить мультфильм «тридцать восемь попугаев. Числ о,которым делят,становить ся мерой числа которое делят. И остаток 0.59375 выражает часть числа 32. Так что достаточно умножить 32 на 0.59375 что бы получилось искомые 19.
-181 # яю 23.04.2012 12:14
Забудь про паскаль.
И задачу тебе не нужно решать.
А если хочешь научиться, то начинай с Ассемблера.
+39 # Нео 02.12.2012 13:08
-27 оценка.
вижу никому не нравиться Ассамблер
+30 # Антон 23.02.2013 14:00
Ну просто обсуждается именно паскаль, а не ассемблер, поэтому и минусуют, что не по теме
+6 # alex 30.06.2012 14:04
🙂
8 строка: C := trunc(A/B);
10 cстрока: C := A — B * trunc(A/B);
-9 # помогите 28.01.2013 19:21
помогите решить задачу:дано 2 значное число,переверни те его справа налево.Допучсти м 32 ответ должен быть 23. или дано 78 ответ 87 заранее спосибо. )
+5 # Антон 23.02.2013 14:35
Program pr1;
var
x, y1, y2, y: integer;
begin
write (‘Введите двухзначное число: ‘);
readln (x);
y1:=(x mod 10)*10;
y2:=x div 10;
y:=y1+y2;
write (‘Число-перевёр тыш: ‘, y);
readln;
end.
-5 # Вадим 22.11.2015 06:30
А не легче в 7,8 и 9 строках сделать так: y1:=x div 10; y2:=x mod 10; writeln (y2,y1);
+4 # VladiMir 08.04.2015 19:38
uses
SysUtils;
var a,b: integer;
n: word;
begin
readln(n);
a:=n mod 10;
n:= n div 10;
b:=n mod 10;
n:= n div 10;
n:=a*10+b;
writeln(n);
readln;
-14 # dim 16.02.2013 12:43
program prog1;
uses crt;
begin
write (‘введите двухзначное число. ‘);
read(x);
z:=10;
y:=x div z;
c:=x mod z;
writeln (c,y);
readln
end.
0 # иришка* 18.02.2013 12:38
ребяята подскажите пожалуйста !очень надо как из числа 5264 получить число 2 типа третье от конца число помогите пожалуйста
-5 # Антон 23.02.2013 12:18
Program pr1;
var
x, y: integer;
begin
write (‘Введите число: ‘);
readln (x); //вводим 5264
y:=(x div 100)-(((x div 100) div 10)*10);
write (‘Третья цифра справа ‘, y);
end.
Программа всегда будет говорить, какая цифра стоит третьей
-5 # Антон 23.02.2013 13:58
Кстати, перед «end.» надо добавить «readln;», а то после вывода результата программа тут же закроется
0 # Виталий 16.11.2017 13:31
a:=a div 10;
b:=a div 10;
a:=a div 10;
b:=a mod 10;
writeln(b);
0 # Alexandr 19.02.2013 11:27
# Irzorg
Вот тебе схема как это делать в дальнейшем:
Допустим,что нам даны два числа x и y;
1)X mod Y=F;-Нам нужно узнать,что же за число получится при вычислении остатка от целочисленного деления;
2)X div Y=Z;Z-это результат целочисленного деления;
3)Z*Y=G;G-число,которое получилось в результате умножения результата целочисленного деления на число Y(Y дан нам в исходном выражении);
4)X-G=F;Где F конечный результат.
Надеюсь,что помог тебе.
-4 # ivan 20.03.2013 16:32
подсчитал все значения,на экран нужно вывести каждое двадцатое число,подскажит е пожалуйста
+1 # katya 21.03.2013 17:25
помогите решить задачу.
дано два цэлых числа: A, B. проверить истинное ли выражение » Каждое ис чисел А,В — непарное»
+2 # Casil 16.03.2018 10:40
Boolean4. Даны два целых числа: A, B. Проверить истинность высказывания: «Справедливы неравенства A > 2 и B ≤ 3».
var
A, B: integer;
begin
write(‘Введите A и B: ‘);
read(A,B);
writeln(‘Справе дливы неравенства A > 2 и B ≤ 3 — ‘,(A > 2) and (B = 0) or (B дливо двойное неравенство A B) and (B > C)));
end.
Boolean8. Даны два целых числа: A, B. Проверить истинность высказывания: «Каждое из чисел A и B нечетное».
var
A, B: integer;
begin
write(‘Введите A, B: ‘);
read(A,B);
writeln(‘Каждое из чисел A и B нечетное — ‘, (A mod 2 0) and (B mod 2 0));
end.
Boolean9. Даны два целых числа: A, B. Проверить истинность высказывания: «Хотя бы одно из чисел A и B нечетное».
var
A, B: integer;
begin
write(‘Введите A, B: ‘);
read(A,B);
writeln(‘Хотя бы одно из чисел A и B нечетное — ‘, (A mod 2 0) or (B mod 2 0));
end.
Boolean10°. Даны два целых числа: A, B. Проверить истинность высказывания: «Ровно одно из чисел A и B нечетное».
var
A, B: integer;
begin
write(‘Введите A, B: ‘);
read(A,B);
writeln(‘Хотя бы одно из чисел A и B нечетное — ‘, (A mod 2 0) xor (B mod 2 0));
end.
Boolean11. Даны два целых числа: A, B. Проверить истинность высказывания: «Числа A и B имеют одинаковую четность».
var
A, B: integer;
C: boolean;
begin
write(‘Введите A, B: ‘);
read(A,B);
C := ((A mod 2 0) and (B mod 2 0)) or ((A mod 2 = 0) and (B mod 2 = 0));
writeln(‘Числа A и B имеют одинаковую четность — ‘, C);
end.
Boolean12. Даны три целых числа: A, B, C. Проверить истинность высказывания: «Каждое из чисел A, B, C положительное».
var
A, B, C: integer;
begin
write(‘Введите A, B и C: ‘);
read(A,B,C);
writeln(‘Каждое из чисел A, B, C положительное — ‘,(A > 0) and (B > 0) and (C > 0));
end.