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

Часто встречающиея ошибки программирования:

1.Использование в качествеусловия выражения не логического типа:

While (n + m) Do

. . .

2.Отсутствие в заголовке цикла словаDo:

While (n < 10)

. . .

3.Использование после словаDoточки с запятой, которая, как правило, приводит к появлениюбесконечногоцикла:

s:=0;

n:=1;

While (n < 10) Do;

Begin

s := s + n;

n := n + 1;

End;

Циклы с постусловием

У циклов с постусловием (циклов типаДО) проверкаусловия окончанияцикла производитсяпослевыполнения операторов, составляющих тело цикла:

ПОВТОРЯТЬ

цепочка

ДО (условие);

Такой цикл повторяется до тех пор, пока условие ложно. Выполнение цикла заканчивается, если операторы цепочки изменяют значения переменных, входящих вусловие, и оно становится истинным.

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

Таким образом, условие в данном цикле является условиемегоокончания, а не продолжения, как в цикле с предусловием.

В Паскале цикл с постусловием реализован оператором цикла Repeat:

Repeat

цепочка

Until (условие);

где Repeat– служебное словоповторять,

Until– служебное словодо.

Внимание!После словаRepeatточка с запятойне ставится! Перед словомUntilточку с запятой можноне ставить.

В отличие от цикла с предусловием, в цикле с постусловием не требуется использование операторных скобок BeginEnd.

Действия оператора Repeat:

  1. выполняется оператор(цепочка),

  2. проверяется выполнение условия, стоящего после словаUntil,

  3. если оно ложно, то цикл повторяется,

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

Примеры:

  1. вычислить сумму ста первых натуральных чисел:

s = 1 + 2 + 3 + … + 98 + 99 + 100

Пусть s– искомая сумма,

i – очередное число (изменяется от1до100).

Тогда алгоритмрешения задачи можно описать следующим образом:

  1. обнуляем сумму s,

  2. берем первое число: i = 1,

  3. добавляем в сумму очередное число, пока оно не достигнет100.

Представим этот алгоритм так:

s = 0;

i = 1;

ПОВТОРЯТЬ

s = s + i;

i = i + 1;

ДО (i > 100);

Программа:

Program Gauss;

Uses CRT;

Var I, s : Word;

Begin

ClrScr;

s := 0;

i := 1;

Repeat

s := s + i;

i := i + 1;

Until (i>100);

WriteLn(‘s = ‘, s);

ReadLn;

End.

  1. вычислить сумму s всех цифр заданного натурального числа n

Пусть s– искомая сумма,

i – очередная цифра числа.

Тогда алгоритмрешения задачи можно описать следующим образом:

  1. обнуляем сумму s,

  2. берем последнююцифру числа, для чего определяем остаток от деления исходного числа на 10:i = n Mod 10,

  3. добавляем в сумму найденную цифру: s = s + i,

  4. уменьшаем число в 10 раз: n = n Div 10,

  5. повторяем цикл до тех пор, пока n = 0– это и будетусловиемвыхода из цикла.

Схема алгоритма: Программа:

Program Sum;

Uses CRT;