61896

ОПЕРАТОРИ ЦИКЛУ

Конспект урока

Педагогика и дидактика

Призначення операторів циклу. Кожний з трьох засобів організації циклу має свої особливості для кожного засобу є своє коло задач які найбільш природно вирішуються саме з його допомогою.

Украинкский

2014-06-02

93.5 KB

0 чел.

                          Т Е М А   6.

                        ОПЕРАТОРИ ЦИКЛУ.

  1.  Призначення операторів циклу.

    Лінійні  алгоритми і алгоритми з розгалудженням не дозволяють

в багатьох випадках эфективно використовувати    одну   з головних

складових продуктивності комп'ютера - його  швидкодію (до 10^9

операцій  в  секунду).   Для    цього   необхідні   програми, в

яких  окремі   фрагменти  виконуються  багаторазово.  Одним з

найбільш простих  засобів  організації повторного виконування серії команд є ЦИКЛИ.

Командою повторення або циклом називається така форма організації дій, при якій одна й та сама послідованість дій повторюється до тих пір, поки зберігається значення деякого логічного виразу. При змінюванні значення логнчного виразу на протилежне повторення припиняються (цикл завершується).

Розрізняють цикли з відомою кількістю повторень (цикл з параметром) і ітераційні (з перед- і постумовою).

    В мові Паскаль можлива організація циклів трьох видів:

            1. цикли з передумовою (поки - while);

            2. цикли з параметром (для - to/downto);

            3. цикли з постумовою (до - repeat/until).

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

2. Оператор циклу з передумовою (цикл - поки/while).

    Цикл    "поки" використовують в тому випадку, коли необхідно,

щоб   спочатку   перевірялася деяка умова, а потім, якщо  умова є

істинною,  виконувались  деякі дії.  В процесі   виконування

цих дій видбувається зміна  значень   змінних, які  входять в

указану умову, в  якості  операндів.  Тому  при N-кратному

виконуванні   циклу   відбувається  зміна  значення  логічного

виразу  -  умови  з  TRUE  на FALSE. В  цьому  випадку виконування

циклу закінчується  і виконується перший оператор, що стоїть після

оператора   циклу.  Якщо  при  запису  умови  або  операторів, які

виконуються в  циклі, була  зроблена  помилка, то в такій сітуації

можливе   зациклювання  -  значення  логічного  виразу  ніколи  не

стане  FALSE  і,  як  наслідок,  група  операторів  в  циклі  буде

виконуватись  "вічно".

    Цикл ─ "поки"  служить для організації N-кратного виконування

групи   операторів   ( тіла  циклу ) до тих  пір, поки залишається

істинною    умова   виконування   циклу.  Цикл  з  передумовою  має такий  формат :

                      while  <умова>  do

                             <оператор> ;

Структурна схема циклу  з  передумовою

     вхід

     вихід

    Виконується  цей цикл таким  чином.

  •  Обчислюється значення виразу-умови.  
    Якщо  воно істинно   (приймає  значення  TRUE), то

виконується   тіло   циклу.

  •  В  протилежному  випадку  виконується

оператор, який  стоїть  після  оператора  циклу "поки    (тобто тіло циклу   виконується  до тих  пір,  поки  значення  умови  не стане дорівнювати FALSE).

Зауваження:

    1. В   якості  тіла  циклу  може  бути  використаний  будь-

       який   оператор,  в   тому   числі складений.   Це  дає

        можливість  циклічно  повторювати  не одну, а декілька  

       дій.

  В цому  випадку  конструкція циклу "поки"  набуває   

  вигляду:

                   while <умова>  do

                        begin

                            <оператор_1> ;

                                 . . .

                            <оператор_n> ;

                        end {while};

     2. Якщо < умова >  в  операторі  while  має значення FALSE

        вже  при  першій перевірці, то тіло циклу не виконується

        жодного разу.

     3. Дозволяється  використання   вкладених   циклів,  тобто  

          конструкцій,  в  котрих  деякі  оператори   тіла  циклу

          самі  можуть  бути  циклами. Іньший  засіб вкладання

          циклів  НЕ ДОПУСКАЄТЬСЯ.

          Приклад:

                   while <умова_1>  do

                        while <умова_2>  do

                              begin

                                   <оператор_k>

                                       while <умова_3>  do

                                             <оператор_n>;

                                   <оператор_l>;

                              end {while};

       4. Треба   підбирати   умову   для   циклу   "поки"  таким

          чином,  щоб  в  якийсь  момент  вона   змінила значення

          з   TRUE   на   FALSE,  інакше  настане  "зациклювання"

          програми  -  тобто  виконування  тіла   циклу  до  того

          моменту,  коли   ресурси   комп'ютера  будуть вичерпані

          або до переривання   виконування програми користувачем.

       5. Вхід в тіло циклу  можливий  ТІЛЬКИ через його  

          заголовок.

