Комбиновање петљи¶
Видели смо да у телу for наредбе може да се нађе више различитих наредби. Слично као са for наредбом, и у телу while
наредбе може (поред осталих наредби) да се нађе и нова петља, било while или for. Тако можемо да градимо различите комбинације уметнутих (угнежђених) петљи.
Када су две петље уметнуте једна у другу, зовемо их и двострука петља, док три угнежђене петље зовемо трострука петља. На сличан начин можемо угнездити било који број петљи једну у другу, али за великим бројем угнежђених петљи врло ретко имамо потребу.
У овој лекцији ћемо вежбати писање комбинација угнежђених while и for петљи.
Разне двоструке и вишеструке петље - задаци¶
Узимај по четири лоптице до краја¶
Испред Карела је једно или више поља, а на сваком од поља испред Карела су по четири лоптице (на почетном пољу нема лоптица). Карел треба све да их покупи.
Сада Карел, све док не дође до зида, треба да понавља корак напред и узимање 4 лоптице. Покушајте да допуните програм.
Подсетимо се, као и у ранијим примерима угнежђених петљи, наредба у телу унутрашње петље (овде ће то бити наредба uzmi()
) треба да буде додатно увучена.
(Karel_while__many_squares_four_bals_per_square)
Покупи све лоптице¶
Испред Карела је бар једно поље, а може их бити било колико. На сваком од поља испред Карела има нула или више лоптица (почтено поље је празно). Карел треба да покупи све лоптице.
Овај задатак је уопштење претходног, па програм који решава овај задатак, може да се искористи и у претходном. Разлика је у томе што сада унутрашња петља мора да буде while, док је у претходном задатку могла да буде и for.
И у овом програму наредба uzmi()
треба да буде додатно увучена. На тај начин ће се она понављати док је услов унутрашње while
наредбе испуњен, то јест док има лоптица на пољу на коме је Карел у том тренутку, а узимање свих лоптица се заједно са наредбом napred
понавља у спољашњој while
наредби док има поља испред Карела. Укупни ефекат угнежђених петљи је да ће бити узете све лоптице са сваког поља.
(Karel_while__many_squares_many_balls)
Донеси све лоптице¶
Испред Карела је прав пут непознате дужине. Карел треба да прикупи све лоптице са свих поља и донесе их на почетно поље.
Програм је коментарима разложен на ситније целине. Додајте делове који недостају.
(Karel_while__bring_all_balls)