Variabilele

• Date generale
• Operaţii posibile şi imposibile
• Modul de lucru


 Variabile - Date generale

În cazul primului nostru program, textul ce apărea pe ecran era conţinut în instrucţiunea WRITELN. Dacă am dori ca să modificăm acest text ar trebui să intrăm în program şi să modificăm însăşi programul. Acest lucru este foarte nerentabil şi dificil, deoarece nu toţi care utilizează programe sunt şi programatori.Să ne gândim că vindem un program unui client care nu ştie deloc Pascal, ce s-ar întâmpla de fiecare dată când el ar dori modificarea rezultatului programului? Ar trebui să ne cheme pe noi ca să intervenim în structura programului. Din această cauză în orice program sunt folositevariabilele. Ele pot stoca datele noastre de intrare şi ieşire, fără a fi necesară modificarea programului de către programator. Astfel toate programele fiind scrise nu pentru a rezolva o situaţie particulară sau o singură problemă, ci o familie de probleme care se bazează pe aceeaşi metodă sau formulă de rezolvare.



Variabilele - mărimi care îşi pot schimba conţinutul o dată sau de mai multe ori pe parcursul execuţiei unui program. Avem în principal patru tipuri de variabile:

integer, real - numerice;
char, string - pentru caractere;

Variabilele integer - sunt folosite pentru memorarea numerelor întregi.
Exemple de nr întregi: 0; 1; 20; -5; 100; -186;

Atentie Se pot memora numere cuprinse doar în intervalul [-32768; 32767]. Dacă vom avea nevoie să lucrăm cu numere mai mari, va trebui să folosim variabile de tip real.

Variabilele real - sunt folosite pentru memorarea numerelor reale.
Exemple de nr reale: 1.55; 2.8; -15.82; 3.14; 289.7435;

Atentie În Pascal, ca de altfel în notaţia americană, numerele zecimale nu se scriu cu virgulă ci cu punct. 1,55 = 1.55

Variabilele char - sunt folosite pentru memorarea unui singur caracter. Ca şi caractere avem toate caracterele (literele) alfabetului, cele 10 cifre, precum şi semnele de punctuaţie. Spaţiul dintre cuvinte este şi el considerat caracter. Acest tip de variabile memorează întotdeauna doar unul din aceste caractere şi le veţi folosi foarte des în programe mai complexe, dar care depăşesc programa clasei a VI-a.

Caracterele: A, B, C, … Z, a, b, c, … z, 0, 1, 2, 3 , … 9 ; , . :

Atentie Pascalul fiind conceput de americani, lipsesc cu desăvârşire literele româneşti: ă, â, î, ş, ţ.
Variabilele string - sunt folosite pentru memorarea şirurilor de caractere, sau propoziţiilor.
Exemple de string: “Tata este inginer”, “Eu merg la scoala”, “How are you!”, “bla bla bla”.



Un program nu foloseşte variabile doar pentru a citi conţinutul lor de la tastatură şi apoi al afişa întocmai cum a fost introdus. De obicei în cursul unui program se efectuează diferite operaţii asupra unor variabile.
Cunoaştem deci cele patru tipuri de variabile:
integer, real > pentru valori numerice si string , char > pentru caractere.
Operaţii se pot face asupra tuturor tipurilor de variabile, dar în principal cele mai multe operaţii se efectuează asupra variabilelor numerice. În Pascal apar unele diferenţe fată de felul de notare cum sunteţi obişnuiţi de la matematică.
Forma generala a unei operaţii de atribuire este:








Deasemenea în operaţia de atribuire a unei variabile, pot intra şi numere fixe, numite constante, al căror conţinut nu se modifică în nici un fel, niciodată.
Cel mai simplu exemplu pentru aceasta este formula mediei aritmetice a două numere a şi b, în care avem constanta doi:
media := (a+b)/2;
Atentie Dacă la adunare şi scădere simbolurile operaţiilor rămân aceleaşi, la înmulţire şi împărţire simbolurile operaţiilor se schimbă faţă de cele cunoscute din matematică:

Operaţia
Simbol în matematică
Simbol în Pascal
Adunare
+
+
Scădere
Înmulţire
inmultit
*
Împărţire
/

Tastele corespunzătoare celor patru operaţii aritmetice le puteţi găsi dispuse şi lângă tastele numerice, în partea dreaptă a tastaturii.
Deasemenea regula folosirii parantezelor pentru a schimba ordinea operaţiilor este aceeaşi ca şi la matematică.
Operaţii posibile şi imposibile:
Totdeauna trebuie să fim foarte atenţi la tipul variabilei conţinută în operaţia de atribuire:









Dăm mai jos un exemplu de program care va citi de la tastatură două numere, apoi le va aduna şi în final va afişa rezultatul adunării.