Приклад  використання  оператора циклу  з  передумовою.

       Задача.

       Обчислити  суму  такого ряду :

                1 + 1/2 + 1/3 + 1/4 + ... + 1/n.

       Рішення.

        {---------------------------------------------}

        {обчислення суми ряда за допомогою циклу while}

        {---------------------------------------------}

        var

          Sum  :  real;

          i, n :  integer;

        begin

          i := n;

          Sum := 0;

          while  i >= 1  do

            begin

              Sum := Sum + 1/i;

              I := i - 1;

            end;

       

         end.

    Точність обчислення  суми   в  даному  випадку  (тобто  при

додаванні в  зворотному  порядку)вище,  ніж   при  додаванні в

прямому. Пов'язано  це з  кінцевісттю  розрядної  сітки комп'ютера.

Тому   додавання   послідовностей   завжди    треба   проводити з  того  кінця,  де елементи  мають  найменьше значення абсолютної

величини.

3. Оператор циклу з параметром.

    Цикл з  параметром  використовується звичайно в тих випадках,

коли  наперед  (до  початку  виконування  циклу)  можна  визначити

кількість  повторень   циклу.  

Цикл  з  параметром   служить   для організації   n-кратного   виконування   тіла  циклу  для  значень параметра циклу  із  деякої  упорядкованої   дискретної   множини.

    Оператор  циклу з параметром  має  дві  форми  запису :

    1.  for <параметр> := <вираз_1> to <вираз_2> do

                         <тіло_циклу>;

    2.  for <параметр> := <вираз_1> downto <вираз_2> do

                         <тіло циклу>;

    Параметр  (його  ще  називають  параметром  циклу,   керуючою

змінною,   індексом,   лічильником )  - це   змінна   діскретного

типу, тобто типу, на множині значень   котрого  визначені  поняття

"попередній   елемент"  та   "наступний   елемент".

Частіше  за все використовуються  змінні   типу  integer  (але  допустимі  char  іboolean). Не  дозволений  до  використання   параметр типу real.

    Вираз_1  (початкове  значення параметра) -   це    константа,

змінна  або  вираз  того же типу, що  і  параметр  циклу.

    Вираз_2  ( кінцеве  значення  параметру ) має  той  же  спосіб визначення, що і вираз_1.

    Тіло  циклу  - це  оператор, наступний за ключовым словом do.

Якщо  необхідно повторити  декілька операторів, то вони  беруться

в  операторні   дужки   begin   та   end,  і  тілом  циклу   стає

складений  оператор.

   Роздивимось  процес виконування операторів циклу з параметром:

   1. Цикл for/to:

                     for  i := a  to  b  do

                          < тіло циклу >;

  1.  Параметру  циклу  i  надається   початкове   значеня  a.
  2.  Воно порівнюється  із  значенням  b.  
    Якщо  в упорядкованій  множині  i<= b, то  виконується тіло  циклу.
  3.  Потім  параметру  i  присвоюється   значення,  і + 1.    
  4.  Потім відбувається  повернення до порівняння з кінцевим значенням.
  5.  Якщо при перевірці з'ясувалося,  що  поточне значення i>b, то відбувається вихід  із циклу - виконується  наступний за тілом циклу оператор.

    

2. Цикл for/downto:

                   for  i := a  downto  b  do

                         < тіло циклу >;

   Цей  цикл  виконується   таким чином.

 

  •  Параметру   циклу і присвоюється  початкове  значення а.
  •  Значення параметра порівнюється
    з  кінцевим   значенням.   
       
  •  Якщо i< b  , то  відбувається вихід із циклу. В протилежному    випадку  виконується    тіло    циклу.
  •  Змінній i присвоюється  значення  i - 1 та програма  повертається до порівняння з кінцевим значенням.

Зауваження:

   1. Цикл  з параметром  зручно  використовувати в тих випадках,

      коли  кількість повторень можна  визначити  заздалегідь.

   2. Тіло   циклу   for   може  не  виконатися жодного  разу. Це

      відбудеться,  якщо    в   упорядкованій  множині   кінцеве

      значення  параметра  циклу  передує  початковому (в випадку

      to)  або  початкове  значення   передує   кінцевому   ( в

      випадку  downto).   Так  відбувається  тому,  що  перевірка

      умови, чи  виконуїться взагалі цикл for, відбувається ПЕРЕД

      виконуванням  циклу.  Тому  на  Паскалі  цикл  з параметром

      є  випадком  циклу  з передумовою  і  має таку ж структурну

 схему.

   3. Параметр    циклу   не   повинен  змінюватись   яким-небудь

      оператором  всередині   циклу.  Параметр   може довільним

      чином   використовуватись   в   виразах  в  тілі циклу, але

      присвоювати  йому нове значення в тілі циклу небажано, бо

 це може   призвести  до  непередбачених  наслідків.

   4. Параметр  циклу, як і  будь-яка  інша  змінна, повинен бути

      описаний  в  розділі  змінних.

   5. Після    виконування     оператора   циклу  параметр  циклу

      вважається  невизначеним  і  не  повинен  використовуватись

      в наступних  операторах  без  попередньго присвоєння йому

      значення.

   6. Вхід в тіло циклу  можливий ТІЛЬКИ через його заголовок.

   7. Дозволяється  використання  вкладених  циклів.Їх реалізація

      повинна проводитися за тими ж правилами, що і для циклів  з

      передумовою.

