Sunteți pe pagina 1din 26

Java 1 Modul 2

2.1 BlueJ si asamblarea primului program


Pentru a incepe dezvoltarea unei aplicatii software trebuie mai intai creat proiectul. Pentru asta se
poate folosi BlueJ, mediul de programare pe care il vom utiliza in acest curs pentru dezvoltare de
aplicatii care sa exemplifice odata instalat JDK, JRE si BlueJ putem incepe scrierea fisierelor cu
extensia .java (adica cele care contin codul nativ al programului)
Crearea unui proiect nou:

In poriectul nou creat suntem pregatiti sa cream primele clase. Java este un limbaj de programare
orientat pe obiecte, prin urmare nu exista niciun program fara cel putin o clasa. Despre clase vom
discuta in urmatorul modul, insa pentru inceput, pentru a crea prima aplicatie va trebui sa cream si o
clasa. Asadar sa urmarim modul in care putem crea o noua clasa folosind mediul de programare BlueJ:

Dati un nume clasei. Standard numele de clase trebuie sa inceapa cu litera mare si, in cazul in care
este compus din mai multe cuvinte fiecare dintre acestea incepe cu litera mare. De exemplu:
NumeleClasei sau NumeleClaseiMele ...samd. Numele date pentru clase nu trebuie sa contina spatii sau
caractere speciale prcum +,=,&,(,) etc In principal numele clasei trebuie sa fie reprezentativ, adica sa
reprezinte exact ceea ce defineste sau face clasa.

Fisierul cu extensia .java este reprezentat in BlueJ de un dreptunghi de culoare portocalie. Un fisier cu
extensia .java trebuie sa contina cel putin o clasa publica si numai una. Clasa publica da numele
fisierului cu extensia .java, de exemplu, daca veti cauta in sistemul de fisiere al calculatorului pe care
lucrati, in proiectul pe care l-ati creat si salvat mai devreme ar trebui sa existe dupa crearea clasei cu
numele NumeleClasei fisierul NumeleClasei.java. De asemenea foarte important de tinut minte este ca
Java este un limbaj de programare case sensitive, asta inseamna ca face diferenta intre litere mari si
litere mici. Pentru Java, NumeleClasei nu este acelasi lucru cu numeleClasei sau cu Numeleclasei. Cele
trei nume sunt diferite si prin urmare vor fi tratate de compilator la elemente diferite ale programului.
Dupa cum stiti Java are proprietatea de portabilitate. Asta inseamna ca fiecare aplicatie este
interpretata de catre JVM (Java Virtual Machine). Mai intai totusi este necesara compilarea de care se
ocupa javac (compilatorul). Daca in BlueJ dreptunghiul care reprezinta fisierul .java este hasurat atunci
codurile continute nu sunt compilate.

Cu un dublu-click pe dreptunghiul NumeleClasei se deschide editorul in care este de acum posibil


scrierea codului. Implicit BlueJ plaseaza in fisier cateva linii de cod pe care le vom sterge de fiecare data
pentru a incepe scrierea programului de la 0 si pentru a nu fi incurcati de catre acestea.

Putem contiua prin a scrie primele linii de cod.


public static void main(String [] args){} se numeste metoda principala a programlului. Orice aplicatie
isi incepe executia de pe prima linie a metodei principale. Intre acolade vor fi scrise instructiunile
metodei.

In

exemplul

de

mai

jos

este

afisat

un

mesaj

System.out.println()

Compilarea se face foarte usor. Click dreapta pe clasa si Compile

in

consola

folosind

instructiunea

Daca nu apare nicio eroare la compilare dreptunghiul care reprezinta fisierul nu mai este hasurat.
Asta inseamna ca se poate face o executie prin trimiterea codului la executor (JVM)

Apelam metoda principala:

Consola se deschide si afisaza mesajul "Hello World!"

2.2 Date primitive


Orice program lucreaza cu date, iar pentru a lucra cu date acestea trebuiesc stocate. Deoarece
memoria unui sistem in care putem stoca informatie este limitata pentru a plasa o informatie in
memorie este necesar mai intai sa rezervam o zona in memorie in functie de tipul informatiei care va fi
stocata. O informatie poate fi stocata sub forma de numar intreg, numar real, caracter, valoare booleana
(adevarat sau fals) sau instanta. In afara de ultimul tip enumerat mai devreme toate celelalte informatii
reprezinta tipuri de date primitive. In functie de cantitatea de informatie (care depinde atat de tip cat si
de valoarea pe care dorim sa o stocam) se rezerva o zona de memorie mai mare sau mai mica in
memoria interna a sistemului. Mai jos am enumerat tipurile primitive pe care le putem folosi in
programarea cu Java:

