47425138 program are java

132
 Programare Java Curs - 1 INSTRUCTIUNI SI EXPRESII Toate activitatile ce se realizeaza intr-un program Java pot fi rezumate la o serie de instructiuni . O instructiune ( statement ) este o comanda simpla , scrisa intr-un limbaj de programa re si care determina o actiune . Instructiunile sunt actiuni elementare ale unui program Java . Mai jos putem vedem mai multe exemple de instructiuni Java simple : int varsta=30; import java.awt.dnd; System.out.println(“Text “); Jucator.scor=45000; Unele instructiuni produc o valoare , ca in cazul in care se aduna doua numere . Aceste instructiuni se numesc expresii . O expresie este o instructiune care are ca rezultat producerea unei valori . Valoarea poate fi pastrata  pentru o folosire ulterioara in program , poate fi folosita imediat intr-o alta instructiune sau poate f i ignorata . Valoarea produsa de o instructiune este numita valoare de retur . Unele expresii produc o valoare de retur numerica , cum ar fi cazul cand se aduna doua numere ; altele  produc valori booleene   adevarat sau fals   sau pot produce chiar un obiect Java . Chiar daca majoritatea programelor Java contin o singura instructiune pe fiecare linie aceasta este doar o optiune de formatare , care nu stabileste unde incepe si unde se termina o i nstructiune ci are scopul  principal de a mari lizibilitatea programu lui . De fapt , fiecare instructiune Java se termina cu “ ; ” . Intr -o singura linie se pot introduce astfel mai multe instructiuni fara a determina probleme :  j.culoare=”galben”; j.alegere=false; Instructiunile sunt grupate in Java folosind acoladele { si } . Un grup de instructiuni organizate intre acolade se numeste bloc . VARIABILE SI TIPURI DE DATE Variabilele reprezinta un loc unde poate fi pastrata informatia intr-un program aflat in executie . Valoarea poate fi modificata oricand in cadrul programului . Pentru a crea o variabila trebuie sa ii dati un nume si sa stabiliti ce tip de informatie va stoca . De asemenea , in momentul crearii puteti sa atribuiti variabilei o valoare initiala . Exista trei tipuri de variabile in Java : variabile de instanta , variabile de clasa si variabile locale . Variabilele de instanta sunt folosite pentru a defini atributele unui obiect . Variabilele de clasa definesc atributele unei intregi clase de obiecte si s e aplica tuturor instantelor acesteia . Variabilele locale sunt folosite in interiorul definitiilor metodelor sau al blocurilor de instructiuni din cadrul unei metode . Ele pot fi folosite doar atunci cand metoda sau blocul este executat de interpretorul Java , dupa care isi inceteaza existenta . - 1 -

Upload: damian-vilcu

Post on 22-Jul-2015

65 views

Category:

Documents


0 download

TRANSCRIPT

Programare Java Curs - 1

INSTRUCTIUNI SI EXPRESII Toate activitatile ce se realizeaza intr-un program Java pot fi rezumate la o serie de instructiuni . O instructiune ( statement ) este o comanda simpla , scrisa intr-un limbaj de programare si care determina o actiune . Instructiunile sunt actiuni elementare ale unui program Java . Mai jos putem vedem mai multe exemple de instructiuni Java simple : int varsta=30; import java.awt.dnd; System.out.println(Text ); Jucator.scor=45000; Unele instructiuni produc o valoare , ca in cazul in care se aduna doua numere . Aceste instructiuni se numesc expresii . O expresie este o instructiune care are ca rezultat producerea unei valori . Valoarea poate fi pastrata pentru o folosire ulterioara in program , poate fi folosita imediat intr-o alta instructiune sau poate fi ignorata . Valoarea produsa de o instructiune este numita valoare de retur . Unele expresii produc o valoare de retur numerica , cum ar fi cazul cand se aduna doua numere ; altele produc valori booleene adevarat sau fals sau pot produce chiar un obiect Java . Chiar daca majoritatea programelor Java contin o singura instructiune pe fiecare linie aceasta este doar o optiune de formatare , care nu stabileste unde incepe si unde se termina o instructiune ci are scopul principal de a mari lizibilitatea programului . De fapt , fiecare instructiune Java se termina cu ; . Intr-o singura linie se pot introduce astfel mai multe instructiuni fara a determina probleme : j.culoare=galben; j.alegere=false; Instructiunile sunt grupate in Java folosind acoladele { si } . Un grup de instructiuni organizate intre acolade se numeste bloc .

VARIABILE SI TIPURI DE DATE

Variabilele reprezinta un loc unde poate fi pastrata informatia intr-un program aflat in executie . Valoarea poate fi modificata oricand in cadrul programului . Pentru a crea o variabila trebuie sa ii dati un nume si sa stabiliti ce tip de informatie va stoca . De asemenea , in momentul crearii puteti sa atribuiti variabilei o valoare initiala . Exista trei tipuri de variabile in Java : variabile de instanta , variabile de clasa si variabile locale . Variabilele de instanta sunt folosite pentru a defini atributele unui obiect . Variabilele de clasa definesc atributele unei intregi clase de obiecte si se aplica tuturor instantelor acesteia . Variabilele locale sunt folosite in interiorul definitiilor metodelor sau al blocurilor de instructiuni din cadrul unei metode . Ele pot fi folosite doar atunci cand metoda sau blocul este executat de interpretorul Java , dupa care isi inceteaza existenta .

-1-

Cu toate ca aceste trei tipuri de variabile sunt create asemanator , variabilele de clasa si de instanta sunt folosite intr-un alt mod decat variabilele locale . In continuare vom trata variabilele locale celelalte doua tipuri vor fi detaliate mai tarziu . OBS : Spre deosebire de alte limbaje Java nu are variabile globale ( utilizabile in orice parte a unui program ) . Variabilele de clasa si de instanta sunt folosite pentru a comunica informatii despre un obiect sau altul si pot inlocui nevoia de variabile globale . Inainte de a folosi o variabila in Java trebuie mai intai sa o declaram prin indicarea numelui si a tipului de informatie pe care il va stoca . Formatul declaratiei este prezentat in continuare , specificandu-se intai tipul de informatie si apoi numele : int maxim; String numeutilizator; boolean stareTerminare; Variabilele locale pot fi declarate in orice loc in interiorul unei metode , la fel ca oricare alta instructiune Java insa trebuie declarate inainte de a fi folosite . In mod normal declararea variabilelor urmeaza imediat dupa instructiunea care defineste metoda . Public static void main(String argumente[]) { int total; String titlu; Boolean activare; } Daca vrem sa cream mai multe variabile de acelasi tip le putem declara pe toate in aceeasi instructiune , separate de , : String strada , oras , tara ; Variabilelor li se poate atribui o valoare atunci cand sunt create prin atribuire : int codposta=7000; String nume=Alex; boolean alegere=true; int varsta=50 , inaltime=170; Dupa cum se poate vedea avem si posibilitatea de a atribui valori mai multor variabile de acelasi tip . Variabilelor locale trebuie sa li se atribuie valori inainte de a fi folosite in program , altfel acestea nu se vor compila . Definitiile variabilelor de instanta si de clasa primesc o valoare initiala in functie de tipul informatiei pe care o stocheaza : variabilele numerice : 0 caracterele : \0 variabilele booleene : false obiectele : null

Numele variabilelor in Java trebuie sa inceapa cu o litera , cu underscore ( _ ) sau cu $ ele nu pot incepe cu o cifra . Dupa primul caracter numele variabilelor pot contine orice combinatie de cifre si litere . Trebuie sa retinem ca Java tine cont de litere mari si mici . Din aceasta cauza un program poate avea doua variabile diferite : una numita X si alta x sau una alb si alta ALB . In practica s-a impus o regula de denumire a variabilelor Java : numele sunt formate din cuvinte sugestive iar in cazul in care sunt necesare mai multe cuvinte primul caracter al numelui este mic iar inceputul fiecarui cuvant este scris cu majuscula , ca in exemplele de mai jos :

-2-

Button incarcaFisier; int codZona; boolean definesteScorMaxim;

