Меню
Спросить
({ })

DIV и MOD в Pascal

9 февраля 2017
DIV и MOD в Pascal

Всем привет, как дела? Че делаешь? ммм ясно, понятно. Не будем долго и дружелюбно общаться, проходите, присаживайтесь по удобнее, чувствуйте себя как дома. На улице с каждым днем солнце порабощает планету, мне это нравится, с нетерпением жду прихода молодой теплой, походу грязной и с множеством воды, весны. Но есть и свои плюсы: тепло, птицы, растительность, легкая куртка. А как вы относитесь к весне?
В этой части поговорим о еще двух функциях DIV и MOD, в прошлой части мы говорили об математических операциях, сегодняшние функции тоже по сути ими являются. Поехали =)

DIV, MOD или обычное деление

DIV и MOD похожи на обычное деление, но все таки они для чего то существуют, значит разница быть должна. Вспомним начальную школу и математику, когда вы только-только учились умножать и делить, когда вы еще не подозревали, что судьба вас свяжет с программированием и будете работать "тыж программистом" или же помбуром. Шутки в сторону, так вот вспомним деление "столбиком". Возьмем число 23 и разделим его столбиком, как учили в школе, на число 10.

деление столбиком

Вот таким образом мы разделили число 23 на 10. У нас осталась в целой части число 2, а в остатке число 3. Проще говоря наш ответ стал равен двум целым и трем десятых(2.3). Отлично, это было обычное деление, но как будет выглядеть это в случае с MOD и DIV?

MOD

MOD - если мы делим число с помощью функции MOD, то в ответ у нас пойдет остаток. По примеру выше, если бы мы делили не обычным делением, а с помощью mod, то ответ у нас был бы 3.

DIV

DIV - соответственно наоборот, если мы делим в с помощью DIV то в ответ пойдет только целая часть - 2.

div и mod

Pascal

Откроем PascalABC и напишем заготовку

  1. program dm;
  2. begin
  3. end.

Объявим две переменные с целочисленным типом данных

  1. program dm;
  2. var
  3. a,b: integer;
  4. begin
  5. end.

Дальше присвоим переменной "a" какое-либо значение и переменную "b" приравняем к переменной "a".

  1. program dm;
  2. var
  3. a,b: integer;
  4. begin
  5. a:= 1245;
  6. b:= a;
  7. end.

Отлично, теперь выведем ответ на действие обычного деления на число 100

  1. program dm;
  2. var
  3. a,b: integer;
  4. begin
  5. a:= 1245;
  6. b:= a;
  7. writeln( a/100 );
  8. writeln( b/100 );
  9. end.

  10. Вывод программы:
  11. 12.45
  12. 12.45

Теперь проделаем тоже деление, но вместо обычного используем DIV и MOD. Переменную "a" делим с помощью функции DIV, а переменную "b" соответственно функцией MOD и посмотрим что получится.

  1. program dm;
  2. var
  3. a,b: integer;
  4. begin
  5. a:= 1245;
  6. b:= a;
  7. writeln( a div 100 );
  8. writeln( b mod 100 );
  9. end.

  10. Вывод программы:
  11. 12
  12. 45

Как видим, div вывел в ответ целую часть, а mod - остаток.

Разделим число на тысячи, сотни, десятки и единицы

Думаю в голове у многих уже что-то начинает откладываться, давай закрепим знания, напишем не большую программу с линейным алгоритмом, которая будет показывать сколько в число тысяч, сотен, десятков и единиц. Напишем заготовку и объявим две переменные с целочисленным типом данных.

  1. program chislo;
  2. var
  3. a,b: integer;
  4. begin
  5. end.

Присвоим переменной "a" числовое значение.

  1. program chislo;
  2. var
  3. a,b: integer;
  4. begin
  5. a:= 4321;
  6. end.

Дальше присвоим переменной "b" действие - деление переменной "a" на число 1000 с помощью функции div.

  1. program chislo;
  2. var
  3. a,b: integer;
  4. begin
  5. a:= 4321;
  6. b:= a div 1000;
  7. end.
Хорошо, пошли дальше. Теперь присвоим переменной "a" действие - вычитаем из переменной "a" произведение переменной "b" и числа 1000.
  1. program chislo;
  2. var
  3. a,b: integer;
  4. begin
  5. a:= 4321;
  6. b:= a div 1000;
  7. a:= a-b*1000;
  8. end.

Теперь напишем команду вывода с новой строки.

  1. program chislo;
  2. var
  3. a,b: integer;
  4. begin
  5. a:= 4321;
  6. b:= a div 1000;
  7. a:= a-b*1000;
  8. writeln( b+' тысячи' );
  9. end.

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

  1. program chislo;
  2. var
  3. a,b: integer;
  4. begin
  5. a:= 4321;
  6. b:= a div 1000;
  7. a:= a-b*1000;
  8. writeln( b+' тысячи' );
  9. b:= a div 100;
  10. a:= a-b*100;
  11. writeln( b+' сотен' );
  12. b:= a div 10;
  13. a:= a-b*10;
  14. writeln( b+' десятков' );
  15. b:= a div 1;
  16. a:= a-b;
  17. writeln( b+' единиц' );
  18. end.

И добавим команду вывода в самое начало

  1. program chislo;
  2. var
  3. a,b: integer;
  4. begin
  5. a:= 4321;
  6. writeln( ' Число " '+a+' " состоит из' );
  7. b:= a div 1000;
  8. a:= a-b*1000;
  9. writeln( b+' тысячи' );
  10. b:= a div 100;
  11. a:= a-b*100;
  12. writeln( b+' сотен' );
  13. b:= a div 10;
  14. a:= a-b*10;
  15. writeln( b+' десятков' );
  16. b:= a div 1;
  17. a:= a-b;
  18. writeln( b+' единиц' );
  19. end.

Запустим программу и увидим его выполнение

  1. Число "4321" состоит из
  2. 4 тысячи
  3. 3 сотен
  4. 2 десятков
  5. 1 единиц

Заключение

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

Следующая статьяПредыдущая статья