Sunteți pe pagina 1din 11

cum sa memorezi orice fara sa tii minte

In prima lectie de programare ai vazut ca cel mai important lucru pe


care trebuie sa-l cunosti legat de programarea calculatoarelor este
acela ca dispui de un set de instructiuni elementare cu ajutorul carora
poti construi programe oricat de complexe. La fel cum un arhitect
poate realiza constructii spectaculoase folosind doar cateva materiale
de baza.
Ai avut apoi (in articolul anterior) posibilitatea de a testa cele invatate
si de a-ti exersa creativitatea intr-o maniera interactiva.
Acum e timpul sa intelegi si cel de-al doilea pilon pe care se bazeaza
programarea calculatoarelor. Utilizandu-l, nu numai ca vei putea sa iti
reduci dimensiunea programelor scriind portiuni generice, ci iti vei
extinde enorm gama de aplicatii pe care le poti realiza.
Este vorba despre variabile. Practic nu exista program care sa nu le
foloseasca. Bine, cu exceptia programelor scrise in lectiile trecute ai
putea zice. Si ai avea dreptate. Partial. Caci desi variabilele nu intervin
explicit in acele programe, ele se regasesc implicit in
instructiunile Aprinde si Stinge. Iti amintesti ca le-am prezentat generic
sub forma Aprinde(x, y) si Stinge(x, y)? Ei bine, x si y de aici sunt
variabile. Sunt niste obiecte ce pot retine valori. Apoi, cu ajutorul

acestor valori instructiunea Aprinde, de exemplu, va sti ce beculete


sa aprinda.
(A se remarca faptul ca atat Aprinde(x, y), cat si Stinge(x, y), ne duc
cu gandul laf(x, y). Va amintiti de la matematica ce notati de obicei
prin f(x, y)? O functie f de doua variabile, x si y. (Ca sa fim si mai
rigurosi, de fapt f(x, y) reprezinta valoarea acestei functii in punctul (x,
y).) Acesta este motivul pentru care instructiuni caAprinde(x,
y) si Stinge(x, y) sunt numite functii (iar scrierea lor intr-un program
poarta numele de apel al functiei). Vom vedea intr-o lectie ulterioara
ca ne putem construi singuri astfel de functii, pe baza unor functii de
baza pe care le avem la dispozitie.)
Ce este, deci, o variabila?
Am spus anterior ca este un soi de obiect (virtual) ce poate retine
valori. E ca o mica bucata de hartie pe care calculatorul poate scrie
valori cu creionul si le poate sterge cu guma de sters.
Hai sa vedem cum stau lucrurile pe exemple concrete. Sa construim,
pentru inceput, o variabila numita a. Putem face acest lucru scriind:
var a
Daca dorim sa-i dam acum lui a o valoare, sa zicem 3, o putem face
scriind pur si simplu:
a=3
(Nota: Declararea si initializarea unei variabile se poate face si intr-o
singura instructiune, de genul var a = 3 .)

Bun, avem acum o variabila numita a, in care am stocat valoarea 3.


Sa vedem cum o putem folosi. Ce credeti ca vor face, de exemplu,
instructiunile urmatoare:
Aprinde(a, 1)
Aprinde(a, a)
Daca ai zis ca prima dintre ele aprinde beculetul de la
coordonatele (3, 1), ai avut dreptate. Caci valoarea stocata in
variabila a la momentul executiei instructiunii Aprinde(a, 1) este 3, deci
instructiunea care se executa practic esteAprinde(3, 1). Similar, cea
de-a doua instructiune este echivalenta cu Aprinde(3, 3) (deci efectul
sau va fi acela de a aprinde punctul de la coordonatele (3, 3)).
Daca m-ai urmarit pana aici ar trebui sa iti fie usor sa intelegi efectul
urmatorului program:
var a = 1
Aprinde(a, 1)
Aprinde(a, 2)
a=2
Aprinde(a, 1)
Aprinde(a, 2)
In prima linie se declara variabila a si i se atribuie valoarea 1. In
urmatoarele doua linii se aprind punctele (1, 1) si (1, 2). Apoi se
atribuie variabilei a valoarea 2. (Adica valoarea anterioara (si anume
valoarea 1) se sterge, si se scrie in avaloarea 2.) Deci ultimele doua
instructiuni vor aprinde punctele (2, 1) si (2, 2).

(O modalitate mai practica de a explica functionarea unui program o


constituie comentariile. Putem introduce un comentariu intr-un
program scriind //. Atat aceste doua simboluri, cat si tot ce urmeaza
dupa ele pana la sfarsitul liniei (adica acolo unde se apasa tasta
Enter) nu va fi considerat instructiune, ci va fi ignorat de catre
calculator.)
Varianta comentata a programului anterior ar putea arata astfel:
// Program de desenare patrat
var a = 1 // definesc variabila a si o initializez cu valoarea 1
Aprinde(a, 1) // aprind punctul (a, 1), adica (1, 1) caci valoarea din
a este 1
Aprinde(a, 2) // aprind punctul (a, 2), adica (1, 2)
a = 2 // sterg valoarea anterioara scrisa in a, si scriu in variabila a
valoarea 2
Aprinde(a, 1) // aprind punctul (a, 1), adica (2, 1) caci valoarea din
a este 2
Aprinde(a, 2) // aprind punctul (a, 2), adica (2, 2)
In varianta aceasta, atat instructiunile programului, cat si explicatiile,
se pot pune laolalta intr-un acelasi program. Ba chiar este recomandat
ca orice program sa contina comentarii, pentru a facilita intelegerea
ulterioara a lui.)
Dupa atata teorie, haide sa si experimentam ceva. Copiaza, te rog,
programul anterior in caseta de mai jos, dupa care apasa butonul
Executa programul.

