Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по Паскалю.doc
Скачиваний:
14
Добавлен:
04.11.2018
Размер:
7.76 Mб
Скачать

Var n, s : Word;

Begin

ClrScr;

s := 0;

For n:=1 To 100 Do

s := s + n;

WriteLn(‘Сумма равна ’, s);

ReadLn;

End.

Эту же задачу можно решить, суммируя числа справа налево, то есть от 100 до 1:

Program Gauss;

Uses CRT;

Var I, s : Word;

Begin

ClrScr;

s := 0;

For i:=100 DownTo 1 Do

s := s + i;

WriteLn(‘Сумма равна ’, s);

ReadLn;

End.

Построение операторов цикла For подчиняется следующим правилам:

1. начальное и конечное значения параметра цикла можно задавать константами (как в примере), заранее определенными переменными или выражениями,

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

m := 1;

n := 10;

For j := m To n Do

Begin

a[j] := j + 10;

m := m + 1; ошибка!

n := n + 1; ошибка!

End;

Выходим из этого цикла со значением параметра цикла j, равным 10.

Нежелательно внутри области цикла самому изменять значение параметра цикла - это может привести к появлению бесконечных циклов:

s := 0;

n := 10;

For k := 1 To n Do

Begin

k := k + 1;

s := s + k;

End;

Эта программа вычисляет сумму s четных целых чисел от 2 до 10, равную 30. При этом конечное значение параметра цикла k равно 10 .

Зададим n = 11:

s := 0;

n := 11;

For k := 1 To n Do

Begin

k := k + 1;

s := s + k;

End;

Цикл превратится в бесконечный: значение параметра цикла k никогда не будет равным заданному конечному значению 11. Оно перепрыгнет это значение и уйдет в бесконечность.

Если же цикл не выполняется ни разу, то параметр цикла сбрасывается на ноль:

s := 0;

p := 1;

For k := 10 To 1 Do

Begin

p := p * k;

s := s + k;

End;

Выходим из этого цикла со значением k, равным 0.

3. допускается использование цикла в цикле, при этом циклы должны иметь различные параметры цикла:

For i := 1 To n Do эти циклы выводят элементы массива Anm

Begin в виде матрицы, построчно

For j:= 1 To m Do

Write(a[i,j]:5);

WriteLn;

End;

4. после окончания работы цикла значение параметра цикла сохраняется,

5. в область цикла можно входить только через заголовок цикла For; не разрешается переход с помощью операторов If и GoTo, расположенных вне данного цикла, на операторы в области цикла:

If (p Mod s > 10)

Then GoTo 5; ошибка – переход в тело цикла, минуя его заголовок

For i := 1 To 10 Do

Begin

s := s + i;

5: p := p + i;

End;

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

For i := 1 To 100 Do

Begin

If (a[i]=0)

Then Goto 2; переход внутри тела цикла

a[i] := 1 / a[i];

2:

End;

7. с помощью оператора Break можно досрочно выйти из цикла:

For i := 1 To 100 Do

Begin

k := i;

If (a[i] < 0)

Then Break; поиск первого отрицательного элемента в векторе

End;

8. оператор Continue позволяет досрочно перейти к следующей итерации цикла:

For i := 1 To 100 Do

Begin

If (a[i] = 0)

Then Continue; если ноль, то на следующую итерацию

a[i] := 1 / a[i];

End;

Основное назначение циклов с параметром – обработка массивов, причем параметр цикла отождествляется с индексом (номером) элемента массива.