Documente Academic
Documente Profesional
Documente Cultură
in Python
lect.univ.
Branişte Rodica
Paradigme de programare
Modulară Procedurală
Structurată
Programare imperativă
• Paradigma imperativă descrie Avantaje: Programarea interactivă
programarea ca o secvenţă de instrucțiuni este uşor de învăţat, destul de
sau comenzi, ce schimbă starea unui înţeleasă
program.
Dezavantaje: poate face codul mai
• Codul mașină, în general, se bazează pe
lung, să minumizeze scalabilitatea.
paradigma imperativă
*scalabilitatea este o proprietate a unui sistem, a
• Implementarea hardware a majorității unei rețele sau a unui proces, proprietate care
calculatoarelor este imperativă. arată capacitatea acelui sistem de a suporta corect
un volum mai mare de încărcare, sau de a permite
#incrementare i mărirea sau extinderea sa.Un sistem de prelucrare
a datelor, de exemplu, este scalabil dacă el se
i=0 comportă similar, fără defecțiuni, atunci când
while i < 10: volumul de date pe care le prelucrează devine mai
mare. De asemenea, un sistem poate fi considerat
i=i+1 scalabil și dacă este capabil să ofere rezultate
îmbunătățite în condițiile în care îi sunt adăugate
print(i) resurse adiționale (de regulă, hardware).
10
Programare procedurală
• Paradigma de programare procedurală este difinită ca o paradigmă de
programare care permite programului să fie organizat ca un set de funcţii.
• Fiecare funcţie constă din enunţuri de calcul şi rezolvă o parte a problemei.
• În programarea procedurală, funcţia devine cea mai importantă componentă a
programului şi funcţiile au acces nerestricţionat la datele globale.
Funcţia 4
Date
Funcţia 3
globale
Programul Funcţia 2
Date
Funcţia 1
globale
Programarea structurată
Programarea structurată este o metodă independentă de limbajul de programare, ea
acţionând la nivelul stilului de lucru.
Programarea structurată reprezintă o maniera de concepere a programelor potrivit unor
reguli bine stabilite, utilizând un anumit set, redus, de tipuri de structuri de control. O structură de
control înseamnă o combinaţie de operaţii utilizată în scrierea algoritmilor.
Orice program are intrări, ieşiri, adică punct de început şi de sfârşit şi poate fi reprezentat printr-o
combinaţie de trei structuri de control fundamentale, numite:
Secvenţa (structura liniară)
Decizia (structura alternativă)
Ciclul (structura repetativă)
Scopul programării structurate este elaborarea unor programe uşor de scris, de depanat şi de
modificat (actualizat) în caz de necesitate. Programele obţinute sunt clare, ordonate, inteligibile, fără
salturi si reveniri. Programarea structurată permite ca programele să poată fi scrise în limbaj
pseudocod, limbaj independent de maşină, apropiat de cel natural, convertibil în orice limbaj de
programare.
Programele au la bază algoritmi de calcul ce se pot transpune în scheme logice, ca de ex:
START
instrucțiune
secvenţă
instrucțiune
da nu
?
instrucțiune instrucunţie
decizie
ciclu
instrucțiune instrucțiune
instrucțiune
STROP
Programare modulară
Programare modulară este o tehnică program
utilizată pentru dezvoltarea de software, în
care programul este împărțit în multe
componente sau blocuri autonome mici
numite module sau subprograme, care sunt
ușor de gestionat, logice și funcționale. GUI
(interfața Biblioteca de
Baza
Baza de
de date
date
Modulul este un bloc de instrucțiuni grafică a calcule
care rezolvă o anumită problemă. Fiecare utilizatorului)
modul conține tot ceea ce este necesar
pentru a-și îndeplini propria funcționalitate și
poate fi editat sau modificat fără a afecta
restul proiectului.
Avantaje: Acțiuni Operații
Afișare Operații Operații Funcţii
de de
Permite reutilizarea modulelor ferestre
control scriere
de citire logice utile
Ușurează lucrul în echipă
Permite o mai bună utilizare a codului sursă
Programarea funcțională
Programarea funcțională este un model de dezvoltare software. Acesta estimează și aplică
funcții matematice, mai degrabă decât date de stare sau mutabile și fire de cod imperative.
Originile reale ale programării funcționale sunt calculul lambda și științele sistemului formal,
care aplică definirea funcției, aplicarea și recursiunea.
double = lambda x: x * 2
print(double(5))
Răspuns: 10
Instrucțiuni de atribuire
• Vom atribui o valoare unei variabile folosind instrucțiunea de
atribuire (=)
• O declarație de atribuire constă dintr-o expresie de pe partea dreaptă
și o variabilă pentru a stoca rezultatul
x = 5.7*x*(2+x)
Atribuire multiplă
Putem să schimbăm tipul de date oricând ne dorim. Tot ce trebuie să facem este să apelăm una dintre
funcţiile built-in (preinstalate) cu numele specific tipului de date dorit.
Mai sus am creat o variabilă numită x cu valoarea 2.0. Am folosit apoi funcţia type() pentru a afla tipul de
date. Apoi folosim funcţia int() pentru a converti valoarea de tip float a variabilei noastre într-una de tip int
(număr întreg). Astfel am realizat conversia de la un număr float la un int.
Şiruri de caractere
Acest tip de date mai poartă şi numele de string şi este folosit pentru a
păstra caractere, cuvinte sau propoziţii. Valorile acestui tip pot fi scrise între
ghilimele simple ('') sau duble (""). Deci, un string reprezintă orice tip de text
inclus între ghilimele simple, duble sau triple.
Exemplu : variabila = “Marius”
Este posibilă utilizarea operatorilor de adunare şi înmulţire, însă rolul lor
este un pic diferit. Atunci când "adunăm" două stringuri spunem că
le concatenăm, iar rezultatul va fi un nou string format din cele două alipite.
Înmulţirea se face doar asupra unui singur şir de caractere şi are drept
efect multiplicarea acelei valori de câte ori indică numărul cu care este înmulţit.
Exemple:
Pentru concatenare vom folosi semnul +, iar pentru a multiplica scrierea unui string folosim *
>>>string1 = “Marius"
>>>string2 = “Crăciun"
>>>print(string1 + string2)
MariusCrăciun
>>>print(string1 * 3)
MariusMariusMarius
Pentru a verifica apartenenţa unui substring la un string, putem folosi cuvântul cheie in.
>>> s1 = 'Python'
>>> 'i' in s1
False
>>> 'y' in s1
Formatarea textului
Prin formatare vom intelege posibilitatea de a crea un string în mod dinamic
folosind valori păstrate în variabile.
Prima şi cea mai simplă metodă de formatare o reprezintă concatenarea
stringurilor implicate folosind operaţia de adunare:
>>> nume = ‘Marius'
>>> ani = 23
>>> 'numele meu este ' + nume + ' si am ' + str(ani) + ' ani'
'numele meu este Marius si am 23 ani’
Observaţi convertirea variabilei ani folosind funcţia str(). Fără această convertire,
am primi eroare deoarece nu putem adăuga un string şi un număr.
A doua metodă de formatare o reprezintă folosirea caracterului %:
>>> nume = ‘Marius'
>>> ani = 23
>>> 'numele meu este %s si am %d ani' % (nume, ani)
'numele meu este Marius si am 23 ani’
Exemplu Rezultat
Metodele specifice de prelucrare a stringurilor
Rezultat
Metodele specifice de prelucrare a stringurilor
Metodele strip(), rstrip(), lstrip()
Exemplu
Rezultat
Metodele specifice de prelucrare a stringurilor
Metodele
find(), rfind()
find() găsește un subșir în șir și returnează poziția unde începe subșirul
Dacă subșirul nu poate fi găsit, atunci funcția find() returnează -1
Exemplu Rezultat
3 este indexul unde dorim să începem căutarea len(s1) este indexul unde dorim să oprim
căutarea
Metodele specifice de prelucrare a stringurilor
Exemplu
Rezultat
Metodele specifice de prelucrare a stringurilor
Metodele index(), rindex()
index() returnează poziția primei apariții a șirului căutat
Dacă șirul nu poate fi găsit, atunci funcția returnează excepție.
rindex() returnează poziția ultimei apariții a șirului căutat
Exemplu
Rezultat
Metodele specifice de prelucrare a stringurilor
Metodele count(), replace()
count() numără aparițiile unui subșir într-un șir
replace(old_subs, new_subs) înlocuiește un subșir cu un altul
Exemplu
Rezultat
Metodele specifice de prelucrare a stringurilor
Rezultat
Metodele specifice de prelucrare a stringurilor
Metodele split()
Separator poate fi orice caracter
Exemplu
Rezultat
Metodele specifice de prelucrare a stringurilor
Rezultat
Metodele specifice de prelucrare a stringurilor
Metode de verificare
isalpha() returnează True dacă șirul constă doar din litere, altfel - False
isalnum() returnează True dacă șirul este format din cifre și litere, altfel – False
isdigit() returnează True dacă șirul este format din cifre, altfel – False
islower() returnează True dacă șirul este format din caractere minuscule, în caz contrar -
False
isupper() returnează True dacă șirul este format din caractere mari, altfel - False
isspace() returnează True dacă șirul constă din caractere care nu sunt
afișate
(spații, etc.), altfel – False
istitle () returnează True dacă toate cuvintele încep cu o literă mare în șir
Metodele specifice de prelucrare a stringurilor
Metode de verificare
Exemple
Rezultatele
Parcurgerea stringurilor
Folosind while, o variabilă de iterație, și funcția len, putem construi o buclă să parcurgem
fiecare literă din șirul de caractere în mod individual
Parcurgerea stringurilor
Ciclul for este mult mai elegant. Variabila de iterație este complet luată de către for
Exemple de probleme cu stringuri
Exemple de probleme cu stringuri
Exemple de probleme cu stringuri
Tuple
O tuplă este o structură de date imutabilă (constantă) care poate păstra mai
multe elemente separate prin virgulă. Ea este precum o listă.
Astfel, având o tuplă t = (1, 2, 3), dacă încercăm să adăugam un element nou
t = t + (4,), totul va fi ok. Mai mult, putem chiar multiplica elementele acestei
tuple fără nici o problemă (de exemplu t * 2), exact cum am văzut în cazul listelor.
Însă, ce se întâmplă dacă vrem să schimbăm primul element cu valoarea 5?
>>> t[0] = 5
Traceback (most recent call last):
File "", line 1, in
t[0] = 5
TypeError: 'tuple' object does not support item assignment
Proprietăţi:
•Nu pot exista chei duplicat;
•Dicţionarul este un tip de date mutabil, însă cheile sale trebuie să fie de tip
imutabil (numeric, string sau tuplă);
•Valorile pot fi orice tip de date;
•Putem avea chei şi valori de diferite tipuri într-un dicţionar;
• Un dicţionar este tot un container, asemeni listei, însă în loc să păstreze doar o
serie de elemente, un dicţionar păstrează o serie de perechi de elemente
• Fiecare pereche va fi compusă dintr-o cheie şi o valoare.
• Cheia este folosită pentru a identifica valoarea (asemeni indexului în cazul
listelor), iar valoarea este ceea ce vrem cu adevărat să păstrăm în acel dicţionar.
• Un dicţionar este creat folosind acolade {}, iar perechile sunt despărţite de
virgulă. Fiecare pereche va avea cheile şi valorile separate de caracterul ":".
• Structura generală este {cheie1: valoare1, cheie2: valoare2,...}
• Exemple: {'a': 1, 'b': 2, 'c': 3}, {1: 'a', 'b': [1, 3, 4]}
• Valorile unui dicţionar pot fi de orice tip de date, însă cheile au câteva restricţii.
Toate cheile din dicţionar trebuie să fie unice şi pot fi din tipurile string, numeric
sau (tupla).
• Pentru a identifica un element, în cazul dicţionarelor se va folosi cheia.
Exemple de dicţionare create