Sunteți pe pagina 1din 17

Limbaj de programare

De la Wikipedia, enciclopedia liberă

Salt la: Navigare, căutare

Un limbaj de programare este un set bine definit de expresii şi reguli (sau tehnici) valide de formulare a
instrucţiunilor pentru un computer. Un limbaj de programare are definite un set de reguli sintactice şi
semantice. El dă posibilitatea programatorului să specifice în mod exact şi amănunţit acţiunile pe care trebuie
să le execute calculatorul, în ce ordine şi cu ce date. Specificarea constă practic în întocmirea/scrierea
programelor necesare ("programare").

Cuprins
[ascunde]

 1 Categorii
 2 Execuţie
 3 Listă de limbaje de programare
o 3.1 Limbaje generale
o 3.2 Limbaje specifice
 4 Vezi şi

[modifică] Categorii
 După paradigma programării
o limbaje procedurale; ex. C, Java, Perl
o limbaje functionale: ex. ML, Haskell
o limbaje pentru programarea logică ex.Prolog, DATALOG
o limbaje mixte: ex.LISP oferă un amestec heteroclit şi netipizat de programare imperativă şi
programare functională

 După nivelul de abstractizare (care printre altele corespunde cu uşurinţa cu care programele pot fi citite
şi înţelese de către programatori):
o limbaje de generaţia întâia: limbajele cod-maşină (limbaje maşină)
o limbaje de generaţia a doua: limbajele de asamblare
o limbaje de generaţia a treia: limbaje de nivel înalt, cum ar fi C-ul (şi toate derivatele sale: C++,
Java, ...), Pascal, Fortran ş.a.
o limbaje de generaţia a patra: limbajele neprocedurale, orientate pe rezolvarea unei anumite
clase de probleme: SQL ş.a.
o limbaje de generaţia a cincea: limbaje utilizate în domenii precum logica fuzzy, inteligenţa
artificială sau şi reţelele neuronale: Prolog, LISP ş.a.

 Dupa vechime
o Limbaje din secolul trecut; ex. LISP şi FORTRAN din anii '50
o Limbaje din ultimul deceniu; ex. Haskell, Ruby

[modifică] Execuţie
Pentru executarea unui program scris într-un limbaj oarecare, există, în principiu, două abordări: compilare sau
interpretare. La compilare, compilatorul transformă programul-sursă în totalitatea sa într-un program
echivalent scris în limbaj maşină, care apoi este executat. La interpretare interpretorul ia prima instrucţiune din
programul-sursă, o transformă în limbaj maşină şi o execută; apoi trece la instrucţiunea doua şi repetă aceleaşi
acţiuni ş.a.m.d.

Unele limbaje se pretează bine la compilare; de exemplu limbajele clasice: Pascal, Fortran, C. Altele sunt cu
predilecţie interpretate, de ex. BASIC, PHP, SQL. Multe limbaje moderne combină compilarea cu
interpretarea: codul sursă este compilat într-un limbaj binar numit bytecode, care la rulare este interpretat de
către o maşină virtuală. De remarcat faptul că unele interpretoare de limbaje pot folosi compilatoare aşa-numite
just-in-time, care transformă codul în limbaj maşină chiar înaintea executării.

[modifică] Listă de limbaje de programare


[modifică] Limbaje generale

Limbaje care pot fi folosite (cel puţin teoretic) la rezolvarea oricărui tip de probleme:

 BASIC (QuickBasic, GW-BASIC, Visual Basic)


 C
 C++
 C#
 Clips
 Cobol
 Fortran
 Haskell
 Java
 JavaScript
 LISP
 Pascal (şi ObjectPascal, folosit de Borland Delphi)
 Perl
 PHP
 Prolog
 Python
 Ruby
 Seed7
 Scriptol
 Tcl/TK
 CSS
 XHTML

[modifică] Limbaje specifice


Limbaje cu un scop bine definit - de obicei interacţiunea cu un anumit program sau sistem.

 ActionScript - limbajul de scripting folosit de Macromedia Flash


 ASP (şi ASP.NET) - pentru scripting web
 FoxPro (FoxPro, Visual FoxPro)
 MIVA SCRIPT
 SQL - pentru interacţiunea cu bazele de date relaţionale

Vezi şi
 Mediu de dezvoltare
 RPG (limbaj de programare)
 Tehnici de programare în FoxPro

 BASIC
 De la Wikipedia, enciclopedia liberă
 Salt la: Navigare, căutare
 BASIC (acronim al expresiei engleze Beginners All-purpose Symbolic Instruction Code) este un limbaj
de programare de nivel înalt a calculatoarelor, foarte asemănătoare cu limba engleză, ceea ce îl face
uşor de memorat şi ideal pentru începători; astfel, generaţia de utilizatori predecesoare erei PC-urilor a
luat primul contact cu programarea prin intermediul calculatoarelor HC, care aveau la bază acest o
versiune de BASIC. Este un limbaj simplu de învăţat, creat în 1963 de către John G. Kemeny şi
Thomas E. Kurtz la Dartmouth College.
 Unul dintre cele mai bune editoare, compilatoare şi depanatoare pentru începătorii în acest limbaj este
QBASIC (acronim pentru Quick Beginners All-purpose Symbolic Instruction Code), care poate fi
descărcat gratuit din Internet.
 O variantă de BASIC foarte populară este şi Visual Basic, creată de către compania Microsoft. Aceasta
se adresează mai mult avansaţilor. Visual Basic permite crearea de aplicaţii relativ complexe prin
manipularea componentelor vizuale (grafice) ale programului.

