§ 10. Алгарытмічная канструкцыя паўтарэнне

10.1. Алгарытмы з цыкламі

У навакольным свеце можна назіраць сітуацыі, пры якіх розныя дзеянні і працэсы паўтараюцца. Некаторыя паўтараюцца некалькі разоў і завяршаюцца. Іншыя могуць паўтарацца вельмі доўга (напрыклад, кругаварот вады ў прыродзе, рух планет у касмічнай прасторы, змена пор года і г. д.). Чалавеку таксама рэгулярна даводзіцца выконваць дзеянні, якія паўтараюцца: мыцца, апранацца, наведваць цырульню, снедаць, хадзіць на работу і інш.

Як правіла, чалавек складае праграмы, у якіх кожная каманда паасобку і ўвесь алгарытм у цэлым выконваюцца за канчатковы лік паўтарэнняў.

Алгарытмічная канструкцыя паўтарэнне (цыкл) вызначае паслядоўнасць дзеянняў, якія выконваюцца шмат разоў. Гэтую паслядоўнасць дзеянняў
называюць целам цыкла.

Iснуе некалькі магчымасцей кіраваць тым, колькі разоў будзе паўтарацца цела цыкла.

Алгарытмічная канструкцыя цыкл з параметрам (цыкл з лічыльнікам) — спосаб арганізацыі цыкла, пры якім колькасць паўтораў залежыць ад пачатковага і канчатковага значэнняў параметра цыкла.

Такім чынам, цыкл з параметрам арганізуе выкананне каманд цела цыкла загадзя вядомую колькасць разоў (прыклад 10.1).

Параметр цыкла вызначае нумарацыю дзеянняў у цыкле. Параметр цыкла можа прымаць толькі цэлыя значэнні. Часта нумарацыю пачынаюць з 1 і заканчваюць лікам N (прыклад 10.2). У гэтым выпадку цыкл выканаецца N разоў. Калі нумарацыя вызначана двума адвольнымі лікамі N1 (пачатковае значэнне) і N2 (канчатковае значэнне), то цыкл выканаецца (N2 – N1 + 1) разоў.

Алгарытмічная канструкцыя цыкла з параметрам можа адлюстроўвацца на блок-схеме наступным чынам (значэнне параметра змяняецца ад 1 да N):

У дадзенай канструкцыі ў прамавугольніку(-ах) запісваюцца каманды алгарытму (цела цыкла), што паўтараюцца і выконваюцца N разоў (Так). Пры гэтым пасля кожнага выканання каманд цела цыкла адбываецца праверка, які раз выконваецца цыкл. На блок-схеме пераход на праверку ўмовы адлюстроўваецца ў выглядзе стрэлкі, што выходзіць з цела цыкла і вяртаецца да праверкі. Як толькі каманды цела цыкла выканаюцца N разоў (Не), цыкл завяршыцца  (прыклад 10.3). Калі N  0, то каманда цела цыкла не выканаецца ні разу.

10.2. Выкарыстанне каманды цыкла з параметрам для выканаўцы Робат

Каб складаць алгарытмы з цыкламі для камп’ютарнага выканаўцы Робат, трэба ведаць, як запісваецца каманда цыкла.

Для запісу цыкла з параметрам выкарыстоўваецца каманда for. Фармат запісу каманды:

for var i:= N1 to N2 do1

begin

цела цыкла;

end;

Радок for var i:= N1 to N2 do з’яўляецца загалоўкам цыкла. Яго чытаюць так: «Для пераменнай i ад N1 да N2 рабі». Калі N2  N1, то каманды цела цыкла выконваюцца (N2 − N1 + 1) разоў, інакш цыкл не выконваецца ні разу.

Словы begin и end; з’яўляюцца аператарнымі дужкамі ў мове Pascal. Калі цела цыкла складаецца з адной каманды, аператарныя дужкі можна прапусціць.

Аператарныя дужкі — пара слоў, якія вызначаюць у мове праграміравання блок каманд, што ўспрымаецца як адно цэлае, як адна каманда.

Прыклад 10.4. Рэшым задачу с2 з убудаванага задачніка.

Робат павінен зафарбаваць усе клеткі поля (акрамя апошняй), перамяшчаючыся ўправа. Для гэтага ў цыкле трэба 10 разоў выканаць каманды:

зафарбаваць;
управа.

Дадзеныя каманды ўтвараюць цела цыкла.

Камандамі, што ўтвараюць цела цыкла, могуць быць любыя каманды з сістэмы каманд выканаўцы. Акрамя таго, у целе цыкла можа выклікацца дапаможны алгарытм. Выкарыстанне дапаможнага алгарытму дазволіць скараціць запіс цела цыкла і зробіць праграму больш зразумелай.

Прыклад 10.5. Рэшым задачу с7 з убудаванага задачніка.

На полі выканаўцы Робат ёсць сцены. Пры абходзе сцен Робат выконвае наступныя каманды:

зафарбаваць; уніз;
зафарбаваць; улева;
зафарбаваць; уверх;
зафарбаваць; улева.

Каб рашыць задачу, Робат павінен паўтарыць гэтыя каманды 5 разоў. Аформім дадзеныя каманды як дапаможны алгарытм kvadrat і выклікаем яго ў цыкле.

У дадзеным прыкладзе цела цыкла складаецца з адной каманды kvadrat, таму аператарныя дужкі можна не выкарыстоўваць.

