Přejít na téma:
Cykly s proměnnými
Přejít na cvičení:
Želví grafika
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
Cykly s proměnnými

Během opakování příkazů se nám někdy hodí vědět, v kolikátém opakování (iteraci) právě jsme. K tomu lze využít následující konstrukci, v programovacích jazycích označovanou jako for cyklus:

Proměnnou, která se během cyklu automaticky mění (v tomto případě označenou k) nazýváme řídící proměnná cyklu. Řídící proměnné lze využít v libovolných výrazech uvnitř cyklu. For cykly lze do sebe vnořovat. Všimněte si pořadí, ve kterém se řídící proměnné mění:

Proměnné lze využít také v rámci podmínek cyklu opakuj dokud:

V tomto případě si musíme dávat obzvlášť pozor na zacyklení – situaci, kdy podmínka cyklu nikdy nepřestane platit a cyklus se tedy bude opakovat donekonečna. To se může stát například tehdy, když zapomeneme v těle cyklu měnit hodnotu proměnné, která figuruje v podmínce, když příkaz měnící proměnnou chybně odsadíme (takže nebude součástí cyklu), nebo když nevhodně formulujeme podmínku tak, že nepřestane platit navzdory změně proměnné:


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/turtle.php(21): App\Controller\BaseExercise->renderDefault() #6 /var/www/umimeprogramovat.cz/webroot/index.php(115): include('...') #7 {main} thrown in /var/www/umimeprogramovat.cz/webroot/src/Service/PsService.php on line 69