Visual Basic (VB) este un limbaj de programare produs de Microsoft, care a fost derivat din limbajul Basic.
VB este popular datorită interfeţei grafice pe care o foloseşte, interfaţă relativ simplă faţă de cea a altor
limbaje.

Cuprins
[ascunde]

 1 Prezentare
 2 Evolutia limbajului Visual Basic
 3 Exemplu
 4 Vezi şi

Prezentare
Visual Basic face parte din pachetul Visual Studio al companiei Microsoft si, ca de altfel si celelalte limbaje
'vizuale' ale Microsoft (mai putin Visual C++), este axat pe componenta de interfata a programului,
programatorul putand realiza cu usurinta interfete standardizate de tip Windows (ferestre, butoane, liste etc.)
fara a fi nevoie de scrierea de cod pentru acest lucru. Visual Basic detine o biblioteca de componente vizuale
(liste, calendare, meniuri etc.) a caror componente (grafica si functionala) sunt deja implementate, avand
posibilitatea ca programatorul sa introduca si sa foloseasca componente proprii sau realizate de alti
programatori.

Visual Basic este un limbaj pur orientat pe obiecte (OO), avand deja implementata o lista de clase cu utilizare
generala. Pana la versiunea 6, VB putea utilizare si dezvolta componente COM/COM+ si ActivX dar si librarii
clasice de functii tip DLL. Odata cu aparitia versiunii 7, adica odata cu aparitia tehnologiei .NET, VB (acum
VB .NET) poate utiliza si crea si componente .NET cu toate avantajele pe care acestea le aduc. VB este un
limbaj de nivel inalt avand implementate mai multe nivelui de abstractizare a dezvoltarii unei aplicatii dar si
posibilitatea de compilare in formatul Windows EXE sau DLL de 16 si 32 biti.

VB este un limbaj interpretat, adica orice cod scris in limbajul VB trebuie mai intai tradus intr-un limbaj de
nivel inferior si dupa aceea executat (spre deosebire de limbajele native ex. C++). Acest lucru are avantaje
(cum ar fi rularea fara compilare sau portabilitatea intre platforme) dar si dezavantaje (cum ar fi necesitatea
unei masini virtuale pentru interpretarea codului).

Unul dintre punctele forte ale libajului VB este acela ca se pot realiza intr-un timp relativ scurt aplicatii
complexe si se pot utiliza relativ simplu sisteme informatice dedicate (cum ar fi bazele de date - VB poate
utiliza toate sistemele de gestiune a bazelor de date cunoscute, direct sau prin intermediul ODBC).

Utilizarea limbajului VB este una generala, putand fi folosit la crearea de programe simple, educationale dar si
la crearea de aplicatii complexe (ca de exemplu la jocuri - ex: Pharao). Teoretic oricine (mai mult sau mai
putin experimentat) poate utiliza VB pentru ca este un limbaj de programare simplu (calitate de baza a
limbajului Basic din care provine).

[modifică] Evolutia limbajului Visual Basic


VB 1.0 a fost introdus in 1991. Abordarea conectarii limbajului de programare la o interfata grafica pentru
utilizator a fost derivata dintr-un prototip dezvoltat de Alan Cooper numit Tripod. Microsoft a apelat la Cooper
si asociatii sai pentru a dezvoltat Tripod intr-un shell programabil pentru Windows 3.0, sunt numele de cod
Ruby (fara absolut nicio legatura cu Ruby programming language).

Tripod nu a inclus niciun limbaj de programare, si Ruby continea doar un procesor de comenzi rudimentar
suficient pentru rolul lui de shell pentru Windows. Microsoft a decis sa utilizeze shell-ul simplu Program
Manager pentru Windows 3.0 in locul lui Ruby, si a combinat Ruby cu limbajul Basic pentru a crea Visual
Basic.

Ruby a pus la dispozitie partea "vizuala" a lui Visual Basic - designerul de forme si uneltele de editare -
impreuna cu posibilitatea de a incarca dynamic link libraries continand controale aditionale (numite generic
"gizmos"). Aceste gizmos extensibile ale lui Ruby au devenit mai tarziu interfata VBX.

[modifică] Exemplu
'Listarea tuturor caracterelor ASCII
dim i as integer
for i=0 to 255
print ASC(CHR(i))
next i
'Afişarea cuvântului "BASIC" într-o casetă de dialog
msgbox "BASIC"

C (limbaj de programare)
De la Wikipedia, enciclopedia liberă

(Redirecţionat de la Limbajul C)
Salt la: Navigare, căutare

The C Programming Language - Limbajul de programare C, de Brian Kernighan şi Dennis Ritchie, ediţia
originală ce a servit pentru mulţi ani ca manual de referinţă al limbajului C.

C este un limbaj de programare standardizat, compilat, de nivel mediu. Este implementat pe majoritatea
platformelor de calcul existente azi, şi este cel mai popular limbaj de programare pentru scrierea de software de
sistem. Este apreciat pentru eficienţa codului obiect pe care îl poate genera, şi pentru portabilitatea sa.

A fost dezvoltat la începutul anilor 1970 de Ken Thompson şi Dennis Ritchie, care aveau nevoie de un limbaj
simplu şi portabil pentru scrierea nucleului sistemului de operare UNIX.

Sintaxa limbajului C a stat la baza multor limbaje create ulterior şi încă populare azi: C++, Java, JavaScript,
C#.

C este un limbaj de programare relativ minimalist ce operează în strânsă legătură cu hardware-ul, fiind cel mai
apropiat de limbajul de asamblare faţă de majoritatea celorlalte limbaje de programare.

