Sunteți pe pagina 1din 47

1.

2.
3.
4.
5.

Algoritmi
Limbaje de programare
Ciclul de dezvoltare al unui program
Coduri
Reprezentarea informaiei n calculator

Definirea noiunii de algoritm, enumerarea caracteristicilor


Definirea i enumerarea tipurilor de limbaje de
programare
Descrierea etapelor de dezvoltare a unui program
Explicarea modului n care se reprezint datele n
calculator
3

Algoritmul:
Noiune primar folosit n mod intuitiv pentru a desemna o
mulime finit i ordonat de operaii
o metod general de rezolvare a unui tip de problem
presupune o mulime finit i ordonat de operaii ce
transform un set de date de intrare n alt set de date de
ieire

Algoritmi

Un algoritm trebuie s fie:


clar: descriere precis, fr ambiguiti
universal: s se poat aplica unui numr mare, eventual
infinit, de intrri
finit: n spaiu (numr de pai) i n timp (ca execuie)

Algoritmi

Reprezentarea algoritmilor:
Limbaje dedicate formalizate ALGOL

Pseudo limbaj, convenional/neconvenional


Scheme logice
Diferite diagrame: Booch sau mai general UML

Algoritmi

Program - algoritm descris ntr-un limbaj de programare


Studiul algoritmilor implica:
elaborarea
exprimarea
validarea
analiza

Eficiena algoritmilor prin analiz:


aposteriori (empiric)
apriori (teoretic)
hibrid
7

Algoritmi

Tratarea algoritmilor considernd c pot fi:


liniari
ptratici, cubici
polinomiali, exponeniali, logaritmici etc.

Tratarea se poate face pentru cazurile:


cel mai favorabil/defavorabil
mediu

Programare:
ansamblul comunicrii om-calculator (limbaj natural)
prin program utilizatorul transmite calculatorului un algoritm

Programarea si interaciunea cu calculatorul HMI


(Human Machine Interaction)
Programarea ca i o art unde experiena dobndit are
un rol important

Universuri implicate n procesul programrii:


problemei
limbajului
calculatorului

Fiecare tip de calculator are un limbaj propriu - main


(cod main):
dificil
funcionare numai pe acel tip de calculator
depanarea greoaie
10

Din aceste motive s-au inventat limbajele de


programare (LP):
au un vocabular apropiat de limbajul natural
au reguli precise, lipsite de ambiguiti - le apropie de
rigurozitatea matematic

Un LP se implementeaz prin 1. compilator:


verific corectitudinea programului surs (PS)
obine o form intermediar n faza de analiz i sintez
optimizeaz codul genernd Programul Obiect (PO) executat in faza de execuie

12

Un LP se implementeaz prin 2. interpretor:


analizeaz programul surs
execut fiecare instruciune fr a genera program obiect

Compilatoarele i interpretoarele sunt, la rndul lor,


programe

Exist limbaje de tip compilator (C/C++), interpretor


(Basic, PhP) sau mixte (Java)

Un LP poate fi definit prin sintaxa i semantica sa:


Sintaxa:
set de reguli - guverneaz alctuirea programelor
se folosesc metalimbaje, gen BNF (Backus Naur Form)

Semantica:
set de reguli - determin semnificaia propoziiilor
14

Programele
se execut pe maini hardware
mai sunt numite i software

LP
rezultatul evoluiei calculatoarelor
rezultatul necesitii rezolvrii unor probleme complexe

Programarea primelor calculatoare


n limbajul propriu al calculatorului - cod main (neportabil)
a dus la programarea simbolic n limbaje de asamblare
folosind mnemonice - a pus problema evoluiei lor
15

Clasificarea LP
dup dependena de hardware:
LP de nivel cobort/sczut (low): cod main, asamblare
LP de nivel nalt (high): nu depind de hardware
LP de nivel mediu: combin avantajele LP de nivel nalt
cu funcionalitatea LP de nivel sczut

16

dup prelucrrile pe care le efectueaz (I):


LP procedurale:
descriu proceduri (algoritmi) preciznd
operaiile de efectuat
ordinea acestora (Basic, Pascal, C)

LP declarative:
definesc un set de fapte i relaii ce permit solicitarea
unor rezultate (Lisp, Prolog, SQL)

dup prelucrrile pe care le efectueaz (II):


LP obiectuale:
elementele de programare - obiecte ce pot s-i
transmit mesaje unul altuia (C++, C#, Java, Eiffel,
Smaltalk etc) i cu faciliti distribuite - LP multi-agent
LP funcionale, matematizabile (Haskell, ML etc.)

Considerente evolutive (I):