4. Приклади  використання операторів циклу з параметром.

    

  1.  Задача.

    Обчислити  суму  такого  ряду :

                1 + 1/2 + 1/3 + 1/4 + ... + 1/n.

    Рішення за  допомогою  циклу  for/to :

        {----------------------------------------------}

        {Обчислення суми ряду за допомогою циклу for/to}

        {----------------------------------------------}

           var

             Sum  : real;

             i, n : integer;

           begin

 {Введення n}

             Sum := 0;

             for i := 1 to n do

               Sum := Sum + 1/i;

           ;

           end.

  1.  Задача.
  2.  

    Обчислити значення n!.

    Рішення за  допомогою циклу  for/donto :

        {--------------------------------------------------}

        {Обчислення факторіала за допомогою циклу for/downto}

        {--------------------------------------------------}

           var

             Factorial,

             n, i : integer;

 begin

   {Введення n}

             Factorial := 1;

             for i := n downto 2 do

               Factorial := Factorial * i;

   

    {Виведення Factorial  }   

           end.

5. Оператор циклу з постумовою (цикл - до / repeat/until).

    Цикл  -  "до"  використовуїться в тому випадку, коли доцільно

організувати  повторення  так, щоб  спочатку  виконувалась   деяка

послідовність  дій, а  потім  перевірялася  умова   зупинки  її

виконування.

    Цикл  -  "до" служить  для організації n-кратного виконування

групи операторів (тіла циклу) до тих пір, поки умова завершення

циклу не стане істинною.

    Оператор циклу з постумовою має такий формат :

                  

 repeat

                         <оператор 1> ;

                              . . .

                         <оператор N> ;

                    until <умова> ;

    Значення ключових слів : repeat - повторювати,  until - до.

    

Структурна схема оператора циклу з постумовою

    Виконується  оператор  циклу  з постумовою таким   чином.  

  •  Спочатку   виконуються   оператори  тіла  циклу.  
  •  Потім  перевіряється значення  виразу-умови.
    Якщо  воно  хибне  (тобто  його  значення
    дорівнює  FALSE), то  знов виконується тіло циклу.
    В  протилежному випадку  виконується  черговий оператор.

Зауваження:

    1. Тіло  циклу  з  постумовою мати в собі  декілька

       операторів,  які  не треба брати в операторні   дужки. В

       даному  випадку ключові слова repeat та until грають роль

       операторних   дужок,   між   якими  може  знаходитись

       довільна    кількість   операторів.

    2.  <Умова>  є умовою ВИХОДУ із циклу на відміну від

       умови  ПРОДОВЖЕННЯ циклу в циклі з  передумовою  (while).

    3. Не  треба забувати, що тіло циклу з постумовою    завжди

       буде виконуватись хоча б один раз.

    4. Ввійти в тіло циклу  можливо ТІЛЬКИ через  його заголовок.

    5. Дозволяється  виконування  вкладених  циклів. Їх  

       Реалізація повинна  відбуватися за  тими ж  правилами, що  

       і для циклів з  передумовою.

7. Приклад  використання  оператора циклу з передумовою.

       Задача.

       Обчислити  суму  такого ряду :

                1 + 1/2 + 1/3 + 1/4 + ... + 1/n.

        {----------------------------------------------------}

        {Обчислення суми ряда за допомогою циклу repeat/until}

        {----------------------------------------------------}

          

var

            Sum  : real;

            i, n : integer;

          begin

 {Введення n}

                        

            i := n;

            Sum := 0;

            repeat

              Sum := Sum + 1/i;

              i := i - 1;

             until ( i < 1 );

{Виведення Sum}

 

          end.

 