short

int

long

float

double

byte

boolean

char

Orice zona de memorie se defineste folosind un tip de data si un nume (sau identificator); Numele se
poate alege dupa urmatoarele reguli:
1.

nu poate incepe cu cifra

2.

nu poate contine caractere speciale

3.

nu poate fi cuvant rezervat (keyword)

Sintaxa pentru rezervarea unei zone de memorie este de forma <tip> <identificator>;

Aceste zone de memorie reprezinta parti ale memoriei interne. Memoria interna se imparte in doua
zone: stack si heap. Datele primitive sunt stocate in zone rezervate din stack;
Primitivele int, long, byte, short: reprezinta zone de memorie rezervate pentru stocarea valorilor
numerice intregi. Cel mai des, dintre acestea este folosit tipul int;

Primitivele float si double: reprezinta zone de memorie folosite pentru stocarea valorilor numerice
reale. Diferenta dintre cele doua tipuri de primitive este precizia zecimalelor valorilor stocate. Chiar daca
float si double sunt folosite pentru acelasi tip de date nu putem transporta informatia dintr-un double
intr-un float in mod direct, deoarece este posibila pierderea de precizie a valorii cu care se face aceasta
operatiune. Pentru a pune totusi o valoare stocata intr-o zona de memorie double intr-un float putem
folosi conversia explicita. Acest lucru se poate face in felul urmator:
Primitiva char: poate fi folosita pentru a stoca caractere in format Unicode.
Primitiva boolean: este folosita pentru a stoca una dintre valorile true sau false; Spre deosebire de
alte limbaje de programare nu mai exista posibilitatea de a folosi valorile 1 si 0 pentru adevarat sau fals.
Pentru a reprezenta valorile adevarat sau fals (tip boolean) singura modalitate este folosirea
cuvintelor true si false. true si false se scriu numai cu litere mici si reprezinta cuvinte rezervate in
Java.

2.3 Operatori
Operatorii se clasifica in:
1.

operatori matematici: + - * / %

2.

operatori logici: && || !

3.

operatori de comparare <, >, <=, >=, ==, !=

4.

operatorul de instantiere: new

5.

operatorul de atribuire: =

Alti operatori ii vom folosi pe parcursul lectiilor urmatoare. Sa intelegem operatorii enumerati mai sus.
Unul dintre cei mai importanti operatori este operatorul de atribuire. Cu ajutorul operatorului de
atribuire poate fi pusa o valoare intr-o zona de memorie rezervata. In imaginea de mai jos aveti
exemplificat modul de folosire al operatorului de atribuire.

Operatorul de atribuire este executat de la dreapta la stanga. Asta inseamna ca in cazul in care in
partea dreapta este o expresie, aceasta va fi executata inainte de a face atribuirea. De exemplu in cazul
folosirii operatorilor matematici:

Similar folosirii operatorului + poate fi folosit oricare dintre operatorii matematici tinand cont de
functia lor. Ordinea efectuarii operatiilor din matematica se pastreaza si in cazul pogramarii:

+ este folosit pentru adunare

- este folosit pentru scadere

* este folosit entru inmultire

/ este folosit pentru obtinerea catului

% este folosit pentru obtinerea restului

In cazul in care vreau ca o operatie de scadere sa fie efectuata inainte unei operatii de inmultire pot
folosi paranteze similar ca in matematica. Atentie numai la urmatorul aspect: in programare nu exista
pentru operatii decat posibilitatea de a folosi paranteze rotunde. Aveti exemplu in imaginile de mai jos:

Atributiea de valori variabilelor char:

Operatorii de comparare pot fi folositi pentru scrierea expresiilor de tip boolean (care au ca
rezulat true sau false)

ATENTIE! Nu confundati operatorul == (de testare a egalitatii) cu operatorul = (de


comparare). Cei doi nu pot fi inlocuiti unul cu celalalt. In cazul folosirii incorecte rzultatul va
fi o eroare.
Operatori de comparare:

== testare a egalitatii

!= testare a inegalitatii

< mai mic

> mai mare

<= mai mic sau egal

>= mai mare sau egal

Operatorii logici

|| sau

&& si

! not

Intr-o expresie in care doua conditii sunt reunite folosind OR (sau) este suficient ca macar una sa fie
adevarata ca intreaga expresie sa devina adevarata.
Intr-o expresie in care doua conditii sunt reunite folosind AND (si) este suficient ca macar una dintre
ele sa fie falsa pentru ca intreaga expresie sa fie falsa.

