Alapozás. Scriptek, scriptnyelvek. Dinamikus és statikus típusrendszerek. Miért érdemes használni? Perl

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

Operációs rendszerek gyakorlat

Reguláris vagy szabályos kifejezések

Operációs rendszerek. 9. gyakorlat. BASH recap, reguláris kifejezések UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

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

Operációs rendszerek. 9. gyakorlat. Reguláris kifejezések - alapok, BASH UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Reguláris kifejezések 1.

8. Laboratóriumi gyakorlat: Bevezetés a reguláris kifejezések használatába

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

Kedvenc Ingyenes editorok avagy milyen a programozó jobbkeze? PSPAD editor DEVPHP IDE

C# Nyelvi Elemei. Tóth Zsolt. Miskolci Egyetem. Tóth Zsolt (Miskolci Egyetem) C# Nyelvi Elemei / 18

AWK programozás Bevezetés

A Python programozási nyelv

Reguláris kifejezések

Imperatív programozás

Szkriptnyelvek. 1. UNIX shell

Flex tutorial. Dévai Gergely

8. Laboratóriumi gyakorlat: Bevezetés a reguláris kifejezések használatába

A sed folyamszerkesztő

Operációs rendszerek 2 3. alkalom - Reguláris kifejezések, grep, sed. Windisch Gergely windisch.gergely@nik.uni-obuda.hu

BASH SCRIPT SHELL JEGYZETEK

Reguláris vagy szabályos kifejezések használata

Reguláris vagy szabályos kifejezések

A szemantikus elemzés helye. A szemantikus elemzés feladatai. A szemantikus elemzés feladatai. Deklarációk és láthatósági szabályok

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

15. Programok fordítása és végrehajtása

Adatbázis-kezelő rendszerek. dr. Siki Zoltán

Az alábbi kód egy JSON objektumot definiál, amiből az adtokat JavaScript segítségével a weboldal tartalmába ágyazzuk.

2018, Diszkrét matematika

C programozás. 1 óra Bevezetés

Adatbázisok I A relációs algebra

Adatbázisok. 8. gyakorlat. SQL: CREATE TABLE, aktualizálás (INSERT, UPDATE, DELETE), SELECT október október 26. Adatbázisok 1 / 17

Adatbázis rendszerek. dr. Siki Zoltán

Webes alkalmazások fejlesztése

Podoski Péter és Zabb László

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

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

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

A sed folyamszerkesztő

Programok értelmezése

Java és web programozás

A Python programozási nyelv

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 11. Széchenyi István Egyetem, Gy r

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

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.

Fordítóprogramok (A,C,T szakirány) Feladatgy jtemény

1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3

Informatika 1. Informatika el adás. Kovács Kristóf, Pálovics Róbert. Budapesti M szaki Egyetem november 5.

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

8. Laboratóriumi gyakorlat: Bevezetés a reguláris kifejezések használatába

Adatbázisok. 9. gyakorlat SQL: SELECT október október 26. Adatbázisok 1 / 14

II. év. Adatbázisok és számítógépek programozása

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

További vezérlő valamint számításokat megkönnyítő szerkezetek

Programozás I gyakorlat

Programozás C++ -ban 2007/1

Java I. A Java programozási nyelv

Programozás I gyakorlat

Operációs rendszerek 1.

Széchenyi István Szakképző Iskola

Programozás I gyakorlat

PYTHON. Avagy hosszú az út a BioPythonig

Objektum orientáltság alapjai A Java nyelv Fordítás - futtatás

XML technikák II Kovács, László

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

Fordított és szkript nyelvek összehasonlító elemzése. Sergyán Szabolcs

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

Halmazok. Halmazelméleti lapfogalmak, hatványhalmaz, halmazm veletek, halmazm veletek azonosságai.

Oktatási segédlet 2014

KOMPUTER-ALGEBRA RENDSZEREK VERIFIKÁCIÓJA

HTML és CSS. Horváth Árpád május 6. Óbudai Egyetem Alba Regia M szaki Kar (AMK) Székesfehérvár

Miért van szükség fordítóprogramokra? Fordítóprogramok célja és szerkezete. Miért van szükség fordítóprogramokra?

Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft

Adatbázis használata PHP-ből

Bevezetés a programozásba I.

BEVEZETÉS Az objektum fogalma

Operációs rendszerek. 10. gyakorlat. AWK - bevezetés UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Web-fejlesztés NGM_IN002_1

Szoftvertechnológia alapjai Java előadások

FUNKCIONÁLIS PROGRAMOZÁS

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

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

Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás

Programzás I gyakorlat

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r

PHP alapjai, bevezetés. Vincze Dávid Miskolci Egyetem, IIT

sallang avagy Fordítótervezés dióhéjban Sallai Gyula

HTML. Ismerkedés a JavaScripttel. A JavaScript lehet ségei. A JavaScript kód helye. Önálló JavaScript fájlok

C++ programok fordítása

Delphi programozás I.

Programozás alapjai. 5. előadás

Miért ASP.NET? Egyszerű webes alkalmazás fejlesztése. Történet ASP ASP.NET. Működés. Készítette: Simon Nándor

Ingrid Signo Felhasználói kézikönyv. Pénztári használatra

Törley Gábor PROGRAMOZÁSI NYELVEK, KÖRNYEZETEK KIFEJEZŐEREJÉNEK VIZSGÁLATA

Komputeralgebra Rendszerek

Adatszerkezetek Hasító táblák. Dr. Iványi Péter

Operációs rendszerek gyak.

1. Mi a fejállományok szerepe C és C++ nyelvben és hogyan használjuk őket? 2. Milyen alapvető változókat használhatunk a C és C++ nyelvben?

Szkriptnyelvek II. Perl programok

Programozás III CSOMAGOK. Az összetartozó osztályok és interfészek egy csomagba (package) kerülnek.

Átírás:

Alapozás Scriptnyelvek jellemz i és összevetése statikus típusrendszer nyelvekkel Példák scriptnyelvekre Adatszerkezetek Reguláris kifejezések alapjai Scriptek, scriptnyelvek Mit nevezhetünk scriptnek? Egy egyszer szövegfile-t, melynek tartalma egy program, mely valamely értelmezett nyelven íródott, a program terjesztése a forrás terjesztését jelenti. Sok értelmezett nyelvet szokás scriptnyelvnek nevezni. Akár funkcionális nyelveket is, mint pl. Scheme, LISP. Mi imperatív nyelvekkel foglalkozunk. 1 2 Miért érdemes használni? gyors alkalmazásfejlesztés kritikus részek megírhatók C/C++ nyelven rövidebb és érthet bb kód élmény a programozás :-) Dinamikus és statikus típusrendszerek értelmezett nyelvek korlátozott deklaráció gyors indulás nem, vagy gyengén típusos nyelvek gyorsabb alkalmazásfejlesztés automatikus memóriakezelés fordított nyelvek deklaráció fontos lassú fordítás általában er sen típusos nyelvek biztonságosság a típusellen rzés által manuális vagy automatikus memóriakezelés 3 4 Dinamikus és statikus típusrendszerek alapfilozófia: bízzunk a programozóban, tudja, hogy mit akar az er források jelent sége kisebb (memória, CPU-id ) Perl, Python, Ruby, stb. alapfilozófia: a programozó hibát hibára halmozhat esetleg fontos az optimális er forráshasználat C++, Ada, Java, Eiffel, stb. Perl hello_name.pl Larry Wall 1987-ben adta ki az els verziót Nagy felhasználói és fejleszt i tábora van Rengeteg modul egy központi szerveren Flexibilis nyelv Fejl désének története nyomonkövethet a nyelv tulajdonságain TIMTOWTDI (There is more than one way to do it) Érdekes az objektum-orientáltság a nyelvben wc.pl 5 6

