Циклы по условию на языке Pascal Раздел «Программирование» (10 – 11 кл.) Безрученко Людмила Ивановна, учитель информатики и ИКТ ГОУ Центр образования 671.

Презентация:



Advertisements
Похожие презентации
Организация повторений в Паскале. Найди ошибки: Program new Uses crt; Var a, b, c integer Begin clrscr Readln(a,b); C:=a*a+b*b Wreteln(c); End.
Advertisements

Организация программ циклической структуры. Виды циклов: Цикл с предусловием (while) Цикл с постусловием (repeat) Цикл с параметром (for)
ЦИКЛИЧЕСКИЙ АЛГОРИТМ Цели: -Познакомиться с понятием циклического алгоритма. -Освоить языковые средства для реализации циклических алгоритмов.
Алгоритмическая структура цикл Алгоритм циклической структуры - это алгоритм, в котором происходит многократное повторение одного и того же участка программы.
Циклы в языке программирования Pascal
Презентация на тему: «Программирование циклических структур». Составила: учитель информатики Чура Н.А. Составила: учитель информатики Чура Н.А.
Циклы на языке Pascal повторение. Циклы позволяют многократно выполнять одну или группу команд, причем в тексте программы нет необходимости записывать.
Программирование на Pascal.
Тема: Цикл с параметром (цикл «Для») На естественном языке Для i от А до В повторять Тело цикла i,a,b- параметры цикла тело цикла – это команды, которые.
Циклический алгоритм –это алгоритм команды которого выполняются несколько раз подряд. В языке Паскаль имеется три различных оператора цикла: 1. Оператор.
Организация циклов в языке программирования Паскаль. Подготовила Семенова Н.С., учитель информатики МБОУ «Средняя общеобразовательная школа 26 с углублённым.
Организация повторений в Паскале. i,1,n Действие 1 Действие 2 i,1,n Действие 1 Действие 2 FOR i:=1 TO N DO BEGIN действие 1; действие 2; END; FOR i:=1.
Циклические вычислительные процессы. Процессы, в которых ряд действий повторяются многократно по одним и тем же математическим зависимостям, называются.
ОПЕРАТОРЫ ПОВТОРА (ЦИКЛА). ЦИКЛ-одна из важнейших алгоритмических структур. ЦИКЛ представляет собой последовательность операторов, которая выполняется.
Pascal Алгоритмы циклической структуры, программирование на языке Pascal Часть 2 8 «Б» и 10 «Б» классы.
АЛГОРИТМИЧЕСКАЯ СТРУКТУРА ЦИКЛ АЛГОРИТМИЧЕСКАЯ СТРУКТУРА ЦИКЛ В TURBO PASCAL Условие Оператор ДаНет Учитель информатики: Коваленко Татьяна Викторовна
1. Введение понятия цикл 2. Виды циклов в языке Pascal ABC цикл с параметром (Для) цикл с параметром (Для) цикл с предусловием (Пока) цикл с предусловием.
1 Тема 4. Циклы на языке Паскаль.
Операторы циклаОператоры циклаЦиклы позволяют многократно выполнять одну или группу команд, причем в тексте программы нет необходимости записывать эти.
1 БАЗОВЫЕ АЛГОРИТМИЧЕСКИЕ КОНСТРУКЦИИ ПОВТОРЕНИЕ НЕОПРЕДЕЛЕННЫЕ ЦИКЛЫ.
Транксрипт:

Циклы по условию на языке Pascal Раздел «Программирование» (10 – 11 кл.) Безрученко Людмила Ивановна, учитель информатики и ИКТ ГОУ Центр образования 671 Петродворцового района Санкт-Петербурга

Изучить циклы с предусловием While… do и с постусловием Repeat… until на примере решения задач с использованием рекуррентных соотношений и бесконечных рядов. Цикл – процесс многократного повторения каких-либо действий. Язык Паскаль имеет три оператора, с помощью которых можно организовать циклическую структуру:... Цикл с параметром (счетчиком) Для (For... ) Цикл с предусловием Пока (While... do) Цикл с постусловием До (Repeat... until) ! !

Поговорим о цикле 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.

при табулировании графиков функций на заданном интервале с заданным шагом; = для расчета с заданной точностью сумм бесконечных асимптотических рядов, с помощью которых выражаются тригонометрические функции, трансцендентные числа = 3,1415… и основание натурального логарифма e=2,72…; для вычисления квадратного корня из числа методом Герона. Когда For…to…do уступает место ! ! Если число повторений известно наперед, цикл For идеален! ! ! Циклы While… do и Repeat… until используются в целом классе задач, когда повторные вычисления заканчиваются по заданному наперед условию:

Формат оператора цикла с предусловием: While do begin end; Тело цикла Формат оператора цикла с постусловием: Repeat until ; 1.До цикла задается начальное значение переменных, входящих в условие. Условие - выражение булевского типа. 2.В теле цикла значение переменных, входящих в условие, должны обязательно изменять свое значение, иначе возникнет ситуация «зависания». Тело цикла Общее в этих циклах Сравнение циклов While и Repeat

Цикл предусловием While … do Решение задачи о выводе 10 целых чисел на экран с использованием цикла While… do: i: =1; {начальное значение} i:=i+1 Программа var i: integer; {счетчик} Begin Блок-схема алгоритма While i

Особенности цикла While…do Так как условие проверяется на входе в цикл, то при неверном условии цикл не выполняется ни разу, т.е. не выполняются операторы, стоящие в теле цикла. Операторы, входящие в тело цикла, обязательно заключаются в операторные скобки, если в теле цикла более одного оператора. В противном случае будет выполняться только первое действие, стоящее под заголовком цикла. В теле цикла должно обязательно выполняться действие, приводящее к изменению условия, иначе цикл станет бесконечным. Оператор, в котором изменяются переменные, входящие в условие, может стоять не обязательно в конце цикла. ! ! ! ! ! !

