3: Поговорим о цикле For…to…do
4: Когда For…to…do уступает место при табулировании графиков функций на заданном интервале с заданным шагом; для расчета с заданной точностью сумм бесконечных асимптотических рядов, с помощью которых выражаются тригонометрические функции, трансцендентные числа 3,1415… и основание натурального логарифма e2,72…; для вычисления квадратного корня из числа методом Герона.
5: Сравнение циклов While и Repeat Формат оператора цикла с предусловием: While do begin . . . . . . . . . . . . . . . . end;
6: Цикл предусловием While … do
7: Особенности цикла While…do
8: Цикл с постусловием Repeat … until
9: Особенности цикла Repeat…until Так как условие проверяется на выходе из цикла, то цикл выполняется хотя бы один раз.
10: Решаем самостоятельно Два игрока A и B бросают кубик N раз, суммируя результаты бросков. Напишите программу, определяющую победителя после N бросков.
11: Задача о рассеянном джентльмене Некто отправился на работу из дома (пункт А) в офис (пункт B). Расстояние между домом и офисом равно 1 км. Пройдя половину пути, джентльмен вспомнил, что не попрощался с семьей, повернул назад и прошел третью часть расстояния и, боясь опоздать на работу, снова повернул и прошел четверть расстояния. Затем снова повернул и прошел 1/5 расстояния и т. д.
12: Анализ задачи Расстояние, на котором окажется джентльмен от дома (А), можно записать так: SА 1/2 - 1/3 1/4 - 1/5 1/6 – 1/7 … (-1)i1 /i… Так как расстояние АВ1, джентльмен окажется от места работы на расстоянии S: S1-SА 1- 1/2 - 1/3 1/4 - 1/5 1/6 - 1/7 … (-1)i1 /i … Таким образом, решение задачи сводится к вычислению суммы гармонического ряда: S 1-1/2 1/3 – 1/4 1/5 -… (-1)i1 /i -… Суммирование продолжаем, пока абсолютное значение разности сумм, вычисленных на (i1)-м шаге и i-м шаге, больше наперед заданного малого числа eps , т. е. S-S1 eps. Таким образом, ряд вычисляется приближенно с заданной погрешностью. Для решения задачи используем цикл While.
13: Программа для задачи о джентльмене Program harmonyriad; Вычисление гармонического ряда; uses crt; const eps0. 00001; заданная точность вычисления var i: integer; S,S1 : real; p: integer; Begin clrscr; очистка экрана s1:0; начальное значение сумматора s:1; суммирование 1-го члена ряда i:1; начальное значение для 1-го члена ряда p: -1; знак числа отрицательный while abs(s1-s) eps do begin s1:s; запоминаем сумму, вычисленную на предыдущем шаге i:i1; формирование следующего члена ряда числа s:sp/i; суммирование знакопеременного ряда p: - p; смена знака end; while writeln(S от офиса, s:7:5); readln End.
14: Рекуррентные соотношения В математике известно понятие рекуррентной последовательности чисел (от латинского «recurrere» – «возвращаться»).
15: Примеры рекуррентных соотношений С помощью метода рекуррентных соотношений вычисляют: арифметические и геометрические последовательности; последовательность чисел Фибоначчи; бесконечные последовательности (ряды) для тригонометрических функций; бесконечные последовательности (ряды) для функций ex, sqrt(x), ln(1x); выражения вида:
16: Анализ задачи о вычислении Задача. Вычислить квадратный корень целого числа а по рекуррентной формуле Герона Xi1(X i а/X i)/2 при заданной точности вычисления eps. Алгоритм вычисления. Зададим X1 - начальное значение корня из числа а. Например, X1 a/2. Тогда каждое следующее приближение вычисляется через предыдущее: Х2(X1 а/X1)/2 Х3(X2 а/X2)/2 ----------- Xi1(Xi а/Xi)/2 Вычисление продолжаем до тех пор, пока выполнится модуль разницы между Xi1и Xi станет меньше заданной погрешности вычисления eps: Xi1 - Xi eps Для решения задачи используем цикл Repeat… until.
17: Program mysqrt program mysqrt; Вычисление квадратного коpня числа по фоpмуле Герона х(ха/х)/2 uses crt; const eps0. 0001; var a: integer; x, x1: real; Begin clrscr; write(Введите число а); readln(a); x:a/2; начальное значение корня repeat x1:x; запоминаем предыдущее приближение корня x:(xa/x)/2; вычисляем (i1)-е приближение корня until abs(x-x1)
18: Задачи с бесконечными рядами Задача. Вычислить сумму бесконечного ряда Sx – x3/3! x5/5! - x7/7! . . . c заданной точностью eps. Будем использовать рекуррентную формулу, с помощью которой каждый последующий член ряда выражается через предыдущий. , т. е. справедливо соотношение: un q un-1 Определяем величину q, последовательно рассмотрев отношение второго члена к перовому, третьего ко второму, четвертого к третьему и т. д. : q1 u2 / u1 - (x3/3!)/x - x2/(2 3) q2 u3 / u2 - (x5 / 5!) / (x3/3!) - x2/(4 5) q3 u4 / u3 - (x7 / 7!)/ (x5/ 5!) - x/(6 7) Для произвольного q справедлива рекуррентная формула: q - x2 / k/(k1), где k 2, 4, 6, . . . В языках программирования стандартная функция sin(x) рассчитывается с помощью асимптотического ряда S.
19: Program mysin Program mysin; const eps0. 00001; точность вычислений var u: real; s: real; к : integer; Begin write (Введите x); readln(x); s:0; обнуление суммы к:0; начальное значение переменной k u:x; первый член ряда while abs(u) eps do begin s:su; суммируем ряд к:к2; формируем четное число u: - u sqr(x) / к/ (к1) ; k-член ряда end; writeln ( сумма ряда S,S); writeln ( sin x, sin(x)); readln End.
20: Арифметическая последовательность В символьной записи арифметическую прогрессию можно представить так: a, ad, a2d, a3d,…, a(N-1)d. Здесь a – первый член последовательности, d – разность между двумя соседними членами, N – число членов последовательности. Например: 1 3 5 7 9 … 99 (a1, d2) 2 4 6 8 … 100 (a2, d2)
21: Геометрическая прогрессия Геометрической последовательностью называется последовательность, в которой отношение между ее членом и членом, ему предшествующим, есть величина постоянная.
22: У царя было семь сыновей. В сундуке лежали изумруды. Пришел первый сын и взял половину того, что было. Пришел второй сын и взял половину того, что осталось и т. д. Каждый из сыновей приходил и забирал половину того, что осталось. Наконец, пришел последний, седьмой сын и увидел почти пустой сундук — с двумя изумрудами. У царя было семь сыновей. В сундуке лежали изумруды. Пришел первый сын и взял половину того, что было. Пришел второй сын и взял половину того, что осталось и т. д. Каждый из сыновей приходил и забирал половину того, что осталось. Наконец, пришел последний, седьмой сын и увидел почти пустой сундук — с двумя изумрудами. Сколько изумрудов лежало в сундуке первоначально? При решении задачи будем использовать цикл While…do.
23: Программа Program izumrud; Var I, q, r: integer; Begin i7 номер 7-го сына q2 седьмому сыну досталось 2 изумруда r2 разность геометрической прогрессии WriteLn(i, I, q, q) While i1 do begin qqr вычисление i-того члена прогрессии ii-1 номер следующего сына уменьшается на 1 WriteLn(i, I, q, q) end; WriteLn(всего ,q, изумрудов) End.
24: Задание 1. Не используя стандартные функции (за исключением abs), вычислить с разной точностью eps0: Y1ex 1x/1! x2/2! … xn/n! …; Y2 cos(x) 1- x2/2! x4/4! -… (-1)n x2n/(2n)! …; Y3 ln(1x) x – x2/2 x3/3 -… (-1)n-1 xn/(n)… 2. Определить количество итераций (повторений) n в зависимости от eps. 3. Занести данные в таблицу:
25: Можно ли вычислить число ?
26: Число и бесконечные ряды
27: Домашнее задание Задача 1. Напишите программу для вычисления n-й степени числа X. Вычисление описать каждым из трех вариантов оператора цикла: For. . . to. . . do, While… do, Repeat… until. Задача 2. Вычислив асимптотический ряд S 1-1/3 1/5 -1/7 1/9 - … (-1)i1 (1/(2i1)). . . с точностью eps0. 0001 , вы узнаете, чему равно число 4S . Напишите программу вычисления числа и сравните со значением , вычисленным с помощью стандартной функции Pi. Замечание. Здесь удобно использовать такую формулу для нечетного числа: i:i2 (i1, 2, 3. . . ).
28: Использованные источники
29: Инструкция к демонстрации презентации Запуск анимационных эффектов осуществляется с помощью триггеров: