КАТЕГОРИИ: Архитектура-(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 End. Begin Begin Var End. Begin End. Begin S:= 0; k:=1; repeat S:= S + 1/sqr(k); k:= k + 1; until k > 20; writeln(‘ S = ’, S:10:5): Задачу примера 4.15 можно решить с помощью другого варианта циклического алгоритма. 1. Положить S = 0, k = 1. 2. Если k > 20, то СТОП, иначе продолжить. 3. Вычислить S + и записать результат в S. 4. Увеличить k на 1. 5. Повторить шаг 2. На PASCAL этот алгоритм удобно записать с помощью цикла while, т.к. в данном варианте проверка условия прекращения цикла происходит до выполнения действия. var S: real; k: integer; S:= 0; k:=1; while k <= 20 do begin S:= S + 1/sqr(k); k:= k + 1; end; writeln(‘ S = ’, S:10:5): В приведенных примерах количество повторений тела цикла можно оценить еще до его выполнения. Однако, во многих задачах количество этих повторений заранее не известно и вычислено быть не может. Операторы repeat и while позволяют организовывать такие циклы. В следующих двух примерах рассмотрим нахождение суммы бесконечного ряда с заданной точностью. Пример 4.16. Найти сумму членов бесконечно убывающей геометрической прогрессии с точностью до слагаемого, меньшего заданной величины e: z = 1 + x + x 2 + x 3 +…+ xn + … При нахождении суммы такого ряда не следует вычислять отдельно каждый элемент. Достаточно установить зависимость, по которой из предыдущего элемента образуется следующий. Обозначим через an = xn – n-й член прогрессии, тогда an+1 = xn +1 = an × x; a0 = 1. Такой подход позволяет сократить количество вычислительных операций и уменьшить время счета. Сумму будем накапливать в переменной S, которую предварительно необходимо обнулить, как и в предыдущем примере. Условие окончания цикла – |an | £ e., которое означает, что последнее слагаемое по модулю меньше e. Так как слагаемые данного выражения убывают, то и все следующие слагаемые малы, значит, сумма от последующих сложений практически не увеличится и процесс накопления суммы можно прекратить. Ниже приведены два варианта программы. В первом варианте использован оператор while, во втором – repeat. В программах an обозначено именем а. Первый вариант x, s, eps, a: real; write ('введите х и epsilon - '); readln (x, eps); s:=0; a:=1; { задание параметру цикла его начального значения } while abs(a) > eps do { проверка условия выхода из цикла } s:= s + a; a:= a * x; end; writeln ('сумма прогрессии = ', s:10:3) Второй вариант x, s, eps, a: real; write ('введите х и epsilon - '); readln (x, eps); s:= 0; a:= 1; { задание параметру цикла его начального значения } s:= s + a; a:= a * x; until abs(a) < eps; { проверка условия выхода из цикла } writeln ('сумма прогрессии = ', s:10:3)
Дата добавления: 2014-01-06; Просмотров: 304; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |