Autor Zpráva
Joker
Profil
Autor: Joker
Odkaz na aktuální verzi textu: Základní kurz 11: Cykly
zveřejněno
Odkud se vede diskuse k aktuálnímu stavu textu:
První příspěvek po poslední revizi textu

Po delší době nová kapitola, mám nějak hotovou i tu další a brzy snad bude ještě jedna.
juriad
Profil
- základní struktura pro řízení běhu programu
jsem zvyklý na přívlastky řídící struktura a datová struktura, každé znamená něco úplně jiného; trochu jsem se v této větě ztratil a musel popřemýšlet
- „Opakuj daný blok kódu tak dlouho dokud je splněna nějaká podmínka“.
chybí čárka před dokud
- Na jeden druh situací, kdy by toto šlo využít, jste asi narazili už když jsme mluvili o [odkaz]polích[/odkaz]
problém v zájmenu toto - odkazuje se na nadpis, nebo obsah předchozího textu? V prvním případě není zatím vysvětlený termín foreach
- „Opakuj načtení dalšího prvku pole a nějakou operaci s ním tak dlouho, dokud ten další prvek existuje“.
nelíbí se mi formulace, ale nezlepším to
- Pro tento účel slouží v PHP foreach.
Tomuto účelu slouží ...
- Pokud klíče položek v poli pro daný cyklus nepotřebujete, je možné zápis zkrátit: ...
přesuň až za příklad a ten ukaž i v této zkrácené variantě
- pro jiný vstup generuje varování (warning).
chybí podmět: PHP?
- Toho je možné dosáhnout použitím referencí
Tohoto ...
- Velmi podobný druh cyklu je cyklus do … while, který se liší jen tím, že zatímco cyklus while [první zmínka, čemu je podobný, je až tady] vždy nejdřív ...
... který se liší od cyklu while tím, že cyklus do-while ... , zatímco while ... // jen prohození, dříve zmíní podobnost s while
- Poslední typ cyklu ...
Posledním typem cyklu ...
- Tento
Zkus použít jiné zájmeno, nebo možná přeformuluj úplně
- provedeme kód kde zvyšujeme
lépe: provádí kód, který zvyšuje
- příklad for: echo "Suma čísel od 1 do $cislo je: $soucet";
určitě ne $cislo, ale $vstup
- v praxi se používá
Velké písmeno na začátku věty
- Například kdybychom měli pole, kde chceme vypsat všechny jeho hodnoty kromě nul:
lépe: Například mějme pole čísel a chceme vypsat všechny jeho hodnoty kromě nul.
- příklad:
<?php
$pole = array(1, 5, 0, 4, 9, 0, 3);
//funkce count() vrátí počet položek v poli
$velikost = count($pole);
$i = 0;
while (($i < $pocet) && ($pole[$i] != 0)) {
  echo "Hodnota na indexu $klic v poli je: $hodnota <br>";
}
?>
Ehm; $klic a $hodnota jsou kde?
Joker
Profil
juriad:
Díky za připomínky.
- pro jiný vstup generuje varování (warning).
chybí podmět: PHP?
Bylo to myšlené, že cyklus foreach generuje varování. Nebo bych tam mohl dát „se generuje varování“.

Zbytek upravím, díky.
mimochodec
Profil
Joker:
Mně se to nedařilo otevřít včera a neotvírá se mně to ani teď.
Joker
Profil
juriad:
Aktualizoval jsem text ve smyslu připomínek.

mimochodec:
Tak to netuším, v čem je problém. Mně to funguje normálně.
Kcko
Profil
Joker:
<?php
$pole = array(1, 5, 0, 4, 9, 0, 3);
//funkce count() vrátí počet položek v poli
$velikost = count($pole);
$i = 0;
while (($i < $pocet) && ($pole[$i] != 0)) {
  echo "Hodnota na indexu $klic v poli je: $hodnota <br>";
}
?>

Tento příklad je špatně. $klic, $hodnota a $pocet jsou neexistující proměnné a pokud se nepoužije inkrementace $i tak se to zacyklí, začátečníka to může zmást.

Dále tato věta V praxi se používá operátor inkrementace či dekrementace ($cislo--;, resp. $cislo++;). je obráceně, dekrementace či inkrementace nebo prohodit proměnné v závorce.

Jsou to drobnosti, ale začátečník se je může naučit ("špatně").
Joker
Profil
Kcko:
Jo, ten příklad byl divný, jsem asi něco zkopíroval a pak to nedodělal.

Zapracoval jsem připomínky, nová verze na php.it-joker.cz/?uri=zakladni-kurz/11-cykly
Joker
Profil
Zveřejnil jsem kapitolu o cyklech na Péhápku.
Chro
Profil
Možná by v kapitole o cyklech stálo za zmínku, že konstrukcí break (podobně jako continue), lze vyskočit i z více probíhajících cyklů for, foreach, while. Příklad break 2; atd.

Mimochodem, nemělo by se TRUE/FALSE psát v kódech velkými písmeny? Měl jsem vždy za to, že jsou to konstanty.
Joker
Profil
Chro:
konstrukcí break (podobně jako continue), lze vyskočit i z více probíhajících cyklů
Jasně, já měl za to, že to tam je. Ale ono to je u continue a u break ne.

Opravil jsem. A když už jsem to dělal, doplnil jsem i informaci, že break umí ukončit i celý skript.
A dodělal jsem pro continue a break vlastní podnadpisy.

Mimochodem, nemělo by se TRUE/FALSE psát v kódech velkými písmeny?
No, možná. Jsou to konstanty, ale jsou case-insensitive.
Takže prakticky je to jedno, formálně by to asi velkými písmeny být mělo. Já jsem zvyklý je v kódu psát malými písmeny.
Martin Adámek
Profil
Myslím, že by bylo lepší ve výkladu posunout for nad while a do while.
Aby to odpovídalo principu, že pokud jde použít foreach, má se použít foreach;
elseif jde použít for, má se použít for;
a až pak while nebo do while.

Jak je for odstrčenej dole, tak se obávám, že čtenář ho už příliš nevezme na vědomí,
protože for mu nepřinese nic, co by neuměl while.

S tím souvisí i v článku níže umístěná věta
Příklad výše demonstruje, že podmínka nemusí být jen jednoduchá „pokud počítadlo nedosáhlo nějaké hodnoty“, ale může být zapsaná i výrazem.
...ta by měla být už u definice while, resp. do while; protože pokud je možné použít počítadlo, tak se má použít for, a ne (do) while.
Keeehi
Profil
Cykly while a for jsou ekvivalentní a je úplně jedno, který se použije. Použiješ ten, který se ti zrovna více líbí (lépe sedí v kódu).
Joker
Profil
Martin Adámek:
pokud jde použít foreach, má se použít foreach;
elseif jde použít for, má se použít for;
a až pak while nebo do while.

Podle téhle úvahy by se while a do-while nepoužily nikdy, protože jakékoliv použití některého z nich jde nahradit i cyklem for.
A jak píše Keeehi, for není nějak univerzálně lepší, preferovaný typ cyklu je dalo by se říci „který je na tom místě hezčí“.

Jinak v té kapitole se postupuje od jednoduššího ke složitějšímu, podle mě je cyklus for pro začátečníka nejsložitější na pochopení.
Dává lepší smysl nejdřív vysvětlit principy na „ukecanějším“ cyklu while a pak vysvětlit, že for je vlastně zhuštěný zápis téhož, než současně vysvětlovat principy cyklu i ten zhuštěný zápis.

Vaše odpověď

Mohlo by se hodit

Ostrá verze učebnice běží na www.pehapko.cz.

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: