Documente Academic
Documente Profesional
Documente Cultură
1
Mădălina Roxana. Buneci
În general nu este posibil să obținem simultan un timp de execuție mai scurt precum
și un necesar de spațiu de memorare mai mic. Progresele tehnologice din ultima
vreme impun drept criteriu primordial criteriul timp.
2
Programarea calculatoarelor și limbaje de programare – notițe de curs/ Curs 3
3
Mădălina Roxana. Buneci
întreg n,i;
real x[1..n], min;
citește n;
minx[1];
4
Programarea calculatoarelor și limbaje de programare – notițe de curs/ Curs 3
întreg n,i;
real x[1..n], min, max;
citește n;
pentru i=1,n execută
citește x[i]
sfârșit pentru;
minx[1]; maxx[1];
pentru i=2,n execută
dacă min>x[i] atunci minx[i]
altfel dacă max<x[i] atunci max x[i]
sfârșit dacă;
sfârșit dacă;
sfârșit pentru;
5
Mădălina Roxana. Buneci
6
Programarea calculatoarelor și limbaje de programare – notițe de curs/ Curs 3
7
Mădălina Roxana. Buneci
limbajele de nivel înalt nu oferă această posibilitate; vorbind într-un sens mai larg,
putem spune că limbajele de nivel înalt permit calculatorului să beneficieze de 90%
din “aptitudinile” calculatorului, în timp ce limbajul de asamblare permite o
utilizare 100% a calculatorului (bineînțeles, dacă programatorul este suficient de
experimentat). [P. Norton, Secrete PC, Editura Teora, București, 1996. pg. 473]
Până acum am vorbit despre limbajele de nivel înalt ca fiind o categorie
omogenă, dar ele nu sunt chiar asemănătoare. Aceste limbaje au multe elemente
comune, mai ales prin contrast cu limbajul de asamblare, dar există și multe diferențe
importante între ele. Elaborarea limbajelor de nivel înalt a vizat încă de la început trei
direcții importante, și s-a concretizat prin trei categorii de limbaje:
• limbaje bazate pe conceptele de algoritm (Fortran, Algol) și prelucrarea datelor cu
caracter științific, care au evoluat spre limbaje bazate pe conceptele de programare
structurată, abstractizare, modularizare, programare orientată pe obiecte (Algol,
Fortran, Pascal, C, Modula-2, Ada, C++, Java, etc.)
• limbaje bazate pe prelucrarea datelor (Cobol) care au evoluat spre sisteme de
gestiune de baze de date - sisteme care permit rezolvarea problemelor specifice
bazelor de date - (FoxPro, SQL, etc.)
• limbaje bazate pe prelucrarea listelor (Lisp) care au evoluat în limbaje specifice
inteligenței artificiale - domeniu al informaticii care-și propune simularea pe
sistemele de calcul a comportamentelor inteligente ale ființelor umane- (Prolog,
Mercury).
8
Programarea calculatoarelor și limbaje de programare – notițe de curs/ Curs 3
9
Mădălina Roxana. Buneci
Deși aceste faze se referă în mod special la ciclul de viață al produsului software,
ele pot fi aplicate și altor stadii de existenta prin care trece un program de la creare până
la ieșire din uz (lansare, întreținere, ieșire din uz).
Vocabularul unui limbaj de programare este format din cele mai simple
elemente cu semnificație lingvistică, numite unități lexicale. Sintaxa unui limbaj de
programare este definită de un ansamblu de reguli pe baza cărora se combină
elementele vocabularului pentru a obține fraze corecte (instrucțiuni, secvențe de
instrucțiuni, declarații de variabile, constante, subprograme, etc.). O unitate sintactică
este o mulțime de fraze alcătuite din elemente ale vocabularului. Dintre modalitățile de
descriere a sintaxei unui limbaj prezentăm:
➢ formalismul BNF (acronim pentru Backus Naur Form);
➢ diagramele sintactice.
Varianta de BNF pe care o prezentăm mai departe utilizează următoarele
simboluri:
:: = | { } [ ]
cu următoarele semnificații:
• și sunt folosite pentru delimitarea numelui unității sintactice
• :: = apare după o unitate sintactică și are sensul “unitatea sintactică este
definită prin”
• | este utilizat pentru a separa între ele mai multe variante de definire ale unei
unități sintactice. De exemplu, putem defini
<cifra zecimală> :: = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |9
• { și } denotă repetarea posibilă (de zero sau de mai multe ori) a
simbolurilor pe care le delimitează. În general, u :: = {<v>} se folosește
ca prescurtare pentru definiția recursivă <u> ::=<vid> |<u><v>, unde <vid>
este elementul neutru la concatenarea unităților sintactice. Următoarele
două definiții sunt echivalente:
10
Programarea calculatoarelor și limbaje de programare – notițe de curs/ Curs 3
an
11
Mădălina Roxana. Buneci
12