Operatorii de comparare impreuna cu operatorii logici sunt folositi asa cum vom vedea in urmatoarea
lectie in definirea conditiilor structurilor de control.
Un operator foarte important este de asmenea si ; (punct si virgula). Acesta marcheaza intotdeauna
sfarsitul unei instructiuni.
Operatorul supraincarcat +:
Operatorul + este considerat un operator supraincarcat. Acesta poate fi folosit pentru a concatena
(alipi) doua siruri de caractere. Iata cateva exemple:

2.4 Structuri de control decizionale


Exista doua structuri de control folosite pentru a lua decizii in dezvoltarea unui program; Acestea
sunt if si switch.
Iata cum functioneaza prima dintre acestea:
if(conditie){// set de instructiuni care se executa in cazul in care conditia este adevarata
}
else
{//set

de

instructiuni

care

se

executa

daca

conditia

este

falsa

}
Blocul de instructiuni else poate lipsi in intregime daca nu este necesar sa se execute nimic in cazul in
care conditia este falsa.

Daca blocul are o singura instructiune atunci acoladele care incadreaza blocul de instructiuni pot lipsi:

Blocul else poate sa lipseasca in intregime:

switch testeaza o zona de memorie si in cazul in care aceasta are o anumita valoare se executa un
anumit set de instructiuni;
default este optional si reprezinta setul de instructiuni ce se executa daca valoarea variabilei testate
nu respecta niciunul dintre cazurile precizate;
Dupa fiecare caz trebuie pusa instructiunea break;

Putem pune cazul default daca dorim sa se execute instructiuni si in cazul in care valoarea variabilei
nu se gaseste in cazurile precizate. defaultpoate lipsi caz in care pentru orice alta valoare nu se
executa nimic. Default este pus mereu ultimul si nu necesita instructiunea break;

2.5 Structuri de control repetitive


In aceasta lectie vor fi prezentate structurile de control while, do-while si for. Structurile repetitive
repeta un set de instructiuni intotdeauna in functie de o conditie de tip boolean data.
while:
while(conditie){
//instructiuni
}
cat timp conditia care obligatoriu trebuie sa fie de tip boolean este adevarata se executa instructiunile
dintre acolade. Daca este o singura instructiune atunci acoladele pot lipsi.

Intotdeauna in cazul unei structuri de control, conditia trebuie la un moment dat sa devina falsa. In
caz contrar aceasta va executa repetarea instructiunilor la infinit si programul se va bloca. In cazul
exemplului de mai sus care afisaza in consola numerele de la 10 la 1 pe linii diferite instructiunea a=a-1
se asigura de faptul ca valoarea din zona de memorie a va deveni la un moment dat mai mica decat 1 si
deci conditia nu va ma fi adevarata.

Structura do-while functioneaza similar cu while. Diferenta este ca do-while este post-conditionata.
Daca in cazul structurii while se testeaza mai intai conditia iar apoi se executa instructiunile daca
conditia este adevarata, in cazul structurii do-while intai se executa primul set de instructiuni iar apoi se
verifica conditia.

Structura for este folosita in general pentru repetari de instructiuni de un numar fix de ori sau pentru
parcurgerea unor intervale de valori.
for are trei parti intre paranteze rotunde (partea de initializare, conditia si partea de control) si un set
de acolade care incadreaza blocul de instructiuni care se repeta.

Iata cum functioneaza structura for din exemplul de mai sus: Intai se executa prima parte i=0, apoi
se testeaza conditia. Daca conditia este adevarata se executa blocul de instructiuni. Se efectueaza a
treia parte i=i+1 apoi se verifica din nou conditia si, daca aceasta este adevarata se executa din nou
instructiunile. Acest ciclu se repeta pana cand condtia devine falsa. Operatorul ; (punct si virgula) este
de asemenea folosit, dupa cum se observa si din exemplul de mai sus pentru a separa partile unei
structuri for.

2.6 Zone de memorie: Variabile sau Constante?

De obicei zonele de memorie pe care le folosim sunt variabile. Acest lucru inseamna ca valoarea
acelei zone de memorie se modifica pe parcursul executiei programului. Exista totusi necesitatea uneori
de zone de memorie carora sa nu li se schimbe valoarea pe parcursul executiei programului. Marcam
aceste zone de memorie folosind un cuvant cheie cu valaore de modificator: final;
Daca o zona de memorie la declarare este final atunci aceasta este constanta si odata atribuita o
valoare acestei zone de memoria, valoarea atribuita nu mai poate fi modificata pe parcursul executiei
programului.