TIPURI DE VARIABILE Dupa cum am vazut declaratia de variabila contine in afara numelui si tipul informatiei stocate . Acest tip poate fi : un tip de date de baza numele unei clase sau interfete un tablou

In continuare prezentam tipurile de date de baza ale limbajului . Exista opt tipuri de baza pentru stocarea intregilor , numerelor in virgula mobila , caracterelor si valorilor booleene . Aceste tipuri mai sunt cunoscute si ca tipuri primitive deoarece fac parte integranta din limbajul Java si nu sunt obiecte , lucru care le face mai eficient de folosit . Aceste tipuri de date au aceeasi dimensiune si caracteristici indiferent de sistemul de operare si de platforma folosita spre deosebire de alte tipuri de date din alte limbaje de programare . Pentru stocare intregilor avem patru tipuri de date : - byte - short - int - long - pe 8 biti - valori intre -128 si 127 - pe 16 biti - valori intre -32768 si 32767 - pe 32 biti - valori intre -2147483648 si 2147483647 - pe 64 biti - valori intre -9223372036854775808 si 9223372036854775807

Toate aceste tipuri sunt cu semn ceea ce inseamna ca pot stoca numere pozitive sau negative . Tipul folosit pentru o variabila depinde de domeniul de valori de care este nevoie . Un alt tip de numar ce poate fi stocat este cel reprezentat in virgula mobila ; pentru acestea exista tipurile float si double . Numerele in virgula mobila sunt numerele care au o parte zecimala . Tipul float este suficient in majoritatea cazurilor , pastrand numere intre 1,4E-45 si 3,4E38 . Daca totusi este necesar se poate folosi tipul real double ce poate stoca numere intre 4,9E-324 si 1,7E308 . Tipul char este folosit pentru caracterele individuale , cum ar fi litere , cifre , semne de punctuatie si alte simboluri . Ultimul dintre cele opt tipuri de baza este boolean . Spre deosebire de alte limbaje valorile pentru variabilele de acest tip nu sunt 1 si 0 ci true si false . Toate tipurile de variabile prezentate folosesc litere mici si asa trebuie folosite in cadrul programelor . Exista clase care au aceleasi nume cu acestea , dar incep cu litera mare de exemplu Boolean sau Char . Aceste clase au alt rol in programarea Java astfel incat trebuie folosite diferit de tipurile de baza .

TIPURI DE CLASE

In afara celor opt tipuri de baza o variabila poate fi de tip clasa : String numeDeFamilie=Popescu; Culoare par; Atunci cand o variabila are drept tip o clasa inseamna ca variabila refera un obiect al clasei respective sau al uneia dintre subclasele sale . Referirea la o superclasa ca tip de variabila este folositoare atunci cand variabila poate fi una dintre mai multe subclase diferite . Declararea unei variabile de tip Object inseamna ca poate stoca orice obiect .

-3-

OBS : Java nu are un echivalent al instructiunii typedef din C . Pentru a declara noi tipuri in Java se declara o noua clasa iar variabilele pot folosi aceasta clasa drept tip . Dupa ce o variabila a fost declarata i se poate da o valoare folosind operatorul de atribuire , = : idCod=8546; imbracatRapid=false;

COMENTARII

Una dintre metodele cele mai importante de crestere a lizibilitatii unui program este folosirea comentariilor . Comentariile reprezinta informatii introduse intr-un program doar in ajutorul persoanelor care incearca sa-si dea seama ce anume se intampla in program . Compilatorul Java ignora total comentariile atunci cand pregateste versiunea executabila a fisierului sursa Java . Exista trei tipuri diferite de comentarii pe care le putem utiliza in programele Java . Prima modalitate de a introduce comentarii in program este de a il prefixa cu doua simboluri slash // . Orice incepe dupa aceste semne si pana la sfarsitul liniei este considerat comentariu : int oreCredit=3; // defineste orele de credit pentru curs Daca dorim sa introducem un comentariu care ocupa mai mult de un rand trebuie sa incepem cu combinatia /* si sa incheiem cu combinatia */ . Ultimul tip de comentariu este proiectat pentru a fi interpretabil si de catre calculator . Daca incepem comentariul cu /** si il incheiem cu */ atunci comentariul este interpretat ca reprezentand documentatia originala referitoare la functionarea clasei si a metodelor sale publice . Acest tip de comentariu poate fi citit de utilitare ca JAVADOC din pachetul JDK . Acest utilitar foloseste aceste comentarii pentru a crea un set de pagini web care documenteaza programul , ierarhia sa de clase si metodele .