Var nr1, nr2, sum: integer;
Begin
Write (‘Introduceti primul numar=‘);
Readln (nr1);
Write (‘Introduceti al doilea numar=‘);
Readln (nr2);
sum:= nr1 + nr2; {operatia de atribuire}
Writeln (‘Suma este= ‘, sum);
end.

Conţinutul celor două numere ce trebuiesc adunate va fi stocat în două variabile nr1 şi nr2 de tip integer. Rezultatul adunării va fi depus într-o variabilă numită sum, de asemenea de tip integer. La fiecare rulare a programului se pot introduce oricare alte două numere întregi, afişându-se apoi rezultatul adunării acestora.

Observăm că variabilele rămân tot aceleaşi (nr1, nr2 şi sum) numele şi tipul lor nu se mai modifică, doar conţinutul lor poate fi altul la fiecare rulare a programului. Binenţeles acelaş lucru este valabil şi la programele anterioare: text, text2 şi numere şi în oricare program Pascal scris corect.

 Trebuie acordată mare atenţie numelui variabilelor. Acesta trebuie să fie acelaşi peste tot în program, identic cu numele atribuit în secţiunea de declaraţii. Ca exemplu dacă în secţiunea de declaraţii am declarat cele trei variabile cu numele nr1, nr2 şi sum, exact aceste nume şi numai acestea trebuiesc folosite peste tot mai departe în cuprinsul programului. Dacă am denumit deci o variabilă de intrare nr1, nu putem după aceea să-i introducem valoarea de la tastatură folosind instrucţiunea readln şi scriind readln (n1), sau readln (numar1), deoarece limbajul Pascal nu va recunoaşte cine este acest n1 sau numar1, sau orice alt nume diferit de nr1 şi prin urmare va afişa un mesaj de eroare în timpul compilării. Deasemenea numele programului scris în prima linie din program nu poate fi identic cu numele vreunei variabile din program.

Dăm mai jos un exemplu de program care va citi de la tastatură două numere întregi, apoi le va împărţi şi în final va afişa rezultatul împărţirii.

Var nr1, nr2: integer;
C: real;
Begin
Write ('Introduceti primul numar=');
Readln (nr1);
Write ('Introduceti al doilea numar=');
Readln (nr2);
C:= nr1/nr2;
Writeln ('Rezultatul este=', C);
end.

Conţinutul celor două numere ce trebuiesc împărţite unul la celălalt va fi stocat în două variabile nr1 şi nr2 de tip integer. Rezultatul împărţirii va fi depus într-o variabilă numită C (de la cât) şi care este de tipul real.

 La tipul variabilelor! Pentru a stabili corect tipul fiecărei variabile ne uităm la conţinutul pe care va trebui să-l stocheze variabila, în orice situaţie posibilă matematic.
Deşi cele două numere ce se împart sunt de tipul integer, rezultatul împărţirii lor poate fi un număr întreg sau real (cu zecimale). Ca exemplu gândiţi-vă doar la rezultatul împărţirii a 9 la 2, sau a lui 25 la 3. Deci pentru ca programul să poată funcţiona în orice situaţie, adică pentru oricare două perechi de numere întregi, rezultatul împărţirii lor trebuie conţinut într-o variabilă de tip real. De aceea am declarat variabila C de tipul real.

De reţinut: De obicei când în calculul valorii unei variabile intervin operaţii de împărţire sau extragere de radical, trebuie ca variabila să fie declarată de tip real, deoarece cu siguranţă vor fi situaţii când valoarea ei va fi un număr real.

Exerciţiu: Cunoscând cele de până acum încercaţi să scrieţi un program care calculează media aritmetică a oricaror 2 numere reale. Afişaţi rezultatul cu 3 zecimale.

Modul de lucru cu variabile


