ce este java

17
Ce este Java ? Limbajul de programare Java Java este un limbaj de programare de nivel inalt, dezvoltat de JavaSoft, companie in cadrul firmei Sun Microsystems. Dintre caracteristicile principale ale limbajului amintim: simplitate, elimina supraincarcarea operatorilor, mostenirea multipla si toate "facilitatile" ce pot provoca scrierea unui cod confuz. robustete, elimina sursele frecvente de erori ce apar in programare prin eliminarea pointerilor, administrarea automata a memoriei si eliminarea fisurilor de memorie printr-o procedura de colectare a 'gunoiului' care ruleaza оn fundal. Un program Java care a trecut de compilare are proprietatea ca la executia sa nu "crapa sistemul". complet orientat pe obiecte - elimina complet stilul de programare procedural usurinta in ceea ce priveste programarea in retea securitate, este cel mai sigur limbaj de programare disponibil оn acest moment, asigurвnd mecanisme stricte de securitate a programelor concretizate prin: verificarea dinamica a codului pentru detectarea secventelor periculoase, impunerea unor reguli stricte pentru rularea programelor lansate pe calculatoare aflate la distanta, etc este neutru din punct de vedere arhitectural portabililtate, cu alte cuvinte Java este un limbaj independent de platforma de lucru, aceeasi aplicatie ruland, fara nici o modificare, pe sisteme diferite cum ar fi Windows, UNIX sau Macintosh, lucru care aduce economii substantiale firmelor care dezvolta aplicatii pentru Internet. compilat si interpretat asigura o performanta ridicata a codului de octeti permite programarea cu fire de executie (multitheaded)

Upload: ayrin-iris

Post on 16-Feb-2016

4 views

Category:

Documents


0 download

DESCRIPTION

java

TRANSCRIPT

Page 1: Ce Este Java

Ce este Java ?

Limbajul de programare Java

Java este un limbaj de programare de nivel inalt, dezvoltat de JavaSoft, companie in cadrul firmei Sun Microsystems. Dintre caracteristicile principale ale limbajului amintim:

simplitate, elimina supraincarcarea operatorilor, mostenirea multipla si toate "facilitatile" ce pot provoca scrierea unui cod confuz.

robustete, elimina sursele frecvente de erori ce apar in programare prin eliminarea pointerilor, administrarea automata a memoriei si eliminarea fisurilor de memorie printr-o procedura de colectare a 'gunoiului' care ruleaza оn fundal. Un program Java care a trecut de compilare are proprietatea ca la executia sa nu "crapa sistemul".

complet orientat pe obiecte - elimina complet stilul de programare procedural usurinta in ceea ce priveste programarea in retea securitate, este cel mai sigur limbaj de programare disponibil оn acest

moment, asigurвnd mecanisme stricte de securitate a programelor concretizate prin: verificarea dinamica a codului pentru detectarea secventelor periculoase, impunerea unor reguli stricte pentru rularea programelor lansate pe calculatoare aflate la distanta, etc

este neutru din punct de vedere arhitectural portabililtate, cu alte cuvinte Java este un limbaj independent de platforma de

lucru, aceeasi aplicatie ruland, fara nici o modificare, pe sisteme diferite cum ar fi Windows, UNIX sau Macintosh, lucru care aduce economii substantiale firmelor care dezvolta aplicatii pentru Internet.

compilat si interpretat asigura o performanta ridicata a codului de octeti permite programarea cu fire de executie (multitheaded) dinamicitate este modelat dupa C si C++, trecerea de la C, C++ la Java facвndu-se foarte

usor. permite creearea unor documente Web оmbunatatite cu animatie si multimedia.

Java : un limbaj compilat si interpretat

In functie de modul de executie al programelor, limbajele de programare se оmpart оn doua categorii :

interpretate : instructiunile sunt citite linie cu linie de un program numit interpretor si traduse оn instructiuni masina; avantaj : simplitate; dezavantaje : viteza de executie redusa

compilate : codul sursa al programelor este transformat de compilator оntr-un cod ce poate fi executat direct de procesor; avantaj : executie rapida; dezavantaj : lipsa portabilitatii, codul compilat оntr-un format de nivel scazut nu poate fi rulat decвt pe platforma pe care a fost compilat.

Page 2: Ce Este Java

