В чем заключается вопрос: Что такое операции mod и div в языке Pascal. Как с нами работать?
Сложность : легкая .
Постараюсь быть краток, сразу стоит сказать что эти операции работают только с целыми числами, т.е. integer и т.д.
Сначала операция div:
Эта операция используется для того чтобы найти целую часть от деления, как это понять? Допустим у нас есть код:
n у нас будет равно 1. Почему? Как я и сказал div ищет целую часть от деления, т.е. у нас делится 12 на 10, это будет равно 1.2. Целая часть от деления равна 1. Вот это и делает операция div, если допустим 12 div 2, ответ 6.0, целая часть уже равна 6. Т.е. мы как бы делим 12 на 10, но в ответ записывается только целая часть от деления.
Дальше операция mod:
Эта операция уже ищет остаток от деления. Не думайте что это дробная часть, НЕ ПУТАЙТЕ!
Допустим есть код:
Тут остаток от деления равен 2. Другой пример, допустим следующее :
Эти операции в основном используются для того чтобы разбить например трехзначное число на цифры, давайте маленький пример, допустим есть число 123:
Обычно начинают искать с последний цифры, у нас это 3. Чтобы её оторвать надо сделать следующее:
Т.е. мы 123 делим на 10, ответ 12.3 , а остаток равен 3. Первая цифра есть. Дальше 2. Тут делается так, сначала убирается последняя цифра, т.е. 3, с помощью div, а потом с помощью mod ищем 2-ую цифру:
Т.е. сначала у нас из-за div будет 12, а потом с помощью mod у нас появится 2. Ну а последнюю цифру можно найти так:
Вот как то так. Может вы сразу не поймете, но тут надо немного по практиковаться. Удачи! Спасибо за внимание!
Помимо операций умножения и сложения, над целочисленными переменными производятся операции Div (операция целочисленного деления), Mod (вычисление остатка от целочисленного деления), операция вычитания «-».
В строке №8 используется операция Div. Это операция деления нацело, т. е. в результате получится целое число без остатка. Если 17 разделить на 3, то получится 5,66666… Здесь — целое число 5, оно и будет результатом операции div.
Строка №10. Операция Mod вычисляет остаток от целочисленного деления. Если мы разделим 17 на 3, то получится 5 – целое число и 2 – остаток. Таким образом, результатом операции Mod будет число 2
Теперь запишем нашу программу в Паскале и и запустим ее.
Дополнение к материалу.
Правила приоритета при выполнении операций в Паскале.
- Сначала выполняются действия над переменными, которые стоят в скобках.
- Затем вычисляются функции.
- Затем умножение и деление.
- Затем сложение и вычитание.
Операции, которые имеют одинаковый приоритет (сложение и вычитание, деление и умножение) выполняются слева направо, т.е. в порядке очереди.
Комментарии
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;
program prog1;
uses crt;
begin
write (‘введите двухзначное число. ‘);
read(x);
z:=10;
y:=x div z;
c:=x mod z;
writeln (c,y);
readln
end.
Program pr1;
var
x, y: integer;
begin
write (‘Введите число: ‘);
readln (x); //вводим 5264
y:=(x div 100)-(((x div 100) div 10)*10);
write (‘Третья цифра справа ‘, y);
end.
Программа всегда будет говорить, какая цифра стоит третьей
a:=a div 10;
b:=a div 10;
a:=a div 10;
b:=a mod 10;
writeln(b);
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.
Всем привет, как дела? Че делаешь? ммм ясно, понятно. Не будем долго и дружелюбно общаться, проходите, присаживайтесь по удобнее, чувствуйте себя как дома. На улице с каждым днем солнце порабощает планету, мне это нравится, с нетерпением жду прихода молодой теплой, походу грязной и с множеством воды, весны. Но есть и свои плюсы: тепло, птицы, растительность, легкая куртка. А как вы относитесь к весне?
В этой части поговорим о еще двух функциях DIV и MOD, в прошлой части мы говорили об математических операциях, сегодняшние функции тоже по сути ими являются. Поехали =)
DIV, MOD или обычное деление
DIV и MOD похожи на обычное деление, но все таки они для чего то существуют, значит разница быть должна. Вспомним начальную школу и математику, когда вы только-только учились умножать и делить, когда вы еще не подозревали, что судьба вас свяжет с программированием и будете работать "тыж программистом" или же помбуром. Шутки в сторону, так вот вспомним деление "столбиком". Возьмем число 23 и разделим его столбиком, как учили в школе, на число 10.
Вот таким образом мы разделили число 23 на 10. У нас осталась в целой части число 2, а в остатке число 3. Проще говоря наш ответ стал равен двум целым и трем десятых(2.3). Отлично, это было обычное деление, но как будет выглядеть это в случае с MOD и DIV?
MOD — если мы делим число с помощью функции MOD, то в ответ у нас пойдет остаток. По примеру выше, если бы мы делили не обычным делением, а с помощью mod, то ответ у нас был бы 3.
DIV — соответственно наоборот, если мы делим в с помощью DIV то в ответ пойдет только целая часть — 2.
Pascal
Откроем PascalABC и напишем заготовку
Объявим две переменные с целочисленным типом данных
Дальше присвоим переменной "a" какое-либо значение и переменную "b" приравняем к переменной "a".
Отлично, теперь выведем ответ на действие обычного деления на число 100
Теперь проделаем тоже деление, но вместо обычного используем DIV и MOD. Переменную "a" делим с помощью функции DIV, а переменную "b" соответственно функцией MOD и посмотрим что получится.
Как видим, div вывел в ответ целую часть, а mod — остаток.
Разделим число на тысячи, сотни, десятки и единицы
Думаю в голове у многих уже что-то начинает откладываться, давай закрепим знания, напишем не большую программу с линейным алгоритмом, которая будет показывать сколько в число тысяч, сотен, десятков и единиц. Напишем заготовку и объявим две переменные с целочисленным типом данных.
Присвоим переменной "a" числовое значение.
Дальше присвоим переменной "b" действие — деление переменной "a" на число 1000 с помощью функции div.
- program chislo;
- var
- a,b: integer;
- begin
- a:= 4321;
- b:= a div 1000;
- a:= a-b*1000;
- end.
Теперь напишем команду вывода с новой строки.
Тем самым мы разделили число на тысячи и вывели сколько содержится в нем тысяч, теперь тоже самое проделаем для сотен, десятков и единиц, изменив лишь пару значений и вывод.
И добавим команду вывода в самое начало
- program chislo;
- var
- a,b: integer;
- begin
- a:= 4321;
- writeln( ‘ Число " ‘+a+’ " состоит из’ );
- b:= a div 1000;
- a:= a-b*1000;
- writeln( b+’ тысячи’ );
- b:= a div 100;
- a:= a-b*100;
- writeln( b+’ сотен’ );
- b:= a div 10;
- a:= a-b*10;
- writeln( b+’ десятков’ );
- b:= a div 1;
- a:= a-b;
- writeln( b+’ единиц’ );
- end.
Запустим программу и увидим его выполнение
- Число "4321" состоит из
- 4 тысячи
- 3 сотен
- 2 десятков
- 1 единиц
Заключение
Вот и все на сегодня, думаю принцип работы понятен. Если что не так, сильно не ругайте, а пишите в комменты что и как. В следующей статье начнем изучение ветвящихся алгоритмов.
Всем спасибо.
Пока =)