DMarlon Studio

Lección 3 · 3 de 20

Aritmética: div, mod y / · Pascal

Haga cuentas en Pascal: div para la división entera, mod para el resto, / para dividir con decimales, y Trunc y Round para pasar a entero.

Pascal · Aritmética: div, mod y / en DMarlon Studio: el código del ejemplo y su salida en la terminal

`div` divide dos enteros y se queda con la parte entera; `mod` da el resto. Juntos convierten 135 minutos en 2 h 15 min y reparten 17 porciones de pizza entre 5 amigos: 3 para cada uno y sobran 2.

`/` siempre da un número real, aunque divida dos enteros: 17 / 5 es 3.4. Por eso el resultado se guarda en share, que es Double; en una variable Integer no cabría y el compilador daría un error.

Como en matemáticas, *, /, div y mod van antes que + y -: 2 + 3 * 4 da 14. Los paréntesis cambian el orden: (2 + 3) * 4 da 20.

Para pasar de real a entero hay dos funciones: `Trunc` corta los decimales (3.7 da 3) y `Round` redondea (4). Cuidado: cuando el número acaba exactamente en ,5, Round va al par más cercano, así que Round(2.5) es 2 y Round(3.5) es 4.

42 mod 2 = 0 es la forma habitual de saber si un número es par: el resto de dividirlo entre 2 es cero.

Código · main.pas

program main;var  minutes, slices, friends: Integer;  share: Double;begin  // div divides whole numbers; mod gives the remainder.  minutes := 135;  WriteLn(minutes, ' min = ', minutes div 60, ' h ', minutes mod 60, ' min');  slices := 17;  friends := 5;  WriteLn('Each friend gets ', slices div friends, ' slices');  WriteLn('Slices left over: ', slices mod friends);  // / always gives a real number, even with two integers.  share := slices / friends;  WriteLn('Exact share: ', share:0:2);  // * and / go before + and -; brackets change the order.  WriteLn('2 + 3 * 4 = ', 2 + 3 * 4);  WriteLn('(2 + 3) * 4 = ', (2 + 3) * 4);  // From real to integer: Trunc cuts, Round rounds.  WriteLn('Trunc(3.7) = ', Trunc(3.7), ' | Round(3.7) = ', Round(3.7));  // Round sends .5 to the even number.  WriteLn('Round(2.5) = ', Round(2.5), ' | Round(3.5) = ', Round(3.5));  WriteLn('Even? ', 42 mod 2 = 0);end.

Salida · fpc main.pas && ./main

135 min = 2 h 15 min
Each friend gets 3 slices
Slices left over: 2
Exact share: 3.40
2 + 3 * 4 = 14
(2 + 3) * 4 = 20
Trunc(3.7) = 3 | Round(3.7) = 4
Round(2.5) = 2 | Round(3.5) = 4
Even? TRUE

Para recordar

  • div es la división entera y mod, el resto.
  • / siempre devuelve un real.
  • * y / van antes que + y -; los paréntesis mandan.
  • Trunc corta y Round redondea (los ,5 van al par).

Ejercicio

Convierta 7384 segundos en horas, minutos y segundos con div y mod, y escriba el resultado como 2 h 3 min 4 s.