Informatika2-2015/Eloadas 2 Python-2 Rekurzio es Ciklus
a (Informatika2-2015/Előadás 1 Python-1 Rekurzió és Ciklus lapot átneveztem Informatika2-2015/Eloadas 1 Python-1 Rekurzio es Ciklus névre: Mégse legyen ékezet) |
(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:
- Eisenberger András
- Hívjatok Csirkének
- email: csirkeee@gmail.com
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
- 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: Python tutorial.
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?