Нарушение этого требования может привести к серьезным ошибкам при использовании подпрограмм и будет рассмотрено при изучении процедур и функций.
3. Выражения, определяющие начальное и конечное значения параметра("Выражение 1" и "Выражение 2"),должны быть ординального типа, совместимого с типом самого параметра цикла.
Параметру цикла перед выполнением цикла присваивается значение выражения 1, в конце каждого цикла текущее значение параметра сравнивается со значением выражения 2, что и определяет требование совместимости типов параметра цикла и значений выражений 1 и 2. В случае нарушения данного требования при трансляции программы генерируется сообщение
Error 26: Type mismatсh (несоответствие типов).
4. Шаг изменения параметра цикла равен +1 или -1.
Если в программе шаг изменения параметра должен отличаться от значений +1 и -1, то нужно применить один из следующих способов:
- вместо оператора Forиспользовать операторы Whileили Repeat;
- в цикле Forзадать соответствующий алгоритм изменения индексов.
Пример 1. Для массива просуммировать отдельно элементы с четными и нечетными индексами.
TypeAr = array[1..100] of real;
Var i,n : byte;
S1,S2 : real;
X : Ar;
Begin
Ввод n, X
Вариант 1:
S1:=0; S2:=0; i:=2;
Whilei<=n do
Begin
S1:=S1+x[i-1]; S2:=S2+x[i];
Inc(i,2);
End;
Ifodd(n) then
S1:=S1+x[n];
Вариант 2:
S1:=0; S2:=0;
For i:=1 to n div 2 do
Begin
S1:=S1+x[2*i-1]; S2:=S2+x[2*i];
End;
If odd(n) then
S1:=S1+x[n];
В каждом цикле обрабатываются два элемента массива Х. Если их количество n нечетное, то последний элемент x[n] добавляется в сумму S1 после окончания работы цикла.
Вариант 1 наиболее универсален в том смысле, что пригоден при любом шаге перебора элементов массива. Если же шаг равен 2, то для данной задачи наиболее эффективным является вариант 3.