Садржај
1. Робот Карел - Линијски програми и бројачка петља
1.1. Линијски програми
1.2 Вежбање
1.3. Бројачка петља for
1.4. Квиз
1.5. Вежбање
2. Робот Карел - Условна петља и гранање
2.1. Условне петље
2.2. Вежбање
2.3. Гранање
2.4. Квиз
2.5. Вежбање
3. Робот Карел - Задаци за вежбање
3.1. Робот Карел - задаци за вежбање
4. Корњача графика - Линијски програми и петље
4.1. Наредбе корњаче
4.2. Линијски програми
4.3. Петље
4.4. Квиз
4.5. Вежбање
5. Корњача графика - Гранање, угнежђене петље, функције, торке и листе
5.1. Гранање
5.2. Угнежђене петље
5.3. Функције
5.4. Торке и листе
5.5. Квиз
5.6. Вежбање
6. Корњача графика - Задаци за вежбање
6.1. Корњача графика - задаци вежбање
7. Израчунавања - Изрази, оператори, променљиве
7.1. Основне аритметичке операције и примена
7.2. Променљиве - имена придружена подацима
7.3. Тестирање и дебаговање програма
7.4. Квиз
7.5. Вежбање
7.6. Израчунавања - додатни задаци
8. Израчунавања - Цели и реални бројеви, дељење
8.1. Цели и реални бројеви
8.2. Реално и целобројно дељење
8.3. Позициони запис бројева
8.4. Квиз
8.5. Вежбање
8.6. Цели и реални бројеви, дељење - додатни задци
9. Израчунавања - Коришћење и дефинисање функција
9.1. Коришћење функција
9.2. Дефинисање функција
9.3. Квиз
9.4. Вежбање
10. Израчунавања - Задаци за вежбање
10.1. Израчунавања - задаци за вежбање
11. Гранање
11.1. Гранање
11.2. Комбинација више логичких услова
11.3. Конструкција if-elif-else
11.4. Квиз
11.5. Вежбање
11.6. Гранање - додатни задтак
12. Понављање - петље
12.1. Понављање - петља for
12.2. Понављање - условна петља while
12.3. Угњежђене петље
12.4. Квиз
12.5. Вежбање
12.6. Петље - додатни задтак
13. Контрола тока - Задаци за вежбање
13.1. Контрола тока - задаци вежбање
14. Структуре података
14.1. Торке и листе
14.2. Функције за рад са торкама и листама
14.3. Ниске
14.4. Скупови и речници
14.5. Квиз
14.6. Вежбање
15. Примена петље у структурама података
15.1. Примена петље у торци, листи и ниски
15.2. Учитавање и обрада листе
15.3. Примена петље у речнику
15.4. Квиз
15.5. Вежбање
16. Откривање и исправљање грешака и коришћење дебагера
16.1. Дебаговање на рачунару у програму IDLE

12.1 Понављање - петља for

У програмима је често потребно да се одређена наредба или блок наредби понове више пута. У програмима са Карелом и корњачом сазнали сте како се користе петље for и while. У овом поглављу видећемо како се ове петље могу користити у конзолним програмима.

Понављање наредби дати број пута

Размисли како би написао програм који десет пута исписује Zdravo. На основу онога што смо до сада научили можемо десет пута навести наредбу print("Zdravo").

Овај програм било је напорно откуцати (чак иако смо користили технику копирања и лепљења). Ако сада пожелиш да корисник прво унесе број колико пута жели да се испише поздрав, тада је јасно да тај програм не можемо испрограмирати на овај начин, већ су нам потребне мало напредније технике. Решење долази у облику петљи, тј. наредби које омогућавају да се нека наредба или неки блок наредби понове више пута. За почетак размотримо наредбу којом постижемо да се нешто понови дати број пута. Најједноставнији начин да то урадимо је да употребимо наредбу облика for i in range(n):. Наредни програм 10 пута исписује поруку Zdravo, коришћењем петље for.

Након петље можемо исписати и додатну поруку (у овом примеру то је порука Doviđenja).

Приметимо да је испис поруке Zdravo био увучен, јер се понавља, док испис поруке Doviđenja није био увучен јер се не понавља више пута. Ако бисмо увукли обе наредбе исписа, онда би се обе понављале 10 пута, што није оно што желимо.

Увежбај овај облик понављања кроз још неколико једноставних примера.

Обими пет троуглова

Напиши програм који израчунава обиме пет једнакостраничних троуглова чије дужине страница корисник уноси.

