Autor Zpráva
Again
Profil
Bohužel z nedostatku času se mé psaní kapitoly "Operátory" poměrně značně protáhlo.

Aktuální verzi naleznete zde: https://docs.google.com/document/d/1vAd3dW_y0U1VMCEZkq9dqwDJxW9esX3OXV51z--gUHg/edit
(Google documents (ne)inteligentně odstranil tabulky a někde zpřehazel formatování, originál kdyžtak uploadnu jinde)

Budu rád za vaše připomínky a doufám že Joker mezitím tuto kapitolu nezačal psát :)
Trejpa
Profil
Again:
!$a
  $a = true; !$a
    výsledkem je logická hodnota true
Podle mě tam patří false.
Joker
Profil
Again:
Budu rád za vaše připomínky a doufám že Joker mezitím tuto kapitolu nezačal psát :)
Naštěstí ne :-)

(Google documents (ne)inteligentně odstranil tabulky a někde zpřehazel formatování)
RS Péhápko.cz tabulky neumí, takže by se musel použít buď nějaký jiný formát, nebo to nějak vymyslet.

originál kdyžtak uploadnu jinde
Lepší asi bude to dělat přímo na Péhápku. Na registraci se tuším dá momentálně dostat leda ručním zadáním adresy a myslím, že to je sign-up, registrace podléhá schválení.

Sice jsem moc nechtěl na Péhápku zveřejňovat nedokončené verze článků, ale dokud na ně nevede odkaz z menu, asi to ničemu nevadí.

Přemýšlel jsem i o tom, že bych zřídil nějaký „sandbox“, kam by mělo přístup víc lidí (na Péhápko se mi nechce schvalovat registrace lidem, kteří se přišli „jen podívat“, protože schválený autor tuším může upravovat cokoliv a nechci, aby někdo z legrace třeba mazal články) a mohly by tam vznikat pracovní verze článků.
Možná udělám „sandbox“ z php.it-joker.cz, ale nejdřív to určitě chce dodělat alespoň ten Základní kurz.
Jan Tvrdík
Profil
Joker:
nechci, aby někdo z legrace třeba mazal články
To je dost paranoirdní představa. Na nette.org mohl mnoho let editovat dokumentaci úplně kdokoliv a pokud vím, tak nebyl zaznamenaný jediný případ vandalství. Docházelo maximálně k úpravám, které obsahovaly chyby z důvodu neznalosti autora.

Možná udělám ‚sandbox‘ z php.it-joker.cz
Spíš to viděl na subdoménu pehapko.cz, třeba beta.pehapko.cz.
Alphard
Profil
K přiřazení bych doplnil vícenásobné přiřazení.

přičemž operátor “and” lze zapsat také jako “&&”
Tady prosím opatrně, and a && jsou dva různé operátory s různou prioritou, mezi nimi (z pohledu priority) je přiřazení a ternární operátor. Tohle by podle mě bylo dobré zmínit, protože to může být užitečné a v jiných dílech nebude místo.

// vypíše bool(true), protože číslo 5 je prvočíslo nebo sudé číslo (alespoň platí jedná možnost)
var_dump(true);

Zjevný překlep...

Chybí tam ternární operátor.
Again
Profil
Trejpa:
Děkuji, opraveno.

Alphard:
Tady prosím opatrně, and a &&
Dobře, upřesním to, osobně jsem z Javy zvyklý na && a ||, kde jsou tyto operátory nad ternárním operátorem (stejně jako v PHP), tak jsem tomu nevěnoval moc pozornost.

Kromě ternárního operátoru jsem neuváděl také operátor instanceof (z důvodu nezahrnutí OOP v zak. kurzu), operátor přiřazení podle reference (z důvodu, že mě v této fázi nenapadl žádný vhodný příklad a navíc nechci v zakl. kurzu nikoho mást), operátor pro řízení chyb - @ (z důvodu, že by ho někdo mohl využít k "nesprávnému účelu") a "execution operators" (nevidím žádný důvod, proč je uvádět). O ternárním operátoru jsem uvažoval, nicméně se mi zdá, že více souvisí s podmínkami (které se berou až po kapitole o polích), proto bych ho uvedl až později.
Joker
Profil
Alphard:
Chybí tam ternární operátor.
Ten se kdyžtak vysvětluje u podmínek.
Kubo2
Profil
Pripomienky Againovi:
Chýba tam (alebo si ho zámerne nespomenul, neviem) operátor goto. Ostatne som článok/kapitolu detailnejšie neskúmal.
Jan Tvrdík
Profil
Kubo2:
goto není operátor, ale konstrukt jazyka, stejně jako if nebo continue
Kubo2
Profil
Jan Tvrdík:
goto není operátor, ale konstrukt jazyka, stejně jako if nebo continue
Vážne?
The goto operator can be used to jump to another section in the program. (...)


