Documente Academic
Documente Profesional
Documente Cultură
I
would
suggest
that
programming
languages,
which
rely
upon
discrete
primitives can be described as Aristotelian.
Ex: C, C++, PASCAL.
The reason for this is that both of these
languages build larger abstractions based
upon fundamental primitives such as int,
float, char, etc.
Ex: an array of chars makes a string rather
than having a string object which represents
a line of text (or many lines depending).
11
12
13
16
17
19
Object-oriented
is
a
programming
paradigm using "objects" usually instances
of a class consisting of data fields and
methods together with their interactions to
design applications and computer programs.
Programming
techniques
may
include
features
such
as
data
abstraction,
encapsulation,
messaging,
modularity,
polymorphism, and inheritance
20
21
22
Exemple:
23
24
Gramatica :
Unde:
VN
S
S
P
G = (VN, S, S, P )
- multimea de neterminale
- multimea de terminale,
- simbolul initial (de start), S VN
- reguli de productie
Regula de productie :
este un element de forma
-> , V +, V *,
si siruri de terminale si neterminale de lungime
finita ( trebuie sa contina cel putin un neterminal)
V = VN U S se numete alfabetul gramaticii
25
Exemplu:
VN = {subiect, predicat},
S = {Ana, Ion, nva, doarme, ., },
S = propoziie
P : propoziie -> subiect predicat.
subiect
-> Ana | Ion
predicat -> nva | doarme
26
Convenie de notaie:
literele mici de la inceputul alfabetului latin
(a,b,c,...) reprezinta elemente din S (simboli
terminali);
literele mici de la sfirsitul alfabetului latin (u, v, x,...)
reprezinta elemente din S* (siruri de simboli
terminali);
literele mari de la inceputul alfabetului latin (A, B,
C,...) reprezinta elemente din VN (simboli neterminali);
literele mari de la sfirsitul alfabetului latin (U, V,
X,...) reprezinta elemente din VN U S (simboli terminali
sau neterminali);
literele alfabetului grecesc reprezinta siruri din (VN U
S)* (siruri de simboli terminali si neterminali).
27
29
30
Exemplu:
Propoziie
S
Atr
P
C
verb Atr
Verb C
Subst
Adject
Adverb
32
xy => xy
<=> -> P
33
Forma propozitionala :
orice sir V * cu proprietatea S =*>
Propozitie :
orice sir x S* cu proprietatea S =+> x
Tipuri de derivare :
* derivare stanga - in fiecare forma propozitionala
se inlocuieste neterminalul cel mai din stanga
* derivare dreapta- in fiecare forma propozitionala
se inlocuieste neterminalul cel mai din dreapta
34
Tipuri de recursivitate :
35
36
L0
Clasificare :
Limbaje * naturale
L1
L2
* formale (artificiale)
Limbaje * independente de context
* liniare
L3
* regulate
L0 - clasa limbajelor generate din gramatica Chomsky,
L1 - clasa limbajelor dependente de context,
L2 - clasa limbajelor independente de context,
L3 - clasa limbajelor regulate
37
39
42
43
Aciune
utilizator
oprit
pornit
Aciune
utilizator
M = (S, Q, F, q0, f)
unde
S - alfabetul limbajului de intrare al automatului,
Q - multimea finita de stari a automatului,
F - multimea strilor finale ale automatului (FQ),
q0 -stare initiala, q0Q,
f - functia de tranzitie f: QS -> Q.
Configuratie: este numit un dublet (x, q ) , unde x este
sirul de la intrare neanalizat inca; x S* ,iar q Q.
45
q0
1
1
Alfabet S = {0, 1}
Stri Q = {q0, q1, q2}
Starea iniial q0
Stri finale F = {q0, q1}
q1
0,1
0
q2
Tabela de tranziie:
intrri
stri
q0
*q1
q2
0
q0
q2
q2
1
q1
q1
q2
47
<=> f(q, a) = q1
48
, qF
Limbajul acceptat de M:
L(M) = {x S* | f *(q0 , x) F }
unde f se extinde la f* astfel
f* (q, ) = q
49
Stare
initiala
f (q0, a) = q2
q0
f (q0, b) = q1
f (q1, a) = q3
f (q1, b) = q0
f (q2, a) = q0
f (q2, b) = q3
f (q3, a) = q1
f (q3, b) = q2
q1
a
a
q2
a
a
q
q33
50
51
0,1
f (q1, 1) = {q1, q3 }
q1
f (q2, 0) = {q2 , q4 }
f (q2, 1) = q2
f (q3, 0) =
f (q3, 1) = q3
f (q4, 0) =
f (q4, 1) =
0
0,1
q2
q3
q4
Graful de stari
52
Teorema:
Pentru
fiecare
automat
finit
nedeterminist M, exista un automat finit
determinist M echivalent, adica L(M) = L(M).
M(S, Q, F, q0, f)
M(S, Q, F, q0, f )
53
Stri
AFN
AFD
q0, q1, , qn
Starea iniial q0
f
Tranziii
Stri finale
q0}
f({qi1,,qik}, a) = f(qi1, a)
f(qik, a)
FQ
0, 1
AFN:
q0
q1
q2
AFD:
{q0}
0, 1
{q0, q1}
0
{q0, q2}
{q1}
1
0
0
1
{q2}
{q1, q2}
55
Aplicaie facultativ:
Implementarea ntr-un limbaj de programare
oarecare a unei aplicaii care s automatizeze
procesul de deducere a AFD echivalent pentru un
AFN dat.
Intrare: Pentru AFN se vor da, prin intermediul unui
fiier de intrare, alfabetul, mulimea strilor, starea
iniial, mulimea strilor finale, tabelul de definiie
a funciei de tranziie
Ieire: Elementele de definiie ale AFD echivalent i
desenarea grafului de tranziie dup eliminarea
strilor i tranziiilor moarte.
56
57
58
59
1
1
0
E
61
Aplicaie facultativ:
Implementarea ntr-un limbaj de programare
oarecare a unei aplicaii care s automatizeze
procesul de construire a AFN echivalent pentru un
AF- dat.
Intrare: Pentru AF- se vor da, prin intermediul
unui fiier de intrare, alfabetul, mulimea strilor,
starea iniial, mulimea strilor finale, tabelul de
definiie a funciei de tranziie
Ieire: Elementele de definiie ale AFN echivalent i
desenarea grafului de tranziie.
62
0
q0
1
1
q1
0,1
0
q2
63
Aplicaie facultativ:
Implementarea ntr-un limbaj de programare oarecare a unei
aplicaii care s deduc gramatica formal echivalent pentru
un AFD dat.
Intrare: Pentru AFD se vor da, prin intermediul unui fiier de
intrare, alfabetul, mulimea strilor, starea iniial, mulimea
strilor finale, tabelul de definiie a funciei de tranziie
Ieire: Elementele de definiie ale gramaticii formale
echivalente.
Observaii:
64
65
67
69
Text:
abc anaconda ant
Regex: a\w\w\s
Matches: abc anaconda ant
Spaiu alb este definit ca fiind caracterul spaiu
(\0x0020), new line (\n), form feed (\f), carriage
return (\r), tab (\t) i vertical tab (\v).
70
71
Text:
abc pen nda uml
Regex: .[a-d].
Matches: abc pen nda uml
Text:
abc no 0aa i8i
Regex: [a-z0-9]\w\w
Matches: abc no 0aa i8i
72
Text:
Anna Jones and Anne owned an anaconda
Regex: an{2}
Matches: Anna Jones and Anne owned an anaconda
Text:
Anna and Anne lunched with an anaconda annnnnex
Regex: an{2,3}
Matches: Anna and Anne lunched with an anaconda annnnnex
73
74
Pentru operatorii ?,*,+ se va lua secvena cea mai mare de caractere care
se potrivete subexpresiei din care fac parte, i care permite i restului
codului surs s fie analizat.
Dac pentru o subexpresie R1|R2 se potrivete o aceeai secven de
caractere, atunci se va lua n considerare R1.
75
76
77
Aplicaie facultativ:
Implementarea ntr-un limbaj de programare oarecare a unei
aplicaii care s construiasc AFD care accept acelai limbaj
ca i o expresie regulat dat.
Intrare: Expresia regulat.
Ieire:
1. Elementele de definiie ale AF epsilon
echivalent:
alfabetul, mulimea strilor, starea iniial, mulimea
strilor finale, graful de tranziie.
2. Codul care implementeaz funcionarea AFD echivalent
pentru AF epsilon de mai sus.
78
pomii din rai poi s mnnci, Iar din pomul cunotinei binelui i
rului s nu mnnci, cci, n ziua n care vei mnca din el, vei muri
negreit! (Geneza, 2:16-17)
79
81
http://news.softpedia.com/news/TheMetaphysics-of-Object-Oriented-Programming24906.shtml
http://www.perlmonks.org/?node_id=349593
http://en.wikipedia.org/wiki/Programming_paradig
m
http://www.scribd.com/doc/22056333/Limbajeformale-%C5%9Fi-automate
http://www.radsoftware.com.au/articles/regexlear
nsyntax.aspx
http://www.radsoftware.com.au/regexdesigner/
Umberto Eco, Limbajul Pmntului Austral, De la
arbore la labirint, edit. POLIROM, 2009.
85