Cuprins
[ascunde]

 1 Scurtă introducere în C
 2 Un exemplu de program C: "Hello, World!"
 3 Tipuri de date
 4 Alocarea memoriei
 5 Sintaxa
 6 Istoric
o 6.1 Începuturile limbajului de programare C
o 6.2 K&R C
o 6.3 ANSI C şi ISO C
o 6.4 C99
 7 Diferenţe între C, C++ şi Pascal
o 7.1 Comparaţie cu limbajul Pascal
o 7.2 C şi C++
o 7.3 Exemplu
 8 Vezi şi
 9 Bibliografie

[modifică] Scurtă introducere în C


C este prezentat uneori ca "asamblor portabil", făcându-se astfel diferenţele principale faţă de limbajele de
asamblare: codul unui program C poate fi compilat şi rulat pe aproape orice tip de maşină (calculator), în
comparaţie cu alte limbaje de programare, în timp ce limbajele de asamblare sunt specifice unui anumit model
de maşină. Limbajul C aparţine clasei limbajelor de nivel scăzut sau de nivel mediu, aceasta indicând cât de
strânsă este legătura de interoperabilitate cu echipamentul hardware.

C a fost creat având drept scop important de a face ca programele mari să poată fi scrise mai uşor şi cu mai
puţine erori în paradigma programării procedurale, dar fără a pune un obstacole în scrierea compilatorului de
C, care este încărcat de caracteristicile complexe ale limbajului. C are urmatoarele caracteristici importante:

 Este un limbaj de bază simplu, cu importante funcţionalităţi cum ar fi funcţiile matematice sau cele de
manipulare ale fişierelor
 Este focalizat pe paradigma programării procedurale, care facilitează programarea într-un mod
structurat
 Utilizează un set simplu de tipuri de date ce împiedică multe operaţii neintenţionate
 Foloseşte un limbaj preprocesor, preprocesorul C, pentru sarcini cum ar fi definirea de macrouri şi
includerea mai multor fişiere sursă
 Permite accesarea la nivel scăzut a memoriei calculatorului prin utilizarea pointerilor
 Permite folosirea parametrilor care sunt pasaţi funcţiilor prin valoare, şi nu prin referinţă
 Pointeri la funcţii, ce permit forme rudimentare de closure şi polimorfism
 Declarea variabilelor
 Structuri de date sau tipuri de date agregate definite de utilizator (struct) ce permit ca date înrudite să
fie combinate şi manipulate ca un întreg

Printre caracteristicile ce lipsesc în C dar care pot fi găsite în alte limbaje de programare se enumeră:

 Un sistem automat de colectare a reziduurilor (de memorie)


 Clasele şi obiectele (programarea orientată pe obiecte)
 Un sistem avansat de tipuri de date
 Programarea generică
 Supraîncărcarea
 Metaprogramarea
 Suport nativ pentru programarea multifir şi funcţiile de reţea
 Procesarea listelor

Deşi lista minusurilor limbajului C este destul de lungă, aceasta nu reprezintă un dezavantaj important pentru a
face limbajul C să nu fie acceptat în practică, deoarece permite ca noi compilatoare să poată fi scrise pe noi
tipuri de platforme şi pentru că permite programatorului să ţină bine sub control programul pe care îl scrie.
Acesta este unul din motivele care face ca un cod scris în C să fie mult mai eficient decât dacă ar fi scris în alte
limbaje de programare. Numai un cod scris cu foarte mare grijă într-un limbaj de asamblare poate fi mai
performant, deoarece are control integral asupra maşinii, dar performanţa avansată a compilatoarelor,
combinată cu complexitatea noilor tipuri de procesoare, a făcut ca limbajul C să fie preferat şi să fie acceptat
din ce în ce mai mult de programatori.

Una din consecinţele acceptării şi eficienţei C-ului este aceea că multe compilatoare, biblioteci şi interpretoare
ale limbajelor de nivel înalt sunt adesea implementate în C.

[modifică] Un exemplu de program C: "Hello, World!"


Următorul exemplu de program a apărut în prima ediţie a cărţii lui Brian Kernighan şi Dennis Ritchie, şi a
devenit un exemplu standard de program introductiv în marea majoritate a cărţilor de programare, indiferent de
limbajul de programare. Programul afişează „Hello World!“ la ieşirea standard, care este de obicei un terminal
sau monitor. Poate să fie totuşi şi un fisier sau alt dispozitiv hardware, depinzând cum a fost mapată ieşirea
standard în momentul execuţiei programului.

#include <stdio.h>

main()
{
printf("Hello, World!\n");
}

Programul prezentat mai sus va fi compilat corect de marea majoritate a compilatoarelor moderne. Totuşi, va
produce unele mesaje de avertizare dacă va fi compilat de un compilator ce respectă standardul ANSI C. Mai
mult, codul nu va fi compilat, returnând mesaje de eroare dacă compilatorul va respecta strict standardele C99,
deoarece variabila de întors de tip int nu va putea fi dedusă dacă nu a fost specificată în codul sursă. Aceste
mesaje pot fi eliminate, aducând câteva schimbări minore programului original:

#include <stdio.h>

int main(void)
{
printf("Hello, World!\n");

return 0;
}

Urmează o discuţie linie cu linie a programului prezentat mai sus:


#include <stdio.h>

