Тип Функция : BOOL Входы PT : Pointer (Указатель на массив) SIZE : UINT (Размер массива) Выходы BOOL (возвращает TRUE) Функция _ARRAY_SHUFFLE переставляет элементы произвольного массива значений типа REAL случайным образом. При вызове функции передаются указатель на массив и его размер в байтах. В CoDeSys вызов выполняется следующим образом: _ARRAY_SHUFFLE(ADR(Array), SIZEOF(Array)), где Array - имя обрабатываемого массива. ADR() является стандартной функцией, которая возвращает указатель на массив, а SIZEOF() - стандартная функция, которая вычисляет размер массива. Передаваемый через указатель массив будет обработан непосредственно в памяти и по завершении функции доступен напрямую. Таким образом, функция _ARRAY_SHUFFLE изменяет содержимое массива. Этот способ обработки массива является очень эффективным, поскольку не требует дополнительной памяти, и передаваемые значения не нужно копировать. Если нужно обработать массив, который нельзя изменять, то до передачи указателя и вызова функции необходимо скопировать его во временный массив. Пример: _ARRAY_SHUFFLE(ADR(bigarray), SIZEOF(bigarray)) Вызов функции _ARRAY_SHUFFLE может изменить массив следующим образом. Так как функция использует псевдослучайный алгоритм, результат каждый раз будет другим. Результаты нельзя воспроизвести даже путем перезапуска программы или контроллера. Входной массив: (0,1,2,3,4,5,6,7,8,9) Результат: (5,0,3,9,7,2,1,8,4,6) Результат, однако, не повторяется. Функция возвращает новую последовательность после каждого вызова и даже после перезапуска. |