LITERALE

Literalele sunt numerele , textul si alte informatii care reprezinta direct o valoare . Mai explicit , literalele reprezinta un termen apartinand programarii , care inseamna de fapt ca ceea ce tastam este ceea ce vom obtine . Java are mai multe literale pentru intregi . Numarul 4 de exemplu este un literal pentru tipul int . El poate fi atribuit de asemenea variabilelor byte sau short deoarece el este suficient de mic si pentru aceste doua tipuri . Un literal intreg mai mare decat poate stoca o variabila int este considerat automat ca avand tipul long . Putem indica faptul ca un literal este un intreg de tip long prin adaugarea sufixului L ( sau l ) . De exemplu urmatoarea instructiune stocheaza valoarea 4 intr-un intreg de tip long : long totalPagini=4L; Pentru a reprezenta o valoare negativa putem folosi literalul impreuna cu semnul minus ( ) . In Java putem folosi si literali in sistem octal sau hexazecimal . Pentru a folosi un literal intreg in octal trebuie sa il prefixam cu cifra 0 ; numarul octal 777 trebuie astfel scris ca 0777 . Intregii hexazecimali se folosesc prefixati cu 0x ca de exemplu 0xFF .

-4-

Literalele in virgula mobila folosesc caracterul punct pentru punctul zecimal . Toate literalele in virgula mobila sunt automat considerate de tip double . Pentru a specifica tipul float adaugam F ( sau f ) ca mai jos : float valoarePi=3.1415F; Putem folosi si exponenti in literalele de virgula mobila folosind litera E ( sau e ) urmata de exponent : double x=12e22; doube y=19E-70; Literalele caracter sunt exprimate printr-un singur caracter incadrat de ghilimele simple : a , # sau 3 . Unele caractere literale reprezinta caractere care nu sunt tiparibile sau accesibile pe tastatura . Mai jos vom vedea coduri speciale care pot reprezenta aceste caractere speciale : \n = new line ( linie noua ) \t = tab \b = backspace \r = revenire la capat de rand ( carriage return ) \f = formfeed ( salt la pagina noua ) \\ = semnul \ \ = ghilimele simple \ = ghilimele duble \_ = octal \x_ = hexazecimal \u_ = caracter unicode ( standard pe 16 biti spre deosebire de ASCII standard care presupune doar 128 de caractere )

In cazul ultimelor trei coduri se va inlocui in practica semnul _ cu un numar sau o cifra hexazecimala . Ultimele literale pe care le putem folosi intr-un program Java sunt sirurile de caractere . Un sir ( string ) in Java este un obiect si nu un tip de date primar . Sirurile nu sunt pastrate in tablouri ( ca in C de exemplu ) . Deaorece sirurile sunt obiecte Java avem si metode care pot fi folosite pentru combinarea si modificarea sirurilor precum si pentru a determina daca doua siruri au aceeasi valoare . Literalele sir constau dintr-o serie de caractere incadrate intre ghilimele duble : String autor=Ion Popescu; String parola=password; Sirurile pot contine si caractere speciale prezentate anterior : String exemplu=Text intre ghilimele \CITAT\; System.out.println(Primul rand \n Al doilea rand); String titlu=Invatati singuri Java\u2122; In ultima instructiune , secventa \u2122 produce simbolul TM ( pe sistemele configurate sa suporte Unicode ) . Atunci cand se foloseste un literal sir Java stocheaza valoarea sa ca obiect String . Nu trebuie sa cream explicit un nou obiect ca in cazul celorlalte obiecte cu care vom lucra deci este la fel de usor de lucrat cu acest tip ca si cu tipurile primare . Sirurile sunt diferite in ceea ce priveste acest aspect nici unul dintre tipurile primare nu sunt pastrate ca obiecte atunci cand sunt folosite .

