Sunteți pe pagina 1din 7

MMSM I  Laborator #2

4. ELEMENTE DE PROGRAMARE

4.1. Construct
, ia if
if conditie :
blocul de instructiuni 1
,

blocul de instructiuni 2
,

execut  blocul de instructiuni 1 (care trebuie indentat) urmat de blocul de instructiuni 2 dac 
, ,

conditie întoarce T rue. Dac  conditie întoarce F alse, se execut  doar blocul de instructiuni ,

2 si restul programului. În cazul în care blocul de instructiuni 2 lipseste se continu  restul


, , ,

programului. Constructia if poate  urmat  de una sau mai multe constructii elif (prescurtarea
, ,

de la ”elseif ”)
elif conditie :
blocul de instructiuni 1
,

care se comport  în aceeasi manier  ca si constructia if . Clauza else


, , ,

else :
blocul de instructiuni 1
,

se foloseste pentru a executa blocul de instructiuni 1 în cazul în care nici una din clauzele if −elif
, ,

nu sunt adev rate.
Forma general  a constructiei if − elif − else
,

if conditie 1 :
blocul de instructiuni 1
,

elif conditie 2 :
blocul de instructiuni 2
,

elif conditie 3 :
pass
else :
blocul de instructiuni 3
,

blocul de instructiuni 4
,

În cazul în care nu se doreste a se executa un anumit bloc de intructiuni acesta se va înlocui cu


, ,

comanda pass.
4.2. Construct
, ia f or
f or contor in element iterabil :
blocul de instructiuni 1
,

1
Variabila contor ia valori rând pe rând din elementul iterabil. elementul iterabil poate  orice
m rime ordonat , cum ar  o list , un tuplu, un dictionar, un sir de numere generat de functia , , ,

range, etc.
4.3. Instruct
, iunea continue

f or contor in element iterabil :


blocul de instructiuni 1
if conditie 1 :
continue
blocul de instructiuni 2
blocul de instructiuni 3

La ecare iteratie a buclei f or se execut  blocul de instructiuni 1. Dac  conditie 1 este T rue
, ,

se trece la urm toarea iteratie. În cazul în care conditie 1 devine F alse se execut  blocul de
,

instructiuni 2 . Dup  terminarea buclei f or se execut  blocul de instructiuni 3.


, ,

Urm toarea secvent  va selecta toate numerele de la 1 la 99 divizibile la 7.


,

Exemplul #1
1 x = [] #C r e e a z   o list   goal  

2 for i in range (1 ,100) :

3 if i %7 != 0: # Testeaz   dac   restul î mp  r µ i r i i la 7 este diferit de zero

4 continue # Dac   nu este divizibil cu 7 se trece la urm  t o a r e a itera µ ie f r  a

se executa restul corpului buclei for

5 x . append ( i ) # Adaug   num  r u l divizibil cu 7 la lista

6 print (x)

4.4. Instruct
, iunea break apelat  în bucla f or

f or contor in element iterabil :


blocul de instructiuni 1 ,

if conditie 1 :
break
blocul de instructiuni 2 ,

else :
blocul de instructiuni 3 ,

blocul de instructiuni 4 ,

Clauza else poate  folosit  imediat dup  bucla f or (la acelasi nivel) dac  bucla f or este însotit  , ,

de instructiunea break . blocul de instructiuni 3 este executat dac  si numai dac  conditie 1 nu
, , ,

a luat valoare T rue la nici o iteratie a buclei f or astfel c  nu s-a ajuns la executia instructiunii
, , ,

break . Dac  conditie 1 returneaz  T rue se iese din bucla f or si se trece la executia blocului de , ,

instructiuni 4.
,

Exemplul #2 Urm toarea secvent  de instructiuni veric  dac  un num r este prim sau nu.
, ,

1 y=37

2 for x in range (2 , y ) :

2
3 if y%x == 0:

4 print ( y, " nu este prim " )

5 break

6 else :

7 print ( y, " este prim . " )

4.5. Construct
, ia while
while conditie:
blocul de instructiuni 1 ,

blocul de instructiuni 2
execut  blocul de instructiuni 1 dac  conditie returneaz  T rue. Dup  ce corpul de instructiuni
, ,

a fost executat conditie este vericat  din nou. Procesul continu  pân  când conditie devine
F alse. Se continu  cu executia blocului de intructiuni 2. , ,

Exemplul #3 Mai jos avem un exemplu care va rula la innit dac  nu se intervine din exterior.
Executia se opreste prin combinatia de taste ctrl + C .
, , ,

1 while True :

2 p r i n t ( " Apasa Ctrl = C pentru a opri bucla infinita " )

Obs.: Ca si în cazul buclei f or, r mân valabile clauzele else, continue si break având aceeasi
, , ,

