Конспект ученика "Операторы повторения. Разбор задач"

Про матеріал

Конспект "Операторы повторения" содержит всю необходимую теоретическую информацию по теме и разбор задач. Этот материал поможет учителю при объяснении темы, ученику при написании конспекта, а также можно распечатать как памятку.

Перегляд файлу

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

1.              Понятие оператора

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

2.              Для работа необходимо

Каким бы ни был оператор повторения для его работы необходимо:

n задать начальное значение, т.е. с какого значения начнет свою работу   цикл:

n задать конечное значение или условие выполнения цикла:

n приращение значения или шаг с каким будет работать цикл.

3.              ОПЕРАТОР   ЦИКЛА   С   ПРЕДУСЛОВИЕМ( WHILE).

         Оператор WHILE вместе с оператором case являются  самыми универсальными управляющими конструкциями. С помощью операторов варианта можно записать условие разветвления произвольной сложности, а с помощью оператора с предусловием можно записать любое циклическое действие.  Этот оператор имеет вид:

WHILE   выражение DO  Оператор; или     WHILE  выражение DO                                               begin                                                оператор1; оператор2;...                                             end;

4.              Работа цикла с предусловием.

           Оператор цикла с постусловием позволяет многократно выполнять одни и те же действия в зависимости от некоторого условия, которое записывается между ключевыми словами while и do и должно быть выражением булевского типа.

             Опишем работу этого цикла. Сначала, задав начальное значение, при входе в цикл вычисляется условие. Если оно равно false, то вход в цикл не выполняется и управление передается оператору, следующему непосредственно за  операторами тела цикла. Если же условие истинно, то происходит вход в цикл и однократное выполнение операторов его тела. Как только достигнут конец тела цикла и сделано приращение значения, управление снова передается ни его заголовок, где снова вычисляется условие. Если значения условия все еще истинно, то тело цикла выполняется еще раз, и так далее. Как только очередное вычисление условия цикла даст значение false, работа цикла завершится.

  Задача1.Рассмотрим программу, которая вычисляет и выводит значения

x2,x0;

функции y на промежутке    [-100,100] с шагом 0.2.

x,x0 Идея решения:

1.     Возьмем начальное значение Х=-100.

2.     Пока  значения Х не больше конечного значения Х (Х<=100) выполняем

          а) если Х отрицательное                   то У присваиваем квадрат Х

                иначе У присваиваем корень квадратный из Х;                 б) выводим результат У на экран;

        в) увеличим значение Х на 0.2, т.е. выполним приращение Х;

 ( повторяем эти действия до тех пор, пока значения Х не превысит 100).   

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

Var x,y: real; begin       x:=-100; { вот начальное значение для работы цикла!}       while x<=100 do{это конечное значение или условие

выполнения цикла!}

          begin        if x<0 then y:= sqr(x) else y:= sqrt(x);    

                {выводится результат, после каждого вычисления У}

                               writeln(‘x=’,x,’ y=’.y); 

x:=x+0. 2; {а это приращение или шаг}                                 end; end.  

O Обратите внимание на то, что цикл с предусловием может ни разу не выполнить операторы тела цикла!

5. ОПЕРАТОР  ЦИКЛА  С  ПОСТУСЛОВИЕМ (REPEAT).

Оператор REPEAT...UNTIL  организует выполнение цикла, состоящего из любого числа операторов, с неизвестным заранее числом повторений. При использовании в программе циклической конструкции REPEAT...UNTIL последовательность операторов (тело цикла) обрамляется зарезервированными словами REPEAT (повторяй)... UNTIL (до). В любом случае последовательность операторов, входящих в тело цикла, выполняется один раз, после чего проверяется условие завершения цикла, записанное после слова UNTIL. Выход из цикла осуществляется при истинности некоторого логического выражения, которое является условием. Структура этого оператора:  

REPEAT                      оператор1;                      оператор2;

...

операторК                               

UNTIL   выражение;  

6. Работа цикла с постусловием.

            Заметим, что в отличие от while, оператор repeat не требует использования составного оператора, когда в его теле необходимо записать более одного оператора. Кроме того, оператор REPEAT является не столь универсальным, как оператор WHILE, поскольку его условие располагается в конце тела цикла и операторы его тела будут, в отличие от цикла WHILE, всегда выполняться как минимум один раз. Это означает, что оператор REPEAT не годится для записи циклов, в которых может возникать ситуация, когда тело цикла не должно выполняться ни разу.

            Общий принцип работы данного цикла такой же, как и предыдущего, но в отличие от цикла WHILE, повторимся, условие проверяется не перед выполнением цикла, а после него, и      управление   циклом          REPEAT      прямо             противоположно управлению циклом WHILE. То есть цикл продолжается пока условие равно FALSE и заканчивается при истинности условия. Решим задачу 1, используя цикл с постусловием:

var   x,y: real;

begin x:=-100; { вот начальное значение для работы цикла!}

repeat

                     if x<0 then y:= sqr(x) else y:= sqrt(x);                          writeln(‘x=’,x,’ y=’.y);

                      x:=x+0.2; {а это приращение или шаг}                until x>100 {это конечное значение или условие выполнения цикла!} end.  

 

7. ОПЕРАТОР  ЦИКЛА  СО  СЧЕТЧИКОМ( с параметром ) (for).

       Оператор цикла со счетчиком подходит для программирования только таких циклических фрагментов, в которых до выполнения цикла известны начальное и конечное значения счетчика повторений цикла. Операторы цикла с  параметром  (которые  начинаются  со слова for) вызывает повторяющееся выполнение оператора (который может быть  составным оператором) пока управляющей переменной  присваивается возрастающая последовательность значений.              Упрощенно общую структуру оператора данного цикла можно представить одним из следующих способов.

1)                  Если счетчик при выполнении цикла наращивает свое значение:

       FOR переменная := начальноеЗначениеСчетчика 

                 TO КонечноеЗначениеСчетчика  DO Оператор

Чтобы оператор выполнился хотя бы один раз

НачальноеЗначениеСчетчика должно быть не больше, чем КонечноеЗначениеСчетчика.

2)                  Если счетчик при выполнении цикла уменьшает свое значение:

FOR переменная := начальноеЗначениеСчетчика  DOWNTO КонечноеЗначениеСчетчика DO Оператор Чтобы    оператор             выполнился хотя    бы       один   раз НачальноеЗначениеСчетчика должно быть не меньше, чем КонечноеЗначениеСчетчика.

Заметим, что для оператора FOR, в отличие от WHILE и REPEAT, установка начального значения счетчика циклов выполняется не перед заголовком, а прямо в заголовке записью           переменная             := начальноеЗначениеСчетчика.

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

9. Вы должны помнить:

O   Управляющая переменная должна иметь перечислимый тип.

O   Начальное и конечное значения должны иметь тип, совместимый по присваиванию с перечислимым типом.

O   Когда начинает выполняться оператор  for,  начальное  и конечное значения определяются один раз, и эти значения сохраняются на протяжении всего выполнения оператора for.  O Если оператор, содержащийся в теле оператора for, изменяет значение управляющей переменной, то  это является ошибкой.

10. Работа цикла. 

Оператор, который  содержится в теле оператора for, выполняется один раз для  каждого  значения в  диапазоне между начальным и конечным значением. Управляющая переменная всегда инициализируется начальным значением. Когда работает оператор for, значение управляющей переменной увеличивается при каждом повторении на единицу. 

Если начальное значение превышает конечное значение, то содержащийся в теле оператора for оператор не выполнятся. Когда в операторе цикла используется ключевое слово downto, значение управляющей переменной уменьшается при каждом повторении на единицу. Если начальное значение в таком операторе меньше, чем конечное значение, то содержащийся в теле оператора цикла оператор не выполнятся.

После  выполнения  оператора  for значение управляющей переменной становится неопределенным, если только выполнение оператора for не было прервано с помощью оператора перехода.

Задача2. Найти произведение и сумму всех четных чисел из интервала  [-100,300].

Var    x, Summa, Proizvedenie: longint; begin summa:=0;       Proizvedenie:=1;

for x:=-100 to 300 do   begin {от -100 до 300 выполняем}                                           if      x          mod    2=0     then     begin   summa:=summa+x;

        {если число четное то находим  сумму и произведение}

Proizvedenie:= Proizvedenie *x;                                               end; end; 

  writeln(‘summa=’, summa,’ Proizvedenie=’, Proizvedenie); end.

 

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

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

Цикл с постусловием  repeat           

( до истинности условия)

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

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

3)  Цикл работает пока условие истинно

3) Цикл работает пока условие ложно

4) Цикл завершается, когда условие становится ложным.

4) Цикл завершается, когда условие становится истинным.       

5) Цикл может не выполнится ни разу, если исходное значение условия при входе равно false.

5) Цикл обязательно   выполняется как минимум раз.

6) Если в теле цикла более 1 оператора, то необходим составной оператор.

6)Независимо от количества операторов в теле цикла использование составного оператора не нужно.

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

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

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

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

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

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

       

12.  Разбор задач.

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

2

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

|10 x| Идея решения:

Необходимо, изменять значение Х от -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. Составить алгоритм и его блок-схему вычисления функции:

2 x,x10;

Y=   xx2,10 x5; на промежутке  [-20,20] с шагом 0.5.

3 x ,5 x2; x,x2.

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

  Необходимо пройтись от -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.   

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

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

     Постараемся быть очень рациональными и экономными, ведь неизвестно, сколько будет введено целых чисел аi. Для решения такой задачи иногда достаточно одной  переменной а, в которой будут храниться по очереди натуральные числа аi. В зависимости от n, будем n раз вводить а натуральные числа и проверять соответствуют ли они условию, если да, то подсчитываем их количество.  Алгоритм решения:

1)    Вводим число  n (количество натуральных чисел);

2)    kol:=0; ( обнуляем переменную подсчета)

3)    n раз повторяет такие действия

          а) вводим новое значение а;

          б) если а =5 или а=-5

                   то kol:=kol+1; ( подсчитываем)

4)    выводим результат kol на экран.

Программа:

Program Task3;

   var i, n, kol : word;             a:  integer;

begin writeln(‘ Введите количество чисел’); readln(n);

           randomize;  { включаем датчик случайных целых чисел}            kol:=0; 

           for i:=1 to n do begin   a:=random(200)-100; write(a,' ');

 {можно запрашивать и с клавиатуры процедурой readln(a),

тогда write(a,' ') лучше не использовать}

                                      if (a=5) or (a=-5) then inc(kol);                                       end;

  writeln; writeln(‘kol=’,kol); end.          

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

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

     Для решения такой задачи недостаточно одной  переменной а, в которой будут храниться по очереди натуральные числа аi, потребуется три переменных a,b,c, т.к. необходимо проверять их на соответствие условиюВведем три числа и проверим их, удовлетворяют ли они условию, а затем, сместим значения этих трех переменных так, чтобы в а хранилось значение b, b стало равным с (с становится свободным) и будем n-2 раза присваивать с натуральные числа и проверять соответствуют ли они условию, если да, то подсчитываем их количество. После этого снова переместим значения a,b,c, так чтобы  с было свободным. Алгоритм решения:

1)    Вводим число  n (количество натуральных чисел);

2)    вводим значения a,b,c;

3)    если b=(a+c) div 2          то kol:=1          иначе kol:=0;

4)    a:=b; b:=c;     

5)    n-2 раз повторяет такие действия

          а) вводим новое значение c;

          б) если b =а+c div 2

                   то kol:=kol+1; ( подсчитываем)           в) a:=b; b=c;

6)    выводим результат kol на экран.

Программа:

Program Task3;

   var i, n, kol : word;                a,b,c: integer;

begin writeln(‘ Введите количество чисел’);            readln(n);

           randomize;  { включаем датчик случайных целых чисел}            a:=random(200)-100; {придумываем три числа}

           b:=random(200)-100; c:=random(200)-100;

       if b=(a+c) div 2 then k:=1      {проверяем их }

                                   else kol:=0; 

       a:=b; b:=c; {передвигаем их, чтобы освободить с}            for i:=1 to n-2 do begin

                                      c:=random(200)-100;

 {можно запрашивать и с клавиатуры процедурой readln(c)}

                                      if  b= (a+c) div 2 then inc(kol);

                                     a:=b; b:=c;                                        end;

   writeln(‘kol=’,kol); end.          

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

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?

Середня оцінка розробки
Структурованість
4.9
Оригінальність викладу
4.9
Відповідність темі
4.9
Загальна:
4.9
Всього відгуків: 8
Оцінки та відгуки
  1. Гладкий Віталій Юрійович
    Загальна:
    5.0
    Структурованість
    5.0
    Оригінальність викладу
    5.0
    Відповідність темі
    5.0
  2. Лемешко Юрій
    Загальна:
    5.0
    Структурованість
    5.0
    Оригінальність викладу
    5.0
    Відповідність темі
    5.0
  3. Скляренко Людмила Дмитрівна
    Загальна:
    5.0
    Структурованість
    5.0
    Оригінальність викладу
    5.0
    Відповідність темі
    5.0
  4. Sharovarova Viktoria
    Загальна:
    5.0
    Структурованість
    5.0
    Оригінальність викладу
    5.0
    Відповідність темі
    5.0
  5. Березка Ірина Вікторівна
    Загальна:
    5.0
    Структурованість
    5.0
    Оригінальність викладу
    5.0
    Відповідність темі
    5.0
  6. Запорожец Ольга
    Загальна:
    5.0
    Структурованість
    5.0
    Оригінальність викладу
    5.0
    Відповідність темі
    5.0
  7. Табанець Ірина Валеріївна
    Спасибо! Марина Эдуардовна очень хороший материал.
    Загальна:
    4.0
    Структурованість
    4.0
    Оригінальність викладу
    4.0
    Відповідність темі
    4.0
  8. Іваницька Вікторія Юріївна
    Спасибо! Марина Эдуардовна очень хороший материал для подготовки к урокам, и учеников к олимпиаде.
    Загальна:
    5.0
    Структурованість
    5.0
    Оригінальність викладу
    5.0
    Відповідність темі
    5.0
Показати ще 5 відгуків
pdf
Додано
9 лютого 2018
Переглядів
1402
Оцінка розробки
4.9 (8 відгуків)
Безкоштовний сертифікат
про публікацію авторської розробки
Щоб отримати, додайте розробку

Додати розробку