Doplnenie: Je ale zvláštne, že napríklad o konštrukte (ja to radšej nazývam direktíva) declare už tvrdia:
The declare construct is used to set...



Jan Tvrdík:
stejně jako if nebo continue
Nie sú toto náhodou vetviace štruktúry?
Chamurappi
Profil
Reaguji na Kuba2:
Z určitého pohledu jde považovat za operátor vesměs každou součást kódu, která není operandem. V užším slova smyslu se ale obvykle operátorem rozumí něco, co může být součástí výrazu — třeba uvnitř podmínky v ifu. Skončí if(goto pokus) syntaktickou chybou?
Kubo2
Profil
Chamurappi:
Skončí if(goto pokus) syntaktickou chybou?
Áno.
Joker
Profil
Kubo2:
„Skončí if(goto pokus) syntaktickou chybou?“
Áno.
Tedy to podle Chamurappiho podmínky není operátor.

V tom manuálu viz to, že u goto je sice použitý termín operator*, ale celý ten článek není umístěný v části operators, ale v části control structures. V části o operátorech se o goto nemluví, oproti operátorům se u něj nezmiňuje priorita ani asociativita, resp. u něj ani priorita a asociativita nemají smysl.
Bral bych to spíš jako nevhodně použitý termín v manuálu a goto nazýval příkazem.

* Uznávám, že to je zvláštní, třeba Wikipedia používá statement čili příkaz, což považuji za vhodnější.
Joker
Profil
Again:
Uplynul nám další měsíc, jak to vypadá?
Díval jsem se na Péhápko, jestli tam není něco rozpracovaného, ale není…
Kubo2
Profil
Joker:
Díval jsem se na Péhápko, jestli tam není něco rozpracovaného
Len pre informáciu, ja mám zatiaľ pol kapitoly o cookies, ale nejako to v marci nestíham, mám totiž ešte rozrobený jeden projekt + na starosti tím.
Again
Profil
Joker:
Před měsícem jsem se registroval na pehapko.cz a čekal jsem na schválení, potom jsem na to nějak zapomněl. O víkendu se na to podívám a přepíšu to na pehapko.
Again
Profil
Tak jsem tuto kapitolu přepsal na pehapko (zatím není zahrnuta v menu), tabulky jsem nakonec vyřešil pomocí obrázků, akorát jsem nenašel nikde možnost nahrát obrázky přímo na server, proto jsem je zatím umístil jinde.
Joker
Profil
Again:
Tak jsem tuto kapitolu přepsal na pehapko
Výborně.
Jen jsem upravil adresu, aby odpovídala ostatním kapitolám (tj. pehapko.cz/zakladni-kurz/kapitola).

tabulky jsem nakonec vyřešil pomocí obrázků
No, to není zrovna řešení. Momentálně jako asi nejlepší řešení vidím to předělat na seznam, podobně jako je třeba výčet datových typů.
A možná bych vypustil příklady u jednotlivých řádků (tím se to i lépe předělá na výčet)
Zpočátku ani nejsou nutné (nejspíš si každý umí představit, jak fungují aritmetické operátory) a později zase v buňce musí být několik příkazů, čímž to je nepřehledné.

Doporučuji nejdřív jednoduchý výčet a potom blok kódu s příklady.

akorát jsem nenašel nikde možnost nahrát obrázky přímo na server
Zatím žádná pohodlná není, případně bych nahrál obrázky ručně přes FTP, nicméně ty tabulky udělat obrázky není podle mě přijatelné.

