====== Rady a často kladené dotazy ====== ===== Často kladené dotazy ===== * Jak psát apostrofy nebo jiné znaky anglické klávesnice? TODO * Jak je to s různými kompilátory v CodExu? TODO * Free Pascal, GNU Pascal, GNU Pascal emulující Turbo Pascal * Od 21.11.2009 bude k dispozici pouze Free Pascal ===== Rady ===== * Odsazujte podle logické struktury programu, vkládejte rozumně prázdné řádky. * Komentujte svá řešení. Bez komentářů se v tom nevyzná nejen jiný člověk, ale po čase ani vy. * [[http://wiki.matfyz.cz/wiki/Studnice_v%C4%9Bdomost%C3%AD|Studnice vědomostí]] a návod pro přístup k ní ==== Typické problémy -> rady ==== Z [[cviko8|8. cvičení.]] * chybí komentáře * popis programu - aspoň jedna věta, co program řeší * popis funkcí a procedur, proměnných, popis algoritmů * špatné odsazování - v kódu se nikdo nevyzná * chybí rozdělení do podprogramů, vše se řeší na globální úrovni * špatně pojmenované proměnné * není srozumnitelné, k čemu proměnné slouží * program je užvaněný - vypisuje, co podle zadání nemá vypisovat * odevzdaný program nejde zkompilovat * před odevzdáním nebyl odladěn * nebyl vyzkoušen ve FreePascalu, který se nyní bude výlučně používat v CodExu * nesmyslné použítí proměnných * například hafo proměnných místo pole * program není rozumně rozšiřitelný nebo měnitelný i při malé změně zadání * natvrdo zadané hodnoty, místo konstant * běhové chyby * indexování mimo hranice pole * přetečení zásobníku (zacyklení) - např. při špatně ukončené rekurzi * program neřeší nebo řeší špatně okrajové případy * prázdný string, string velikosti 1, číslo = 0, záporné číslo, ... * nesmyslné porovnávání logických proměnných * if ''(BoolPromenna = TRUE) then writeln('TRUE') else writeln('FALSE') end;'' * ''if (Vyraz) then Promenna := TRUE else Promenna := FALSE end;'' * odevzdávání zkompilovaného EXE souboru místo zdrojáku * debugování v CodExu místo u sebe * nejdřív si svůj program otestuji na dostupných vzorových testovacích datech a napíšu si svoje rozumné testy, pak teprv odevzdávám * kombinace češtiny a angličtiny ve zdrojáku * zbytečné opakování stejných výpočtů * to, že program prošel CodExem, neznamená, že program je v pořádku * komentáře v programu neodpovídají tomu, co program opravdu dělá * jsou typicky neaktuální * pole jsou číslována dost neintuitivně * může mást dalšího programátora, nebo původního po delší době * další rady * lepší je jednoduchost než zbytečná chytrost * kdo se má vyznat po čase v geniálním programu, když jej lze těžko pochopit, protože není rozumně popsaný? ==== Testovací vstup v souboru ===== Máte-li program, který tahá data ze standardního vstupu, není při ladění příliš praktické pokaždé zadávat data ručně. Užitečnější je programu na vstup zadat data ze souboru. To lze provést pomocí takzvaného přesměrování vstupu. Návod (pro Windows): Zjistěte, do kterého adresáře vám Borland Pascal (resp. Free Pascal) ukládá zkompilované zdrojáky (*.exe). Typicky se jedná o stejný adresář, ve kterém jsou uloženy původní zdrojáky (*.pas, *.fp, ...). Otevřete si konzoli. Například pomocí: //Start->Spustit//: cmd Přejděte do zmíněného adresáře pomocí příkazu do konzole. Např.: cd C:\programs\bpascal Zkuste si spustit svůj program: mujprogram.exe Připravte si vstupní soubor, např. ''vstup.txt''. Pozor, aby na konci byla prázdná řádka, jinak program bude čekat na ukončení vstupu. Konečně program s přesměrováním vstupu spustíte pomocí příkazu ve tvaru: mujprogram.exe < vstup.txt Co dále? Takto si můžete vstup připravovat ve svém oblíbeném editoru, můžete jej mít uložený a opakovaně používat. Můžete používat i více vstupnéch souborů s různými testovacími daty. V Linux by se pracovalo velmi podobně. Přesměrování vstupu v linuxové konzoli (shellu) má stejnou syntax, používá se také znak ''<''.