Imperatív programozás

Hasonló dokumentumok
Imperatív programozás

Imperatív programozás

Informatika terméktervezőknek

Ismerkedés a Python programnyelvvel. és annak micropython változatával

Python I. Vincze Dávid Miskolci Egyetem, IIT

Python tanfolyam Python bevezető I. rész

PYTHON. Avagy hosszú az út a BioPythonig

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Python bevezető foglalkozás Python bevezető foglalkozás

Objektum Orientált Programozás. 11. Kivételkezelés 44/1B IT MAN

Internet programozása. 3. előadás

A C# programozási nyelv alapjai

Objektumorientált programozás Pál László. Sapientia EMTE, Csíkszereda, 2014/2015

2018, Diszkrét matematika

BASH script programozás II. Vezérlési szerkezetek

Gyakorló feladatok Gyakorló feladatok

Komputeralgebra Rendszerek

Java programozási nyelv

Szoftvertechnológia alapjai Java előadások

Kivételkezelés, beágyazott osztályok. Nyolcadik gyakorlat

AWK programozás, minták, vezérlési szerkezetek

Vezérlési szerkezetek Vezérlési szerkezetek: feltételes elágazás és ciklusok

A programozás alapjai

Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE

AWK programozás, minták, vezérlési szerkezetek

Programozási nyelvek JAVA EA+GY 1. gyakolat

Függvények Függvények

A Python programozási nyelv

Funkcionális és logikai programozás. { Márton Gyöngyvér, 2012} { Sapientia, Erdélyi Magyar Tudományegyetem }

Vezérlési szerkezetek

Programozás C nyelven (3. ELŐADÁS) Sapientia EMTE

6. fejezet: Ciklusok

Szkriptnyelvek. 1. UNIX shell

Kivételek kezelése (exception handling) Hibakezelés old style. Kivételkezelés

A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.

Funkcionális Nyelvek 2 (MSc)

Matlab alapok. Baran Ágnes. Baran Ágnes Matlab alapok Elágazások, függvények 1 / 15

Alprogramok, paraméterátadás

2016, Diszkrét matematika

2016, Diszkrét matematika

PHP gyorstalpaló, avagy a Hello World-től az űrlapellenőrzésig

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

Változók és adattípusok Változók és adattípusok

1. Jelölje meg az összes igaz állítást a következők közül!

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)

S z á m í t ó g é p e s a l a p i s m e r e t e k

Programozás II. 2. Dr. Iványi Péter

Apple Swift kurzus 3. gyakorlat

Számítógépes Hálózatok. 7. gyakorlat

Szkriptnyelvek II. Perl programok

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Programozási nyelvek Python

A C programozási nyelv II. Utasítások. A függvény.

Az osztályok csomagokba vannak rendezve, minden csomag tetszőleges. Könyvtárhierarhiát fed: Pl.: java/util/scanner.java

Ismerkedés a Python programnyelvvel. és annak micropython változatával

Adattípusok, vezérlési szerkezetek. Informatika Szabó Adrienn szeptember 14.

Operációs Rendszerek II. labor. 2. alkalom

Bevezetés a programozásba Előadás: Objektumszintű és osztályszintű elemek, hibakezelés

Globális operátor overloading

2018, Diszkre t matematika. 10. elo ada s

Programozás I. Első ZH segédlet

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós február 18. Széchenyi István Egyetem, Gy r

S z á m í t ó g é p e s a l a p i s m e r e t e k

Java programozási nyelv 9. rész Kivételkezelés

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Haladó DBMS ismeretek 1

A Python programozási nyelv

Programozás C nyelven 5. ELŐADÁS. Sapientia EMTE

Kivételkezelés a C++ nyelvben Bevezetés

Óbudai Egyetem. C programozási nyelv

Mechatronika és mikroszámítógépek 2017/2018 I. félév. Bevezetés a C nyelvbe

Pénzügyi algoritmusok

PHP. Telepítése: Indítás/újraindítás/leállítás: Beállítások: A PHP nyelv

2018, Diszkre t matematika. 8. elo ada s

1. Egészítsük ki az alábbi Python függvényt úgy, hogy a függvény meghatározza, egy listába, az első n szám faktoriális értékét:

Kivételek, kivételkezelés a C++ nyelvben

Bevezetés a Python használatába

Helyes-e az alábbi kódrészlet? int i = 1; i = i * 3 + 1; int j; j = i + 1; Nem. Igen. Hányféleképpen lehet Javaban megjegyzést írni?

1. Bevezetés szeptember 9. BME Fizika Intézet. Szám. szim. labor ea. Tőke Csaba. Tudnivalók. feladat. Tematika. Moodle Házi feladatok

Oktatási segédlet 2014

SZERVER OLDALI JAVASCRIPT. 3. hét Javascript nyelvi elemek

Komputeralgebra rendszerek

I. ALAPALGORITMUSOK. I. Pszeudokódban beolvas n prim igaz minden i 2,gyök(n) végezd el ha n % i = 0 akkor prim hamis

A JavaScript főbb tulajdonságai

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

Webprogramozás szakkör

Mit tudunk már? Programozás alapjai C nyelv 4. gyakorlat. Legnagyobb elem keresése. Feltételes operátor (?:) Legnagyobb elem keresése (3)

Smalltalk 2. Készítette: Szabó Éva

Programozás C és C++ -ban

INFORMATIKA tétel 2019

Egészítsük ki a Drupal-t. Drupal modul fejlesztés

Programozás alapjai C nyelv 4. gyakorlat. Mit tudunk már? Feltételes operátor (?:) Típus fogalma char, int, float, double

Szoftvertervezés és -fejlesztés I.

Járműfedélzeti rendszerek II. 2. előadás Dr. Bécsi Tamás

Algoritmizálás + kódolás C++ nyelven és Pascalban

2. Rekurzió. = 2P2(n,n) 2 < 2P2(n,n) 1

Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,

2018, Diszkrét matematika

Átírás:

Imperatív programozás 7. Előadás Függvények, láthatóság (folytatás) Modulok Kivételkezelés

Beágyazott függvény def lnko(x, y): def kivon(m, n): return m - n while not (x == y) : if x > y : x = kivon(x,y) else : y = kivon(y,x) return x print(lnko(25, 100)) # print(kivon(120, 33)) --- itt nem elérhető!

Láthatóság def lnko(x, y): def ciklusmag(x, y): if x > y : x = x - y else : y = y - x return (x, y) while not (x == y) : x,y = ciklusmag(x,y) return x print(lnko(25, 100))

def lnko(): global x, y def ciklusmag(): global x, y if x > y : x = x - y else : y = y - x while not (x == y) : ciklusmag() return x x,y = 25, 100 print(lnko()) Láthatóság

def lnko(x, y): def ciklusmag(): global x, y if x > y : x = x - y else : y = y - x while not (x == y) : ciklusmag() return x x,y = 25, 100 print(lnko(x, y)) Láthatóság # ROSSZ MEGOLDÁS!!!!

def lnko(x, y): def ciklusmag(): nonlocal x, y if x > y : x = x - y else : y = y - x while not (x == y) : ciklusmag() return x x,y = 25, 100 print(lnko(x, y)) Láthatóság

Modulok program.py fuggvenyek.py def kivon(m, n): return m - n def osszead(m,n): return m + n import fuggvenyek def lnko(x, y): while not (x == y) : if x > y : x = fuggvenyek.kivon(x,y) else : y = fuggvenyek.kivon(y,x) return x print(lnko(25, 100))

Modulok program.py pelda.py def kivon(m, n): return m - n def osszead(m,n): return m + n print(osszead(23,45)) import pelda # A másik modul kiíró művelete # is végrehajtódik def lnko(x, y): while not (x == y) : if x > y : x = pelda.kivon(x,y) else : y = pelda.kivon(y,x) return x print(lnko(25, 100))

Modulok program.py pelda2.py def kivon(m, n): return m - n def osszead(m,n): return m + n if name == " main ": print(osszead(23,45)) import pelda2 # Itt nem hajtódik végre # a másik modul kiíró művelete def lnko(x, y): while not (x == y) : if x > y : x = pelda2.kivon(x,y) else : y = pelda2.kivon(y,x) return x print(lnko(25, 100))