sintax .
5. FUNCT
, II

O functie Python poate  denit  oriunde în program înainte de a  efectiv folosit . Sintaxa
,

unei functii este: ,

def nume(argumente) :
corpul functiei
return variabile

Exemplul #4 Urm toarea secvent  calculeaz  suma a dou  numere si returneaz  suma lor.
, ,

1 def suma ( a , b ) :

2 c = a ** 2 + b

3 return c

4 p r i n t ( suma ( 1 , 2 ) )

Dac  apelul functiei se face prin valorile parametrilor, atunci rezultatul depinde de ordinea
,

scrierii acestora. Dac  îns  functia este apelat  atât cu numele parametrilor cat si cu valorile
, ,

acestora, atunci ordinea numai conteaz , programul stie s  le atribuie corect. ,

1 p r i n t ( suma ( b = 3, a = 4) )

În cazul în care vrem s  atribuim unui parametru o valoare implicit , în lista de parametri ai
functiei vom atribui parametrului valoarea corespunzatoare, folosind operatorul de atribuire. La
,

apel parametrul cu valoare imlicit  poate  omis.

3
1 def a r i a _ c e r c (R, p i = 3.14) :

2 aria = pi * R ** 2
3 p r i n t ( f ' Aria cercului de raza {R} este : ' , aria )

4 aria_cerc (3)

Dac  dorim s  redenim parametrul pi cu o valoare mai exact , la apelul functiei în lista cu ,

argumente putem deni noua valoare.


1 aria_cerc (3 , pi = 3 . 1 4 1 5 9 )# În acest caz Python ignor   valoarea veche a lui pi

În cazul în care nu stim apriori câte argumente vor  transmise functiei, putem adauga ∗ înainte ,

de parametru. Astfel, functia va primi un tuplu de argumente si va avea acces la valorile acestuia.
, ,

1 def suma_n ( * a) :

2 n = len (a)

3 s = 0

4 for i in range (6) :

5 s = s + a[ i ]

6 print ( s )

7 print (a)

8 suma_n ( 1 , 2 , 3 , 4 , 5 , 6 )

Dac  se doreste a se folosi la un loc parametrii obligatorii si cu cei arbitrari, atunci acestia din
, , ,

urm  se scriu la nal.


1 def Parametri_oblig_arbit (a , *b) :
2 print (b) #Tu pl u de argumente

3 s = 0

4 for i in range ( len (b) ) :

5 s = s + b[ i ]

6 s = s + a

7 print ( s )

8 Parametri_oblig_arbit (7 ,1 ,2 ,3) #P r i m u l argument corespunde parametrului a ,

iar restul valorilor sunt atribuite .

10

Primul argument corespunde parametrului a, iar restul valorilor sunt atribuite tuplului de argu-
mente b.
Dac  expresia unei functii este simpl  o vom deni folosind sintaxa lambda.
,

f unc nume = lambda param1, param2,... : expresia

1 c = lambda x,y : x ** 2 + y ** 2
2 print ( c (3 ,4) )

5. CALCUL SIMBOLIC

Calculul simbolic este folosit pentru manipularea si evaluarea expresiilor algebrice. Variabilele ,

independente care apar în expresii sunt denite simbolic folosind caractere sau siruri de caractere. ,

4
1 import sympy as sp # Modulul sympy necesar calculului simbolic .

Variabilele simbolice se pot folosi în mai multe moduri, folosind una dintre variantele: sm.Symbol,
sp.symbols si sp.var. ,

Este foarte important s  se dea cât mai multe informatii despre natura variabilelor simbolice. ,

Acest lucru va ajuta Python s  manipuleze si s  simplice mai ecient expresiile analitice.
,

1 x = s p . Symbol ( " x " ) #D e c l a r a r e a variabilei simbolice x, despre care nu se ³ tie dac

  este sau nu real  

2 y = s p . Symbol ( " y " , r e a l =T r u e ) #D e c l a r a r e a unei variabile despe care se ³ tie c 

este real  

3 z = s p . Symbol ( " z " , i m a g i n a r y=T r u e ) #D e c l a r a r e a unei variabile simbolice complexe

Alte tipuri de restrictii pe care le suport  variabile simbolice si cuvintele cheie cu care se veric 
, ,

tipul lor.
Tipul variabilei simbolice Atributul prin care se veric  tipul variabilei simbolice
real is real
imaginary is imaginary
positive is positive
negative is negative
integer is integer
odd is odd (se refera doar la intregi)
even is even (se refera doar la intregi)
prime is prime (se refera doar la intregi)
1 x = s p . Symbol ( " x " )

2 y = s p . Symbol ( " y " , p o s i t i v e =T r u e )

3 sp . p p r i n t ( sp . s q r t ( x ** 2) )