Prima linie a programului reprezintă o directivă preprocesor, #include. Aceasta face ca preprocesorul—
primul utilitar ce examinează codul sursă când acesta este compilat—pentru a substitui linia respectivă cu
conţinutul unui fişier sau al entităţii la care se face referire. În acest caz, fişierul header stdio.h—care conţine
definiţiile funcţiilor intrării şi ieşirii standard—va înlocui acea linie. Parantezele unghiulare ce cuprind
stdio.h indică că acel fişier poate fi găsit într-una din locaţiile date preprocesorului prin search path (caută
calea) fişierelor header (aceste fişiere se află în directorul "include/" al platformei respectiv compilatorului
folosit).

int main(void)

Următoarea linie indică faptul că funcţia numită main este definită. Funcţia main are un loc bine definit în
programele C. Când un program C este executat, aceasta este prima metodă executată. Metoda main este
obligatorie ca un program să fie executat. Porţiunea de cod int indică faptul că funcţia de întoarcere—valoare
pe care funcţia main o va întoarce—este un întreg. (void) indică faptul că funcţia main nu primeşte nici un
argument ori de câte ori este apelată.

Paranteza acoladă deschisă indică începutul codului pentru funcţia main.

printf("Hello World\n");

Aceasta linie apelează—caută şi execută codul—funcţia printf, care a fost definită în fişierul header
stdio.h. În cadrul acestui apel, funcţiei printf îi este pasat un singur argument, şirul de caractere "Hello,
World!\n". Secvenţa \n este denumită secvenţă escape care se traduce prin caracterul EOL—end-of-line
(sfârşitul liniei)—, pentru a muta cursorul pe linia următoare. Valoarea de întoarcere a funcţiei printf este un
întreg int, dar nu este folosită în acest caz.

return 0;

Această funcţie termină execuţia codului funcţiei main şi face ca aceasta să întoarcă valoarea 0 procesului
apelant, în cazul acesta sistemului de operare.

Paranteza acoladă închisă indică că aici se termină codul pentru funcţia main.

Compatibilitatea totală cu alte compilatoare care respectă standardul C99 poate fi insă atinsă prin următorul
cod:

#include <stdio.h>
#include <stdlib.h>

int main(void) {
printf("Hello world!\n");

return EXIT_SUCCESS;
}
Constanta EXIT_SUCCESS este definită în headerul stdlib.h de aceea am fost nevoiţi să îl includem. Pe
majoritatea platformelor această constantă are valoarea zero.

[modifică] Tipuri de date


C are un sistem de tipuri de date similar cu cel al descendenţilor ALGOL cum ar fi Pascal, dar totuşi cu
anumite diferenţe. Cuprinde tipuri de date cum ar fi întregi de diferite dimensiuni cu sau fără semn, numere în
virgulă mobilă, enumerări (enum), structuri de date (struct) şi uniuni (union).

C utilizează foarte mult pointerii, un tip de referinţă foarte simplu care păstrează adresa locaţiei din memorie.
Adresa poate fi manipulată cu ajutorul atribuirilor şi a aritimeticii pointerilor. În momentul rulării unui
program, un pointer reprezintă o adresă de memorie. În momentul compilării, un pointer este un tip de dată
complex ce reprezintă atât adresa de memorie cât şi tipul de dată. Acest lucru permite expresiilor ce utilizează
pointeri să fie evaluate după tipul de dată. Pointerii au mai multe utilizări în C. De exemplu, şirurile de
caractere (text string) sunt adesea reprezentate printr-un pointer la un vector de caractere. Alocarea dinamică a
memoriei este realizată tot cu ajutorul pointerilor.

Un pointer null are o valoare rezervată indicând faptul că face referire la o locaţie nevalidă. Acest lucru este
folositor în cazuri speciale cum ar fi pointerul next (următorul) în nodul final al unei liste înlănţuite.
Dereferenţierea unui pointer null poate cauza un comportament nepredictibil al aplicaţiei. De asemenea, există
şi pointeri de tip void, fapt ce indică că aceştia fac referire la un obiect de tip necunoscut. Aceşti pointeri sunt
foarte folositori în programarea generică. Deoarece dimensiunea şi tipul obiectelor la care acest tip de pointeri
face referire sunt necunoscute, aceştia nu pot fi dereferenţiaţi, dar pot fi convertiţi la alt tip de pointeri.

În C, tablourile sunt de dimensiune fixă, statică cunoscută la momentul compilării; în practică acest lucru nu
reprezintă o piedică, având în vedere că se pot aloca blocuri de memorie în momentul rulării, tratându-le ca pe
tablouri utilizând librăria standard. Spre deosebire de multe alte limbaje de programare, C reprezintă tablourile
ca şi pe pointeri: o adresă şi un tip de dată. Prin urmare, valorile index pot depăşi dimensiunea actuală a unui
tablou.

De asemenea, C oferă posibilitatea de lucru cu tablouri multidimensionale. Din punct de vedere semantic
tablourile multidimensionale sunt tablouri de tablouri, dar din punct de vedere fizic acestea sunt stocate ca un
singur tablou unidimensional cu un offset calculat.

C este adesea folosit în programarea de nivel scăzut, unde poate fi necesar ca un întreg să fie tratat ca o adresă
de memorie, un număr în virgulă mobilă ca un întreg sau un tip de pointer ca un alt tip de pointer. Pentru astfel
de cazuri C oferă operatorul de casting, care forţează explicit conversia unei valori dintr-un tip de dată în alt tip
de dată.

[modifică] Alocarea memoriei


