Sunteți pe pagina 1din 16

Informatica aplicata-note de curs constructii20092010@gmail.com; http://scdsd.bluepink.

ro/cursur i

Cursul 2
1. Date si algoritmi

• Datele sunt numere, caractere, imagini sau alte reprezentari simbolice care pot fi folosite de
catre om sau pot fi inregistrate in memoria calculatorului si prelucrate de acesta, sau transmise
pe o linie de comunicatie digitala. Atunci cand datele sunt interpretate de catre un anumit
sistem de prelucrare, ele devin informatie.
• Algoritmul este o secventa de actiuni care trebuie efectuate pentru a realiza o anumita sarcina.
Algoritmul trebuie sa aiba urmatoarele caracteristici:
a. Caracter discret. Fiecare actiune prevazuta in algoritm are un inceput si un sfarsit si dureaza un
anumit interval de timp. O actiune incepe numai dupa ce s-a terminat cea precedenta, fiind numita si
pas al algoritmului.
b. Caracter finit. Rezultatul trebuie sa se obtina dupa un numar finit de pasi.
c. Caracter determinist. De cate ori se aplica acelasi algoritm asupra acelorasi date, trebuie sa se obtina
acelasi rezultat.
d. Caracter realizabil. Toate actiunile prevazute in algoritm trebuie sa poata fi realizate in mediul de
executie pentru care a fost conceput algoritmul respectiv. In general, la elaborarea algoritmului se are
in vedere o multime finita de actiuni, realizabile in mediul de executie considerat.
e. Caracter universal. Algoritmul se aplica asupra anumitor date de intrare, pentru a se obtine anumite
date de iesire. In general, la elaborarea algoritmului se are in vedere ca acesta sa se aplice oricarui set
de date de intrare dintr-o anumita multime de astfel de seturi de date avuta in vedere.

Obs: Algoritmul poate fi definit si astfel:


Algoritmul consta dintr-o multime ordonata de pasi executabili, descrisi fara echivoc, care definesc un
proces finit.
In cazul problemelor de prelucrare a datelor, remarcam de asemenea unitatea indisolubila intre
date si algoritm: algoritmul serveste pentru prelucrarea unor date, iar datele sunt astfel reprezentate si
ordonate pe suportul de intrare, incat sa fie tratabile de catre algoritm.

Exemplu
Un dreptunghi are baza de 2,75 si inaltimea de 1,4 unitati. Care sunt aria si perimetrul
dreptunghiului?
Enuntul de mai sus furnizeaza persoanei care rezolva problema urmatoarele informatii:
- se are in vedere un dreptunghi;
- baza dreptunghiului este de 2,75 unitati;
- inaltimea dreptunghiului este de 1,4 unitati;
- se cer aria si perimetrul dreptunghiului.
Enuntul nu contine decat o descriere a problemei, nu si modul in care ea trebuie rezolvata.
Succesiunea de instructiuni care trebuie executate de catre sistem pentru a rezolva problema
data:
1. Citeste de pe suportul de intrare un numar real si inregistreaza-l in memorie ca valoare a
variabilei b.
2. Citeste de pe suportul de intrare un numar real si inregistreaza-l in memorie ca valoare a
variabilei i.
3. Daca valoarea b este nula sau negativa sau daca valoarea i este nula sau negativa
atunci scrie pe suportul de iesire textul "datele de intrare sunt gresite" si opreste

1
Informatica aplicata-note de curs constructii20092010@gmail.com; http://scdsd.bluepink.ro/cursur i

executarea programului;
altfel treci la pasul urmator.
4. Inmulteste valoarea b cu valoarea i si inregistreaza in memorie ca valoare a variabilei A.
5. Aduna valoarea b cu valoarea i si inregistreaza rezultatul ca valoare a variabilei d.
6. Inmulteste valoarea d cu 2 si inregistreaza rezultatul ca valoare a variabilei p.
7. Scrie pe suportul de iesire textul "aria dreptunghiului este" urmat de valoarea variabilei A.
8. Scrie pe suportul de iesire textul "perimetrul dreptunghiului este " urmat de valoarea variabilei
p.
9. Opreste executarea programului.
2. Reprezentarea algoritmilor
Pseudocodul este un limbaj de reprezentare a algoritmilor asemanator cu limbajul natural, dar in care
se foloseste numai un set strict limitat de constructii sintactice riguros definite, astfel incat sa nu poata
da nastere la interpretari diferite. El este totusi mai slab formalizat decat limbajele de programare,
deoarece se adreseaza omului si nu masinii.
Algoritmul de mai sus poate fi scris in pseudocod:
1. Citeste b;
2. Citeste i;
3. Daca b<=0 sau i<=0
atunci Scrie "datele de intrare sunt gresite"; Stop;
4. Calculeaza A= b*i;
5. Calculeaza d=b+i;
6. Calculeaza p=d*2;
7. Scrie "aria dreptunghiului este " + A;
8. Scrie "perimetrul dreptunghiului este "+p;
9. Stop.
Schema logica este reprezentarea grafica a algoritmului, in care pentru fiecare tip de actiune se folosesc anumite simboluri
grafice specifice, iar pentru a indica ordinea executarii actiunilor se folosesc sageti.

2
Informatica aplicata-note de curs constructii20092010@gmail.com; http://scdsd.bluepink.ro/cursur i

3. Conceptul de program
Programul este un ansamblu de instructiuni, scrise intr-un limbaj de programare, pe care calculatorul
le executa pentru a indeplini o anumita sarcina .

Programul trebuie sa contina doua categorii de informatii:


a) descrierea datelor de intrare, de iesire si auxiliare care vor fi prelucrate;
b) descrierea algoritmului aplicat pentru prelucrarea acestor date.
Program = Date + Algoritm
Aceasta formula pune in evidenta legatura stransa dintre date si algoritm si atentia care trebuie sa li se
acorde ambelor componente la elaborarea programului.

4. Minimul de resurse necesare pentru a elabora programe in Java


Un program in limbajul Java parcurge urmatoarele etape:
1. Conceperea programului. Aceasta etapa include formularea problemei, alegerea modului de
rezolvare, stabilirea structurilor de date si alegerea algoritmului de calcul si se face, cel putin in cazul
aplicatiilor mici, fara a folosi calculatorul.
2. Editarea fisierului (fisierelor) sursa. Se editeaza pe calculator unul s-au mai multe fisiere de text,
care contin programe in limbajul Java. Acestea se numesc fisiere sursa. Pentru editarea lor se poate
folosi orice editor de texte simplu (cum sunt Edit din sistemul MS-DOS sau Notepad sub Windows sau
orice editor in mod text din sistemele Unix sau Linux). Fisierele sursa au extensia java.
3. Compilarea. Fisierele sursa, editate in limbajul Java, se compileaza pentru a obtine programele
binare sub forma de coduri de octeti (bytecode). In acest scop se foloseste un compilator, iar fisierele
obtinute prin compilare au extensia class. Daca exista erori de sintaxa, compilatorul le semnaleaza si nu
genereaza cod de octeti. Programatorul trebuie sa elimine erorile respective din fisierul sursa si sa il
compileze din nou. Acest procedeu se repeta pana cand se elimina toate erorile de sintaxa si se obtine
fisierul cu extensia class corespunzator.
4. Testarea si depanarea programelor. Codul de octeti obtinut prin compilare (fisierul cu extensia
class) nu ami contine erori de sintaxa, dar poate contine erori semantice sau de conceptie. Un astfel de
program va putea fi executat, dar rezultatele nu vor fi corecte. Pentru a depista astfel de erori,
programul este executat cu date de test, confruntandu-se rezultatele obtinute prin program cu cele
corecte pentru datele respective. Daca apar neconcordante, programul trbuie depanat, adica trebuie
gasite instructiunile gresite si inlocuite cu altele corecte. Pentru depanare se poate folosi un program
depanator.
5. Executarea. Pentru executarea unei aplicatii Java este necesar sa se foloseasca un interpretor – JVM

Compilatorul Java, numit javac;


Interpretorul Java, numit java;
Vizualizatorul de miniaplicatii numit appletviewer;
Depanatorul de programe Java numit jdb (Java debugger);
Generatorul de fisiere de documentatie javadoc;
O colectie arhivata de pachete de clase necesare pentru elaborarea programelor.
Se ofera, de asemenea, o serie de aplicatii si miniaplicatii demonstrative, pentru care se dau si
programele sursa, care pot fi foarte utile pentru o mai buna insusire a limbajului de catre programatori.

Dintre cele patru etape enumerate mai sus, compilarea se face folosind compilatorul javac, executarea
aplicatiilor se face folosind interpretorul java, iar executarea miniaplicatiilor (appleturilor) se face
folosind vizualizatorul appletviewer.

3
Informatica aplicata-note de curs constructii20092010@gmail.com; http://scdsd.bluepink.ro/cursur i

5. Prima aplicatie in limbajul Java

5.1. Editarea programului

Ca o prima aplicatie, ne propunem sa scriem un program in limbajul Java, care sa afiseze pe ecranul
calculatorului cuvintele "Cursul 2!". Este evident ca aceste cuvinte vor apare pe ecran numai daca
executarea aplicatiei noastre a reusit cu adevarat!

Pentru aceasta, folosind un editor de texte, vom edita un fisier numit PrimaAplicatie.java, in
care vom introduce urmatorul program:

/* Prima aplicatie in limbajul Java.


Programul afiseaza un text pe ecran.
*/

class PrimaAplicatie {
public static void main(String args[]) {
System.out.println("Cursul 2!");
}
}

5.2. Forme sintactice folosite:


5.2.1. Forma sintactica a definitiei unei clase

Intrucat Java este un limbaj de programare orientat pe obiecte, programul insusi este considerat un
obiect care apartine unei clase.
O clasa se defineste, respectand urmatoarea forma generala:

class <nume_clasa> {
<corpul_clasei>
}

