Warning
This page is located in archive. Go to the latest version of this course pages.

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.

charm

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.

a = 5
b = 10
 
a = b
b = a
 
print("a = " + str(a))
print("b = " + str(b))

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.

Nyní spusťe debugování kliknutím na ikonku zeleného brouka v pravé části horní lišty.

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.

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)

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