Вход
Приветствую Вас Гость
 

easy.math.qsp v. 2.4.0

Операции над массивами

#array.prnt#

Иногда необходимо просмотреть содержимое массива, или записать его в удобном виде в переменную. Для этого приходится вводить цикличиские конструкции непосредственно в код. Данная функция предназначена для того, чтобы избавить Вас от необходимости строить такие конструкции каждый раз. Достаточно указать аргументом имя массива и функция вернёт в результате столбец со значениями.

$args[0]- имя массива, содержимое которого необходимо просмотреть.
$args[1] - управляющая конструкция. Можно использовать три команды в любых комбинациях:

  • [only result] - выводит только содержимое массива, не показывая его названия и номера ячеек.
  • [trim] - отсекает прилегающие пробелы и символы табуляции при выводе значения элемента массива.
  • [not last] - исключает добавление разделителя за последним выводимым значением.

$args[2] - этим параметром задаётся разделитель между выводимыми значениями. По умолчанию, т.е. когда параметр не указан или равен пустому значению, между выводимыми значениями вставляется символ перевода строки. Чтобы результаты выводились без вставки разделителя, необходимо указать ключ /se.
 args[3] - начало вывода. Номер элемента, с которого начинается вывод значений (включительно).
 args[4] - окончание вывода. Номер элемента, до которого следует продолжать вывод значений (включительно).

Примеры вызова функции:
*pl $func('#array.prnt#','mass')
     - выведет на экран числовые значения массива 'mass'
*pl $func('#array.prnt#','$mass')
     - выведет на экран текстовые значения массива '$mass'
*pl $func('#array.prnt#','$mass','[only Result]')
     - выведет на экран только содержимое массива '$mass'
Результаты вызова функции:

Заготовленный массив:

$a[]='нулевая ячейка'
$a[]='   первая ячейка   '
$a[]=' вторая ячейка'
$a[]=''
$a[]='четвёртая ячейка'
$a[]='   пятая ячейка'
$a[]=''
$a[]='седьмая ячейка'

Вывод массива:

$func('#array.prnt#','$a')=
"$a[0]='нулевая ячейка'
$a[1]='   первая ячейка   '
$a[2]=' вторая ячейка'
$a[3]=''
$a[4]='четвёртая ячейка'
$a[5]='   пятая ячейка'
$a[6]=''
$a[7]='седьмая ячейка'
"

Выводим исключительно значения массива:

$func('#array.prnt#','$a','[only result]')=
"нулевая ячейка
   первая ячейка   
  вторая ячейка

четвёртая ячейка
   пятая ячейка

седьмая ячейка
"

Выводим значения массива с отсечением прилегающих пробелов в каждом значении:

$func('#array.prnt#','$a','[trim]')=
"$a[0]='нулевая ячейка'
$a[1]='первая ячейка'
$a[2]='вторая ячейка'
$a[3]=''
$a[4]='четвёртая ячейка'
$a[5]='пятая ячейка'
$a[6]=''
$a[7]='седьмая ячейка'
"

Выводим исключительно значения массива, со второго по пятый элемент, включительно, с отсечением прилегающих пробелов в каждом значении; в качестве разделителя используем вертикальную черту:

$func('#array.prnt#','$a','[trim] [only result]','|',2,5)=
"вторая ячейка||четвёртая ячейка|пятая ячейка|"

Выводим исключительно значения массива, со второго по пятый элемент, включительно, с отсечением прилегающих пробелов в каждом значении; в качестве разделителя используем вертикальную черту; последний разделитель опускаем:

$func('#array.prnt#','$a','[trim] [only result] [not last]','|',2,5)=
"вторая ячейка||четвёртая ячейка|пятая ячейка"

#array.prnt.few#

Данная функция позволяет выводить на экран содержимое сразу нескольких массивов, для сравнения например.