In exemplul de mai sus, simbolul neterminal <nume_clasa> a fost inlocuit de noi cu numele aplicatiei
PrimaAplicatie, iar <corpul_clasei> , consta in cazul nostru, din metoda (procedura) main(),
pentru care s-a respectat forma generala data in continuare. Cuvantul cheie class si cele doua acolade
sunt simboluri terminale, prezenta lor fiind obligatorie.

5.2.2. Forma sintactica a metodei main()

public static void main(String args[]) {


<corpul_metodei_main>
}

Prima linie a acestei forme sintactice contine cuvintele cheie public static void, numele
metodei, main si declararea unui parametru, String args[]. Corpul metodei main este cuprins
intre doua acolade, care sunt si ele obligatorii. Semnificatiile tuturor acestor componente vor fi

4
Informatica aplicata-note de curs constructii20092010@gmail.com; http://scdsd.bluepink.ro/cursur i

explicate in capitolele urmatoare. Pentru inceput, consideram doar ca aceasta forma sintactica este un
sablon care trebuie respectat.

5.2.3. Forma sintactica a unei aplicatii simple

Substituind in forma sintactica a clasei simbolul neterminal <corpul_clasei> prin forma sintactica
a metodei main, obtinem urmatoarea forma sintactica a unei aplicatii simple, in care clasa aplicatiei
contine o singura metoda:

class <nume_clasa> {
public static void main(String args[]) {
<corpul_metodei_main>
}
}

Aceasta forma va fi respectata de noi in toate exemplele de aplicatii pe care le vom da in prima parte a
acestui manual. Vom introduce apoi si aplicatii care contin mai multe metode. Orice aplicatie trebuie
sa contina metoda main(). Definirea claselor care nu sunt aplicatii (si deci nu contin metoda main),
este o problema care se va trata in studiul mai aprofundat legat de Programare orientata pe obiecte in
limbajul Java

In exemplul nostru, corpul metodei main este alcatuit dintr-o singura instructiune:

System.out.println("Cursul 2!");

In aceasta instructiune este invocata metoda println(), care apartine dispozitivului de iesire out
(in cazul nostru ecranul) din clasa System. Prin aceasta metoda se cere sa se afiseze pe ecran linia de
text: "Prima noastra aplicatie a reusit".

5.2.4. Comentarii in fisierele sursa