Видећеш да су све наредбе у телу петље увучене у односу на петљу, али и да су међусобно поравнате, што мора увек бити случај (у супротном се добија порука да програм није исправан).

Поздрави сваког ученика

Напиши програм који учитава неколико имена ученика и сваког појединачно поздравља.

Овај пут, уместо константне вредности, унутар range треба навести променљиву n, што значи да ће се петља извршавати различит број пута (у зависности од броја n који корисник уноси). Такође, видиш да променљива ime не чува број, него текст. Приликом уноса вредности употребили смо само input(...), а не int(input(...)), нити float(input()), јер након уноса текста није потребно из њега прочитати ни целобројну ни реалну бројевну вредност (чему служе функције int и float).

Опсег бројева - range

Размотримо сада детаљније како функционише петља for i in range(n): којом смо постизали да се нешто понови n пута. Током извршавања такве петље променљива i редом узима вредности 0, 1, 2 итд., све до вредности n-1. На пример, ако је n једнако 3, тада ће се тело петље извршити три пута и у првом извршавању тела петље променљива i ће имати вредност 0, у другом вредност 1, а у трећем вредност 2. Позив range(n), дакле, формира колекцију бројева 0, 1, 2, ..., n-1 из које затим бројачка променљива i узима редом једну по једну вредност. Осим са једним, функцију range могуће је позвати и са два и са три параметра. Када се наведу два аргумента a и b, врши се набрајање свих елемената из интервала целих бројева [a, b-1], док се у случају када се наведу три аргумента a, b и k врши набрајање сваког k-тог елемента тог интервала. Дакле,

  • позив range(n) гради колекцију 0, 1, 2, ..., n-1;

  • позив range(a, b) гради колекцију a, a+1, ..., b-1;

  • позив range(a, b, k) гради колекцију a, a+k, a+2k, ..., a+nk, где је последњи број одабран тако да буде последњи у овом низу који је строго мањи од k.

Провери да ли ово разумеш тако што ћеш одговорити на наредних неколико питања.

    Q-9: Који опсег садржи вредности 1, 2, 3 ?

  • range(4)
  • Покушај поново
  • range(1, 4)
  • Тачно
  • range(3)
  • Покушај поново
  • range(1, 3)
  • Покушај поново

    Q-10: Колико вредности садржи опсег range(1, 10, 2) ?

  • 5
  • Тачно
  • 6
  • Покушај поново
  • 9
  • Покушај поново
  • 10
  • Покушај поново

О колекцијама података причаћемо детаљније у наредном поглављу.

Нагласимо да је колекција range таква да се њени елементи не чувају истовремено у меморији, већ се током рада петље for гради један по један елемент ове колекције. У овом приручнику опсеге ћемо увек користити само у склопу петље for.

Ево примера употребе различитих облика функције range кроз наредних неколико задатака.

Испис бројева од 0 до 9

Употреби петљу да би се исписали бројеви од 0 до 9.

Испис бројева од a до b

Када се у позиву функције range наведе само један аргумент, онда бројање креће од нуле. Међутим, када се наведу два аргумента a и b, тада бројање креће од a и завршава се са b-1.

Напиши програм који учитава два броја a и b и затим исписује све бројеве од a до b (укључујући и њих).

Игра жмурке

Ако се у позиву функције range наведу три аргумента, трећи од њих одређује корак за који се у сваком кораку петље врши увећавање бројачке променљиве. На пример, range(1, 10, 2) означава да бројачка променљива креће од 1 и да се у сваком кораку увећава за 2, све док је строго мања од 10 тј. да редом узима вредности 1, 3, 5, 7 и 9.

У игри жмурке деца броје 5, 10, 15, итд., до 100. Напиши програм који исписује баш те бројеве.

Аларм који звони на сваких 10 минута

Сат је навијен тако да између 8.00 и 10.30 звони на сваких 10 минута. Напиши програм који исписује времена у којима сат звони.

Задатак је много једноставније реализовати ако време представимо само помоћу минута. Зато дефинишемо функције конверзије сати и минута у минуте и минута у сате и минуте.

Претходна лекција
Следећа лекција
A- A+
Тема
Темa

Prijavi problem


Obeleži sve kategorije koje odgovaraju problemu

Još detalja - opišite nam problem


Uspešno ste prijavili problem!
Status problema i sve dodatne informacije možete pratiti klikom na link.
Nažalost nismo trenutno u mogućnosti da obradimo vaš zahtev.
Molimo vas da pokušate kasnije.