introducere in programare folosind python...introducere in programare folosind python curs 4...

61
SPAM Dr. Elena Ovreiu Universitatea POLITEHNICA din Bucuresti www.ovreiu.com INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON

Upload: others

Post on 06-Mar-2021

87 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

SPAM

Dr. Elena OvreiuUniversitatea POLITEHNICA din Bucurestiwww.ovreiu.com

INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON

Page 2: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

CURS 4Operanzi –Operatori –Input/Output-Structuri de decizie

Page 3: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Operatii aritmetice+ adunare- scadere* inmultire / impartire% restul impartirii** ridicare la putere // impartirea intreaga

155502.001000002

** si // sunt specifici limbajului Python

Page 4: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Operatori de atribuire1. =a = 10 (variabilei a i se atribuie valoarea 10)a = x+y (variabilei a i se atribuie suma x+y)2. +=; -=; *=, /=a+=b este echivalent cu a=a+ba-=b; a*=b; a/=b; a%=b;a//=b echivalent cu a=a//ba**=b echivalent cu a=a**b

Page 5: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Operatori de atribuire

(10, 10, 10)(10, 5)(15, 5)(75, 5)(15, 5)

Page 6: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Operatori de comparatie

1. == egalitate2. != non-egalitate3. < mai mic4. > mai mare5. <= mai mic sau egal6. >= mai mare sau egal

FalseTrueTrueFalseTrueFalse

Page 7: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Operatori logici

1. and 2. or3. not§ In expresia x and y x si y trebuie sa fie de tipul Boolean

Page 8: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Operatori logiciOperator Operand 1 (Bool)

Operator Operand 2 (Bool)

Rezultat

and True and True True

False and True False

True and False False

False and False False

or True and True True

False and True True

True and False True

False and False False

not not True False

not False True

Page 9: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Operatori logici

■ Putem combina operatorii logici cu cei de comparatie

TrueFalse

Ordinea operatiilor este: operatori de comparatie, apoi cei logici: x==10 Truey==5 TrueTrue and True = True

Page 10: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Functii de Input si Output

ConsolaApplication

UserInput

Output

Input: input()Print: print()

Page 11: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Output: print()()HelloHelloHello, SPAMHello,SPAM10, 2010/20

Parametrul sep separa variabilele a si b

Page 12: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

print()

20-2-2012 20/2/2012Hello+++SPAM

Page 13: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

print(): str%

Radu 9.23Studentul Radu are media 9.23Studentul Radu are media 9.230000

%s –string%i –integer%f - float

Page 14: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

print()

Studentul Radu are media 9.23

Studentul Radu are media 9.23

Studentul Radu are media 9.23

Page 15: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

input ()■ In Python, functia input() este folosita pentru a introduce una sau mai multe

valori in program

■ Functia input() citeste o linie introdusa pe consola de catre un dispozitiv de intrare (ex. tastatura), converteste acea linie in sir si il returneaza.

>>> s=input()

Ceea ce se introduce de la tastatura va fi salvat in variabila s sub forma de sir>>> s=input(“Introduceti un nume:”)

Introduceti un nume:

Sirul pe care functia input() il primeste ca argument va fi afisat pe ecran, inainte de a fi introdusa o valoare de la tastatura.

Page 16: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

input ()

■ Inputul functiei sunt valori introduse de user.

■ Ex. Daca dorim saadunam 2 numerepe calculator, cele 2 numere trebuie pusela dispozitieprogramului de catreuser

Page 17: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

input ()■ Indiferent ce introduceti ca input, functia input() il va converti intr-un

string

■ Daca introduceti un numar intreg, acesta va fi convertit intr-un string

■ Daca dorim sa introducem un numar de la tastatura, trebuie aplicata conversia de tip.

>>> n=input(“Introduceti un numar intreg:”)

4

>>>type(n)

<str>

Page 18: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

input ()■ Pentru a introduce un numar intreg:

>>> n=int(input(“Introduceti un numar intreg:”))

4

>>>type(n)

int

■ Pentru a introduce un numar real (float):

>>> n=float(input(“Introduceti un numar real: ”))

Page 19: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

input ()■ La fel cum introducem int, float si string, putem introduce si o lista: >>>student=input(“Introduceti numele, varsta, numarul de telefon: “)

Introduceti numele, varsta, numarul de telefon: Alex 23 076253423

>>> student

'Alex 23 074573733'

>>> type(student)

str

Page 20: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

input ()■ Pentru a transforma din string in lista, se foloseste split()>>> s=student.split()

>>> s

['Alex', '23', '074573733’]

§ Se mai poate scrie:>>>student=input("Introduceti nume, varsta, telefon: ").split()

Introduceti nume, varsta, telefon: Alex 23 074573733

>>>student

['Alex', '23', '074573733']

Page 21: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

input ()■ Daca se introduc valorile pentru nume, varsta, telefon cu virgula in loc

de spatiu:>>> Introduceti nume, varsta, telefon: Alex, 23, 074573733

>>> student

'Alex, 23, 074573733’

>>>student.split(’,’)

['Alex', ' 23', ' 074573733']

Page 22: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Structuri de decizie• Pana acum am lucrat cu programe in care secventele de

instructiuni erau executate in ordinea aparitiei.• Executia instructiunilor este un concept fundamental al

programarii, dar nu este suficient sa rezolvam oriceproblema.

• Adesea, este necesar sa se modifice fluxul secvential al unui program, pentru a rezolva anumite situatii

Page 23: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Structuri de decizie

• Acesta se face cu ajutorul unor instructiuni speciale, numitestructuri de control

• Structurile de decizie: permit unui program sa execute diferite instructiuni pentru diferite cazuri

Page 24: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Convertor Celsius Fahrenheit# convert.py

def main():

celsius = float(input("What is the Celsius temperature? "))

fahrenheit = 9/5 * celsius + 32

print("The temperature is", fahrenheit, "degrees Fahrenheit.")

• Vrem sa modificam programul, astfel incat sa afiseze o avertizare in cazul in care temperature este extrema (peste90 grade F sau mai putin de 30 grade F)

Page 25: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Convertor Celsius Fahrenheit

• Input the temperature in degrees Celsius (call it celsius)

Calculate fahrenheit as 9/5 celsius + 32

• Output fahrenheit

• If fahrenheit > 90print a heat warning

• If fahrenheit < 30print a cold warning

• Acest algoritm are 2 decizii la final: daca temperatura estemai mare de 90 grade F sau daca este mai mica.

Page 26: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Convertor Celsius FahrenheitInput Celsius Temp

fahrenheit = 9/5* celsius + 32Print fahrenheit

fahrenheit >90

fahrenheit <30

Print a heat warning

Print a cold warning

yes

no

yes

no

Page 27: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Convertor Celsius Fahrenheit# convert2.py

def main():

celsius = float(input("What is the Celsius temperature? "))

fahrenheit = 9 / 5 * celsius + 32print("The temperature is", fahrenheit, "degrees

fahrenheit.")

if fahrenheit >= 90:

print("It's really hot out there, be careful!")

if fahrenheit <= 30:

print("Brrrrr. Be sure to dress warmly")

main()

Page 28: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Structuri de decizie simple (if)

• Instructiunea if este folosita pentru a implementa decizia• if <condition>:

<body>

• Corpul instructiunii if (<body>)este format din una saumai multe instructiuni, toate alienate sub if

Page 29: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Structuri de decizie simple (if)

Executia lui if respecta urmatorii pasi: 1. Conditia <condition> este evaluata2. Daca <condition> este adevarata, instructiunile din

<body> sunt executate, dupa care controlul trece la urmatoarea instructiune din program

3. Daca <condition> este falsa, Python sare instructiuniledin <body> si trece la urmatoarea instructiune din program.

if <condition>:<body>

Page 30: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Structuri de decizie simple

• Instructiunile din <body> sunt executate sau nu, in functiede conditie

• In orice caz, corpul trece apoi la urmatoarea instructiunedupa if

• Aceasta este o decizie simpla sau one-way

Page 31: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Conditiile

• Ce este o conditie?• Acestea pot fi simple comparatii: <expr> <op> <expr>

<op> este operator

Page 32: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Python Mathematics Meaning

< < Less than

<= ≤ Less than or equal to

== = Equal to

>= ≥ Greater than or equal to

> > Greater than

!= ≠ Not equal to

Page 33: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Conditii simple• == este folosit pentru egalitate. Deoarece Python foloseste

= pentru atribuire, un alt simbol era necesar pentruconceptul de egalitate.

• O eroare frecventa este sa se foloseasca = pentru egalitate.• Conditiile pot contine atat numere cat si siruri• Atunci cand se compara siruri, odonarea este lexigrafica,

ceea ce inseamna ca sirurile sunt sortate pe baza Unicode-ului.

Page 34: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Conditii simple

• Din aceasta cauza, toate literele latine, litere mari se gasescinaintea literelor mici. (“Bbbb” este inaintea lui “aaa”)

• Conditiile se bazeaza pe expresii boolene, denumite asadupa matematicianul englez George Boole.

• Cand o expresie Booleana este evaluata, ea produce fie o valoare adevarata (True) fie una falsa (False)

• Unele limbaje de programare folosesc 0 si 1 pentru Falsesi True.

Page 35: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Conditii simple• Conditiile boolene sunt de tipul bool, iar valorile Boolene adevarat

sau fals sunt reprezentate de True sau False>>> 3 < 4True>>> 3 * 4 < 3 + 4False>>> "hello" == "hello"True>>> "Hello" < "hello”True

Page 36: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Ecuatia de gradul 2import math

def main():print(”Acest program calculeaza si afiseaza

radacinile unei ecuatii de gradul 2\n")

a,b,c = eval(input(”Introduceti coef a,b,c: "))

delta = b * b - 4 * a * cx1 = (-b + math.sqrt(delta)) / (2 * a)x2 = (-b - math.sqrt(delta)) / (2 * a)

print("\n Radacinile sunt:", x1, x2)

Page 37: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Ecuatia de gradul 2• Daca delta <0, programul se blocheaza• Daca apelam functia si introducem coeficientii 1,1, 2

obtinem :File "/Users/elenaovreiu/.spyder-py3/unecutatie.py", line 13, in main

x1= (-b+sqrt(delta))/(2*a)

ValueError: math domain error

Page 38: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Verificam daca delta >0

import math

def main():print(”Acest program calculeaza si afiseaza

radacinile unei ecuatii de gradul 2\n")

a,b,c = eval(input(”Introduceti coef a,b,c: "))

delta = b * b - 4 * a * c

if delta>=0:

x1 = (-b + math.sqrt(delta)) / (2 * a)

x2 = (-b - math.sqrt(delta)) / (2 * a)

print("\n Radacinile sunt:", x1, x2)

Page 39: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

• In cazul acesta, daca delta <0, programul nu face nimic, ceea ce e si mai rau decat sa se blocheze, deoarece nu stim ce este gresit!

• Am putea adauga un alt if la sfarsitif delta<0:

print(“Ecuatia nu are radacini reale”)

• Acest lucru este posibil, dar nu este cel mai recomandat, deoarece conditiile se exclud una pe cealalta.

Page 40: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

delta <0

print (“ecuatia nu are radacini reale” )

Calculeazaradacinile

yesno

Page 41: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Structura de decizie dubla (if-else)• In Python, o decizie dubla se implementeaza folosind

structura: if-else• if <condition>:

<statements>else:

<statements>

• Cand Python intalneste aceasta structura, prima data evalueaza conditia <condition>

Page 42: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Structura de decizie dubla (if-else)

• Daca <condition> este adevarata, sunt executateinstructiunile de sub if

• Daca este falsa, sunt executate instructiunile de sub else. • In orice situatie, instructiunile care urmeaza dupa if-else

sunt executate dupa executia unuia dintre cazuri.

Page 43: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

def main():

print(”Acest program calculeaza si afiseazaradacinile unei ecuatii de gradul 2\n")

a,b,c = eval(input(”Introduceti coef a,b,c: "))

delta = b * b - 4 * a * c

if delta>=0:

x1 = (-b + math.sqrt(delta)) / (2 * a)

x2 = (-b - math.sqrt(delta)) / (2 * a)

print("\n Radacinile sunt:", x1, x2)

else:

print("\n Ecuatia nu are radacini reale")

Page 44: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Introduceti coef a,b,c: 1,1,2

>>> Ecuatia nu are radacini reale

Introduceti coef a,b,c: 2,5,2

>> Radacinile sunt: -0.5, -2.0

Daca introducem coeficeintii 1, 2, 1Introduceti coef a,b,c: 1,2,1

>> Radacinile sunt: -1.0, -1.0

Radacinile egale apar cand delta este 0 si atunci radacinilesunt -b/2a

Page 45: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Decizii multiple

Acum avem 3 cazuri (posibilitati) pentru delta• delta <0

• delta =0

• delta >0

• Putem implementa aceste cazuri cu 2 instructiuni if-else, una in interiorul celeilalte (tehnica se numestenesting)

Page 46: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

def main():print(”Acest program calculeaza si afiseaza radacinile unei

ecuatii de gradul 2\n")

a,b,c = eval(input(”Introduceti coef a,b,c: "))

delta = b * b - 4 * a * c

if delta>0:

x1 = (-b + math.sqrt(delta)) / (2 * a)

x2 = (-b - math.sqrt(delta)) / (2 * a)

print("\n Radacinile sunt:", x1, x2)

else:

if delta==0

x=-b/2*a

else:

print("\n Ecuatia nu are radacini reale")

Page 47: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

delta <0

print (“ecuatia nu are radacini reale” )

Calculeazaradacinile

yesno

Calculeaza radacina

delta ==0

yesno

Page 48: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Decizii multiple

• Imaginati-va daca ar trebui sa luam 5 decizii. Structura if-else ar trebui folosita de 4 ori.

• Python ne ofera posibilitatea sa combinam else cu un ifcare urmeaza imediat dupa, obtinand elif

Page 49: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Decizii multipleif <condition1>:

<case1 statements>elif <condition2>:

<case2 statements>elif <condition3>:

<case3 statements>…else:

<default statements>

• Python verifica fiecare conditie pana ajunge la prima care este adevarata si executa instructiunile acelei conditii. Apoitrece la urmatoarea instructiune dupa structura if-elif-else

Page 50: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Decizii multiple

• Daca nicio conditie nu este adevarata, Python executainstructiunile lui else.

• else este optional. Daca nu exista, atunci nu se executanimic in cazul in care nicio conditie nu este adevarata.

Page 51: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

def main():

print(”Acest program calculeaza si afiseaza radacinileunei ecuatii de gradul 2\n")

a,b,c = eval(input(”Introduceti coef a,b,c: "))

delta = b * b - 4 * a * c

if delta>0:

x1 = (-b + math.sqrt(delta)) / (2 * a)

x2 = (-b - math.sqrt(delta)) / (2 * a)

print("\n Radacinile sunt:", x1, x2)

elif delta==0

x=-b/2*a

else:

print("\n Ecuatia nu are radacini reale")

Page 52: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Manipularea exceptiilor• In programul care calculeaza radacinile ecuatiei de gradul

2, folosim structuri de decizie pentru a evita calcululradicalului dintr-un numar negativ (evitand astfel o eroarede executie).

• Acest lucru este valabil pentru mai multe programe: structurile de precizie sunt folosite pentru a protejaimpotriva unor erori rare, dar posibile.

Page 53: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Manipularea exceptiilor

• Ex. In programul care calculeaza radacinile ecuatiei de gradul 2, am verificat delta inainte de a calcula radical din delta. Uneori, functiile verifica erorile si returneaza o valoare speciala pentru aindica ca operatiunea nu a reusit.

• Ex. Radical dintr-un numar negativ ar putea returna -1 pentru aindica o eroare (deoarece erorile patrate nu sunt niciodatanegative, stim ca aceasta este o valoare care indica faptul ca operatiunea nu a reusit).

Page 54: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Manipularea exceptiilor

• Programatorul poate scrie cod care manipuleaza erorilecare pot aparea in timpul functionarii programului.

• Aceasta abordare evita necesitatea de a efectua verificariexplicite la fiecare pas al algoritmului.

Page 55: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

def main():

print(”Acest program calculeaza si afiseaza radacinileunei ecuatii de gradul 2\n")

try:a,b,c = eval(input(”Introduceti coef a,b,c: "))

delta = b * b - 4 * a * c

x1 = (-b + math.sqrt(delta)) / (2 * a)

x2 = (-b - math.sqrt(delta)) / (2 * a)

print("\n Radacinile ecuatiei sunt”, x1,x2)

except ValueError:

print(“Nu are radacini reale”)

Page 56: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Manipularea exceptiilor

• Instructiunea try are urmatoarea forma: • try:

<body>except <ErrorType>:

<handler>

• Cand Python intalneste instructiunea try, executainstructiunile din body.

• Daca nu intalneste nicio eroare, controlul trece la urmatoarea instructiune dupa instructiunea try…except.

Page 57: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Manipularea exceptiilor• Daca o eroare apare in timpul executiei instructiunilor din body,

atunci Python cauta o clauza exceptionala. Daca gaseste una, codul este executat.

• Programul original a generat aceasta eroare referitoare la delta negativ:

File "/Users/elenaovreiu/.spyder-py3/unecutatie.py", line 13, in main

x1= (-b+sqrt(delta))/(2*a)

ValueError: math domain error

Page 58: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Manipularea exceptiilor

• In ultima linie, “ValueError” indica tipul specific de eroare. Noul cod executat este:

• Introduceti coef a,b,c:1,1,2

• >> Nu are radacini reale

• In loc sa se blocheze, programul afiseaza un mesaj care indica faptul ca nu sunt radacini reale

• Instructiunea try…except poate fi folosita pentru oricetip de eroare

Page 59: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Manipularea exceptiilor

• O singura instructiune try poate avea multe clause except

Page 60: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

import math

def main():

print(”Acest program calculeaza si afiseaza radacinile unei ecuatii de gradul 2\n")

try:

a,b,c=eval(input(”Introduceti coef a,b,c: "))

delta_rad = math.sqrt(b * b - 4 * a * c)

root1 = (-b + delta_rad ) / (2 * a)

root2 = (-b - delta_rad ) / (2 * a)

print("\ Radacinile ecuatiei sunt”, x1,x2)

except ValueError as excObj:

if str(excObj) == "math domain error":

print(" Nu are radacini reale ")

else:

print(”Coeficienti nevalizi.")

except:

print("\n Ceva rau s-a intamplat, ne pare rau!")

Page 61: INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON...INTRODUCERE IN PROGRAMARE FOLOSIND PYTHON CURS 4 Operanzi –Operatori –Input/Output-Structuri de decizie Operatii aritmetice + adunare

Manipularea exceptiilor

• Exceptiile multiple se comporta ca elif-urile. • Daca programul nu contine nicio clauza except, programul

se blocheaza si raporteaza o eroare. • Exceptiile in sine sunt considerate niste obiecte.