Бројачке петље¶
У примеру с почетка лекције о алгоритамском размишљању поменули смо упутство за куповину кифли. Размисли о следећем:
претпоставимо да је растојање од твоје куће/стана до раскрснице 172 корака,
правите прославу, па треба да купиш 35 кифли.
Колико би наредби, једну по једну, требало да задаш роботу попут Карела да то уради (у продавници сваку кифлу узимаш са пулта, спушташ је у корпу, узимаш из корпе, стављаш поред касе…)? Не, наравно, нема потребе да то стварно рачунаш!
Хтели смо само да ти укажемо на то да у скоро сваком од претходних примера постоје наредбе које се понављају тачно одређен број пута. Добра ствар је што нема потребе да их све пишеш, постоји једноставнији начин.
Када наредба (или група наредби) треба да се изврши више пута, у програму се користи петља. Када се унапред тачно зна колико пута наредба треба да се понови, петља се назива бројачка петља.
Пример¶
Карел треба да сакупи осам лопти. Примени бројачку петљу у решењу!
Овог пута се на гомили налази осам лопти. Карел треба прво да направи један корак напред, а затим осам пута узме лопту.
На десну страну смо превукли блокове за два решења овог проблема. За које је потребно мање блокова? Избриши дуже решење и покрени програм!
Много је брже да поставиш један блок и изабереш колико пута треба да се понови неки корак него да сваки пут исписујеш наредбу за корак који се понавља.
Замисли колико би ти времена требало да саставиш програм без петље када би Карел требало да узме 200 лопти!
Овог пута смо у решењу употребили блок зелене боје који представља бројачку петљу.
И њега превлачиш као и претходне. Међутим, овај блок сам за себе ништа не ради. Потребно је да у њега „увучеш” блок или више блокова са корацима који треба да се понове више пута.
Са десне стране сада постоји већ више блокова са наредбама и постају непрегледне. Да би биле прегледније, од следећег
задатка ће бити подељене у групе (Наредбе роботу
и Петље
). Када кликнеш на назив групе, појавиће се блокови који се
у њој налазе!
Задатак 6¶
Задатак је исти као и Задатак 4. Овог пута у решењу користи бројачку петљу!
Помоћ: да би узео прву лоптицу, Карел треба четири пута да направи корак, па да је узме. Затим треба да се окрене у леву страну и понови исти поступак за другу лоптицу.
Једно од решења може бити следеће:
Да ли видиш још неку могућност да употребиш блок за бројачку петљу?
Задатак 7¶
На гомили се налази пет лоптица које Карел треба да убаци у рупу. Реши задатак применом бројачких петљи!
Изнад Карелове главе можеш да пратиш број лоптица које тренутно има код себе!
Помоћ: Карел треба да направи два корака, пет пута да узме лоптицу, опет да направи два корака и пет пута да остави лоптицу. Користи бројачку петљу кад год је могуће!
Задатак 8¶
Помози Карелу да стигне до поља (6, 6)! Изабери пут који ти највише одговара! (користи бројачку петљу у решењу!)
Помоћ: Добро размисли да ли постоји више решења за овај проблем? Можда на први поглед пут уз цикцак зид делује краћи, али да ли је стварно тако? Како ћеш најједноставније да објасниш Карелу пут до циља?
Задатак 9¶
Да би успешно завршио задатак, Карел треба да сакупи пет лоптица које се налазе на крају овог необичног пута. Примени петље у програму и помози му!
Помоћ: Испиши сваку наредбу коју треба да изврши и уочи које се од њих понављају. Колико пута? У овом решењу можеш да употребиш две различите петље – за кретање уз зид и за сакупљање лоптица.