По умолчанию функция выводит содержимое всех массивов в виде таблицы, однако вывод таблицей можно отключить, использовав в последнем аргументе управляющую конструкцию [no table]. Последним аргументом может быть как имя массива так и управляющая конструкция. Функция считает управляющей конструкцией всякую строку в последнем аргументе, в которой между непробельными символами находится пробельный (или другой недопустимый знак). Прилегающие пробелы в остальных аргументах уничтожаются, поэтому вы можете записать имя массива в аргументе скажем так " $mass " (апострофы по правилам QSP для записи текстовых значений). Если же вы допустите в имени массива ошибку, функция известит вас об этом.

$args[0 ... 8]- имена массивов, содержимое которых необходимо просмотреть.

$args[8 ... 1] - управляющая конструкция. Записывается последним аргументом. Можно использовать следующие конструкции в любых комбинациях:

  • [only result] - выводит только содержимое массивов, не показывая их названий и номеров ячеек. Таблица при этом на экран выводиться не будет.
  • [no table] - выводит массивы на экран, но не облекает их в таблицу.
Результаты вызова функции:

Заготовленные массивы:

$a[]='нулевая ячейка'
$a[]='   первая ячейка   '
$a[]=' вторая ячейка'
$a[]=''
$a[]='четвёртая'' ячейка'
$a[]="   пятая яче'йка"
$a[]=''
$a[]='седьмая ячейка'

$b[]='нулевая ячейка'
$b[]='   первая ячейка   '
$b[]=' вторая ячейка'
$b[]='3'
$b[]='4'
$b[]='   пятая ячейка'
$b[]='6'
$b[]='7'

Вывод двух массивов:

$func('#array.prnt.few#','$a','$b')=
# $a $b
0 нулевая ячейка нулевая ячейка
1    первая ячейка       первая ячейка   
2     вторая ячейка   вторая ячейка
3   3
4 четвёртая' ячейка 4
5    пятая яче'йка    пятая ячейка
6   6
7 седьмая ячейка 7

Вывод двух массивов, только значения:

$func('#array.prnt.few#','$a','$b','[only result]')=
"нулевая ячейка  нулевая ячейка
   первая ячейка       первая ячейка   
 вторая ячейка   вторая ячейка
    3
четвёртая' ячейка   4
   пятая яче'йка       пятая ячейка
    6
седьмая ячейка  7"

Вывод двух массивов, без таблицы:

$func('#array.prnt.few#','$a','$b','[no table]')=
"$a[0]='нулевая ячейка'  &   $b[0]='нулевая ячейка'
$a[1]='   первая ячейка   ' &   $b[1]='   первая ячейка   '
$a[2]=' вторая ячейка'  &   $b[2]=' вторая ячейка'
$a[3]=''    &   $b[3]='3'
$a[4]='четвёртая'' ячейка'  &   $b[4]='4'
$a[5]='   пятая яче''йка'   &   $b[5]='   пятая ячейка'
$a[6]=''    &   $b[6]='6'
$a[7]='седьмая ячейка'  &   $b[7]='7'"

Вывод двух пустых массивов:

$func('#array.prnt.few#','$c','$d')=
"All your massives are empty."

Ошибочное написание имени массива:

$func('#array.prnt.few#','$a','$b','[no table]','$f')=
"Error: Array's name is not correct. ARGS[2]: '[no table]'"

#array.ins#

Функция для вставки элемента в массив со сдвигом вправо.

$args[0] - название массива.
$args[1] - значение, которое хотим присвоить элементу.
$args[2] - индекс элемента, куда хотим поместить новое значение, можно строковый.

Результат работы функции:

Заготовленный массив:

mass[0]=574
mass[1]=668
mass[2]=413
mass[3]=765
mass['text']=478 & ! числовой индекс данного элемента: 4
mass[5]=205
mass[6]=701
mass[7]=272

Вставка по числовому или текстовому индексу:

gosub '#array.ins#','mass',6,4
gosub '#array.ins#','mass',6,'text'