Una din cele mai importante funcţii ale unui limbaj de programare este ca acesta să furnizeze metode de
management a memoriei şi al obiectelor stocate în memorie. C furnizează trei metode distincte de alocare a
memoriei pentru obiecte:

 Alocarea statică a memoriei: adresele şi dimensiunile obiectelor ce fac uz de alocarea statică a


memoriei sunt fixate în momentul compilării şi pot fi plasate într-o zonă de dimensiune fixă ce
corespunde unei secţiuni din cadrul fişierului linkedidat final. Acest tip de alocare a memoriei se
numeşte statică deoarece locaţia şi dimensiunea lor nu variază pe durata de execuţie a programului.
 Alocarea automată a memoriei: obiectele temporare (variabilele locale declarate în cadrul unui bloc
de cod) sunt stocate în memorie, iar spaţiul alocat este automat eiberat şi reutilizat după ce s-a părăsit
blocul în care acestea au fost declarate.
 Alocarea dinamică a memoriei: blocuri de memorie de orice dimensiune pot fi alocate într-o zonă de
memorie numită heap prin intermediul funcţiilor malloc(), calloc() şi realloc(). Aceste blocuri de
memorie pot fi reutilizate după ce zona de memorie a fost eliberată prin apelul funcţiei free().

Nu toate variabilele sunt automat alocate. Următoarele tipuri de variabilă sunt alocate static:

 toate variabilele globale, indiferent dacă au fost sau nu declarate ca statice;


 variabilele locale declarate explicit ca fiind statice.

Variabilele alocate static au alocată locaţia lor de memorie şi iniţializată înainte ca funcţia main să fie executată
şi nu sunt dealocate până când se termină execuţia funcţiei main. Variabilele alocate static nu sunt reiniţializate
la fiecare apel al funcţiei în cadrul cărora au fost declarate. O variabilă alocată static are avantajul să îşi
păstreze valoarea chiar dacă funcţiile care accesează acea valoare nu mai sunt active.

Acolo unde este posibil, alocarea automată sau statică este preferată deoarece alocarea memoriei este
coordonată de compilator, nemaifiind nevoie ca programatorul să aloce iar apoi să elibereze memoria - operaţie
ce adesea generează erori. Totuşi, multe structuri de date sunt variabile în dimensini şi deoarece alocarea
automată şi cea statică trebuie să fie de dimensiune fixă în momentul compilării, sunt multe situaţii în care
alocarea dinamică trebuie folosită. Un exemplu ar fi tablourile de dimensiuni variabile.

[modifică] Sintaxa
Vezi şi Sintaxa limbajului C

Spre deosebire de alte limbaje de programare cum ar fi Fortran 77, C-ul are o formă liberă, lăsând
programatorul să-şi organizeze codul folosind spaţiile albe. Comentarii pot fi înserate oriunde în cadrul
programului utilizând delimitatorii /* şi */.

Fiecare fişier sursă conţine declaraţii de variabile şi definiţii de funcţii. Funcţiile, la rândul lor, conţin alte
declaraţii de variabile şi comenzi. Declaraţiile de variabile fie definesc noi tipuri folosind cuvinte cheie precum
struct, union şi enum sau atribuind un tip de date predefinite, prin scrierea tipului de dată şi urmat de numele
variabilei. Cuvinte cheie precum char, int, precum şi pointerul la unul din aceste tipuri * reprezintă tipuri de
date implementate nativ în C. Secţiuni de cod sunt incluse între paranteze acolade ({ şi }) pentru a indica
pentru ce porţiune a codului se aplică declaraţiile de variabile şi celelalte structuri de control.

Comenzile execută acţiuni cum ar fi cele de modificare ale valorii unei variabile sau afişarea unui text la
consolă. Structurile de control sunt variabile pentru execuţii condiţionale sau iteraţii, realizate cu ajutorul
cuvintelor rezervate if, else, switch, do, while şi for. Salturi arbitrare sunt posibile prin folosirea cuvântului
cheie goto. Cu ajutorul unei varietăţi de operatori implementaţi în C se pot realiza operaţii aritmetice, logice,
comparative, pe biţi, indexarea tablourilor şi atribuiri. Comenzile pot de asemenea apela funcţii, incluzând un
număr mare de funcţii din bibliotecile standard ale limbajului C, necesare pentru realizarea diferitelor sarcini
cerute de programator.
[modifică] Istoric
[modifică] Începuturile limbajului de programare C

Etapa iniţială de dezvoltare a limbajului de programare C a avut loc în cadrul laboratoarelor AT&T Bell între
anii 1969 şi 1973. După spusele lui Dennis Ritchie, cea mai creativă perioadă a avut loc în 1972. A fost
denumit „C“ deoarece multe din caracteristicile sale au fost derivate din limbajul de programare „B“.

Sunt multe legende despre originea limbajului C şi legătura sa cu sistemul de operare Unix, cum ar fi:

 Dezvoltarea limbajului C a fost rezultatul dorinţei programatorilor de a juca un joc de tipul Asteroids.
Aceştia îl jucau pe calculatorul principal al companiei, dar din lipsa de resurse şi datorită faptului că
acesta trebuia să suporte mai mult de 100 de utilizatori, Thompson şi Ritchie, nemulţumiţi de controlul
pe care îl aveau asupra navei în încercarea de a evita asteroizii, au decis să porteze jocul pe un PDP-7,
nefolosit, din birou. Dar această maşină nu avea un sistem de operare, aşa că au hotărât să scrie unul.
Au decis ca eventual să porteze acest sistem de operare pe maşinile PDP-11 pe care aceştia le foloseau
în birou, dar era o muncă destul de dificilă având în vedere că totul era scris în limbaj de asamblare.
Aşa că au decis să folosească un limbaj portabil de nivel înalt astfel încât sistemul de operare să poată fi
portat cu uşurinţă de pe un computer pe altul. Au încercat folosind limbajul de programare B, dar îi
lipseau unele din funcţionalităţile care ar fi făcut facilă folosirea unor caracteristici avansate a maşinii
PDP-11. Astfel, a apărut un nou limbaj de programare, numit C.
 Justificarea pentru obţinerea primului computer care a fost utilizat pentru dezvoltarea sistemului de
