Na tejto hodine nás čaká jeden nový princíp - čakanie a.k.a. "opakovanie kým sa niečo (ne)stane" a.k.a. "cyklus s podmienkou" a.k.a. "opakovanie s podmienkou".
Niekedy potrebujeme v algoritme “počkať”, ak je čakanie dlhé vopred známy čas, môžeme na to zaviesť príkaz čakania, napríklad takýto:
Náš vykonávateľ algoritmu (napríklad robot) by teda na chvíľu (1 minútu) “zaspal”. Čakanie na vopred známy čas sa hodí, napríklad si tak môžeme nastaviť automat, ktorý spúšťa školské zvonenie, môžeme tiež nechať automatické dvere otvorené aj po prejdení človeka ešte pár sekúnd, a môžeme nastaviť časovač na telefóne, aby nám neprihorel koláč…
Nie všetky situácie, v ktorých treba počkať trvajú vopred známy čas. Napríklad ak čakáte na rýchlovarnú kanvicu, nečakáte vždy 5 minút, čakáte, až kým sa voda neuvarí. Pred zapnutím kanvice nepočítame, koľko bude zohriatie vody trvať, závisí to od viacero faktorov (minimálne to ovplyvní výkon kanvice, objem vody a počiatočná teplota vody). Takéto čakanie vieme vyjadriť aj vo vývojovom diagrame:
(je tu len pre zaujímavosť pre zvedavcov)
(môžete ho preskočiť, ak vás nezaujíma)
Toto (posledný diagram na predošlej strane s varením vody) voláme v programovaní “činné čakanie” (active waiting) - ak sa nejaký proces neustále pýta, či nenastala nejaká podmienka, zvyčajne tým zbytočne zaťažuje procesor (ktorý musí obslúžiť aj veľa ďalších procesov). Krajšie riešenie je pridať do kódu blok čakania na stanovený čas, ten ďalšie “opýtanie sa” oddiali a v čase tohoto čakania má procesor príležitosť venovať sa aj iným prácam. Ak je (činne) čakajúci proces na nejakú udalosť Oslík a procesor Šrek, vyzerá čakanie takto
Problém činného čakania by vieriešil takýto blok:
Samozrejme, môže sa stať, že voda začne vrieť hneď po kontrole a teda bude počas čakania 10 sekúnd vrieť “zbytočne” v kanvici a my ju použijeme až potom. Pre nás ani pre čaj to ale veľký problém nebude a ušetrili sme si veeeeľa kontrol, či voda už vrie.