mass[0]=574
mass[1]=668
mass[2]=413
mass[3]=765
mass[4]=6
mass[5]=478
mass[6]=205
mass[7]=701
mass[8]=272

#array.clr#

Функция для удаления из массива всех элементов с указанным значением.

$args[0] - название массива.
$args[1] - значение, которое хотим удалить из массива.

Результат работы функции:

Заготовленный массив:

mass[0]=1
mass[1]=2
mass[2]=3
mass[3]=1
mass[4]=2
mass[5]=3
mass[6]=1
mass[7]=2

Удаляем все двойки:

gosub '#array.clr#','mass',2

mass[0]=1
mass[1]=3
mass[2]=1
mass[3]=3
mass[4]=1

em.arr.chType

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

$args[0] - название массива, для которого требуется поменять тип. Можно указывать как с символом '$', так и без него перед именем.
$args[1] - управление:
  • [string] - все ячейки массива приводятся к строковому типу;
  • [number] - все ячейки массива приводятся к числовому типу;
  • [reverse] - тип ячеек меняется на противоположный (не знаю, кому это может понадобиться);
  • [hard] - режим, расширяющий работу режима [string], при этом ячейкам, тип которых определяется как 'empty' (см. функцию em.var.getType), принудительно присваивается строковое значение '0'.
$args[2] - результирующий массив. Если не указано, результат помещается в исходный массив.
Результаты работы функции:

Изменение типа ячеек на противоположный:

! пример исходного массива  & ! исходные типы ! типы после reverse ! значения после reverse
$mass[0]='123'              ! string        ! number             ! 123
$mass[1]='456'              ! string        ! number             ! 456
mass[2]=789                 ! number        ! string             ! '789'
mass[3]=901                 ! number        ! string             ! '901'
$mass[4]='444' & mass[4]=44 ! both          ! both               ! '444' & 44
$mass[5]='555' & mass[5]=55 ! both          ! both               ! '555' & 55
$mass[6]='' & mass[6]=0     ! empty         ! empty              ! '' & 0
$mass[7]=''                 ! empty         ! empty              ! '' & 0
$mass[8]='123' & mass[8]=0  ! string        ! number             ! 123
mass[9]=4569 & $mass[9]=''  ! number        ! string             ! '4569'

Изменение типа ячеек на строковый:

! пример исходного массива  & ! исходные типы ! типы после string  ! значения после string
$mass[0]='123'              ! string        ! string             ! '123'
$mass[1]='456'              ! string        ! string             ! '456'
mass[2]=789                 ! number        ! string             ! '789'
mass[3]=901                 ! number        ! string             ! '901'
$mass[4]='444' & mass[4]=44 ! both          ! string             ! '444'
$mass[5]='555' & mass[5]=55 ! both          ! string             ! '555'
$mass[6]='' & mass[6]=0     ! empty         ! empty              ! '' & 0
$mass[7]=''                 ! empty         ! empty              ! '' & 0
$mass[8]='123' & mass[8]=0  ! string        ! string             ! '123'
mass[9]=4569 & $mass[9]=''  ! number        ! string             ! '4569'

Изменение типа ячеек на числовой:

! пример исходного массива  & ! исходные типы ! типы после number   ! значения после number
$mass[0]='123'              ! string        ! number              ! 123
$mass[1]='456'              ! string        ! number              ! 456
mass[2]=789                 ! number        ! number              ! 789
mass[3]=901                 ! number        ! number              ! 901
$mass[4]='444' & mass[4]=44 ! both          ! number              ! 44
$mass[5]='555' & mass[5]=55 ! both          ! number              ! 55
$mass[6]='' & mass[6]=0     ! empty         ! empty               ! '' & 0
$mass[7]=''                 ! empty         ! empty               ! '' & 0
$mass[8]='123' & mass[8]=0  ! string        ! number              ! 123
mass[9]=4569 & $mass[9]=''  ! number        ! number              ! 4569

Скорость работы функции: около 17 секунд на 100 000 элементов.

Наверх