====== Математические выражения ====== Если микроконтроллер не имеет аппаратной поддержки вычисления чисел с плавающей точкой, то для компиляции доступна только целочисленная арифметика. Она состоит из таких операций как сложение (''+''), вычитание (''-''), деление на цело (''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; ??