12.2. Понављање - условна петља while
¶
Као што смо видели петља for
се користи да се неке наредбе понове
одређен, познат број пута, да се бројачком променљивом прође кроз неку
правилну серију бројева (узастопне бројеве или бројеве набројане са
неким кораком, попут оних у примеру игре жмурке) или да се прође кроз
све елементе листе, ниске или речника. У неким ситуацијама потребно је
богатије контролисање понављања, односно потребно је неке наредбе
понављати све док је испуњен неки услов. За то се користи тзв. условна
петља, тј. петља while
.
И петљу while
можемо употребити да бисмо прошли кроз серију правилно
размакнутих бројева. Урадимо поново задатак са игром жмурке.
Жмурке¶
Видећеш да се у телу петље крије наредба broj = broj + 5
, која
проузрокује да се вредност променљиве broj
промени тако што се
њена текућа вредност увећа за пет (о промени вредности променљиве и
наредбама овог облика више је речено у поглављу о променама вредности
променљивих). Изврши овај програм корак по корак и пажљиво прати како
се мењају вредности променљиве broj
.
Петљу while
употребљавамо када не знамо унаред колико пута треба
извршити тело неке петље.
Цифре броја¶
![](../_static/img/question-mark.png)
Напиши програм који одређује и исписује цифре датог природног броја (већег од 1), кренувши од цифре јединица. На пример, ако корисник унесе број 1234, програм треба да испише 4, 3, 2, 1 (сваку цифру у посебном реду).
Раније смо видели да се последња цифра броја може одредити тако што се одреди остатак при дељењу тог броја са 10, а да се она може обрисати из броја тако што се пронађе целобројни количник тог броја са 10. Да би се одредиле све цифре броја, потребно је понављати одређивање, исписивање и брисање последње цифре броја, све док број не постане нула.
Изврши обавезно овај програм корак по корак и прати вредности
променљивих. На пример, ако унесеш број 123
, приликом првог
уласка у петљу проверава се да ли је 123 > 0
и пошто јесте,
исписује се 123 % 10
, тј. 3
, а број n
се замењује са 123 // 10
тј. 12
.
Након тога се проверава да ли је 12 > 0
и
пошто јесте, исписује се 12 % 10
тј. 2
, а број n
се
замењује са 12 // 10
, тј. 1
. Након тога се проверава да ли је
1 > 0
и пошто јесте, исписује се 1 % 10
, тј. 1
, а број
n
се замењује са 1 // 10
, тј. 0
. На крају се проверава да
ли је 0 > 0
и пошто није, петља се завршава. Дакле, програм
исписује цифре 3
, 2
и 1
, баш како је и тражено.
Исправан унос оцене¶
![](../_static/img/question-mark.png)
Напиши програм који од ученика тражи да уноси оцену све док не унесе оцену која је исправна (цео број између 1 и 5).
На почетку ћемо тражити да корисник унесе оцену и затим ћемо исписивати поруку о грешци и тражити да се оцена уноси све док унета оцена не припада интервалу од 1 до 5.
Препоручујемо ти да овај облик петље вежбаш и помоћу робота Карела,
јер у задацима које смо ти припремили постоји велики број њих који
захтевају употребу петље while
.