Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 10 лет назад пользователемСветлана Недозевина
1 Циклы по условию на языке Pascal Раздел «Программирование» (10 – 11 кл.) Безрученко Людмила Ивановна, учитель информатики и ИКТ ГОУ Центр образования 671 Петродворцового района Санкт-Петербурга
2 Изучить циклы с предусловием While… do и с постусловием Repeat… until на примере решения задач с использованием рекуррентных соотношений и бесконечных рядов. Цикл – процесс многократного повторения каких-либо действий. Язык Паскаль имеет три оператора, с помощью которых можно организовать циклическую структуру:... Цикл с параметром (счетчиком) Для (For... ) Цикл с предусловием Пока (While... do) Цикл с постусловием До (Repeat... until) ! !
3 Поговорим о цикле For…to…do В цикле For … to … do начальное значение переменной i меньше предельного. Шаг изменения i по умолчанию равен +1. Переменная i НИКОГДА не может стоять СЛЕВА о т о ператора присваивания « := ». var i: integer; {счетчик} Begin For i:=1 to 10 do Writeln(i); End. Программа ! ! Надо помнить ! ! Тип переменной i – любой скалярный (integer, byte, char, др.) КРОМЕ вещественного. i НИКОГДА не может быть real. Пусть решается простая задача вывода на экран целых чисел от 1 до 10. Для этой задачи идеально подходит цикл со счетчиком For…to… do.
4 при табулировании графиков функций на заданном интервале с заданным шагом; = для расчета с заданной точностью сумм бесконечных асимптотических рядов, с помощью которых выражаются тригонометрические функции, трансцендентные числа = 3,1415… и основание натурального логарифма e=2,72…; для вычисления квадратного корня из числа методом Герона. Когда For…to…do уступает место ! ! Если число повторений известно наперед, цикл For идеален! ! ! Циклы While… do и Repeat… until используются в целом классе задач, когда повторные вычисления заканчиваются по заданному наперед условию:
5 Формат оператора цикла с предусловием: While do begin end; Тело цикла Формат оператора цикла с постусловием: Repeat until ; 1.До цикла задается начальное значение переменных, входящих в условие. Условие - выражение булевского типа. 2.В теле цикла значение переменных, входящих в условие, должны обязательно изменять свое значение, иначе возникнет ситуация «зависания». Тело цикла Общее в этих циклах Сравнение циклов While и Repeat
6 Цикл предусловием While … do Решение задачи о выводе 10 целых чисел на экран с использованием цикла While… do: i: =1; {начальное значение} i:=i+1 Программа var i: integer; {счетчик} Begin Блок-схема алгоритма While i
7 Особенности цикла While…do Так как условие проверяется на входе в цикл, то при неверном условии цикл не выполняется ни разу, т.е. не выполняются операторы, стоящие в теле цикла. Операторы, входящие в тело цикла, обязательно заключаются в операторные скобки, если в теле цикла более одного оператора. В противном случае будет выполняться только первое действие, стоящее под заголовком цикла. В теле цикла должно обязательно выполняться действие, приводящее к изменению условия, иначе цикл станет бесконечным. Оператор, в котором изменяются переменные, входящие в условие, может стоять не обязательно в конце цикла. ! ! ! ! ! !
8 Цикл с постусловием Repeat … until Решение задачи о выводе 10 целых чисел на экран с использованием цикла Repeat…until: i: =1; {начальное значение} i:=i+1 Программа var i: integer; {счетчик} Begin Блок-схема алгоритма Repeat Writeln(i); Until i>10 End. конец Нет (False) Да (True) i:=1 i:=i+1 начало Writeln(i); i>10 ! ! ! !
9 Особенности цикла Repeat…until Так как условие проверяется на выходе из цикла, то цикл выполняется хотя бы один раз. Все операторы, стоящие в теле цикла, выполняются ДО проверки условия, поэтому операторные скобки не ставятся. В теле цикла должно обязательно выполняться действие, приводящее к изменению условия, иначе цикл станет бесконечным. Оператор, в котором изменяются входящие в условие переменные, может стоять не обязательно в конце цикла. ! ! ! ! ! !
10 Решаем самостоятельно Два игрока A и B бросают кубик N раз, суммируя результаты бросков. Напишите программу, определяющую победителя после N бросков. Два игрока A и B бросают кубик и суммируют результаты бросков. Победителем объявляется игрок, набравший первым объявленную сумму очков S. Напишите программу, определяющую победителя. Два варианта одной задачи: ? ? ! ! ! !
11 Задача о рассеянном джентльмене Некто отправился на работу из дома (пункт А) в офис (пункт B). Расстояние между домом и офисом равно 1 км. Пройдя половину пути, джентльмен вспомнил, что не попрощался с семьей, повернул назад и прошел третью часть расстояния и, боясь опоздать на работу, снова повернул и прошел четверть расстояния. Затем снова повернул и прошел 1/5 расстояния и т.д. A B 1 км На каком расстоянии от офиса окажется джентльмен, если продолжит свои метания? Провести вычисления расстояния с точностью до 1 см. 1/2 -1/3 1/4 -1/5 1/6 и т.д.
12 Анализ задачи Расстояние, на котором окажется джентльмен от дома (А), можно записать так: S А = 1/2 - 1/3 + 1/4 - 1/5 + 1/6 – 1/7 +… (-1) i+1 /i… Так как расстояние АВ=1, джентльмен окажется от места работы на расстоянии S: S=1-S А = 1- [1/2 - 1/3 + 1/4 - 1/5 + 1/6 - 1/7 +… (-1) i+1 /i … Таким образом, решение задачи сводится к вычислению суммы гармонического ряда: S= 1-1/2 + 1/3 – 1/4 + 1/5 -… (-1) i+1 /i -… Суммирование продолжаем, пока абсолютное значение разности сумм, вычисленных на (i+1)-м шаге и i-м шаге, больше наперед заданного малого числа eps, т.е. |S-S1|> eps. Таким образом, ряд вычисляется приближенно с заданной погрешностью. Для решения задачи используем цикл While.
13 Программа для задачи о джентльмене Program harmony_riad; {Вычисление гармонического ряда}; uses crt; const eps= ; {заданная точность вычисления} 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:=i+1; {формирование следующего члена ряда числа } s:=s+p/i; {суммирование знакопеременного ряда} p:= - p; {смена знака} end; {while} writeln('S от офиса=', s:7:5); readln End.
14 Рекуррентные соотношения В математике известно понятие рекуррентной последовательности чисел (от латинского «recurrere» – «возвращаться»). Рекуррентными называются соотношения, в которых очередной член последовательности выражен через один или несколько предыдущих. ! ! Это понятие вводят так: пусть известно k чисел a 1, …, a k, которые являются началом числовой последовательности. Следующие элементы этой последовательности вычисляются так: a k+1 =F(a 1, …, a k ); a k+2 =F(a 1, …, a k+1 ); a k+3 =F(a 1, …, a k+2 );…, a k+i =F(a 1, …, a k+i-1 ) Величина k называется глубиной рекурсии. ! ! ! ! ! !
15 Примеры рекуррентных соотношений С помощью метода рекуррентных соотношений вычисляют: арифметические и геометрические последовательности; последовательность чисел Фибоначчи; бесконечные последовательности (ряды) для тригонометрических функций; бесконечные последовательности (ряды) для функций e x, sqrt(x), ln(1+x); выражения вида: N корней
16 Анализ задачи о вычислении Задача. Вычислить квадратный корень целого числа а по рекуррентной формуле Герона X i+1 =(X i + а/X i )/2 при заданной точности вычисления eps. Алгоритм вычисления. Зададим X 1 - начальное значение корня из числа а. Например, X 1 = a/2. Тогда каждое следующее приближение вычисляется через предыдущее: Х 2 =(X 1 + а/X 1 )/2 Х 3 =(X 2 + а/X 2 )/ X i+1 =(X i + а/X i )/2 Вычисление продолжаем до тех пор, пока выполнится модуль разницы между X i+1 и X i станет меньше заданной погрешности вычисления eps: |X i+1 - X i |< eps Для решения задачи используем цикл Repeat… until.
17 Program mysqrt program mysqrt; {Вычисление квадратного коpня числа по фоpмуле Герона} {х=(х+а/х)/2} uses crt; const eps=0.0001; var a: integer; x, x1: real; Begin clrscr; write('Введите число а='); readln(a); x:=a/2; {начальное значение корня} repeat x1:=x; {запоминаем предыдущее приближение корня} x:=(x+a/x)/2; {вычисляем (i+1)-е приближение корня} until abs(x-x1)
18 Задачи с бесконечными рядами Задача. Вычислить сумму бесконечного ряда S=x – x 3 /3! + x 5 /5! - x 7 /7! +... c заданной точностью eps. Будем использовать рекуррентную формулу, с помощью которой каждый последующий член ряда выражается через предыдущий., т.е. справедливо соотношение: u n = q u n-1 Определяем величину q, последовательно рассмотрев отношение второго члена к перовому, третьего ко второму, четвертого к третьему и т.д.: q 1 = u 2 / u 1 = - (x 3 /3!)/x = - x 2 /(2 * 3) q 2 = u 3 / u 2 = - (x 5 / 5!) / (x 3 /3!) = - x 2 /(4 * 5) q 3 = u 4 / u 3 = - (x 7 / 7!)/ (x 5 / 5!) = - x/(6 * 7) q Для произвольного q справедлива рекуррентная формула: q = - x 2 / k/(k+1), где k= 2, 4, 6,... В языках программирования стандартная функция sin(x) рассчитывается с помощью асимптотического ряда S.
19 Program mysin Program mysin; const eps= ; {точность вычислений} var u: real; s: real; к : integer; Begin write (Введите x='); readln(x); s:=0; {обнуление суммы} к:=0; {начальное значение переменной k} u:=x; {первый член ряда} while abs(u) > eps do begin s:=s+u; {суммируем ряд} к:=к+2; { формируем четное число } u:= - u * sqr(x) / к/ (к+1) ; {k-член ряда} end; writeln (' сумма ряда S=',S); writeln (' sin x=', sin(x)); readln End.
20 Арифметическая последовательность В символьной записи арифметическую прогрессию можно представить так: a, a+d, a+2*d, a+3*d,…, a+(N-1)*d. Здесь a – первый член последовательности, d – разность между двумя соседними членами, N – число членов последовательности. Например: … + 99 (a=1, d=2) …+ 100 (a=2, d=2) ! ! Два типа задач: Вычислить сумму S при заданном числе членов N (используем цикл For). Определить число членов N при достижении заданной суммы S (используем цикл While).
21 Геометрическая прогрессия Геометрической последовательностью называется последовательность, в которой отношение между ее членом и членом, ему предшествующим, есть величина постоянная. Сумма геометрической прогрессии S определяется формулой: S= a + a*r + a*r 2 + a*r 3 + … + a*r (N-1) В символьной записи это можно записать так: a, a*r, a*r 2, a*r 3, …, a* r (N-1) r Здесь буквой a обозначен первый член последовательности, буквой r – ее знаменатель и буквой N – число членов последовательности. Например, если a=4, r=0.5, N=7, получаем последовательность 4, 2, 1, 0.5, 0.25, 0.125, ! ! ! !
22 У царя было семь сыновей. В сундуке лежали изумруды. Пришел первый сын и взял половину того, что было. Пришел второй сын и взял половину того, что осталось и т.д. Каждый из сыновей приходил и забирал половину того, что осталось. Наконец, пришел последний, седьмой сын и увидел почти пустой сундук с двумя изумрудами. Сколько изумрудов лежало в сундуке первоначально? While…do При решении задачи будем использовать цикл While…do. Нет (False) Да (True) i=7 q=2 i=i-1 q=q* 2 начало конец i >1 q Задача «Изумруды» ! !Блок-схема ! !Задача
23 Программа Program izumrud; Var I, q, r: integer; Begin i=7 'номер 7-го сына q=2 'седьмому сыну досталось 2 изумруда r=2 разность геометрической прогрессии WriteLn(i=, I, q=, q) While i>1 do begin q=q*r вычисление i-того члена прогрессии i=i-1 ' номер следующего сына уменьшается на 1 WriteLn(i=, I, q=, q) end; WriteLn(всего,q, изумрудов) End.
24 Задание 1. Не используя стандартные функции (за исключением abs), вычислить с разной точностью eps>0: a)Y1=e x = 1+x/1! + x 2 /2! +…+ x n /n! …; b)Y2= cos(x) = 1- x 2 /2! + x 4 /4! -…+ (-1) n x 2n /(2n)! +…; c)Y3= ln(1+x)= x – x 2 /2 + x 3 /3 -… + (-1) n-1 x n /(n)+… 2. Определить количество итераций (повторений) n в зависимости от eps. 3. Занести данные в таблицу: epsy1ny2ny3n
25 Можно ли вычислить число ? Монумент числу установлен в Сиэтле Одним из самых знаменитых чисел в математике, вычисленных приближенно, является число. Число определяется как отношение длины окружности к ее диаметру. Вот значение до 16-го знака: … Числу воздвигают монументы и посвящают стихи. Во всех алгоритмических языках есть стандартная функция для вычисления числа. В языке Паскаль это функция Pi. Одним из самых знаменитых чисел в математике, вычисленных приближенно, является число. Число определяется как отношение длины окружности к ее диаметру. Вот значение до 16-го знака: … Числу воздвигают монументы и посвящают стихи. Во всех алгоритмических языках есть стандартная функция для вычисления числа. В языке Паскаль это функция Pi. Гордый Рим трубил победу Над твердыней Сиракуз; Но трудами Архимеда Много больше я горжусь. Надо только постараться И запомнить все как есть: Три – четырнадцать – пятнадцать – Девяносто два и шесть! (С.Бобров )
26 Число и бесконечные ряды У числа очень интересная история. Еще в 200 г. до нашей эры греческий математик Архимед (тот самый Архимед, который, купаясь в море, вдруг воскликнул «Эврика!» и открыл знаменитый закон Архимеда!) утверждал, что число меньше, чем 22/7 и больше, чем 223/71. Многие математики выводили формулы для приближенного вычисления в виде бесконечных рядов, например: = 4 – 4/3 +4/5 – 4/7 + 4/9 - 4/11 + … (Готфрид Лейбниц ( около 1673 г.) = 2sqrt(3)[1 – 1/(3*3) +1/(3 2 *5) - 1/(3 3 *7)+…], (Шарп ( около 1699 г.)) = sqrt(6 + 6/ / / / /5 2 … ) (Эйлер ( около 1736 г.)). Здесь sqrt обозначение знака квадратного корня из числа.
27 Домашнее задание Задача 1. Напишите программу для вычисления n-й степени числа X. Вычисление описать каждым из трех вариантов оператора цикла: For... to...do, While… do, Repeat… until. Задача 2. Вычислив асимптотический ряд S= 1-1/3 +1/5 -1/7 + 1/9 - … (-1) i+1 (1/(2i+1))... с точностью eps=0.0001, вы узнаете, чему равно число = 4*S. Напишите программу вычисления числа и сравните со значением, вычисленным с помощью стандартной функции Pi. Замечание. Здесь удобно использовать такую формулу для нечетного числа: i:=i+2 (i=1, 2, 3...).
28 Использованные источники 1.Семакин И.Г., Шестаков А.П. Лекции по программированию: Учебное пособие. Изд. 2-е. доп.- Пермь: Изд-во Перм. Ун-та – 279 с. 2.Коснёвски Ч. Занимательная математика и персональный компьютер. – Пер. с англ. – М.: Мир, – 192 с., ил. (Задача о рассеянном джентльмене). 3.Богомолова О.В. Логические задачи/ – 3-е изд..:М.: БИНОМ. Лаборатория знаний с.: ил. (Задача «Изумруды»).. 4.Удивительное число. 5.Герон Александрмйскй (Geron Aleksandriysiy) 6.Безрученко Л.И. О технологии интерактивных тестов и плакатов в среде MS PowerPoint 2007/
29 Инструкция к демонстрации презентации Запуск анимационных эффектов осуществляется с помощью триггеров: A Цель урока ! ! Общее в этих циклах
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.