Programátorské finty Co všechno jde, i když třeba těžko. (c) Leonard Walletzký, ESF MU, 2003 Kontrola uživatelského vstupu O/ Je třeba zajistit vložení správných parametrů do programu a funkce O/ Kontrola u programu l cyklus while l program potřebuje správnou hodnotu, aby mohl pracovat dál O/ Kontrola u funkce l struktura if l funkci stačí, pokud zjistí, že vstup je neplatný Příklad O/ Modifikujte funkci soucet tak, aby správně reagovala při chybném vstupu O/ Co je chybný vstup? l zadání prázdného vektoru l funkce length(v) vrací 0 O/ Co vrátíme v případě chybného vstupu? l nejlépe hodnotu, která se dá jednoduše testovat v programu a jinak smysl nemá l nejčastěji prázdný vektor [ ] Modifikace funkce function s=soucet(v) vel=length(v); if vel==0 s=[ ]; else s=0; for i=1:vel s=s+v(i); end end Program -- kontrola vstupu O/ Modifikujte program na výpočet součtu prvků vektoru, který zadáme pomocí input. O/ Tvar kontrolního cyklu: while ~ =input(); end O/ Stanovení podmínky platnosti l length(v)>0 Řešení v=input(`Zadej vektor`); while ~(length(v)>0) v=input (`Spatne. Zadej opravdovy vektor:`); end vel=length(v); s=0; for i=1:vel s=s+v(i); end disp(s) Příklady O/ Napište funkci, která zjistí, zda vektor obsahuje zadané číslo (obsahuje=1, neobsahuje 0) O/ Funkce vrátí pravdivostní hodnotu! O/ Funkce bude mít dva vstupní parametry (proměnné) l a -- číslo, které chci testovat l v -- vektor, ve kterém se má nacházet Řešení function c=obsahuje(a,v) vel=length(v); c=0; for i=1:vel if a==v(i) c=1; end end Modifikace funkce O/ Modifikujte funkci obsahuje tak, aby cyklus probíhal do chvíle než: l najdu číslo a l dorazím na konec vektoru O/ Místo cyklu for použiji cyklus while i=1; while v(i)~=a&i