Universitatea "Babeş-Bolyai" din Cluj-Napoca

Facultatea de Matematică şi Informatică
FISA DISCIPLINEI

Fundamentele limbajelor de programare Fundamentals of programming languages
Cod
Semes-
trul
Ore: C+S+L
Credite
Tipul
Sectia
MI034
6
2+0+1
4
optionala
Matematică-Informatică
(Mathematics-Computer Science)
MI034
4
2+0+1
5
optionala
Informatică
(Computer Science)
Cadre didactice indrumatoare Teaching Staff in Charge
Lect. Dr. VANCEA Alexandru Ioan, vancea@cs.ubbcluj.ro
Asist. KOVACS Lehel, klehel@cs.ubbcluj.ro
Obiective Aims
Knowledge acquiring about the general and fundamental features regarding programming languages design and development, as opposed to thorough learning one or two languages without understanding what constitute their background;
Critical analysis of the elements designed until present with emphasis on their advantages and disadvantages; Development of the students decisional and analitical capabilities, features which will contrast him from a simple programmer;
As an immediate goal we expect that the student will be able to fastly learn any language, learning which will take place by means of the general languages features presented during the semester;
Knowledge acquiring about the general and fundamental features regarding programming languages design and development, as opposed with thorough learning one or two languages without understanding what constitute their background;
Critical analysis of the elements designed until present with emphasis on their advantages and disadvantages;
Development of the students decisional and analitical capabilities, features which will contrast him from a simple programmer;
As an immediate goal we expect that the student will be able to fastly learn any language, learning which will take place by means of the General languages features presented during the semester;
Continut
1. Evolutia limbajelor de programare.
2. Proiectarea limbajelor de programare.
2.1. Etapele realizarii unui produs program.
2.2. Criterii de proiectare a unui limbaj de programare.
2.3. Criterii de calitate ale unui produs program.
3. Lexic, sintaxa, semantica.
3.1. Specificarea sintaxei unui limbaj de programare: BNF. Diagrame de sintaxa. Gramatici si automate.
3.2. Traducerea programelor. Clasificari ale programelor traducatoare. Structura unui program traducator. Analiza: lexicala, sintactica, semantica. Sinteza: generarea codului intermediar si obiect.
4. Variabile, expresii, instructiuni.
4.1. Notiunea de variabila. Limbaje imperative si declarative. Instructiunea de atribuire.
4.2. Expresii. Componente, tipuri, modalitati de evaluare.
4.3. Structuri esentiale de control. Instructiuni conditionale. Instructiuni repetitive. Instructiuni de transfer.
5. Tipuri de date si structuri de date.
5.1. Notiunea de tip de data. Definitie si componente.
5.2. Clasificari ale tipurilor de date.
5.3. Tipuri de date predefinite. Tipuri numerice. Tipul Boolean. Tipul caracter si sir de caractere.
5.4. Tipuri de date utilizator. Tipul multime. Tipul tablou. Tipul inregistrare. Tipul pointer.
5.5. Echivalenta tipurilor de date.
5.6. Probleme de inconsistenta ale utilizarii tipurilor de data.
6. Vizibilitate si durata de viata.
6.1. Domeniul de vizibilitate al unui nume. Determinarea statica a domeniului de vizibilitate. Determinarea dinamica a domeniului de vizibilitate.
6.2. Durata de viata a unei variabile.
6.3. Mecanisme de alocare a memoriei. Alocarea statica. Alocarea dinamica cu stiva de inregistrari. Alocarea dinamica cu fragmentare.
7. Proceduri. Transmiterea parametrilor.
7.1. Conceptul de procedura (subprogram).
7.2. Metode de transmitere a parametrilor.
7.3. Supraincarcarea operatorilor si a procedurilor.
7.4. Recursivitate. Proceduri mutual recursive.
7.5. Genericitate.
7.6. Efect secundar.
7.7. Corutine.
7.8. Implementarea subprogramelor in limbaje fara structura de bloc si respectiv in limbaje cu structura de bloc.
8. Facilitati de tratare a exceptiilor in cadrul limbajelor de programare.
9. Paradigma programarii vizuale. Studii de caz: Visual Basic, Borland Delphi.
Bibliografie
1. Frentiu, M., Parv, B.: Elaborarea programelor: metode si tehnici moderne, ProMedia, Cluj-Napoca, 1994.
2. Ghezzi, C., Jazayeri, M.: Programming Language Concepts, John Wiley, 1972.
3. Horowitz, E.: Fundamentals of Programming Languages, Springer, 1973.
4. MacLennan, B.J.: Principles of Programming Languages: Design, Evaluation and Implementation, Holt, Rinehart and Winston, 1973.
5. Parv, B., Vancea, A.: Fundamentele limbajelor de programare, Fascicolele 1-2, Lito Univ. "Babes-Bolyai", 1992.
6. Pratt, T.W.: Programming Languages: Design and Implementation, Prentice Hall, 1975
7. Shammas, N.: Object Oriented Programming with Turbo Pascal, Prentice-Hall, 1990
7. Voss, G.: Object-Oriented Programming: An Introduction, Osborne McGraw-Hill, 1991.
9. Parv, B., Vancea, A.: Fundamentele limbajelor de programare, Ed.Microinformatica, 1996.
10. * * * - Reteaua Internet.
Evaluare Assessment
- lucrarile de laborator trebuie insotite de analize asupra elementelor de limbaj implicate precum si de comparatii intre acestea;
- se pune accent nu pe reproducerea unor aspecte sintactice din cadrul limbajelor de programare, ci pe semantica lor, deci pe intelegerea intregii functionalitati si a implicatiilor ce le comporta prezenta unor constructii de limbaj;
- se evalueaza capacitatea de a prezenta in scris, coerent si complet, o scurta documentatie de produs program precum si a subiectelor primite ca examen scris.
Laboratory work must be accompanied by analysis upon the used languages features and their implementation, followed by comparisions between related basic features; we put the accent not only on the good functioning of some algorithms, but on the thorough understanding of the functionalities of the basic language constructs.