Você está na página 1de 4

De ce sa i nvata m s a pr og ra ma n i n

PYTHON!?

„Usor si batraneste – asa omul reuseste!”

...un proverb care se potriveste perfect cu o activitate complexa ca


programarea calculatoarelor. Ei bine in esenta asa este. O singura observatie am sa
fac : cu limbajul python nu prea o sa „batranesti”. Poate o sa te puna in dificultate la
inceput , e normal sa „doara” putin..., dar odata stapanit nu o sa mai vreti altceva .
Ce vorbe mari! - ar spune unii ...Sa incerc sa va conving atunci ca chiar se
merita sa invatam python si noi si copiii nostri.
Python este pentru programator la fel ca si un briceag pentru un cercetas. Este
plin de posibilitati. Primul lucru bun de care te lovesti in el este numarul mic de
instructiuni pe care le scrii . Un alt aspect pozitiv este faptul ca contine unelte pentru
toate sferele programarii: de la expresii regulate, numere mari pana la clase. Se
impaca foarte bine cu programarea pentru jocuri: se pot folosi scripturi scrise in
python cu Blender 3D sau pentru alte programe de grafica. Pentru jocuri mai simple
exista „pygame”. Dar gata cu lauda si sa prezentam ceva mai constructiv.
Primul lucru de care m-am lovit a fost lipsa cuvintelor care marcheaza blocurile !
Daca in pascal avem un „begin” si „end”, in C avem parantezale „{}” , ei bine in
python nu avem asa ceva. Teoria spune ca, pentru a programa ceva avem nevoie de
instructiuni si acestea ar trebui grupate in subrutine. Asa este pentru ca si in limbajul
Python gruparea instructiunilor se face in functie de aliniere. Urat nu !, nu chiar o sa
va placa sa scriti din „TAB”.Iata , mai jos este reprezentat cum se grupeaza acestea.

instructiunea1 incepe executia cu instructiunea1,apoi „ENTER”


instructiunea2 se apasa tasta „TAB” se trece la instructiunea2, apoi
instructiunea3 tasta „ENTER”
instructiunea4 se apasa tasta „TAB” se scrie instructiunea3, „ENTER”
instructiunea5 se apasa de doua ori „TAB”, se scrie intructiunea4,
instructiunea6 apoi „ENTER” si tot asa!
instructiunea7

In conluzie , blocurile de instructiuni sunt prezentat sus prin culori diferite: bloc
principal de instructiuni -subrutina principala cu culoarea galben, apoi urmatoarele
blocuri (gri si mov) blocuri secundare – subrutine.E poate putin mai dificil la inceput de
scris cod dar dupa cateva incercari o sa reusiti.
Pentru a rula un program in python avem doua posibilitati. Prima in consola
scriem „python” , o sa apara prompterul specific python „>>>” apoi introducem
instructiuni , respectand regula cu alinierea de mai sus. A doua posibilitate este printr-
un fisier text in care scriem instructiunile si salvam totul cu extensia „.py”, apoi
executam scriptul scriind in consola „python nume_script.py”.
Sa exemplificam cu un mic script scris in linie comanda :

