Читайте также:
|
|
Разработчики языка понимали, что некоторые часто встречающиеся случаи повторения лучше было бы выражать в более точной форме, чем в комбинации в операторами goto. Они ввели оператор for, особенно удобный при работе с массивами, как в следующем примере:
for i:= 1 step 1 until n do a[i]:= 0
Если не обращать внимание на довольно неудачный выбор слов step и until, идея кажется замечательной. К несчастью, она была заражена плохой идеей мнимой общности. Последовательность значений, которые могла принимать управляющая переменная i, можно было задавать в виде списка:
for i:= 2, 3, 5, 7, 11 do a[i]:= 0
Более того, элементы списка могли быть выражениями общего вида:
for i:= x, x+1, y-5, x*(y+z) do a[i]:= 0
Кроме того, допускались различные формы элементов списка:
for i:= x-3, x step 1 until y, y+7, z
while z < 20 do a[i]:= 0
Естественно, светлые головы быстро придумали патологические случаи, демонстрирующие абсурдность конструкции:
for i:= 1 step 1 until i+1 do a[i]:= 0
for i:= 1 step i until i do i:= -i
Общность оператора for в языке Algol должна служить предупреждающим сигналом для всех будущих разработчиков о том, что следует помнить об основном назначении конструкции и относиться с настороженностью к излишним общности и сложности, которые могут легко оказаться непродуктивными.
Дата добавления: 2015-07-10; просмотров: 97 | Нарушение авторских прав