Лекция 3 Операторы Цикла 1 Российский государственный университет нефти и газа имени И.М. Губкина Кафедра «Информатики»
2 Циклы Цикл - алгоритмическая структура для многократного выполнения одной и той же последовательности действий. Любой цикл характеризуется условием его прерывания.
3 ОПЕРАТОРЫ ЦИКЛА. ( операторы повторений ) с заданным числом повторений For итерационные циклы Repeat.. Until, While.. do
4 Российский государственный университет нефти и газа имени И.М. Губкина Кафедра «Информатики» Итерационные циклы
5 Вычислить и напечатать значение функции для 2 <= X <= 3, с шагом h = 0.1
6 h=0,1 x=2 y=Ln(x) x,y x=x+h x > 3 конец начало истина ложь Алгоритм решения с постусловием
7 Оператор цикла REPEAT (с постусловием) Оператор цикла Repeat организует выполнение цикла, состоящего из любого числа операторов, с неизвестным заранее числом повторений. Формат записи : REPEAT UNTIL ; Repeat, Until – зарезервированные слова (повторять до тех пор, пока не будет выполнено условие ); - произвольная последовательность операторов; - выражение логического типа.
8 Оператор цикла REPEAT Repeat y:=ln(x); str:=str+format('%6.1f',[x])+ format('%8.3f',[y])+#13; x:=x+h; until x>b; Тело цикла выполняется хотя бы один раз если условие FALSE -ложь, то операторы тела цикла повторяются если условие True – истина, то цикл завершается
9 h=0,1 x=2 y=Ln(x) x,y x=x+h конец начало истина ложь Алгоритм решения с предусловием x <= 3
10 Оператор цикла WHILE ( с предусловием) Формат записи : WHILE DO ; While, Do - зарезервированные слова ( пока выполняется условие, делать); - выражение логического типа; - оператор (может быть составным) ;
11 Оператор цикла WHILE While x<=b do begin y:=ln(x); str:=str+format('%6.1f',[x])+ format('%8.3f',[y])+#13; x:=x+h; end; тело цикла может не выполняться ни разу если условие True – истина, то операторы тела цикла повторяются если условие FALSE – ложь, то цикл не выполняется
12 Вычислить значения функции y=ln(x) на интервале 2 <= x <= 3 с шагом h=0.1; а). с оператором Repeat : begin x:=2; Repeat y:=ln(x); {Вывод x и y } x:=x+h; Until x>3; end; б). с оператором While begin x:=2; While x<=3 do begin y:=ln(x); {Вывод x и y } x:=x+h; end end; В теле итерационного цикла должен присутствовать оператор, влияющий на условие выхода из цикла!
13 Российский государственный университет нефти и газа имени И.М. Губкина Кафедра «Информатики» Цикл с параметром
14 задача Вычислить сумму первых N натуральных чисел: S=1+2+3+…+N
15 алгоритм S=1 S=1+2 = S+2 S=1+2+3 = S S=1+2+3+…+N = S+ N S=0 = S+1
16 алгоритм S=0 S= S+1 S= S+2 S= S+3... S= S+N Введем параметр i i= 1 i= 2 i= 3... i= N S=0 S= S+i... S= S+i
17 Оператор S:=0; For i:=1 to n do S:=S+i;
18 Цикл For (цикл с параметром). используется, если количество итераций (повторений) цикла можно определить до начала его выполнения. FOR := TO DO ; FOR := DOWNTO DO ; параметр цикла - переменная любого порядкового типа; начальное значение –выражение, определяющее начальное значение параметра цикла; конечное значение -выражение, определяющее конечное значение параметра цикла; оператор – простой или составной оператор (тело цикла);
19 шаг для параметра цикла равен +1: for i:=1 to 5 do s:=s+i; шаг для параметра цикла равен -1: for i:=5 downto 1 do s:=s+i; Параметр цикла, нач. и кон. значения должны быть одного типа! В теле цикла нельзя изменять значение параметра цикла, а также его нач. и кон. значения!
20 Вычислить и напечатать значение функции для 2 <= X <= 3, с шагом h = 0.1
21 Алгоритм решения с заданным числом повторений h=0,1 x=2 y=Ln(x) i,x,y x=x+h конец начало i=1,N,1
22 Фрагмент программы n:=round((b-a)/h)+1; //число узлов x:=a; str:=' x y=Ln(x) '+#13+#13; for i:=1 to n do begin y:=ln(x); str:=str+format('%3d',[i])+ format('%6.1f',[x])+ format('%8.3f',[y])+#13; x:=x+h; end;
23 Var i,s:integer; begin S:=0; For i:=2 to 5 do S:=S+sqr(i+1); {вывод S} end; начало S=0 i=2,5,1 S=S+(i+1) 2 S конец s=86
24 var i,s:integer; begin s:=0; for i:=2 to 5 do begin s:=s+sqr(i+1); {Вывод I и s } end; i=2 s= 9 s= = 9 i=3 s=25 s= = 25 i=4 s=50 s= = 50 i=5 s=86 s= = 86
25 p = 1 j = 1, 4 начало останов p=p * (j+1) 2 j, p var j,p:integer; begin p:=1; for j:=1 to 4 do begin p:=p*sqr(j+1); {вывод j и p} end; j=1 p= 4 p= 1 * (1+1) 2 = 4 j=2 p=36 p= 4 * (2+1) 2 = 36 j=3 p=576 p= 36 * (3+1) 2 = 576 j=4 p=14400 p= 576 * (4+1) 2 = 14400
26 Несколько структур цикла в программе Расположены последовательно
27 Несколько структур цикла в программе вложенные внутренний внешний
28 Несколько структур цикла в программе Запрещенное расположение
29 S = 0 i = 1, 5, 1 начало S=S+sqr(i+j) вывод S j = 1, 3, 1 останов
30 var i,j,s:integer; begin s:=0; for i:=1 to 5 do {внешний цикл} begin {вывод i} for j:=1 to 3 do { внутренний цикл } begin s:=s+sqr(i+j); {вывод j и s} end; i=1 j=1 s= 4 j=2 s=13 j=3 s=29 i=2 j=1 s=38 j=2 s=54 j=3 s=79 i=3 j=1 s=95 j=2 s=120 j=3 s=156 i=4 j=1 s=181 j=2 s=217 j=3 s=266 i=5 j=1 s=302 j=2 s=351 j=3 s=415
31 for i:=1 to 5 do for j:=1 to 3 do s:=s+sqr(i+j); { вывод s} s=415
32 Компонент Chart ( Палитра Additional ) Поместить на форму компонент Chart1 Перейти в редактор диаграмм Chart1. (двойным щелчком на компоненте Chart )
33 редактор диаграмм Chart1
Построение диаграммы procedure TForm1.N3Click(Sender: TObject); begin x:=a; repeat y:=ln(x); series1.AddXY(x,y); x:=x+h; until x>b+1e-6; end; 34
35 Российский государственный университет нефти и газа имени И.М. Губкина Кафедра «Информатики» Лекция 3 часть 2 Пользовательские функции
36 Примеры стандартных функций : Функция Описание Arctan() Вычисляет арктангенс числа. Date() Возвращает текущую дату. FloatToStr() Преобразовывает величину с плавающей точкой в строку. StrToInt() Преобразует строку в целое число
37 Функции пользователя Подпрограмма, созданная пользователем, должна быть описана в разделе описаний использующей её программы (или программной единицы). Главным атрибутом подпрограммы является ее заголовок.
38 Структура функции. Function Имя_функции(список параметров):тип; Разделы описания типов, констант, переменных, процедур, функций, меток begin Раздел операторов Имя_функции:= ; Или result := ; end;
39 функция вычисляет площадь треугольника по формуле Герона function S_tr(x,y,z:real):real; var p: real; begin p:=(x+y+z)/2; S_tr:=sqrt(p*(p-x)*(p-y)*(p-z)); end;
40 Блок-схема подпрограммы-функции поиска максимального из двух чисел. f_max(p1,p2) возврат p1>p2 f_max=p1;f_max=p2; truefalse
41 функция поиска максимального из двух чисел. function f_max(p1,p2:real):real; begin if p1>p2 then f_max:=p1 else f_max:=p2; end;
42 Список формальных параметров. function S_tr(x,y,z:real):real; function f_max(p1,p2:real):real; Формальные параметры описываются в заголовке подпрограммы сразу после ее имени.
43 Фактические параметры. Подставляются при вызове функции Например : S1 := S_tr(3,4,5) ; Фактический параметр может быть константой или выражением. S1:= S_tr(3*a,4-b,5);