Sunteți pe pagina 1din 60

INTRODUCERE IN PROGRAMARE FOLOSIND

PYTHON

Dr. Elena Ovreiu


Universitatea POLITEHNICA din Bucuresti
www.ovreiu.com SPAM
Punctaj

• 50 puncte laborator
• 50 puncte examen final
• Promovare: min 50 puncte din (laborator + examen
final)
PYTHON CURS 1
Obiective
• Intelegerea rolurilor componentelor hardware si
software intr-un sistem de calcul
• Tehnicile pe care le folosesc computer scientists
• Sa intelegeti design-ul de baza al unui computer
• Python si primul program in Python
Ce este un computer?
• Un computer modern este o “masina care stocheaza
si manipuleaza informatii aflate sub controlul unui
program”
• 2 elemente cheie:
 Computerele sunt dispozitive folosite pentru
manipularea informatiei
 Computerele functioneaza sub controlul unui
program modificabil
Ce este un computer?
Ce este un program?

• Un set detaliat de instructiuni care ii spun


computerului, pas cu pas, ce sa faca
• Daca modificam programul, computerul va efectua
un se diferit de actiuni sau un task diferit.
• Masina ramane aceesi, doar programul se schimba
• Computerul este o masina care executa programe
Ce este un computer?

• Programele (software-ul) pun hardware-ul (masina


fizica) in miscare.
• Procesul de a crea acest software se numeste
programare
Ce este Computer Science?

• Nu este studiul computerelor!!!


• E. Dijkstra: “ Computerele sunt pentru computer
science cum telescoapele sunt pentru astronomie”
• Ce poate fi calculat? Cum rezolvam o problema?
• Design, Analiza, Experimente
Ce este Computer Science?
Design

• Pentru a demonstra ca o problema are rezolvare,


trebuie sa proiectam o solutie (design a solution)
• Aceasta inseamna ca trebuie sa dezvoltam, pas cu
pas, un process pentru a obtine rezultatul dorit
• In computer science, acest proces se numeste
algoritm.
Ce este Computer Science?
Design

• Algoritm=reteta;
• Dezvoltarea/proiectarea algoritmilor: una dintre cele
mai importante task-uri in computer science.
• Daca putem elabora un algoritm, problema este
rezolvata
• Daca nu am gasit un algoritm sa rezolve problema: nu
inseamna neaparat ca problema nu poate fi rezolvata.
Ce este Computer Science?
Analiza

• Analiza este procesul de a examina algoritmii si


problemele dpdv matematic
• Exista unele probleme care nu pot fi rezolvate cu
niciun algoritm . Se numesc nerezolvabile.
• Exista unele probleme care dureaza prea mult timp
sau prea ocupa multa memorie
Ce este Computer Science?
Experimente

• Unele probleme sunt prea complexe pentru analiza


• Se implementeaza un sistem si se verifica eficienta
acestuia
ARHITECTURA DE BAZA A UNUI COMPUTER
Arhitectura Hardware a unui computer
• CPU (Central Processing Unit) este “creierul”
computer-ului.
• CPU executa toate operatiile din computer
• Exemplu: operatii aritmetice simple,
verifica daca 2 numere sunt egale, etc
Arhitectura Hardware a unui computer

• Memoria stocheaza datele si programele


• CPU poate accesa direct numai informatiile stocate
in memoria principala (RAM sau Random Acces
Memory)
• memoria principala este rapida dar volatila, de ex:
cand alimentarea este intrerupta, continutul
memoriei este pierdut
Arhitectura Hardware a unui computer

• Memoria secundara ofera o stocare (mai)


permaneta: magnetica (hard disk), flash (memorie
USB), optica (CD, DVD)
Arhitectura Hardware a unui computer
• Input devices: informatiile sunt transmise computer-
ului prin intermediul tastaturii, a mouse-ului, etc
• Output devices: informatia procesata este
prezentata utilizatorului prin intermediul monitorului,
a imprimantei.
Arhitectura Hardware a unui computer
Ciclul “fetch –execute”

• Prima instructiune extrasa din memorie


