Noţiuni Fundamentale: 1.1. Definiţii

Descărcați ca pdf sau txt
Descărcați ca pdf sau txt
Sunteți pe pagina 1din 32

Informatica aplicata-note de curs constructii20092010@gmail.

com;
http://scdsd.bluepink.ro/cursuri

Noţiuni fundamentale

1.1. Definiţii

Informaţia reprezintă un mesaj (de orice natură) care aduce o precizare într-o problemă ce
comportă un anumit grad de incertitudine.

Există două aspecte ale informaţiei:

1. Semantic – se referă la înţelegerea informaţiei ca idee, cunoaştere, mesaj, care se


transmite pe anumite medii fizice sau biologice, numite suporturi de informaţie;
2. Sintactic – precizează modul de prezentare a informaţiei.

O mulţime este informaţională dacă elementele sale sunt informaţii. Ea se poate defini în:

a. Comprehensiune (prin enunţarea proprietăţii de care se bucură toate elementele


mulţimii);
b. Extensie (prin nominalizarea tuturor elementelor mulţimii respective).

Există trei elemente ce caracterizează o informaţie:

1. Mulţimea informaţională în care se află informaţia ca element;


2. Forma de reprezentare (face posibilă deosebirea informaţiilor între ele);
3. Valoarea informaţiei.

Datele sunt numere, caractere, imagini sau alte reprezentări simbolice, care pot fi folosite de
către om sau pot fi înregistrate în memoria calculatorului şi prelucrate de acesta, sau transmise
pe o linie de comunicaţie.
Datele în sine nu au „semnificaţie”. Atunci când datele sunt interpretate de către un anumit
sistem de prelucrare, ele devin informaţie.

Algoritmul este un sistem de reguli care transformă informaţia iniţială în una finală, trecând
printr-un şir de informaţii intermediare.

Algoritmul se caracterizează prin:

1. Generalitate – rezolvă toate problemele din clasa respectivă de probleme;


2. Finitudine – numărul de transformări intermediare aplicate informaţiei iniţiale, în
scopul de a obţine informaţia finală, este finit;
3. Realizabilitate (efectivitate) - există posibilitatea efectuării operaţiilor prevăzute în
instrucţiunile algoritmului;
4. Claritate – se caracterizează printr-o descriere precisă, cu specificarea riguroasă şi
fără ambiguităţi a acţiunilor care urmează să se execute;
5. Automatism - algoritmul poate fi aplicat fără ca instrucţiunile sale să ceară un efort
de gândire deosebit; utilizatorul poate executa în mod mecanic operaţiile simple
indicate.

1
Noţiuni fundamentale
________________________________________________________________
Calculatorul reprezintă un ansamblu complex de echipamente electronice care, pe baza unor
date de intrare şi a unor programe furnizate şi elaborate de om, generează la ieşire informaţii. El
este în acelaşi timp un mijloc de prelucrare automată a informaţiilor, prelucrându-le sub o
formă cuantificată şi rezolvând problemele în conformitate cu anumiţi algoritmi.

Componentele fizice care alcătuiesc un calculator reprezintă hardware-ul. Programele care îi


precizează calculatorului “ce să facă” alcătuiesc software-ul…..+peopleware

Calculatorul este o maşină programabilă definită de două caracteristici esenţiale:


¾ pentru un anumit set de instrucţiuni răspunde într-o manieră foarte bine definită. Prin
instrucţiune se înţelege o comandă elementară (de bază) a unui calculator. Setul de
instrucţiuni al unui calculator formează lista tuturor comenzilor elementare din limbajul
maşină al calculatorului;
¾ poate executa o listă de instrucţiuni preînregistrate (un program). Fără programe
calculatoarele sunt nefolositoare.

Informatica reprezintă disciplina care oferă metode de rezolvare a problemelor cu ajutorul


calculatorului. Academia Franceza (1966) a definit informatica ca fiind “ştiinţa prelucrării
raţionale, îndeosebi prin maşini automate, a informaţiei, considerată ca suport al cunoştinţelor
umane şi al comunicărilor în domeniile tehnice, economice şi sociale.”

În urma prelucrării, în concordanţă cu cerinţele informaţionale, datele devin informaţii.

Prelucrarea implică:
1. Culegerea datelor;
2. Prelucrarea propriu-zisă;
3. Distribuirea rezultatelor prelucrării.

Prelucrarea datelor se poate face:


1. Manual;
2. Automat.

Prelucrarea automată a datelor presupune:


a. Resurse materiale (echipamente electronice de calcul – calculatoare etc.);
b. Resurse umane (operatori, programatori etc).

Resursele materiale şi umane coexistă şi formează un ansamblu numit Sistem de Prelucrare


Automată a Datelor (SPAD).

Prelucrarea automată a datelor presupune existenţa unui proces de reglare între Introducerea
datelor, Prelucrarea datelor, Extragerea informaţiei:

Etapele prelucrării automate a datelor


Introducerea datelor Prelucrarea datelor Extragerea informaţiei
Culegere Clasificare Regăsire
Verificare Sortare Decodificare
Codificare Calcule Difuzare
Transmitere Arhivare
Memorare

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

Sistemul informaţional reprezintă un ansamblu de fluxuri şi circuite informaţionale,


organizate într-o concepţie unitară, care asigură legătura dintre sistemul decizional (de
conducere) şi sistemul operaţional (de execuţie).

Sistemul informatic este un ansamblu structurat de elemente intercorelate funcţional, pentru


culegerea, prelucrarea, transmiterea şi stocarea informaţiilor cu ajutorul mijloacelor automate
de prelucrare a datelor. Scopul acestuia este de a automatiza procesul informaţional şi de a
fundamenta deciziile. Sistemul informatic este inclus în cel informaţional şi îi dă acestuia noi
valenţe, sub aspect calitativ şi cantitativ. Acest lucru se realizează prin implementarea de către
sistemul informatic a unor modele matematice şi prin utilizarea tehnicii electronice de calcul.

Sistemul informatic include:


1. Cadrul organizatoric şi datele vehiculate;
2. Resursele umane;
3. Metodele şi tehnicile de proiectare;
4. Echipamentele electronice de calcul;
5. Sistemul de programe.

1.2. Evoluţia calculatorului


1642 - Blaise Pascal (matematician, fizician, dar şi teolog) creează prima maşină de calculat,
în scopul de a-l ajuta pe tatăl său la calculul taxelor. Această maşină putea numai să adune. I-
au fost necesari 2 ani pentru realizarea acestei maşini dar, odată creată, a reuşit să o producă în
50 de copii care s-au vândut imediat.

1822 - Charles Babbage, inventator englez, proiectează primul motor diferenţial matematic,
în scopul uşurării realizării tabelelor matematice ce erau folosite în industrie, navigaţie şi
domeniul bancar. Babbage nu a putut să realizeze niciodată acest proiect datorită lipsei de
tehnologii care să-i producă piesele componente la precizia dorită. În cinstea sa, la London’s
Science Museum există un exemplar al acestui motor diferenţial realizat în 1990 după proiectul
amănunţit pe care inventatorul l-a lăsat.

1884 - Herman Hollerith, inventator american, realizează prima maşină automată de calculat
pe bază de cartele perforate.

1926 - Dr. Julius Lilienfield creează conceptul primului tranzistor folosit pentru amplificare
(vacuum tubes).

1936 - Alan Turing foloseşte noţiunea de “maşină Turing universală'' pentru a descrie un
calculator universal, care poate executa orice program. Programele erau stocate în memoria
calculatorului, reprezentate ca şiruri de numere.

1939 – Este proiectat primul calculator digital: John Atanasoff, lector la IOWA State
University, împreună cu doctorandul Clifford Berry, au pus bazele primului computer digital.
Pentru prima oară s-a pus problema reprezentării numerelor folosind condensatori pentru a
stoca sarcini electrice.

3
Noţiuni fundamentale
________________________________________________________________
1944 - Este realizat primul calculator de scară mare, Mark I, conceput de Howard Aiken,
profesor la Harvard University. Computerul Mark I a fost cel mai mare calculator realizat până
atunci. Compus din peste 750 000 piese şi cântărind peste 5 tone, el putea să adune, să scadă, să
înmulţească sau să împartă două numere (până la 23 digiţi) în numai câteva secunde.

1945 - John von Neumann analizează starea de fapt a calculatoarelor şi scrie un raport intitulat
``First Draft of a Report on the EDVAC'' (Prima ciornă a unui raport despre EDVAC), în care
sugerează o arhitectură revoluţionară: programul nu mai este reprezentat de felul în care sunt
cuplate unităţile funcţionale, ci este stocat în memorie, fiind descris folosind un limbaj numit
cod-maşină. În cod-maşină, operaţiile de executat sunt codificate sub forma unor numere
numite instrucţiuni. Programul de executat este descris printr-un şir de instrucţiuni, care se
execută consecutiv. Caracteristica principala a masinii von Neuman este ca functionarea ei este
un proces secvential: la un moment dat se executa o singura instructiune, iar executarea unei
instructiuni poate sa inceapa numai dupa ce s-a incheiat executarea celei precedente. In toate
operatiile participa unitatea centrala si registrii acesteia.

1946 – Este realizat, la University of Pennsylvania, calculatorul ENIAC (the Electronic


Numerical Integrator and Computer) cel mai puternic până la acea dată. Cântărea cca 30 tone.

1946 – Este realizat calculatorul EDVAC (the Electronic Discrete Variable Computer), mai
puternic. Arhitectura acestui calculator şi modul de stocare a programelor sunt asemănătoare
cu cele ale calculatoarelor de astăzi.

1954 - Apare primul limbaj de programare - limbajul FORTRAN, inventat de John Backus,
angajat al IBM.

1958 - Jack Kilbz (angajat laTexas Instruments) inventează primul circuit integrat.

1964 - Tom Kurtz şi John Kemeny (profesori la Dartmouth University) creează limbajul de
programare BASIC (Beginners All Purpose Szmbolic Instruction Language), marcând
începutul programării intuitive.

1970 - Compania Busicom foloseşte în producţie de serie circuitele integrate la construcţia


calculatoarelor.

1974 - Marcian Hoff proiectează primul microprocessor: circuitul 4004, ce opera pe 4 biţi şi
conţinea peste 2.000 de tranzistoare. Proiectul lui Hoff a fost respins de companiile
producătoare de atunci.

1974 - Intel realizează primul microprocesor 8080 ce opera pe 8 biţi. O serie de alte companii
ca Motorola şi Zilog au început să realizeze o serie de cipuri similare.

