Sunteți pe pagina 1din 22

Utilizarea i programarea calculatoarelor I

Introducere n ingineria calculatoarelor i programrii


anul I semestrul I

Cursul 6

LIMBAJE DE PROGRAMARE

Prof.dr.ing. Bucur LUTREA Facultatea de Electrotehnic i Electroenergetic Timioara

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


CONSOL

ALTE DISPOZITIVE
PERIFERICE DE
INTRARE

EDITOR
TEXTE

PROGRAM
SURS

TRANSLATOR

CORECII

DA

ERORI ?
NU

PROGRAM
OBIECT

BIBLIOTECI
UTILIZATOR

EDITOR
DE LEGTURI

PROGRAM
OBIECT
EXECUTABIL

NCRCTOR

LANSARE N EXECUIE

BIBLIOTECI
DE SISTEM

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 imperativ
Variabil 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 control
Sunt 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

Procedurile
Module 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


Modul
apelant
Procedur
Apel

Revenire

apelare prin invocarea numelui


apelare cu instruciunea CALL

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)


Schema logic a procedurii recursive pentru calcul factorialului unui numr n.
Factorial(n)
DA
NU

DA
cazul de baz

Factorial := 1

n := 1

cazul recursiv

Factorial := n * Factorial(n - 1)

REVENIRE

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 !