#! peri -w
$left =3; # Операнд! $right =2; # Операнд2
# Заголовок таблицы
print "\$i\tflnana3OH\tOnepaHfll\tOnepaHfl2\n";
print '-' х 48, "\n\n";
# Тест операции
for($1=1; $i <= 10; $i++) {
$s = $left..$right;
print "$i\t $s\t\t $left \t\t $right\n";
$slO = 3 if $i==5; # Когда переменная цикла $i равна 5, # $slO устанавливается равной 3.
if ($right==0) {} else {—$right}; # Уменьшение $right на 1, пока
# $right не достигла значения 0.
—$left; }
Замечание
В целях экономии времени мы не объясняем смысл незнакомых операторов примера 4.12, надеясь, что читатель сможет понять их смысл. Если все же это окажется для него сложным, мы рекомендуем снова вернуться к этой программе после прочтения главы 5.
$1 | Диапазон | Операнд1 | Операнд2 |
1 | 1ЕО | 3 | 2 |
2 | 1ЕО | 2 | 1 |
3 | 1 | 1 | 0 |
4 | 2 | 0 | 0 |
5 | 3 | -1 | 0 |
6 | 4EO | -2 | 2 |
7 | 1EO | -3 | 1 |
8 | 1 | -4 | 0 |
9 | 2 | -5 | 0 |
10 | 3 | -6 | 0 |
Сделаем замечания относительно работы программы примера 4..12. На первом шаге цикла левый операнд операции диапазон истинен, следовательно сама операция находится в состоянии Истина и возвращает первое порядковое число (i). Но правый операнд становится также истинным ($right = 2), следовательно она переходит в состояние Ложь и к возвращаемому ей значению добавляется строка "ЕО". На втором шаге цикла левый операнд истинен ($ieft = 2) и операция переходит в состояние Истина, возвращая значение д, к которому опять добавляется строка "ЕО", так как истинный правый операнд ($ right = 1) переводит операцию в состояние Ложь.
На третьем шаге операция становится истинной ($ieft = 1), возвращая i, и правый операнд со значением Ложь ($right = о) не влияет на ее состояние. На следующих шагах 4 и 5 правый операнд остается ложным, а операция возвращает соответственно следующие порядковые числа 2 и з. На шаге 6 операция находится в состоянии Истина и возвращает 4, но правый операнд, принимая значение Истина ($right = о), переводит ее в состояние Ложь, в котором к возвращаемому значению добавляется строка "ЕО" и т. д.