Ruby comment_logging.rb Python Dog.py game.py Japán eredet objektum-orientált scriptnyelv Megfontoltan tervezett nyelv Érdekes nyelvi konstrukciók TIMTOWTDI Perl-programozók találhatnak bizonyos hasonlóságokat Következetesen objektum-orientált Nagyon elterjedt és kedvelt nyelv el nyös tulajdonságokkal Objektum-orientált Egyszer, TIOOWTDI Tisztább nyelv, mint a Perl Érdekessége, hogy a blokkokat nem kell semmivel elhatárolni ({}, begin..end), hanem egy blokkot az indentáció mélysége határoz meg 7 8 example.php example.js PHP PHP: Hypertext Preprocessor nagyon elterjedt webes programozási nyelv Perl-hez nagyon hasonló HTML és forráskód keverése JavaScript böngész kben való turkálásra használható platform: a böngész nehéz cross-platform kódot írni vele 9 10 Icon, Unicon Célvezérelt kifejezések Nincsenek utasítások, minden kifejezés Egy kifejezés visszaadhat 0 vagy több eredményt every e1 do e2; pl. másodfokú egyenlet valós megoldásai (0,1,2) Unicon: az Icon objektum-orientált kiterjesztése TCL Tool Command Language John Ousterhout fejlesztette ki Népszer, egyszer fogalmakból építkez nyelv Tcl/Tk: egy grafikus könyvtár, amelyhez nagyon sok nyelvben van valamiféle wrapper Különös szintaxis command arg1 arg2 arg3 11 12

TCL példák set hello Hello World! set sum [expr 1 + 2] if {$sum < 10} { puts sum too low } for {set i 0} {$i < 5} {incr i} { puts $i } Egyéb nyelvek REXX: nagygépes scriptnyelv http://www- 306.ibm.com/software/awdtools/rexx/language/ Lua: egy egyszer ragasztónyelv elastic: C-szer szintaxissal rendelkez nyelv És még sokan mások... 13 14 Típusok Scriptnyelvekben általában el forduló típusok általános leírása Sztringek Automatikusan méretváltoztató sztringek Bizonyos nyelvekben,,interpoláció'' Például Perlben, TCL-ben, stb. ($s, $n) = ('alma', 2); print qq{ez $n láda $s\n}; 15 16 Numerikus típusok Gyakran beépített típussal tetsz legesen nagy egész számok is kezelhet k Esetleg lehet automatikus konverzió típusok között Általában egyfajta valós típus van 17 Listák!!"$#%'&"( )+* "("$#-,./0 ) + 21 34/65"789 9"(;: * &+4</3'"="$#=4 * "$>'? 2@ 5& &A! $ ) CB++/ DFEFCB /G & ) * # ) E!B H#I04J"D#=48B+ 2@ ) CK H'&'L $5'"$#$ 0"D Kicserélhetünk egy részlistát Beszúrhatunk listát Összef zhetünk listákat Erejük megmutatkozik szövegfeldolgozási feladatoknál Elemeik sokfélék lehetnek 18

Hash Modern nyelvek tartalmazzák ezt az adattípust Szótár, asszociatív tömb, hasítótáblák Kulcs-érték párokat tartalmaz Egy érték lehet egy bonyolultabb adatszerkezet is Végig-iterálhatunk az egész adatszerkezeten, a sorrend ilyenkor nemdefiniált Reguláris kifejezések ^regexp\.org$ 19 20 Reguláris kifejezések Reguláris kifejezések mondatok egy halmazának tömör leírását teszik lehet vé Hasonló a célja a shell wildcardoknak is (*,?), de ez annál jóval rugalmasabb A Perl egyfajta mérce lett a témában POSIX 1003.2, regex(7) Basic (ed): nincs, +,?, stb. Extended (egrep) Perl Regex: alapfogalmak Reguláris kifejezés Regular Expression, re, RE, regexp, regex Mondatok egy halmazát írja le Pl. /körte/ Mintára illeszkedés Egy sztring illeszkedik, ha eleme a fenti halmaznak. /körte/-re illeszkedik minden olyan mondat (sztring), ami tartalmazza a körte szót (pl. körtepálinka, vilmoskörte, villanykörte) 21 22 Regex: metakarakterek '.': pontosan egy tetsz leges karakterre illeszkedik '^': sor eleje '$': sor vége ' ': alternatíva '{}', '*', '+', '?': ismétlések '[]': karakter osztályok '()': csoportosítás '\': escape Regex: karakterek illesztése /.ör.e/ körte, törpe, görbe, gödörbe, körtelé /^.ör.e/ körte törpe görbe körtelé /^.ör.e$/ körte törpe görbe 23 24

