СРАВНЕНИЕ РАБОТЫ ОПЕРАТОРОВ ЦИКЛА. — КиберПедия 

Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...

Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...

СРАВНЕНИЕ РАБОТЫ ОПЕРАТОРОВ ЦИКЛА.



Цикл с предусловием while ( пока условие истинно) Цикл с постусловием repeat                   ( до истинности условия)

1)До начала цикла должны быть сделаны начальные установки переменных, управляющих условием цикла, для корректности входа в цикл.

2) В теле цикла должны присутствовать операторы,изменяющие переменные условия так,чтобы цикл через некоторое число итераций завершился.

3)  Цикл работает пока условие истинно 3) Цикл работает пока условие ложно
4) Цикл завершается, когда условие становится ложным. 4) Цикл завершается, когда условие становится истинным.
5) Цикл может не выполнится н и разу, если исходное значение условия при входе равно false. 5) Цикл обязательно  выполняется как минимум раз.
6) Если в теле цикла более 1 оператора, то необходим составной оператор. 6)Независимо от количества операторов в теле цикла использование составного оператора не нужно.

Цикл со счетчиком  for

1) Начальная установка переменной счетчика до заголовка не нужна.

2) Изменение в теле цикла значений переменных из заголовка не допускается

3) Кол-во итераций неизменно и определяется значениями нижней и верхней границ и шага цикла.

4) Нормальный ход работы может быть нарушен оператором goto или процедурами Break и Continue.

Цикл может не выполниться ни разу , если шаг цикла будет изменять счетчик от нижней границы в противоположном направлении верхней границы.

  Для наглядности сравнения записи циклов запишем нахождение суммы элементов линейного массива каждым циклом:

s:=0; i:=1;                               s:=0;  i:=1;                           s:=0;

 while i<=n do                    repeat                          for i:=1 to n do

 begin s:=s+a[i];                       s:=s+a[i];                       s:=s+a[i];

   inc(i);                              inc(i);

   end;                               until i>n;

    Возникают ситуации преждевременного выхода из цикла. Для таких случаев в Турбо Паскале существуют процедура  BREAK - позволяет досрочно закончить цикл, а процедура CONTINUE -позволяет начать новую итерацию цикла, даже  если предыдущая итерация не была завершена.

Разберем несколько задач.

1. Составить алгоритм и его блок-схему вычисления функции:

Y=        на промежутке [-20,20] с шагом 0.5

Идея решения:

Необходимо, изменять значение Х от -20 до 20 с шагом 0.5 и вычислять значения У, учитывая, что при х=10 наша функция не существует.

Алгоритм решения:

1. Присвоить Х начальное значение -20



2. Пока Х не более 20 выполнять такие действия :

    а) если х не равен 10

             то вычисляем у

                   вывести на экран значения у

              иначе выведем на экран « функция не существует»);

 

 

     б) увеличить значение Х

Программа решения:

Program Task1;

var x, y : real;

begin x: = -20; { начальное значение х}

while x<=20 do {пока х не превысил 20}

      begin

      if x <> 10 then begin {знаменатель не равен 0, вычисляем у}

                                 y: = 2/abs(10-x)+ abs(x-5)

                                 writeln(‘y=’,y,’при х=’, x );

                                end     

                         else writeln(‘В этой точке функция не сущ-ет’);

         x:=x+0.5; {приращение х}

         end;

end .             

2. Составить алгоритм и его блок-схему вычисления функции:

                Y=                

            на промежутке [-20,20] с шагом 0.5.

Идея решения:

Необходимо пройтись от -20 до 20 с увеличением х на 0.5 с каждым шагом, при этом выполняя проверку, к какому из предложенных промежутков данное значение х принадлежит и вычисляя значение у по соответствующей формуле.

Алгоритм :   

1. Присвоить начальное значение х:= -20;

2. пока х<=20 выполняем такие действия

               а) если х<-10

                        то у:=2-х

                         иначе если x<-5 (ведь х  уже более -10)

                                          то у:= х-х2               

                                          иначе если x<2             

                                                          то у:=х3

                                                          иначе у:= ;

                б) вывести значение у;

                в) увеличить значение х на 0.5;

Программа имеет вид:

Program Task2;

var x, y : real;

begin x: = -20;

while x<=20 do

        begin

      if x < - 10 then y: = 2-x

                       else if x<-5 then y:=x-x*x

                                            else if x<2 then y:=x*x*x



                                                              else y:=sqrt(x);

       writeln(‘y =’,y,’ при х =’, x );     

        x:=x+0.5;

        end;