Pentru a folosi o variabilă trebuiesc urmăriţi următorii paşi:
  1. declararea variabilelor
  2. citirea lor, introducem o valoare de la tastatură ce va reprezenta conţinutul acelei variabile
  3. (opţional deocamdată) operaţii asupra variabilelor
  4. afişarea variabilelor
  1. Declararea variabilelor - declararea unei variabile se face la începutul unui program, înainte de începerea execuţiei programului. Se stabilesc astfel numărul de variabile ce vor fi folosite în program, numele variabilelor şi tipul lor.

    VAR - comandă folosită la declararea variabilelor, şi reprezintă aşa numita secţiune de declaraţii. Nume variabilă - poate fi orice nume dorit de noi : a, b, suma, coco, olala
    Atentie Sunt totuşi o serie de cuvinte care nu se pot atribui numelor unei variabile, aşa numitele cuvinte rezervate şi care sunt reţinute de către limbajul Pascal deoarece înseamnă altceva. Exemple: Write, begin, end, help, program, etc.
    Dacă avem de definit mai multe variabile de acelaşi tip, numele lor va fi separat prin virgulă. Precizare: Peste tot în program unde vedem că este vorba de o variabilă, avem de a face de fapt cu numele acelei variabile. Despre conţinutul unei variabile vorbim doar în timpul rulării programului şi numai atunci. Când un program nu este rulat, nici o variabilă scrisă în el nu are nici un conţinut. Tip variabilă - se alege oricare din cele 4 tipuri cunoscute, în funcţie de tipul datelor ce vor fi conţinute de către variabila respectivă pe timpul execuţiei programului.
  2. Citirea variabilelor: se face introducând o valoare de la tastatură şi se realizează folosind instrucţiunea READLN (nume variabilă).




    Exemple:    READLN (a);  READLN (suma);
    În momentul când programul ajunge la execuţia unei instrucţiuni READLNexecuţia programului se opreşte, pe ecran apărând o linie verticală ce clipeşte intermitent, numită prompter. Aceasta însemnă că în momentul şi la locul respectiv programul aşteaptă introducerea de la tastatură de către utilizator a valorii ce va fi conţinută în variabila resprectivă.
  3. Operaţii asupra variabilelor - (vom vorbi mai târziu)
  4. Afişarea variabilelor: pentru a vedea pe monitor conţinutul unei variabile, se foloseşte instrucţiunea WRITE (nume variabilă) sau WRITELN (nume variabilă).




    Exemple:    WRITE (a);  WRITELN (suma);
Reluăm acum primul nostru program, dar făcut mult mai flexibil prin folosirea variabilelor:
program text; Var propoz: string; begin  Readln (propoz);  Write (propoz); end.
Primul rând al programului îl reprezintă numele programului şi are doar rolul de a ne ajuta să identificăm mai uşor un program, atunci când avem mai multe. El poate fi acelaş sau diferit de numele fişierului în care am salvat programul, dar nu poate fi identic cu numele nici unei alte variabile din program.
Programul de mai sus conţine o variabilă căreia i-am dat numele propoz şi care este de tipulstring, ea putând stoca deci orice şir de caractere dorit. De fiecare dată cînd programul este lansat în execuţie el poate citi de la tastatură orice şir de caractere (propoziţie) prin intermediul instrucţiunii Readln, urmând ca după aceea propoziţia respectivă să fie afişată pe monitor, prin execuţia instrucţiunii Write. Programul afişează deci, automat orice propoziţie introdusă anterior de la tastatură, fără a se mai face nici o modificare în programul Pascal. Observăm deci că la fiecare rulare a programului, dacă clientul introduce altă propoziţie, conţinutul variabilei noastre se schimbă. De aceea se numeşte şi variabilă.
Este posibil ca în unele programe mai complexe conţinutul unor variabile să se poată schimba şi de mai multe ori pe parcursul execuţiei programului.
Să vedem acum ce se întâmplă în interiorul calculatorului în timpul rulării programului şi ce rol au principalele componente ale calculatorului. Cu 1, 2, 3, 4 am notat ordinea circulaţiei datelor conţinute de variabila noastră.





program_text



În momentul declarării variabilelor (deci înainte de begin şi de execuţia oricărei instrucţiuni) programul comandă automat microprocesorului să rezerve un loc în memoria internăpentru depozitarea ulterioară a conţinutului variabilei (în exemplul nostru variabilapropoz).
Ca o precizare putem spune că locaţiile de memorie rezervate pot ocupa o celulă de memorie (adică 1 octet) sau mai multe, depinde de tipul fiecărei variabile, dar nu intrăm în amănunte.
Mai departe când execuţia programului ajunge la instrucţiunea Readln programul aşteaptă ca utilizatorul să introducă de la tastatură şirul de caractere (propoziţia) dorită (în cazul exemplului nostru, să zicem Clasa a 6-a). Aceasta va constitui de acum înainte conţinutul variabileipropoz (adică şirul de caractere Clasa a 6-a) şi care va fi depozitat în memoria internă, în locul rezervat pentru aceasta.
După aceea în momentul executării instrucţiunii Write, se cere în program afişarea conţinutului variabilei propoz. Pentru a afla acest conţinut microprocesorul comandă citirea locaţiei de memorie rezervat variabilei respective şi afişarea lui.
Mai observăm că instrucţiunile se execută în ordinea succesivă în care sunt scrise în program,începând cu prima instrucţiune ce urmează după cuvântul rezervat begin iar în cele din urmă programul terminându-se cu cuvântul rezervat end. Pentru o mai bună înţelegere a funcţionării programului, puteţi eventual încerca şi execuţia pas-cu-pas a programului.