Java vs C/C++

Referat
7/10 (1 vot)
Conține 1 fișier: doc
Pagini : 7 în total
Cuvinte : 2845
Mărime: 11.97KB (arhivat)
Publicat de: Cristea Blaga
Puncte necesare: 3
Sintaxa Java se aseamana foarte mult cu cea a limbajelor C si C++. Referatul de fata isi propune sa prezinte o paralela intre Java si C/C++. Voi descrie o suma de deosebiri si cateva asemanari dintre ele si voi prezenta elemente care sunt in Java si nu sunt in C++ si elemente care au ramas in C++, dar au fost eliminate din Java.

Extras din referat

Sintaxa Java se aseamana foarte mult cu cea a limbajelor C si C++. Referatul de fata isi propune sa prezinte o paralela intre Java si C/C++. Voi descrie o suma de deosebiri si cateva asemanari dintre ele si voi prezenta elemente care sunt in Java si nu sunt in C++ si elemente care au ramas in C++, dar au fost eliminate din Java.

1. Tipuri de date

1.1. Tipurile de date primare

Java suporta 8 tipuri de date primare, descrise in tabelul de mai jos:

Tip Descriere

byte intreg cu semn pe 8 biti

short intreg cu semn pe 16 biti

int intreg cu semn pe 32 de biti

long intreg cu semn pe 64 de biti

float numar in virgula mobila pe 32 de biti

double numar in virgula mobila pe 64 de biti

char caracter Unicode pe 16 biti

boolean true sau false

Observati ca Java adauga doua tipuri de date: byte si boolean. (unele compilatoare de C++ mai noi au adaugat si ele tipul boolean).

O diferenta importanta privind celelalte tipuri de date, care sunt comune celor doua limbaje, este faptul ca tipurile Java au o dimensiune fixa si cunoscuta. Acest lucru este foarte important pentru Java datorita scopului sau de a fi portabil. De exemplu daca un tip de data int ocupa 16 biti pe o platforma si 32 de biti pe alta platforma, programul va avea probleme daca va trebui sa ruleze pe ambele platforme. C++ garanteaza o anumita relatie intre tipurile primare de date, de exemplu garanteaza ca un tip de data long este cel putin la fel de mare cu un tip de data int. El nu garanteaza insa dimensiunea fiecarui tip. Java realizeaza acest lucru, fiecare tip avand o dimensiune fixa.

Deoarece cele mai multe masini ruleaza pe 32 de biti, dimensiunile pentru tipurile primitive de date au fost gandite sa fie optimizate pentru 32 de biti. Astfel, o data Java de tip int ocupa 32 de biti ( fata de16 sau 32 de biti, in C/C++ ), iar o data de tip long va ocupa 64 de biti ( fata de 32 sau 64 de biti, in C/C++ ).

O alta diferenta este ca toate tipurile primare Java sunt cu semn. Astfel, declaratiile unsigned din C nu sunt permise in Java.

1.2. Conversii

Si in Java si in C++ se poate face conversie intre un tip de data si un altul. Dar in Java nu exista conversii implicite.

Sa luam urmatoarea secventa de program scrisa in C:

long LongNb = 32768;

int IntNb;

IntNb = LongNb;

Compilatorul C/C++ va face o conversie implicita (cast) din long in int. Pe o platforma de 16 biti ( unde long are o lungime de 32 de biti si int are o lungime de 16 biti ), in urma conversiei, variabila IntNb va avea valoarea 0. Deci va avea loc o pierdere de precizie, fara ca programatorul sa fie avizat.

Java inlatura riscul unor potentiale erori in programare relative la conversii prin faptul ca nu realizeaza conversii automate. Astfel programatorul este nevoit sa faca o conversie explicita ( de exemplu IntNb = (int)LongNb;).

1.3. Operatori

Setul de operatori din Java este aproape identic cu cel din C/C++. Acestia sunt: ! (negatie), && (si conditional), || (sau conditional), ?: (conditie). O diferenta este ca in Java acestia opereaza cu valori booleene. Astfel secventa C:

int x = 4;

int y = 5;

if (x && y) {

//secventa de cod

}

va fi ilegala in Java, pentru ca, asa cum spuneam mai sus, nu se face conversie automata. Conditia va trebui deci scrisa explicit: if (x!=0 && y!=0).

