Пример вложенных циклов.
Самый простой пример, на котором можно увидеть работу вложенных циклов - вывод на экран таблицы умножения. Рассматривая этот пример, мы также познакомимся с другими функциями обработки данных.
Итак, есть ряд цифр от 1 до 9.
Задача:
вывести на экран результаты умножения цифры из ряда на все цифры из ряда по очереди.
Решение:
--Вводим массив цифр. Далее приведен один из способов генерации массива из строки
NB. не забывайте следить, чтобы каждый цикл был "закрыт" командой enddo
Самый простой пример, на котором можно увидеть работу вложенных циклов - вывод на экран таблицы умножения. Рассматривая этот пример, мы также познакомимся с другими функциями обработки данных.
Итак, есть ряд цифр от 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 коммент.:
Отправить комментарий