Modulok program.py pelda3.py x = 20 def myfun(): global x print(x) def myfun2(): global y print(y) import pelda3 pelda3.myfun() # 20 pelda3.x = 100 pelda3.myfun() # 100 pelda3.y = 100 pelda3.myfun2() # 100

Modulok program.py pelda3.py x = 20 def myfun(): global x print(x) def myfun2(): global y print(y) import pelda3 z = 20 print(dir()) # [' builtins ', ' cached ', ' doc ', # ' file ', ' loader ', ' name ', # ' package ', ' spec ', 'pelda3', 'z'] print(dir(pelda3)) # [' builtins ', ' cached ', ' doc ', # ' file ', ' loader ', ' name ', # ' package ', ' spec ', 'myfun', # 'myfun2', 'x']

Modulok program.py fuggvenyek.py def kivon(m, n): return m - n def osszead(m,n): return m + n from fuggvenyek import kivon def lnko(x, y): while not (x == y) : if x > y : x = kivon(x,y) else : y = kivon(y,x) return x print(lnko(25, 100))

Modulok program.py from fuggvenyek import kivon pelda.py def kivon(m, n): return m - n def osszead(m,n): return m + n print(osszead(23,45)) # A másik modul kiíró művelete # itt is végrehajtódik def lnko(x, y): while not (x == y) : if x > y : x = kivon(x,y) else : y = kivon(y,x) return x print(lnko(25, 100))

Modulok program.py fuggvenyek.py def kivon(m, n): return m - n def osszead(m,n): return m + n from fuggvenyek import * def lnko(x, y): while not (x == y) : if x > y : x = kivon(x,y) else : y = kivon(y,x) return x print(lnko(25, 100)) print(osszead(100,222))

Modulok program.py pelda3.py x = 20 def myfun(): global x print(x) def myfun2(): global y print(y) from pelda3 import * myfun() # 20 x = 100 # "lokális" változó lesz myfun() # 20 y = 100 # "lokális" változó lesz myfun2() # NameError: name 'y' is not defined

Ciklusok kiegészítés >>> x = 0 >>> while x < 10:... print(x)... if x > 3:... break... x = x + 1... 0 1 2 3 4 >>> for x in range(12):... if x > 4 and x < 10:... continue... print(x)... 0 1 2 3 4 10 11

Ciklusok kiegészítés >>> x = 5 >>> while x < 6:... x = x + 1... else:... print(x)... 6 >>> x = 0 >>> while x < 10:... print(x)... if x > 2:... break... x = x + 1... else:... print("else ág!")... 0 1 2 3

Ciklusok kiegészítés Hátultesztelő ciklus >>> x = 23 >>> while True:... x = x + 1... print(x)... if x > 6:... break... 24

Kivételkezelés - try: belső blokk except kivétel 1 : kivételkezelés 1 except kivétel 2 : kivételkezelés 2 except: else: finally: default kivételkezelés else ág finally ág (mindenképpen végrehajtódik)

Kivételkezelés Néhány beépített hiba típus: - IndentationError - hibás indentálás (margó szabály) - IndexError - túlindexelés - IOError - I/O művelet hibája (pl. nem létező fájl) - NameError - nem létező névre (pl. változó) hivatkozás - SyntaxError - hibás szintaxis (pl. import-nál is) - TypeError - hibás paramétertípus (pl. hello + 5) - ValueError - nem megfelelő (típusú) érték - ZeroDivisionError - nullával osztás

Kivételkezelés import sys try: y = int(sys.argv[1]) except ValueError: print("nem egész szám a paraméter!") except IndexError: print("kell egy paraméter!") except (NameError, TypeError) : print("ide valószínűleg nem jutunk...") except: print("varatlan hiba!") raise else: print("ide jönne a program többi része.") finally: print("viszlat legközelebb!")

Kivételkezelés - hiba kiváltása - raise NameError("Hiba leiras") - raise NameError("Hiba", 34, 562) - hiba paraméterek kezelése - except NameError as errorobj:... - az errorobj-ba kerül a hiba objektum - errorobj.args --- a kiváltáskor megadott paraméterek

Kivételkezelés try: raise NameError("Hiba", 34, 562) except NameError as e : # e egy hiba objektum lesz print(e) # str függvény trükkje print(e.args) # az objektum argumentumai x,y,z = e.args print(x, y, z)