EXPRESII SI OPERATORI .

-5-

O expresie reprezinta o instructiune care produce o valoare . Cele mai folosite expresii sunt cele matematice ca in continuare : int x=3; int y=4; int z=x*y; Ultima instructiune dintre cele de mai sus este o expresie . Operatorul de multiplicare * este folosit pentru inmultirea dintre x si y iar rezultatul produs de expresie va fi pastrat intr-o variabila z de tip intreg . Valoarea produsa de o expresie este numita si valoare de retur . Aceasta valoare poate fi atribuita unei variabile si folosita in diferite feluri in programele noastre . Operatorii reprezinta simboluri speciale folosite in functii matematice , in unele tipuri de instructiuni de atribuire sau in comparatii logice .

OPERATII ARITMETICE

In Java exista cinci operatori folositi pentru operatiile aritmetice de baza : + * / % Adunare Scadere Inmultire Impartire Modulo

Fiecare operator de mai sus foloseste cate doi operanzi cate unul de fiecare parte a operatorului . Operatorul de scadere poate fi folosit si pentru a nega un singur operator . Un lucru care merita atentie sporita in ceea ce priveste operatorul de impartire este tipul operanzilor folositi . Daca stocam rezultatul unei impartiri intr-un intreg acesta va fi rotunjit la un numar intreg pentru ca tipul int nu poate lucra cu valori in virgula mobila . De exemplu expresia 21 / 5 are rezultatul 4 daca acesta este stocat intr-un int . Impartirea modulo ( % ) produce ca rezultat restul impartirii . In expresia 21 / 5 rezultatul pe care il vom obtine va fi 1 . In general majoritatea operatiilor aritmetice cu intregi produc un rezultat de tip int indiferent de tipul initial al operanzilor . Daca lucram cu alte tipuri numere in virgula mobila sau intregi long trebuie sa ne asiguram ca operanzii au acelasi tip cu cel la care vrem sa ajungem . Mai jos avem prezentat un exemplu care integreaza folosirea tuturor operatorilor aritmetici :

class Amoeba { public static void main (String argumente[]) { int x=6; short y=4; float a=.12f; System.out.println("ati inceput cu " + x + " amoebe"); System.out.println("\tDoua s-au casatorit si partenerii lor s-au mutat la ele."); x=x+2; System.out.println("Aveti acum " + x); System.out.println("\tSe declanseaza mitoza , care dubleaza numarul de amoebe."); x=x*2; System.out.println("Avem acum " + x); System.out.println("\tIncepe o lupta. " + y + " amoebe pleaca.");

-6-

x=x-y; System.out.println("Avem acum " + x); System.out.println("\tAtac al paramecilor ! Am pierdut o treime din colonie."); x=x-(x/3); System.out.println("Am ramas cu " + x + " amoebe"); System.out.println("Costul intretinerii zilnice per amoeba : " + a); System.out.println("Costul total al intretinerii zilnice : " + (a*x)); } }

Comentand pe scurt aceasta aplicatie Java extrem de simpla observam ca in liile 3- 5 se creaza trei variabile ce primesc in acelasi timp si valori initiale ; variabilele x si y sunt declarate de tipul int iar variabila a este declarata numar in virgula mobila float deoarece tipul predefinit in Java pentru numere in virgula mobila este double trebuie sa adaugam sufixul f la sfarsitul literalului pentru a indica ( si forta ) tipul float . In cadrul programului apare in mai multe instructiuni sintagma System.out.println ; Aceasta metoda este folosita in aplicatii pentru a afisa siruri si in general informatii pe dispozitivul standard de iesire in cele mai multe cazuri ecranul . System.out.println() preia un singur argument ( intre paranteze ) : un sir . Pentru a prezenta mai mult de o variabila sau un literal ca argument pentru println() se poate folosi operatorul + , pentru a concatena aceste elemente intr-un singur sir .

ATRIBUIREA UNEI VALORI

