{{indexmenu_n>4}} ====== 4 - Jednoduché programy s cykly a funkcemi ====== * pro vyučující: [[courses:b0b36prp:internal:tutorialinstruction:04|]] ===== Procvičovaná témata ===== * [[https://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B|operátory]] * [[courses:b0b36prp:tutorials:control|řídicí struktury]] * rozdělení programu do funkcí ===== Úkoly ===== * Vypište všechna sudá čísla od 1 do $n$, kde $n$ zadá uživatel na standardním vstupu * Vypište součin všech čísel vypsaných v předchozím kroku * Vypište řadu $n$ čísel ve tvaru: === === 1, -1, 1, -1, 1, -1, ... ===== ===== * Napiště program který umožní výpočet Ludolfova čísla jako součtu Leibnizovy řady $$ \qquad\pi = 4 \sum_{k=0}^\infty\dfrac{(-1)^k}{2k+1} = \dfrac{4}{1}-\dfrac{4}{3}+\dfrac{4}{5}-\dfrac{4}{7}+\dfrac{4}{9}-\dfrac{4}{11}+\cdots $$ * Vytvořte funkci pro výpočet Ludolfova čísla pomocí $n$ prvků Leibnizovy řady * Zjistěte kolik členů řady je potřeba zahrnout, abychom dostali Ludolfovo číslo s přesností na $10^{-6}$. * Vypište v dekadické, hexadecimální a binární reprezentaci znak zapsaný na standardním vstupu uživatelem (hint: pro výpis v binárním tvaru použijte bitové operátory) === === Standardní vstup: a Standardní výstup: 97 0x61 b01100001 ===== ===== /* ===== Vnořené podmínky ===== - Zopakování if a doplnění ... TBD příklad (možná přesunout do lab02) ===== Cykly - syntaxe ===== ==== For cyklus ==== for (inicializace; podmínka; změna) { tělo cyklu } * //Inicializace// u ''for'' cyklu se provede pouze před prvním provedením těla cyklu. * //Podmínka// je ověřována před každým provedením těla cyklu. * //Tělo cyklu// se provede pouze, pokud je podmínka splněna. * //Změna// se provede vždy až po provedení těla cyklu. Použití preinkrementu či postinkrementu tuto vlastnost neovlivní. * U for cyklu lze vynechat libovolnou část příkazu for. Cyklus for(;;) bude nekonečný. === Příklad === Výpis čísel od 1 do 10. for (int i = 1; i <= 10; i = i + 1) { printf("%d, ", i); } ==== While cyklus ==== while(podmínka) { tělo cyklu } Nejprve se otestuje platnost podmínky. Je-li splněna, provede se tělo cyklu a poté se opět otestuje platnost podmínky. V případě nesplnění podmínky při prvním testování, neproběhne tělo cyklu ani jednou. === while cyklus - příklad === Výpis čísel od 1 do 10. int i = 1; while (i <= 10) { printf("%d, ", i); i = i + 1; // nebo i++; } ==== Do - while cyklus ==== do { tělo cyklu } while (podmínka); * Nejprve se provede //tělo cyklu// a teprve po jeho prvním provedení se otestuje podmínka. Znovu se tělo cyklu provede pouze v případě platnosti podmínky. * Narozdíl od while cyklu se tělo do - while cyklu provede alespoň jednou. === do - while cyklus - příklad === Jaký je rozdíl mezi while a do-while? int i = 1;; do { printf("%d, ", i); i++; } while ( i <= 10 ); */ /* ==== Speciální příkazy pro cykly ==== * Příkaz **''break''** ukončí provádění cyklu a pokračuje zpracováním kódu za tělem cyklu. * Příkaz **''continue''** ukončí provádění těla cyklu a v případě splnění podmínky znovu zahájí zpracování těla cyklu. */