End.

Вопросы для самопроверки.

1. Как записывается и исполняется цикл-ДО?

2. Как записывается и исполняется цикл-ПОКА?

3. Какие основные элементы построения циклов, без которых невозможна работа?

4. Как записывается и исполняется цикл-ДЛЯ?

5. Может ли в цикле-ДЛЯ начальное значение быть больше конечного?

6. Может ли в цикле- ДЛЯ использовать шаг?

7. В каких циклах это возможно?

8. Когда используются в циклах операторные скобки?

9. Что такое тело цикла?

10. Можно ли и как заменить команду повторения с параметром другим видом повторения? А наоборот?

11. Является ли оператором цикла:

а) while x<0 do x:=x+0.5;

б) while x<0 do x:=x-100;

в) while 0<y<1 do y:=sqr(y);

г) while a>0 do y:=2*y;

д) while a>b do a:=a-1;b:=b+1;

12. Может ли завершиться выполнение оператора цикла, начало которого выглядит так:

          while abs(x)+1>0.793 do...?

13. Для каких начальных значений переменной х завершится выполнение оператора цикла:

а) while x<1.3 do x:=sqr(x);

б) while abs(x)>=1 do x:=x-1;

в) while 2*x>x do x:=x-1;

г) while sqr(x)>= do x:=sin(x)+1.315?

14. Вычисление F=10! описать каждым из трех вариантов оператора цикла.

15. Определить значение переменной s после выполнения следующих

операторов:

а) s:=0; i:=0;

   while i<5 do i:=i+1; s:=s+1/i;

б) s:=0; i:=1;

   while i>1 do begin s:s+1/i; i:=i-1 end;

в) s:=0; i:=1;

   repeat s:=s+1/i; i:=i-1 until i<=1;

г) s:=0;i:=1;

   repeat s:=s+1/i;i:=i-1 until i>10;

д) s:=1; n:=1;

   for i:=2 to n do s:=s+1/i;

e) s:=1; i:=1;

   for i:=10 downto 1 do s:=s+1/i;i:=i-2;

16.Выписать фрагмент программы для решения указанной задачи и обосновать, почему был выбран тот или рой вариант оператора цикла:

а) вычислить с-наибольший общий делитель натуральных чисел а и в;

б) найти u-первый отрицательный член последовательности cos(ctg(n)),n=1,2,3,...;

в) вычислить y=cos(1+cos(2+...+cos(39+cos(40)...));

г) вычислить p=(1-1/22)(1-1/32)...(1-1/n2),n>2;

д) вычислить f=1*2*3*...n;

e) вычислить y=sinx +sinx2 +sinx3 +...+sinx30 ;

Задания.

Вариант 1.

1. Вычислить значения функции

            Y =    

на промежутке [-2П,2П] с шагом 0,2.

2. Даны натуральные числа n, a1, a2, a3, ... an. Определить количество членов ak последовательности a1, a2, a3, ... , an, являющихся нечетными числами.

Вариант 2.

1. Вычислить значения функции

              y=   

               на промежутке [-10,10] с шагом 0,5.

2. Даны натуральные числа n, a1, a2, a3, ... ,an. Определить количество членов последовательности a1, a2, a3, ..., an кратных 3 и не кратных 5.

Вариант 3.

1. Вычислить значения функции

           y=    

         на промежутке [-5,5] с шагом 0,2.

2. Даны натуральные числа n, a1, a2, a3, ..., an. Определить количество членов последовательности a1, a2, a3, ..., an, являющихся квадратами четных чисел.

Вариант 4.

1. Вычислить значения функции

                 y=      

              на промежутке [0,4] с шагом 0,5.

2. Даны натуральные числа n, a1, a2, a3, ..., an. Определить количество членов последовательности a1, a2, a3, ..., an, которые удовлетворяют условию: каждый элемент, начиная со второго является средним арифметическим двух соседних (предыдущего и последующего).

Вариант 5.

1. Вычислить значения функции

                   y=      

             на промежутке [-5,10] с шагом 0,5.

2. Даны целые числа n, a1, a2, a3, ..., a50. Получить сумму тех чисел данной последовательности, которые кратны 5.

Вариант 6.

1. Вычислить значения функции

                 y=    

            на промежутке [-8,8] с шагом 0,3.