O alta diferenta privind operatorii, si care are o importanta deosebita, este ca in Java operatorii nu pot fi supraincarcati, asa cum pot fi in C++. Folosirea acestei trasaturi in C++ a dus la crearea multor erori. De aceea dezvoltatorii Java au hotarat sa nu pastreze aceasta caracteristica.

2. Pointeri

Pointerii reprezinta in C++ un element care confera programatorului multa flexibilitate. Cu toate acestea, folosirea pointerilor este o importanta sursa de erori.

Java nu permite programatorului sa foloseasca pointeri de nici un fel. Cum se face atunci transmiterea variabilelor?

In C++ programatorul are libertatea sa transmita variabilele cum considera ca este mai bine folosind operatorii &, * si ->. In Java insa nu exista acesti operatori, dar exista urmatoarea regula: tipurile de date primare sunt transmise prin valoare (prin copierea efectiva), iar obiectele si masivele sunt transmise prin referinta (prin copierea adresei).

Sa luam urmatorul exemplu: vrem sa cream o functie care sa returneze media unui student:

void mediaStudent (int note[], double media)

{

int suma=0;

for(int i=0;i<10;i++)

suma+=note[i];

media=suma/10;

}

Nu putem returna rezultatul ca parametru (si anume in variabila media), pentru ca acesta este transmis prin valoare si modificarea sa in interiorul functiei nu are efect asupra variabilei media. In C acest parametru trebuia transmis prin adresa (int *media sau int &media). Prin urmare trebuie cautata o solutie de transmitere a parametrului prin adresa. Acest lucru se poate face prin crearea unei clase care sa contina variabila media.

Preview document

Java vs C/C++ - Pagina 1
Java vs C/C++ - Pagina 2
Java vs C/C++ - Pagina 3
Java vs C/C++ - Pagina 4
Java vs C/C++ - Pagina 5
Java vs C/C++ - Pagina 6
Java vs C/C++ - Pagina 7

Conținut arhivă zip

Alții au mai descărcat și

Limbajul C++

Limbajul C++ 1. INTRODUCERE Istoria limbajului C++ Limbajul C++ a fost creat prin extinderea limbajului C, ambele fiind limbaje de programare de...

Grilă sisteme informaționale de gestiune - Access

Adăugarea de câmpuri la o tabelă se face în modul de vizualizare:...... Previzualizare inaintea imprimarii Aplicarea unei restrictii de...

Hackeri

Hackerii sunt pasionati ai informaticii, care, de obicei au ca scop „spargerea” anumitor coduri, baze de date, pagini web etc. Ei sunt considerati...

Baze de Date

3.Introducere in bd si sgbd-uri Definitie: Numim baza de date o colectie partajata de date aflata in interdependenta logica impreuna cu o...

Te-ar putea interesa și

JAVA - Battleship

CAPITOLUL 1 INTRODUCERE 1.1. Notiuni introductive Jocuri Un joc este o activitate recreaţională în care sunt implicaţi unul sau mai mulţi...

Ilustrarea și simularea unor algoritmi legați de inteligența artificială folosind programarea orientată pe obiect în limbajul java

Introducere Am ales lucrarea intitulată „Ilustrarea și simularea unor algoritmi de inteligență artificială folosind programarea orientată pe...

Crearea unui website cu aplicații numerice utilizând platforma Java 2015

I. Introducere În zilele noastre, tehnologia s-a dezvoltat foarte mult odată cu dezvoltarea de aplicații în domeniile industriale și mai ales...

Structuri de Date în Limbajul Java

Motivaţia lucrării Structurile de date reprezintă modalitatea în care datele sunt dispuse în memoria calculatorului(sau păstrate pe disc)....

Implementarea Algoritumului Dijkstra pentru Calcularea Drumului Optim Folosind Java

1. Introducere 1.1 Ce este un algoritm?Tipuri de algoritmi folositi pentru calcularea drumului optim Scurt istoric: “Originile teoriei...

Limbajul Java pe Internet

ADNOTARE Cuvinte cheie: Java, Server, Client, URL, RMI, JSP, JSF, applet. Limbajul Java a aparut datoritã necesitãtii rezolvãrii problemelor...

Procesor JAVA în Baza Arhitecturii RISC

1. Necesitatea utilizării şi particularităţile de funcţionare a Java Virtual Machine 1.1. Noţiuni generale JAVA este un limbaj de programare...

Fire de Execuție Java

INTRODUCERE Java este un limbaj de programare orientat-obiect, puternic tipizat, conceput de către James Gosling la Sun Microsystems (acum filială...

Ai nevoie de altceva?