Gata?
Programul a avut efectul asteptat? Esti liber sa faci modificari la el si
sa vezi noile rezultate.
Ce ar fi daca in linia 4 in loc de a = 2 ai scrie a = a+1? Ce crezi ca s-ar
modifica?
Daca ai avut curiozitatea de a testa programul, atunci ai vazut ca
rezultatul final este acelasi. Ceea ce era si normal, nu?
Hai sa vedem mai indeaproape ce face instructiunea a = a+1. Mai intai
aduna 1 la valoarea stocata in a (si daca te uiti la a doua linie din
program vei vedea ca in aera stocata valoarea 1, deci rezultatul
operatiei acesteia de adunare va fi 2), dupa care memoreaza valoarea
calculata in a (bineinteles, dupa ce sterge in prealabil vechea valoare
din a).
Scrisa in cuvinte, instructiunea a = a+1 s-ar traduce in stocheaza in
variabila arezultatul adunarii dintre valoarea curenta din a si
valoarea 1.
Dar daca as vrea sa folosesc in program o a doua variabila,
numita b si avand stocata in ea valoarea 7, cum as face? Bineinteles,
cu intructiunea var b = 7. Similar, cu var c as defini o a treia variabila,
numita c. In conditiile astea, ce ar face intructiunea c = b+a? Dar
instructiunea c = b-a? Poti vedea pe viu rezultatele acestor
instructiuni ruland programul de mai jos:

var a = 3
var b = 7
var c
c = b+a
Aprinde(c, c)
c = b-a
Aprinde(c, c)
Ce s-a intamplat? Prima instructiune Aprinde(c, c) a aprins punctul de
la coordonatele (10, 10), iar cea de-a doua instructiune Aprinde(c, c) a
aprins punctul de la coordonatele (4, 4). Exact asa cum te asteptai,
nu? (In caz ca totusi e ceva neclar, te rog sa nu eziti a lasa un
comentariu cu intrebarile tale.)
Propun sa incheiem aceasta lectie introductiva despre variabile cu
analiza programului urmator:
// Defineste doua variabile
var a = 1
var b = 10
// Aprinde pe linia 1 punctul corespunzator valorii din variabila a
Aprinde(a, 1)
// Aprinde pe linia 2 punctul corespunzator valorii variabilei b
Aprinde(b, 2)
// Si acum sa definim o a treia variabila, c, si sa facem niste operatii

var c = a
a=b
b=c
// Oare ce s-a intamplat? Sa vedem in continuare
// Aprinde pe linia 3 punctul corespunzator valorii variabilei a
Aprinde(a, 3)
// Aprinde pe linia 4 punctul corespunzator valorii variabilei b
Aprinde(b, 4)
Ai rulat programul anterior? E clar ce face? Spune-ti, te rog, intrebarile
intr-un comentariu mai jos (sau lasa-ne cateva exemple sau idei de
programe interesante ce pot fi facute cu informatiile invatate pana
acum).
Dau share:

Facebook14

Twitter

Google

Email

ANTERIORUL:
U R M AT O R U L :

cum sa il desenezi pe Mickey Mouse dintr-o apasare de buton


secretul gandirii calculatoarelor

7 comments
Sign in or Post as Guest
3 people listening

+ Follow
Share
Post comment as...
Newest | Oldest | Top Comments

Andrei123May 7, 2014

Hmm, exista si coordonata 0!


FlagShare
LikeReply

GeorgeSFNov 8, 2013

Pai cred ca e simpla explicatia.


Se aprinde (1.1); (1.4); (10.2); (10.3).

FlagShare
LikeReply

GeorgeSFNov 8, 2013

Am incercat si eu o varianta de test al acestui program.


Sper ca nu l-am gresit.

// Defineste doua variabile


var a = 1
var b = 10
var c = 5
var d = 3
// Aprinde pe linia 1 punctul corespunzator valorii din variabila a
Aprinde(a, 1)
// Aprinde pe linia 2 punctul corespunzator valorii variabilei b
Aprinde(b, 2)
// Aprinde pe linia 2 punctul corespunzator valorii variabilei c
Aprinde(c, 5)
// Aprinde pe linia 2 punctul corespunzator valorii variabilei d
Aprinde(d, 7)
// Si acum sa definim o a treia variabila, c, si sa facem niste operatii
var c = a
a=b
b=c

c=d
d=a
// Oare ce s-a intamplat? Sa vedem in continuare
// Aprinde pe linia 3 punctul corespunzator valorii variabilei a
Aprinde(a, 3)
// Aprinde pe linia 4 punctul corespunzator valorii variabilei b
Aprinde(b, 4)
// Aprinde pe linia 3 punctul corespunzator valorii variabilei c
Aprinde(c, 3)
// Aprinde pe linia 9 punctul corespunzator valorii variabilei d
Aprinde(d, 9)
FlagShare

LikeReply

Florin Birleanu moderatorNov 8, 2013

@GeorgeSF Super! Spor in continuare! :-)


FlagShare
LikeReply

katySep 1, 2013

Da, am rulat :)
Se aprinde (1.1) ; (1,4) ; (2, 10) ; (3,10 )
FlagShare

LikeReply

Florin Birleanu moderatorSep 2, 2013

(Ai inversat ordinea coordonatelor. Mai intai e x (a cata coloana, de la


stanga la dreapta), iar apoi e y (a cata linie, de jos in sus).)
FlagShare

LikeReply

katySep 3, 2013

@Florin Birleanu :D
FlagShare

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