Читаю данный труд, по нему вникаю в программирование. Но вот встретил задачку, к которой буквально отсутствует описание используемых переменных, не могу понять уже вторую неделю что и зачем делает в ней цикл. Собственно вот она, растолкуйте пожалуйста:

> -- Цитата:
> Задача 12. Дан массив. Найти наибольшее значение.Решение:Идея такова, предположим, что максимальный элемент, это первый:max:=mas[1]Затем организуем цикл перебора от 2 до последнего элемента и на каждом шагу цикла, если очередной элемент массива больше уже найденного максимального,  то пусть максимальному присваивается значение очередного элемента. Запишем программу полностью:MODULE Example;IMPORT In, StdLog;	PROCEDURE Calc*;		VAR			mas:ARRAY 100 OF INTEGER;			k, N, max:INTEGER;		BEGIN		In.Open;		;  			WHILE in.Done DO				; 				In.Int(mas[N]);			END;		; 		k:=k+1;		max:=mas[0];			WHILE k<=N DO				IF mas[k]>max THEN					max:=mas[k];				END;			END;			k:=k+1;		END;		StdLog.Int(max);	END Calc;END Example.Примечания. Оператор N:=N-1 необходим для учета последней неудачной операции ввода. перед тем, как циклввода WHILE завершит свою работу, выполнится попытка чтения из уже пустого потока, что создаст состояниеошибки. переменная Done получит значение FALSE и цикл завершит свою работу, но тело цикла уже будет выполнено и N вырастет на 1, эту 1 и надо вернуть назад.