operare Unix a fost acela de a crea un sistem pentru a automatiza completarea autorizaţiilor. Prima
versiune a sistemului de operare Unix a fost scrisă în limbaj de asamblare. Mai târziu, limbajul de
programare C a fost folosit pentru a rescrie sitemul de operare.

Începând cu anul 1973, limbajul de programare C a devenit destul de robust, astfel încât mare parte a
kernelului Unix, scris iniţial în limbaj de asamblare pentru PDP 11/20, a fost rescris în C. Acesta a fost unul
din primele kernele ale unui sistem de operare scris într-un limbaj de programare, altul decât limbajul de
asamblare. Încercări anterioare au fost pentru scrierea sistemului Multics (scris în PL/I) şi TRIPOS (scris în
BCPL).

[modifică] K&R C

În 1978, Dennis Rithie şi Brian Kernighan au publicat prima ediţie a cărţii Limbajul de programare C (eng.
The C Programming Language). Această carte, cunoscută în cercul programatorilor sub numele K&R, a servit
pentru mulţi ani ca un mijloc de informare asupra specificaţiilor limbajului C. Versiunea limbajului C descrisă
este cunoscută sub numele K&R C.

K&R aduce în discuţie următoarele caracteristici ale limbajului:

 Tipul de dată struct


 Tipul de dată long int
 Tipul de dată unsigned int
 Operatorul =+ a fost schimbat în +=, precum şi ceilalţi operatori înrudiţi (=+ producea confuzii
analizorului lexical al compilatorului limbajului C; de exemplu: i += 10 comparat cu i = +10).
K&R C este adesea considerat limbajul de bază pe care orice compilator C trebuie să-l suporte. Pentru mulţi
ani, chiar şi după introducerea standardului ANSI C, a fost considerat ca fiind „cel mai mic numitor comun“ pe
care programatorii în C trebuie să-l respecte atunci când se vorbeşte de portabiliitate maximă, deoarece nu
toate compilatoarele sunt scrise încă să suporte standardul ANSI C, iar o secvenţă de cod scrisă în K&R C
respectă şi ANSI C.

În primele versiuni C, numai funcţiile care returnau o valoare non-integer trebuiau să fie definite sau declarate
înainte de folosire. Despre o funcţie folosită fără ca aceasta să fi fost declarată în prealabil se presupunea că
întoarce un întreg. Parametrii funcţiilor nu erau verificaţi după tip, totuşi unele compilatoare afişau un mesaj de
atenţionare dacă o funcţie era apelată cu un număr greşit de argumente.

În anii ce au urmat publicaţiei K&C R, câteva caracteristici „neoficiale“ au fost adăugate limbajului C, fiind
suportate de compilatoarele celor de la AT&T, precum şi de alţi producători. Acestea includ:

 funcţiile void şi tipul de date void *


 funcţiile care întorc tipul struct sau union
 numele câmpurilor unei structuri struct într-un spaţiu de nume pentru fiecare tip de structură
 atribuirea pentru tipurile de date de tip struct
 calificatorul const pentru a face un obiect de tip „read only“
 o bibliotecă standard încorporând funcţii implementate de diverşi dezvoltatori
 enumeraţiile
 tipul float în precizie simplă.

[modifică] ANSI C şi ISO C

La sfârşitul anilor 1970, C a început să înlocuiască limbajul BASIC devenind cel mai utilizat limbaj de
programare. În anii 1980 a fost adoptat şi de calculatoarele IBM PC, popularitatea acestuia începând să crească
semnificativ. În acest timp, Bjarne Stroustrup împreună cu alţi colegi de la Bell Labs au început să adauge
limbajului C caracteristici ale programării orientate pe obiecte. Limbajul rezultat a fost denumit C++ şi este cel
mai popular limbaj de programare pe sistemele de operare Microsoft Windows; totuşi C-ul rămâne cel mai
popular limbaj de programare în Unix. Alt limbaj de programare dezvoltat în acea vreme se numeşte
Objective-C care adaugă de asemenea C-ului caracteristici ale programării orientate pe obiecte. Deşi nu la fel
de popular ca C++, Obejective-C este folosit pentru dezvoltarea aplicaţiilor pe ce folosesc interfaţa Cocoa a
sistemului de operare Mac OS X.

În 1983, American National Standards Institute (ANSI) a format un comitet, X3J11, pentru a stabili
specificaţiile unui limbaj C standard. După un proces îndelungat, standardul a fost terminat în 1989 şi ratificat
ca ANSI X3.159-1989 "Programming Language C". Această versiune a limbajului ne este cunoscută sub
numele ANSI C. în 1990, standardul ANSI C (cu mici modificări) a fost adoptat de International Organization
for Standardization (ISO) ca ISO/IEC 9899:1990.

Una din ţintele procesului de standardizare ANSI C a fost acela de a produce un superset al K&C R,
încorporând multe dintre caracteristicile neoficiale introduse secvenţial. Totuşi, comitetul pentru standardizare
a introdus câteva caracteristici noi, cum ar fi prototipul funcţiilor (împrumutat din C++) şi un preprocesor mult
mai capabil.