1975 - Se vinde primul computer Altair. Acesta era un calculator cu procesor 8080 şi putea fi
asamblat de oricine. Costa 439USD. Bill Gates şi Paul Allen au dezvoltat o versiune de BASIC
pentru Altair punându-se astfel bazele companiei Microsoft

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

1981 - IBM lansează primul PC (Personal Computer). Costa 1365USD. Urmează calculatoarele
286 (1982); 386 (1985); 486 (1989); Pentium (1993); Pentium Pro (1995); Pentium II (1997);
Pentium III (1999); Pentium IV (2000).

Începând din 1981 au loc o serie de dezvoltări extraordinare:


• Se pun bazele Internet-ului - sistem global de comunicare la distanţă prin intermediul
calculatoarelor;
• Apar o serie de noi componente ale calculatorului: componente specializate pentru inter-
conectare (modemuri); scannerul; mouse-ul (ca urmare a apariţiei primelor programe cu
interfaţă grafică) etc.
• Apar noi companii specializate în producţia de programe sau componente de calculator;
• Se formează mari concernuri: Microsoft (cel mai mare producător de programe de
calculator, fondată în 1975 de Paul Allen şi Bill Gates), AOL (America Online), cel mai
mare furnizor de servicii Internet etc.
• Născut in 1955, Scott McNealy înfiinţează în februarie 1982 firma SUN. Numele
acesteia este un acronim pentru Reţeaua Universităţii Stanford (Stanford University
Network- SUN). Primul loc de muncă al lui Scott McNealy, după terminarea studiilor, a
fost într-unul din magazinele Uniunii Muncitorilor Auto (UAW). Interesul pentru
tehnologie l-a cuprins în urma angajării la firma de computere, Onyx Systems, unde a
primit şi cinci mii de acţiuni. Zece luni mai târziu, a înfiinţat SUN MicroSystems,
împreună cu trei colegi. În doar 20 de ani Scott McNealy a făcut din SUN principalul
furnizor de soluţii software pentru reţele. Multe din aplicaţiile Netscape au fost
dezvoltate iniţial la Universitatea din Illinois, folosind tehnologiile Sun. Compania pe
care o conduce a înregistrat în anul 2002 încasari de peste 11,7 miliarde de dolari şi are
reprezentanţe în peste o sută de ţări. Faţă de acum zece ani, când o acţiune SUN valora
un dolar, astăzi preţul acesteia este de cel puţin zece ori mai mare. A înfiinţat compania
cu 285.000 de dolari, devenind profitabilă în primul an. Astăzi, McNealy conduce un
imperiu de 18 miliarde de dolari, a adunat o avere considerabilă şi a devenit unul dintre
cei mai buni critici ai “rivalului” Microsoft. Fiind numit de o prestigioasă publicaţie
drept unul dintre cei mai influenţi oameni de afaceri din America, ideile lui McNealy din
domeniul ICT (Information and Communication Technologies) au fost preluate şi
transformate, adeseori, în noi curente în această industrie
(http://www.sun.com/aboutsun/coinfo/ history.html).

1.3. Structura funcţională a sistemelor de calcul

1.3.1. Clasificare

Sistemele de calcul, în general calculatoarele, se împart în:


1. Sisteme de calcul numerice - folosesc semnale digitale, reprezentate sub forma numerică
binară 0 şi 1;
2. Sisteme de calcul analogice - sunt stabilite relaţii matematice prescrise între variabilele
continue ale unui sistem fizic;
3. Sisteme de calcul hibride - folosesc calculul numeric cuplat cu calculul analogic.

Calculatoarele numerice pot fi, la rândul lor, neprogramabile sau programabile.

5
Noţiuni fundamentale
________________________________________________________________
• Cele mai cunoscute calculatoare numerice neprogramabile sunt obişnuitele calculatoare
de birou sau de buzunar cu un număr fix de operaţii, în care introducerea datelor
numerice şi a operaţiilor se face direct de către utilizator, de la tastatură. Există însă şi
numeroase alte dispozitive de calcul numeric neprogramabile, majoritatea fiind
încorporate în diferite echipamente electrocasnice (telefoane, televizoare, maşini de
spălat, maşini de gătit cu microunde etc) sau în echipamentele de automatizare
industriale şi din alte domenii.
• Calculatoarele numerice programabile sunt cele care funcţionează pe baza unui
program introdus în memoria calculatorului şi care poate fi modificat. Această ultimă
caracteristică este esenţială pentru a le distinge de cele neprogramabile. În realitate,
calculatoarul neprogramabil funcţionează şi el pe baza unui program, dar acesta este
impus de fabricant şi nu poate fi modificat.

În prezent, când se foloseşte cuvântul calculator fără a se specifica din ce categorie face
parte şi această categorie nu rezultă din context, se subînţelege că este vorba de un
calculator numeric programabil.

În funcţie de mărime, posibilităţi de prelucrare, preţ şi viteză de operare, există patru categorii
de sisteme de calcul: supercalculatoare, sisteme principale (mainframe), minicalculatoare şi
microcalculatoare.

1.3.2. Structura unui sistem de calcul

• Dispozitive periferice de intrare (DPI) – permit introducerea datelor în vederea


prelucrării.
Exemple: tastatură, mouse, joystick, creion optic, scanner etc.
• Dispozitive periferice de iesire (DPE) – permit redarea rezultatelor prelucrării.
Exemple: monitor, imprimantă, plotter etc.
• Canale (magistrale) de intrare/ieşire (I/E) - dirijează informaţii de la DPI la DPE;
• Unitatea aritmetico-logică (UAL) - execută operaţii aritmetice şi logice cu datele care
îi sunt furnizate de memorie. Rezultatul operaţiilor se depune, după execuţie, tot în
memorie;
• Memoria internã – principalã (MEM) - păstrează datele şi instrucţiunile programelor
în locaţiile binare identificate prin adrese;
• Memoria externã (MEM EXT)- solicitată când prelucrările depăşesc capacitatea
memoriei interne sau în scopul arhivării datelor şi programelor;
• Unitatea de comandă şi control (UCC) - primeşte instrucţiunile de la memorie, le
interpretează şi, corespunzător interpretărilor acestora, emite comenzi către UAL, MEM,
comenzi de transfer cãtre DPI, DPE sau MEM EXT, prin intermediul canalelor de I/E.

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

Observaţii:
UCC + UAL alcãtuiesc UCP (unitatea centralã de prelucrare = procesorul central).
UCP + MEM = UC (unitatea centralã).

Figura 1.1. Structura unui sistem de calcul

1.3.3. Funcţionarea sistemului de calcul

• Datele iniţiale şi programele se introduc prin DPI;


• Datele şi instrucţiunile programelor sunt transferate în MEM (prin intermediul canalelor
de I/E) sub formă binară, în locaţiile identificabile prin adresa lor;
• Fiecare instrucţiune este trimisã la UCC. Aceasta le interpretează şi emite comenzi către
MEM, UAL şi canalele I/E;
• Rezultatele memorate la diferite adrese sunt transferate către DPE, prin canalele de I/E.
Ele pot ajunge la dispozitivele de ieşire (monitor) pentru vizualizare; către MEM EXT
pentru arhivare etc.

Observaţie:
“ Calculatoarele electronice nu sunt supraomeneşti. Ele se strică. Fac greşeli – periculoase
uneori. Nu au nimic magic şi cu siguranţă nu sunt spirite sau suflete din mediul înconjurător.
Cu aceste rezerve ele rămân însă una din cele mai uimitoare şi tulburătoare realizări ale
omului, pentru că ne amplifică capacitatea intelectuală,…şi nu ştim unde ne vor duce până la
urmă propriile noastre minţi. ” Toffler, A., Al treilea val, Ed.Politică, Bucureşti, 1983, p.236.

7
Noţiuni fundamentale
________________________________________________________________
2.BAZELE MATEMATICE ALE CALCULATOARELOR

2.1. Reprezentarea informaţiei

Informaţiile prelucrate prin sistemele de calcul sunt de diverse tipuri dar ele sunt
reprezentate la nivel elementar sub formă binară. O informaţie elementară
corespunde unei cifre binare (0 sau 1) numită bit. O informaţie mai complexă (un
caracter, un număr etc.) se exprimă printr–o mulţime de biţi.

Codificarea unei informaţii (la nivelul sistemului de calcul) constă în a stabili o


corespondenţă între reprezentarea externă a informaţiei (caracterul A sau numărul 33,
de exemplu) şi reprezentarea sa internă, care este o secvenţă de biţi. Avantajele
reprezentării binare se referă în special la facilitatea de realizare tehnică cu ajutorul
elementelor bistabile (sisteme cu 2 stări de echilibru) precum şi la simplitatea
efectuării operaţiilor fundamentale sub forma unor circuite logice, utilizând logica
simbolică cu două stări (0, 1).
Informaţiile prelucrate în sistemele de calcul sunt de două tipuri: instrucţiuni şi
date.

Instrucţiunile, scrise în limbaj maşină, reprezintă operaţiile efectuate în sistemul de


calcul şi ele sunt compuse din mai multe câmpuri:
• codul operaţiei de efectuat;
• operanzii implicaţi în operaţie.
Codul operaţiei trebuie sa suporte o operaţie de decodificare (transformare inversă
codificării) pentru a se putea efectiv executa.

Datele sunt operanzii asupra cărora acţionează operaţiile (prelucrările), sau sunt
produse de către acestea. O adunare, de exemplu, se aplică la doi operanzi, furnizând
un rezultat care este suma acestora.

Se pot distinge date nenumerice, de exemplu simbolurile care constituie un text, şi


date numerice, rezultat al unei operaţii aritmetice:
Datele nenumerice corespund caracterelor alfanumerice: A, B, ..., Z, a, b, ..., z, 0, 1,
2, ..., 9 şi caracterelor speciale: ?, !, “, $, ;, ...

Codificarea se realizează pe baza unei tabele de corespondenţă specifică fiecărui cod


utilizat. Printre cele mai cunoscute coduri putem enumera:

• BCD - Binary Coded Decimal, prin care un caracter este codificat pe 6 biţi;
• ASCII - American Standard Code for Information Interchange (8 biţi).
Rezulta 256 de caractere codificate cu numere intre 0 si 255;
• UNICODE – 16 biti; 2 la a 16-a; 65536 caractere cuprinse intre 0 si 65535;
8
Informatica aplicata-note de curs constructii20092010@gmail.com;
http://scdsd.bluepink.ro/cursuri

• Tema: www.google.com> search: ascii table; unicode table; download …le


retinem + trimitere prin e-mail la adresa constructii20092010@gmail.com
> fisier cu numele: ASCII_UNICODE_Nume+prenume_grupa; Termen:
10 zile; La subject: ASCII_UNICODE_Nume+prenume_grupa
• EBCDIC - Extended Binary Coded Decimal Internal Code (8 biţi).

Figura următoare prezintă corespondenţa dintre diferite coduri.

Figura 2.1 Tabela de corespondenţă între coduri


Hexadecimal Decimal BCD Octal Binary Parity ASCII EBCDIC
00 0 00 000 00000000 even NUL NUL
01 1 01 001 00000001 odd SOH SOH
02 2 02 002 00000010 odd STX STX
03 3 03 003 00000011 even ETX ETX
04 4 04 004 00000100 odd EOT PF / SEL
05 5 05 005 00000101 even ENQ HT / PT
06 6 06 006 00000110 even ACK LC / RNL
07 7 07 007 00000111 odd BEL DEL
08 8 08 010 00001000 odd BS GE
09 9 09 011 00001001 even HT SPS
0A 10 illegal 012 00001010 even LF SMM / RPT
0B 11 illegal 013 00001011 odd VT VT
0C 12 illegal 014 00001100 even FF FF
0D 13 illegal 015 00001101 odd CR CR
0E 14 illegal 016 00001110 odd SO SO
0F 15 illegal 017 00001111 even SI SI
10 16 10 020 00010000 odd DLE DLE †
11 17 11 021 00010001 even DC1 DC1 / SBA
12 18 12 022 00010010 even DC2 DC2 / EUA

2.2. Datele numerice


Datele numerice sunt de următoarele tipuri:
a) numere întregi pozitive sau nule: 0; 1; 315...
b) numere intregi negative: -1; -155...
c) numere fracţionare: 3.1415; -0.5...
d) numere în notaţie ştiinţifică: 4.9 E10=4.9*1010; 107E-4=107*10 - 4; 1023E2 ...(
start>accessories>calculator; excel ---click dr pe celula; type)