• Decodarea instructiunii pentru a vedea ce reprezinta
• Executarea actiunii din instructiune
• Instructiunea urmatoare este extrasa, decodificata si
executata
Prima data, instructiunile sunt aduse din memoria
secundara in cea principala.
Basic Hardware Architecture
Set de Instructiuni Bibliografie:
 Este unic fiecarui CPU But How Do It Know?
J. Clark Scott
 Ex. Instructiuni:
• LOAD a number from RAM to CPU
• ADD 2 numbers together
• STORE a number from the CPU back out to RAM
• COMPARE one number with another
• JUMP IF condition to another address in RAM
• JUMP to another address in RAM (it jumps no matter what)
• OUT: output data to a device such a monitor
• IN: input data from a device such as a keyboard
Limbaje de programare

• Limbajul de programare este ca un cod pentru a


scrie instructiunile pe care un computer le urmeaza
• Programatorii se refera la programe numindu-le cod
iar procesul de a scrie algoritmii intr-un limbaj de
programare il numesc codare.
Computer Program
■ Un program: un set de instructiuni
■ Alan Turing a demonstrat ca exista 6 primitive (cuvinte
cheie) cu care poti calcula orice: Left, Right, Print, Scan,
Erase, Nothing
■ Limbajele moderne ofera un set mai mare de instructiuni
■ Folosind aceste 6 instructiuni de baza: orice poate fi
calculate in Python, poate fi calculate si in alt limbaj de
programare
Limbaje de programare

• Programul este o secventa de instructiuni care ii


spun computer-ului ce sa faca.
• Aceste instructiuni trebuie transmite astfel incat
computer-ul sa le inteleaga.
• Chiar daca computer-ul ar intelege limbajul uman,
este ca limbajul uman sa descrie un algoritm
complex.
Limbaje de programare
• Limbajul uman este plin de ambiguitati.
• Ex. Am vazut barbatul din parc cu telescopul.
• Programele sunt exprimate intr-un mod clar si
concis, cu ajutorul limbajelor de programare.
• Fiecare structura intr-un limbaj de programare are o
forma clara. Aceasta este sintaxa limbajului.
• Fiecare structura are un inteles clar, acesta este
semantica limbajului.
Sintaxa

• Engleza: “Ana mere pere” – nu e corecta dpdv al sintaxei


”Ana are mere” -corecta dpdv al sintaxei
• Limbaj de programare: “hi” 7 -nu e corect dpdv al sintaxei
2.7+3 -corect dpdv al sintaxei
Semantica
• Propozitii care au sens.
Ex: Ana avem mere corect dpdv al sintaxei (Subiect,
predicat) dar nu are inteles
• Limbaj de programare:
Ex: “hi”+7 - corect dpdv al sintaxei (operator + operator), dar
nu este corect semantic (nu are sens sa aduni un cuvant cu un
numar)
2.7+3 - corect dpdv semnatic si al sinxatei
• Desi in limba engleza (ca in orice alta limba), o propozitie
poate avea mai multe intelesuri, intr-un limbaj de
programare are un singur inteles
Limbaje de programare

• Fiecare limbaj de programare are setul propriu de


primitive
• Expresii: combinatii de primitive
Ex. Primitive:
 Engleza - cuvintele (the, of, with, …)
 Limbaj de programare –numere, operatori, string
(bool, float, *, +, ++, ==)
Limbaje de programare
Limbaj de nivel inalt
• Conceput pentru a fi inteles si foloist de oameni;
foarte asemanator limbajului natural, folosind
cuvinte din engleza: Python, C, C++, Java, JavaScript,
PhP
Limbaj de nivel jos
• Inteles doar de hardware-ul computer-ului.
• Ex. Limbaj masina sau de asamblare
• Computerele pot executa doar programe care sunt
scrise limbaj de nivel jos
High-level vs. Low-level languages
Limbaj de nivel inalt
• Usor de scris, de citit
• Portabil (pot rula pe diferite tipuri de computere fara
modificari)
Limbaj de nivel jos
• Foarte dificil
• Folosit pentru a scrie un nou sistem de operare sau in
firmware micro-procesoarelor
Fiecare processor are propriul limbaj masina (Intel Core 2 Duo
pe Windows accepta un limbaj binar diferit fata de PowerPc pe
Mac)
Limbaje de programare
Limbaj de nivel jos
Suma a 2 numere:
• Adu numarul din locatia de memorie 1250 in CPU
• Adu numarul din locatia de memorie 1251 in CPU
• Aduna cele 2 numere in CPU
• Salveaza rezultatul in locatia de memorie 1252.
■ In realitate, aceste instructiuni sunt reprezentate in
binar (0 si 1)
High-level vs. Low-level languages
Limbaj de nivel inalt
subtotal=25
taxa=15
total= subtotal +taxa
Limbaj de asamblare (de nivel jos) Limbaj masina
mov subtotal 25 100110010010
mov taxa 15 110110110000
add subtotal taxa 101110100011
Limbaje de programare
Limbaj de nivel inalt
c=a+b
• Acest cod trebuie convertit in limbaj masina, pentru
a putea fi executat.
• Compilatoarele sunt programe care convertesc un
program scris in limbaj de nivel inalt in limbajul
masina al computer-ului.
Compilator