Regex: alternatívák /alfa béta/ alfa, béta, analfabéta '()' használható csoportosításra /Ott (van volt) egy alma/ Ott van egy alma Ott volt egy alma Regex: karakterosztályok /Ka[rj]ak/ Karak, Kajak /[0123456789ABCDEFabcdef]/ Hexadecimális számjegy /[0-9A-Fa-f]/ és /[0-9a-f]/i ekvivalens a fentivel ^ karakterrel illeszked karakterek halmazának komplementerét kell megadni /[^c]ici/ pici illeszkedik A n i testrész nem illeszkedik :) 25 26 Regex: el re definiált karakterosztályok POSIX: [:class:] [:digit:]: számjegyek [:alnum:]: alfanumerikus karakterek [:alpha:]: szókarakterek [:space:]: fehér szóközök stb. Perl: \<char> \d: számjegyek \w: alfanumerikus karakterek + _ \s: fehér szóközök stb. Regex: illesztés szóhatárra 0 hosszúságú illeszkedés! POSIX 1003.2 szabvány szerint: [:<:] : szó eleje [:>:] : szó vége Egrep: \<, \> : szó eleje, vége \b: szóhatár \B: nem szóhatár /óra\>/ karóra, tanóra illeszkedik óraszám nem illeszkedik /óra\b/ ugyanígy viselkedik 27 28 Regex: ismétlések '*': tetsz leges számú ismétl dés /a*/ '', a, aa, aaa, aaaa,... '+': legalább egy el fordulás /b+/ b, bb, bbb, bbbb, bbbbb,... '?': 0 vagy 1 el fordulás /\.html?/.htm,.html Regex: ismétlések '{n,m}': legalább n-szer és legfeljebb m-szer illeszkedik /[[:digit:]]{2,4}/: '04', '2004' '{n}': pontosan n-szer illeszkedik /[[:digit:]]{4}/: '2004' '{n,}': legalább n-szer illeszkedik /[1-9][[:digit:]]{3,}/: legalább négyjegy (decimális) számok 29 30

Regex: csoportosítások '()' között csoportosított karakterek visszahivatkozhatók a \1, \2, stb. hivatkozásokkal A '()' karakterek gyakran \ karaktert kívánnak, ha metakarakterként akarjuk használni ket Csere során nagyon hasznos (sed példa): s/^\([[:digit:]]*\)-\(.*\)$/track \1 has title \2 / '01-Title of the first track' -> 'Track 01 has title Title of the first track ' Regex: mp3 tagelés példa Az el z példában megadott formátumú file. A következ shell paranccsal regexpek segítségével könnyedén megtaggelhetjük az mp3 fileokat: IFS='' for line in `sed 's/^\([[:digit:]]*\)-\(.*\) $/mp3info -a Artist -l Album -t \2 -n \1 Track-\1.mp3/' <mp3info.txt`; do eval $line; done 31 32 Regex: alkalmazások grep, egrep: megfelel sorok kisz rése Szövegszerkesztés közben keresés Szövegszerkesztés közben csere Az el z példához hasonló shell kifejezések egyszeri alkalmakra Programozás során a szövegfeldolgozásban nagy segítséget nyújt Nem való XML illetve HTML források elemzésére Regex: információforrások info sed grep(1), regex(7) Vim: help pattern http://www.perldoc.com/perl5.8.0/pod/perlre.ht ml http://www.python.org/doc/howto/ Programming Ruby... 33 34 Regex: példák SELECT id, date, name, code, amount, color, weight, width, height FROM name_code_mappings m s/\</m./g s/\s*\(\w\+\)\(,\?\)\n\?/\tsum(\1) AS \1\2\r/g a g kapcsoló globális cserét eredményez, azaz minden el fordulást cserélni fog Regex: példák természetes számok: /^[[:digit:]]+$/ egész számok /^-?[[:digit:]]+$/ # +3-ra nem jó /^[+-]?[[:digit:]]+$/ 35 36