Referat, comentariu, eseu, proiect, lucrare bacalaureat, liceu si facultate
Top referateAdmitereTesteUtileContact
      
    


 


Ultimele referate adaugate

Adauga referat - poti sa ne ajuti cu un referat?

Politica de confidentialitate



Ultimele referate descarcare de pe site
  CREDITUL IPOTECAR PENTRU INVESTITII IMOBILIARE (economie)
  Comertul cu amanuntul (economie)
  IDENTIFICAREA CRIMINALISTICA (drept)
  Mecanismul motor, Biela, organe mobile proiect (diverse)
  O scrisoare pierduta (romana)
  O scrisoare pierduta (romana)
  Ion DRUTA (romana)
  COMPORTAMENT PROSOCIAL-COMPORTAMENT ANTISOCIAL (psihologie)
  COMPORTAMENT PROSOCIAL-COMPORTAMENT ANTISOCIAL (psihologie)
  Starea civila (geografie)
 




Ultimele referate cautate in site
   domnisoara hus
   legume
    istoria unui galban
   metanol
   recapitulare
   profitul
   caract
   comentariu liric
   radiolocatia
   praslea cel voinic si merele da aur
 
despre:
 
Structura lexicala Java
Colt dreapta
Vizite: ? Nota: ? Ce reprezinta? Intrebari si raspunsuri
 

 

4.1 Setul de caractere d8s21si
4.2 Unitati lexicale

4.3 Comentarii

4.1 Setul de caractere

Limbajului Java lucreaza in mod nativ folosind setul de caractere Unicode. Acesta este un standard international care inlocuieste vechiul set de caractere ASCII. Motivul acestei inlocuiri a fost necesitatea de a reprezenta mai mult de 256 de caractere. Setul de caractere Unicode, fiind reprezentat pe 16 biti are posibilitati mult mai mari.

Vechiul standard ASCII este insa un subset al setului Unicode, ceea ce inseamna ca vom regasi caracterele ASCII cu exact aceleasi coduri ca si mai inainte in noul standard.

Java foloseste setul Unicode in timpul rularii aplicatiilor ca si in timpul compilarii acestora. Folosirea Unicode in timpul executiei nu inseamna nimic altceva decat faptul ca o variabila Java de tip caracter este reprezentata pe 16 biti iar un sir de caractere va ocupa fizic in memorie de doua ori mai multi octeti decat numarul caracterelor care formeaza sirul.




In ceea ce priveste folosirea Unicode in timpul compilarii, compilatorul Java accepta la intrare fisiere sursa care pot contine orice caractere Unicode. Se poate lucra si cu fisiere ASCII obisnuite in care putem introduce caractere Unicode folosind secvente escape. Fisierele sursa sunt fisiere care contin declaratii si instructiuni Java. Aceste fisiere trec prin trei pasi distincti la citirea lor de catre compilator:

  1. Sirul de caractere Unicode sau ASCII, memorat in fisierul sursa, este transformat intr-un sir de caractere Unicode. Caracterele Unicode pot fi introduse si ca secvente escape folosind doar caractere ASCII.
  2. Sirul de caractere Unicode este transformat intr-un sir de caractere in care sunt evidentiate separat caracterele de intrare fata de caracterele de sfarsit de linie.
  3. Sirul de caractere de intrare si de sfarsit de linie este transformat intr-un sir de cuvinte ale limbajului Java.

In primul pas al citirii fisierului sursa, sunt generate secvente escape. Secventele escape sunt secvente de caractere ASCII care incep cu caracterul backslash \. Pentru secventele escape Unicode, al doilea caracter din secventa trebuie sa fie u sau U. Orice alt caracter care urmeaza dupa backslash va fi considerat ca fiind caracter nativ Unicode si lasat nealterat. Daca al doilea caracter din secventa escape este u, urmatoarele patru caractere ASCII sunt tratate ca si cifre hexazecimale (in baza 16) care formeaza impreuna doi octeti de memorie care reprezinta un caracter Unicode.

Se pot folosi la intrare si fisiere ASCII normale, pentru ca ASCII este un subset al Unicode. De exemplu, putem scrie:

int f\u0660 = 3;

Numele variabilei are doua caractere si al doilea caracter este o cifra arabic-indic.

Exemple de secvente Unicode:

\uaa08 \U0045 \uu6abe

In al doilea pas al citirii fisierului sursa, sunt recunoscute ca si caractere de sfarsit de linie caracterele ASCII CR si ASCII LF. In acelasi timp, secventa de caractere ASCII CR-ASCII LF este tratata ca un singur sfarsit de linie si nu doua. In acest mod, Java suporta in comun standardele de terminare a liniilor folosite de diferite sisteme de operare: MacOS, Unix si DOS.

Este important sa separam caracterele de sfarsit de linie de restul caracterelor de intrare pentru a sti unde se termina comentariile de o singura linie (care incep cu secventa //) precum si pentru a raporta odata cu erorile de compilare si linia din fisierul sursa in care au aparut acestea.

In pasul al treilea al citirii fisierului sursa, sunt izolate elementele de intrare ale limbajului Java, si anume: spatii, comentarii si unitati lexicale.

Spatiile pot fi caracterele ASCII SP (spatiu), FF (avans de pagina) sau HT (tab orizontal) precum si orice caracter terminator de linie. Comentariile le vom discuta in paragraful 4.3. ^

4.2 Unitati lexicale

Unitatile lexicale sunt elementele de baza cu care se construieste semantica programelor Java. In sirul de cuvinte de intrare, unitatile lexicale sunt separate intre ele prin comentarii si spatii. Unitatile lexicale in limbajul Java pot fi:

  • Cuvinte cheie
  • Identificatori
  • Literali
  • Separatori
  • Operatori ^

4.2.1 Cuvinte cheie

Cuvintele cheie sunt secvente de caractere ASCII rezervate de limbaj pentru uzul propriu. Cu ajutorul lor, Java isi defineste unitatile sintactice de baza. Nici un program nu poate sa utilizeze aceste secvente altfel decat in modul in care sunt definite de limbaj. Singura exceptie este aceea ca nu exista nici o restrictionare a aparitiei cuvintelor cheie in siruri de caractere sau comentarii.

Cuvintele cheie ale limbajului Java sunt:

abstract
boolean
break
byte
case
cast
catch
char
class
const
continue
default
do
double
else
extends
final
finally
float
for
future
generic
goto
if
implements
import
inner
instanceof
intinterface
long
native
new
null
operator
outer
package
private
protected
public
rest
return
short
static
super
switch
synchronized
this
throw
throws
transient
try
var
void
volatile
while
byvalue

Dintre acestea, cele ingrosate sunt efectiv folosite, iar restul sunt rezervate pentru viitoare extensii ale limbajului. ^

4.2.2 Identificatori

Identificatorii Java sunt secvente nelimitate de litere si cifre Unicode, incepand cu o litera. Identificatorii nu au voie sa fie identici cu cuvintele rezervate.

Cifrele Unicode sunt definite in urmatoarele intervale:

Reprezentare Unicode

Caracter ASCII

Explicatie

\u0030-\u0039

0-9

cifre ISO-LATIN-1

\u0660-\u0669

 

cifre Arabic-Indic

\u06f0-\u06f9

 

cifre Eastern Arabic-Indic

\u0966-\u096f

 

cifre Devanagari

\u09e6-\u09ef

 

cifre Bengali

\u0a66-\ u0a6f

 

cifre Gurmukhi

\u0ae6-\u0aef

 

cifre Gujarati

\u0b66-\u0b6f

 

cifre Oriya

\u0be7-\u0bef

 

cifre Tamil

\u0c66-\u0c6f

 

cifre Telugu

\u0ce6-\u0cef

 

cifre Kannada

\u0d66-\u0d6f

 

cifre Malayalam

\u0e50-\u0e59

 

cifre Thai

\u0ed0-\u0ed9

 

cifre Lao

\u1040-\u1049

 

cifre Tibetan

Tabelul 4.1 Cifrele Unicode.

Un caracter Unicode este o litera daca este in urmatoarele intervale si nu este cifra:

Reprezentare Unicode

Caracter ASCII

Explicatie

\u0024

$

semnul dolar (din motive istorice)

\u0041-\u005a

A-Z

litere majuscule Latin

\u005f

_

underscore (din motive istorice)

\u0061-\u007a

a-z

litere minuscule Latin

\u00c0-\u00d6

 

diferite litere Latin cu diacritice

\u00d8-\u00f6

 

diferite litere Latin cu diacritice

\u00f8-\u00ff

 

diferite litere Latin cu diacritice

\u0100-\u1fff

 

alte alfabete si simboluri non-CJK

\u3040-\u318f

 

Hiragana, Katakana, Bopomofo, si Hangul

\u3300-\u337f

 

cuvinte patratice CJK

\u3400-\u3d2d

 

simboluri Hangul coreene

\u4e00-\u9fff

 

Han (Chinez, Japonez, Corean)

\uf900-\ufaff

 

compatibilitate Han

Tabelul 4.2 Literele Unicode. ^

4.2.3 Literali

Un literal este modalitatea de baza de exprimare in fisierul sursa a valorilor pe care le pot lua tipurile primitive si tipul sir de caractere. Cu ajutorul literalilor putem introduce valori constante in variabilele de tip primitiv sau in variabilele de tip sir de caractere.

In limbajul Java exista urmatoarele tipuri de literali:

  • literali intregi
  • literali flotanti
  • literali booleeni
  • literali caracter
  • literali sir de caractere ^

4.2.3.1 Literali intregi

Literalii intregi pot fi reprezentati in baza 10, 16 sau 8. Toate caracterele care se folosesc pentru scrierea literalilor intregi fac parte din subsetul ASCII al setului Unicode.

Literalii intregi pot fi intregi normali sau lungi. Literalii lungi se recunosc prin faptul ca se termina cu sufixul l sau L. Un literal intreg este reprezentat pe 32 de biti iar unul lung pe 64 de biti.

Un literal intreg in baza 10 incepe cu o cifra de la 1 la 9 si se continua cu un sir de cifre de la 0 la 9. Un literal intreg in baza 10 nu poate sa inceapa cu cifra 0, pentru ca acesta este semnul folosit pentru a semnaliza literalii scrisi in baza 8.

Exemple de literali intregi in baza 10:

12356L234871234567890l

Exemplul al doilea si al patrulea sunt literali intregi lungi.

Pentru a exprima un literal intreg in baza 16 trebuie sa definim cifrele de la 10 la 15. Conventia va fi urmatoarea:

10 - a, A13 - d, D
11 - b, B14 - e, E
12 - c, C15 - f, F

In plus, pentru ca un literal intreg in baza 16 poate incepe cu o litera, vom adauga prefixul 0x sau 0X. Daca nu am adauga acest sufix, compilatorul ar considera ca este vorba despre un identificator.

Exemple de literali intregi in baza 16:

0xa340X1230x2c45L0xde123abccdL

Ultimele doua exemple sunt literali intregi lungi.

In fine, pentru a reprezenta un literal intreg in baza 8, il vom preceda cu cifra 0. Restul cifrelor pot fi oricare intre 0 si 7. Cifrele 8 si 9 nu sunt admise in literalii intregi in baza 8.

Exemple de literali intregi in baza 8:

0234500123001234567712345677L

Valoarea maxima a unui literal intreg normal este de 2147483647 (231-1), scrisa in baza 10. In baza 16, cel mai mare literal pozitiv se scrie ca 0x7fffffff iar in baza 8 ca 017777777777. Toate trei scrierile reprezinta de fapt aceeasi valoare, doar ca aceasta este exprimata in baze diferite.

Cea mai mica valoare a unui literal intreg normal este -2147483648 (-231), respectiv 0x80000000 si 020000000000. Valorile 0xffffffff si 037777777777 reprezinta amandoua valoarea -1.

Specificarea in sursa a unui literal intreg normal care depaseste aceste limite reprezinta o eroare de compilare. Cu alte cuvinte, daca folosim in sursa numarul: 21474836470 de exemplu, fara sa punem sufixul de numar lung dupa el, compilatorul va genera o eroare la analiza sursei.

Valoarea maxima a unui literal intreg lung este, in baza 10, 9223372036854775807L (263-1). In octal, asta inseamna 0777777777777777777777L iar in baza 16 0x7fffffffffffffffL. In mod asemanator, valoarea minima a unui literal intreg lung este -9223372036854775808L (-263-1), in octal aceasta valoare este 0400000000000000000000L iar in baza 16 este 0x8000000000000000L.

La fel ca si la literalii intregi normali, depasirea acestor limite este o eroare de compilare. ^

4.2.3.2 Literali flotanti

Literalii flotanti reprezinta numere reale. Ei sunt formati dintr-o parte intreaga, o parte fractionara, un exponent si un sufix de tip. Exponentul, daca exista, este introdus de litera e sau E urmata optional de un semn al exponentului.

Este obligatoriu sa existe macar o cifra fie in partea intreaga fie in partea zecimala si punctul zecimal sau litera e pentru exponent.

Sufixul care indica tipul flotantului poate fi f sau F in cazul in care avem o valoare flotanta normala si d sau D daca avem o valoare flotanta dubla. Daca nu este specificat nici un sufix, valoarea este implicit dubla.

Valoarea maxima a unui literal flotant normal este 3.40282347e+38f iar valoarea cea mai mica reprezentabila este 1.40239846e-45f, ambele reprezentate pe 32 de biti.

Valoarea maxima reprezentabila a unui literal flotant dublu este de 1.79769313486231570e+308 iar valoarea cea mai mica reprezentabila este 4.94065645841246544e-324, ambele reprezentate pe 64 de biti.

La fel ca si la literalii intregi, este o eroare sa avem exprimat in sursa un literal mai mare decat valoarea maxima reprezentabila sau mai mic decat cea mai mica valoare reprezentabila.

Exemple de literali flotanti:

1.0e45f-3.456f0..01e-3

Primele doua exemple reprezinta literali flotanti normali, iar celelalte literali flotanti dubli. ^

4.2.3.3 Literali booleeni

Literalii booleeni nu pot fi decat true sau false, primul reprezentand valoarea booleana de adevar iar celalalt valoarea booleana de fals. True si false nu sunt cuvinte rezervate ale limbajului Java, dar nu veti putea folosi aceste cuvinte ca identificatori. ^

4.2.3.4 Literali caracter

Un literal de tip caracter este utilizat pentru a exprima caracterele codului Unicode. Reprezentarea se face fie folosind o litera, fie o secventa escape. Secventele escape ne permit reprezentarea caracterelor care nu au reprezentare grafica si reprezentarea unor caractere speciale precum backslash si insasi caracterul apostrof.

Caracterele care au reprezentare grafica pot fi reprezentate intre apostrofe, ca in exemplele:

'a' 'S' ','

Pentru restul caracterelor Unicode trebuie sa folosim secvente escape. Dintre acestea, cateva sunt predefinite in Java, si anume:

Secventa escape

Caracterul reprezentat

'\b'

caracterul backspace BS \u0008

'\t'

caracterul tab orizontal HT \u0009

'\n'

caracterul linefeed LF \u000a

'\f'

caracterul formfeed FF \u000c

'\r'

caracterul carriage return CR \u000d

'\"'

caracterul ghilimele \u0022

'\''

caracterul apostrof \u0027

'\\'

caracterul backslash \u005c

Tabelul 4.3 Secvente escape predefinite in Java.

In forma generala, o secventa escape se scrie sub una din formele:

'\o' '\oo''\too'

unde o este o cifra octala iar t este o cifra octala intre 0 si 3.

Nu este corect sa folositi ca valori pentru literale caracter secventa '\u000d' (caracterul ASCII CR), sau altele care reprezinta caractere speciale, pentru ca acestea fiind secvente escape Unicode sunt transformate foarte devreme in timpul procesarii sursei in caractere CR si sunt interpretate ca terminatori de linie.

Exemple de secvente escape:

'\n''\u23a''\34'

daca dupa caracterul backslash urmeaza altceva decat: b, t, n, f, r, ", ', \, 0, 1, 2, 3, 4, 5, 6, 7 se va semnala o eroare de compilare.

In acest moment secventele escape Unicode au fost deja inlocuite cu caractere Unicode native. Daca u apare dupa \, se semnaleaza o eroare de compilare. ^

4.2.3.5 Literali sir de caractere

Un literal sir de caractere este format din zero sau mai multe caractere intre ghilimele. Caracterele care formeaza sirul de caractere pot fi caractere grafice sau secvente escape ca cele definite la literalii caracter.

Daca un literal sir de caractere contine in interior un caracter terminator de linie va fi semnalata o eroare de compilare. Cu alte cuvinte, nu putem avea in sursa ceva de forma:

"Acesta este
gresit!"

chiar daca aparent exprimarea ar reprezenta un sir format din caracterele A, c, e, s, t, a, spatiu, e, s, t, e, linie noua, g, r, e, s, i, t, !. Daca dorim sa introducem astfel de caractere terminatoare de linie intr-un sir va trebui sa folosim secvente escape ca in:

"Acesta este\ngresit"

Daca sirul de caractere este prea lung, putem sa-l spargem in bucati mai mici pe care sa le concatenam cu operatorul +.

Fiecare sir de caractere este in fapt o instanta a clasei de obiecte String declarata standard in pachetul java.lang.

Exemple de siruri de caractere:

"""\"""Sir de caractere""unu" + "doi"

Primul sir de caractere din exemplu nu contine nici un caracter si se numeste sirul vid. Ultimul exemplu este format din doua siruri distincte concatenate. ^

4.2.4 Separatori

Un separator este un caracter care indica sfarsitul unei unitati lexicale si inceputul alteia. Separatorii sunt necesari atunci cand unitati lexicale diferite sunt scrise fara spatii intre ele. Acestea se pot totusi separa daca unele dintre ele contin caractere separatori. In Java separatorii sunt urmatorii:

( ) A S a i ; , .

Exemple de separare:

aaiisin(56)

In primul exemplu nu avem o singura unitate lexicala ci patru: a, a, i, i. Separatorii a si i ne dau aceasta informatie. In al doilea exemplu, unitatile lexicale sunt tot 4 sin, (, 56, ).

Atentie, separatorii participa in acelasi timp si la constructia sintaxei limbajului. Ei nu sunt identici cu spatiile desi, ca si acestea, separa unitati lexicale diferite. ^

4.2.5 Operatori

Operatorii reprezinta simboluri grafice pentru operatiile elementare definite de limbajul Java. Despre operatori vom discuta mai mult atunci cand vom prezenta expresiile. Deocamdata, iata lista tuturor operatorilor limbajului Java:

=><!I?:
==<=>=!=&&||++--
+-*/&|^%<<>> >>>
+=-=*=/=&=|=^=%=<<=>>=>>>=

Sa mai precizam deocamdata ca toti operatorii joaca si rol de separatori. Cu alte cuvinte, din secventa de caractere:

vasile+gheorghe

putem extrage trei unitati lexicale, vasile, + si gheorghe. ^

4.3 Comentarii

Un comentariu este o secventa de caractere existenta in fisierul sursa dar care serveste doar pentru explicarea sau documentarea sursei si nu afecteaza in nici un fel semantica programelor.

In Java exista trei feluri de comentarii:

  • Comentarii pe mai multe linii, inchise intre /* si */. Toate caracterele dintre cele doua secvente sunt ignorate.
  • Comentarii pe mai multe linii care tin de documentatie, inchise intre /** si */. Textul dintre cele doua secvente este automat mutat in documentatia aplicatiei de catre generatorul automat de documentatie.
  • Comentarii pe o singura linie care incep cu //. Toate caracterele care urmeaza acestei secvente pana la primul caracter sfarsit de linie sunt ignorate.

In Java, nu putem sa scriem comentarii in interiorul altor comentarii. La fel, nu putem introduce comentarii in interiorul literalilor caracter sau sir de caractere. Secventele /* si */ pot sa apara pe o linie dupa secventa // dar isi pierd semnificatia. La fel se intampla cu secventa // in comentarii care incep cu /* sau /**.

Ca urmare, urmatoarea secventa de caractere formeaza un singur comentariu:

/* acest comentariu /* // /* se termina abia aici: */ ^









Colt dreapta
Creeaza cont
Comentarii:

Nu ai gasit ce cautai? Crezi ca ceva ne lipseste? Lasa-ti comentariul si incercam sa te ajutam.
Esti satisfacut de calitarea acestui referat, eseu, cometariu? Apreciem aprecierile voastre.

Nume (obligatoriu):

Email (obligatoriu, nu va fi publicat):

Site URL (optional):


Comentariile tale: (NO HTML)


Noteaza referatul:
In prezent referatul este notat cu: ? (media unui numar de ? de note primite).

2345678910



 
Copyright© 2005 - 2024 | Trimite referat | Harta site | Adauga in favorite
Colt dreapta