ANSI C este suportat de marea majoritate a compilatoarelor folosite astăzi. Mare parte din codul C scris acum
este bazat pe ANSI C. Orice program scris exclusiv în standardul C este garantat să funcţioneze corect pe orice
platformă cu o implementare C conformă. Totuşi, multe programe sunt scrise astfel încât aceste vor putea fi
compilate numai pe anumite platforme, sau folosind un anumit compilator, deoarece (i) se folosesc biblioteci
non-standard, de exemplu pentru interfaţa grafică, (ii) unele compilatoare ce nu respectă standardul ANSI C,
deci şi urmaşii lor în mod implicit sau (iii) bazarea pe dimensiunea unui anumit tip de date pe anumite
platforme.

[modifică] C99

După procesul de standardizare ANSI, specificaţiile limbajului de programare C au rămas nemodificate pentru
o perioadă, în timp ce C++ a continuat să evolueze. (Amendamentul Normativ I a creat o nouă versiune a
limbajului C în 1995, dar această versiune este prea puţin cunoscută.) Totuşi, la sfârşitul anilor 1990,
standardul a suferit o revizie, conducând la publicarea standardului ISO 9899:1999 în anul 1999. Acest
standard este cunoscut sub numele „C99“. A fost adoptat ca standard ANSI în martie 2000.

Noile aspecte ale limbajului C includ:

 funcţii inline
 variablele pot fi declarate oriunde în cadrul unui program (la fel ca şi în C++)
 câteva noi tipuri de date, incluzând şi long long int (pentru a reduce efortul legat de tranziţia de la
32-biţi la 64-biţi), un tip explicit de date boolean şi un tip complex de date reprezentând numerele
complexe
 tablourile de dimensiuni variabile
 suport pentru comentariile pe o singură linie, marcate la început de //, ca şi în BCPL sau C++ şi care
au fost suportate de multe compilatoare ca o extensie a limbajului C
 noi funcţii, cum ar fi snprintf()
 noi fişiere header, cum ar fi stdint.h

În ceea ce priveşte interesul în adoptarea noului standard C99, dacă GCC şi alte compilatoare suportă noile
caracteristici C99, compilatoarele celor de la Microsoft şi Borland nu suportă C99 şi cele două companii nu par
interesate în a oferi nici un fel de suport.

[modifică] Diferenţe între C, C++ şi Pascal


[modifică] Comparaţie cu limbajul Pascal

Sintaxa Pascal Sintaxa C şi C++ Explicaţii


 
begin { Început bloc
end. / end } Sfârşit bloc
if (<cond>) then if(<cond>) Instrucţiune condiţională
while(<cond>) do while(<cond>) Repetă cat timp
a<> b a!=b Valoarea variabilei a e diferită de valoarea variabilei b
for i:=1 to n do for(i=1;i<=n;i++) For
i:=a; i=a; Atribuire
i:=i+1 i++; Incrementare
i:=i-1 i--; Decrementare
var i: integer int i; Declarare variabilă (în C++ se poate declara oriunde în
program/ funcţie)
if(a=b) then if(a==b) Dacă a egal cu b
read(var); scanf("%s", &var); Citire de la intrarea standard (de obicei tastatură)
write('text ', printf("text %s",
var); var); Scriere la ieşirea standard (de obicei ecran)
writeln; printf("\n"); Tipăreşte o linie nouă

[modifică] C şi C++

Limbajul de programare C++ a fost iniţial derivat din C. Totuşi, nu absolut orice program scris în C este valid
C++. Deoarece C şi C++ au evoluat independent, au apărut, din nefericire, o serie de incompatibilităţi între
cele două limbaje de programare [1]. Cea mai amplă revizie a limbajui C, C99, a creat un număr suplimentar
de conflicte. Diferenţele fac să fie greu de scris programe şi biblioteci care să fie compilate şi să ruleze corect
în calitate de cod C sau C++, şi produce confuzii celor care programează în ambele limbaje. Diferenţele fac ca
fiecare din cele două limbaje de programare să împrumute din caracteristicile celuilalt limbaj de programare.

Bjarne Stroustrup, creatorul limbajului C++, a sugerat de nenumărate ori [2] să se reducă incompatibilităţile pe
cât de mult posibil pentru a maximiza interoperabilitatea dintre cele două limbaje de programare. Unii au
argumentat că C şi C++ sunt două limbaje de programare distincte, compatibilitatea dintre ele fiind utilă dar nu
vitală; potrivit acestei opinii, eforturile de a reduce incompatibilitatea nu trebuie să reducă eforturile de a aduce
elemente noi în mod independent celor două limbaje de programare.

Cele mai importante diferenţe sunt:

 inline —funcţiile inline apar în secţiunea de declarare a variabilelor globale în C++, iar in C acestea
apar în aşa zisele „fişiere statice“.
 Cuvântul cheie bool are în C99 propriul său header, <stdbool.h>. În variantele anterioare de C tipul
de date boolean nu era definit, în schimb erau folosite o serie de metode (incompatibile) pentru a simula
acest tip de date.
 Constantele caracter (cuprinse între apostrofuri) au dimensiunea unui int în C şi char în C++. Cu alte
cuvinte, în C, sizeof('a') == sizeof(int); în C++, sizeof('a') == sizeof(char). Chiar şi în
aceste condiţii, valoarea acestui tip de constante nu va depăşi valoarea maximă ce poată fi păstrată de
char, deci o conversie de genul (char)'a' este sigură.
 Cuvinte cheie suplimentare au fost introduse în C++, deci acestea nu pot fi folosite ca identificatori aşa