Atribuirea este o expresie , ea producand un rezultat . In practica atribuirea poate apare intr-un sir de instructiuni : x=y=z=10; Rezultatul acestei instructiuni este initializarea celor trei variabile cu valoarea 10 . Partea din dreapta a unei expresii de atribuire este intotdeauna calculata inainte de a avea loc atribuirea propriu-zisa . Acest lucru face posibila folosirea unei expresii de felul urmator : int x=5; x=x+2; Logic se calculeaza intai x+2 , rezultatul fiind 7 si apoi aceasta valoare este atribuita variabilei x . Atribuirea este operatia cea mai des intalnita in programare si in consecinta au aparut mai multi operatori speciali pentru diferite cazuri de atribuire . Mai jos vom vedea operatorii de atribuire speciali precum si echivalentele functionale ale acestora :

X+=Y X-=Y X*=Y X/=Y

X=X+Y X=X-Y X=X*Y X=X/Y

Acesti operatori de atribuire sunt echivalenti perfect cu instructiunile pe care le inlocuiesc dar trebuie avuta mare atentie la utilizarea lor ; in cazul folosirii acestor operatori in cadrul unor expresii mai complexe exista cazuri in care acesti operatori nu mai sunt echivalenti . Ca exemplu putem lua situatia urmatoare : X=20; Y=5; X=X/Y+5; si X/=Y+5;

-7-

Rezultatele celor doua instructiuni vor fi diferite : in primul caz rezultatul va fi 9 iar in cel de-al doilea 2.

INCREMENTAREA SI DECREMENTAREA

O alta operatie uzuala in programare este adaugarea sau scaderea unei unitati dintr-o variabila intreaga . Exista operatori speciali pentru aceste expresii operatori numiti de incrementare si decrementare . Incrementarea unei variabile inseamna a adauga 1 la valoarea sa iar decrementarea unei variabile inseamna a scadea 1 din valoarea sa . Operatorul de incrementare este ++ iar cel pentru decrementare este . Acesti operatori sunt plasati imediat inainte sau dupa numele unei variabile : int X=7; X=X++; In exemplul de mai sus variabila X este incrementata de la 7 la 8 . In cazul in care operatorii de incrementare sau decrementare sunt plasati inaintea variabilei atunci ei se numesc operatori prefix iar in cazul in care apar dupa variabila se numesc operatori sufix . Intr-o expresie simpla , de exemplu variabila-- , folosirea unui operator prefix sau sufix nu schimba rezultatul . Atunci cand operatiunile de incrementare sau decrementare fac parte dintr-o expresie mai complexa optiunea intre prefix si sufix devine importanta . Sa comentam putin exemplul de mai jos : int x,y,z; x=42; y=x++ ; z=++x ; Aceste doua expresii produc rezultate diferite din cauza diferentelor intre operatorii sufix si prefix . Atunci cand folosim operatori sufix , ca in y=x++ , variabila y primeste valoarea lui x inainte ca aceasta sa creasca cu 1 astfel incat y va fi egal cu 42 ; la folosirea operatorilor prefix , ca in z=++x , variabila x este mai intai incrementata si apoi valoarea sa este atribuita lui y , astfel incat z va avea valoarea 44 . Ca si incazul operatorilor speciali de atribuire trebuie avuta mare grija in cazul folosirii operatorilor de incrementare si decrementare in cazul unor expresii mai complexe existand posibilitatea introducerii unei erori destul de greu de depistat in cadrul programului .

OPERATORI PENTRU COMPARATII

Java poseda mai multi operatori folositi pentru a face comparatii intre variabile , intre variabile si literale sau intre alte tipuri de informatie dintr-un program Java . Acesti operatori sunt folositi in expresii care intorc valori booleene true si false , in functie de valoarea de adevar a comparatiei . In cele ce urmeaza prezentam operatorii de comparatie uzitati in Java : Operator == != < > =3

In continuare avem un exemplu practic de folosire a unei comparatii : boolean tanar; int varsta=41; tanar=varsta>> < > >= 50) System.out.println(Nu mai esti chiar tanar); Daca dorim ca atunci cand expresia IF intoarce valoarea false sa se execute totusi ceva folosim cuvantul cheie optional else . if (alegere==true) restaurant=President; else restaurant=Lido; Expresia IF executa instructiuni diferite in functie de rezultatul unei singure testari booleene .