2.7 Operatori unari


Exemple de operatori unari:

++ de incrementare

-- de decrementare

+= de adunare la

-= de scadere din

*= inmultire cu

/= impartire cu

Pentru operatorii unari avem nevoie de o singura variabila cu care se opereaza. In imaginile de mai
jos aveti exemple de folosire a operatorilor de incrementare si decrementare. Operatorii de
incrementare si decrementare pot si postfixati sau prefixati. In cazul in care sunt prefixati (adica pusi
inaintea variabilei cu care se opereaza) atunci au prioritate in fata altor operatii care se executa, daca
sunt postfixati (pusi dupa variabila cu care se opereaza) atunci operatia de inrementare/decrementare
se face dupa o alta operatie.
Incrementarea este operatia de adunare cu 1 a unei valori.
Decrementarea este operatia de scadere cu 1 a unei valori.

b=5+0, adica ia valoarea 5. Dupa executia instructiunii b=b++ + a++ variabila a va avea valoarea 1
si varaibila b va avea valoarea 6;

In exemplul de mai sus, deoarece operatorii sunt prefixati, inainte se executa incrementarea iar apoi
restul operatiilor, deci, intai b este facut 6, si a devine 1 apoi de face adunarea 6+1=7

Similar functioneaza operatorul -- insa in loc de incrementare se face decrementare.


Operatorii +=, -=, *=, /= se folosesc pentru auto-operare:

a+=5 este echivalent cu a=a+5; Similar functioneaza *=, _= sau /=

2.8 Structuri de control imbricate


Notiunea de structuri de control imbricate reprezinta folosirea structurilor de control ca instructiuni ale
unei alte structuri de control. Orice structura de control este o instructiune si poate fi, prin urmare, pusa
intre acoladele unei alte structuri de control. De exemplu:

2.9 Folosirea comentariilor


Comentariile reprezinta parti ale fisierului .java care nu trebuiesc interpretate la compilare. Acestea
pot fi de exemplu explicatii ale liniilor de cod. Programatorul poate simti nevoia comentarii propriilor linii
de cod. Comentarea poate fi foarte utila atunci cand aplicatia are foarte multe linii, instructiuni si
variabile sau atunci cand se lucreaza in echipa la un program. Este mult mai usor sa iti dai seama ce
reprezinta un cod scris de un coleg daca acesta este comentat.
Comentariile sunt de trei feluri. In aceasta lectie vom discuta despre doua dintre acestea:

pe o singura linie

pe mai multe linii

de documentatie

Comentriile pe o singura linie se pun dupa simbolurile //. Tot ceea ce se afla dupa // nu este
interpretat de catre compilator pe linia respectiva.
Comentariile pe mai multe linii sunt scrise intre simbolurile /* si */ . Tot ceea ce se afla in fisierul cu
extensia . java intre acesti doi operatori nu este interpretat la compilare.

2.10 Erori
Intotdeauna exista posibilitatea de a intalni erori in scrierea programelor. In general datorita
neatentiei puteti intampina urmatoarele tipuri de erori:

de sintaxa

de logica

Erorile de sintaxa sunt erori ce apar ca urmare a scrierii unei sintaxe gresite. Nerespectarea oricarei
reguli de sintaxa duce la o eroare de compilare. Practic la intampinarea oricarei erori de sintaxa
programul nu va compila. Mediul de programare indica linia pe care apare eroarea si rolul
programatorului este de a o corecta.

In exemplul de mai sus, datorita faptului ca a fost scris cu litera mica String compilatorul nu intelege
sinaxa si afiseaza o eroare.
Erorile de logica sunt erori ce apar in executie. In cazul erorilor de logica programul este scris corect
si poate fi executat insa rezultatul nu este cel asteptat. Acest lucru se poate intampla cand algoritmul
ales nu a fost gandit corect.

2.11 Afisarea in consola


Instructiunea folosita pana in acest moment pentru a afisa in consola un mesaj a fost
System.out.println(); Intre cele doua paranteze putem fie da ca parametru un sir de caractere, fie un
numar sau chiar o valoare boolean. Instructiunea este suficient de complexa incat in acest moment nu
poate fi inteleasa in detaliu. Vom folosi pentru afisarea in consola doua instructiuni:

System.out.print()

System.out.println()

Diferenta intre cele doua este ca a doua concateneaza imediat dupa parametrul dat pentru afisare
caracterul unicode de linie noua \n. In felul acesta ceea ce va fi afisat ulterior se va afla pe urmatoarea
linie in consola.

CuprinsInchidere

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