Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Вычисление сумм

End.

Repeat

Begin

Var

Выполнение оператора.

OператорN

Repeat

Структура оператора

Оператор цикла с постусловием

End.

Begin

Var

Выполнение оператора.

Структура оператора

Оператор цикла с предусловием

While логическое выражение do оператор,

где оператор – простой или состав­ной оператор, который является телом цикла.

1) вычисляется логическое выражение, результат вычисления анализируется;

2) если результат вычислений – true, то выполняется тело цикла, после чего осуществляется возврат к оператору while; если результат – false, то тело цикла не выполняется, а управление пе­редаётся оператору программы, расположенному непосредственно пос­ле тела цикла.

Если первая проверка условия окончания цикла дала результат false, то тело цикла не выполнится ни разу.

Логику действия оператора while можно сформулировать так: «выполнять тело цикла, пока условие истинно».

Пример 4.13. Вычислить значения функции y = sin (x 2) на отрезке [a, b], если шаг изменения её аргумента Dx.

 

x, y, deltaX, a, b: real;

write ('введите a, b, deltaX - ');

readln (a, b, deltaX);

x:= a; { присваивание параметру цикла x его

начального значения }

while x <= b do { проверка условия работы цикла }

begin { операторы, составляющие }

y:= sin(x * x); { тело цикла, заключены в }

writeln ('x=', x:10:3, ' y=',y:10:3);

x:= x + deltaX { опе­раторные скобки }

end { begin-end }

 

oператор1;

oператор2;

……………

until логическое выражение;

где опе­ратор1, оператор2,..., операторN – операторы, представляющие в совокупности тело цикла; repeat ([репиит] – повторять), until ([антил] – пока) – ключевые слова оператора. Приставка “пост” означает “после”, т.е. в дословном переводе это цикл с “послеусловием”.

1) исполняются операторы, составляющие тело цикла;

2) вычисляется логическое выражение, результат вычисления анализируется;

3) если результатом вычислений является false, тело цикла выполняется снова, в противном случае (результат вычислений – true) очередного повторения тела цикла не происходит, а осуществляется выход из цикла на следующий по порядку оператор программы.

Таким образом, логику действия оператора repeat можно выра­зить инструкцией «выполнять тело цикла до тех пор, пока условие не станет истинным».

Пример 4.14. Выполнить задание примера 4.13, используя оператор repeat.

x, y, deltaX, a, b: real;

write ('введите a, b, deltaX - ');

readln (a, b, deltaX);

x:= a; {присваивание параметру цикла x

его начального значения }

{ вычисления, предус­мотренные телом цикла }

y:= sin(x * x);

writeln ('x =', x:10:3,' y =', y:10:3);

x:= x + deltaX

until x > b { проверка условия выхода из цикла }

 

Применяя операторы while и repeat, необходимо позаботиться о том, чтобы значения переменных, входящих в условие окончания цик­ла, менялись в теле цикла, иначе циклический процесс будет продолжаться бесконечно («зацикливание» программы).

Подчеркнем отличия между операторами repeat и while.

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

Это наиболее важное различие, оно отражено и в названиях операторов: “предусловие” – т.е. сначала проверяется условие, “постусловие” – т.е. условие проверяется после.

2. В операторе repeat условие выхода из цикла удовлетворяет­ся, если логическое выражение истинно, а в операторе while, если ложно.

Для лучшего запоминания этого различия предлагается такое правило: если в данных операторах логическое выражение истинно, то выполняется то действие, которое следует за ним. В цикле while это тело цикла, а в repeat – следующие за циклом операторы.

3. Тело цикла, организованного с помощью оператора while, может содержать только один оператор (в том числе и составной), в то время как между словами repeat и until их можно разместить несколько.

 

Одной из важных задач, решаемых с помощью циклического алгоритма – вычисление суммы большого числа слагаемых.

Пример 4.15. Вычислить сумму .

Для решения данной задачи воспользуемся методом накопления суммы. Суть его состоит в следующем. Положим S = 0 – это начальное значение S, когда вычисление суммы еще не начато. Далее вычислим следующее выражение: S + , значение которого равно 1, присвоим его переменной S. На языке PASCAL эта ото действие можно записать в виде оператора

S:= S + 1/sqr(1);

После выполнения этой операции значение S будет равно 1, т.е. первому слагаемому.

Теперь вычислим выражение: S + , значение которого, снова присвоим переменной S. На языке PASCAL эта ото действие можно записать в виде оператора

S:= S + 1/sqr(2);

При выполнении этой операции к старому значению S = 1 прибавится второе слагаемое, и результат запишется в S. После выполнения этой операции значение S будет равно , т.е. сумме первых двух слагаемых.

Аналогично, после выполнения оператора

S:= S + 1/sqr(3);

мы получим сумму 3-х слагаемых, и т.д. Для вычисления всей суммы надо 20 раз повторить следующий оператор

S:= S + 1/sqr(k);

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

1. Положить S = 0, k = 1.

2. Вычислить S + и записать результат в S.

3. Увеличить k на 1.

4. Если k £ 20, повторить шаг 2, иначе СТОП.

На PASCAL этот алгоритм удобно записать с помощью цикла repeat, т.к. в данном варианте алгоритма проверка условия прекращения цикла происходит после выполнения действия.

var S: real;

k: integer;

<== предыдущая лекция | следующая лекция ==>
Операторы цикла | Оператор цикла с параметром
Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 284; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.02 сек.