Script nyelvek előadás

Slides:



Advertisements
Hasonló előadás
Szerver oldali programozás
Advertisements

Operációs rendszerek gyakorlat 10. Gyakorlat Vakulya Gergely.
3. előadás (2005. március 1.) Utasítások, tömbök
JavaScript.
© Kozsik Tamás Beágyazott osztályok A blokkstrukturáltság támogatása –Eddig: egymásba ágyazható blokk utasítások Osztálydefiníciók is egymásba.
Bevezetés a Java programozásba
7. előadás (2005. április 12.) Láncolt lista File kezelés 1.
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
Fájlkezelés, IO Kivételkezelés Belső osztályok
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 9. Gyakorlat Alap file műveletek.
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Táblázatkezelés alapjai MS Excel, OpenOffice Calc
A CLIPS keretrendszer CLIPS "C" Language Integration Production System.
Függvények, mutatók Csernoch Mária.
A C++ programozási nyelvSoós Sándor 1/15 C++ programozási nyelv Gyakorlat hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
Operációs rendszerek gyakorlat
WEB Technológiák Dr. Pance Miklós – Kolcza Gábor Miskolci Egyetem.
C# tagfüggvények.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Operációs rendszerek gyakorlat sed, awk parancsok.
Vizuális és web programozás II.
Kivételkezelés a C++ nyelvben Bevezetés
Bevezetés a C++ programozási nyelvbe
Operációs rendszerek gyakorlat 2. Gyakorlat Vakulya Gergely.
PHP I. Alapok. Mi a PHP? PHP Hypertext Preprocessor Szkriptnyelv –Egyszerű, gyors fejlesztés –Nincs fordítás (csak értelmező) Alkalmazási lehetőségek:
PHP III. Fájlok, űrlapok.
P ROGRAMOZÁS C# - BAN Kivételkezelés. P ÉLDA I. Nullával való osztás miatt kapjuk a hibaüzenetet.
Táblázatkezelés alapjai MS Excel, OpenOffice Calc
Táblázatkezelés alapjai MS Excel, OpenOffice Calc
Összetett adattípusok
Funkcionális programozás 2. gyakorlat
Grafikus tervezőrendszerek programozása 11. előadás.
Szoftvertechnológia alapjai Java előadások Förhécz András, doktorandusz tárgy honlap:
2012. tavaszi félév Vitéz Gergely. A diasor ismerete nem helyettesíti a tankönyvet, és a példatárat. A diasor ismerete szükséges, de nem elégséges feltétele.
Operátorok Értékadások
1 Operációs rendszerek I, 3. gyakorlat Windisch Gergely
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
Készítette: Lipp Marcell
Készítette: Száraz Richárd. - Yukihiro Matsumoto tervezte meg 1995-ben - Célja egy emberközpontú OOP programozási nyelv megalkotása volt, amely egyszerű.
Készítette Enyedi Tamás
Brute Force algoritmus
Java programozási nyelv Vezérlési szerkezetek
Java programozási nyelv Filekezelés
Java programozási nyelv Metódusok
Java programozási nyelv Adatbekérés konzolról
Power Lutár Patrícia Pellek Krisztián.  -ltLess than  -leLess than or equal to  -gtGreater than  -geGreater than or equal to  -eqEqual to  -neNot.
Programozás III KIVÉTEL.
Operációs rendszerek gyakorlat sed parancsok.
Programozás III KIVÉTEL. KIVÉTELKEZELÉS Hibátlan program nincs!!! eddig hiba esetén leállt a program. Példa ilyen hibákra: ─ ArrayBoundsOfException (tömb.
TÁMOP /1-2F Informatikai gyakorlatok 11. évfolyam Kivételek kezelése, ellenőrzött adatbevitel Czigléczky Gábor 2009.
Függvények, mutatók Csernoch Mária. Függvények függvény definíciója az értelmezési tartomány tetszőleges eleméhez hozzárendel egy értéket –függvény helyettesítési.
Quick-Search algoritmus. Bevezet ő Az eljárás működése során két esetet különböztetünk meg: A szöveg minta utáni első karaktere nem fordul elő a mintában.
Készítette: Kiss András
Script nyelvek előadás
Script nyelvek előadás
Script nyelvek előadás
Script nyelvek előadás
Script nyelvek előadás
Total commander.
Script nyelvek előadás
Script nyelvek előadás
Programozás C# -ban Elágazások.
A CLIPS keretrendszer
Programozási nyelvek alapfogalmai
Function group, service call
Script nyelvek előadás
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Informatikai gyakorlatok 11. évfolyam
Informatikai gyakorlatok 11. évfolyam
Előadás másolata:

Script nyelvek előadás - reguláris kifejezések - kivételkezelés

Reguláris kifejezések re modul használata (import re) - ”.” -- egy darab bármilyen karakter, kivéve '\n' ha a re.DOTALL (re.S) flag be van állítva '\n' is lehet Illeszkedés vizsgálat (a szöveg elejétől): - re.match(minta, szöveg, flag-ek) - re.match("a.m.", "almafa") == <_sre.SRE_Match object at ...> - re.match("a.m.", "alm\nfa") == None - re.match("a.m.", "alm\nfa", re.DOTALL)

Reguláris kifejezések Minta többszöri használata: - re.compile(minta, flag-ek) - r = re.compile("a.m.", re.S) -- <_sre.SRE_Pattern object at ...> - r.match("alm\nfa") == <_sre.SRE_Match object at ...> Megjegyzés: illesztés, nem keresés re.match("f.", "almafa") == None

Reguláris kifejezések Minta keresése a szövegben: - re.search(minta, szöveg, flag-ek) - re.search("f.", "almafa") == <_sre.SRE_Match object at ...> - re.search("f.", "almaf\n", re.S)

Reguláris kifejezések Eredmény felhasználása: - m = re.match("a.m.", "almafa") - m.group() == alma - m.start() == 0 - m.end() == 4 - m.span() == (0, 4) - m = re.search("f.", "almafa") - m.group() == fa - m..span() == (4, 6)

Reguláris kifejezések Összes illeszkedés: - re.findall("a.", "almafa") == ['al', 'af'] Iterálás: - it = re.finditer("a.", "almafa") - for m in it: print m.span() (0, 2) (3, 5) ⇨

Reguláris kifejezések Szétvágás: - re.split(";.", "Peter;;Miklos; Janos;:Pal") == ['Peter', 'Miklos', 'Janos', 'Pal'] - re.split("(;.)", "Peter;;Miklos; Janos;:Pal") == ['Peter', ';;', 'Miklos', '; ', 'Janos', ';:', 'Pal'] - re.split(";.", "Peter;;Miklos; Janos;:Pal",2) == ['Peter', 'Miklos', 'Janos;:Pal'] - re.split("-.", "Peter;;Miklos; Janos;:Pal") == ['Peter;;Miklos; Janos;:Pal']

Reguláris kifejezések - '*' -- a megelőző minta 0 vagy több ismétlődésére illeszkedik (maximális hosszúságban) - '+' -- a megelőző minta 1 vagy több ismétlődésére illeszkedik - '?' -- a megelőző minta 0 vagy 1 ismétlődésére illeszkedik - '*?' -- a megelőző minta 0 vagy több ismétlődésére illeszkedik (minimális hosszúságban) - '+?' -- a megelőző minta 1 vagy több ismétlődésére illeszkedik

Reguláris kifejezések - m = re.match("a.*a", "almafa") - m.group() == 'almafa' - m = re.match("a.*?a", "almafa") - m.group() == 'alma' - m = re.match("1(2.)+", "1242445") - m.group() == '12424' - m = re.match("1(2.)+?", "1242445") - m.group() == '124' - m = re.match("1(2.)*?", "1242445") - m.group() == '1'

Reguláris kifejezések - '{n}' -- a megelőző minta n db ismétlődésére illeszkedik - '{m,n}' -- a megelőző minta m és n közötti ismétlődésére illeszkedik (maximális hosszban) - '{m,n}?' -- a megelőző minta m és n közötti ismétlődésére illeszkedik (minimális hosszban)

Reguláris kifejezések - m = re.match("1(2.){1,4}", "1242445") - m.group() == '12424' - m = re.match("1(2.){1,4}?", "1242445") - m.group() == '124' - m = re.match("1(2.){2}", "12425345") - m.group() == '12425'

Reguláris kifejezések - '^' -- a szöveg elejére illeszkedik - '$' -- a szöveg végére illeszkedik - m = re.match(".+?a$","almafa") - m.group() == 'almafa' - re.findall("^a.","almafaalatt") == ['al'] Megjegyzés: a szöveg elejéről keres... - m = re.search(".*?a$","almafa") - m.group() == 'almafa'

Reguláris kifejezések Példaprogramok - regexp1.py

Reguláris kifejezések - '[ ]' -- karakterek halmazát jelöli - '[^ ]' -- komplementer halmaz - '\d' -- digitális karakterek [0-9] - '\D' -- nem digitális karakterek [^0-9] - '\w' -- alfanumerikus karakterek [a-zA-Z0-9_] - '\W' -- nem alfanumerikus karakterek [^a-zA-Z0-9_] - '\s' -- whitespace karakterek - '\S' -- nem whitespace karakterek

Reguláris kifejezések - m = re.search('[\d\-]+', "Kis Péter kisp@email.com +36-24-345-567") - m.group() == '36-24-345-567' - m = re.search('[^\w\s]+', "Kis Peter kisp@email.com +36-24-345-567") - m.group() == '@' - m = re.search('[^\w\s]+', "Kis Péter kisp@email.com +36-24-345-567") - m.group() == '\xc3\xa9' Megjegyzés: - 'é' == '\xc3\xa9'

Reguláris kifejezések - 'minta1|minta2|...|mintan' -- választás, balról jobbra értékeli ki - re.findall('a\w*|A\w*|Á\w*|á\w*', "alma Ákos körte Antal árpa Béla") == ['alma', '\xc3\x81kos', 'Antal', '\xc3\xa1rpa', 'a'] - m = re.search('\d+|[\d\-\+]+', "Kis Péter András tel: 06-1-234-5678") - m.group() == '06'

Reguláris kifejezések - '( )' -- csoportosítás, balról jobbra, kívülről befelé sorszámozva - m = re.match('[\w\s]+ email:((.+)@.+)\stel:\s([\d\-\+]*)', "Nagy Endre email:enagy@elte.hu tel: +36-1-234-5674") - m.group() == m.group(0) == 'Nagy Endre email:enagy@elte.hu tel: +36-1-234-5674' - m.group(1) == 'enagy@elte.hu' - m.group(2) == 'enagy' - m.group(3) == '+36-1-234-5674' - m.groups() == ('enagy@elte.hu', 'enagy', '+36-1-234-5674')

Reguláris kifejezések - '\szám' -- adott sorszámú csoportra hivatkozik - m = re.match(r'(\d+\.) .*\1: (\d+ pont)', "1. Nagy Tamás, 2. Kis Péter; 1.: 20 pont, 2.: 18 pont") - m.group(2) == '20 pont' Megjegyzés: „raw text” - 'valami\1' == 'valami\x01' - r'valami\1' == 'valami\\1'

Reguláris kifejezések - '(?P<név> )' -- névvel ellátott csoport létrehozása - '(?P=név)' -- az adott nevű csoportra illeszkedő minta - m=re.match('(?P<helyezes>\d+\.) .*(?P=helyezes): (\d+ pont)', "1. Nagy Tamás, 2. Kis Péter; 1.: 20 pont, 2.: 18 pont") - m.group(2) == '20 pont' - m.group('helyezes') == '1.'

Reguláris kifejezések - Csoportra hivatkozás helyettesítésben - re.sub("<H1>(.*)</H1>", r"\1", "<H1>title</H1>") == 'title' - re.sub("<H1>(?P<t>.*)</H1>", "\g<t>", "<H1>title</H1>")

Reguláris kifejezések Példaprogramok - regexp2.py - regexp3.py

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

Kivételkezelés Példaprogram - exception1.py

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 - hiba kiváltása - raise NameError("Hiba leiras") - 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 - saját hiba létrehozása - class MyError(Exception): pass - try: raise MyError(23) except MyError as x: print "Sajat hiba, kod:", x

Kivételkezelés - saját hiba létrehozása - class MyError2(Exception): def __init__(self, value): self.value = value def __str__(self): return "Kettes sajat hiba a kovetkezo koddal:" + str(self.value) - try: raise MyError2(23) except MyError2 as e: print e