28 января 2011 г.

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

Пример вложенных циклов.

Самый простой пример, на котором можно увидеть работу вложенных циклов - вывод на экран таблицы умножения. Рассматривая этот пример, мы также познакомимся с другими функциями обработки данных.

Итак, есть ряд цифр от 1 до 9.
Задача:
    вывести на экран результаты умножения цифры из ряда на все цифры из ряда по очереди.

Решение:

          --Вводим массив цифр. Далее приведен один из способов генерации массива из строки
!digitString = '1 2 3 4 5 6 7 8 9'
$( с помощью метода .Split(), который применен к строковой переменной, мы получаем массив данных. Если .Split() применен без параметров, тогда применяется разделитель по умолчанию - пробел $)
!digitArray = !digitString.Split() 


--Запускаем первый цикл для того, чтобы определить множимое число
do !x from 1 to !digitArray.Size()

  $( записываем первый множитель в переменную, которая будет использована во втором цикле $)
  !var1 = !digitArray[!x].Real()
  
      $( запускаем второй цикл по той же самой конечной точке для того, чтобы выполнить операцию умножения множимого числа. Метод .Real() применятся к строковому значению для преобразования его в число. NB: индекс внутри вложенного цикла не должен быть одинаков с циклами-хозяевами $)
    do !y from 1 to !digitArray.Size()
       !var2 = !digitArray[!y].Real()
       --умножаем два элемента
      !resultReal = !var1 * !var2
      --формируем то, что будет выведено на печать
     !resultToPrint = !var1.String() + 'x' + !var2.String() + '=' + !resultReal.String()
     --печатаем на экран
    $P $!resultToPrint
    enddo

  --печаем разделитель, который будет визуально отделять блоки таблицы
  $P -----------------------

enddo

NB. не забывайте следить, чтобы каждый цикл был "закрыт" командой enddo

0 коммент.:

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