Садржај
1. Робот Карел - Линијски програми и бројачка петља
2. Робот Карел - Условна петља и гранање
3. Робот Карел - Задаци за вежбање
4. Корњача графика - Линијски програми и петље
5. Корњача графика - Гранање, угнежђене петље, функције, торке и листе
6. Корњача графика - Задаци за вежбање
7. Израчунавања - Изрази, оператори, променљиве
8. Израчунавања - Цели и реални бројеви, дељење
9. Израчунавања - Коришћење и дефинисање функција
10. Израчунавања - Задаци за вежбање
11. Гранање
12. Понављање - петље
13. Контрола тока - Задаци за вежбање
14. Структуре података
15. Примена петље у структурама података
16. Откривање и исправљање грешака и коришћење дебагера
12.3. Угњежђене петље¶
Тело петље могу да чине било које наредбе, па и наредбе гранања, али и друге петље.
Неки задаци захтевају овакво програмско решење, погледајмо следеће примерe!
Таблица множења¶
Напиши програм који исписује таблицу множења бројева од 1 до n. На пример, за n=4 таблица треба да изгледа овако.
1*1=1 1*2=2 1*3=3 1*4=4
2*1=2 2*2=4 2*3=6 2*4=8
3*1=3 3*2=6 3*3=9 3*4=12
4*1=4 4*2=8 4*3=12 4*4=16
Погледај решење:
Када имамо петљу унутар петље, то називамо угњежђене петље. Тада прву петљу зовемо спољашња, а ону увучену унутар ње - унутрашња.
Спољашња петља има бројач i
који броји врсте, тј. редове
наше таблице множења. Унутрашња петља има свој бројач j
који броји
један по један производ у врсти. На почетку вредност бројача i
је 1 (налазимо
се у првој врсти). Вредност бројача j
креће од 1 и исписује се 1*1=1. Затим
се j
(бројач унутрашње петље) повећава за 1 и исписује се други производ прве врсте
1*2=2 и тако редом до краја врсте. После тога се бројач спољашње петље i
повећава
за 1 и креће исписивање друге врсте производ по производ. Поступак се наставља
док се не испишу сви производи до краја таблице множења. У том тренутку
и спољна и унутрашња петља су избројале до краја и обе се завршавају.
Основу решења овог задатка чини пролазак кроз све парове бројева од 1 до n. За то се користи угњежђена петља. Бројач спољашње петље одговара броју врсте, тј. првом чиниоцу (у првој врсти је први чинилац увек 1, у другој 2, у трећој 3, у четвртој 4). Бројач унутрашње петље одговара броју колоне, тј. другом чиниоцу (у првој колони је други чинилац увек 1, у другој 2, у трећој 3, у четвртој 4).
Обрати пажњу да се цела унутрашња петља понавља n
пута, по
једном за сваку вредност бројача спољашње петље. Када се i
постави
на 1
, тада j
редом узима све вредности од 1
до 4
. Након
тога се i
постави на 2
, а j
испочетка узима све
вредности од 1
до 4
и тако даље.
У телу унутрашње петље знају се вредности бројача i
и j
и лако
можемо израчунати њихов производ и исписати одговарајућу
једнакост. Штампање ћемо подесити тако да се не прави размак између
делова (постављањем sep=""
) и тако да се не прелази у наредни ред,
већ се размак додаје након штампе (постављањем end=" "
). У нови ред ћемо
прелазити након завршетка рада унутрашње петље (тако што ће последња
наредба спољашње петље бити print()
).
Правоугаоник од звездица¶
Напиши програм који штампа звездице на екран тако да оне чине правоугаоник као на слици.
********
********
********
На почетку, треба да пребројиш колико врста звездица видиш на слици а затим колико их има у свакој врсти. Ако добро погледаш, има три врсте са по осам звездица у свакој врсти. Те бројеве искористи да поставиш границу спољне и унутрашње петље.
Решење можеш протумачити на следећи начин:
Штампај три врсте (n = 3) са по осам звездица (n = 8) а на крају сваке врсте пређи у нови ред.
Сети се да овако задат опсег range(n) броји 0, 1, … n-1.
Променљива i
овде броји 0, 1, 2 и ту завршава бројање што је и крај спољне петље али и програма.
Променљива ј
броји 0, 1, 2, 3, 4, 5, 6, 7 за сваку врсту односно за сваку вредност променљиве i
.