cum ar putea fi folosite în C. (de exemplu, code>try, catch, template, new, delete, ...)
 În C++, compilatorul creează automat o „etichetă“ pentru orice structură (struct), uniune (union) sau
enumeraţie (enum), astfel încât struct S {}; în C++ este echivalent cu typedef struct S {} S; în
C.

C99 a adoptat unele funcţionalităţi ce au apărut iniţial în C++. Printre acestea se enumeră:

 Declararea obligatorie a prototipului funcţiilor


 Cuvântul cheie inline
 Eliminarea variabilei implicite int ca valoare de întoarcere.

[modifică] Exemplu

Un program care citeşte un număr întreg şi îl afişează.


Pascal:

program test;
var i:integer;
begin
writeln('introduceti un nr:');
read(i);
end.

C:

#include <stdio.h> // contine declaratiile functiilor de intrare/iesire


int main() // program principal
{
int i;
printf("Introduceti un nr:");
scanf("%d",&i); //citire numar introdus la tastatura
printf("%d", i); //afişare număr citit
return 0;
}

C++:

#include <iostream> // contine declaratiile functiilor de intrare/iesire


int main() // program principal
{
int i;
std::cout<<"Introduceti un nr:";
std::cin>>i; //citire
return 0;
}

C++
De la Wikipedia, enciclopedia liberă

Salt la: Navigare, căutare

C++ (pronunţat în română "C plus plus" şi în engleză "si plas plas") este un limbaj de programare general,
compilat. Este un limbaj multi-paradigmă, cu verificarea statică a tipului variabilelor ce suportă programare
procedurală, abstractizare a datelor, programare orientată pe obiecte. În anii 1990, C++ a devenit unul din cele
mai populare limbaje de programare comerciale, rămânând astfel până azi[1].

Bjarne Stroustrup de la Bell Labs a dezvoltat C++ (iniţial denumit C cu clase) în anii 1980, ca o serie de
îmbunătăţiri ale limbajului C. Acestea au început cu adăugarea noțiunii de clase, apoi de funcţii virtuale,
supraîncărcarea operatorilor, moştenire multiplă, şabloane (engleză template) şi excepţii. Limbajul de
programare C++ a fost standardizat în 1998 ca şi ISO 14882:1998, versiunea curentă fiind din 2003, ISO
14882:2003. Următoarea versiune standard, cunoscută informal ca C++0x, este în lucru.

Cuprins
[ascunde]

 1 Istoricul C++
 2 Exemplu
 3 Vezi şi
 4 Note
 5 Bibliografie

[modifică] Istoricul C++

Bjarne Stroustrup, creatorul limbajului C++.

Stroustrup a început să lucreze la C cu clase în 1979. Ideea creării unui nou limbaj a venit din experienţa de
programare pentru pregătirea tezei sale de doctorat. Stroustrup a descoperit că Simula avea facilităţi foarte utile
pentru proiecte mari, însă era prea lent, în timp ce BCPL era rapid, însă nu era de nivel înalt şi era nepotrivit
pentru proiecte mari. Când Stroustrup a început să lucreze pentru Bell Labs, avea sarcina de a analiza nucleul
UNIX referitor la calcul distribuit. Amintindu-şi de experienţa sa din perioada lucrării de doctorat, Stroustrup a
început să îmbunătăţească C cu facilităţi asemănătoare Simula. C a fost ales deoarece era rapid şi portabil. La
început facilităţile adaugate C-ului au fost clase, clase derivate, verificare a tipului, inline şi argumente cu
valori implicite.

În timp ce Stroustrup a proiectat C cu clase (mai apoi C++), a scris de asemenea şi Cfront, un compilator care
genera cod sursă C din cod C cu Clase. Prima lansare comercială a fost în 1985.

În 1982, numele limbajului a fost schimbat de la C cu clase la C++. Au fost adaugate noi facilităţi, inclusiv
funcţii virtuale, supraîncărcarea operatorilor şi a functiilor, referinţe, constante, alocare dinamică, un control al
tipului mai puternic şi noua variantă de comentariu pe un singur rând (liniile care încep cu caracterele '//').

În 1985 a fost lansată prima ediţie a cărţii "The C++ Programming Language" (Limbajul de programare C++),
oferind informaţii importante despre limbaj, care încă nu era un standard oficial. În 1989 a fost lansată
versiunea 2.0 a C++. Au apărut acum moştenirea multiplă, clase abstracte, funcţii statice, funcţii constante şi
membri protected. În 1990 o altă carte a fost lansată, oferind suport pentru standarde viitoare. Ultimele
adăugări includeau template-uri, excepţii, spaţii de nume (namespace-uri) şi tipul Boolean.

O dată cu evoluţia limbajului C++, a evoluat şi o bibliotecă standard. Prima adăugire a fost biblioteca de
intrări/ieşiri (I/O stream), care oferea facilităţi pentru a înlocui funcţiile tradiţionale C cum ar fi printf şi scanf.
Mai târziu, printre cele mai semnificative adăugari la biblioteca standard a fost STL (Standard Template
Library) (Biblioteca de formate standard).
După ani de lucru, un comitet ANSI-ISO a standardizat C++ în 1998 (ISO/IEC 14882:1998).

[modifică] Exemplu
#include<iostream>
using namespace std;

int main() {
cout<<"Hello World";
return 0;
}

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