OBS : Testul instructiunii IF in Java trebuie sa returneze o variabila booleana ( true sau false ) ; in C testul poate returna un intreg . In practica se foloseste si o versiune prescurtata a testului conditional IF ; in locul expresiei : if (alegere==true) Putem folosi doar : if (alegere) In continuare vom vedea un exemplu complet de aplicatie Java care se bazeaza pe folosirea testului IF : 1: class TestParitate { 2: 3: void verificareParitate(int val) { 4: System.out.println(Valoarea este 5: +val+. ); 6: if (val%2==0)

- 16 -

7: System.out.println(Par); 8: } 9: 10: public static void main (String argumente[]) { 11. TestParitate e=new TestParitate(); 12: 13: e.verificareParitate(1); 14: e.verificareParitate(2); 15: e.verificareParitate(54); 16: e.verificareParitate(77); 17: e.verificareParitate(1346); 18: } 19: } Nucleul clasei TestParitate este metoda verificareParitate() liniile 3-8 in care valorile sunt testate si se tipareste mesajul corespunzator . Metoda incepe prin tiparirea valorii care i-a fost transmisa . Argumentul este apoi testat folosind o instructiune conditionala IF , pentru a verifica daca un numar este par . Metoda main() a aplicatiei creaza o noua instanta a clasei TestParitate si o testeaza apeland metoda verificareParitate() de mai multe ori , cu diferite valori .

OPERATORUL CONDITIONAL

O alternativa viabila in practica este folosirea intr-o instructiune conditionala , in locul cuvintelor cheie IF si ELSE a operatorului conditional ( numit si operator ternar deoarece are trei termeni ) . Operatorul conditional este o expresie , ceea ce inseamna ca intoarce o valoare , spre deosebire de mai generalul IF care are ca rezultat doar executarea unei instructiuni . Operatorul conditional este mai util pentru instructiuni conditionale scurte sau simple , ca in exemplul urmator : test?rezultat_adevarat:rezultat_fals; test este o expresie care intoarce true sau false , la fel ca testul din instructiunea IF . Daca testul este adevarat ( true ) operatorul conditional intoarce valoarea rezultat_adevarat iar daca este fals returneaza rezultat_fals . Mai jos putem vedea un exemplu practic : int celMaiBunScor=scorulMeu>scorulTau?scorulMeu:scorulTau; Folosirea operatorului conditional este echivalentul urmatorului cod IF : int celMaiBunScor; if (scorulMeu>scorulTau) celMaiBunScor=scorulMeu; else celMaiBunScor=scorulTau;

- 17 -

Operatorul conditional are o precedenta foarte scazuta este de obicei evaluat dupa toate subexpresiile sale . Singurii operatori care au precedenta mai mica sunt cei de atribuire .

INSTRUCTIUNEA SWITCH

O operatie des intalnita in orice limbaj este compararea unei variabile cu o anumita valoare , apoi compararea cu o alta in caz ca nu se potriveste cu prima si asa mai departe . Acest proces poate deveni destul de dificil daca s-ar folosi doar instructiuni IF , in functie de diversitatea valorilor pe care trebuie sa le comparam . De exemplu putem ajunge la un set de instructiuni de genul : if (oper==+) adunaArg(arg1,arg2); else if (oper==-) scadeArg(arg1,arg2); else if (oper==*) inmultireArg(arg1,arg2); else if (oper==/) imparteArg(arg1,arg2); Folosirea IF-ului in acest caz este o imbricare deoarece fiecare instructiune else contine o alta if pana se fac toate testele posibile . Un mecanism prescurtat pentru aceste instruciuni IF imbricate , care poate fi folosit in unele limbaje de programare , este gruparea testelor si actiunilor intr-o singura instructiune . In Java putem grupa actiunile ca si in C folosind instructiunea SWITCH . switch(nota) { case 10: System.out.println(Foarte bine); break; case 8: System.out.println(Bine);break; case 5: System.out.println(Ai trecut);break; default: System.out.println(4 - ai cazut); } Instructiunea SWITCH este bazata pe un test ; in exemplul nostru se testeaza variabila nota . Variabila testata , care poate fi de orice tip primitiv ( byte , short , char sau int ) este comparata pe rand cu fiecare dintre valorile case . Daca se gaseste o potrivire se executa instructiunea specificata dupa test ; daca nu se gaseste nici o potrivire se executa instructiunea default . Aceasta instructiune este de fapt optionala ; daca este omisa si nu se gaseste nici o potrivire case atunci instructiunea SWITCH se incheie fara a se executa nimic . Implementarea Java a instructiunii SWITCH este oarecum limitata testele si valorile pot fi doar tipuri primitive simple ce pot fi convertite in int . Intr-o asemenea instructiune nu se pot folosi tipuri primitive de dimensiuni mai mari large sau float siruri sau alte obiecte si nici nu se pot testa alte relatii in afara de cea de egalitate . Aceste restrictii limiteaza folosirea SWITCH la cazuri relativ simple . In schimb instructiunile IF imbricate pot fi folosite pentru orice tip de testare .