user@user:~$ python
Python 2.4.4 (#2, Apr 5 2007, 20:11:18)
[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> raza = input("introdu raza")
introdu raza10
>>> print "aria este ", raza * raza * 3.1415
aria este 314.15
>>>
Iata ca un mic exemplu de calcul , se poate scrie cu cateva linii de
cod.Bineinteles ca se putea aduga si alte functii.
Sa retinem acum ca instructiunile „input” si „print” sunt instructiuni de
„feedback”. Putem definii si functii pentru acestfel de calcule :
user@user:~$ python
Python 2.4.4 (#2, Apr 5 2007, 20:11:18)
[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> def semn(nr):
... rez = "?"
... if nr<0 : rez = "negativ"
... else: rez = "pozitiv"
... return rez
...
>>> print semn(-1)
negativ
>>> print semn (1)
pozitiv
>>>
Sa ne gandim la python ca la un limbaj care se preteaza la toate varstele. Copii
se pot juca cu RurPle si EasyGUI sau cu „turtle”:
user@user:~$ python
Python 2.4.4 (#2, Apr 5 2007, 20:11:18)
[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from turtle import *
>>> import time
>>> color ("green")
>>> up()
>>> goto(0,-10)
>>> down()
>>> circle(50)
>>> circle(150)
>>> goto(0,0)
>>> goto(10,0)
>>> goto(10,30)
>>>

Profesorii germani il folosesc ca sa ii invete pe copii programare.


(vezi:http://showmedo.com/videos/series?name=pythonJensFromKidsSeries).
Cei mai mari pot intelege mai usor probleme de numere complexe, trebuie doar
sa respectati formatul acestora:

user@user:~$ python
>>> 2j * 3J
(-6+0j)
>>> 1 * complex(2,2)
(2+2j)
>>> 1 - complex(2,3)
(-1-3j)
>>> J - (2 + 3j)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
NameError: name 'J' is not defined
>>> j - (2 + 3j)
Traceback (most recent call last):
File "<stdin>", line 1, in ?
NameError: name 'j' is not defined
>>> 1j - (2 + 3j)
(-2-2j)
>>>

Iata ca sistemul de erori ne spune ca nu sunt acceptate constructii de numere


comlexe de forma „j” sau „J” , dar sunt acceptate constructii de forma „1j”.Daca avem
un numar complex definit ca „nr_z”, pentru partea sa reala se foloseste expresia
„nr_z.real” iar pentru partea sa complea „nr_z.imag” sau „abs(nr_z)” pentru modulul
acestuia.
Sau poti face calcule cu numere mari :

user@user:~$ python
>>> 12345.999999 * 999999999999.11233333
12345999998989040.0
>>> 12345.999999 * 999999999999123455666.11233333
1.2345999998989178e+25

Mai sus, am vazut ca „turtle” creaza o fereastra. Partea de „interfata” poate fi


realizata in mai multe moduri. Eu recomnad sa incepeti cu Tkinter si apoi cu wxPython.
Sa incercam un mic exemplu cu Tkinter.Pentru aceasta
trebuie sa il aveti instalat deja.Eu in debian instalez
„python-tk” cu synaptic.
user@user:~$ python
>>> from Tkinter import *
>>> fereastra = Tk()
>>> but1 = Button(fereastra,text="Nume buton")
>>> but1.pack()
>>> lab1 = Label(fereastra, text ="Text label")
>>> lab1.pack()
>>> variabila_text = StringVar()
>>> editbox1 = Entry(fereastra,textvariable = variabila_text)
>>> editbox1.pack()

Pentru a lega butonul de anumite functii se foloseste urmatorul artificiu.Codul de


mai jos:
>>> but1 = Button(fereastra,text="Nume buton")
devine
>>> but1 = Button(fereastra,text="Nume buton",command=functie_de_executat)
unde „functie_de_executat” este o functie definita anterior.
Mai exista si alte comenzi (frame, Scrollbar,Listbox,...) pentru fiecare element de
GUI.Comanda „pack” este folosita pentru impachetare catre fereastra parinte si vizual
se manifesta prin afisare elementelor GUI.
Imi aduc aminte cu placere de primele mele jocuri pe care le-am jucat in
copilarie pe un calculator HC. Erau simple dar bine facute si parca mult mai incitante.
Iata ca python vine in ajutorul nostalgiei noastre. Se instaleaza cu synaptic packetul
„python-pygame” si se trece la treaba. Pygame a fost creat ca un kit dezvoltare
multimedia care ne pune la dispozitie unelte pentru a accesa ecranul, sunete, functii
timp, mouse, joystick, controlul CD-ului si multe altele.
Mai multe exemple gasiti la http://www.pygame.org/ . Pentru a va arata totusi cat de
simplu e sa lucrezi cu pygame am va fac un mic script pentru o fereasta default:

user@user:~$ python
Python 2.4.4 (#2, Apr 5 2007, 20:11:18)
[GCC 4.1.2 20061115 (prerelease) (Debian 4.1.1-21)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys,pygame
>>> pygame.init()
(6, 0)
>>> screen1 = pygame.display.set_mode((640,480))
>>>

Gata avem pregatita fereasta pentru joc e adevarat mai avem nevoie de o
subrutina de tratarea a tastaturii si alte subrutine necesare .Oricum fereastra
principala a fost creata incateva linii de cod , fara initializari grafice de tot felul ...
Am spus destul de multe dar tostusi prea putine pentru ca python are si alti asi
in maneca.
Spre exemplu el mai stie de html , de xml , de sql , de expresii regulate , de C
(vezi:SWIG) , de C++ ( vezi:Boost), de opengl (vezi:PyOpenGL), de awk(vezi: Pyawk),
de SciPy(vezi:http://www.scipy.org/SciPy) , PyLab si toate acestea doar la o scurta
introspectie ...

(exemple de ferestre si aplicatii create cu Scipy si PyLab)

Un alt aspect pozitiv , daca nu chhiar cel mai bun lucru pe care il aduce python ,
din punctul meu de vedere, este faptul ca poate fi pus pe un simplu stick sau minicd,
impreuna cu module necesare si scripturi proprii .
Astfel avem la purtator o unealta foarte utila atunci cand mergem undeva si
trebuie sa rezolvam diferite probleme specifice fara sa mai trecem prin cautari de soft
specializat sau sa ne chinuim cu google sa gasim raspunsuri ...
Un mini manual in limba romana , il puteti lua de la
python.net/~gherman/propaganda/tut-ro/tut-ro.pdf
, unde in cateva capitole sunt explicate posibilitatile acestui minunat limbaj
suficiente pentru ca un incepator sa inteleaga acest limbaj.
Sa nu uitam ca aici am prezentat doar o infima parte din ceea ce poate el cu
adevarat. Pentru ca mai exista python poate lucra cu Openoffice, poate fi folosit la
web, pote lucra cu multimedia, etc.
Nu m-ar mira ca acest limbaj sa dainuie de acum incolo multi ani si poate de ce
nu sa il vedem chiar si prin sistemul educational.

Scripting placut !

catalinfest@gmail.com