Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more
Download
Standard view
Full view
of .
Save to My Library
Look up keyword
Like this
2Activity
0 of .
Results for:
No results containing your search query
P. 1
Python

Python

Ratings: (0)|Views: 735|Likes:
Published by Cătălin

More info:

Published by: Cătălin on Apr 26, 2009
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

02/01/2013

pdf

text

original

De ce sa i nvatam s a pr ograman in
PYTHON!?
\u201eUsor si batraneste \u2013 asa omul reuseste!\u201d

...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 \u201ebatranesti\u201d. Poate o sa te puna in dificultate la
inceput , e normal sa \u201edoara\u201d 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 \u201epygame\u201d. 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 \u201ebegin\u201d si \u201eend\u201d, in C avem parantezale \u201e{}\u201d , 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 \u201eTAB\u201d.Iata , mai jos este reprezentat cum se grupeaza acestea.

instructiunea1
instructiunea2
instructiunea3

instructiunea4
instructiunea5
instructiunea6
instructiunea7

incepe executia cu instructiunea1,apoi \u201eENTER\u201d
se apasa tasta \u201eTAB\u201d se trece la instructiunea2, apoi
tasta \u201eENTER\u201d
se apasa tasta \u201eTAB\u201d se scrie instructiunea3, \u201eENTER\u201d
se apasa de doua ori \u201eTAB\u201d, se scrie intructiunea4,
apoi \u201eENTER\u201d si tot asa!

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 \u2013 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 \u201epython\u201d , o sa apara prompterul specific python \u201e>>>\u201d 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 \u201e.py\u201d, apoi
executam scriptul scriind in consola \u201epython nume_script.py\u201d.

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 \u201einput\u201d si \u201eprint\u201d sunt instructiuni de
\u201efeedback\u201d. 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 \u201eturtle\u201d:

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 \u201ej\u201d sau \u201eJ\u201d , dar sunt acceptate constructii de forma \u201e1j\u201d.Daca avem
un numar complex definit ca \u201enr_z\u201d, pentru partea sa reala se foloseste expresia

\u201enr_z.real\u201d iar pentru partea sa complea \u201enr_z.imag\u201d sau \u201eabs(nr_z)\u201d 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 \u201eturtle\u201d creaza o fereastra. Partea de \u201einterfata\u201d poate fi
realizata in mai multe moduri. Eu recomnad sa incepeti cuTkinter si apoi cuwxPython .
Sa incercam un mic exemplu cu Tkinter.Pentru aceasta
trebuie sa il aveti instalat deja.Eu in debian instalez
\u201epython-tk\u201d 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 \u201efunctie_de_executat\u201d este o functie definita anterior.

Mai exista si alte comenzi (frame, Scrollbar,Listbox,...) pentru fiecare element de GUI.Comanda \u201epack\u201d 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
\u201epython-pygame\u201d 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 lahttp ://www.pygame.o rg/ . 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

You're Reading a Free Preview

Download
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->