• Citeste programul (Source Code) si il converteste in


cod masina (Object Code) inainte de a-l executa.

• Produce un executabil (Object Code) care poate fi apoi


rulat de nenumarate ori, fara alte conversie
Interpretor

• Converteste codul sursa in cod masina (Object Code)


in timpul executiei.
• Un intrepretor analizeaza si executa codul sursa
instructiune cu instructiune

• Programul trebuie interpretat la fiecare rulare.


Compilator vs. Interpretor

1. O data codul sursa compilat, acesta poate fi executat


mereu, chiar fara codul sursa sau compilator
Daca este interpretat, codul sursa si interpretul sunt
necesare de fiecare data cand codul e executat.

2. Programele compilate sunt mai rapide, din moment


ce nu este nevoie de coversia programului la rulare.
Compilator vs. Interpretor

3. Limbajele interpretate fac parte dintr-un mediu de


programare mai flexibil, din moment ce pot fi
dezvoltate si executate interactiv.

4. Limbajele interpretate sunt mai portabile, ceea ce


inseamna ca executabilul produs de un compilator pe
un Pentium nu va fi rulat pe Mac fara recompilare.
Daca exista un interpret adecvat, codul interpretat
poate fi rulat fara modificari
Python

• www.python.org
• Dezvoltat in anii ’80-90
de catre Guido van
Rossum
• Persoanele care
folosesc Python:
Pythonistas
■ In 2018 - mai multe cautari pe Google decat Kim
Kardashian (The Economist)
■ Folosit de NASA, CIA, CERN, Google, Pixar, Spotify
Python

