Содержание
-
Циклические алгоритмы
Лекция №5
-
План лекции
Оператор безусловного перехода Повторяющиеся действия Циклы с предусловием Циклы с постусловием Циклы со счетчиком Сложноциклические структуры Решение задач.
-
Оператор безусловного перехода
Оператор безусловного перехода – goto. goto ; Для его использования, необходимо описать метки в разделе описаний, на которые будет осуществляться переход. Label metka1, metka2; Меткой может быть число от 1 до 9999, либо последовательность латинских букв и цифр.
-
Оператор перехода предназначен для указания того, что выполнение программы должно продолжаться с точки программы, обозначенной меткой, значение которой стоит в операторе перехода. Метка в тексте программы располагается непосредственно перед помеченным оператором и отделяется от него двоеточием. Пример: ….. goto m1; ….. ….. m1: write (a,b); ….
-
Пример использования оператора безусловного перехода: Label Var m1, m2; a,b,c : real; Var Begin a,b,c : real; read(a,b); Begin if b=0 then read (a,b); write (‘На 0 делитьнельзя!’) if b=0 then else goto m1; begin c:=a/b; c:=a/b; write (c); write (c); goto m2; end m1 : write (‘На 0 делить нельзя !’); End. m2: End. Из пример очевидна неэффективность использования оператора безусловного перехода.
-
Циклический алгоритм
Циклический алгоритм реализует повторение некоторых действий. Иными словами циклические алгоритмы включают в себя циклы. Цикломназывается последовательность действий, выполняемых многократно, каждый раз при новых значениях параметров.
-
Повторяющиеся действия
Повторяющиеся действия можно реализовать с помощью условного оператора и оператора безусловного перехода. Так как язык Паскаль является структурным языком, использование операторов безусловного перехода считается не совсем уместным в Паскаль-программах, однако для того чтобы рассмотреть организацию циклических алгоритмов с помощью разветвляющейся структуры с безусловным переходом рассмотрим один из примеров.
-
Задача 1. Найти максимальное число из десяти положительных чисел. Решение задачи можно построить по следующему алгоритму: 1) i=0 2) p=0 3) задать очередное значение x 4) если x>p, то p=x 5) i=i+1 6) если i
-
Label m1; Var p, i, x : integer; Begin p:=0; i:=0; m1 : read(x); if x>p then p:=x; inc(i); if iP I
-
В данном примере продемонстрированы повторяющиеся действия (циклические, цикл). Телом цикла называют те операторы, которые повторяются. … m1 : read(x); if x>p then p:=x; inc(i); if i
-
Операторы цикла
На языке Паскаль различают следующие операторы цикла: Циклы с предусловием ( while ); Циклы с постусловием ( repeat … until ); Циклы со счетчиком ( for ).
-
Циклы с предусловием
While – это оператор цикла итеративного типа с предусловием, так как в нем анализ конца цикла производится до выполнения операторов тела цикла. Он используется, когда количество повторений операторов тела цикла заранее неизвестно и определяется в процессе выполнения цикла. По операторам continue и break можно перейти на анализ условия конца цикла или первый оператор после цикла соответственно. while do begin end; Таким образом, организовывать повторяющиеся (циклические) действия в программе будет более правильно без использования операторов безусловного перехода.
-
while B(x) do S; где B(x) – логическое выражение , в том случае, когда это выражение будет иметь значение Ложь, произойдет выход из цикла; S – один оператор, простой или составной; он должен включать операторы тела цикла, в том числе оператор изменения операторов логического выражения B(x) Условие при котором выполняются итерации цикла Тело цикла В(x) S Нет Да break continue
-
Задача 2. Лист бумаги делят пополам, полученную половину снова делят пополам и т.д. Определить, какое количество делений потребуется, для того чтобы получить частицу размером с атом. Начальная масса листа 1 грамм, масса атома 10-24 грамм. Var m,ma : real; k :integer; Begin k:=0; m:=1; ma:=1e-24; while m>ma do begin m:=m/2; inc (k); end; writeln (k) End. начало k m>10-24 конец + - m=1 k=0 m=m/2 k=k+1
-
При использовании цикла с предусловием надо помнить следующее: значение условия выполнения цикла должно быть определено до начала цикла; если значение условия истинно, то выполняется тело цикла, после чего повторяется проверка условия. Если условие ложно, то происходит выход из цикла; хотя бы один из операторов, входящих в тело цикла, должен влиять на значение условия выполнения цикла, иначе цикл будет повторяться бесконечное число раз.
-
Задача 2. Определить значение суммы S=1/x1+1/x2+…1/xn, где n – количество слагаемых. Var s, x : real; i, n :integer; Begin i:=0; s:=0; read (n); while i
-
Var s, x : real; i, n :integer; Begin i:=0; s:=0; read (n); while i
-
В случае использования оператора break исполнение программы завершится, т.е. произойдет выход из цикла и вывод накопленной суммы до введенного значения x=0. В случае использования оператора continueпроизойдет переход на выполнение первого оператора тела цикла, и как следствие будет пропущены операторы стоящие после continue в теле цикла. Таким образом будет пропущена операция деления на 0. Операторы breakи continueмогут использоваться так же и в других циклах : циклах с постусловием и циклах со счетчиком.
-
Циклы с постусловием
Repeat … until – это оператор цикла итеративного типа с постусловием, так как в нем анализ конца цикла производится после выполнения операторов тела цикла. Он используется, когда количество повторений операторов тела цикла заранее неизвестно и определяется в процессе выполнения цикла. Операторы тела цикла выполняются хотя бы 1 раз. repeat until
-
Условие завершения цикла Тело цикла В(x) S Да Нет break continue Начало цикла repeat S; until B(x); где B(x) – логическое выражение, при истинности которого происходит выход из цикла; S – один или несколько операторов тела цикла.
-
Задача 3. Дано x>1. Вычислить и вывести степени x. Вычисления производятся до тех пор, пока вычисляемое значение не станет более 108 Var k,x : integer; y : longint; Begin read (x); k:=0; y:=1; repeat y:=y*x; inc (k); write (x,’ встепени ’,k,’ есть ‘,y); until y>1e8; End. начало x,k,y y>108 конец - + x y=y*x k=0 ; y=1 k=k+1
-
Сравнение циклов с постусловием и предусловием
Есть небольшое отличие в организации цикла repeat по сравнению с while: для выполнения в цикле repeat нескольких операторов не следует помещать эти операторы в операторные скобки begin ... end. Зарезервированные слова repeat и until действуют как операторные скобки.
-
Конструкция repeat ... until работает аналогично циклу while. Различие заключается в том, что цикл while проверяет условие до выполнения действий, в то время как repeat проверяет условие после выполнения действий. это гарантирует хотя бы одно выполнение действий до завершения цикла. Так же истинность логического выражения в операторе repeat … until свидетельствует о завершении цикла, тогда как в операторе while – выполнение тела цикла.
-
Циклы со счетчиком
Циклы со счетчиком составляют такую конструкцию, в которой выполнение исполнительной части должно повторяться заранее определенное число раз. Циклы со счетчиком используются довольно часто, и поэтому в языке Паскаль для этих целей имеется специальная конструкция. for := to/downto do to – используется при шаге изменение управляющей переменной цикла равном 1. downto – используется при шаге изменение управляющей переменной цикла равном -1.
-
Примеры : for x:=1 to 10 do begin …. end; for y:=100 downto 10 do begin …. end; X=1;10 Тело цикла Y=100;10;-1 Тело цикла
-
Задача 4. Найти максимальное число из десяти положительных чисел. Var p, i, x : integer; Begin p:=0; for i:=1 to 10 do begin read (x); if x>p then p:=x; end; writeln(p); End. начало x P= 0 P x>P P=x конец + - i=1;10
-
Управляющая переменная цикла со счетчиком не может бытьвещественного типа. В тех случаях, когда тело цикла выполняется заданное, известное количество итераций, но шаг цикла отличен от 1 или -1, то используют циклы while, repeat … until. Пример: … x:=0; repeat x:=x+2; … until x=10; … X=2;10;2 Тело цикла
-
Ситуации «зацикливания»
Рассмотрим несколько примеров циклов : for i:=100 to 10 do 2) while true do …. …. 3) x=5; 4) y:=10; repeat while y>5 do inc (x); begin … … until x
-
Сложноциклические структуры
Циклы могут быть простые и вложенные (кратные, циклы в цикле). Для решения многих задач так же используют структуру вложенных циклов, которую и называют сложноциклической. Вложенными могут быть циклы любых типов : for, while, repeat … until. Пример : … for x:=1 to 10 do begin …. for y:=1 to 5 do begin … end; … end; …
-
i=NI;KI Операторы тела цикла 1уровня J=NJ;KJ Операторы тела цикла 2уровня K=NK;KK Операторы тела цикла 3уровня 3 2 1
-
начало i=1;N Bs=0 j=1;5 Bs=Bs+B G=Sbg/N N Sbg=0 B Sbg=Sbg+Bs Bs G конец Задача 5. Подсчитать рейтинг (суммарный балл) каждого студента по информатике при решении 5 задач. Определить средний балл группы из N студентов.
-
Сложноциклические структуры
Var i, j, n: integer; b, bs, sbg, g: real; Begin writeln (‘Введите количество учеников : ‘); read (n); sbg:=0; for i:=1 to n do begin writeln(‘ Введите баллы ‘,i ,-го ученика’); bs:=0; forj:=1 to5 do begin printf (‘ Количество баллов за решение ‘,j, ‘–й задачи: ‘); read (b); bs:=bs+b; end; writeln (‘----------------------------------------------------------------’); writeln (‘ Суммарный балл ‘, i , ‘-го ученика равен ‘ ,bs:6:2); writeln (‘----------------------------------------------------------------’); sbg:=sbg+bs; end; g:=sbg/n; writeln (‘*************************************’); writeln (‘ Средний балл группы равен ‘,g:6:2,’ балла’); writeln(‘*************************************’); End.
-
Решение задач
Задача 6. Вычислить , где xi - i-тый член суммы. Var s, i, n : integer; Begin read (n); s:=0; for i:=1 to n do begin read (x); s:=s+x; end; write (s); End. x S=0 s=s+x i=1;N N
-
Задача 7. Вычислитьзнакопеременную сумму Var i, p : integer; s: real; Begin s:=0; p:=-1; for i:=1 to 20 do begin p:=p*(-1); s:=s+p/i; end; write (s); End. p=p*(-1) S=0 P=-1 s=s+p/i i=1;20
-
Задача 8. Вычислить Var p, i, n : integer; Begin read (n); p:=1; for i:=1 to n do begin read (x); p:=p*x; end; write (p); End. x P=1 P=P*x i=1;N N
-
Задача 9. Вычислить Var i, j : integer; p: real; Begin p:=1; j:=23; for i:=1 to 12 do begin p:=p* i / j; j:=j-2; end; write (p); End. p=p*i/j J=23 j=j-2 i=1;12 P=1
-
Задача 10. Напишите программу табулирования функции для получения таблицы функции y=x*sin(x) при изменении х на отрезке от - πдо πс шагом π/5 . Var x,y: real; Begin x:=-3.14; repeat y:=x*sin(x); writeln (x:6:2, ‘ | ‘ , y:6:2); x:=x+pi/5; until x>3.14; End. y=x*sin x x,y x=-π;π;π/5
-
Задача 11. Вычислить приближенно площадь фигуры, ограниченной функцией y=x2 и прямой y=25, разбивая отрезок изменения х на 10 частей и суммируя площади прямоугольников с основаниями равными 1/10 отрезка изменения х, и высотой, определяемой значением функции в середине основания. y x 0 y=x2 y=25 y= 25 x=±5 y=x2 Т.к. высота определяется в середине основания прямо- угольника, тогда x должен изменяться от -4.5 до 4.5 вследствие того, что h=1 h=|-5 – 5|/10=1 Высота прямоугольника L=25-x2 Площадь прямоугольника P=h*L=(25-x2)*1
-
Задача 11. Вычислить приближенно площадь фигуры, ограниченной функцией y=x2 и прямой y=25, разбивая отрезок изменения х на 10 частей и суммируя площади прямоугольников с основаниями равными 1/10 отрезка изменения х, и высотой, определяемой значением функции в середине основания. Var s, x, p : real; Begin s:=0; x:=-4.5; while x
-
Задача 12. Одноклеточная амеба каждые 3 часа делится на 2 клетки. Определить сколько клеток будет через 3,6,9,12, ... , 24 часа. Var a,t : integer; Begin t:=0; a:=1; while t
-
Задача 13. Начав тренировки, спортсмен в первый день пробежал 5 км. Каждый следующий день он увеличивал дневную норму на 10% от нормы предыдущего дня. Через сколько дней он будет пробегать в день более 20 км. ? Var d : word; s : real; Begin d:=1; s:=5; repeat inc (d); s:=s*1.1; until s>20; writeln (d) ; End. D=D+1 S=5 S=S*1.1 S>20 D=1 D - +
-
Задача 14. Определить m – количество трехзначных натуральных чисел, сумма цифр которых равна n(1
-
Задача 15. Вычислить Var i, j, n : integer; p, s : real; Begin read (n); p:=1; for i:=1 to n do begin s:=0; for j:= 1 to 2*n do s:=s+i/(2*i*i+1); p:=p*s; end; writeln (p) ; End. i=1;N S=0 j=1;2*N s=s+i/(2i2+1) N p=1 p=p*s P
-
Нет комментариев для данной презентации
Помогите другим пользователям — будьте первым, кто поделится своим мнением об этой презентации.