Programele Java sunt fi atвt interpretate cвt si compilate.Codul de octeti este diferit de codul masina. Codul masina este reprezentat de o succesiune de 0 si 1; codurile de octeti sunt seturi de instructiuni care seamana cu codul scris оn limbaj de asamblare. Codul masina este executat direct de catre procesor si poate fi folosit numai pe platforma pe care a fost creat; codul de octeti este interpretat de mediul Java si de aceea poate fi rulat pe orice platforma care foloseste mediul de executie Java. 

Cod sursa Java -> (compilare) -> Cod de octeti -> (interpretare)

Crearea unei aplicatii simple1. Scriererea codului sursa2. class FirstApp {3. public static void main( String args[]) {4. System.out.println("Hello world");5. }6. }

Toate aplicatiile Java contin o clasa principala(primara) оn care trebuie sa se gaseasca metoda main. Clasele aplicatiei se pot gasi fie оntr-un singur fisier, fie оn mai multe. 

7. Salvarea fisierelor sursa

Se va face оn fisiere cu extensia .javaFiserul care contine codul sursa al clasei primare trebuie sa aiba acelasi nume cu clasa primara a aplicatiei (clasa care contine metoda main)Obs: Java face distinctie оntre literele mari si mici.

C:/java/FirstApp.java

8. Compilarea aplicatiei

Se foloseste compilatorul Java, javacApelul compilatorului se face pentru fisierul ce contine clasa principala a aplicatiei. Compilatorul creeaza cвte un fisier separat pentru fiecare clasa a programului; acestea au extensia .class si sunt plasate оn acelasi director cu fisierele sursa.

javac FirstApp.java -> FirstApp.class

Page 3: Ce Este Java

9. Rularea aplicatiei

Se face cu interpretorul java, apelat pentru unitatea de compilare corespunzatoare clasei principale, fiind оnsa omisa extensia .class asociata acesteia.

java FirstApp

Rularea unei aplicatii care nu foloseate interfata grafica, se va face оntr-o fereastra sistem.

Crearea unui applet

Crearea structurii de fisere si compilarea applet-urilor sunt identice ca оn cazul aplicatiilor. Difera оn schimb structura programului si modul de rulare al acestuia.

1. Scrierea codului sursa si salvarea оn fisier2. import java.awt.* ;3. import java.applet.* ;4. public class FirstApplet extends Applet {5. Image img;6. public void init() {7. img = getImage(getCodeBase(), "taz.gif");8. }9. public void paint (Graphics g) {10. g.drawImage(img, 0, 0, this);11. g.drawOval(100,0,150,50);12. g.drawString("Hello! My name is Taz!", 110, 25);13. }14. }

Salvarea se va face оn fisierul FirstApplet.java 

15.Compilarea applet-ului

javac FirstApplet.java -> FirstApplet.class

16.Rularea applet-ului

Applet-urile nu ruleaza independent. Ele pot fi rulate doar prin intermediul unui browser : Internet Explorer, Netscape sau printr-un program special cum ar fi appletviewer-ul din setul JDK.

1. Creearea unui fisier HTML pentru miniaplicatie (exemplu.html)2. <html>

Page 4: Ce Este Java

3. <head>4. <title>First Java Applet</title>5. </head>6. <body>7. <applet code=FirstApplet.class width=400

height=400>8. </applet>9. </body>10. </html>

11.Vizualizarea appletului

appletviewer exemplu.html

Structura lexicala a limbajului

Setul de caractere

Limbajului Java lucreaza оn mod nativ folosind setul de caractere Unicode. Acesta este un standard international care оnlocuieste vechiul set de caractere ASCII si care foloseste pentru reprezentarea caracterelor 2 octeti, ceea ce оnseamna ca se pot reprezenta 65536 de semne, spre deosebire de ASCII, unde era posibila reprezentarea a 256 de caractere. Primele 256 caractere Unicode corespund celor din ASCII, referirea la celelate facвndu-se prin \uxxxx, unde xxxx reprezinta codul caracterului.

Ex: \u0030 - \u0039 : cifre ISO-Latin 0 - 9 \u0660 - \u0669 : cifre arabic-indic 0 - 9 \u4e00 - \u9fff : litere din alfabetul Han (Chinez, Japonez, Coreean)

Cuvinte cheie

Cuvintele rezervate оn Java sunt cele din C++, cu cвteva exceptii