Python 3.7.1 (default, Dec 14 2018, 13:28:58) [Clang


4.0.1 (tags/RELEASE_401/final)] :: Anaconda, Inc. on
Darwin Type "help", "copyright", "credits" or "license"
for more information.
>>>
Python
• <<< se numeste prompt si indica faptul ca Python
este pregatit sa primeasca o noua comanda.
Comenzile pe care le introducem se numesc
statements -instructiuni
• >>> print("Hello, world")
Hello, world
>>> print(2+3)
5
>>> print("2+3=", 2+3)
2+3= 5
>>>
Python
• De obicei vrem sa executam instructiuni impreuna
pentru a rezolva o problema. Acest lucru il facem
folosind o functie:
• >>> def hello():
print("Hello")
print(”Python is Fun")

>>>
Python
• >>> def hello():
print("Hello")
print(”Python is Fun")

>>>
• Prima linie ne spune ca am definit o functie noua pe
care o numim hello.
• Urmatoarele linii sunt indentate pentru a arata ca
fac parte din functia hello.
Python
• >>> def hello():
print("Hello")
print(”Python is Fun")

>>>
• Linia goala (dublu enter) arata ca terminarea
functiei
• In momentul acesta nimic nu se intampla. Am creat
functia dar nu i-am spus lui Python ce sa faca cu ea
Python
• >>> def hello():
print("Hello")
print(”Python is Fun")

>>>
• O functie este apelata prin tiparirea numelui functiei.
• >>> hello()
Hello
Computers are Fun
>>>
Python
• De ce folosim () dupa numele functiei?
• Deoarece comenzile pot avea anumite parti (numite
parametri sau argumente) plasate intre ()
• >>> def greet(person):
print("Hello",person)
print ("How are you?")

>>>
Python
• >>> greet(”David")
Hello David
How are you?
>>> greet("Paula")
Hello Paula
How are you?
>>>
• Cand folosim parametri, putem personalize
rezultatul functiei noastre.
Python

• Cand inchidem prompt-ul, functia pe care am definit-


o se sterge.
• Programele sunt de obicei compuse din functii,
module sau script-uri care sunt salvate pe disk,
astfel incat sa fie folosite iar si iar.
• Un fisier modul este un fisier text creat intr-un
software de editare care contine definitii de functii
Python

• Un mediu de programare (programming


environment) este proiectat pentru a ajuta
programatorii sa scrie programe si de obicei include
identarea automata, evidentierea unor cuvinte
cheie, etc.
Python
# File: random.py
# Un program simplu care ilustreaza o functie random

def main():
print(”Acest program ilustreaza o functie random")
x = eval(input(”Introduceti un numar intre 0 and 1:
"))
for i in range(10):
x = 3.9 * x * (1 - x)
print(x)

main()
Python

• Folosim filename.py pentru a salva un program in


Python
• De data aceasta, functia pe care am definit-o se
numeste main.
• main() la final ii spune lui Python sa ruleze codul
Python
>>>
Acest program ilustreaza o functie random
Introduceti un numar intre 0 and 1 : .5
0.975
0.0950625
0.335499922266
0.869464925259
0.442633109113
0.962165255337
0.141972779362
0.4750843862
0.972578927537
0.104009713267
>>>
Descrierea unui program in Python
# File: random.py
# Un program simplu care ilustreaza o
functie random

• Liniile care incep cu # se numesc comentarii


• Sunt dedicate cititorului uman si ignorate de Python
• Python ignora textul de la # pana la sfarsitul liniei.
Descrierea unui program in Python
def main()
• Inceputul definitiei functiei numita main()
• Deoarece programul nostru are un singur modul,
putea fi scris si fara functia main.
Descrierea unui program in Python
print(”Acest program ilustreaza o
functie random")
• Functia print afiseza pe ecran mesajul din ghilimele.
Descrierea unui program in Python
x = eval(input(”Introduceti un numar
intre 0 and 1: "))
• x este un exemplu de variabila
• O variabila este folosita pentru a atribui un nume
unei valori, astfel incat sa ne putem referi la acesta
mai tarziu.
• Mesajul dintre ghilimele este afisat si apoi cursorul
astepta sa introducem un numar de la tastatura,
care e salvat in x.
Descrierea unui program in Python

for i in range(10):
• for este o bucla
• Bucla ii spune lui Python sa repete un cod iar si iar.
• In acest exemplu, codul este repetat de 10 ori.
Descrierea unui program in Python
for i in range(10):
x = 3.9 * x * (1 - x)
print(x)
• Liniile acestea sunt corpul buclei.
• Corpul buclei este ceea ce se repeta de fiecare data
• Corpul buclei este identificat prin identation
• Efectul buclei este acelasi ca si cand am repeta
aceste 2 linii de 10 ori.
Descrierea unui program in Python
x = 3.9 * x * (1 - x)

x = 3.9 * x * (1 - x) print(x)
x = 3.9 * x * (1 - x)
print(x)

print(x) x = 3.9 * x * (1 - x)
print(x)
x = 3.9 * x * (1 - x)
print(x)
x = 3.9 * x * (1 - x)
print(x)
x = 3.9 * x * (1 - x)
print(x)

Aceste 2 coloane sunt x = 3.9 * x * (1 - x)


print(x)

echivalente!!! x = 3.9 * x * (1 - x)
print(x)
x = 3.9 * x * (1 - x)
print(x)
x = 3.9 * x * (1 - x)
print(x)
Descrierea unui program in Python
x = 3.9 * x * (1 - x)

• Acestea este o instructiune de atribuire


• Partea din dreapta “=” este o expresie matematica
• * este folosit pentru inmultire
• O data ce valoarea din partea dreapta a expresiei este
calculate, este apoi atribuita lui x
Descrierea unui program in Python
main()

• Acestea linie ii spune lui Python sa execute codul


din functia main().

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