Глава 9. Символьные вычисления
print(NoNL," "); print(NoNL,b); while i<20 do b:=a+b:
a:=b-a: print(NoNL," "); print(NoNL,b); i:=i+1: end_while:
Переменные a и b, в которые будут записываться числа Фибоначчи, а также индексная переменная i, получают свои начальные единичные значения. Текущие единичные значения переменных a и b отображаются в области вывода. После этого запускается оператор цикла while, в котором и происходят все основные события. В операторе проверяется условие i<20. В теле оператора цикла while командами b:=a+b и a:=b-a вычисляется очередное число в последовательности Фибоначчи. Далее в области вывода отображается вновь вычисленное число, после чего командой i:=i+1 вычисляется новое итерационное значение.
На заметку
Начальное значение индексной переменной i равно 2. На момент присваивания значения переменной i известно два числа (единичные значения переменных a и b) из последовательности. В операторе цикла после вычисления нового числа последовательности значение переменной i увеличивается на единицу. Таким образом, перед проверкой условия i<20 в операторе while значение переменной i указывает количество уже вычисленных чисел в последовательности. Поэтому вычисления продолжаются до тех пор, пока количество вычисленных чисел меньше двадцати. Другими словами, будет вычислено двадцать чисел из последовательности Фибоначчи.
На рис. 9.43 показан документ, в котором та же задача решается с помощью оператора repeat.
По сравнению с предыдущим случаем изменения кода минимальные:
a:=1:
b:=1:
i:=2:
print(NoNL,a); print(NoNL," "); print(NoNL,b); repeat
b:=a+b: a:=b-a:
print(NoNL," "); print(NoNL,b);