2. Даны целые числа a1, a2, a3, ...a50. Получить сумму тех чисел данной последовательности, которые нечетные и отрицательные.

Вариант 7.

1. Вычислить значения функции

y=      

        на промежутке [-10,10] с шагом 0,6.

2. Даны натуральное число N, целые числа a2, a2, a3, ..., an. Найти количество и сумму тех членов последовательности, которые делятся на 5 и не делятся на 7.

Вариант 8.

1. Cоставить алгоритм и блок-схему вычисления функции:

y=  

          на промежутке [-10,10] c шагом 1.

2. Даны натуральные числа n, p, целые числа a1, a2, a3, ..., an. Получить произведение членов последовательности кратных p.

Вариант 9.

1. Вычислить

      на промежутке [-П,П] с шагом П/10.

 2. Даны натуральное число N и действительные числа a1, a2, a3, ..., an. Получить удвоенную сумму всех положительных членов последовательности.

Вариант 10.

1. Вычислить

           на промежутке [-5,5] с шагом 0,5.

2. Даны натуральное число N, действительные числа a1, a2, a3, ..., an. В этой последовательности все числа меньшие 2 заменитьКроме того, получить сумму членов, принадлежащих [3,7].

Вариант 11.

1. Вычислить значения функции

                       

        на промежутке [-15,15] с шагом 0,5.

2. Даны натуральное число N, действительные числа a1, a2, a3, ..., an. Получить наибольшее из этих действительных чисел.

Вариант 12.

1.Вычислить    

   

на промежутке [1,1000] с шагом 1.

Вариант 13.

Напишите в от­ве­те число, ко­то­рое будет на­пе­ча­та­но в ре­зуль­та­те вы­пол­не­ния сле­ду­ю­ще­го ал­го­рит­ма (для Ва­ше­го удоб­ства ал­го­ритм пред­став­лен на четырёх язы­ках программирования).

Паскаль
var a,b,t,M,R :integer; Function F(x:integer):integer; begin F := 10*x*x-120*abs(x)+320 end; begin a := -12; b := 12; M := a; R := F(a); for t := a to b do begin if (F(t) <= R) then begin M := t; R := F(t) end end; write(M+9) end.

 

Вариант 14.

Определите, какое число будет на­пе­ча­та­но в ре­зуль­та­те выполнения сле­ду­ю­ще­го алгоритма (для Ва­ше­го удобства ал­го­ритм представлен на четырёх языках):

 

var a,b,t,M,R :integer; Function F(x:integer):integer; begin F : = 19 * (11 - x) * (11 - x) + 27; end; begin a : = -20; b : = 20; M : = a; R : = F(a); for t : = a to b do begin if (F(t) < R) then begin M : = t; R : = F(t) end end; write(R); end.

Вариант 15.

Напишите в от­ве­те число, ко­то­рое будет на­пе­ча­та­но в ре­зуль­та­те вы­пол­не­ния сле­ду­ю­ще­го ал­го­рит­ма (для Ва­ше­го удоб­ства ал­го­ритм пред­став­лен на четырёх языках).

 

var a,b,t,M,R :integer; Function F(x:integer):integer; begin F := (x*x-25)*(x*x-25)+25 end; begin a := -11; b := 11; M := a; R := F(a); for t := a to b do begin if (F(t) <= R) then begin M := t; R := F(t) end end; write(M+25) end.

Вариант 16.

Определите, какое число будет напечатано в результате выполнения следующего алгоритма:

var a,b,t,M,R:integer;

Function F(x:integer):integer;

begin

F:= x*x + 6*x + 10;

end;

Begin

a:=-10; b:=10;

M:=a; R:=F(a);

for t:=a to b do begin

if (F(t)> R)then begin

M:=t;

R:=F(t);

end;

end;

write(M);

End.

ОПЕРАТОРЫ ПОВТОРЕНИЯ

 7.1. Цель работы:

Закрепление теоретического материала и приобретение практических навыков построения и применения операторов повторения, знать различия в работе различных видов циклов, применение и запись операторов повторения при решении  задач и проверка их выполнения на ЭВМ. Формировать творческий подход к решениям задач, развивать дивергентное мышление - различное виденье решения задач.

Общие положения.

Разберем несколько задач и их возможные варианты решения.






Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

Поперечные профили набережных и береговой полосы: На городских территориях берегоукрепление проектируют с учетом технических и экономических требований, но особое значение придают эстетическим...

Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...





© cyberpedia.su 2017-2020 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав

0.014 с.