Informatika2-2015/Eloadas 2 Python-2 Rekurzio es Ciklus

A MathWikiből
(Változatok közti eltérés)
(Előadás első fele)
1. sor: 1. sor:
 +
Bemutatkozás:
 +
* Eisenberger András
 +
* Hívjatok Csirkének
 +
* email: [mailto:csirkeee@gmail.com csirkeee@gmail.com]
 +
 
=Python ismétlés=
 
=Python ismétlés=
  
Aki nem 2014-ben hallgatta az Info1-et és úgy érzi lemaradása van, hivatalos (angol) Python tanító anyag: [http://docs.python.org/2.7/tutorial/ Python tutorial].
+
Aki nem 2014-ben hallgatta az Info1-et és úgy érzi lemaradása van, azok részére elérhetőek
 +
* Az előző félév előadásainak anyagai: [[Informatika1-2014/eloadas3]], [[Informatika1-2014/eloadas4]]
 +
* Vagy akár a hivatalos (angol) Python tanító anyag: [http://docs.python.org/2.7/tutorial/ Python tutorial].
 +
 
 +
Mai órán még kb. elég az [[Informatika1-2014/eloadas3|eloadas3]] anyaga, ami kell az függvények definiálása, elágazások.
 +
 
 +
==Függvényhívás példa==
 +
 
 +
Python-ban a kódban bárhol definiálható függvény a kódban, a <code>def</code> kulcsszóval. Egyelőre most arról az esetről beszélünk csak, amikor a fájl gyökerében van definiálva, nem másik függvényen belül.
 +
 
 +
<wikiframe width="800" height="500" frameborder="1" src="http://pythontutor.com/iframe-embed.html#code=def+negyzet(k)%3A%0A++++return+k*k%0A%0Adef+negyzetel(l)%3A%0A++++for+i+in+range(len(l))%3A%0A++++++++l%5Bi%5D+%3D+negyzet(l%5Bi%5D)%0A++++return+l%0A++++%0Aszamok+%3D+%5B2,+3,+4%5D%0Aprint+negyzetel(szamok)&origin=opt-frontend.js&cumulative=false&heapPrimitives=false&drawParentPointers=false&textReferences=false&showOnlyOutputs=false&py=2&rawInputLstJSON=%5B%5D&curInstr=0&codeDivWidth=350&codeDivHeight=400"/>
 +
 
 +
Amit érdemes megfigyelni, hogy amikor a <code>negyzetel()</code> függvény meghívja a <code>negyzet()</code> függvényt (pl. Step 8-nál), amíg a <code>negyzet()</code> fut, a <code>negyzetel()</code> még nem ért véget, csak fel lett függesztve azon a ponton, ahol vár a <code>negyzet()</code> visszatérési értékére, majd onnan folytatódik.
 +
 
 +
=Ciklus vagy rekurzió=
 +
 
 +
==Faktoriális kiszámolása==
 +
'''Ciklus:'''
 +
 
 +
<wikiframe  width="800" height="500" frameborder="1" src="http://pythontutor.com/iframe-embed.html#code=def+fakt_ciklus(n)%3A%0A++++fakt+%3D+1%0A++++i+%3D+1%0A++++while+i+%3C%3D+n%3A%0A++++++++fakt+%3D+i+*+fakt%0A++++++++i+%3D+i+%2B+1%0A++++return+fakt%0A%0Aprint+fakt_ciklus(5)&origin=opt-frontend.js&cumulative=false&heapPrimitives=false&drawParentPointers=false&textReferences=false&showOnlyOutputs=false&py=2&rawInputLstJSON=%5B%5D&curInstr=0&codeDivWidth=350&codeDivHeight=400"/>
 +
 
 +
A ciklus kódjának végére érve bizonyos feltétel mellett visszaugrunk a ciklus kódjának elejére, de bizonyos elérhető változók értéke megváltozott.
 +
 
 +
'''Rekurzió:'''
 +
 
 +
<wikiframe width="800" height="500" frameborder="1" src="http://pythontutor.com/iframe-embed.html#code=def+fakt_rekurziv(n)%3A%0A++++if+n+%3D%3D+1%3A%0A++++++++return+1%0A++++else%3A%0A++++++++return+n+*+fakt_rekurziv(n-1)%0A%0Aprint+fakt_rekurziv(5)&origin=opt-frontend.js&cumulative=false&heapPrimitives=false&drawParentPointers=false&textReferences=false&showOnlyOutputs=false&py=2&rawInputLstJSON=%5B%5D&curInstr=0&codeDivWidth=350&codeDivHeight=400"/>
 +
 
 +
Ebben az esetben a függvény végén bizonyos feltétel mellett visszaugrom a függvény kódjának elejére (meghívom a függvényt), de bizonyos elérhető változók (a függvény paraméterei) értéke megváltozott.
 +
 
 +
Ennél a példánál láthatóak a hasonlóságok a kettő között, de mik a különbségek?
 +
 
 +
==Ciklus előnyei==
 +
 
 +
==Rekurzió előnyei==

A lap 2015. február 3., 17:38-kori változata

Bemutatkozás:

Tartalomjegyzék

Python ismétlés

Aki nem 2014-ben hallgatta az Info1-et és úgy érzi lemaradása van, azok részére elérhetőek

Mai órán még kb. elég az eloadas3 anyaga, ami kell az függvények definiálása, elágazások.

Függvényhívás példa

Python-ban a kódban bárhol definiálható függvény a kódban, a def kulcsszóval. Egyelőre most arról az esetről beszélünk csak, amikor a fájl gyökerében van definiálva, nem másik függvényen belül.

Amit érdemes megfigyelni, hogy amikor a negyzetel() függvény meghívja a negyzet() függvényt (pl. Step 8-nál), amíg a negyzet() fut, a negyzetel() még nem ért véget, csak fel lett függesztve azon a ponton, ahol vár a negyzet() visszatérési értékére, majd onnan folytatódik.

Ciklus vagy rekurzió

Faktoriális kiszámolása

Ciklus:

A ciklus kódjának végére érve bizonyos feltétel mellett visszaugrunk a ciklus kódjának elejére, de bizonyos elérhető változók értéke megváltozott.

Rekurzió:

Ebben az esetben a függvény végén bizonyos feltétel mellett visszaugrom a függvény kódjának elejére (meghívom a függvényt), de bizonyos elérhető változók (a függvény paraméterei) értéke megváltozott.

Ennél a példánál láthatóak a hasonlóságok a kettő között, de mik a különbségek?

Ciklus előnyei

Rekurzió előnyei

Személyes eszközök