Identificatorii

Sunt secvente nelimitate de litere si cifre Unicode, оncepand cu o litera. Identificatorii nu au voie sa fie identici cu cuvintele rezervate.

Literalii (constantele)

Literalii pot fi de urmatoarele tipuri literali оntregi

Sunt acceptate 3 baze de numeratie : baza 10, baza 16 (оncep cu caracterele 0x) si baza 8 (оncep cu cifra 0) si pot fi de doua tipuri:

o normali, (se reprez pe 4 octeti - 32 biti)o lungi (8 octeti - 64 biti) : se termina cu caracterul L (sau l).

Page 5: Ce Este Java

literali flotantiPentru ca un literal sa fie considerat flotant el trebuie sa aiba cel putin o zecimala dupa virgula, sa fie оn notatie exponentiala sau sa aiba sufixul F sau f pentru valorile normale (reprez. pe 32 biti), respectiv D sau d pentru valorile duble (reprez. pe 64 biti)

literali logicitrue : valoarea booleana de adevarfalse : valoarea booleana de falsAtentie: spre deosebire de C++, literalii оntregi 1 si 0 nu mai au rolul de adevarat si false

literali caracterUn literal de tip caracter este utilizat pentru a exprima caracterele codului Unicode. Reprezentarea se face fie folosind o litera, fie o secventa escape scrisa оntre apostrofuri. Secventele escape permit reprezentarea caracterelor care nu au reprezentare grafica si reprezentarea unor caractere speciale precum backslash, caracterul apostrof, etc. Secvente escape predefinite оn Java:Cod Secventa Escape Caracter

\u0008 '\b' Backspace(BS)\u0009 '\t' Tab orizontal (HT)\u000a '\n' Linie noua - linefeed (LF)\u000c '\f' Pagina noua - formfeed (FF)\u000d '\r' Inceput de rand (CR)\u0022 '\"' Ghilimele\u0027 '\'' Apostrof\u005c '\\' Backslash

literali siruri de caractereUn literal sir de caractere este format din zero sau mai multe caractere оntre ghilimele. Caracterele care formeaza sirul de caractere pot fi caractere grafice sau secvente escape ca cele definite la literalii caracter. Daca sirul este prea lung el poate fi scris ca o concatenare de subsiruri de dimensiune mai mica. Concatenarea sirurilor se face cu operatorul + ("Ana " + " are " + " mere "). Sirul vid este "". Dupa cum vom vedea, orice sir este de fapt o instanta a clasei String, definita оn pachetul java.lang.

Separatori

Un separator este un caracter care indica sfвrsitul unei unitati lexicale si оnceputul alteia. In Java separatorii sunt urmatorii: ( ) { } [ ] ; , . Instructiunile unui program se separa cu punct si virgula

Operatori

atribuirea: = operatori matematici: +, -, *, /, % 

Este permisa notatia prescurtata de forma lval op= rval (ex: n += 2) Exista operatorii pentru autoincrementare si autodecrementare (post si pre) ex: x++, ++x, n--, --n 

Page 6: Ce Este Java

Observatie: evaluarea expresiilor logice se face prin metoda scurtcircuitului (evaluarea se opreste оn momentul оn care valoarea de adevar a expresiei este sigur determinata)

operatori logici: &&(and), ||(or), !(not) operatori relationali: <, <=, >, <=, ==, != operatori pe biti: & (and), |(or), ^(xor), ~(not) operatori de translatie <<, >>, >>> (shift la dreapta fara semn) operatorul if-else: expresie_logica ? val_pt_true : val_pt_false ; operatorul , (virgula) folosit pentru evaluarea secventiala a operatiilor int x=0,

y=1, z=2; operatorul + pentru concatenarea sirurilor: String s="abcd" int x=100; System.out.println(s + " - " + x); operatori pentru conversii (cast) : (tip_de_data) int i = 200; long l = (long)i; //widening conversion - conversie prin extensie long l2 = (long)200; int i2 = (int)l2; //narrowing conversion - conversie prin contractie

Comentarii

In Java exista trei feluri de comentarii:

Comentarii pe mai multe linii, оnchise оntre /* si */. Comentarii pe mai multe linii care tin de documentatie, оnchise оntre /** si */.

Textul dintre cele douг secvente este automat mutat оn documentatia aplicatiei de catre generatorul automat de documentatie javadoc.

comentarii pe o singura linie care оncep cu //.

Observatii:1. nu putem sa scriem comentarii оn interiorul altor comentarii.2. nu putem introduce comentarii оn interiorul literalilor caracter sau sir de

caractere.3. secventele /* si */ pot sa apara pe o linie dupa secventa // dar оsi pierd

semnificatia; la fel se оntвmplг cu secventa // оn comentarii care оncep cu /* sau /**.

Tipuri de date

In Java tipurile de date se оmpart оn doua categorii: tipuri primitive de date si tipuri referinta. Java porneste de la premiza ca "orice este un obiect". Asadar tipurile de date ar trebui sa fie de fapt definite de clase si toate variabilele ar trebui sa memoreze de fapt instante ale acestor clase (obiecte). In principiu acest lucru este adevarat, оnsa, pentru usurinta programarii, mai exista si asa numitele tipurile primitive de date, care sunt cele uzuale :

Page 7: Ce Este Java

aritmeticeo оntregi: byte (1 octet), short (2), int (4), long (8)o reale: float (4 octeti), double (8)

caracter : char (2 octeti) logic : boolean (true si false)

In alte limbaje formatul si dimensiunea tipurilor primitive de date folosite оntr-un program pot depinde de platforma pe care ruleaza programul. In Java acest lucru nu mai este valabil, orice dependenta de o anumita platforma specifica fiind eliminata. Vectorii, clasele si interfetele sunt tipuri referinta. Valoarea unei variabile de acest tip este, оn contrast cu tipurile primitive, o referinta (adresa de memorie) catre valoarea sau multimea de valori reprezentata de variabila respectiva. Exista trei tipuri de date C care nu sunt suportate de limbajul Java. Acestea sunt: pointer, struct si union. Pointerii au fost eliminati din cauza ca erau o sursa constanta de erori, locul lor fiind luat de tipul referinta, iar struct si union nu оsi mai au rostul atвt timp cвt tipurile compuse de date sunt formate оn Java prin intermediul claselor. 

VariabileVariabilele pot avea ca tip fie un tip primitiv de data, fie o referinta la un obiect.

Declararea variabilelor Tip nume_variabila

Initializarea variabilelor Tip nume_variabila = valoareDeclararea constantelor final Tip nume_variabila

Conventia de notare a variabilelor in Java este data de urmatoarele criterii:

1. variabilele finale (constante) se scriu cu majuscule2. variabilele normale se scriu astfel : prima litera cu litera mica, daca numele

variabilei este format din mai multi atomi lexicali, atunci primele litere ale celorlalti atomi se scriu cu majuscule, de exemplu:

3. final double PI = 3.14;4. int valoare = 100;5. long numarElemente = 12345678L;6. String bauturaMeaPreferata = "apa";

In functie de locul оn care sunt declarate variabile se оmpart оn urmatoatele categorii:1. Variabile membre, declarate оn interiorul unei clase, vizibile pentru toate

metodele clasei respective si pentru alte clase оn functie de nivelul lor de acces (vezi "Declararea variabilelor membre")

2. Variabile locale, declarate оntr-o metoda sau оntr-un bloc de cod, vizibile doar оn metoda/blocul respectiv

3. Parametri metodelor, vizibili doar оn metoda respectiva4. Parametrii de la tratarea exceptiilor

Page 8: Ce Este Java

 

Obs: variabilele declarate оntr-un for pentru controlul ciclului, ramвn locale corpului ciclului.

for(int i=0; i<100; i++) { }int i; //ok оn Java, eroare оn C++

Obs: Spre deosebire de C++ nu este permisa ascunderea unei variabile :int x=12;{

int x=96; //ilegal}

Controlul executiei

Instructiunile Java pentru controlul executiei sunt asemanatoare celor din C.

Instructiuni de decizie if-else, switch-case

Instructiuni de salt for, while, do-while

Instructiuni pt. tratarea exceptiilor try-catch-finally, throwAlte instructiuni break, continue, label: , return

Instructiuni de decizieif-else if (exp_booleana) { /*...*/}

if (exp_booleana) { /*...*/} else { /*...*/}

switch-case

switch (variabila) {case val1 : /* ... */ break;case val2 : /* ... */ break;/*...*/default : /*...*/}

Instructiuni de saltfor

for(initializare; exp_booleana; pas_iteratie)

Page 9: Ce Este Java

Ex: for(int i=0, j=100 ; i<100 && j>0; i++, j--) {/* ... /*}

Obs: atвt la initializare cвt si оn pasul de iteratie pot fi mai multe instructiuni despartite prin virgula.

while

while (exp_booleana) {

/*...*/}

do-while

do {/*...*/

}while (exp_booleana) ;

Instructiuni pentru tratarea exceptiilortry-catch-finally, throw (vezi "Tratarea exceptiilor")

Alte instructiunibreak paraseste fortat corpul iteratiei curentecontinue termina fortat iteratia curenta

return return [valoare];Termina o metoda

label: Defineste o eticheta

Atentie: In Java nu exista goto. Se pot оnsa defini etichete de forma nume_eticheta:, folosite оn expresii de genul: break nume_eticheata sau continue nume_eticheta 

Exemplu:i=0; eticheta:while (i<10) {

System.out.println("i="+i);j=0;while (j<10) {

j++;if (j==5) continue eticheta;if (j==7) break eticheta;System.out.println("j="+j);

}i++;

}

Vectori

Crearea unui vector 

1. Declararea vectorului2. Tip[] numeVector; sau3. Tip numeVector[]; 4. Ex: int[] intregi;5. String adrese[];6. Instantierea 

Se realizeaza prin intermediul operatorului new si are ca efect alocarea

Page 10: Ce Este Java

memoriei pentru vector, mai precis specificarea numarului maxim de elemente pe care оl va avea vectorul;

7. numeVector = new Tip[dimensiune];8. Ex: v = new int[10]; //se aloca spatiu pentru 10 intregi9. adrese = new String[100];

Obs: declararea si instantierea unui vector pot fi facute simultan astfel:

Tip[] numeVector = new Tip[dimensiune];10.Initializarea (optional) 

Dupa declararea unui vector, acesta poate fi initializat, adica elementele sale pot primi niste valori initiale, evident daca este cazul pentru asa ceva. In acest caz instantierea lipseste, alocarea memoriei facвndu-se automat оn functie de numarul de elemente cu care se initializeaza vectorul.

11. Ex: String culori[] = {"Rosu", "Galben", "Verde"};12. int []factorial = {1, 1, 2, 6, 24, 120};

Observatii: Primul indice al unui vector este 0, deci pozitiile unui vector cu n elemente vor fi cuprinse оntre 0 si n-1 Nu sunt permise constructii de genul Tip numeVector[dimensiune], alocarea memoriei facвndu-se doar prin intermediul opearatorului new.Ex: int v[10]; //ilegal

int v[] = new int[10]; //corect

Vectori multidimensionali In Java tablourile multidimensionale sunt de fapt vectori de vectori.

Ex: int m[][]; //declararea unei matricim = new int[5][10]; //cu 5 linii, 10 coloane

Obs: m[0], m[1], ..., m[5] sunt vectori de intregi cu 10 elemente

Dimensiunea unui vector Cu ajutorul cuvвntului cheie length se poate afla dimensiunea unui vector.

int []a = new int[5];a.length are valoarea 5int m = new int[5][10];m[0].length are valoarea 10

Copierea vectorilor Copierea unui vector оn alt vector se face cu ajutorul metodei System.arraycopy:

int x[] = {1, 2, 3, 4};int y[] = new int[4];System.arraycopy(x,0,y,0,x.length);

Vectori cu dimensiune variabila Implementarea vectorilor cu numar variabil de elemente este oferita de clasa Vector din pachetul java.util. Un obiect de tip Vector contine numai elemente de tip Object. 

Page 11: Ce Este Java

Siruri de caractere

In Java, un sir de caractere poate fi reprezentat printr-un vector format din elemente de tip char, un obiect de tip String sau un obiect de tip StringBuffer.

Declararea unui sir Daca un sir de caractere este constant atunci el va fi declarat de tipul String, altfel va fi declarat cu StringBuffer. (vezi "Clasele String, StringBuffer") Exemple echivalente de declarare a unui sir:

String str = "abc";char data[] = {'a', 'b', 'c'};String str = new String(data);String str = new String("abc");

Concatenarea sirurilorConcatenarea sirurilor de caractere se face prin intermediul operatorului +.

String str1 = "abc" + "xyz";String str2 = "123";String str3 = str1 + str2;

In Java, operatorul de concatenare + este extrem de flexibil оn sensul ca permite concatenarea sirurilor cu obiecte de orice tip care au o reprezentare de tip sir de caractere.

System.out.print("Vectorul v are" + v.length + " elemente")

Folosirea argumentelor de la linia de comanda

O aplicatie Java poate primi oricвte argumente de la linia de comanda оn momentul lansarii ei. Aceste argumente sunt utile pentru a permite utilizatorului sa specifice diverse optiuni legate de functionarea aplicatiei sau sa furnizeze anumite date initiale programului.

Atentie: Programele care folosesc argumente de la linia de comanda nu sunt 100% pure Java deoarece unele sisteme de operare cum ar fi Mac OS nu au оn mod normal linie de comanda.

Argumentele de la linia de comanda sunt introduse la lansarea unei aplicatii, fiind specificate dupa numele aplicatiei si separate prin spatiu. De exemplu, sa presupunem ca aplicatia Sort ordoneaza lexicografic liniile unui fisier si primeste ca argument numele fisierului pe care sa оl sorteze. Pentru a ordona fisierul "persoane.txt" lansarea aplicatiei se va face astfel:

java Sort persoane.txtAsadar, formatul general pentru lansarea unei aplicatii care primeste argumente de la linia de comanda este:

java NumeAplicatie [arg1 arg2 . . . argn]

Page 12: Ce Este Java

In cazul оn care sunt mai multe, argumentele trebuie separate prin spatii iar daca unul dintre argumente contine spatii, atunci el trebuie pus оntre ghilimele. Evident, o aplicatie poate sa nu primeasca nici un argument sau poate sa ignore argumentele primite de la linia de comanda. In momentul lansarii unei aplicatii interpretorul parcurge linia de comanda cu care a fost lansata aplicatia si, оn cazul оn care exista, transmite aplicatiei argumentele specificate sub forma unui vector de siruri. Acesta este primit de aplicatie ca parametru al metodei main. Reamintim ca formatul metodei main din clasa principala este:

public static void main ( String args[])Vectorul primit ca parametru de metoda main va contine toate argumentele transmise programului de la linia de comanda. In cazul apelului java Sort persoane.txt vectorul args va contine un singur element args[0]="persoane.txt". Numarul argumentelor primite de un program este dat deci de dimensiunea vectorului args si acesta poate fi aflat prin intermediul atributului length al vectorilor:

numarArgumente = args.length ;Spre deosebire ce C/C++ vectorul primit de metoda main nu contine pe prima pozitie numele aplicatiei, оntrucвt оn Java numele aplicatiei este numele clasei principale, adica a clasei оn care se gaseste metoda main. Exemplu: afisarea argumentelor primite la linia de comandapublic class Echo {

public static void main (String[] args) {for (int i = 0; i < args.length; i++)

System.out.println(args[i]);}

}Un apel de genul java Echo Drink Hot Java va produce urmatorul rezultat:

DrinkHotJava

(aplicatia Echo a primit 3 argumente). Una apel de genul java Echo "Drink Hot Java" va produce urmatorul rezultat:

Drink Hot Java(aplicatia Echo a primit un singur argument).

Argumente numerice la linia de comandaArgumentele de la linia de comanda sunt primite sub forma unui vector de siruri (obiecte de tip String). In cazul оn care unele dintre acestea reprezinta valori numerice ele vor trebui convertite din siruri оn numere. Acest lucru se realizeaza cu metode de tipul parseXXX aflate оn clasa corespunzatoare tipului оn care vrem sa facem conversia: Integer, Float, Double, etc. Sa consideram, de exemplu, ca aplicatia Power ridica un numar real la o putere оntreaga, argumentele fiind trimise de la linia de comanda:

java Power "12.1" "3" //ridica 12.1 la puterea 3Conversia celor doua argumente оn numere se va face astfel:

double numar;int putere;numar = Double.parseDouble(args[0]);putere = Integer.parseInt(args[1]);

Page 13: Ce Este Java

Metodele de tipul parseXXX pot produce exceptii (erori) de tipul NumberFormatException оn cazul оn care sirul primit ca parametru nu reprezinta un numar de tipul respectiv.