Ještě komentáře k textu:
• Asi by to chtělo víc vyjasnit termín operand před jeho prvním použitím.
Taky přemýšlím, jestli by něčemu vadilo prohlášení, že operátor je příkaz (místo symbol). Řekl bych, že nevadilo. V angličtině se říká, že operátor je language construct, což je termín, který jsem v rámci základního kurzu zatím (u include například) překládal slovem příkaz.
Pak by to bylo něco na způsob, že operátory jsou příkazy, které pro vstupní hodnotu nebo hodnoty vrátí výsledek nějakého výpočtu. A potom ty vstupní hodnoty nazvat operandy.
• Na začátku chybí zmínka o tom, že operátory lze členit podle počtu operandů. Možno následně ukázat na unárním mínus a binárním mínus. O tom by neškodila alespoň drobná zmínka, aby někdo nebyl zmatený, že tam je dvakrát pod sebou operátor -.
• Operátory a příkazy uvedené v textu by měly být obalené v [pre]
• Kolem operátorů v kódu by měly všude být mezery.
• U jednotlivých typů operátorů by se hodilo zmínit jaký datový typ operandů předpokládají a že operandy jiného typu se přetypují (o tom pojednává předchozí kapitola).
• U operátorů inkrementace a dekrementace by kratší a asi i názornější byl jeden společný příklad.
• Pro operátory porovnání by to chtělo uvést jejich názvy (rovná se, je identické, atd.), možná operátory nerovnosti != a <> bych dal pod jednu odrážku.
• Taktéž logické operátory mají své názvy. Zároveň bych je asi členil podle těch názvů a ne podle podoby operátoru, když např. operátory && a and dělají to samé (logickou konjunkci).
• Chtěl jsem dodat nějaký odkaz na pravdivostní tabulky těch operátorů, ale překvapivě jsem žádný vhodný nenašel. Přinejhorším by šlo pravdivostní tabulku vyrobit přes [pre], jako se občas dělají „tabulky“ tady na diskusi.
• Část o bitových operátorech obávám se nikdo nepochopí (pokud by to neznal už předtím). Asi by to chtělo vysvětlit buď víc, nebo méně (klidně jen říct, že se tím nebudeme zabývat a dát odkaz jinam, začátečníci to stejně asi nebudou používat). Ten příklad je podle mě špatně, zadané hodnoty jsou 100 a 101 v desítkové soustavě.
Kubo2
Profil
Again:
Možno by bolo vhodné zmieniť, že toto ++$i; --$i;, resp. toto $i++; $i--; sa jednotlivo nazýva pre/post-in/dekrementácia.
Joker
Profil
Nějak jsem zapomněl napsat, že kapitola je už zveřejněná a přidaná do menu :-)


Again:
Přemýšlím, jestli nějak nevylepšit formulaci:
Běžný operátor rovnosti (==) porovnává dvě hodnoty bez ohledu na jejich datový typ, naopak tzv. operátor identity (===) kontroluje navíc shodu datových typů.
(upravoval jsem text o podmínkách a ten na tohle odkazuje)

Možná jen odkázat sem (a zmínit, že == dělá „loose comparison“ a === dělá „strict comparison“).
A ještě by bylo fajn se trochu zmínit o použití obou operátorů.

Taková zajímavost na okraj: Původně jsem si fungování operátoru == představoval jednoduše, prostě když mají operandy různé typy, nějak je přetypuje a pak porovná.
Ve skutečnosti je to složitější, on implementuje něco jako tu tabulku z manuálu, analyzuje o jakou kombinaci datových typů jde a podle toho je pak porovnává.
(Dokonce třeba když jde o dva řetězce ve kterých je číslo, porovnává je jako čísla.)
Chro
Profil
Zdravím.
V díle o operátorech chybí zmínky o operátorech => a ->. Chystáte o tom nějaké povídání třeba do dílů o polích a OOP?
Joker
Profil
Chro:
Dobrá poznámka. A případně ještě :: alias pámajim nekudotajim, operátor rozlišení kontextu.
Základní kurz se objektům nevěnuje, ale alespoň zmínka o těch operátorech by tam být mohla.
Jcas
Profil
Co by jste řekli na trochu obsáhlejší vysvětlení modula?
viz
Já si udělal tabulku, která to docela dobře ukazuje a Juriad mi tam přidal pěkné vysvětlivky.
jenikkozak
Profil
Jcas:
Já si udělal tabulku, která to docela dobře ukazuje
Dělení se zbytkem se probírá na prvním stupni základní školy, tuším že nejpozději ve čtvrté třídě.
Taurus
Profil
http://pehapko.cz/zakladni-kurz/8-operatory#operatory-inkrementace-dekrementace

Poslední odstavec vypadá, že patří k poslednímu příkladu, ale není to zjevné. či-li má být čili.

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: