Differences

This shows you the differences between two versions of the page.

Link to this comparison view

courses:pri-bootcamp:pycharm [2019/07/22 13:29] (current)
seredlad created
Line 1: Line 1:
 +===== PyCharm =====
 +
 +==== Práce ve vývojovém prostředí PyCharm ====
 +
 +Doposud jsme psali programy v textovém editoru Gedit a následně jsme je pouštěli z terminálového okna. Tento proces lze zjednodušit a zrychlit použitím vývojového prostředí PyCharm. To také nabízí řadu dalších užitečných nástrojů. Prostředí spustíte zadáním následujícího příkazu do terminálu.
 +
 +<​code>​
 +charm
 +</​code>​
 +
 +Poté se vám zobrazí úvodní okno. Po kliknutí na možnost "​Create New Project"​ se zobrazí okno dotazující se na adresář, ve kterém chcete projekt vytvořit. Vyberte adresář "​Programovani"​. V levé liště se vám zobrazí všechny programy uložené ve složce "​Programovani"​. Dvojklikem na vybraný soubor ho otevřete k editaci.
 +
 +Nový program vytvoříte výběrem "​File"​ > "​New..."​ v horním menu a následným výběrem možnosti "​Python File". Po zadání jména se program vytvoří.
 +
 +Pokud chcete program spustit, klikněte pravým tlačítkem myši na soubor v levé liště a vyberte "​Run"​. Poté můžete tento program spouštět kliknutím na zelený trojúhelník v pravé části horní lišty. Po spuštění programu ​ se ve spodní části obrazovky zobrazí konzolové okno, které je obdobou terminálového okna operačního systému. V tomto okně se tedy zobrazují i výpisy funkce print, případně do něj uživatel zadává vstupní hodnoty pro funkce input a raw_input.
 +
 +==== Ladění (debugování) programu ====
 +
 +Při psaní složitějších programů je téměř nemožné vyhnout se chybám. Ty mohou způsobit, že program nebude fungovat správně (spočítá nesprávný výsledek), případně může dojít k situaci, kdy program "​spadne"​. Hledání takových chyb pouhým pozorováním napsaného kódu může být (nejen časově) velmi vyčerpávající. K efektivnímu hledání chyb nabízí PyCharm možnost debugování,​ která umožňuje pozastavení programu, zobrazení aktuálních hodnot proměnných a následné spuštění zbytku programu.
 +
 +----
 +
 +=== Příklad 1 ===
 +
 +Vytvořte program "​prohod_cisla"​ a vložte do něj následující kód.
 +
 +<code Python>
 +a = 5
 +b = 10
 +
 +a = b
 +b = a
 +
 +print("​a = " + str(a))
 +print("​b = " + str(b))
 +</​code>​
 +
 +Již podle názvu je zřejmé, že se od programu očekává, že prohodí hodnoty v proměnných "​a"​ a "​b"​. Po spuštění ale program vypíše chybný výsledek. Chybu jste jistě hned nalezli, nicméně se na chvíli tvařme, jako že nevíme, v čem je problém. ​
 +
 +Nejprve musíme do kódu vložit tzv. breakpointy,​ kterými označíme místa, kde chceme program pozastavit. Breakpoint do kódu vložíte kliknutím vedle čísla řádku. Stejným způsobem můžete breakpoint odstranit. Řádky s vloženými breakpointy jsou zvýrazněny červeně.
 +
 +Vložte do vašeho kódu breakpoint na první řádek, viz následující obrázek.
 +
 +{{ :​courses:​pri-bootcamp:​obr_breakpoint.png |}}
 +
 +Nyní spusťe debugování kliknutím na ikonku zeleného brouka v pravé části horní lišty.
 +
 +{{ :​courses:​pri-bootcamp:​obr_debug.png |}}
 +
 +Program se spustí a pozastaví hned na prvním řádku, resp. program se pozastaví před vykonáním příkazu na tomto řádku. Výběrem "​Run"​ > "Step Over" v horním menu (případně stiskem kláves F8) se tento příkaz vykoná a program se pozastaví na dalším řádku. Takto můžeme krok za krokem projít celým kódem (proto se tomuto způsobu hledání chyb říká také krokování). V dolní části obrazovky je na místě konzolového okna zobrazeno okno "​Variables",​ ve kterém jsou zobrazeny všechny používané proměnné s jejich aktuální hodnotou.
 +
 +Pokud takto dojdeme ke čtvrtému řádku, zjistíme, že po jeho vykonání je v obou proměnných "​a"​ i "​b"​ hodnota 10. Původní hodnotu proměnné "​a"​ jsme tedy ztratili, protože příkaz na řádku čtyři ji nahradil hodnotou "​b"​.
 +
 +Nyní když jsme chybu nalezli, můžeme vykonat zbytek programu volbou "​Run"​ > "​Resume Program"​ (případně stiskem klávesy F9). Pokud by program takto narazil na další breakpoint, opět by se pozastavil.
 +
 +----
 +
 +=== Příklad 2 ===
 +
 +Vytvořte nyní nový program s názvem "​fce_faktorial"​ a vložte do něj následující kód.
 +
 +<code Python>
 +def faktorial(n):​
 +    f = 1
 +    for i in range(1, n):
 +        f = f*i
 +    return f
 +
 +n = input("​Zadejte prirozene cislo nebo nulu: ")
 +x = faktorial(n)
 +print("​Faktorial zadaneho cisla je")
 +print(x)
 +</​code>​
 +
 +Po spuštění programu zjistíme, že nevypočítá správnou hodnotu faktoriálu a je v něm tedy chyba. Vložte breakpoint na řádek, kde se načítá hodnota do proměnné "​n"​. Při debugování je nutné k vykonání tohoto příkazu přepnout spodní okno na konzoli, zadat vstupní hodnotu a následně přepnout okno zpět na debuger.
 +
 +Při použití možnosti "Step Over" na dalším řádku zjistíte, že program vykoná celou funkci faktorial najednou jako jeden příkaz. To je očekávané a správné chování, nicméně by v tuto chvíli bylo užitečné krokovat i funkci faktorial. Toho docílíme vložením breakpointu do těla (dovnitř) funkce. Další možností je použití volby "​Run"​ > "Step Into" (případně stiskem klávesy F7), která při debugování vstoupí do uživatelem definovaných funkcí.
 +
 +Nálezt chybu ve výše uvedém programu pro vás jistě nebude problém. ​
 +
 +----
 +
 +=== Shrnutí ===
 +
 +Při hledání chyb nejprve vložte na požadovaná místa v programu breakpointy. Po spuštění debugování použijte následující možnosti
 +
 +  * Step Into (F7)
 +  * Step Over (F8) 
 +  * Resume Program (F9)
 +
 +Samozřejmě ne vždycky je nutné uchýlit se k ladění. V případě kratších programů je často jednoduší a rychlejší zkontrolovat kód bez ladění.
  
courses/pri-bootcamp/pycharm.txt · Last modified: 2019/07/22 13:29 by seredlad