Přejít na téma:
Opakuj dokud
Přejít na cvičení:
Stavitel
Zobrazit na celou obrazovku
Vypnout zvuky

Váš denní počet odpovědí je omezen. Pro navýšení limitu či přístup do svého účtu s licencí se přihlaste.

Přihlásit se
Sdílet Zobrazit shrnutí tématu
Opakuj dokud

Kromě základních cyklů s pevně daným počtem opakování využíváme často v algoritmech i cyklus typu opakuj dokud. Tento cyklus se opakuje tak dlouho, dokud je splněna zadaná podmínka. V programovacích jazycích se pro zápis tohoto typu cyklu využívá příkaz while.

Pozor na rozdíl oproti podobně znějícímu podmíněnému příkazu pokud. Tělo příkazu pokud se provede nejvýše jednou, zatímco tělo příkazu dokud se může provádět opakovaně.

Všimněte si, že po provedení cyklu podmínka neplatí (vláček není na žlutém políčku). Podmínka se vyhodnocuje ještě před prvním vykonáním těla cyklu. Pokud není splněna, tak se tělo cyklu neprovede ani jednou:

Jako u všech řídicích bloků musíme dávat dobrý pozor na to, co je součástí cyklu a co je mimo něj:

Podmínka se kontroluje vždy před provedením celého bloku, nikoliv po každém příkazu:

Při vyjadřování podmínek často využíváme logické spojky (a zároveň, nebo, negace):


Fatal error: Uncaught TypeError: App\Service\PsService::getUserItemStatusByPs(): Argument #1 ($user) must be of type int, null given, called in /var/www/umimeprogramovat.cz/webroot/src/Snippet/Exercise/ItemBasedExercise/ItemBasedExercisePlugin.php on line 66 and defined in /var/www/umimeprogramovat.cz/webroot/src/Service/PsService.php:69 Stack trace: #0 /var/www/umimeprogramovat.cz/webroot/src/Snippet/Exercise/ItemBasedExercise/ItemBasedExercisePlugin.php(66): App\Service\PsService->getUserItemStatusByPs() #1 [internal function]: App\Snippet\Exercise\ItemBasedExercise\ItemBasedExercisePlugin->progress() #2 /var/www/umimeprogramovat.cz/webroot/src/Helper/ExerciseHeaderBuilder.php(20): call_user_func() #3 /var/www/umimeprogramovat.cz/webroot/src/Template/BaseExercise/default.php(26): App\Helper\ExerciseHeaderBuilder->render() #4 /var/www/umimeprogramovat.cz/webroot/src/Controller/BaseExercise.php(119): require('...') #5 /var/www/umimeprogramovat.cz/webroot/exercise/stavitel.php(21): App\Controller\BaseExercise->renderDefault() #6 /var/www/umimeprogramovat.cz/webroot/index.php(141): include('...') #7 {main} thrown in /var/www/umimeprogramovat.cz/webroot/src/Service/PsService.php on line 69