Sunteți pe pagina 1din 5

DokuWiki

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.

Limbajul facilitează mai multe paradigme de programare, în special paradigma


imperativa (C) și pe cea orientată pe obiecte (Java). Spre deosebire de C, Python
nu este um
limbaj compilat, ci interpretat. Acest fapt are atât avantaje, căt
și dezavantaje. Pe de-o parte, Python este mai lent decât C. Pe de altă parte,
aplicațiile Python sunt foarte
ușor de depanat, codul
putând fi ușor inspectat în timpul rulării. De asemenea, este foarte ușor de
experimentat cu mici fragmente de cod folosind interpretorul Python.

Datorită aspectului dinamic al limbajului, codul Python nu conține declarații


de tipuri. Astfel, dacă în C am fi scris:

int a = 3;

… în Python scriem:

a = 3

În Python nu putem declara o variabilă fără să îi atribuim o valoare, cum am


fi făcut în C:

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.

Python poate fi instalat conform ghidului de


aici [https://wiki.python.org/moin/BeginnersGuide/Download]. După instalare,
putem porni aplicația “IDLE”, care ne oferă un
interpretor Python în mediul grafic.

Interpretorul seamăna foarte mult cu o linie de comanda (cmd.exe, bash). Prompt-ul


(>>>) apare când se așteaptă input din partea utilizatorului. După ce este
introdusă o
instrucțiune, aceasta este evaluată și dacă exista output, este
afișat în continuare, începând cu o linie noua. Expresiile sunt evaluate și
afișate.

>>> 3 # 3 este o expresie - este evaluata si se afiseaza rezultatul

>>> 2 + 4 # alta expresie

>>> a = 3 # aceasta instructiune declara variabila a si ii atribuie valoarea 3

>>> a # se va afisa valoarea lui a

>>>

Sintaxa
Instrucțiuni si variabile

In Python nu este necesara folosirea de ”;” la sfarsitul unei linii. Folosim


o linie pentru fiecare instructiune.

Cum am spus in sectiunea Lucrul cu interpretorul, Python este un limbaj dinamic


si nu lucram direct cu tipuri. Ele exista, 2 este in continuare “int”, dar
programatorul nu
trebuie sa specifice acest lucru.

Comentariile sunt prefixate de caracterul ”#”.

a = 3 # declaram variabila a, cu valoarea 3

b = 4 # declaram variabila b, cu valoarea 4

suma = a + b # declaram variabila suma, cu valoarea sumei dintre a si b

Condiționale

Ca și în C sau C++, în Python există structura if/else.

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.

De multe ori, în C/C++ se folosește un șablon precum:

if (conditie1) {
functie1();

} else if (conditie2) {

functie2();

} else if (conditie3) {

functie3();

} else {
functie4();

Echivalentul Python este:

if conditie1:

functie1()

elif conditie2:

functie2()

elif conditie3:

functie3()

else:

functie4()

După cum se observa, nu există “else if ” în Python, ci “elif ”. Acest șablon de


cod este aproape identic cu o structura “switch”. În Python nu exista “switch”,
folosindu-se
blocuri cu “elif ”.

Bucle

Pentru a repeta un bloc de cod avem doua opțiuni: while și for.

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

For este diferit în Python. Sintaxa este:

for elem in colectie:

instructiune1

instructiune2

“elem” va lua pe rand ca valoare fiecare element din colecție.

Astfel, codul C:

int i;

for (i = 0; i < 4; i++) {

instr;

este echivalent cu:

for i in [0, 1, 2, 3]:

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).

Astfel, codul devine:

for i in range(4):

instr

Funcția range primește și un parametru opțional ce reprezinta diferența între


doua valori consecutive.

De exemplu, pentru a obține:

int i;

for (i = 0; i < 10; i += 2) {

...

Folosim:

for i in range(0, 10, 2):

...

Print

Instrucțiunea print afișează mesaje la standard output. Putem afișa valoarea oricărei expresii:

>>> print 1 + 1

>>> print "hello world"

'hello world'

>>> a = 10

>>> print a

10

Tipuri de date
Numere

Cele mai comune tipuri numerice în Python sunt int si float.

2 # int

2.0 # float - similar cu double in C

Tipul int nu are valori minime și maxime, poate fi reprezentată orice valoare întreagă.

Tipuri Boolean

Se numesc True și False, și putem executa operații logice cu ele:

>>> 1 < 2

True
>>> 1 > 2

False

>>> True and 1 < 2

True
>>> True and 1 > 2

False

>>> False or True

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"

String-urile pot fi accesate aleator:

>>> 'hello'[2]

"l"

Nu există tipul “caracter”. Se folosesc string-uri cu un element, sau


reprezentările numerice directe. Se poate trece de la caracter la număr și
invers folosind funcțiile ord și
chr.

>>> ord('a')
97

>>> chr(97)

'a'

String-urile pot fi concatenate folosind operatorul +:

"hello, " + "world" == "hello, world"

Putem construi string-uri folosind operatorul %, asemănător funcțiilor printf și sprintf din biblioteca standard C:
>>> "numar: %d" % 13
'numar: 13'

>>> "string: %s" % "foo"


'string: foo'

Liste (Vectori)

Listele sunt echivalentul vectorilor dinamici din STL (din C++).

Se pot declara folosind sintaxa:

a = [1, 2, 3]

Pot fi concatenate cu +:

>>> [1, 2, 3] + [4, 5, 6]

[1, 2, 3, 4, 5, 6]

Pot fi accesate în funcție de index:

>>> [1, 2, 3, 4][2]

Se pot adaugă elemente la sfârșit folosind metoda “append”:

>>> 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 = [1, "foo"]

>>> a.append(["bar", 22])

>>> a

[1, 'foo', ['bar', 22]]

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", "rol": "student", "an": 3}

>>> 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:

print "Hello world!"

language = "python"

print "sunt un fisier cu cod sursa %s" % language

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]

3. Modificați exercițiul anterior folosind următoarea listă. Ce se întâmplă și de ce?:

a = [1, 2, 3, 'foo', 5, 6]
4. Calculați factorialul următoarelor numere: 9, 100, 20000. Cât de mari sunt rezultatele calculelor?

5. Afișați toți divizorii numărului 83538.

6. Rezolvați problema *Fizzbuzz*: Pentru fiecare număr de la 1 la 100, afișați următoarele:

fizz - dacă numărul este divizibil cu 3


buzz - dacă numărul este divizibil cu 5
fizz buzz - dacă numărul este divizibil și cu 3, și cu 5
numărul respectiv - în toate cazurile

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

de oricâte ori, în final se va ajunge la n = 1.

intro-si-sintaxa.txt · Last modified: 2014/04/10 10:54 by anpetre

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