limbaje clasice (Fortran, Basic) nu ofereau siguran n
programare
limbaje de gestiune a Bazelor de Date, COBOL, SQL
imparirea n module pentru a mri sigurana, MODULA
Pascal, introduce tipizarea si compatibilitatea ntre tipuri
ADA, CHILL, MODULA-2, permit programarea concurent

19

Considerente evolutive (II):


OCCAM, C Paralel etc., programarea paralel i facilitai
multicore
programare Web, folosind diferite tehnologii i/sau
componente i servicii (C/C++, Java, PhP, Phyton, C# etc.)

Majoritatea utilizatorilor folosesc LP procedurale i


obiectuale

20

Programare: activitate de elaborare a unui program

Etape:
Analiza i specificarea
Proiectarea
Implementarea
Documentarea
ntreinerea
Testarea

21

Analiza i specificarea
analiza: adunarea de informaii despre problema de rezolvat
specificaii:
ce trebuie s fac programul
evideniaz intrri, ieiri, prelucrri, interfee, relaii ntre componente

Proiectarea
mparte problema n subprobleme -> structura bloc i interfeele
stabilete modul de testare a validitii proiectului
stabilete modul de documentare
22

Implementarea
urmrete obinerea produsului finit
pe baza proiectului, prin codificarea i testarea modulelor program
i integrarea acestora

programul se construiete i se testeaz treptat

Documentarea
precizeaz structura, scopul, prelucrrile i metodele
utilizate
asigur ntreinerea uoar a unui program
se realizeaz prin:
comentarii inserate n program
documente referitoare la fazele de proiectare a programului
23

Intreinerea
activitatea de depanare, dezvoltare i documentare
servicii de instruire a utilizatorilor n utilizarea programelor

Testarea programelor
scopul: eliminarea erorilor logice din program
realizarea: executnd fiecare component cu anumite
seturi de intrare pentru care se cunosc ieirile
testarea efectuat dup implementare ocup >50% din
timpul necesar realizrii unui program

24

Etapele implementrii (I):


scrierea programului
editarea programului:
cu un editor de texte
rezult programul surs

compilarea modulelor:
rezult module obiect

25

Etapele implementrii (II):


legarea modulelor obiect (ediie de legturi sau "link-editare"):
combin modulele utilizatorului cu module din biblioteci
genereaz programul executabil final

depanare program: cu un depanator

Mediu de programare: integreaz fazele de editare,


compilare, editare legturi i depanare

26

Activitate

1. Descriei algoritmul pentru a calcula aria


unui triunghi tratnd cazurile n care este
dreptunghic i cel n care triunghiul este
oarecare folosii formula adecvat
2. Scriei programul ntr-un limbaj de
programare sau n limbaj natural. Ce
difer fa de algoritmul deja descris?

27

Codul:
o coresponden ntre simbolurile a dou alfabete, avnd
drept scop trecerea de la o form de reprezentare a
informaiei la alta

La calculatoare, codificarea:
realizeaz reprezentarea informaiei ntr-o form accesibil
calculatorului pornind de la forma uzual de reprezentare

28

Cod alfanumeric
Se folosete pentru reprezentarea numerelor, literelor i altor
caractere

Codul ASCII (American Standard Code for Information Interchange)


folosete 7 cifre binare pentru a reprezenta
cifre zecimale, litere mari i mici
semne de punctuaie, operatori aritmetici i logici
simboluri pentru controlul comunicrii i simboluri pentru editare

29

Cod alfanumeric
ASCII8 (ASCII extins)
pe 8 cifre binare
pentru reprezentarea caracterelor special

Exemple:
A - 41h
B - 42h
LF - 0ah

a - 61h
b - 62h
CR - 0dh

0 - 30h
1 - 31h
ESC - 1bh

Codul UNICODE (din octombrie 2010- versiunea 6.x)


standard pe 32 de biti -reprezentarea i manipularea
30
textelor n majoritatea sistemelor de scriere

Cod complement
Pentru un numr natural A cu n cifre se definesc:
B = qn - A
C = qn - 1 - A
B=C+1
Dac (baza) q=2 atunci:
B = 2n - A
(C2) complement fata de 2
C = 2n - 1 - A
(C1)
Dac n=4 i A=3 = 0011:
2n-1 = 15 = 1111

C1=11110011
------1100
31a lui A
Aceste cifre se obin prin complementarea fiecrei cifre

Reguli:
C1 : se complementeaz fiecare cifr binar (0->1 i 1 ->0)
C2 : se determin C1 i se adun 1

Exemple :
N = 7 = 0111
C1 =
1000
1000+
1
-----C2 =
1001

32

Cod BCD (Binary Coded Decimal)


Permite codificarea binar a numerelor zecimale fr a le
transforma efectiv n binary
Fiecare cifr zecimal este codificat separat n binar
Exemplu:

245

0010.0100.0101

n general se poate folosi structura:


| Semn | Nr. cifre | Cifre...|
Exemplu: -12345

1111.0101.0001.0010.0011.0100.0101

33

n acest scop se folosesc cifrele binare 0,1 numite i bii

Acetia se grupeaz n:
octei (bytes) sau
cuvinte (words) (2, 4, 8 octei)

Organizarea informaiei n bii, octei, cuvinte se folosete n


toate componentele unui calculator (unitate central, memorie
intern, dispozitive periferice)

34

Alte noiuni:
adresa: numr de ordine al unui octet (cuvnt) n memorie (L-value);
locaia: zona din memorie rezervat unei anumite informaii (octet sau
cuvnt ce are o valoare estimata, R-value)

Deoarece pentru reprezentarea informaiei se folosesc cifre


binare, se pot reprezenta direct numai numere naturale
Pentru reprezentarea numerelor ntregi negative, a numerelor
reale sau a caracterelor se folosesc convenii de reprezentare

35

Reprezentarea numerelor ntregi negative


Deoarece nu se pot reprezenta semnele +, - , se folosete o
cifr binar (prima din stnga) pentru semn, cu urmtoarea
convenie:
0 - pozitiv
1 - negativ

Exist mai multe posibiliti dintre care s-a impus


reprezentarea n C2 (Complement fa de 2):
pornind de la un numr pozitiv (cu 0 pe prima poziie) prin
transformare se obine un numr negativ (cu 1 pe poziia de semn)

36

Exemple (I)
N=1
C1
C2:

0001
1110 + 1
1111 ->

-1

N=0
C1
C2:

0000
1111 + 1
0000 ->

-0 (ultimul 1 se pierde)

N=7
C1
C2:

0111
1000 + 1
1001 ->

-7

37

Exemple (II)
N=8
1000
Obs: Nu se poate reprezenta, prima poziie semn +, 0,
i se va elimina aceast valoare
C1
0111 + 1
C2:
1000 -8
Pentru 4 bii :

-23 <= N <= 23 1

n general n bii :

-2n-1 <= N <= 2n-1 - 1


38

Operaii n C2 (I)
Adunarea:
se adun cele dou numere n mod obinuit, cifr cu cifr, inclusiv
pentru poziia de semn, ignornd transportul de la poziia de semn

Scderea:
se adun desczutul cu C2 al scztorului

39

Operaii n C2 (II)
nmulirea/mprirea: se pot folosi tabele pentru
simbolurile de baz
La efectuarea de operaii poate s apar fenomenul de
depirea aritmetic (Arithmetic overflow) cnd se
depaete domeniul de valori alocat numrului

40

Exemple :
4
3

Ad: 0100+
0011
-----0111 = 7

Sc:

0100+
1101 C2(-3) 0011
-----0001 = 1

41

Reprezentarea numerelor reale


Orice numr real X poate fi pus sub forma:
X = X' * exp
unde:
X' este mantisa i d precizia de reprezentare
exp este exponentul i d ordinul de mrime

dac 0,5 < |X| < 1 atunci avem forma normalizat de reprezentare dup
unele standarde
n alte standarde mantisa este subunitar dar prima cifr din stnga este
diferit de zero, se spune c avem mantisa normalizat
n acest mecanism datorit limitrii preciziei nu se pot reprezenta toate
numerele reale.
Din cauza aproximrilor fcute apar erorile de rotunjire (rounding errors)

42

Formatul IEEE pe 32 bii :


31 30 23 22 0
|S | Exponent | Mantisa |

Domeniul de reprezentare:
+-(3,4x10-38 ... 3,4x10+38)

Precizia: 7 cifre zecimale


Aceast reprezentare se mai numete i reprezentarea n
virgul mobil sau flotant
Tipuri:
simpl precizie (32 bii)
dubl precizie (64 bii)
precizie extins (80 bii)
43

Erori de reprezentare (depire)


depire inferioar
depire superioar

Erori de rotunjire

44

Tipuri de date elementare: numerice, logice,


caracter, pointer, referine
Tipuri de date agregate (structurate): tablouri,
iruri de caractere, liste, articole, fiiere

45

assignare
condiional/generalizat (if, switchcase)
cicluri (anterioare, posterioare): while(), for (),
dowhile()
alte tipuri

46

Algoritmii ajut organizarea eficient, logic,


abstract a pailor de rezolvare a unei probleme
Limbajele de programare permit rostirea
algoritmilor pentru a fi executai de calculator

Dezvoltarea unui program se face dup reguli


pentru a fi funcional, lizibil, eficient, reutilizabil
Reprezentarea datelor se bazeaz pe sistemul
binar i este ierarhic-structurat
47

S-ar putea să vă placă și