Documente Academic
Documente Profesional
Documente Cultură
Introducere și sintaxă
Prezentare
De ce Python?
Python este un limbaj de programare dinamic, de nivel înalt, ce pune accent pe
expresivitatea și înțelegerea ușoară a codului. Sintaxa sa permite implementări
echivalente cu
alte limbaje în mai puține linii de cod. Datorită acestui fapt,
Python este foarte răspândit atât în programarea de aplicații, căt și în zona de
scripting.
int a = 3;
… în Python scriem:
a = 3
int a;
Sintaxa este gândita în așa fel încât programele Python să fie ușor de citit.
Acest lucru este obținut prin folosirea de cuvinte în locul semnelor (de exemplu,
and în loc de &&)
și prin includerea indentării în limbaj. Astfel, în Python
nu se folosesc acolade (ca în C/C++, Java), ci blocurile de cod se delimitează
prin indentare. Programele Python
sunt, de multe ori, foarte aproape de
o “implementare” echivalentă în pseudocod.
Python vs C/C++
mai ușor de citit
debugging ușor
utilizatorul nu trebuie să se ocupe de managementul memorie
testare ușoară
biblioteci externe accesibile
mai puțin cod
erorile de sintaxă se găsesc mai ușor în C
Python vs pseudocod
codul arată aproape la fel
codul Python poate fi rulat, în timp ce pseudocodul are doar utilitate didactică
Lucrul cu interpretorul
Cum am spus în introducere, limbajul Python este interpretat, nu compilat. Asta
înseamnă că programele Python sunt transformate într-un limbaj intermediar. Acest lucru
permite codul să fie ușor de portat pe diverse sisteme de operare și arhitecturi hardware.
Codul este executat linie cu linie. Astfel, dacă - de exemplu - apelăm o funcție
care nu există, vom primi un mesaj de eroare abia când se încearcă executarea liniei
respective. Erorile de sintaxă sunt raportate însă înainte de rularea programului.
Pentru a exersa sintaxa și elementele de bază ale limbajului, vom folosi direct
interpretorul Python.
>>>
Sintaxa
Instrucțiuni si variabile
Condiționale
if conditie:
succes()
else:
esec()
numar_esecuri += 1
După cum se observă, este folosit ”:” în loc de ”{”, iar blocurile de cod ce
vor fi executate pe ramurile respective sunt indentate. De asemenea, nu este
nevoie de paranteze
în jurul condiției verificate.
if (conditie1) {
functie1();
} else if (conditie2) {
functie2();
} else if (conditie3) {
functie3();
} else {
functie4();
if conditie1:
functie1()
elif conditie2:
functie2()
elif conditie3:
functie3()
else:
functie4()
Bucle
While
Structura while din Python este la fel ca cea din C, ținând cont de diferențele
de sintaxă:
while conditie:
instructiune1
instructiune2
For
instructiune1
instructiune2
Astfel, codul C:
int i;
instr;
instr
Pentru a obține o lista cu numerele de la A la B (fără B), se poate folosi
range(A, B). Dacă A este 0, putem folosi direct range(B).
for i in range(4):
instr
int i;
...
Folosim:
...
Instrucțiunea print afișează mesaje la standard output. Putem afișa valoarea oricărei expresii:
>>> print 1 + 1
'hello world'
>>> a = 10
>>> print a
10
Tipuri de date
Numere
2 # int
Tipul int nu are valori minime și maxime, poate fi reprezentată orice valoare întreagă.
Tipuri Boolean
>>> 1 < 2
True
>>> 1 > 2
False
True
>>> True and 1 > 2
False
True
Șiruri de caractere
Spre deosebire de C, Python oferă suport built-in pentru string-uri. Șirurile date ca intrare pentru o operație nu pot fi modificate, orice operațiune returnează string-uri noi.
Pot fi scrise cu ghilimele simple sau duble la alegere.
"hello, world"
>>> 'hello'[2]
"l"
>>> ord('a')
97
>>> chr(97)
'a'
Putem construi string-uri folosind operatorul %, asemănător funcțiilor printf și sprintf din biblioteca standard C:
>>> "numar: %d" % 13
'numar: 13'
Liste (Vectori)
a = [1, 2, 3]
Pot fi concatenate cu +:
[1, 2, 3, 4, 5, 6]
>>> a = [1, 2, 3]
>>> a
[1, 2, 3]
>>> a.append(4)
>>> a
[1, 2, 3, 4]
Este de remarcat faptul că elementele unei liste nu trebuie să fie de același tip.
>>> a
Dicționare
Dictionarele sunt asocieri “cheie, valoare”, asemanator hashmap-ului din STL. Cheile pot fi string-uri, numere, sau alte obiecte nemodificabile (de exemplu nu putem folosi
o listă drept cheie). Valorile pot fi orice.
>>> alex["nume"]
'Alex'
>>> alex["an"]
>>> alex["an"] = 4
>>> alex["an"]
>>> alex
{'nume': 'Alex', 'rol': 'student', 'an': 4}
>>> alex["medie"] = 10
>>> alex
{'nume': 'Alex', 'rol': 'student', 'medie': 10, 'an': 4}
Fișiere sursă
Pentru experimente simple, putem folosi interpretorul interactiv, dar dacă scriem programe complexe, e mai comod să ne salvăm programul într-un fișier, și să îl executăm
de acolo. De exemplu, scriem următorul fișier, cu numele myprogram.py:
language = "python"
Putem să îl executăm direct, fără pași intermediari de compilare, folosind comanda python:
$ python myprogram.py
Hello world!
sunt un fisier cu cod sursa python
Exerciții
1. Afișați 1000 de mesaje “Hello world”.
2. Plecând de la lista următoare, testați dacă fiecare număr este par, și afișați un mesaj corespunzător:
a = [1, 2, 3, 10, 11, 12, 45, 67, 89, 22, 13, 22]
a = [1, 2, 3, 'foo', 5, 6]
4. Calculați factorialul următoarelor numere: 9, 100, 20000. Cât de mari sunt rezultatele calculelor?
7. Scrieți un program care confirmă conjectura Collatz pentru primele 100 de numere naturale. Conjectura Collatz spune că pentru orice număr natural (n), dacă se aplică
funcția:
f(n) =
n / 2, pt n par
3n + 1, pt n impar