Паняцце цыкла выкарыстоўваецца ў розных сферах чалавечай дзейнасці.
Пад цыклам разумеюць сукупнасць з’яў, працэсаў, якія складаюць кругаабарот на працягу пэўнага прамежку часу. З гэтага пункту гледжання можна гаварыць пра гадавы цыкл вярчэння Зямлі вакол Сонца ці пра вытворчы цыкл.
Цыклам з’яўляецца скончаны шэраг якіх-небудзь твораў; чаго-небудзь, што выкладаецца, выконваецца: цыкл лекцый, цыкл вершаў.

Прыклад 10.1. Гатаванне пельменяў.

    1. Закіпяціць ваду.
    2. Для i = 1..10 паўтараць:
      1. 2.1. Дастаць пельмень з упакоўкі.
      2. 2.2. Кінуць пельмень у кіпячую ваду.
    3. Варыць 7 мінут.

У  дадзеным прыкладзе параметр цыкла i змяняецца ад 1 да 10. Дзеянні «дастаць пельмень з упакоўкі» і «кінуць пельмень у кіпячую ваду» выконваюцца 10 разоў і складаюць цела цыкла.

Блок-схема дадзенага алгарытму выглядае такім чынам:

Прыклад 10.2. Вылічым an (напрыклад, 35 = 243).

Алгарытм узвядзення ліку ў ступень:

    1. Увесці значэнні a i n .
    2. Вызначыць пачатковае значэнне выніку r = 1.
    3. Для i = 1.. n паўтараць:
      1. 3.1. Памножыць вынік на a .
  1. Запісаць вынік.

Прыклад 10.3. У фальклорных творах часта сустракаецца шматгаловы Змей Гарыныч (колькасць галоў можа быць, напрыклад, 7).

Алгарытм перамогі над Змеем Гарынычам:

    1. Знайсці Змея Гарыныча.
    2. Для i = 1.. 7 паўтараць:
      1. 2.1. Адсячы галаву Змею Гарынычу.
  1. Адсвяткаваць перамогу.

Блок-схема дадзенага алгарытму:

Прыклад 10.4. Пачатковае становішча:

Праграма для выканаўцы Робат:

Вынік работы праграмы:

 

Прыклад 10.5. Пачатковае становішча для вучэбнага камп’ютарнага выканаўцы Робат:

Праграма для выканаўцы Робат складаецца наступным чынам:

 

Вынік работы праграмы:

 



1. Што разумеюць пад алгарытмічнай канструкцыяй паўтарэнне?



2. Выберыце з прапанаваных варыянтаў правільны запіс цыкла з параметрам.



3. Што такое аператарныя дужкі?



  1. Апішыце слоўна або адлюструйце з дапамогай блок-схемы наступныя алгарытмы:

    1. Рысаванне ў графічным рэдактары відарыса з 4 квадратаў з дыяганалямі і зафарбаванымі абласцямі (гл. рыс.).

    2. Кожную мінуту бактэрыя дзеліцца на дзве. Першапачаткова ёсць адна бактэрыя. За бактэрыямі назіралі 10 мінут. Вызначыце колькасць бактэрый у канцы назірання. Запоўніце табліцу.

      Время, мин

      0

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      Кол-во бактерий

      1

      2

    3. Свідраванне 10 адтулін.

    4. Сервіроўка стала да абеду на 6 персон.

      Сямікласнік Андрэй пасля школы запрасіў свайго сябра Юру дапамагчы яму ў рашэнні 5 задач па матэматыцы. У гасцях Юра параіў Андрэю правесці астатак дня, выкарыстаўшы алгарытм, запісаны ў выглядзе блок-схемы (гл. рыс. справа). Растлумачце, чаму за выкананне гэтага задання Андрэй атрымаў двойку па матэматыцы.

  2. Складзіце праграму для рашэння задачы с3 з убудаванага задачніка. Параўнайце алгарытм рашэння гэтай задачы з прыкладам 10.4. Што ў іх агульнае? Чым яны адрозніваюцца?

  1. Складзіце праграму для рашэння задачы с4 з убудаванага задачніка. Параўнайце яе рашэнне з папярэднім практыкаваннем і з прыкладам 10.4.

  2. Складзіце праграму для рашэння задачы с8 з убудаванага задачніка. Выкарыстоўвайце дапаможны алгарытм.

  1. Складзіце праграму для рашэння задачы с5 з убудаванага задачніка.

  2. Для рашэння задачы с14 Пеця склаў алгарытм і запісаў праграму. Пецеў малодшы брат Алег выдаліў некалькі каманд. Вызначыце, колькі каманд выдаліў Алег. Аднавіце праграму, якую напісаў Пеця.

     

     

     

  3. Максім спрабуе ўявіць, як можна было б выкарыстоўваць робатаў у розных сітуацыях, апісаных у літаратурных творах. Напрыклад, для Тома Соера, якога цёця Полі адправіла фарбаваць плот, Максім прыдумаў робата-маляра і вырашыў, што такому робату дастаткова адной каманды: пафарбуй дошку. Алгарытм афарбоўкі плота з 20 дошак Максім запісаў так:

    1. Устанавіць робата ля левага краю плота.
    2. Для = 1..20 паўтараць:
      1. 2.1. Пафарбуй дошку.

    Ці зможа робат-маляр пафарбаваць плот? У чым памылка Максіма? Выпраўце алгарытм, дадаўшы неабходную(-ыя) каманду(-ы).