Цикл с постусловием 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 ! ! ! !

Особенности цикла Repeat…until Так как условие проверяется на выходе из цикла, то цикл выполняется хотя бы один раз. Все операторы, стоящие в теле цикла, выполняются ДО проверки условия, поэтому операторные скобки не ставятся. В теле цикла должно обязательно выполняться действие, приводящее к изменению условия, иначе цикл станет бесконечным. Оператор, в котором изменяются входящие в условие переменные, может стоять не обязательно в конце цикла. ! ! ! ! ! !

Решаем самостоятельно Два игрока A и B бросают кубик N раз, суммируя результаты бросков. Напишите программу, определяющую победителя после N бросков. Два игрока A и B бросают кубик и суммируют результаты бросков. Победителем объявляется игрок, набравший первым объявленную сумму очков S. Напишите программу, определяющую победителя. Два варианта одной задачи: ? ? ! ! ! !

Задача о рассеянном джентльмене Некто отправился на работу из дома (пункт А) в офис (пункт B). Расстояние между домом и офисом равно 1 км. Пройдя половину пути, джентльмен вспомнил, что не попрощался с семьей, повернул назад и прошел третью часть расстояния и, боясь опоздать на работу, снова повернул и прошел четверть расстояния. Затем снова повернул и прошел 1/5 расстояния и т.д. A B 1 км На каком расстоянии от офиса окажется джентльмен, если продолжит свои метания? Провести вычисления расстояния с точностью до 1 см. 1/2 -1/3 1/4 -1/5 1/6 и т.д.

Анализ задачи Расстояние, на котором окажется джентльмен от дома (А), можно записать так: 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.

Программа для задачи о джентльмене 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.

Рекуррентные соотношения В математике известно понятие рекуррентной последовательности чисел (от латинского «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 называется глубиной рекурсии. ! ! ! ! ! !

Примеры рекуррентных соотношений С помощью метода рекуррентных соотношений вычисляют: арифметические и геометрические последовательности; последовательность чисел Фибоначчи; бесконечные последовательности (ряды) для тригонометрических функций; бесконечные последовательности (ряды) для функций e x, sqrt(x), ln(1+x); выражения вида: N корней

Анализ задачи о вычислении Задача. Вычислить квадратный корень целого числа а по рекуррентной формуле Герона 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.

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)

Задачи с бесконечными рядами Задача. Вычислить сумму бесконечного ряда 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.

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.

Арифметическая последовательность В символьной записи арифметическую прогрессию можно представить так: 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).

Геометрическая прогрессия Геометрической последовательностью называется последовательность, в которой отношение между ее членом и членом, ему предшествующим, есть величина постоянная. Сумма геометрической прогрессии 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, ! ! ! !

У царя было семь сыновей. В сундуке лежали изумруды. Пришел первый сын и взял половину того, что было. Пришел второй сын и взял половину того, что осталось и т.д. Каждый из сыновей приходил и забирал половину того, что осталось. Наконец, пришел последний, седьмой сын и увидел почти пустой сундук с двумя изумрудами. Сколько изумрудов лежало в сундуке первоначально? While…do При решении задачи будем использовать цикл While…do. Нет (False) Да (True) i=7 q=2 i=i-1 q=q* 2 начало конец i >1 q Задача «Изумруды» ! !Блок-схема ! !Задача

Программа 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.

Задание 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

Можно ли вычислить число ? Монумент числу установлен в Сиэтле Одним из самых знаменитых чисел в математике, вычисленных приближенно, является число. Число определяется как отношение длины окружности к ее диаметру. Вот значение до 16-го знака: … Числу воздвигают монументы и посвящают стихи. Во всех алгоритмических языках есть стандартная функция для вычисления числа. В языке Паскаль это функция Pi. Одним из самых знаменитых чисел в математике, вычисленных приближенно, является число. Число определяется как отношение длины окружности к ее диаметру. Вот значение до 16-го знака: … Числу воздвигают монументы и посвящают стихи. Во всех алгоритмических языках есть стандартная функция для вычисления числа. В языке Паскаль это функция Pi. Гордый Рим трубил победу Над твердыней Сиракуз; Но трудами Архимеда Много больше я горжусь. Надо только постараться И запомнить все как есть: Три – четырнадцать – пятнадцать – Девяносто два и шесть! (С.Бобров )

Число и бесконечные ряды У числа очень интересная история. Еще в 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 обозначение знака квадратного корня из числа.

Домашнее задание Задача 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...).

Использованные источники 1.Семакин И.Г., Шестаков А.П. Лекции по программированию: Учебное пособие. Изд. 2-е. доп.- Пермь: Изд-во Перм. Ун-та – 279 с. 2.Коснёвски Ч. Занимательная математика и персональный компьютер. – Пер. с англ. – М.: Мир, – 192 с., ил. (Задача о рассеянном джентльмене). 3.Богомолова О.В. Логические задачи/ – 3-е изд..:М.: БИНОМ. Лаборатория знаний с.: ил. (Задача «Изумруды»).. 4.Удивительное число. 5.Герон Александрмйскй (Geron Aleksandriysiy) 6.Безрученко Л.И. О технологии интерактивных тестов и плакатов в среде MS PowerPoint 2007/

Инструкция к демонстрации презентации Запуск анимационных эффектов осуществляется с помощью триггеров: A Цель урока ! ! Общее в этих циклах