Logické výrazy, aneb co je pravda a co lež - pokračování
V tomto díle dokončíme přehled jednoduchých příkazů a následně se zaměříme na příkazy strukturované.
Break
Příkaz break ukončí vykonávání cyklu, v němž je použit, a předá řízení na řádek následující po tomto cyklu:
>>> for i in range(0, 9):
... if i > 4:
... break
... print "i:", i
...
i: 0
i: 1
i: 2
i: 3
i: 4
Continue
Příkaz continue ukončí vykonávání těla cyklu a předá řízení na začátek cyklu, pro další kolo iterace:
>>> for i in range(0, 5):
... if i == 2:
... print 'Dvojku vynechame'
... continue
... print "i:", i
...
i: 0
i: 1
Dvojku vynechame
i: 3
i: 4
Del
Příkaz del vymaže proměnnou:
>>> a = [1, 2, 3]
>>> print a
[1, 2, 3]
>>>
>>> del a
>>> print a
Traceback (innermost last):
File "<console>", line 1, in ?
NameError: a
>>>
>>> a = [1,2,3,4]
>>> del a[2]
>>> print a
[1, 2, 4]
Pass
Příkaz pass nezpůsobuje žádnou akci. Používá se v případech, kdy syntaxe jazyka vyžaduje, aby zdrojový kód obsahoval nějaký příkaz, ale současně není žádoucí, aby se cokoli vykonalo.
>>> #definice prazdne funkce, ktera vubec nic nedela, jen je
>>> def dummy():
... pass
...
>>>
>>> #definice prazdne tridy
>>> class EmptyClass:
... pass
...
>>>
Print
Příkaz print vyhodnotí výraz, který obdrží jako parametr, konvertuje jej na řetězec a zapíše jej na standardní výstup.
print [vyraz]
Výstup je možné též přesměrovat do instance datového typu Jython file.
print >> instanceTypuSoubor, vyraz
>>> print "Hello world!!!"
Hello world!!!
Return
Příkaz return ukončí vykonávání metody nebo funkce a vrátí hodnotu vyhodnoceného výrazu, který je možné zadat jako parametr. Pokud žádný výraz v příkazu return uveden není, vratí se None.
Syntaxe:
return [vyraz]
>>> def mojeFce():
... return 'vrati tento retezec'
...
>>> mojeFce()
'vrati tento retezec'
Strukturované příkazy
Strukturované příkazy mají tu vlastnost, že logická řádka může zabírat i více fyzických řádek. Většinou se jedná o jazykové konstrukce jako jsou cykly či větvení.
Blok
Jython má poněkud nestandardní přístup k definování počátku a konce bloku kódu. Neexistuje žádný explicitně definovaný znak, jako např. složené závorky v Javě, určený pro tento účel.
Bloky kódu (funkce, větvení if, cykly for, ....) jsou definovány jejich zarovnáním. To znamená, že všechny mezery (přesněji řečeno bílé znaky, jako mezery, tabulátory atd.) jsou při zápisu kódu podstatné a mají svůj význam. Musejí být používány konzistentně.
Jedním z přínosů tohoto způsobu zápisu programového kódu je, že všechny programy v Jythonu vypadají podobně. Způsoby zarovnání nejsou již věcí stylu programátora, ale jsou vynuceny definicí jazyka.
Pravidla pro zarovnávaní programového kódu jsou následující:
- První řádek souboru musí začínat v nejlevějším sloupci.
- Každý příkaz v bloku musí začínat v témže sloupci.
- Každé z klíčových slov (
class,def,for/else,if/elif/else,try/except/else,try/finaly,while/else) označuje začátek nového bloku. - Nový blok musí být zarovnán doprava alespoň o jednu mezeru vůči konci předchozímu bloku. Standardně se zarovnává doprava o čtyři mezery, nebo o jeden tabulátor.
Výše uvedená pravidla mohou znít nesrozumitelně, níže uvedený příklad tato pravidla názorně osvětlí:
for x in (1,2,3):
print x #zarovnani oznacujici zacatek noveho bloku
for y in (10, 20, 30):
if y > 10: #zarovnani oznacujici zacatek noveho bloku
print y #zarovnani oznacujici zacatek noveho bloku
print x*y #zarovnani do leva oznacujici konec predchoziho bloku
#dalsi prikaz by mohl pokracovat zde jako soucast vnitrniho cyklu
#nebo zde, jako soucast vnejsiho cyklu
#nebo zde, jako samostatny prikaz, nepatrici do tela cyklu
Po řádce obsahující klíčové slovo interpret příkazů občas z důvodu konzistence vyžaduje novou zarovnanou řádku. V případě, že nechceme, aby se cokoliv na této vykonalo, je možné použít příkaz pass.
def prazdnaFunkce():
pass
Podmíněný příkaz
Podmíněný příkaz má v Jythonu syntaxi:
if logicky_vyraz:
blok
elif logicky_vyraz:
blok
else:
blok
Klausule elif je nepovinná a může se v příkazu vyskytovat libovolněkrát. Klausule else je taktéž nepovinná.
Mechanismus určující, ke kterému příkazu if se váže koncové else, závisí na zarovnání. V níže uvedeném příkladu se else váže k if na nejvyšší úrovni:
>>> x, y, z = 10, 20, 30
>>> if x == 3:
... if y == 20:
... if z == 35:
... pass
... else:
... print x
Cykly
Jython obsahuje dvě konstrukce pro cykly. Obecný cyklus while a cyklus for, určený pro zpracovávání sekvencí.
While cyklus
Cyklus while ma následující syntaxi:
while logicky_vyraz:
blok
else:
blok
Tělo cyklu bude vykonáváno tak dlouho, dokud bude mít logicky_vyraz hodnotu pravda. Vnitřní blok cyklu může obsahovat příkaz continue. Tento příkaz předá řízení zpět na začátek cyklu. Do vnitřního bloku cyklu je možné vložit i příkaz break, který ukončí vykonávaní vnitřního těla cyklu.
Klausule else, je nepovinná. Blok následující za tímto klíčovým slovem se vykonává právě jednou, pokud cyklus skončí normálně, tj. pokud bude mít logicky_vyraz hodnotu nepravda. Pokud je cyklus ukončen příkazem break, blok za příkazem else se nevykoná.
V Jythonu není možné napsat konstrukci, jakou znáte třeba z Javy,
while((c = char()) == -1) {
System.out.println(c);
}a to z toho důvodu, že přiřazení nevrací hodnotu, jako v Javě. V Jythonu místo toho použijeme obrat:
while 1:
prirazovaci prikaz
if test:
break
zbytek bloku
www.amaio.com