====== Математические выражения ======
Если микроконтроллер не имеет аппаратной поддержки вычисления чисел с плавающей точкой, то для компиляции доступна только целочисленная арифметика. Она состоит из таких операций как сложение (''+''), вычитание (''-''), деление на цело (''DIV'') и получение остатка от деления на цело (''MOD'').
MODULE ExamplesMath;
VAR a, b, r: INTEGER;
BEGIN
a := 37;
b := 10;
r := a + b; (* r = 47 *)
r := a - b; (* r = 27 *)
r := a DIV b; (* r = 3 *)
r := a MOD b; (* r = 7 *)
END ExamplesMath.
Если микроконтроллер имеет модуль FPU, то будут доступны привычные операции над действительными числами ''REAL''. В выражениях присвоения к переменным типа ''REAL'' константы должны указываться с точкой, обозначающей наличие десятичных разрядов.
MODULE ExamplesMath2;
VAR a, b, r: REAL;
BEGIN
a := 33.3;
b := 22.0;
r := a + b; (* r = 55.3 *)
r := a - b; (* r = 11.299999999999997 *)
r := a * b; (* r = 732.5999999999999 *)
r := a / b; (* r = 1.5136363636363634 *)
END ExamplesMath2.
Также для микроконтроллеров архитектуры ARMv7 с аппаратным модулем FPU доступен модуль ''MicroARMv7MMath'' с самыми необходимыми математическими функциями.
MODULE ExamplesMath3;
IMPORT Math := MicroARMv7MMath;
VAR a: REAL;
BEGIN
a := Math.sqrt(3.14);
a := Math.exp(3.14);
a := Math.ln(3.14);
a := Math.sin(3.14/4.0);
a := Math.cos(3.14/4.0);
END ExamplesMath2.
БИТОВЫЕ СДВИГИ ЕСТЬ??? разница между x=y/2 и x=y>>1; ??