Post on 21-Nov-2015
description
Cursul 6
LIMBAJE DE PROGRAMARE
Prof.dr.ing. Bucur LUTREA Facultatea de Electrotehnic i Electroenergetic Timioara
Utilizarea i programarea calculatoarelor I Introducere n ingineria calculatoarelor i programrii
anul I
semestrul I
Concepte de baz
Limbajele de programare:sunt limbaje artificiale, destinate implementrii algoritmelor
n
cadrul programelor de calcul
Caracteristici:
manipuleaz structuri de date
controleaz modul de execuie a calculelor
Elemente:
sintaxa
reguli de scriere
semantica
interpretarea structurilor sintactice
Tipuri de limbaje de programare
limbajele pentru prelucrarea matricelor
Matlab
limbajele de asamblare bazate pe mnemonice
MASM (Microsoft ASseMbler), TASM (Turbo ASM Borland) etc.
limbaje pentru interfee gen linie de comand
BASH (Bourne
Again
SHell
GNU Linux)
limbaje cu compilator
C, FORTRAN, Pascal, ALGOL, BASIC etc.
limbaje concurente
Java, ADA etc.
limbaje de prelucrare a datelor: -
dBase, SQL, FoxPro etc.
limbaje declarative:
Prolog, Analytica
etc.
limbaje pentru extensii
JavaScript, VBScript, PHP
pentru HTML (pagini web)
limbaje interactive
(interpretoare)
BASIC, Lisp, Maple, Matlab, Forth
etc.
limbaje cu macrouri
PHP
limbaje orientate pe obiecte
CPP, Java, PHP, Perl5, limbajele vizuale (Delphi,
Visual studio, Visual Prolog, Visual Basic etc.) etc.
limbaje procedurale
C, Pascal, FORTRAN etc.
limbaje bazate pe reguli:
Prolog, Clisp
etc.
limbaje vizuale
: Delpi, C++Builder, JavaBuilder, Visual C++, Visual Prolog
Evoluia limbajelor de programare
codul main
limbaj de asamblare
limbaje de nivel nalt: compilatoarele, interpretoarele
programare modular
biblioteci de funcii, proceduri, link-editorul
programarea structurat
era multimedia
programarea vizual
programarea imperativ (procedural) versus declarativ
programarea orientat pe obiecte i pe evenimente
scheletul programului
limbaje pentru baze de date, pentru simulare, conducere n timp real, concurente
paradigma client -
server
Compilatorul
cod surs translator de limbaj cod obiect
translator de limbaj: (de)compilator, interpretor
fazele compilrii:
tratarea erorilor
Editarea legturilor, ncrcarea, execuia
rolul editorului de legturi genereaz programul executabil (modul ncrcabil):
aloc memoria pentru ntregul program
calculeaz adresele de salt ntre module
ncrctorul programului (loader):
calculeaz adresele absolute ale segmentelor de program
transfer programul n memoria intern la adresa de nceput a programului
ncarc n contorul program adresa primei instruciuni executabile
segmentarea programelor mari:
tehnica overlay
Etapele de realizare a unui program de calcul
ERORI ?
PROGRAMSURS
EDITORTEXTE
CONSOL
ALTE DISPOZITIVEPERIFERICE DE
INTRARE
TRANSLATOR
PROGRAMOBIECT
EDITORDE LEGTURI
PROGRAMOBIECT
EXECUTABIL
NCRCTOR
BIBLIOTECIDE SISTEM
BIBLIOTECIUTILIZATOR
CORECII
LANSARE N EXECUIE
DA
NU
Programare imperativ
concepte
tipuri de instruciuni:
declarative
imperative
comentarii
seciunile unui modul program:
antetul pentru identificarea modulului
partea declarativ
partea procedural
comentariile sunt prezente n toate seciunile programului, acolo unde este necesar
Identificatori
Identificatorii sunt nume folosite pentru a identifica datele din memorie, zone de memorie, blocuri din program: sufer modificri pe parcursul calculelor variabile rmn neschimbai pe parcursul calculelor:
literali
constante
variabile iniializate
constante cu tip
Tipuri de date
sunt descrise n seciunea de declaraii a modulului
tipul datei stabilete:
modul de interpretare a irului de bii asociat datei
operaiile pe care le suport data
tipuri de date predefinite
(principale) recunoscute automat:
tipul ntreg
fr semn: byte, word, dword
cu semn: shortint, integer, longint
tipul real: real, double, extended
etc.
tipul caracter: char
tipul ir de caractere: string
tipul logic: boolean, longbool
etc.
tipul reper (vizor): pointer
compatibilitatea tipurilor:
identice
echivalente
incompatibile
Structuri de date
Zon continu de memorie n care datele sunt grupate unitar din punct de vedere logic, n conformitate cu necesitile programului
tipuri de structuri de date:
vectorul
indice
matricea
sau tabloul (array)
indici multipli
nregistrarea
(articolul):
record
cmpul (field)
obiectul
(object)
date
& cod
forma structurilor poate fi:
fix
variabil
Instruciunea de atribuire
Cea mai folosit instruciune imperativVariabil
simbolul_operaiei_de_atribuire expresie_calculabil
X
:= 70 * sin (40*y + Psi)
expresii calculabile
regula de preceden a operatorilor stabilete ordinea operaiilor
parantezele rotunde (....) pe mai multe niveluri
suprancrcarea simbolurilor operaiilor
Instruciunile de controlSunt instruciuni imperative care modific ordinea secvenial de execuie
a
instruciunilor din program.
instruciuni de oprire a programului: STOP, HALT, ABORT
cod eroare
(error
level)
instruciuni de oprire a secvenei de program
EXIT, RETURN
Instruciuni condiionale Instruciuni repetitive
Comentariile
au doar valoare explicativ fiind obligatorii pentru o ntreinere uoar a programului
nu au nici un rol n funcionarea programului
sunt ignorate de compilator
forme de comentarii:
pe o ntreag linie de text surs
marcaj linie C % etc.
zon din textul surs
marcaje pereche: (* *) /* */
calitile unui bun comentariu:
pertinent
clar
concis
pstreaz lizibilitatea codului surs
ProcedurileModule de program
scrise independent fa de programul principal
(main
program), avnd un rol de sine stttor. Este legat de programul apelant (principal) printr-un proces de transfer
a execuiei codului
i apoi de revenire
la acesta.
procedura poate fi privit ca un mini program de sine stttor
cu:
antetul procedurii
lista de parametrii de apel
variabile locale
variabile globale
corpul procedurii
instruciuni de revenire la programul principal
alte proceduri sau funcii ncuibate
(nested) (imbricate).
avantajele pe care le are programarea modular:
reutilizarea simpl a codului compilat
bun lizibilitate
ntreinere uoar
permite lucrul n echip
Apelul i revenirea procedurilor
apelare prin invocarea numelui
apelare cu instruciunea CALL
Revenire
Apel
Modulapelant
Procedur
Proceduri recursive
proceduri care se autoapeleaz
bucl iterativ: iniializare
modificare
revenire
caz de baz
(caz degenerativ) ncheie autoapelul
calculele se fac fie pe ramura de apel, fie la revenire, fie combinat
problema depirii stivei (stack
overflow)
Factorial(n)
n := 1 DA DANU
Factorial := 1 Factorial := n * Factorial(n - 1)
REVENIRE
cazul de baz cazul recursiv
Schema logic a procedurii recursive pentru calcul factorialului unui numr n.
Proceduri reentrante
Procedurile reintrabile
pot fi ntrerupte de un proces i apoi reapelate
de alt proces
specifice multitaskingului.
Condiii necesare:
datele proceselor simultane care o apeleaz nu trebuie s se interfereze
fiecare proces trebuie s aib propria zon de date care s fie accesate complet separat de apelurile diferite ale aceleai proceduri reentrante
Corutine
2 (sau mai multe) proceduri care se apeleaz una pe cealalt
nu exist diferen ntre modul apelant i modul apelat, fiecare corutin avnd alternativ n timp cele 2 roluri
necesitatea declarrii antetului naintea descrierii procedurii
declaraia forward
problema depirii capacitii stivei
limitarea numrului de apeluri la o valoare rezonabil
evitarea utilizrii parametrilor formali, caz n care stiva pentru apeluri a calculatorului nu mai este folosit
exemplu: colectarea dintr-un text a literelor i cifrelor n fiiere separate
Funcii
sunt proceduri speciale care asociaz valoarea calculat la numele funciei, returnnd-o n mod automat la revenirea din procedur
variabila referit de funcie furnizeaz valoarea memorat
n urma apelului funciei se furnizeaz valoarea calculat:
mai lent
valoarea returnat depinde de context, pe cnd valoarea memorat se pstreaz pn n momentul actualizrii ei
unele limbaje nu fac diferena ntre funcii i proceduri
Instruciuni de intrare / ieire (I / O)
sunt implementate ca proceduri standard ale limbajului
se gsesc n bibliotecile cu module obiect (gata compilate)
se nglobeaz n programul executabil doar n faza de editare a legturilor
utilizeaz serviciile SO ntr-un mod transparent pentru programator
READ, WRITE
Urmeaz cursul 7 !
Utilizarea i programarea calculatoarelor I Introducere n ingineria calculatoarelor i programrii anul I semestrul IConcepte de baz Tipuri de limbaje de programare Evoluia limbajelor de programare Compilatorul Editarea legturilor, ncrcarea, execuia Etapele de realizare a unui program de calculProgramare imperativ concepte Identificatori Tipuri de date Structuri de date Instruciunea de atribuire Instruciunile de control Comentariile ProcedurileApelul i revenirea procedurilorProceduri recursive Proceduri reentranteCorutineFunciiInstruciuni de intrare / ieire (I / O)Slide Number 22