Контрольні питання і завдання

  1.  Назвіть відмінність ітераційних циклів і циклу з параметром.
  2.  Яка структура оператора циклу з параметром? Як виконується цикл з парметром?
  3.  Якого типу повинен бути параметр циклу, його початкове і кінцеве значення в циклі з параметром в мові Pascal?
  4.  Чи можуть параметр циклу, його  початкове і кінцеве значення в циклі з параметром в мові Pascal бути різних типів?  Обгрунтуйте відповідь.
  5.  Чи може один цикл бути вкладеним всередину іншого? Якщо так, то яка глибина цій вкладеності?
  6.  Якою є структура циклів з перед- і постумовою? Як виконуються ці цикли?
  7.  Яка мінімальна і максимальна кількість виконувань циклів з перед- і постумовою? З чим це пов‘язане?
  8.  Скільки разів виконається фрагмент програми?

 For i := 1 to -1 Do

                          k:=k*i;

  1.  Скільки разів виконається фрагмент програми?

 For i := -1 to 1 Do

                          k:=k*i;

  1.  Скільки разів виконається фрагмент програми?

 For i := 1 downto -1 Do k:=k*i;

  1.   Скільки разів виконається фрагмент програми?

             M := 123;   

                While M <> 0 Do

                    M := M Mod 10;

  1.  Для цикла с параметром запишите его полный эквивалент с помощью циклов с пред- и постусловием.
  2.  Для циклу з передумовою запишіть його повний еквівалент за допомогою циклу з постумовою.
  3.  Для циклу з постумовою запишіть його повний еквівалент за допомогою циклу з передумовою


 

А также другие работы, которые могут Вас заинтересовать

67549. ЭЛЕМЕНТЫ ПРОЕКТИРОВАНИЯ ЭЛЕКТРОПРИВОДА 45 KB
  Экономические требования Синтез электропривода Синтез технической системы включает в себя структурный функциональный и параметрический синтез. представление электропривода в виде совокупности элементов определение функций и параметров каждого элемента с учетом их связей и взаимодействия.
67550. Выбор типа и параметров двигателя, передаточного и усилительно-преобразовательного устройств. Выбор типа электродвигателя 56 KB
  В простейших случаях тип двигателя совпадает с видом напряжения сети. При использовании усилительно-преобразовательного устройства в случае сети постоянного тока применяется мостовая схема четыре силовых электронных ключа и широтно-импульсная модуляция для питания двигателя постоянного тока или инвертор...
67551. СОСТОЯНИЯ МИКРОСИСТЕМ. ПОСТУЛАТЫ КВАНТОВОЙ МЕХАНИКИ 136 KB
  Всякая физическая теория изучает определенный класс физических систем. Одно из основных понятий любой физической теории понятие состояния физической системы которое задается переменными состояния. а Если заданы переменные состояния в некоторый фиксированный момент времени то мы имеем максимально...
67552. СОСТОЯНИЯ МИКРОСИСТЕМ. ПОСТУЛАТЫ КВАНТОВОЙ МЕХАНИКИ (ПРОДОЛЖЕНИЕ) 593.5 KB
  Разные собственные векторы при фиксированном Al автоматически не являются взаимно ортогональными. Но их всегда можно ортогонализовать процедурой Шмидта, а кроме того, их можно и нормировать.
67553. ВОЛНОВАЯ ФУНКЦИЯ ЧАСТИЦЫ. УРАВНЕНИЕ ШРЕДИНГЕРА 317.5 KB
  Здесь множитель i выделен для удобства (чтобы было = - см. ниже), а - некоторый дифференциальный оператор, не включающий производных по времени. Он должен быть линейным, чтобы соблюсти принцип суперпозиции.
67554. А-ПРЕДСТАВЛЕНИЕ КВАНТОВОЙ МЕХАНИКИ 642 KB
  Здесь предполагается, что спектр оператора - невырожденный. Если есть вырождение, то нужен еще один индекс, связанный с необходимостью введения по крайней мере еще одного оператора, коммутирующего с . Тогда строим базис из общих собственных векторов операторов и (см. лекцию 2):
67555. СООТНОШЕНИЯ НЕОПРЕДЕЛЕННОСТЕЙ 611.5 KB
  Зависимость от времени можно ввести в квантовую механику разными способами. До сих пор мы пользовались картиной Шредингера в которой считается что всю зависимость от времени несут векторы состояния волновые функции а в операторы наблюдаемых она может входить лишь в исключительных...
67556. ЗАКОНЫ СОХРАНЕНИЯ 488.5 KB
  В картине Шредингера затруднительно сразу сказать, что такое сохраняющаяся физическая величина, так как операторы наблюдаемых обычно вообще от времени не зависят. Приходится исхитряться (см. ниже). А в картине Гейзенберга все ясно.
67557. НОРМИРОВКА В НЕПРЕРЫВНОМ СПЕКТРЕ 299 KB
  Классическому инфинитному движению отвечают состояния с обобщенными волновыми функциями которые нельзя нормировать а энергетический спектр является непрерывным. Возникает проблема нормировки волновых функций непрерывного спектра. Реально же на самом деле спектр всегда является дискретным так как...