4 sp . p p r i n t ( sp . s q r t ( y ** 2) )#A extras r   dacina p  t r a t   µ i n â nd cont de faptul c 

aceasta este pozitiv  

Functia sp.pprint (pretty print) aseaz  expresiile simbolice într-o form  cât mai natural ,
, ,

aproape de scrierea matematic .


1 n1 = s p . Symbol ( " n " )

2 n2 = s p . Symbol ( " n " , i n t e g e r =T r u e )

3 n3 = s p . Symbol ( " n " , odd=T r u e )

4 print ( f ' cos (n pi ) este { s p . c o s ( n1 * pi )} daca n nu este specificat ')

5 print ( f ' cos (n pi ) este { s p . c o s ( n2 * pi )} daca n este intreg ' )

6 print ( f ' cos (n pi ) este { s p . c o s ( n3 * pi )} daca n intreg si par ' )

Reprezentarea numerelor rat


, ionale

1 a , b, c = sympy . s y m b o l s ( " a , b, c" , real = True ) #D e c l a r a r e a simultan   a mai

multor variabile simbolice

2 p r i n t ( syp . R a t i o n a l ( 1 , 2 ) ) #R e p r e z e n t a r e a numerelor ra µ i o n a l e

Operat
, ii cu numere rat
, ionale

1 r1 = sp . R a t i o n a l ( 2 , 3)

2 r2 = sp . R a t i o n a l ( 4 , 5)

3 exp = r1 * r2 + r2 / r1

5
4 sp . p p r i n t ( exp )

Constante s
, i simboluri speciale

1 sp . p p r i n t ( sp . p i ) #C o n s t a n t a pi

2 sp . p p r i n t ( sp . E) #C o n s t a n t a Euler

3 sp . p p r i n t ( sp . oo ) #I n f i n i t

Functii simbolice

1 x, y, z = sympy . s y m b o l s ( " x , y , z " )

2 f = sp . Function ( " f " ) #D e f i n i r e a unei functii abstracte fara a se cunoaste in

prealabil , nici variabilele si nici expresia acesteia

3 type ( f )

4 #A c e a s t a functie poate fi apelata cu una , dou   sau mai multe variabile dac  

acestea au fost declarate simbolic .

5 f (x)

6 f (x , y)

7 f (x , y , z )

1 g = sp . Function ( "g" ) ( x , y, z) #D e c l a r a r e a unei func µ i i pentru care se cunosc

variabilele

2 g #A p e l u l se face cu numele functiei fara a se preciza variabilele

3 g . free_symbols #s e a f i ³ eaza mul µ i m e a variabilelor functiei g

1 #D e f i n i r e a functiilor carora se cunosc expresiile acestora

2 # Sintaxa : nume_fun = s p . Lambda ( a r g u m e n t , e x p r e s i e )

3 h = s p . Lambda ( x , x ** 2)

4 print (h(3) ) #E v a l u a r e a functiei h in 3

5 p r i n t ( h (1+ x ) )#E v a l u a r e a functiei intr =o expresie simbolica

Expresiile s
, i manipularea acestora

1 x = s p . Symbol ( " x " )

2 expr = 1 + 2 * x ** 2 + 3 * x ** 3
3 sp . p p r i n t ( expr )

5 #S i m p l i f i c a r e a unei expresii cu sympy . s i m p l i f y

6 expr = 2 * (x ** 2 = x) = x * (x + 1)

7 sp . p p r i n t ( expr )

8 sp . p p r i n t ( sp . s i m p l i f y ( expr ) )

10 #D e s f a c e r e a parantezelor unei expresii

11 expr = (x + 1) * (x + 2)

12 sp . p p r i n t ( sp . expand ( e x p r ) )

13

14 # Scrierea expresiei ca produs de factori primi

15 sp . p p r i n t ( sp . f a c t o r ( x ** 2 = 1) )

16

17 # collect () rescrie expresia sub forma unui polinom dupa variabila precizata

18 expr = x + y + x * y * z + x ** 2 * y

19 sp . p p r i n t e ( xpr . c o l l e c t ( x ) )

20 sp . p p r i n t e ( xpr . c o l l e c t ( y ) )

21

22 #D e s c o m p u n e r e a in fractii simple = sp . a p a r t ( E x p r e s i e , x )

23 sp . a p a r t ( 1 / ( x ** 2 + 3 *x + 2) , x)

24

6
25 #A d u c e r e a la numitor comun

26 sp . t o g e t h e r (1 / (y * x + y) + 1 / (1 + x) )

27 s p . t o g e t h e r ( sympy . R a t i o n a l ( 2 , 3 ) , sympy . R a t i o n a l ( 4 , 6) )

28

29 #S i m p l i f i c a r e a unei fractii

30 sp . c a n c e l ( y / (y * x + y) )

S-ar putea să vă placă și