+ All Categories
Home > Documents > Limbaje de programare

Limbaje de programare

Date post: 23-Jun-2015
Category:
Upload: marianaszekely
View: 510 times
Download: 5 times
Share this document with a friend
23
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
Transcript

Limbaj de programareDe 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 generaleo 3.2 Limbaje specifice

4 Vezi şi

[modifică] Categorii

După paradigma programării o limbaje procedurale; ex. C, Java, Perlo limbaje functionale: ex. ML, Haskello limbaje pentru programarea logică ex.Prolog, DATALOGo 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 asamblareo 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 '50o 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 integerfor 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 Co 6.3 ANSI C şi ISO Co 6.4 C99

7 Diferenţe între C, C++ şi Pascal o 7.1 Comparaţie cu limbajul Pascalo 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 blocend. / end } Sfârşit blocif (<cond>) then if(<cond>) Instrucţiune condiţionalăwhile(<cond>) do while(<cond>) Repetă cat timpa<> b a!=b Valoarea variabilei a e diferită de valoarea variabilei bfor i:=1 to n do for(i=1;i<=n;i++) Fori:=a; i=a; Atribuirei:=i+1 i++; Incrementarei:=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 bread(var); scanf("%s", &var); Citire de la intrarea standard (de obicei tastatură)write('text ', var);

printf("text %s", 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;beginwriteln('introduceti un nr:');read(i);end.

C:

#include <stdio.h> // contine declaratiile functiilor de intrare/iesireint main() // program principal{int i;printf("Introduceti un nr:");scanf("%d",&i); //citire numar introdus la tastaturaprintf("%d", i); //afişare număr cititreturn 0;}

C++:

#include <iostream> // contine declaratiile functiilor de intrare/iesireint main() // program principal{int i;std::cout<<"Introduceti un nr:";std::cin>>i; //citirereturn 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;}


Recommended