в начале i=in=high=low=0, input="PI=3.14159, approximately";
while (c=NEXT(i) != EOS )
Условие продолжения цикла заключается в том, что NEXT(i)!=EOS, где NEXT(i) последовательно принимает значения символов из input. Переменная c принимает значение логического выражения NEXT(i)!=EOS, которое по определению равно ИСТИНА в цикле и ЛОЖЬ по выходе из цикла
if (1
Так как в цикле c всегда имеет значение 1, то low всегда будет увеличиваться (1
while (c=(input[I] != EOS )
Цикл продолжается до тех пор, пока не будут прочитаны все символы из input. В качестве символа конца строки в языке С используется нулевой символ "алфавита" ASCII, т.е. 00.
в начале i=in=high=low=0, done=FALSE, input="PI=3.14159, approximately";
while ((c=NEXT(i)) != EOS &&!done)
Переменная c последовательно принимает значения символов из input.
if ('P'
При первом выполнении цикла c='P', следовательно, в условном операторе условие - ЛОЖЬ.
else if ('P'>9)
ИСТИНА, и high увеличивается на 1.
while('I'!=EOS&&!done)
Возвращаемся к условию продолжения цикла. Условный оператор, сравнивающий low, high и in с ENUF, находится вне тела цикла, хотя и кажется, что он в него входит. Так как done в теле не изменяется, то цикл заканчивается, когда c=EOS. В цикле счетчики low, high и in увеличиваются в зависимости от результата сравнения c с символами '0' и '9'.
в начале i=in=high=low=0, done=FALSE, input="PI=3.14159, approximately";
while ((c=NEXT(i))!=EOS && !done) {
Переменная c последовательно принимает значения символов из input.
if ('P'
ЛОЖЬ
else if ('P'>9)
ИСТИНА
done=(++high==ENUF)
Переменная high после увеличения не равна ENUF, так что переменной done присваивается значение ЛОЖЬ, high =1
while('I'!=EOS&&!done)
ИСТИНА
if ('I'
ЛОЖЬ
else if ('P'>9)
ИСТИНА
done=(++high==ENUF)
high=2, done=ЛОЖЬ
while('I'!=EOS&&!done)
ИСТИНА
if ('='
ЛОЖЬ
else if ('='>9)
ИСТИНА
done=(++high==ENUF)
high=3, done=ИСТИНА
while('I'!=EOS&&!done)
done=ИСТИНА, так что !done=ЛОЖЬ, и цикл завершается.