Циклы Презентация по программированию Автор: учитель информатики МОУ Плесской СОШ Юдин А.Б год
Часть 1. Виды циклов.
I. Цикл с параметром. Выполняется заранее определенное количество раз. FOR – для TO – до DO - выполнить ДЛЯ i:=1 ДО N ВЫПОЛНЯТЬ действие; FOR i:=1 TO N DO действие; FOR i:=1 TO N DO BEGIN действие1; действие2; END; FOR i:=N DOWNTO 1 DO действие; Виды циклов. 1 если переменная i убывает если в теле цикла несколько действий если в теле цикла одно действие
i,1,n Действие 1 Действие 2 i,1,n Действие 1 Действие 2 FOR i:=1 TO N DO BEGIN действие1; действие2; END; FOR i:=1 TO N DO действие1; действие2; Блок-схема цикла с параметром. Виды циклов. 2
Program n1; Uses Crt, GraphABC; var x,y,i:Integer; begin x:=1; // устанавливаем координату Х первой линии For i:=1 to 64 do begin // перебираем от 1 до 64 Line (x,0,x,400); // рисуем очередную линию x:=x + 10; // увеличиваем координату на 10 end; end. Пример 1. Вывести на экран 64 вертикальные линии. Виды циклов. 3
II. Цикл с постусловием. Выполняется всегда хотя бы один раз. Выполняется пока условие ложно. REPEAT – повторять UNTIL – до тех пор ПОВТОРЯТЬ действие1; действие2; ДО ТЕХ ПОР (ПОКА УСЛОВИЕ ЛОЖНО); REPEAT действие1; действие2; UNTIL (ПОКА УСЛОВИЕ ЛОЖНО); условие Действие 1 Действие 2 да нет Виды циклов. 4
Пример 2. Вывести на экран 64 вертикальные линии. Program n2; Uses Crt, GraphABC; var x:Integer; begin x:=1; repeat Line (x,0,x,400); x:=x+10; until (x>640) end. Виды циклов. 5 повторять до тех пор пока условие ложно
WHILE (УСЛОВИЕ ИСТИННО) DO BEGIN действие1; действие2; END; III. Цикл с предусловием. Может не выполнится не разу. Выполняется пока условие истинно. WHILE – пока DO – выполнять ПОКА (УСЛОВИЕ ИСТИННО) ВЫПОЛНЯТЬ НАЧАЛО действие1; действие2; КОНЕЦ; нет условие Действие 1 Действие 2 да Виды циклов. 6
WHILE (УСЛОВИЕ ИСТИННО) DO BEGIN действие1; действие2; END; условие Действие 1 Действие 2 да нет WHILE (УСЛОВИЕ ИСТИННО) DO действие1; действие2; условие Действие 1 Действие 2 да нет Виды циклов. 7
Пример 3. Вывести на экран 64 вертикальные линии. Program n3; Uses Crt, GraphABC; var x:Integer; begin x:=1; while(x
Часть 2. Графические задачи на циклы.
Задача 1. Составить программу выводящую на экран следующее изображение Program n1; Uses Crt, GraphABC; var x,i:Integer; begin x:=1; For i:=1 to 64 do begin line(320,400,x,1); x:=x+10; end; end. Более короткое решение: Program n1; Uses Crt, GraphABC; var x:Integer; begin For x:=1 to 64 do line(320,400,x*10,1); end. Графические задачи на циклы. 9
Задача 2. Составить программу выводящую на экран следующее изображение Program n2; Uses Crt, GraphABC; var x,y:Integer; begin x:=1; y:=1; repeat Line (x, 0, 0, y); x:=x + 16; y:=y + 10; until (x>640); end. В теле цикла могут изменяться две переменные Графические задачи на циклы. 10
Задача 3. Составить программу выводящую на экран следующее изображение Program n3; Uses Crt,GraphABC; var i,j,x,y:Integer; Begin clrscr; y:=10; for i:=1 to 12 do begin x:=10; for j:=1 to 20 do begin circle (x,y,10); x:=x+30; end; y:=y+30; end; end. Вывод i-ой строки Изменение координаты Y строки Графические задачи на циклы 12
Часть 3. Расчетные задачи на циклы.
Построить таблицу значений функции y = 3 sin x + cos 2x на интервале [-1 ; 1] с шагом Δх = 0,1. Задача 1. Program n1; Uses Crt; var x,y,dx:real; begin ClrScr; x:= -1; dx:=0.1; repeat y:= 3*sin(x) + cos(2*x); writeln ('x= ',x:7:5,' y= ',y:7:5); x:=x+dx; until (x>1); end. Расчетные задачи на циклы 13
Построить таблицу значений функции, на интервале [-10 ; 10] с шагом Δх = 1. Задача 2. Построить таблицу значений функции на интервале [-1; 1] с шагом Δх = 0,1 если функция имеет вид: x+1, при x10); Расчетные задачи на циклы 14
Program n1; Uses Crt; var x,y,dx:real; begin ClrScr; x:= -1; dx:=0.1; repeat if (x0) then begin y:= 1/x; writeln ('x= ',x:7:5,' y= ',y:7:5); end; x:=x+dx; until (x>1); end. Небольшое отступление: Построить таблицу значений функции y = 1/х на интервале [-1; 1] с шагом 0,1 Program n1; Uses Crt; var x,y,dx:real; begin ClrScr; x:= -1; dx:=0.1; repeat if (x0) then begin y:= 1/x; writeln ('x= ',x,' y= ',y:7:5); end; x:=x+dx; until (x>1); end. Изменим формат вывода Нуля нет! А в место него число в минус шестнадцатой степени. Расчетные задачи на циклы 15
Program n1; Uses Crt; var x,y,dx:real; begin ClrScr; x:= -1; dx:=0.1; repeat if (abs(x)>1e-12) then begin y:= 1/x; writeln ('x= ',x:7:5,' y= ',y:7:5); end; x:=x+dx; until (x>1); end. Пусть все числа, по модулю меньшие 0, будут для нас нулями. Вот одно из возможных решений данной проблемы: Расчетные задачи на циклы 16
Задача 4. Составить программу вычисления среднего арифметического числовой последовательности. Где количество элементов и сами элементы вводятся с клавиатуры. Program n4; Uses Crt; var i,n:integer; a,s,sr:real; Begin ClrScr; write('N=');readln(n); s:=0; for i:=1 to n do begin write( Введи [, i, ] = );Readln(a); s:=s+a; end; sr:=s/n; writeln(Среднее арифметическое = ',sr:10:5) end. Математическая запись задачи Результат выполнения программы Расчетные задачи на циклы 17
Задача 5. Дано целое число N (N>0). Используя один цикл найти сумму 1+ 1/2 + 1/3 +…+1/N Program n1; Uses crt; var s:real; i,n:Integer; begin Clrscr; Write(Введи n=');Readln(n); s:=0; For i:=1 to N do s:=s+1/i; writeln('s=',s:10:5); End. Результат очень легко проверить в ручную Расчетные задачи на циклы 18
Задача 6. Написать программу выводящую на экран все двузначные числа сумма цифр которых равна 10. program n6; Uses Crt; var e,d:integer; begin ClrScr; for d:=1 to 9 do for e:=0 to 9 do if d+e=10 then writeln(d*10+e); end. Расчетные задачи на циклы 19
Блок-схема к задаче 5 начало D,1,9 E,0,9 d+e=10 Вывод d*10+e конец Тело цикла Внутренний цикл Внешний цикл да нет Расчетные задачи на циклы 20
Задача 7. ( Вычисление суммы бесконечного ряда с определенной точностью). Вычислите значение суммы ряда с точностью Е=0,02 Сумма вычисляется до тех пор, пока очередное слагаемое не станет меньше точности Е Program n7; Uses crt; var s,e:real; i:integer; begin clrscr; s:=0; i:=1; e:=0.02; Repeat s:=s+1/i; Writeln('i=',i,' слагаемое',1/i); i:=i+1; until (e>1/i); writeln('S=',s:10:5); end. Расчетные задачи на циклы 21
Задача 8. Вычислить площадь фигуры ограниченной линиями: X=1, X=4, Y=0,. Program n8; Uses Crt; Var x,h,s:Real; Begin ClrScr; h:=(4-1)/1000; x:=1; Repeat s:=s+h*1/x; x:=x+h; Until x>4; writeln('Площадь = ',S:10:5); end. Ширина прямоугольника h:=(4-1)/1000; Высота прямоугольника 1/x Площадь одного прямоугольника h*1/x Расчетные задачи на циклы 22
Задача 9. Найти количество цифр в числе введенном с клавиатуры. Program n8; Uses Crt; Var n:Real; k:Integer; Begin ClrScr; Write ('N= ');readln(n); k:=0; Repeat n:=int(n/10); k:=k+1; Until n
Часть 4. Всегда ли нужны циклы.
Задача 10. Найти сумму целых четных чисел от 2 до 100. Program n10; Uses crt; var i,s:Integer; begin Clrscr; s:=0; For i:=2 to 100 do if (i mod 2 = 0) then s:=s+i; writeln('s=',s:10); End. Всегда ли нужны циклы 23
Program n10; Uses crt; var s:Real; begin Clrscr; s:=(2+100)/2*50; writeln('s=',s:10:5); End. Вспомним формулу суммы n членов арифметической прогрессии Всегда ли нужны циклы 24 Найдем количество n членов в этой последовательности: a n =a 1 +d(n-1) 100=2+2(n-1) 100=2+2n-2 100=2n n=50 Подставим значения в формулу суммы