Comentariile sunt texte explicative, care nu sunt luate in consideratie de catre compilator, dar pot fi
utile omului pentru o mai buna intelegere a programului.
Fisierele sursa in limbajul Java pot contine trei forme de comentarii:
a/ comentarii care se pot extinde pe mai multe linii din fisier succesive si sunt scrise sub forma
/* <textul_comentariului> */
b/ comentarii "de sfarsit de linie", care au forma
// <textul comentariului>
in care textul comentariului se extinde de la simbolul // pana la sfarsitul liniei pe care acesta se afla;
c/ comentarii pentru documentarea automata a programului, scrise sub forma:
/** <textul comentariului> */
si se deosebesc de cele de la punctul a numai prin faptul ca incep prin simbolul /**.

5.2.5. Indentarea
Se numeste indentare decalarea inceputului liniilor de text fata de marginea din stanga a paginii.
In limbajul Java, compilatorul admite ca instructiunile programului sa fie scrise una in continuarea
celeilalte. Sfarsitul unei instructiuni este detectat de compilator prin prezenta terminatorului ';' (punct si

5
Informatica aplicata-note de curs constructii20092010@gmail.com; http://scdsd.bluepink.ro/cursur i

virgula). Trecerea la linie noua in fisierul sursa nu este necesara pentru compilator, ci pentru o mai
usoara urmarire a programului la citirea lui de catre om. Tocmai in acest scop, este recomandabil sa se
respecte anumite conventii de "punere in pagina " a textului programului.
Atunci cand o forma sintactica este cuprinsa in alta, cea din interior este indentata, adica deplasata spre
dreapta fata de cea in care este cuprinsa. De exemplu, in forma class, acolada de inceput a corpului
clasei este pusa pe prima linie, iar acolada de sfarsit este aliniata exact sub prima litera a liniei de
inceput, respectiv a cuvantului cheie class. In schimb corpul clasei (respectiv metoda main()) a
fost scris decalat spre dreapta. Aceeasi conventie s-a aplicat si in cazul metodei main(): Acolada
care precede corpului metodei a fost pusa pe linia de titlu, iar acolada de sfarsit a fost pusa sub prima
litera a acestuia; in schimb corpul metodei a fost decalat spre dreapta.
Aplicarea conventiei de indentare prezentata aici are urmatoarele avantaje:
- se poate urmari cu usurinta unde cum sunt incorporate diferite forme sintactice una in alta;
- se poate verifica cu usurinta daca nu s-a uitat sa se puna acolada de inchidere a unei astfel de
forme;
- se poate verifica cu usurinta carei forme ii corespunde fiecare acolada.

5.3. Compilarea si executarea programului


Compilarea si executarea programului se fac in regim interactiv, prin dialog cu sistemul de operare al
calculatorului. Intucat promptul sistemului (simbolul pe care acesta il afiseaza cand asteapta o
comanda de la utilizator) difera de la un sistem de operare la altul, in cele ce urmeaza vom considera ca
acesta este simbolul $. De asemenea, pentru a distinge comenzile introduse de utilizator de textele
afisate de calculator, le vom reprezenta pe primele cu caractyere italice (inclinate).
Compilarea si executarea exemplului PrimaAplicatie se va face din subdirectorul care contine fisierul
sursa al aplicatie si va decurge astfel:
> javac PrimaAplicatie.java
> java PrimaAplicatie
Cursul 2!
>
Prima comanda din secventa de mai sus a pus in functiune compilatorul javac, dandu-i ca parametru
numele fisierului sursa PrimaAplicatie.java. Ca rezultat al compilarii, in subdirectorul nostru,
in care se gaseste si fisierul sursa, a aparut fisierul PrimaAplicatie.class, care contine
programul compilat sub forma de cod de octeti (bytecode). Se poate verifica aceasta cu usurinta, dand
comanda dir. Compilatorul nu a semnalat erori, intrucat acestea nu au existat in program, astfel ca,
dupa incheierea compilarii, s-a revenit in sistemul de operare, care a afisat din nou promptul $,
asteptand o noua comanda.

A doua comanda a pus in executie interpretorul java, dandu-i ca parametru numele clasei
PrimaAplicatie (de data aceasta fara extensia class). Interpretorul a executat programul si - ca
rezultat - pe ecran a aparut afisat textul:

Cursul 2!

dupa care comanda a fost redata sistemului de operare, care a afisat iarasi promptul $.

5.4. Cazul prezentei in program a unor erori de sintaxa


Daca in program exista erori de sintaxa, compilatorul le semnaleaza si nu genereaza cod de octeti, deci
programul nu poate fi executat. Programatorul trebuie sa corecteze aceste erori, dupa care sa ceara

6
Informatica aplicata-note de curs constructii20092010@gmail.com; http://scdsd.bluepink.ro/cursur i

recompilarea. Este posibil ca si de aceasta data sa se constate erori, care trebuie corectate. Se reitereaza
acest ciclu compilare-corectare pana cand se constata ca nu s-au mai semnalat erori.
Ca exemplu, sa consideram fisierul sursa PrimaAplicatie1.java in care s-a alterat fisierul din
exemplul anterior, introducandu-se intentionat o eroare. Incercarea de a compila acest fisier decurge
astfel:

> javac PrimaAplicatie1.java


PrimaAplicatie1.java:7:String not terminated at end of line.
System.out.println("Cursul 2!);
^
PrimaAplicatie1.java:8: ')' expected.
}
^
2 errors
>

La semnalarea erorilor, compilatorul furnizeaza urmatoarele informatii:


- numele fisierului sursa, urmat de numarul liniei din fisier in care s-a gasit eroarea si de explicarea
erorii. De exemplu: in fisierul PrimaAplicatie1.java, linia 7, s-a gasit un sir de caractere (engl:
string) care nu este terminat pana la sfarsitul liniei, adica ghilimelele cu care s-a inceput acest sir nu se
inchid pana la sfarsitul liniei respective;
- reproducerea liniei in care s-a constatat eroarea, semnalandu-se sub ea prin caracterul ^ locul in care
aceasta eroare a fost constatata; in exemplul nostru, se indica pozitia la care incepe sirul de caractere in
cauza.
- numarul total de erori constatate.

Cea de a doua eroare semnalata in exemplul de mai sus este mai subtila: intrucat nu s-a depistat in
linia 7 sfarsitul sirului (caracterul " prin care trebuie sa se incheie acesta), se considera ca toate
caracterele existente pana la sfarsitul liniei respective fac parte din acest sir. Compilatorul cauta, deci,
in continuare paranteza prin care ar trebui sa se incheie argumentul metodei println(). Constata
ca, in linia 8, a gasit deja acolada de sfarsit al metodei main() fara sa fi intalnit paranteza cautata,
ceeace a si semnalat. Au fost deci constatate in total 2 erori, desi efectiv exista una singura.

5.5. Afisarea pe ecran a unor texte

Prezentam modul in care se pot realiza in limbajul Java aplicatii, al caror unic obiectiv este afisarea pe
ecran a unor mesaje sub forma de text.

Orice text este format din una sau mai multe linii de text, iar fiecare linie de text este un sir de
caractere, care se termina cu un caracter special de sfarsit de linie.

Prin caracter intelegem aici orice simbol tipografic elementar: o litera, o cifra, un semn de punctuatie
etc.

5.5.1. Metodele print si println

Pentru afisarea pe ecran a sirurilor de caractere se pot folosi urmatoarele doua instructiuni:

7
Informatica aplicata-note de curs constructii20092010@gmail.com; http://scdsd.bluepink.ro/cursur i

System.out.print(<sir_de_caractere>);
System.out.println(<sir_de_caractere>);

Prin <sir_de_caractere> se intelege o succesiune de caractere oarecare, cuprinse intre ghilimele,


de exemplu "abcd 123 *&^ XYmn". Iata exemple de astfel de instructiuni:

System.out.print("Acesta este un exemplu de sir");


System.out.println("Acesta este un exemplu de sir");

Prima instructiune afiseaza pe ecran sirul de caractere primit ca argument, fara a trece la linia
urmatoare. In schimb, a doua instructiune, dupa ce a afisat acest sir da si comanda de trecere la
inceputul liniei urmatoare. In engleza print inseamna "tipareste". Denumirea println este o
prescurtare de la print line (tipareste o linie).

Mentionam ca, in limbajul Java, orice instructiune se incheie cu simbolul ';' (punct si virgula).

Exemplu:

class Afisari {
public static void main(String argv[]) {
System.out.print("Acesta este ");
System.out.print("un exemplu de");
System.out.println(" linie de text");
System.out.print("Iar aceasta");
System.out.println(" este o alta linie");
}
}

Variante pentru compilarea si executarea acestui nou program:

1. NetBeans:................................
2. Din linie de comanda:

>javac Afisari.java
>java Afisari

Se va afisa:
Acesta este un exemplu de linie de text
Iar aceasta este o alta linie
$

Observatie: cand in program s-a folosit metoda print(), afisarea sirului de caractere urmator s-a
facut pe aceeasi linie, in continuarea ultimului sir afisat. Pentru ca intre cuvinte sa apara un spatiu liber,
a fost necesar sa avem grija sa-l introducem fie la sfarsitul unui sir (de ex. dupa "Acesta este "), fie la
inceputul celui urmator (de ex. " linie de text"). In schimb, cand s-a folosit metoda println(), dupa
afisarea sirului corespunzator s-a trecut la linie noua.

8
Informatica aplicata-note de curs constructii20092010@gmail.com; http://scdsd.bluepink.ro/cursur i

Putem folosi metoda println() fara a afisa nimic, numai pentru a trece la linie noua, ca in
urmatorul exemplu de program:

class Afisari1 {
public static void main(String argv[]) {
System.out.println("Prima linie");
System.out.println();
System.out.println();
System.out.println("A patra linie");
}
}

Variante pentru compilarea si executarea acestui nou program:

1. NetBeans:.....................
2. Din linie de comanda:

>javac Afisari1.java
>java Afisari1

Se va afisa:
Prima linie

A patra linie
$

Observam cu usurinta ca efectul celor doua instructiuni succesive System.out.println() a fost


afisarea a doua "linii vide" (liniile a doua si a treia).

5.5.2. Concatenarea sirurilor

Prin concatenarea a doua siruri se obtine un nou sir, format din cele doua puse unul dupa altul. In
limbajul Java, concatenarea sirurilor se indica prin operatorul '+'. Astfel, rezultatul concatenarii
"Acesta este "+"un sir concatenat"
va fi sirul:
"Acesta este un sir concatenat"

Operatia de concatenare este asociativa, astfel ca expresia:


"Acesta "+"este "+"un "+sir"
genereaza sirul:
"Acesta este un sir".

Remarcam ca, in toate cazurile, a trebuit sa avem grija sa introducem, acolo unde erau necesare, si
spatiile libere dintre cuvinte.

Ca exemplu putem da programul:

9
Informatica aplicata-note de curs constructii20092010@gmail.com; http://scdsd.bluepink.ro/cursur i

class Afisari2 {
public static void main(String argv[]) {
System.out.println("Acesta " + "este un " + "sir");
}
}

Variante pentru compilarea si executarea acestui nou program:

1. NetBeans:.......................
2. Din linie de comanda:

>javac Afisari2.java
>java Afisari2
Acesta este un sir
>

Am obtinut rezultatul asteptat, adica afisarea unui singur sir, rezultat din concatenare.
fisierului sursa), deci va fi pus in executie tot prin instructiunea java Afisari2.

6. Unitatile lexicale ale limbajului Java

Unitatile lexicale, numite si lexeme (engl. token, lexeme) sunt unitatile lexicale minime ale limbajului.
Acestea sunt simboluri, formate din unul sau mai multe caractere, care au o anumita semnificatie in
limbaj. Dupa rolul indeplinit, unitatile lexicale sunt: identificatori, cuvinte cheie, cuvinte rezervate,
literali, separatori, operatori, comentarii si spatii.

6.1. Identificatori

Numele date programelor sau componentelor acestora (clase, variabile, metode etc.) se numesc
identificatori. Identificatorii se aleg de catre programator, respectand anumite reguli.

In limbajul Java, identificatorii sunt siruri formate din litere, cifre si caractere de subliniere ('_'), care
incep cu o litera. Lungimea identificatorului nu prezinta importanta, insa acesta nu poate contine spatii
libere sau alte caractere, decat cele mentionate aici.

Exemple de identificatori valabili:

PrimaClasa
aplha
viteza
v15XB7
pretDeVanzare
pret_de_vanzare

Este clar acum ca si exemplele date anterior ( Afisari, main, String, argv, system,
out, print, println) sunt, de asemenea, identificatori.

10
Informatica aplicata-note de curs constructii20092010@gmail.com; http://scdsd.bluepink.ro/cursur i

Se obisnuieste ca numele de clase sa inceapa cu litera majuscula. De asemenea, se obisnuieste ca


separarea intre cuvinte, in cadrul identificatorilor compusi din mai multe cuvinte ale limbajului natural,
sa se faca incepand fiecare cuvant cu litera majuscula, dar se poate face si prin caracterul de subliniere
'_'. Acestea nu sunt insa reguli sintactice, ci doar conventii neobligatorii.

Programatorul poate adopta orice identificatori care respecta regulile si conventiile de mai sus. Desigur
insa ca folosirea unor identificatori care au semnificatie pentru om, cum ar fi viteza sau PretDeVanzare
este preferabila celor fara semnificatie, cum ar fi v15XB7, deoarece usureaza intelegerea programului.
Amintim insa ca, pentru calculator, identificatorii nu au nici o alta semnificatie, deci, din acest punct de
vedere, toate exemplele de identificatori date aici sunt la fel de bune.

6.2. Cuvinte cheie si cuvinte rezervate

In orice limbaj de programare, exista un set de cuvinte, numite cuvinte cheie, care sunt considerate
simboluri sintactice si nu pot fi folosite in program ca identificatori.

In limbajul Java, exista urmatoarele cuvinte cheie:

abstract double int strictfp


boolean else interface super
break extends long switch
byte final native synchronized
case finally new this
catch float package throw
char for private throws
class goto protected transient
const if public try
continue implements return void
default import short volatile
do instanceof static while

Dintre acestea, const si goto nu sunt folosite in prezent, dar ele au fost introduse in tabela
cuvintelor cheie in vederea unei eventuale utilizari viitoare.

Observam acum ca toate exemplele de cuvinte cheie date la inceputul acestui subcapitol (class,
public, static, void) sunt prezente in tabela de mai sus.

6.3. Cuvinte rezervate

Se considera cuvinte rezervate acele cuvinte, care nu pot fi folosite ca identificatori, avand semnificatii
speciale. Cuvintele cheie sunt si ele considerate in majoritatea limbajelor, inclusiv Java, drept cuvinte
rezervate. In afara de acestea, in limbajul Java exista urmatoarele cuvinte rezervate: true, false,
null.

11
Informatica aplicata-note de curs constructii20092010@gmail.com; http://scdsd.bluepink.ro/cursur i

Primele doua sunt valorile logice adevarat si fals, iar al treilea are semnificatia de referinta nula. De
fapt, aceste cuvinte rezervate sunt o forma speciala de literali.

6.4. Literali

Literalii sunt reprezentarile in fisierele sursa ale valorilor constante. Exemple de literali:
- caractere: 'a', 'A', '+', '$', '5';
- siruri de caractere: "sir de caractere", "abc$79.28#^z";
- numere intregi: 14726, -25413;
- numere reale: 12.7389, -0.05673, 2.3075E12, -1.4237E-5;
- valori logice: true, false;
- referinta nula: null.

Am subliniat faptul ca literalul este forma sub care o anumita valoare este reprezentata in fisierul
sursa, deci in programul scris in limbaj de nivel superior (in cazul nostru in limbajul Java). Reamintim
ca forma de reprezentare a acelorasi valori in memoria interna a calculatorului (forma interna) este
diferita de cea externa. Vom reveni asupra regulilor de scriere a literalilor in capitolul urmator, cand
vom prezenta tipurile de date din limbajul Java.

6.5. Separatori

Separatorul este un caracter care delimiteaza formele sintactice sau le separa intre ele. In limbajul Java
se folosesc urmatorii separatori:
{ } ( ) [ ] ; , .
Spatiul liber si operatorii indeplinesc, de asemenea, rolul de separatori.

Aproape toti acesti separatori au fost deja folositi in exemplele date in acest capitol.

6.6. Operatori

Operatorii sunt simboluri ale unor operatii. Am folosit deja simbolul + ca operator de concatenare
(deci simbol al operatiei de concatenare). Operatorul opoate fi format din unul sau mai multe caractere.
Entitatea asupra careia se aplica operatorul se numeste operand. Dupa numarul de operanzi deosebim:
operatori unari, care se aplica unui singur operand, de ex. operatorul - in expresia -x; utilizarea
operatorului unar se face, de regula, sub forma "prefix" operator operand, in care operatorul
se pune in fata operandului; uneori insa se foloseste si forma "postfix"
operand operator
in care operatorul se pune dupa operand;
operatori binari, care se aplica asupra a doi operanzi, fiind situat intre acestia; de ex. operatorul de
concatenare + in expresia "acesta este "+" un exemplu" sau operatorul de adunare a doua
numere + in expresia 17+28.Operatorii binari se folosesc sub forma "infix"
operand1 operator operand2
in care operatorul este situat intre cei doi operanzi;
operatori ternari, care se aplica asupra a trei operanzi; in limbajul Java exista un singur operator
ternar ( ? :) folosit in expresiile conditionale. Operatorul ternar se scrie sub forma
operand1 ? operand2 : operand3
12
Informatica aplicata-note de curs constructii20092010@gmail.com; http://scdsd.bluepink.ro/cursur i

in care operand1 are o valoare logica (true sau false), iar ceilalti doi operanzi reprezinta
actiuni.

Din exemplele de mai sus, observam ca semnificatia unui operator poate sa depinda de context, ca in
cazul operatorului +, care a fost folosit atat pentru operatia de concatenare a sirurilor, cat si pentru cea
de adunare a numerelor.

Lista a operatorilor folositi in limbajul Java (se vor discuta si analiza in cursurile si laboratoarele
urmatoare):

+ - * / % ++ --
== <= >= !=
& | ~ ^
&& || !
<< >> >>>
= += -= *= /= &= |= ^= ~= <<= >>= >>>=
() [] {} .
new instanceof
?:

Din punct de vedere matematic, operatorii sunt functii cu unul, doua sau trei argumente
(argumentele fiind operanzii).

Ex1:
Considerand urmatoarele class E1{
instructiuni scrise public static void main(String [] args){
intr-un program Java, int n=0, x=1;
care sunt valorile lui n=x++ + x++;
n si x dupa executarea n=n++ - x++;
fiecarei instructiuni? n=x-- - x++;
int n=0, x=1; System.out.println ("n = “+n+”x = “ +x
n=x++ + x++; }
n=n++ - x++; }
n=x-- - x++;

Ex2:
a. Scrieţi valoarea pe care o va
afişa algoritmul alaturat dacă
se citeşte numărul 16389;
b. Realizati si rulati programul
Java corespunzator.
c. Scrieţi cea mai mică valoare
de patru cifre distinctecare
poate fi citită pentru variabila
n, astfel încât să seafişeze
valoarea 0.

13
Informatica aplicata-note de curs constructii20092010@gmail.com; http://scdsd.bluepink.ro/cursur i

Tema: Se vor redacta raspunsurile la Ex1 si Ex2 in Wordpad/Word/OfficeOrg si se


trimite fisierul Ex1_Ex2.doc impreuna cu programele in Java Ex1.java si
Ex2.java, intr-un fisier C2_nume+prenume.7z prin e-mail la adresa
constructii20092010@gmail.com. La subject: C2_nume+prenume;
Termen: 10 zile de la tinerea cursului.

6.7. Comentarii

Dupa cum s-a aratat deja, in fisierele sursa pot fi introduse comentarii, care au rolul de a da omului,
care citeste programul respectiv, anumite explicatii necesare pentru o mai buna intelegere a acestuia.
Din punct de vedere sintactic, intregul comentariu este privit ca o singura unitate lexicala, care este
ignorata de catre compilator, deci nu are efect asupra codului de octeti generat de acesta.

6.8. Spatii

Intre unitatile lexicale ale programului pot fi introduse oricat de multe spatii libere, fara ca acestea sa
aiba influenta asupra sintaxei sau semanticii programului. Mai multe spatii libere succesive sunt tratate
de compilator ca si cand ar fi un singur spatiu.

6.9. Conceptul de tip de date

Prin tip de date (data type) se intelege o multime de valori, careia i se asociaza o multime de operatii
asupra valorilor respective.

In fiecare limbaj de programare exista un set de tipuri de date primitive, numite si tipuri de date
fundamentale sau elementare. Acestea sunt tipuri predefinite in limbajul respectiv, deci ele nu trebuie
sa fie definite de catre programator. Cu ajutorul acestor tipuri primitive, programatorul poate sa
construiasca propriile sale tipuri de date derivate. In acest scop, limbajul de programare ii pune la
dispozitie anumite modalitati de construire.

In principiu, majoritatea limbajelor de programare admit ca tipuri de date primitive numerele intregi si
reale, caracterele si valorile logice (booleene). Pot exista insa mai multe tipuri de numere intregi sau
reale, care sa difere intre ele prin lungimea zonei de memorie alocate. Pot exista, de exemplu, numere
intregi reprezentate pe unul, doi, patru sau opt octeti, ele fiind considerate tipuri de date diferite.

In cele ce urmeaza, vom descrie tipurile de date primitive ale limbajului de programare Java, aratand
pentru fiecare modul de reprezentare in memorie, multimea de valori si multimea de operatii.

Tipurile de date primitive in limbajul Java

In limbajul Java exista urmatoarele tipuri de date primitive:

A. Tipul de date void este folosit pentru a arata lipsa unui tip de date (in engleza, void
inseamna gol, vid, lipsa, fara valoare. Este folosit acolo unde sintaxa instructiunii cere un tip de date,
dar - in situatia data - in locul respectiv nu trebuie indicata o anume valoare. Un exemplu este folosirea
tipului void in definirea metodei main().

14
Informatica aplicata-note de curs constructii20092010@gmail.com; http://scdsd.bluepink.ro/cursur i

B. Date logice: tipul boolean, care contine valorile logice true (adevarat) si false (fals).
C. Date sub forma de caractere: tipul char, care contine toate caracterele: litere, cifre, semne de
punctuatie, simboluri matematice etc.
D. Date numerice:
D1. Numere intregi de diferite lungimi
byte - numere intregi reprezentate intern pe un octet;
short - numere intregi reprezentate intern pe doi octeti;
int - numere intregi reprezentate intern pe patru octeti;
long - numere intregi reprezentate intern pe opt octeti;
D2. Numere reale (in virgula mobila) cu diferite precizii
float - numere reale in simpla precizie (reprezentate intern pe patru octeti);
double - numere reale in dubla precizie (reprezentate intern pe opt octeti).

6.10. Variabile. Declaratii de tip


Conceptul de variabila
• In matematica, variabila este un simbol caruia i se asociaza o valoare dintr-o anumita multime
de valori, care constituie domeniul de definitie al variabilei respective.
• In programare, valoarea variabilei trebuie sa fie reprezentata in memoria calculatorului la o
anumita adresa, iar in locul domeniului de definitie trebuie specificat tipul de date
corespunzator. De asemenea, simbolul variabilei este inlocuit printr-un nume, care este un
identificator. In consecinta, numim variabila o zona de memorie care poarta un nume si care
pastreaza o anumita valoare, apartinand unui tip de date.
• Programatorul care foloseste un limbaj de nivel inalt, cum este si limbajul Java, nu trebuie sa
cunoasca adresa de memorie, la care este plasata valoarea variabilei, si nici reprezentarea
interna a acesteia, fiind suficient sa-i cunoasca numele si tipul. Alocarea de spatiu in memorie
pentru fiecare variabila se face, dupa caz, de catre compilator sau interpretor. In schimb, numele
si tipul trebuie declarate de catre programator.
• In limbajul Java, orice variabila trebuie declarata inainte de a fi utilizata. Prin declararea
variabilei se intelege precizarea, pentru compilator, a tipului si numelui acesteia. Initializarea
variabilei se face atunci, cand acesteia i se da pentru prima data o valoare si deci i se aloca
spatiu in memorie. Daca, la declararea variabilei, aceasta nu este si initializata in mod explicit,
atunci ea este initializata cu o valoare implicita, care va fi specificata la descrierea fiecarui tip.

Anexa:

La fiecare laborator se va utiliza mediul de dezvoltare NetBeans in scopul scrierii si rularii


programelor scrise in Java: va fi creat un proiect in NetBeans (ex: Laborator N) , care va fi
salvat in directorul personal – F:\Constructii\<nume student>.
1. Crearea unui proiect nou
Pentru a crea un proiect nou selectam File -> New Project. Se va deschide o fereastra cu
tipurile de proiecte pentru care se ofera suport. Se va alege General -> Java Application
si se apasa Next.

Se va deschide o fereastra in care trebuie introduse numele si locatia noului proiect. Se deselecteaza
caseta CreateMainClass, si se apasa Finish. Se va oberva in fereastra Projects noul

15
Informatica aplicata-note de curs constructii20092010@gmail.com; http://scdsd.bluepink.ro/cursur i

proiect creat, care contine: un director pentru fisierele sursa, un director pentru fisierele test si doua
directoare cu alte informatii utilizate in proiect.

2. Crearea claselor
Pentru a crea o noua clasa, se va selecta New -> New File. Se va deschide o fereastra cu mai
multe tipuri de aplicatii.

Functie de tipul de clasa necesar, se alege optiunea si se apasa Next. Se introduce numele noii
clase create, se selecteaza proiectul in cadrul caruia se creaza clasa (din lista Projects) si se
apasa Finish. Se va observa faptul ca numele clasei este adaugat in directorul cu fisiere sursa din
fereastra Projects.

3. Compilarea si rularea unui program Java


Se deschide clasa ce trebuie compilata, alegand-o din fereastra Projects, directorul Source
Packages. Pentru compilare:
- Se selecteaza Build -> Compile nume_clasa.java ( sau se apasa F9)
- Se executa click dreapta pe clasa selectata, si se selecteaza Compile File

Se observa in fereastra Output, situata in partea inferioara a interfetei NetBeans, rezultatul


compilarii programului: erorile (daca sunt) sau mesajul BUILD SUCCESSFUL.

In ultimul caz, se va selecta Run -> Run Main Projects (daca se doreste lansarea in
executie a intregului proiect) sau Run File (daca se doreste doar rularea clasei respective).
Rularea clasei se face si prin comanda Run File din meniul pop-up afisat la executarea de click
dreapta pe clasa selectata.

4. Rularea unui program Java impreuna cu o lista de argumente pentru metoda main()
Se selecteaza din fereastra Projects proiectul care contine clasa ce trebuie rulata. Se face
click dreapta, si se alege optiunea Properties.

Se alege categoria Run, si apoi numele clasei principale din proiect (clasa se poate selecta
utilizand butonul Browse). Se introduc argumentele metodei principale in campul Arguments. Se
apasa Finish.

16

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