9
Noţiuni fundamentale
________________________________________________________________
Codificarea se realizează cu ajutorul unui algoritm de conversie asociat tipului de
dată corespunzător. Operaţiile aritmetice (adunare, scădere, înmulţire, împărţire) care
se pot aplica asupra acestor date se efectuează de regulă în aritmetica binară. Figura
de mai jos arată regulile operaţiilor binare.

Numerele întregi pozitive sau nule cuprind: 0, 1, 2, ...,N, N + 1...


2.2.1. Sisteme de numeraţie
• Un sistem de numeraţie face să-i corespundă unui număr N, un anumit simbolism
scris şi oral. într-un sistem de numeraţie cu baza p > 1, numerele 0, 1, 2, ..., p –1
sunt numite cifre.
• Orice număr întreg pozitiv poate fi reprezentat astfel:
N = a n-1 p n-1 + ... + a1p + a0 cu ai apartinand multimii {0, 1, 2, p-1}.

Se utilizează de asemenea notaţia echivalentă N = a n-1...a1a0.

Numerele scrise în sistenul de numeraţie cu baza 2 (binar) sunt adesea compuse


dintr-un mare număr de biţi, şi de aceea se preferă exprimarea acestora în sistemele
octal (p = 8) şi hexazecimal (p = 16), deoarece conversia cu sistemul binar este
foarte simplă.

Schimbări de bază (Conversii)

a) Zecimal - Binar
Conversia se efectuează prin împărţiri întregi succesive cu 2, până când câtul devine
nul. Numărul binar se obţine scriind resturile în ordinea inversă.
Exemplu: Conversia lui 238:
238 : 2 = 119 rest 0
119 : 2 = 59 rest 1
59 : 2 = 29 rest 1
29 : 2 = 14 rest 1
14 : 2 = 7 rest 0
7:2 = 3 rest 1
3:2 = 1 rest 1
1: 2 = 0 rest 1
Considerând resturile de jos în sus se obţine 23810 = 111011102

b) Binar - Zecimal

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

Conversia se realizează prin însumarea puterilor lui 2 corespunzătoare biţilor egali cu


1 (puterile se considera de la 0, de la dreapta spre stanga secventei binare).
Exemplu: 111011102= 1*27 + 1*26 + 1*25 + 1* 23+ 1*22+1*21 = 23810

c) Zecimal - Octal
Conversia se efectuează prin împărţiri întregi succesive cu 8, până când câtul devine
nul. Numărul octal se obţine scriind resturile în ordinea inversă.
Exemplu: Conversia lui 238:
238 : 8 = 29 rest 6
29 : 8 = 3 rest 5
3 : 8 = 0 rest 3
Considerând resturile de jos în sus se obţine 23810 = 3568

d) Octal - Zecimal
Conversia se reduce la însumarea puterilor lui 8: 3*82+5*81+6*80= 238

e) Zecimal - Hexazecimal
Conversia se efectuează prin împărţiri întregi succesive prin 16. Testul de oprire
corespunde situaţiei câtului nul. Numărul hexazecimal obţinut considerând resturile
obţinute de la ultimul către primul. OBS: 0,1,2,3,4,5,6,7,8,9, A(10), B(11).....F(15).

e) Hexazecimal - Zecimal
Conversia se reduce la însumarea puterilor lui 16.

f) Binar - Octal
Conversia se realizează înlocuind de la dreapta la stânga, grupele de 3 biţi prin cifra
octală corespunzătoare. Dacă numărul de biţi nu este multiplu de 3 se completează
configuraţia binară la stânga cu zerouri.
Exemplu: 101011111= 537 in octal

g) Octal - Binar
Conversia corespunde dezvoltării fiecărei cifre octale în echivalentul ei binar pe 3
biţi.
Exemplu:
278 = 010’1112 deoarece 28 = 0102 si 78 = 1112.

h) Binar - Hexazecimal
Conversia se realizează înlocuind de la dreapta la stânga, grupele de 4 biţi prin cifra
hexazecimală corespunzătoare. Dacă numărul de biţi nu este multiplu de 4 se
completează configuraţia binară la stânga cu zerouri.
Exemplu: 1010112= 2B16 .

11
Noţiuni fundamentale
________________________________________________________________
i) Hexazecimal - Binar
Conversia corespunde dezvoltării fiecărei cifre hexazecimale în echivalentul ei binar
pe 4 biţi.
Exemplu:
3A16 = 0011’10102 deoarece 316= 00112 si A16=10102.

Binar Octal Zecimal Hexa


0 0 0 0
1 1 1 1
10 2 2 2
11 3 3 3
100 4 4 4
101 5 5 5
110 6 6 6
111 7 7 7
1000 10 8 8
1001 11 9 9
1010 12 10 A
1011 13 11 B
1100 14 12 C
1101 15 13 D
1110 16 14 E
1111 17 15 F
10000 20 16 10
10001 21 17 11
Pentru a le deosebi, la o valoare hexazecimala se adauga fie un prefix 0x (rezulta
notatia 0x44), fie un sufix h (rezulta notatia 44h). Pentru reprezentarea constantelor
in octal se foloseste prefixul 0: 0721
Valorile numerice pentru care nu se specifica baza de numeratie se considera de
regula ca sunt zecimale.
Aceste precizari sunt necesare deoarece, in prezentarea diverselor componente
ale calculatorului, vom intalni diversi parametri numerici reprezentati in forma
binara.

Tema: Numerele 7456; 559; 339; 4541 se vor reprezenta (manual!!!!) in binar,
octal si hexazecimal iar rezultatele obtinute vor fi trecute inapoi in zecimal,
conform exemplelor de mai sus din curs. Verificarea se va face cu start;
programs,accessories; calculator pe scientific.

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

Se redacteaza modul de lucru in wordpad (word) si se trimite fisierul


conversii_numeprenume_grupa.rar prin e-mail la adresa
constructii20092010@gmail.com. Termen: 10 zile (si pt ascii+unicode).

2.2.2. Numere întregi negative


Numerele întregi negative pot fi codificate prin trei metode:
• semn şi valoare absolută (SVA);
• complement logic sau restrâns sau faţă de 1 (C1);
• complement aritmetic sau adevărat sau faţă de 2 (C2);
SVA: Prin metoda “ semn şi valoare absolută“, numerele se codifică sub forma: ±
valoare absolută.
Prin această reprezentare se sacrifică un bit pentru semn. In mod normal, 0 este
codul semnului +, iar 1 este codul semnului -. în aceste conditii.

Această metodă de reprezentare prezintă unele inconveniente:


- numărul zero are două reprezentări distincte: 000...0 şi 100...0, adică +0 si - 0;
- tabelele de adunare şi înmulţire sunt complicate din cauza bitului de semn care
trebuie tratat separat.
Complement logic şi aritmetic
C1: Complementul logic (complement faţă de 1) se calculează înlocuind, pentru
valorile negative, fiecare bit 0 cu 1 şi 1 cu 0.

C2: Complementul aritmetic (complement faţă de 2) este obţinut adunând o unitate


la valoarea complementului logic.

Exemplu: Reprezentarea numărului (-6) pe 4 biţi: +6 = 0110 (primul 0 din stg


este al semnului +!!!!)
Semn şi valoare absolută: - 6 = 1110
Complement faţă de 1: - 6 = 1001 (am « negat » bitii de 0 si 1 de la 0110 !!!!)
Complement faţă de 2: - 6 = 1010 (la reprezentarea din C1 se aduna 1)

Se poate uşor constata că intervalul numerelor întregi N care se pot reprezenta în


complement faţă de 1 este acelaşi ca şi pentru reprezentarea “semn şi valoare
absolută“.

Complement aritmetic sau adevărat sau faţă de 2 (C2);

Se poate remarca faptul că bitul cel mai din stânga (bitul de semn) este întotdeauna 0
pentru numere pozitive şi 1 pentru cele negative şi aceasta pentru fiecare din cele trei
reprezentări, conform tabelului următor.

13
Noţiuni fundamentale
________________________________________________________________

Reprezentarea în complement faţă de 1 recunoaşte două zerouri (+0 si –0), dar este
simetrică, deoarece aceleaşi numere pozitive şi negative sunt reprezentabile, iar
această situaţie se poate uşor realiza electronic.
• In complement faţă de 1 sau faţă de 2, operaţiile aritmetice sunt avantajoase,
deoarece operaţia de scădere se realizează prin adunarea complementului.
• Intr-o adunare în complement faţă de 1, o cifră de transport către ordinal superior
generată de bitul de semn trebuie adăugată la rezultatul obţinut,
• Spre deosebire de complementul faţă de 2, când această cifră de transport se ignoră.
• In complement faţă de 1 sau 2 nu se produce depăşire de capacitate decât în cazul în
care cifrele de transport generate de bitul de semn şi de bitul anterior acestuia sunt
diferite.

Bitul de semn
0 1 1 1 1 1 1 1 = 127
0 0 0 0 0 0 1 0 = 2
0 0 0 0 0 0 0 1 = 1
0 0 0 0 0 0 0 0 = 0
1 1 1 1 1 1 1 1 = −1
1 1 1 1 1 1 1 0 = −2
1 0 0 0 0 0 0 1 = −127
1 0 0 0 0 0 0 0 = −128
Numere ntregi reprezentati in complement fata de 2, pe 8 biti

Complement fata de 2 Zecimal


0001 1
0000 0
1111 −1
1110 −2
1101 −3
1100 −4

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

Numere ntregi reprezentati in complement fata de 2, pe 4 biti

1111 1111 255


− 0101 1111 − 95
=========== =====
1010 0000 (complement fata de 1) 160
+ 1 + 1
=========== =====
1 (complement afta de 2) 161

3.Programe. Sisteme de operare

Sistemul de calcul prelucrează datele numai dacă este programat. Programul constă dintr-o
succesiune de instrucţiuni care converg, pe baza unui algoritm, către soluţia problemei ce
urmează să se rezolve. Calculatorul este privit ca un instrument folosit pentru rezolvarea
problemei respective, efectuând anumite acţiuni asupra unor date. Fiecare sarcină pe care o
indeplineşte se caracterizează printr-un set de date specific sarcinii respective şi printr-un
algoritm care indică acţiunile ce trebuie efectuate asupra datelor pentru îndeplinirea acestei
sarcini. Ca urmare, programul trebuie să conţină două categorii de informaţii:
a. Descrierea datelor de intrare, de ieşire şi auxiliare care vor fi prelucrate;
b. Descrierea algoritmului aplicat pentru prelucrarea acestor date.

În anul 1973, John Wirth a enunţat că programul poate fi caracterizat prin relaţia:

Program = Date + Algoritm.

Relaţia pune în evidenţă legătura strânsă dintre date şi algoritm şi subliniază importanţa care
trebuie să li se acorde ambelor componente la elaborarea unui program.

Ansamblul programelor este numit software.

Software-ul poate fi:


a. De sistem – coordonează modul în care lucrează componentele sistemului şi oferă
asistenţă la dezvoltarea programelor de aplicaţii (alcătuiesc software-ul de bază);
b. De aplicaţie – sunt destinate să rezolve problemele specifice unei aplicaţii (alcătuiesc
software-ul de aplicaţie).

Observaţie:
Programele de sistem sunt specifice unor anumite tipuri de sisteme de calcul (există o
corespondenţă hard–soft).

15
Noţiuni fundamentale
________________________________________________________________

3.1. Limbaje de programare


Limbajul de programare este definit ca fiind ansamblul format de un vocabular şi un set de reguli
gramaticale, necesar instruirii unui calculator pentru a realiza anumite activităţi.

Aspectele caracteristice ale limbajelor de programare sunt:

• Sintaxa - reprezintă ansamblul regulilor prin care pornind de la simboluri de bază se construiesc
structuri compuse. Se defineşte gramatica ca fiind mulţimea regulilor sintactice;
• Semantica – indică sensul construcţiilor sintactice şi corespunde unui set de reguli care determină
semnificaţia instrucţiunilor limbajului;
• Pragmatica – este capacitatea de a utiliza construcţiile sintactice şi semantice.

Există limbaje generale ( Pascal, C), de prelucrare a bazelor de date ( COBOL, dBASE, SQL), orientate spre
obiect ( SmallTalk, C++, Java), editoare de texte şi hiper-texte ( HTML, TeX, PostScript ), de nivel scăzut (
Assembler ), folosite în inginerie, matematică, fizică ( Fortran, Matlab, Mathematica) şi lista poate
continua.

Fiecare limbaj are avantaje şi dezavantaje, însă se remarcă tendinţa de apropiere de limbajul natural
formalizat, de simplificare a construcţiilor foarte des folosite, de a structura în mod logic diverse secţiuni ale
programelor scrise în limbajul respectiv, de modularizare şi de a pune la dispoziţia programatorului
biblioteci vaste ( de exemplu Borland VCL - Visual Component Library, ierarhia de clase de la IBM -
VisualAge sau MFC - Microsoft Foundation Classes , Java API – Java Aplication Programming Interface).

O clasificare a limbajelor de programare cuprinde pe cele:

a. Procedurale sau neprocedurale - utilizatorul descrie pas cu pas algoritmul de rezolvare; unitatea
de bază este procedura sau funcţia; se aplică principiul programării structurate prin care, orice
procedură poate fi reprezentată prin cele trei structuri fundamentale din algoritmică: secvenţială
(liniară), alternativă (de selecţie), ciclică (repetitivă). Exemple: Algol60, Fortran,Pascal, C, PL/1,
Ada etc.
b. Modulare - Programul se descompune în module. Acestea sunt independente (atomice). Principiul
de bază este încapsularea. Modulul are două componente: interfaţa şi implementarea. Exemple:
Modula, Ada etc.
c. Orientate spre obiect - Obiectul este o entitate care conţine stare (informaţie) şi comportament şi
poate reprezenta orice entitate din lumea reală sau virtuală. Programul este un ansamblu de obiecte
în interacţiune. Exemple: Ada 95, boo, C++ , C#, ColdFusion, Common Lisp, CorbaScript, COOL
(Object Oriented COBOL), D, Delphi, ECMAScript (JavaScript), Eiffel, F-Script programming
language, Fortran 2003, Gambas, IDLscript, incr Tcl, J, Java, JavaScript, Lexico, Objective-C, Perl
5, PHP, Simula, Smalltalk, Visual Basic / VB.NET etc.
d. Specifice programării funcţionale: Programul este un ansamblu de funcţii şi apeluri recursive;
funcţiile sunt folosite la descrierea datelor şi codului; nu există instrucţiuni de atribuire.
Fundamentul matematic este dat de expresiile lambda. Exemple: Lisp, ML etc
e. Specifice programării logice - În programarea logică programul constă din fapte şi reguli.
Limbajele sunt declarative - se indică modul cum trebuie să arate soluţia problemei. Fundamentul
matematic este asigurat de sistemele logice formale: logica predicatelor de ordinul 1 precum şi logici
modale, temporale sau monotonice. Exemplu: Prolog, Mercury, Visual Prolog, Oz, Metaphor etc.
f. Specifice programării concurente şi distribuite – Ada, Alef, ChucK, Cilk, Comega, Concurrent
Pascal, E, Erlang, Java, Joule, Limbo, Mozart/Oz, Occam, Pict, Promise, SR etc.

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

g. Specifice bazelor de date: SQL, dBase, FoxPro, MS SQL, MySQL, MS Access etc.
h. Specifice programării Web: ASP, ASP.NET, PHP, JSP; Limbaje de scripting pe server/client:
VBScript, JavaScript, JavaBeans, EJB, Cold Fusion, PERL, PHP etc.
i. Specifice programarii bazate pe agenţi: Telescript, Agents, AgentTcl etc.

După modul cum au evoluat în timp, limbajele de programare se împart în:

• limbaje de primă generaţie: limbajul maşină (machine language);


• limbaje de generaţia a doua: limbajul de asamblare (assembly language);
• limbaje de generaţia a treia: limbajele de nivel înalt (high-level programming languages);
• limbaje de generaţia a patra: limbaje mai apropiate de limbajul uman (very high-level
programming languages) decât limbajele de nivel înalt.

Limbajul maşină:

• este limbajul pe care calculatorul îl înţelege în mod direct;


• programele se scriu în cod binar: succesiuni de 0 şi 1;
• fiecare instrucţiune corespunde unei combinaţii de biţi;
• programatorul trebuie să cunoască detaliat structura hardware a calculatorului;
• programatorul trebuie să gestioneze fără greşeală alocarea adreselor de memorie pentru un program;
• pot să apară erori datorită concepţiei programului, sintaxei, suprapunerii adreselor de memorie etc.

Limbajul de asamblare:

• a apărut începând cu anul 1950 şi reprezintă o formă mai prietenoasă a limbajului maşină;
• programele se scriu în mod text (mnemonice) pentru ca apoi să fie traduse într-o formă binară,
corespunzătoare limbajului maşină;
• limbajul de asamblare este tradus în limbaj maşină de către assembler;
• limbajele de asamblare încă solicită programatorului cunoaşterea de multe detalii hardware;
• este specific anumitor tipuri de calculatoare;

Observaţie:

Limbajul de asamblare împreună cu limbajul maşină formează categoria limbajelor de nivel scăzut (low-
level languages).

Limbajele evoluate (High Level Languages):

• permit formularea soluţiilor problemei de rezolvat în termeni mai apropiaţi de cei folosiţi de oameni;
sunt mult mai apropiate de limbajul uman;
• au fost concepute pentru a permite programării să fie mult mai uşoară şi cu mai puţine erori ;
• programatorul nu trebuie să cunoască detalii cu privire la structura internă a unui anumit tip de
calculator;
• după modul cum se face transpunerea programelor evaluate, există două tipuri de astfel de
componente software specializate:
1. interpretor: traduce succesiv instrucţiunile de nivel înalt într-o formă intermediară care este
apoi executată; poate execută un program imediat.
2. compilator: traduce instrucţiunile de nivel înalt direct în limbaj maşină. Compilatorul
necesită mai mult timp. Programele produse de compilator rulează mul mai rapid decât cele
produse de interpretor.

17
Noţiuni fundamentale
________________________________________________________________
• majoritatea programelor evolute au la dispoziţie atât compilator cât şi interpretor: interpretorul se
foloseşte în timpul realizării unui program pentru testarea unor mici secţiuni ale programului. Unele
limbaje evoluate sunt concepute să lucreze numai cu interpretor (BASIC, LISP).
• dacă limbajele sunt standardizate, atunci fiecare producător de calculatoare (procesoare) va putea să
realizeze compilatorul care să respecte standardele şi să traducă programele în limbajul maşină
specific producătorului: devine posibil ca un program, respectându-se aceste standarde, să poată fi
compilat pe diverse calculatoare şi apoi executat.

Prin scrierea unui program într-un limbaj evoluat se face o economie imensă de timp. Programatorul pierde
mai puţin timp pentru scrierea într-un limbaj mult mai apropiat de cel uman decât dacă acelaşi program ar fi
scris în limbaj maşină. Timpul de compilare al programului este de ordinul secundelor.

În figura 1.1. sunt prezentate primele trei generaţii de limbaje de programare şi modul cum interacţionează
acestea cu calculatorul.

Figura 1.1. Primele trei generaţii de limbaje de programare

În ultimii ani, limbajul Java dezvoltat de compania americană Sun Microsystems (SUN - Standford
University Network – www.sun.com) a devenit unul dintre cele mai populare limbaje de programare.
Principalele sale calităţi sunt uşurinţa de învăţare, existenţa unor instrumente de dezvoltare puternice care
permit programatorilor să realizeze rapid şi eficient aplicaţii complexe şi posibilitatea de a rezolva un număr
vast de probleme atât din sfera comercială cât şi din cea ştiinţifică.

3.2. Limbajul Java - Istoric

Primii paşi în realizarea limbajului Java au fost făcuţi în aprilie 1991 de către o echipă de cercetare de la Sun
Microsystems condusă de James Gosling (autor al editorului emacs şi al sistemului de ferestre grafice
NeWS). Iniţial, scopul echipei era să creeze software destinat produselor electronice comerciale. Aceste
echipamente se definesc ca mici, portabile, distribuite şi lucrând în timp real. De la aceste aparate se cer în
general fiabilitate şi uşurinţă în exploatare. Foarte curând, echipa a constatat că un produs software destinat
unei astfel de pieţe poate avea succes doar dacă este dezvoltat într-un mediu independent de platforma
hardware. Grupul de cercetare a încercat să extindă instrumente de dezvoltare bazate pe limbajul C++ dar
aceste încercări s-au soldat cu un eşec datorită complexităţii acestui limbaj. Confruntaţi cu această problemă,
membrii echipei au decis să realizeze un limbaj care să posede caracteristicile de care aveau nevoie: mai
flexibil, mai simplu şi mai portabil. Aşa s-a născut Java, limbaj de programare capabil să ruleze pe orice

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

dispozitiv conectat la o reţea: staţii de lucru Sun, PC-uri, calculatoare MacIntosh, PDA-uri (Personal Digital
Assistant), telefonie mobilă şi chiar frigidere, aparate de prăjit pâine etc.

În dezvoltarea limbajului, Gosling şi echipa sa au împrumutat din caracteristicile limbajelor de programare


consecrate, cum ar fi C++ si SmallTalk, dar, în acelaşi timp, au creat un limbaj extrem de robust prin
îndepărtarea facilităţilor catalogate ca „periculoase” din C++ cum ar fi pointerii, supraîncărcarea
operatorilor şi alocarea dinamică a memoriei.

Numele iniţial al limbajului a fost Oak (stejar), copac care creştea în faţa biroului lui James Gostling.
Ulterior, s-a descoperit că numele fusese deja folosit în trecut pentru un alt limbaj de programare aşa că a
fost abandonat şi înlocuit cu Java.

Pe data de 23 mai 1995, după patru ani de cercetare şi dezvoltare, firma Sun Microsystems a lansat oficial
prima versiune a limbajului Java, când a făcut publică şi specificaţia noului limbaj, la SunWorld, în San
Francisco.

În aceeaşi perioadă, Marc Andreessen, student care lucra la National Center for Supercomputing
Applications (NCSA), a creat primul browser pentru World Wide Web, Mosaic 1.0. Pe la mijlocul anului
1994, creatorii lui Java au găsit World Wide Web-ul ca fiind foarte promiţător din punctul de vedere al
limbajului pe care îl dezvoltau. Tehnologia dezvoltată de Java era perfect pregătită pentru acest mediu, în
special datorită capacităţilor sale de a rula pe mai multe platforme şi facilităţilor de comunicare prin reţele.
Cel mai important lucru este că a introdus ceva ce nu mai fusese posibil până atunci: posibilitatea de a rula în
siguranţă aplicaţii de pe serverele Web pe calculatoarele utilizatorilor.

În Noiembrie 1995 a fost făcută disponibilă, pe site-urile firmei Sun Microsystems, prima versiune de Java
(beta), fiind căutată de zeci de mii de persoane şi sute de firme. Prima versiune populară de Java a fost Java
1.02, care a apărut în 1996, distribuită de Sun sub forma JDK1.02 (Java Development Kit). Aceasta conţinea
compilator şi interpretor Java precum şi alte unelte utile programatorilor (depanator, generator de
documentaţie, dezasamblor). Iniţial au existat versiuni pentru sistemele de operare Sun, Windows 3.x/95 şi
MacOS. Ulterior au apărut versiuni şi pentru alte sisteme de operare (alte UNIX-uri, Linux etc).

În 1997 a apărut JDK1.1, beneficiind de multe îmbunătăţiri şi extensii. Unele programe compilate cu
versiuni 1.02 ale compilatorului nu sunt compatibile cu Java1.1 decât dacă sunt recompilate. Un program sau
applet Java 1.1 nu va rula într-un mediu Java1.02. Java 1.1.5. a adus îmbunătăţiri în interfaţa utilizator,
tratarea evenimentelor şi o mai mare consistenţă a limbajului.

În decembrie 1998 a fost lansată noua versiune Java 2, care introduce câteva facilităţi avansate: Swing – noi
funcţii care permit crearea unei interfeţe utilizator grafice, fie în stilul unui anumit sistem de operare, fie în
noua prezentare grafică Java, numită Metal; drag and drop – posibilitatea de a transfera interactiv
informaţii între diferite aplicaţii sau dintr-o parte a interfeţei programului în alta; revizuirea completă a
funcţiilor din Java, în sensul alinierii acestora la posibilităţile audio ale altor limbaje etc.

Partea de control nu a fost neglijată: cu toate că versiunea principală nu este concepută pentru uz industrial
sau în dispozitive cu capacităţi restrânse, Sun a lansat două linii paralele de Java, PersonalJava, pentru
dispozitive limitate ca şi capacităţi dar cu posibilităţi de afişare şi EmbeddedJava, pentru dispozitive limitate
ca şi capacităţi sau resurse şi fără nici un mijloc de afişare:

1. PersonalJava (http://java.sun.com/products/personaljava/pj-emulation.html) - este un nou mediu de


dezvoltare a aplicaţiilor Java pentru dispozitive conectabile în reţea, cu capacităţi mai reduse decât
calculatoarele personale (de exemplu dispozitive de uz casnic sau industrial). Deoarece PersonalJava
include numai o anumită parte din funcţiile Java standard, aplicaţiile scrise pentru PersonalJava sunt
perfect compatibile în sus. Prezintă următoarele particularităţi: mecanisme de incărcare şi execuţie
dinamică a codului, ceea ce permite să se facă modificări foarte uşor în codul aplicaţiilor;
dimensiune redusă a codului generat (codul binar Java este mult mai compact în raport cu celelalte

19
Noţiuni fundamentale
________________________________________________________________
coduri); este printre primele limbaje care aduce tehnologia orientată spre obiect în astfel de
dispozitive. Java îsi menţine portabilitatea şi în acest domeniu, tocmai datorită faptului ca el rulează
în interiorul unei maşini virtuale. PersonalJava include o maşină Java virtuală, un set de librării de
bază şi un set de librării opţionale, care pot fi folosite după preferinţă. Pachetele sunt concepute
modular şi scalabile, permiţând, de exemplu, folosirea unor dispozitive diferite de afişare sau
protocoale diferite de reţea.

2. EmbeddedJava (http://java.sun.com/j2me/index.jsp) este, în mod asemănător cu PersonalJava, o


versiune de Java pentru dispozitive cu facilităţi restrânse, cu deosebirea că este mult mai putin
pretenţios. A fost proiectat să fie mult mai modular, scalabil şi configurabil, rulând cu un minim
posibil de memorie, asigurând o serie de nivele de funcţionalitate. Această versiune asigură suportul
unor instrumente absolut necesare: unelte de inserare a codului executabil în memoriile ROM, unelte
pentru compilarea, compresia şi plasarea imaginilor precum şi pentru estimarea resurselor de calcul
necesare.

Din 1995 şi până în prezent, lumea Java trăieşte într-o continuă agitaţie, apărând alte şi alte inovaţii şi
modificări ale limbajului. Alături de JDK - Java Development Kit (http://java.sun.com/j2se/1.5.0/index.jsp),
pus la dispoziţie de compania Sun Microsystems, au apărut noi medii de dezvoltare a aplicaţiilor Java: Sun
ONE Studio 5 (http://wwws.sun.com/software/sundev/jde/); JCreator (http://www. jcreator. com/); BlueJ
(http://www.bluej.org/); Borland JBuilder (http://www. borland. com/products/downloads/
download_jbuilder. html); RealJ (http://www.realj. com/); DrJava (http://drjava. sourceforge. net/);
NetBeans IDE (http://www.netbeans.org/); JIPE (http://jipe.sourceforge.net/); Visual Age for Java
(http://www7b.software. ibm.com/ wsdd/zones/vajava /) etc.

3.3. Tehnologia Java


http://www.java.com/en/download/windows_ie.jsp?locale=en&host=www.java.com:80
Java este un limbaj de programare orientat spre obiect, destinat iniţial pentru aparatura electronică inteligentă
conectată în reţea, proiectat pentru dezvoltarea de aplicaţii pentru Internet şi extins complet pentru ca, pe
langă domeniul World Wide Web, să poată fi folosit şi pentru dezvoltarea de software de interes general.
În acelaşi timp Java este şi o platformă, în sensul că oferă o arhitectură multi-nivel şi distribuită obiect.
Aplicaţiile bazate pe această platformă pot fi distribuite prin sisteme fizice multiple, ceea ce permite
scalabilitate, securitate, performanţă şi o uşoară interfaţare cu sistemele existente.

3.3.1. Limbajul de programare Java

O caracteristică particulară a programelor Java este că sunt în acelaşi timp interpretate şi compilate.
Compilarea constă în traducerea programelor scrise în limbajul Java într-un limbaj intermediar numit
bytecode (cod de octeţi). Acest limbaj intermediar este indepenent de platformă şi este interpretat de un
interpretor Java (Java Virtual Machine – JVM). Interpretorul execută fiecare instructiune din bytecode pe
calculatorul ţintă. Compilarea are loc o singură dată, pe când interpretarea este un proces care se repetă de
fiecare dată când un program Java este lansat în execuţie. Instructiunile bytecode sunt de fapt instrucţiunile
în cod maşină pentru Maşina Virtuală Java (Java Virtual Machine). Orice interpretor Java, fie el java.exe sau
un browser Web capabil să ruleze appleturi, este de fapt o implementare a maşinii virtuale Java.
Java bytecode face posibilă filozofia “scrie odată, execută oriunde - write once, run anywhere” care a fost şi
este, scopul urmărit de către dezvoltatorii limbajului. Un program Java poate fi compilat pe orice calculator
pe care este instalat un compilator Java, după care fişierele bytecode pot fi executate sub orice implementare
a maşinii virtuale Java.

3.3.2. Platforma Java

O platformă este definită drept contextul software sau hardware în care rulează un program. Exemple de
platforme sunt Windows 2003 Server, Windows XP, Linux, Sun Solaris etc. Majoritatea platformelor pot fi

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

descrise ca o combinaţie de componente hardware şi software. Platforma Java este o platformă exclusiv
software care rulează pe diverse platforme hardware.

Platforma Java are două componente :


• Maşina Virtuală Java (Java Virtual Machine - JVM)
• Interfaţa de programare a aplicaţiilor Java (Java Application Programming Interface – Java API)

Aceste componente asigură legătura dintre un program scris utilizând limbajul Java şi o platformă harware
oarecare. Rolul platformei Java este să asigure independenţa programului de platforma hardware pe care
acesta rulează, aşa cum se poate vedea în figura 1.2.

Figura 1.2. Un program care rulează pe o platformă Java

3.3.3. Maşina virtuală Java

Maşina virtuală Java (JVM) este un calculator abstract, care stă la baza realizării limbajului de programare
Java şi reprezintă componenta tehnologiei Java pe care se bazează posibilitatea rulării unui program pe o
multitudine de platforme hardware. Prima variantă a JVM a fost concepută de James Gosling în anul 1992,
după care a fost dezvoltată de o echipă de la firma Sun Microsystems, cu contribuţii de la colaboratori din
întreaga lume. In prezent JVM a fost implementată pe o mare varietate de platforme: Windows , Linux ,
MacOS , Solaris etc.

Ideea de bază a autorilor limbajului Java a fost ca acesta să fie independent de platformă, adică independent
de tipul calculatorului pe care lucrează şi de sistemul de operare al acestuia.

Pentru a se realiza portabilitatea unui program (posibilitatea de transfer de pe o platformă pe alta) există
două metode clasice:

1. Programul este scris într-un limbaj de nivel superior (de exemplu în C, C++, Pascal etc.), care nu
depinde de tipul de calculator folosit şi apoi este compilat, adică este tradus într-un program binar,

21
Noţiuni fundamentale
________________________________________________________________
destinat pentru un anumit tip de calculator. Acest program poate fi executat direct de către
procesorul calculatorului respectiv, deoarece foloseşte setul de instrucţiuni specific acestuia.
Compilarea se face de către un program special, numit compilator. Trebuie să existe câte un
compilator separat pentru fiecare limbaj şi pentru fiecare tip de calculator destinaţie, iar programele
binare rezultate din compilare nu pot fi transmise între calculatoare de tipuri diferite. În cazul
programelor compilate, în timpul execuţiei acestora, în memoria calculatorului nu se găseşte
programul sursă, scris în limbaj de nivel superior, ci doar programul binar rezultat după compilare.

2. În loc ca programele să fie compilate, ele pot fi interpretate: în timpul execuţiei programului, în
memoria calculatorului se găseşte chiar programul sursă în limbaj de nivel superior, împreună cu un
program binar numit interpretor. Acesta parcurge instrucţiunile programului sursă şi le
interpretează, adică le traduce în instrucţiuni binare, aparţinând setului de instrucţiuni al
procesorului şi le transmite pe rând procesorului pentru a fi executate. Exemple de limbaje
interpretate sunt: limbajul Basic, limbajele de comandă ale sistemelor de operare, limbajele de
comandă ale unor sisteme de gestiune a bazelor de date etc. Limbajele interpretate prezintă unele
avantaje (programele sunt mai uşor de exploatat şi depanat), dar prezintă şi dezavantajul că
executarea programelor se face mai lent decât în cazul celor compilate. Din această cauză, atunci
când viteza de execuţie este esenţială, se preferă programele compilate.

În cazul limbajului Java, portabilitatea este asigurată la nivelul codului de octeţi (byte-code-ului) rezultat
în urma compilării. Aceasta s-a obţinut prin adoptarea unei soluţii de compromis între cea a programelor
compilate şi a programelor interpretate.

Maşina virtuală Java, este un calculator abstract pentru care s-au specificat setul de instrucţiuni al
procesorului, setul de regiştri şi organizarea memoriei. Limbajul Java în sine este un limbaj de nivel
superior, asemănător lui C++.

Procesul de execuţie a unui program Java este descries in Figura 1.3: Programul scris în Java este compilat.
Compilatorul Java generează un program binar numit cod de octeţi (bytecode) care este destinat maşinii
virtuale Java, adică foloseşte setul de instrucţiuni şi organizarea memoriei specifice acestei maşini. În cazul
general, maşina fizică pe care se execută programul are alt set de instrucţiuni şi altă structură decât maşina
virtuală Java. Deoarece codul de octeţi destinat maşinii virtuale Java trebuie interpretat, în timpul execuţiei,
în memoria calculatorului se vor găsi codul de octeţi al programului care trebuie executat şi interpretorul
Java, adică un program care interpretează acest cod de octeti. Avantajul este că interpretarea codului de
octeţi este mult mai rapidă decat cea a programului sursă, deşi totuşi ceva mai lentă decât executarea unui
program binar compilat special pe maşina pe care se execută.

Observaţii:

1. Deoarece maşina virtuală Java este un calculator abstract universal, nu este deloc obligatoriu ca
programele pentru această maşină să fie scrise în limbajul Java. Pentru orice limbaj de nivel superior
se pot realiza compilatoare care să genereze cod de octeţi pentru maşina virtuală Java, acest cod
putând fi apoi executat pe orice calculator pe care există un interpretor Java. Astfel de compilatoare
există deja pentru diferite limbaje, ceea ce crează perspectiva ca maşina virtuală Java să devină un
mijloc general de asigurare a portabilităţii programelor la nivel de cod de octeţi, indiferent de
limbajul în care ele au fost scrise.

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

2. Unii fabricanţi de microprocesoare (în frunte cu firma Sun Microsystems) au trecut deja la realizarea
hardware a maşinii virtuale Java, precum calculatoare a căror structură şi cod de instrucţiuni respectă
specificaţiile maşinii virtuale Java. Ele pot executa direct codul de octeţi, fără a mai avea nevoie de
un interpretor, ceea ce măreşte viteza de execuţie a programului.

23
Noţiuni fundamentale
________________________________________________________________

Figura 1.3. Procesul de execuţie a unui program Java

3.3.4. Terminologie

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

JDK – Java Development Kit conţine instrumentele folosite pentru dezoltarea de software, în el fiind inclus
şi un mediu de execuţie JRE (Java Runtime Environment). Pe lângă maşina virtuală Java, JDK mai conţine
compilatorul de Java, un instrument de vizualizare a applet-urilor, un generator de documentaţii, utilitare
specifice mediului de dezvoltare Java şi exemple de programe Java.

SDK – este o altă denumire pentru JDK, deoarece, începând cu lansarea lui Java 2, compania Sun s-a referit
la acesta cu numele de Java Software Development Kit.

JRE - Java Runtime Environment este un mediu de execuţie Java care conţine toate bibliotecile de rulare
necesare la executarea oricărui program Java precum şi o maşină JVM.

Există trei ediţii de JDK, fiecare din ele fiind livrată cu câte o maşină JVM şi cu toate instrumentele standard
necesare dezvoltării de aplicaţii:

• J2SE – Java 2 Standard Edition – este livrată cu setul standard de biblioteci de rulare dezvoltate
pentru scrierea şi distribuirea de aplicaţii Java de uz general. Această ediţie conţine o maşină Java
optimizată pentru partea de client; (www.sun.com....downloads....j2se with netbeans…)

• J2ME - Java 2 Micro Edition – este o versiune livrată cu un set restrâns de biblioteci de rulare şi cu
o maşină Java optimizată pentru dispozitive integrate sau portabile. Are două linii paralele de
dezvoltare, PersonalJava şi EmbeddedJava.

• J2EE - Java 2 Enterprise Edition – este o versiune care conţine tot ceea ce se află în J2SE, la care
se adaugă un set de interfeţe API (Application Program Interface) şi biblioteci de dezvoltare şi
distribuire a aplicaţiilor la nivel de întreprindere (sisteme de prelucrare de tranzacţii, servere Web,
servicii de mesagerie etc. Maşina JVM este aceeaşi cu cea de la J2SE dar există şi o versiune de
JVM optimizată pentru server, care poate fi descărcată separat (HotSpot Server VM -
http://www.softpile.com /Development /Java/Review_03157_index.html ). J2EE simplifică
aplicaţiile tip întreprindere prin construirea lor pe baza unor componente modulare standardizate,
prin oferirea unui set complet de servicii acelor componente şi prin preluarea multor detalii a
comportamentului automat al aplicaţiei, fără o programare complexă. Prin automatizarea multor
sarcini ale procesului de dezvoltare a aplicaţiilor care sunt dificile şi care ar necesita timp,
tehnologia J2EE permite dezvoltatorilor de sisteme de tip întreprindere să se concentreze asupra
îmbunătăţirii strategiei de afaceri, decât să creeze infrastructura acesteia.

JVM - Java Virtual Machine – este software-ul care execută toate aplicaţiile Java. Constă din câteva fişiere
care sunt plasate în directoarele din JDK sau JRE, unul din fişiere fiind o interfaţă care instanţiază JVM-ul şi
face posibil ca aceasta să lucreze pe sistemul de operare nativ din calculator. Pentru utilizator, numele
maşinii JVM este java, nume standard al comenzii necesare pentru a rula JVM, nume ce trebuie urmat de
numele programului. Există două semnificaţii pentru termenul JVM:

1. Fişierul binar care există în sistemul de fişiere, instalat pe calculator când s-a instalat JDK sau JRE;
2. Instanţă particulară care se încarcă în memoria calculatorului când se execută un program, fiind
executată ca un proces din sistemul de operare. Fişierul binar nu este încărcat şi nici nu se schimbă,
ceea ce permite ca să fie rulate în acelaşi timp mai multe instanţe ale maşinii JVM.

.jar – este extensia ce corespunde unui fişier arhivă Java, creat cu utilitarul jar din Java. Folosind opţiunea –
jar, comanda java permite lansarea în execuţie a unui program Java care este stocat într-un fişier jar.

.class – este extensia fişierului obţinut (numit de clase), după compilarea de către compilatorul de Java a
unui fişier cu cod sursă Java (care are extensia .java). Fişierele de clase reprezintă forma executabilă a
programelor Java. Codurile de octeţi sunt coduri de dimensiunea unui octet pentru JVM.

25
Noţiuni fundamentale
________________________________________________________________
JavaBeans – numele componentelor de cod Java reutilizabile. Orice program Java sau orice bloc de program
Java poate fi scris ca o clasă JavaBean.

3.3.5. Java API

Java API este o colecţie de componente software care pot fi utilizate în realizarea de programe. Elementele
acestei colecţii sunt grupate în biblioteci de clase şi interfeţe numite pachete (packages). Gruparea
elementelor se face în funcţie de funcţionalitatea pe care acestea o oferă. O implementare completă a
platformei Java oferă printre altele următoarele:

• Elemente de baza : Obiecte, şiruri de caractere, numere, structuri de date, date calendaristice,
timp , intrare/ieşire etc;
• Appleturi: Un set de standarde utilizate în realizarea programelor care rulează în interiorul unui
navigator Web;
• AWT/Swing : Set de instrumente pentru realizarea de interfeţe grafice (GUI);
• Servleturi : Un set de standarde utilizate în realizarea servleturilor;
• Programarea retelelor : URL , TCP , UDP , sockets, adrese IP;
• Procesarea documentelor XML : Simple XML Parsing (SAX) , Document Type Definition
(DTD) , Document Object Model (DOM);
• Securitate : Semnături digitale, controlul accesului, managementul cheilor publice şi al celor
private;
• Componente Software : Cunoscute sub numele de JavaBeans, acestea pot fi utilizate în cadrul
altor arhitecturi de componente;
• Serializarea obiectelor : Asigură persistenţa şi comunicarea prin intermendiul tehnologiei RMI
(Remote Method Invocation).
• Java Database Connectivity : Standardizează accesul la sistemele de baze de date relaţionale;
• Internaţionalizarea aplicaţiilor : Setarea localizării, formatări texte.

În plus, există un API pentru grafica 2D şi 3D, mesagerie electronică, animaţie, telefonie, sunet şi multe alte
domenii. Figura 1.4. prezintă componentele care sunt incluse în Java 2 SDK.

Figura 1.4. Componentele Java 2 SDK


Java 2 SDK. Standard Edition v 1.4. Java 2 Runtime Environment (JRE) este compus din maşina virtuală
Java, clasele care formează nucleul platformei şi fişiere de suport. Java 2 SDK include pe lângă JRE şi unelte

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

de dezvoltare, cum ar fi compilatoare şi depanatoare. Pentru Java 2 SDK 1.6 -


http://java.sun.com/javase/6/docs/

3.3.6. Tipuri de aplicaţii Java

Cu ajutorul API, Java suportă o varietate mare de aplicaţii. Principalele tipuri de programe Java sunt:

1. Applet-uri Java - sunt cele mai răspândite programe Java. Toate appleturile urmează o serie de
convenţii care le permit să ruleze în interiorul unui navigator (browser) Web care încorporează o
maşină virtuală Java. Appleturile sunt incluse în pagile Web la fel ca şi imaginile şi adaugă
dinamism acestora.

2. Aplicatii Java - limbajul Java poate fi folosit şi pentru dezvoltarea de aplicaţii, fiind o puternică
platformă software. Aplicaţiile pot rula independent de un navigator web şi au caracteristicile
oricăror alte programe, cu deosebirea că, pentru a le rula, în sistem trebuie să existe instalat un
intepretor Java (JVM - Java Virtual Machine sau JRE -Java Runtime Environment).

3. Servlet-uri Java - sunt programe Java care pot interacţiona cu diferiţi clienţi şi care se execută
numai pe partea de server, ca efect al unei cereri primite. Acestea afişează numai rezultatul
procesării, sub forma unui fişier HTML (HyperText Markup Language). Implementarea de tip
cerere/răspuns se face pe baza protocolului HTTP (HyperText Transfer Protocol).

3.4. Caracteristici ale limbajului Java


Dacă am dori să rezumăm limbajul Java în câteva cuvinte cheie, acestea ar fi :

• Simplu
• Orientat spre obiecte
• Portabil
• Dinamic
• Robust
• Distribuit
• Concurent
• Sigur
• Independent de platformă
• Performant

Aceşti termeni nu sunt doar pentru “reclamă” - ei îşi găsesc justificarea în implementarea limbajului.

1. Simplitate: Deşi împrumută multe aspecte din limbajele C şi C++, limbajul Java renunţă la unele
trăsături, considerate neesenţiale, ale acestora. Aparent, limbajul are mai puţine grade de libertate
decât C si C++, dar în realitate poate realiza aceleaşi lucruri, cu un plus de claritate. Au fost
eliminate acele facilităţi care, în opinia experţilor, produceau mai mult confuzie decât să aducă
beneficii:
• supradefinirea operatorilor (Java oferă un puternic suport pentru supradefinirea metodelor);
• moşteniri multiple;
• conversii automate a tipurilor de date;
• pointeri la date.

27
Noţiuni fundamentale
________________________________________________________________
Pointerii reprezintă un mecanism deosebit de “periculos” din punctul de vedere al posibilelor
probleme pe care le pot genera (erori foarte dificil de găsit şi corectat) şi o potenţială problemă de
securitate, dată de nerestricţionarea accesului lor: este deosebit de uşor să se facă scrierea/citirea
dintr-o zonă de date interzisă, ceea ce va conduce la coruperea datelor, în mod intenţionat sau nu.
Mecanismul folosit la Java este cel al handler-elor şi al tablourilor reale de date, nefiind permisă
modificarea unui tip întreg de date într-un handler şi, prin aceasta, accesarea necontrolată a unei
zone de memorie. S-au adăugat facilitãţi de ultimă oră, dintre care cea mai importantă este
managmentul automat al memoriei. Aceasta simpifică imens munca programatorului, în schimbul
complexităţii mai ridicate a sistemului. O sursă comună, generatoare de complexitate şi probleme,
este gestionarea memoriei, alocarea şi eliberarea ei, la momente bine specificate de timp. Prin
facilitatea oferită, de creare a unui mecanism automat de gestionare a memoriei a carui funcţie
primară se poate descrie prin dealocarea resurselor nefolosite în mod automat, s-a reuşit nu numai
înlesnirea muncii programatorului, dar şi reducerea imensă a timpului necesar finalizării unui
proiect, deoarece, eliminând problema gestionării memoriei, se elimină automat cea mai mare sursă
generatoare de “scame” (bug-uri). Dealocarea memoriei se face în mod uniform, fără intervenţia
programatorului. Există un “colector de gunoaie” (garbage collector) a cărui implementare în Java
este făcută inteligent şi eficient, folosind un fir separat de execuţie. Astfel, colectarea “gunoaielor”
se face de obicei în timp ce un alt fir de execuţie aşteaptă o operaţie de intrare-ieşire sau pe un
semafor. Se marchează obiectele care nu mai sunt folosite şi se eliberează spaţiul ocupat de ele.
Eliberarea nu se face neapărat imediat, ci atunci când spaţiul disponibil curent nu mai poate satisface
o nouă cerere.

Un alt aspect al faptului de a fi simplu este dimensiunea mică a limbajului, conceput special penru
dispozitive cu capacităţi reduse (microcontrolere etc), deci capabil de a rula în astfel de dispozitive.
Interpretorul limbajului şi librăriile acestuia au dimensiuni foarte reduse.

2. Orientare spre obiect (object-oriented): Ca şi C++, Java foloseşte clase pentru organizarea logică a
codului. La executare, programul creează obiecte de tipul claselor. Este admisă şi larg utilizată
moştenirea claselor, dar nu este permisă moştenirea multiplă. Aceasta este suplinită de o altă
facilitate, numita interfaţă. Modelul orientat spre obiect oferă mecanismul pentru a defini cum
modulele se interconectează între ele. Folosind modelul programării orientate spre obiect se pot
elabora programe mult mai clare, mai curate şi mai apropiate de modul de gândire uman şi se
permite reutilizarea codului. Facilităţile, din puncul de vedere al orientării spe obiect, sunt cele
oferite de limbajul C++, extinse cu facilităţile oferite de Objective C, pentru a oferi o dinamică mult
mai mare metodelor sale.

3. Portabilitate: Limbajul Java este independent de platformă. Programele Java sunt mai întâi
compilate întru-un cod intermediar, numit bytecode, şi apoi sunt interpretate de către mediul de
execuţie Java (Maşina Virtuală Java, “creată” la instalarea limbajului Java) în instrucţiuni maşină
asociate platformei sistem. Fişierele bytecode (care au extensia .class) pot fi copiate şi executate pe
orice platformă indiferent că ea este Windows, Unix, Solaris etc. Applet-urile pot rula direct într-un
navigator Web (Internet Explorer, Netscape etc). Anumite aplicaţii încorporează tehnologie Java
tocmai pentru a face mai uşoară portarea lor între diverse sisteme de operare. Câteva exemple ar fi
Corel Word Perfect sau Netscape Communicator.

4. Claritate: Eliminarea unor facilităţi neesenţiale din C şi C++ conduce la programe mai uşor de
înteles. În plus, se consideră că limbajul Java este uşor de înteles, cu condiţia ca cel care îl prezintă
să fi înţeles el însuşi foarte bine mecanismele puse la dispoziţie.

5. Robusteţe: Robusteţea limbajului este asigurată de o serie de mecanisme de înaltă performanţă, cum
ar fi verificarea timpurie a programelor pentru posibile probleme, verificarea dinamică târzie
(runtime) şi forţarea programatorului să elimine situaţiile care sunt presupuse că ar putea genera
probleme la rulare. Unul dintre avantajele limbajelor puternic tipizate (cum ar fi C++) este că asigură
un puternic suport pentru verificarea programelor în timpul compilării, în ideea de a elemina un
număr cât mai mare de erori. Din păcate, limbajul C++ moşteneşte din C o serie de probleme la
verificarea în timpul compilării şi acesta doar pentru a păstra compatibilitatea în jos. Deoarece Java

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

nu are ce compatibilitate în jos să menţină, nu este nevoit să suporte consecinţele unor implementări
sau specificaţii vechi, greşite sau incomplet făcute.

6. Dinamicitate: Dinamicitatea limbajului Java o depăşeşte pe cea a limbajelor convenţionale. De


exemplu, considerăm că o companie oarecare A produce o librărie sau o componentă activă şi o
companie B o cumpără şi o foloseşte; dacă compania A produce o nouă versiune a aceleiaşi
componente, atunci, pentru a o integra, compania B trebuie să-şi recompileze întreaga aplicaţie şi să
o redistribuie din nou clienţilor săi. Deoarece Java face conexiunile dintre module abia la rulare, sunt
eliminate cu succes aceste probleme. Indiferent câte modificări ar interveni în librăria producătorului
A (cu păstrarea compatibilităţii), Java se va executa fără recompilări şi probleme. Acest mecanism
este sprijinit de modul cum sunt concepute aplicaţiile Java. O interfaţă specifică un set de metode şi
de obiecte pe care le poate executa, dar nu specifică şi cum trebuie executate O clasă implementează
o interfaţă, implementând toate obiectele şi metodele interfeţei. De asemenea moştenirea pasează
atât metodele cât şi implementarea lor de la superclasă la subclasă. O clasă este capabilă să
moştenească numai o singură clasă, dar poate implementa câte interfeţe doreşte. Se poate observa că
interfeţele promovează reutilizarea codului şi conectează elementele între ele specificând ce se
conectează şi nu cum se face. Un alt avantaj este identificarea în timpul rulării al tipului de dată,
printr-un mecanism foarte ingenios: fiecare instanţă de obiect are o metodă numită getClass prin
care se poate determina din ce clasă s-a instanţiat metoda respectivă; în acest mod se poate
determina foarte elegant tipul obiectului respectiv. Acestă facilitate este inexistentă în C sau C++.
Tot prin această metodă se execută şi verificările de rigoare din timpul rulării, şi aceasta deoarece în
Java programele sunt verificate atât în timpul compilării cât şi în timpul rulării. Astfel se poate avea
deplină încredere în conversiile de date executate în Java, deoarece sunt verificate de două ori. În C
sau C++, limbajul se bazează pe faptul că programatorul a executat o conversie de date (cast)
corectă, cea ce nu întotdeauna este adevărat. Ca o facilitate în plus, se poate căuta o clasă (în timpul
rulării), specificându-se numai numele acesteia într-un şir de caractere: odată găsită, clasa se poate
încarca şi instanţia, oferind un dinamism complet aplicaţiilor fără să se mai pună problema eliberării
memoriei sau coruperii datelor. Programatorii Java pot fi relativ fără griji din pricina lucrului cu
memoria, tocmai din cauză că nu trebuie să lucreze direct cu ea. Din cauză că nu există pointeri, nu
se pot depăşi limitele vectorului cu care se lucrează şi să se suprascrie accidental alte date, sau să se
capate acces neutorizat la zone de memorie care nu-i aparţin, situaţii care se pot întâlni în C sau
C++. Un motiv pentru care limbajele dinamice sunt bune pentru elaborarea prototipurilor este că ele
nu impun luarea unor decizii explicite de implementare prea devreme. Java are la bază o legare
dinamică forţată de compilator. Aceste implementări sunt însoţite de o asistenţă: de exemplu, dacă la
invocarea unei metode se obţine ceva greşit, programatorul este înştiinţat în timpul compilării şi nu
în timpul execuţiei, când invocarea respectivă are loc efectiv.

7. Depanare uşoară: Datorită fluxului de cod binar al cărui proprietar este sistemul Java, mai multă
informaţie este stocată în format binar, ceea ce face operaţia de depanare (debugging) mult mai
facilă. Un dezansamblor, este în măsură să restabilească codul în procent de aproape 100% la forma
sa iniţială, lucru care la alte limbaje este practic imposibil. La conceperea formatului byte-code-ului
s-a ţinut cont de faptul că acesta uremază să fie intrepretat şi transformat direct în cod maşină
specific platformei pe care se lucreză. S-a obţinut cod puternic optimizat, optimizările necesare
realizându-se în timpul conversiei.

8. Tipizare statică: Obiectele folosite într-un program Java trebuie obligatoriu declarate înainte de a fi
folosite. În acest mod se uşurează sarcina compilatorului de a detecta conflicte de tip.

9. Limbaj concurent: Java are capacitatea de a executa mai multe secvenţe de cod simultan. Aceste
secvenţe de cod se numesc fire de execuţie (thread-uri).

10. Limbaj distribuit: Java oferă posibilitatea dezvoltării de aplicaţii pentru Internet capabile să ruleze
pe platforme distribuite şi eterogene. Java este un limbaj distribuit care are implementate biblioteci
pentru lucrul în reţea şi are inclus suportul nativ pentru aplicaţii care lucrează cu mai multe fire de
execuţie. Există primitive de sincronizare independente de sistemul de operare şi mecanisme bazate

29
Noţiuni fundamentale
________________________________________________________________
pe metode de monitorizare şi condiţionare. Integrând toate aceste mecanisme în nucleul limbajului,
acesta a devenit mult mai simplu, robust şi mai uşor de folosit. Limbajul oferă un răspuns mult mai
interactiv şi un comportament în timp real. Acesta este limitat de platforma care asigură tot suportul
pentru aplicaţie. Mediul Java are un bun răspuns în timp real, rulând “deasupra” unor sisteme de
operare. Răspunsul sistemului şi modul de tratare al task-urilor este cel care determină răspunsul în
timp real al aplicaţiei scrise în Java.

11. Suport pentru reţele de calculatoare: Modul în care acest suport este integrat în limbaj şi uşurinţa
cu care se implementează mecanisme deosebit de complexe, fac ca Java să fie unic în domeniul
reţelelor de calculatoare. Librăriile şi rutinele implementate asigură suport pentru protocoale TCP/IP
(Transmission Control Protocol/Internet Protocol) precum şi pentru HTTP (HyperText Transfer
Protocol) şi FTP (File Transfer Protocol). Se poate afirma că este mult mai simplu şi uşor să se
realizeze o conexiune în reţea utlilizând limbajul Java decât limbajele C sau C++, programatorul
reuşind să aceseze obiecte din reţea aproape la fel de simplu şi uşor de parcă s-ar lucra cu sistemul
local de fişiere.

12. Securitate ridicată. Java asigură un grad de securitate ridicat, uneori cu un plus de efort din partea
programatorului. Accesul la memorie este posibil numai prin verificarea prealabilă a drepturilor de
acces. Lipsa pointerilor face ca accesarea unor zone de memorie pentru care accesul nu este autorizat
să nu fie posibilă. De asemenea, este asigurată nepătrunderea viruşilor pe timpul executării unei
aplicaţii. Securitatea a fost deasemenea un punct vizat pe parcusul elaborării limbajului, cu atât mai
mult cu cât a fost vizat să atingă mediile orientate pe reţele şi programare disribuită, permitându-se
construirea de medii eliberate de viruşi sau programe cu intenţii obscure, implementând de asemenea
şi librării de funcţii avansate de criptografie, majoritateta bazate pe tehnologii de ultimă oră (chei
publice). Există o puternică interdependenţă între robusteţe şi securitate: eliminându-se pointerii se
elimină practic orice metodă de a forţa accesul la structurile de date al altor aplicaţii sau la accesarea
membrilor protejaţi sau privaţi la care, în mod normal, nu au acces din cadrul programului, aceasta
eliminând majoritatea căilor de acces a viruşilor.

13. Extensibilitate. Limbajul Java permite includerea de metode native, adică de funcţii scrise în alt
limbaj (de obicei C++). Metodele native sunt legate dinamic la programul Java la momentul
executării, rolul lor fiind în principal de a mări viteza de execuţie pentru anumite secvenţe din
program.

Observatie:

Utilitarele javac.exe si java.exe se afla in subdirectorul bin al directorului de instalare al kit-ului


Java. Asrfel, programele Java ale caror surse se afla in subdirectorul bin, vor putea fi compilate si
interpretate. In aceste conditii, insa, se ajunge la supraincarcarea directorului bin, iar gestiunea
programelor se va face foarte greu. Pentru a compila si interpreta programe cu surse aflate oriunde
pe disc, trebuie setata variabila de mediu PATH cu calea catre cele doua utilitare.
Setarea variabilei PATH se face astfel:
Settings->Control Panel->System->Advanced->Evironment Variables->System Variables-
>PATH->Edit->se adauga calea catre subdirectorul bin. De ex, C:\j2sdk1.4.2_10\bin;

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

Pentru a testa daca totul este configurat corespunzator, se va deschide o fereastra MS-DOS si se va
tasta java-version sau javac –help. Rezultatul comenzilor un trebuie sa fie un mesaj de eroare legat
de comanda necunoscuta (ex mesaj eroare: ‘javac’ is not recognized as an internal or external
command, operable program or batch file)
Probleme organizatorice:
Disciplina: Informatica aplicata

Colectiv de cadre didactice


Conf.univ.dr. Eugen Petac – curs
Asist.univ.drd. Cristina Gherghina – grupe laborator

Consultatii curs: Saptamanal, vineri ora 8.00, sala P19

Observatii
• Materiale in format electronic: http://scdsd.bluepink.ro, sectiunea cursuri, informática
aplicata
• Caiet(dosar) – laborator/curs

31
Noţiuni fundamentale
________________________________________________________________
Colocviu:

Nota finala (NF) se calculeaza pe baza unui punctaj obtinut ca 0.5 *Punctaj test grila (PTG)
+0.3 *Punctaj activitate laborator (PAL) (prezenta activa, rezolvare teme etc)+0.2 *Punctaj
evaluare la laborator(PVL)

Organizare test grila

Saptamana 13/ saptamana 14

Conform programarii de mai sus, la Testul grila participa numai studentii din seria
respectiva, care au sustinut activitatea la laborator conform programarii, pe parcursul
semestrului I.

Reamintim ca prezenta la activitatile didactice este obligatorie!!! Recuperarea


activitatilor de laborator se face conform regulamentelor facultatii si universitatii, dupa
sesiune.

32

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