- 18 -

Trebuie sa mentionez ca dupa o instructiune case putem include oricate instructiuni fara a fi necesare acoladele ( ca in cazul lui IF ) . Instructiunea break forteaza iesirea din instructiunea SWITCH la gasirea unei potriviri de valoare . Exista posibilitatea nefolosirii acestei instructiuni caz in care programul executa mai departe instructiunile pana intalneste un break sau pana la sfarsitul instructiunii switch . Instructiunea break intrerupe executia in punctul curent si face un salt la codul aflat dincolo de urmatoarea acolada inchisa } . Avantajul nefolosirii lui break apare atunci cand se doreste executarea acelorasi instructiuni pentru mai multe valori . Pentru aceasta se folosesc mai multe linii case fara instructiuni ; astfel , switch va executa primele instructiuni pe care le va intalni . De exemplu , in urmatoarea instructiune switch sirul x este un numar par este afisat doar daca x are una dintre valorile 2 , 4, 6 sau 8 . Toate celelalte valori ale lui x duc la afisarea textului default : switch(x) { case 2: case 4: case 6: case 8: system.out.println(x este un numar par); break; default: System.out.println(x nu este par); } In cele ce urmeaza vom detalia inca un exemplu care foloseste instructiunea SWITCH . Aceasta clasa converteste valorile intregi in cuvintele ce le denumesc . class CititorNumere{ String conversieNumar(int val) { switch (val) { case 0: return zero; case 1: return unu; case 2: return doi; case 3: return trei; case 4: return patru; case 5: return cinci; case 6: return sase; case 7: return sapte; case 8: return opt; case 9: return noua; default: return ; } } public static void main(String argumente[]) { CititorNumere n=new CititorNumere(); String num=n.conversieNumar(4)+n.conversieNumar(1)+n.conversieNumar(3); System.out.printl(413 este convertit in : +num); } }

- 19 -

Instructiunea switch preia un argument intreg care este transmis metodei conversieNumar() care , daca gaseste o potrivire , intoarce valoarea corespunzatoare sub forma de sir . Nu este nevoie de instructiuni break in CititorNumere deoarece se foloseste in schimb instructiunea return . Aceasta este asemanatoare cu break , deosebirea fiind ca return iese definitiv din metoda si returneaza o valoare .

CICLURI FOR

Ciclurile for repeta o instructiune de un numar specificat de ori , pana in momentul cand se intalneste o conditie . Chiar daca sunt folosite de obicei pentru simple iteratii , in care o instructiune este repetata de un numar de ori , ciclurile for pot fi folosite pentru orice tip de operatii repetitive . Ciclul for arata in Java ca mai jos : for ( initializare; test; incrementare) { instructiune; } Inceputul ciclului for contine trei parti : initializare este o expresie care initializeaza pornirea ciclului . Daca folosim o variabila index a ciclului aceasta expresie o poate declara si initializa in acelasi timp . Variabilele declarate in for sunt locale ciclului in sine . In acesta sectiune se pot initializa mai multe variabile , separand fiecare expresie printro virgula . test este testul care se face dupa fiecare parcurgere a ciclului . Testul trebuie sa fie o expresie booleana sau o functie care returneaza o valoare booleana , cum ar fi i