26 января 2011 г.

Базовые конструкции языка. Работа с циклами. Часть 1

Одной из важных составляющих является возможность проводить операции над массивом элементов, выбирая каждый по очереди и применяя определенные команды.

Синтаксис:

do !x from ИНДЕКС_СТАРТА to КОНЕЧНАЯ_ТОЧКА
  --действия, которые выполняются с элементами относительно индекса !x
enddo
Пример:
   Печать значений от 1 до 10

do !x from 1 to 10
  $P $!x
enddo
В результате в командную строчку будут выведены значения переменной !x, являющейся индексом. Стандартное приращение индекса = 1. Соответственно выводимые значения будут начиная с единицы как стартовая точка, с шагом 1, и до десяти.. (1,2,3,4,5,6,7,8,9,10)

Другой пример:

do !x from 1 to 10 by 0.5
  $P $!x
enddo
В результате в командную строчку будут выведены значения переменной !x, являющейся индексом. В данном случае приращение указано специально и составляет 0.5. Соответственно выводимые значения будут начинаться с единицы как стартовая точка, с шагом 0.5, и до десяти. (1,1.5,2,2.5,3,3.5,4,4.5,5,5.5,6,6.5,7,7.5,8,8.5,9,9.5,10)

А вот пример работы с базой:
Задача:
    найти все элементы оборудования (тип EQUI) внутри текущего элемента и вывести в командную строчку информацию вида "имя:описание"

Решение:
    необходимо использовать синтаксис обращения к базе для запроса элементов, далее в запустить цикл по полученном массиву, запросить необходимые атрибуты и вывести на экран



$( находим все элементы типа EQUI внутри текущего элемента и записываем в массив !equiRefs их референтные номера $)
VAR !equiRefs COLLECT ALL EQUI FOR CE

$( запускаем цикл по элементам найденного массива, используя в качестве конечной точки размер массива (то есть общее количество найденных элементов). Размер массива определяется методом .Size()
$)
do !x from 1 to !equiRefs.Size()

  $( вводим переменную, котрая будет отвечать за необходимые значения вывода
  в эту переменную будут попадать значения атрибутов элемента из массива
  учитывая то, что в массиве хранятся референтные номера в виде строкового значения, а для обращения к атрибуту нам нужен объект базы, то с помощью метода .Dbref() мы переводим строку в объект и запрашиваем необходимые атрибуты
  $)
    !output = !equiRefs[!x].Dbref().Name + ':' + !equiRefs[!x].Dbref().Desc

  $( выводим значения переменной !output (эти значения будут всегда новые в данном случае по мере изменения индекса !x и соответственно обращения к следующему элементу массива)
  $)
   $P $!output
enddo

0 коммент.:

Отправить комментарий