Autor Zpráva
Joker
Profil
Autor: Joker
Odkaz na aktuální verzi textu: Základní kurz 13: Funkce
zveřejněno
Odkud se vede diskuse k aktuálnímu stavu textu:
První příspěvek po poslední revizi textu
Jan Tvrdík
Profil
Zase jenom stručně:
(($cislo % 2) == 0) ? true : false; je hnus, vede programátory k nepochopení toho, jak fungují výrazy v PHP. Použij rovnou return (($cislo % 2) == 0)) a případně to dovysvětli pod příkladem (teď to děláš naopak).
• příklad se sude() se mi nelíbí, co třeba naprogramovat gcd?
• předání argumentu referencí mi přijde jako něco, co začátečník nikdy nepoužije
Joker
Profil
Jan Tvrdík:
První bod: Pod tím je popsané, proč to tam je zrovna takhle. I podle dotazů tady spousta začátečníků nechápe, že porovnávací operátory vracejí boolean, zjevně jsou často přesvědčení, že porovnávací operátory jsou nějaká speciální vlastnost jazyka, která na základě porovnání hodnot nějak rozhodne, jaký další kód provést.
Neboli mám strach, že hodně lidí příkaz return (($cislo % 2) == 0)) nepochopí.
Druhý bod: Hm, možná by to bylo užitečnější, přece jen funkci na určení sudého/lichého čísla asi nikdo potřebovat nebude (když na to už je operátor)
Třetí bod: Na druhou stranu asi hodně lidí bude očekávat, že když funkci předají nějakou proměnnou, práce s argumentem uvnitř funkce ovlivní i hodnotu té proměnné vně funkce. I když je pravda, že možná by stačilo jim vysvětlit že to nejde a nerozebírat, jak by to šlo udělat.
Jan Tvrdík
Profil
Joker:
spousta začátečníků nechápe, že porovnávací operátory vracejí boolean
Tím, že to budeš tajit jim to moc neujasníš. Naopak jim pomůžeš tak, že to použiješ a vysvětlíš.

Na druhou stranu asi hodně lidí bude očekávat, že když funkci předají nějakou proměnnou, práce s argumentem uvnitř funkce ovlivní i hodnotu té proměnné vně funkce.
Je určitě důležité ukázat na příkladu, že to takhle nefunguje + odkázat na následující kapitolu o platnosti proměnných, kde to bude vysvětleno víc dopodrobna.

Ještě pár nápadů na funkce (převzato ze cvičení C na FIT ČVUT):
• Napište funkci, která vypíše na obrazovku 10 hvězdiček. Vyzkoušejte ji.
• Napište funkci void kresliHvezdy(int n), která vypíše na obrazovku zadaný počet hvězdiček. Tuto funkci využijte pro vykreslení obdélníku - procedura se dvěma parametry a trojúhelníku - procedura s jedním parametrem.
• Napište funkci, která vypočte n tou mocninu čísla x, n i x jsou celá čísla.
• Vytvořte iterativní funkci pro výpočet faktoriálu.
• Vytvořte funkci, která zjistí, zda její parametr je prvočíslo.
• Napište funkci, která pomocí funkce z předchozího příkladu vypíše všechna prvočísla menší než její parametr.
• Napište funkci se dvěma parametry, která najde nejmenší společný násobek těchto čísel.
• Napište funkci se dvěma parametry, která najde největší společný dělitel těchto čísel.
• Napište funkci, která pro dva intervaly zadané svými krajními body určí jejich průnik. Pokud průnik není, vrátí interval <0,0>.
Joker
Profil
Přidávám si sem poznámku z vlákna Vysvětlení základních principů PHP - reakce na učebnici php
Jcas:
(Nedávno jsem narazil na zajímavou věc, i když to asi není správně. Volám fc dřív, než jsem ji vytvořil. Zajímavé, že to v php prošlo. V jvscriptu by to neprošlo.)

O pořadí deklarace a volání funkce by v kapitole mohla padnout zmínka.
Joker
Profil
Kapitola zveřejněna na Péhápku, ale ještě to bude chtít doladit připomínky.

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: